From 2b3a60fa539a867ce554ff49ea62ac81b9acc9a8 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 3 Sep 2016 19:18:05 +0200 Subject: [PATCH 001/219] project initialized --- .gitignore | 2 ++ README.md | 0 package.json | 12 ++++++++++++ src/index.js | 1 + 4 files changed, 15 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 package.json create mode 100644 src/index.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9daa824 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.DS_Store +node_modules diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/package.json b/package.json new file mode 100644 index 0000000..b997693 --- /dev/null +++ b/package.json @@ -0,0 +1,12 @@ +{ + "name": "opendocument", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC" +} diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..6860197 --- /dev/null +++ b/src/index.js @@ -0,0 +1 @@ +console.log(`Hello World!`); From da26127e981877feabb9ba2d90d268e17e882f37 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 3 Sep 2016 22:06:06 +0200 Subject: [PATCH 002/219] Schema and Document class logic --- .babelrc | 3 + README.md | 37 ++++++++++++ dist/document.js | 121 +++++++++++++++++++++++++++++++++++++++ dist/index.js | 13 +++++ dist/schema.js | 15 +++++ nodemon.json | 3 + package.json | 45 ++++++++++++--- src/document.js | 97 +++++++++++++++++++++++++++++++ src/index.js | 5 +- src/schema.js | 7 +++ tests/document.js | 142 ++++++++++++++++++++++++++++++++++++++++++++++ tests/index.js | 7 +++ 12 files changed, 487 insertions(+), 8 deletions(-) create mode 100644 .babelrc create mode 100644 dist/document.js create mode 100644 dist/index.js create mode 100644 dist/schema.js create mode 100644 nodemon.json create mode 100644 src/document.js create mode 100644 src/schema.js create mode 100644 tests/document.js create mode 100644 tests/index.js diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..822fe79 --- /dev/null +++ b/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["node5"] +} diff --git a/README.md b/README.md index e69de29..3d15952 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,37 @@ +# opendocument.js + +> Schema enforced JavaScript objects. + +## Install + +``` +$ npm install --save opendocument +``` + +## Example + +> TODO + +## License (MIT) + +``` +Copyright (c) 2016 Kristijan Sedlak + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +``` diff --git a/dist/document.js b/dist/document.js new file mode 100644 index 0000000..6f3a91c --- /dev/null +++ b/dist/document.js @@ -0,0 +1,121 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Document = undefined; + +var _typeable = require('typeable'); + +var _schema = require('./schema'); + +class Document { + + constructor() { + let schema = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; + let data = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; + + if (!(schema instanceof _schema.Schema)) { + throw new Error('Document expects schema to be an instance of Schema class'); + } + + Object.defineProperty(this, '_schema', { + get: () => schema, + enumerable: false // do not expose as object key + }); + + this.deleteAllFields(); + this.defineAllFields(); + this.assignFields(data); + } + + deleteAllFields() { + let names = Object.keys(this); + this.deleteFields(names); + } + + deleteFields() { + let names = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0]; + + names.forEach(name => this.deleteField(name)); + } + + deleteField(name) { + delete this[name]; + } + + defineAllFields() { + let fields = this._schema.fields; + + this.defineFields(fields); + } + + defineFields(fields) { + for (let name in fields) { + this.defineField(name, fields[name]); + } + } + + defineField(name) { + var _this = this; + + let config = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; + + let data; + + Object.defineProperty(this, name, { + get: () => data, + set: function () { + let value = arguments.length <= 0 || arguments[0] === undefined ? null : arguments[0]; + return data = _this.castFieldValue(value, config); + }, + enumerable: true, + configurable: true + }); + + this[name] = config.defaultValue; + } + + assignFields() { + let fields = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; + + if (!(0, _typeable.isObject)(fields)) { + throw new Error('Only Object can be assigned to a Document'); + } + + let names = Object.keys(fields); + + for (let name in fields) { + this.assignField(name, fields[name]); + } + } + + assignField(name, value) { + this[name] = value; + } + + castFieldValue(value, config) { + return (0, _typeable.cast)(value, config, { + schema: (value, config) => new Document(config, value) + }); + } + + toObject() { + let data = {}; + let names = Object.keys(this); + + for (let name of names) { + let value = this[name]; + + if (value instanceof Document) { + data[name] = value.toObject(); + } else { + data[name] = value; + } + } + + return data; + } + +} +exports.Document = Document; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js new file mode 100644 index 0000000..f98b59b --- /dev/null +++ b/dist/index.js @@ -0,0 +1,13 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Document = exports.Schema = undefined; + +var _schema = require('./schema'); + +var _document = require('./document'); + +exports.Schema = _schema.Schema; +exports.Document = _document.Document; \ No newline at end of file diff --git a/dist/schema.js b/dist/schema.js new file mode 100644 index 0000000..f53d6da --- /dev/null +++ b/dist/schema.js @@ -0,0 +1,15 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +class Schema { + + constructor(_ref) { + let fields = _ref.fields; + + this.fields = fields; + } + +} +exports.Schema = Schema; \ No newline at end of file diff --git a/nodemon.json b/nodemon.json new file mode 100644 index 0000000..a008194 --- /dev/null +++ b/nodemon.json @@ -0,0 +1,3 @@ +{ + "ignore": ["dist/*"] +} diff --git a/package.json b/package.json index b997693..e31095a 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,43 @@ { "name": "opendocument", - "version": "1.0.0", - "description": "", - "main": "index.js", + "version": "0.1.0", + "description": "Schema enforced JavaScript objects.", + "main": "./dist/index.js", + "ava": { + "files": [ + "./tests/*.js" + ], + "concurrency": 4, + "failFast": true + }, "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "clean": "rm -Rf ./dist", + "prebuild": "npm run clean; mkdir -p ./dist", + "build": "babel ./src --out-dir ./dist --copy-files", + "pretest": "npm run build", + "test": "ava", + "prepublish": "npm run build" + }, + "keywords": [ + "object", + "schema", + "openobject", + "dynamic", + "map", + "model", + "modeling", + "javascript", + "extends", + "array" + ], + "author": "Kristijan Sedlak (Xpepermint)", + "license": "MIT", + "devDependencies": { + "ava": "0.16.0", + "babel-cli": "6.14.0", + "babel-preset-node5": "11.1.0" }, - "keywords": [], - "author": "", - "license": "ISC" + "dependencies": { + "typeable": "0.2.2" + } } diff --git a/src/document.js b/src/document.js new file mode 100644 index 0000000..e509c1a --- /dev/null +++ b/src/document.js @@ -0,0 +1,97 @@ +import {cast, isObject} from 'typeable'; +import {Schema} from './schema'; + +export class Document { + + constructor(schema={}, data={}) { + if (!(schema instanceof Schema)) { + throw new Error('Document expects schema to be an instance of Schema class'); + } + + Object.defineProperty(this, '_schema', { + get: () => schema, + enumerable: false // do not expose as object key + }); + + this.deleteAllFields(); + this.defineAllFields(); + this.assignFields(data); + } + + deleteAllFields() { + let names = Object.keys(this); + this.deleteFields(names); + } + + deleteFields(names=[]) { + names.forEach((name) => this.deleteField(name)); + } + + deleteField(name) { + delete this[name]; + } + + defineAllFields() { + let {fields} = this._schema; + this.defineFields(fields); + } + + defineFields(fields) { + for (let name in fields) { + this.defineField(name, fields[name]); + } + } + + defineField(name, config={}) { + let data; + + Object.defineProperty(this, name, { + get: () => data, + set: (value=null) => data = this.castFieldValue(value, config), + enumerable: true, + configurable: true + }); + + this[name] = config.defaultValue; + } + + assignFields(fields={}) { + if (!isObject(fields)) { + throw new Error('Only Object can be assigned to a Document'); + } + + let names = Object.keys(fields); + + for (let name in fields) { + this.assignField(name, fields[name]); + } + } + + assignField(name, value) { + this[name] = value; + } + + castFieldValue(value, config) { + return cast(value, config, { + schema: (value, config) => new Document(config, value) + }); + } + + toObject() { + let data = {}; + let names = Object.keys(this); + + for (let name of names) { + let value = this[name]; + + if (value instanceof Document) { + data[name] = value.toObject(); + } else { + data[name] = value; + } + } + + return data; + } + +} diff --git a/src/index.js b/src/index.js index 6860197..83396b7 100644 --- a/src/index.js +++ b/src/index.js @@ -1 +1,4 @@ -console.log(`Hello World!`); +import {Schema} from './schema'; +import {Document} from './document'; + +export {Schema, Document}; diff --git a/src/schema.js b/src/schema.js new file mode 100644 index 0000000..a14d9c9 --- /dev/null +++ b/src/schema.js @@ -0,0 +1,7 @@ +export class Schema { + + constructor({fields}) { + this.fields = fields; + } + +} diff --git a/tests/document.js b/tests/document.js new file mode 100644 index 0000000..dd35836 --- /dev/null +++ b/tests/document.js @@ -0,0 +1,142 @@ +const test = require('ava'); +const {Document, Schema} = require('../dist'); + +test('field type casting', (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'string' + } + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'string' + }, + age: { + type: 'integer' + }, + enabled: { + type: 'boolean' + }, + books: [bookSchema] + } + }); + let data = { + name: 100, + age: '35', + enabled: 'true', + books: [ + { + title: 100 + } + ] + }; + let user = new Document(userSchema, data); + let book = new Document(bookSchema, data.books[0]) + + t.is(user.name, '100'); + t.is(user.age, 35); + t.is(user.enabled, true); + t.deepEqual(user.books, [book]); + t.is(user.books[0].title, '100'); +}); + +test('field default value', (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'string', + defaultValue: 100 + } + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'string', + defaultValue: 100 + }, + age: { + type: 'integer', + defaultValue: '35' + }, + enabled: { + type: 'boolean', + defaultValue: 'true' + }, + book: bookSchema, + books: [bookSchema] + } + }); + let data = { + books: [ + null, + { + title: 100 + } + ] + }; + let user0 = new Document(userSchema); + let user1 = new Document(userSchema, data); + let book0 = new Document(bookSchema); + let book1 = new Document(bookSchema, data.books[1]) + + t.is(user0.name, '100'); + t.is(user0.age, 35); + t.is(user0.enabled, true); + t.is(user0.book, null); + t.deepEqual(user1.books, [null, book1]); + t.is(user1.books[0], null); + t.is(user1.books[1].title, '100'); +}); + +test('document.toObject', (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'string', + defaultValue: 100 + } + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'string' + }, + age: { + type: 'float' + }, + enabled: { + type: 'boolean' + }, + book: bookSchema, + books: [bookSchema] + } + }); + let data = { + name: 'John Smith', + books: [ + null, + { + title: 100 + } + ] + }; + let user = new Document(userSchema, data); + + t.deepEqual(user.toObject(), { + name: 'John Smith', + age: null, + enabled: null, + book: null, + books: [ + null, + { + title: '100' + } + ] + }); +}); diff --git a/tests/index.js b/tests/index.js new file mode 100644 index 0000000..1fc6791 --- /dev/null +++ b/tests/index.js @@ -0,0 +1,7 @@ +const test = require('ava'); +const opendocument = require('../dist'); + +test('exposed content', (t) => { + t.is(!!opendocument.Schema, true); + t.is(!!opendocument.Document, true); +}); From 7077269b456af21e74ac3cd51424735ee80bf416 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 3 Sep 2016 22:08:13 +0200 Subject: [PATCH 003/219] travis configuration --- .travis.yml | 5 +++++ package.json | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..b9879cc --- /dev/null +++ b/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: + - "6" + - "5" + - "4" diff --git a/package.json b/package.json index e31095a..b2b3dbd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "opendocument", - "version": "0.1.0", + "version": "0.1.1", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { From 18859661651d748c68a5350881b3524de60cf3cd Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 3 Sep 2016 22:10:01 +0200 Subject: [PATCH 004/219] package statuses --- README.md | 3 +++ package.json | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3d15952..72e7c1f 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ +![Build Status](https://travis-ci.org/xpepermint/opendocumentjs.svg?branch=master) [![NPM Version](https://badge.fury.io/js/approved.svg)](https://badge.fury.io/js/approved) [![Dependency Status](https://gemnasium.com/xpepermint/opendocumentjs.svg)](https://gemnasium.com/xpepermint/opendocumentjs) + + # opendocument.js > Schema enforced JavaScript objects. diff --git a/package.json b/package.json index b2b3dbd..ac72652 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "opendocument", - "version": "0.1.1", + "version": "0.1.2", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { From c84ea7b7e3305ce689c6116388ea453dd5e0e542 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 3 Sep 2016 22:56:07 +0200 Subject: [PATCH 005/219] API refactoring, adding clone method --- dist/document.js | 51 +++++++++++++++++++++++++----------------- package.json | 2 +- src/document.js | 57 ++++++++++++++++++++++++++++++----------------- tests/document.js | 34 ++++++++++++++++++++++++++++ 4 files changed, 103 insertions(+), 41 deletions(-) diff --git a/dist/document.js b/dist/document.js index 6f3a91c..c87b77f 100644 --- a/dist/document.js +++ b/dist/document.js @@ -11,8 +11,7 @@ var _schema = require('./schema'); class Document { - constructor() { - let schema = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; + constructor(schema) { let data = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; if (!(schema instanceof _schema.Schema)) { @@ -24,27 +23,27 @@ class Document { enumerable: false // do not expose as object key }); - this.deleteAllFields(); - this.defineAllFields(); - this.assignFields(data); + this.purge(); + this.define(); + this.populate(data); } - deleteAllFields() { + purge() { let names = Object.keys(this); - this.deleteFields(names); + this.purgeFields(names); } - deleteFields() { + purgeFields() { let names = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0]; - names.forEach(name => this.deleteField(name)); + names.forEach(name => this.purgeField(name)); } - deleteField(name) { + purgeField(name) { delete this[name]; } - defineAllFields() { + define() { let fields = this._schema.fields; this.defineFields(fields); @@ -67,7 +66,7 @@ class Document { get: () => data, set: function () { let value = arguments.length <= 0 || arguments[0] === undefined ? null : arguments[0]; - return data = _this.castFieldValue(value, config); + return data = _this.castValue(value, config); }, enumerable: true, configurable: true @@ -76,25 +75,25 @@ class Document { this[name] = config.defaultValue; } - assignFields() { + populate() { let fields = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; if (!(0, _typeable.isObject)(fields)) { - throw new Error('Only Object can be assigned to a Document'); + throw new Error('Only Object can populate a Document'); } let names = Object.keys(fields); for (let name in fields) { - this.assignField(name, fields[name]); + this.populateField(name, fields[name]); } } - assignField(name, value) { + populateField(name, value) { this[name] = value; } - castFieldValue(value, config) { + castValue(value, config) { return (0, _typeable.cast)(value, config, { schema: (value, config) => new Document(config, value) }); @@ -107,15 +106,27 @@ class Document { for (let name of names) { let value = this[name]; - if (value instanceof Document) { - data[name] = value.toObject(); + if ((0, _typeable.isArray)(value)) { + data[name] = value.map(i => this.valueToObject(i)); } else { - data[name] = value; + data[name] = this.valueToObject(value); } } return data; } + valueToObject(value) { + if (value && value.toObject) { + return value.toObject(); + } else { + return value; + } + } + + clone() { + return new Document(this._schema, this.toObject()); + } + } exports.Document = Document; \ No newline at end of file diff --git a/package.json b/package.json index ac72652..3f04863 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "opendocument", - "version": "0.1.2", + "version": "0.2.0", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/document.js b/src/document.js index e509c1a..7e99b86 100644 --- a/src/document.js +++ b/src/document.js @@ -1,9 +1,14 @@ -import {cast, isObject} from 'typeable'; +import { + cast, + isObject, + isArray +} from 'typeable'; + import {Schema} from './schema'; export class Document { - constructor(schema={}, data={}) { + constructor(schema, data={}) { if (!(schema instanceof Schema)) { throw new Error('Document expects schema to be an instance of Schema class'); } @@ -13,25 +18,25 @@ export class Document { enumerable: false // do not expose as object key }); - this.deleteAllFields(); - this.defineAllFields(); - this.assignFields(data); + this.purge(); + this.define(); + this.populate(data); } - deleteAllFields() { + purge() { let names = Object.keys(this); - this.deleteFields(names); + this.purgeFields(names); } - deleteFields(names=[]) { - names.forEach((name) => this.deleteField(name)); + purgeFields(names=[]) { + names.forEach((name) => this.purgeField(name)); } - deleteField(name) { + purgeField(name) { delete this[name]; } - defineAllFields() { + define() { let {fields} = this._schema; this.defineFields(fields); } @@ -47,7 +52,7 @@ export class Document { Object.defineProperty(this, name, { get: () => data, - set: (value=null) => data = this.castFieldValue(value, config), + set: (value=null) => data = this.castValue(value, config), enumerable: true, configurable: true }); @@ -55,23 +60,23 @@ export class Document { this[name] = config.defaultValue; } - assignFields(fields={}) { + populate(fields={}) { if (!isObject(fields)) { - throw new Error('Only Object can be assigned to a Document'); + throw new Error('Only Object can populate a Document'); } let names = Object.keys(fields); for (let name in fields) { - this.assignField(name, fields[name]); + this.populateField(name, fields[name]); } } - assignField(name, value) { + populateField(name, value) { this[name] = value; } - castFieldValue(value, config) { + castValue(value, config) { return cast(value, config, { schema: (value, config) => new Document(config, value) }); @@ -84,14 +89,26 @@ export class Document { for (let name of names) { let value = this[name]; - if (value instanceof Document) { - data[name] = value.toObject(); + if (isArray(value)) { + data[name] = value.map(i => this.valueToObject(i)); } else { - data[name] = value; + data[name] = this.valueToObject(value); } } return data; } + valueToObject(value) { + if (value && value.toObject) { + return value.toObject(); + } else { + return value; + } + } + + clone() { + return new Document(this._schema, this.toObject()); + } + } diff --git a/tests/document.js b/tests/document.js index dd35836..99cb7c2 100644 --- a/tests/document.js +++ b/tests/document.js @@ -140,3 +140,37 @@ test('document.toObject', (t) => { ] }); }); + +test('document.clone', (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'string', + defaultValue: 100 + } + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'string' + }, + book: bookSchema, + books: [bookSchema] + } + }); + let data = { + name: 'John Smith', + books: [ + null, + { + title: 100 + } + ] + }; + + let user = new Document(userSchema, data); + + t.is(user.clone() === user, false); + t.deepEqual(user.clone(), user); +}); From 8ba3fc8a8bb075f6c106466d20243d8e0b493d92 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 3 Sep 2016 23:31:40 +0200 Subject: [PATCH 006/219] schema mode (relaxed/strict) --- dist/document.js | 11 ++++++++++- dist/schema.js | 34 ++++++++++++++++++++++++++++++++-- package.json | 2 +- src/document.js | 11 ++++++++++- src/schema.js | 26 +++++++++++++++++++++++++- tests/document.js | 20 ++++++++++++++++++++ 6 files changed, 98 insertions(+), 6 deletions(-) diff --git a/dist/document.js b/dist/document.js index c87b77f..3f6e995 100644 --- a/dist/document.js +++ b/dist/document.js @@ -90,7 +90,16 @@ class Document { } populateField(name, value) { - this[name] = value; + if (this._schema.mode === 'relaxed') { + this[name] = value; + } else { + let names = Object.keys(this._schema.fields); + let exists = names.indexOf(name) > -1; + + if (exists) { + this[name] = value; + } + } } castValue(value, config) { diff --git a/dist/schema.js b/dist/schema.js index f53d6da..0c910d5 100644 --- a/dist/schema.js +++ b/dist/schema.js @@ -1,13 +1,43 @@ -"use strict"; +'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); +exports.Schema = exports.modes = undefined; +exports.isValidMode = isValidMode; + +var _typeable = require('typeable'); + +const modes = exports.modes = { + RELAXED: 'relaxed', + STRICT: 'strict' +}; + +function isValidMode(mode) { + let keys = Object.keys(modes); + + for (let key of keys) { + if (modes[key] === mode) return true; + } + return false; +} + class Schema { constructor(_ref) { - let fields = _ref.fields; + var _ref$mode = _ref.mode; + let mode = _ref$mode === undefined ? modes.RELAXED : _ref$mode; + var _ref$fields = _ref.fields; + let fields = _ref$fields === undefined ? {} : _ref$fields; + + if (!isValidMode(mode)) { + throw new Error(`Unknown schema mode ${ mode }`); + } + if (!(0, _typeable.isObject)(fields)) { + throw new Error(`Schema fields should be an Object`); + } + this.mode = mode; this.fields = fields; } diff --git a/package.json b/package.json index 3f04863..4dd7fe7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "opendocument", - "version": "0.2.0", + "version": "0.2.1", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/document.js b/src/document.js index 7e99b86..6a0b77c 100644 --- a/src/document.js +++ b/src/document.js @@ -73,7 +73,16 @@ export class Document { } populateField(name, value) { - this[name] = value; + if (this._schema.mode === 'relaxed') { + this[name] = value; + } else { + let names = Object.keys(this._schema.fields); + let exists = names.indexOf(name) > -1; + + if (exists) { + this[name] = value; + } + } } castValue(value, config) { diff --git a/src/schema.js b/src/schema.js index a14d9c9..df615a6 100644 --- a/src/schema.js +++ b/src/schema.js @@ -1,6 +1,30 @@ +import {isObject} from 'typeable'; + +export const modes = { + RELAXED: 'relaxed', + STRICT: 'strict' +}; + +export function isValidMode(mode) { + let keys = Object.keys(modes); + + for (let key of keys) { + if (modes[key] === mode) return true; + } + return false; +} + export class Schema { - constructor({fields}) { + constructor({mode=modes.RELAXED, fields={}}) { + if (!isValidMode(mode)) { + throw new Error(`Unknown schema mode ${mode}`); + } + if (!isObject(fields)) { + throw new Error(`Schema fields should be an Object`); + } + + this.mode = mode; this.fields = fields; } diff --git a/tests/document.js b/tests/document.js index 99cb7c2..3b03e37 100644 --- a/tests/document.js +++ b/tests/document.js @@ -92,6 +92,26 @@ test('field default value', (t) => { t.is(user1.books[1].title, '100'); }); +test('strict mode schema', (t) => { + let userSchema = new Schema({ + mode: 'strict', + fields: { + name: { + type: 'string', + defaultValue: 100 + } + } + }); + let data = { + name: 'John', + age: 35.5 + }; + let user = new Document(userSchema, data); + + t.is(user.name, 'John'); + t.is(user.age, undefined); +}); + test('document.toObject', (t) => { let bookSchema = new Schema({ fields: { From 7f366bb2f4a1cd0ac7f3a1d54cc5b918bf6ab3f6 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 3 Sep 2016 23:38:43 +0200 Subject: [PATCH 007/219] API refactoring (methods return), adding clear method --- dist/document.js | 30 +++++++++++++++++++++++++++++- package.json | 2 +- src/document.js | 30 +++++++++++++++++++++++++++++- tests/document.js | 15 +++++++++++++++ 4 files changed, 74 insertions(+), 3 deletions(-) diff --git a/dist/document.js b/dist/document.js index 3f6e995..eea70af 100644 --- a/dist/document.js +++ b/dist/document.js @@ -31,28 +31,36 @@ class Document { purge() { let names = Object.keys(this); this.purgeFields(names); + + return this; } purgeFields() { let names = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0]; names.forEach(name => this.purgeField(name)); + + return this; } purgeField(name) { - delete this[name]; + return delete this[name]; } define() { let fields = this._schema.fields; this.defineFields(fields); + + return this; } defineFields(fields) { for (let name in fields) { this.defineField(name, fields[name]); } + + return this; } defineField(name) { @@ -73,6 +81,7 @@ class Document { }); this[name] = config.defaultValue; + return this[name]; } populate() { @@ -87,6 +96,8 @@ class Document { for (let name in fields) { this.populateField(name, fields[name]); } + + return this; } populateField(name, value) { @@ -100,6 +111,8 @@ class Document { this[name] = value; } } + + return this[name]; } castValue(value, config) { @@ -137,5 +150,20 @@ class Document { return new Document(this._schema, this.toObject()); } + clear() { + let names = Object.keys(this); + + for (let name of names) { + this.clearField(name); + } + + return this; + } + + clearField(name) { + this[name] = null; + return this[name]; + } + } exports.Document = Document; \ No newline at end of file diff --git a/package.json b/package.json index 4dd7fe7..1c70f41 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "opendocument", - "version": "0.2.1", + "version": "0.3.0", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/document.js b/src/document.js index 6a0b77c..ec64d73 100644 --- a/src/document.js +++ b/src/document.js @@ -26,25 +26,33 @@ export class Document { purge() { let names = Object.keys(this); this.purgeFields(names); + + return this; } purgeFields(names=[]) { names.forEach((name) => this.purgeField(name)); + + return this; } purgeField(name) { - delete this[name]; + return delete this[name]; } define() { let {fields} = this._schema; this.defineFields(fields); + + return this; } defineFields(fields) { for (let name in fields) { this.defineField(name, fields[name]); } + + return this; } defineField(name, config={}) { @@ -58,6 +66,7 @@ export class Document { }); this[name] = config.defaultValue; + return this[name]; } populate(fields={}) { @@ -70,6 +79,8 @@ export class Document { for (let name in fields) { this.populateField(name, fields[name]); } + + return this; } populateField(name, value) { @@ -83,6 +94,8 @@ export class Document { this[name] = value; } } + + return this[name]; } castValue(value, config) { @@ -120,4 +133,19 @@ export class Document { return new Document(this._schema, this.toObject()); } + clear() { + let names = Object.keys(this); + + for (let name of names) { + this.clearField(name); + } + + return this; + } + + clearField(name) { + this[name] = null; + return this[name]; + } + } diff --git a/tests/document.js b/tests/document.js index 3b03e37..a4d0376 100644 --- a/tests/document.js +++ b/tests/document.js @@ -194,3 +194,18 @@ test('document.clone', (t) => { t.is(user.clone() === user, false); t.deepEqual(user.clone(), user); }); + +test('document.clear', (t) => { + let userSchema = new Schema({ + fields: { + name: { + type: 'string', + defaultValue: 'John' + } + } + }); + let user = new Document(userSchema); + user.clear(); + + t.is(user.name, null); +}); From 89e843cb4489f09173ed6977b9cbeb4a807eeb06 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 4 Sep 2016 00:05:27 +0200 Subject: [PATCH 008/219] document value transformation (getter, setter), defaultValue as function support --- dist/document.js | 23 ++++++++++++++++++++--- package.json | 4 ++-- src/document.js | 27 +++++++++++++++++++++++---- tests/document.js | 18 +++++++++++++++++- 4 files changed, 62 insertions(+), 10 deletions(-) diff --git a/dist/document.js b/dist/document.js index eea70af..73e4bad 100644 --- a/dist/document.js +++ b/dist/document.js @@ -71,16 +71,33 @@ class Document { let data; Object.defineProperty(this, name, { - get: () => data, + get: () => { + if (config.get) { + return config.get(data, this); + } else { + return data; + } + }, set: function () { let value = arguments.length <= 0 || arguments[0] === undefined ? null : arguments[0]; - return data = _this.castValue(value, config); + + data = _this.castValue(value, config); + if (config.set) { + return data = config.set(data, _this); + } else { + return data; + } }, enumerable: true, configurable: true }); - this[name] = config.defaultValue; + if ((0, _typeable.isFunction)(config.defaultValue)) { + this[name] = config.defaultValue(this); + } else { + this[name] = config.defaultValue; + } + return this[name]; } diff --git a/package.json b/package.json index 1c70f41..329b5aa 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "opendocument", - "version": "0.3.0", + "version": "0.3.1", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -38,6 +38,6 @@ "babel-preset-node5": "11.1.0" }, "dependencies": { - "typeable": "0.2.2" + "typeable": "0.2.3" } } diff --git a/src/document.js b/src/document.js index ec64d73..ad487e0 100644 --- a/src/document.js +++ b/src/document.js @@ -1,7 +1,8 @@ import { cast, isObject, - isArray + isArray, + isFunction } from 'typeable'; import {Schema} from './schema'; @@ -59,13 +60,31 @@ export class Document { let data; Object.defineProperty(this, name, { - get: () => data, - set: (value=null) => data = this.castValue(value, config), + get: () => { + if (config.get) { + return config.get(data, this); + } else { + return data; + } + }, + set: (value=null) => { + data = this.castValue(value, config); + if (config.set) { + return data = config.set(data, this); + } else { + return data; + } + }, enumerable: true, configurable: true }); - this[name] = config.defaultValue; + if (isFunction(config.defaultValue)) { + this[name] = config.defaultValue(this); + } else { + this[name] = config.defaultValue; + } + return this[name]; } diff --git a/tests/document.js b/tests/document.js index a4d0376..60e880c 100644 --- a/tests/document.js +++ b/tests/document.js @@ -64,7 +64,7 @@ test('field default value', (t) => { }, enabled: { type: 'boolean', - defaultValue: 'true' + defaultValue: (ctx) => true }, book: bookSchema, books: [bookSchema] @@ -92,6 +92,22 @@ test('field default value', (t) => { t.is(user1.books[1].title, '100'); }); +test('field value transformation', (t) => { + let userSchema = new Schema({ + fields: { + name: { + type: 'string', + defaultValue: 100, + get: (value, ctx) => `${value}-get`, + set: (value, ctx) => `${value}-set` + } + } + }); + let user = new Document(userSchema); + + t.is(user.name, '100-set-get'); +}); + test('strict mode schema', (t) => { let userSchema = new Schema({ mode: 'strict', From 5e8b65209ae44daeb7a1deb797c95525ef26173b Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 4 Sep 2016 00:34:53 +0200 Subject: [PATCH 009/219] readme update --- README.md | 38 +++++++++++++++++++++++++++++++++++++- giphy.gif | Bin 0 -> 237606 bytes package.json | 2 +- 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 giphy.gif diff --git a/README.md b/README.md index 72e7c1f..f94fc98 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,8 @@ > Schema enforced JavaScript objects. + + ## Install ``` @@ -13,7 +15,41 @@ $ npm install --save opendocument ## Example -> TODO +```js +import { + Document, + Schema +} from 'opendocument'; + +let bookSchema = new Schema({ + fields: { + title: { + type: 'string' + } + } +}); + +let userSchema = new Schema({ + fields: { + name: { + type: 'string' + }, + books: [bookSchema] + } +}); + +let data = { + name: 'John Smith', + books: [ + { + title: 'True Detective' + } + ] +}; + +let user = new Document(userSchema, data); +user.name; // -> 'John Smith' +``` ## License (MIT) diff --git a/giphy.gif b/giphy.gif new file mode 100644 index 0000000000000000000000000000000000000000..1a60e61e996695f6a950ee637162417dcbaa68ef GIT binary patch literal 237606 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 z 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�j?qGZj&s*J?>L!<0#(rr);~!q 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 Date: Sun, 4 Sep 2016 00:43:24 +0200 Subject: [PATCH 010/219] package.json URLs --- package.json | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index dcaff70..8f3eca4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "opendocument", - "version": "0.3.2", + "version": "0.3.3", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -18,6 +18,14 @@ "test": "ava", "prepublish": "npm run build" }, + "repository": { + "type": "git", + "url": "git+https://github.com/xpepermint/opendocumentjs.git" + }, + "bugs": { + "url": "https://github.com/xpepermint/opendocumentjs/issues" + }, + "homepage": "https://github.com/xpepermint/opendocumentjs#readme", "keywords": [ "object", "schema", @@ -38,6 +46,6 @@ "babel-preset-node5": "11.1.0" }, "dependencies": { - "typeable": "0.2.3" + "typeable": "0.2.4" } } From 1f8b60f0ae0f133957866b1935116e9bbfee12ab Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 4 Sep 2016 01:13:24 +0200 Subject: [PATCH 011/219] renaming to objectschema --- README.md | 5 ++--- package.json | 8 ++++---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index f94fc98..6786a58 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ -![Build Status](https://travis-ci.org/xpepermint/opendocumentjs.svg?branch=master) [![NPM Version](https://badge.fury.io/js/approved.svg)](https://badge.fury.io/js/approved) [![Dependency Status](https://gemnasium.com/xpepermint/opendocumentjs.svg)](https://gemnasium.com/xpepermint/opendocumentjs) - +![Build Status](https://travis-ci.org/xpepermint/objectschema.svg?branch=master) [![NPM Version](https://badge.fury.io/js/approved.svg)](https://badge.fury.io/js/approved) [![Dependency Status](https://gemnasium.com/xpepermint/objectschema.svg)](https://gemnasium.com/xpepermint/objectschema) # opendocument.js @@ -10,7 +9,7 @@ ## Install ``` -$ npm install --save opendocument +$ npm install --save objectschema ``` ## Example diff --git a/package.json b/package.json index 8f3eca4..0eeec2c 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "opendocument", + "name": "objectschema", "version": "0.3.3", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", @@ -20,12 +20,12 @@ }, "repository": { "type": "git", - "url": "git+https://github.com/xpepermint/opendocumentjs.git" + "url": "git+https://github.com/xpepermint/objectschemajs.git" }, "bugs": { - "url": "https://github.com/xpepermint/opendocumentjs/issues" + "url": "https://github.com/xpepermint/objectschemajs/issues" }, - "homepage": "https://github.com/xpepermint/opendocumentjs#readme", + "homepage": "https://github.com/xpepermint/objectschemajs#readme", "keywords": [ "object", "schema", From b2267505f7af7958de03b6d4b5907ba2db742348 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 4 Sep 2016 01:19:30 +0200 Subject: [PATCH 012/219] version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0eeec2c..009538e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.3.3", + "version": "0.3.4", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { From 8f08b9ce1546be88c14072d06c23afbc2ecf91b8 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 4 Sep 2016 01:22:19 +0200 Subject: [PATCH 013/219] readme fix --- README.md | 4 ++-- package.json | 2 +- tests/index.js | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 6786a58..8630830 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ![Build Status](https://travis-ci.org/xpepermint/objectschema.svg?branch=master) [![NPM Version](https://badge.fury.io/js/approved.svg)](https://badge.fury.io/js/approved) [![Dependency Status](https://gemnasium.com/xpepermint/objectschema.svg)](https://gemnasium.com/xpepermint/objectschema) -# opendocument.js +# objectschema.js > Schema enforced JavaScript objects. @@ -18,7 +18,7 @@ $ npm install --save objectschema import { Document, Schema -} from 'opendocument'; +} from 'objectschema'; let bookSchema = new Schema({ fields: { diff --git a/package.json b/package.json index 009538e..4d9d38e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.3.4", + "version": "0.3.5", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/tests/index.js b/tests/index.js index 1fc6791..c2f29aa 100644 --- a/tests/index.js +++ b/tests/index.js @@ -1,7 +1,7 @@ const test = require('ava'); -const opendocument = require('../dist'); +const objectschema = require('../dist'); test('exposed content', (t) => { - t.is(!!opendocument.Schema, true); - t.is(!!opendocument.Document, true); + t.is(!!objectschema.Schema, true); + t.is(!!objectschema.Document, true); }); From d97c1a8226dc28f1ea6b16a04119a6b631c0a60b Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 4 Sep 2016 01:28:40 +0200 Subject: [PATCH 014/219] dependencies update, readme fix --- README.md | 2 +- package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 8630830..a17e1f6 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![Build Status](https://travis-ci.org/xpepermint/objectschema.svg?branch=master) [![NPM Version](https://badge.fury.io/js/approved.svg)](https://badge.fury.io/js/approved) [![Dependency Status](https://gemnasium.com/xpepermint/objectschema.svg)](https://gemnasium.com/xpepermint/objectschema) +![Build Status](https://travis-ci.org/xpepermint/objectschemajs.svg?branch=master) [![NPM Version](https://badge.fury.io/js/objectschema.svg)](https://badge.fury.io/js/objectschema) [![Dependency Status](https://gemnasium.com/xpepermint/objectschema.svg)](https://gemnasium.com/xpepermint/objectschemajs) # objectschema.js diff --git a/package.json b/package.json index 4d9d38e..a22f063 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.3.5", + "version": "0.3.6", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -46,6 +46,6 @@ "babel-preset-node5": "11.1.0" }, "dependencies": { - "typeable": "0.2.4" + "typeable": "0.2.5" } } From c41f4e2f7dc119352faa94494389836c954fd95f Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 4 Sep 2016 01:32:47 +0200 Subject: [PATCH 015/219] readme fix --- README.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a17e1f6..af90847 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![Build Status](https://travis-ci.org/xpepermint/objectschemajs.svg?branch=master) [![NPM Version](https://badge.fury.io/js/objectschema.svg)](https://badge.fury.io/js/objectschema) [![Dependency Status](https://gemnasium.com/xpepermint/objectschema.svg)](https://gemnasium.com/xpepermint/objectschemajs) +![Build Status](https://travis-ci.org/xpepermint/objectschemajs.svg?branch=master) [![NPM Version](https://badge.fury.io/js/objectschema.svg)](https://badge.fury.io/js/objectschema) [![Dependency Status](https://gemnasium.com/xpepermint/objectschemajs.svg)](https://gemnasium.com/xpepermint/objectschemajs) # objectschema.js diff --git a/package.json b/package.json index a22f063..4b3117c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.3.6", + "version": "0.3.7", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { From 11e7e5257b525e3daeed363f17dc596d992c2401 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 4 Sep 2016 03:36:18 +0200 Subject: [PATCH 016/219] code refactoring with decorators --- .babelrc | 3 +- dist/document.js | 180 ++++++------------------------------------ dist/schema.js | 5 +- dist/serialization.js | 36 +++++++++ dist/structure.js | 144 +++++++++++++++++++++++++++++++++ package.json | 3 +- src/document.js | 168 ++++++--------------------------------- src/serialization.js | 30 +++++++ src/structure.js | 131 ++++++++++++++++++++++++++++++ tests/cloning.js | 36 +++++++++ tests/document.js | 52 +++++------- 11 files changed, 448 insertions(+), 340 deletions(-) create mode 100644 dist/serialization.js create mode 100644 dist/structure.js create mode 100644 src/serialization.js create mode 100644 src/structure.js create mode 100644 tests/cloning.js diff --git a/.babelrc b/.babelrc index 822fe79..de7fbb4 100644 --- a/.babelrc +++ b/.babelrc @@ -1,3 +1,4 @@ { - "presets": ["node5"] + "presets": ["node5"], + "plugins": ["transform-decorators-legacy"] } diff --git a/dist/document.js b/dist/document.js index 73e4bad..cddd872 100644 --- a/dist/document.js +++ b/dist/document.js @@ -5,17 +5,23 @@ Object.defineProperty(exports, "__esModule", { }); exports.Document = undefined; +var _class; + var _typeable = require('typeable'); var _schema = require('./schema'); -class Document { +var _structure = require('./structure'); + +var _serialization = require('./serialization'); + +let Document = exports.Document = (0, _structure.objectFields)(_class = (0, _structure.objectCloning)(_class = (0, _serialization.objectSerialization)(_class = class Document { constructor(schema) { let data = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; if (!(schema instanceof _schema.Schema)) { - throw new Error('Document expects schema to be an instance of Schema class'); + throw new Error(`${ this.constructor.name } expects schema to be an instance of Schema class`); } Object.defineProperty(this, '_schema', { @@ -28,159 +34,17 @@ class Document { this.populate(data); } - purge() { - let names = Object.keys(this); - this.purgeFields(names); - - return this; - } - - purgeFields() { - let names = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0]; - - names.forEach(name => this.purgeField(name)); - - return this; - } - - purgeField(name) { - return delete this[name]; - } - - define() { - let fields = this._schema.fields; - - this.defineFields(fields); - - return this; - } - - defineFields(fields) { - for (let name in fields) { - this.defineField(name, fields[name]); - } - - return this; - } - - defineField(name) { - var _this = this; - - let config = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; - - let data; - - Object.defineProperty(this, name, { - get: () => { - if (config.get) { - return config.get(data, this); - } else { - return data; - } - }, - set: function () { - let value = arguments.length <= 0 || arguments[0] === undefined ? null : arguments[0]; - - data = _this.castValue(value, config); - if (config.set) { - return data = config.set(data, _this); - } else { - return data; - } - }, - enumerable: true, - configurable: true - }); - - if ((0, _typeable.isFunction)(config.defaultValue)) { - this[name] = config.defaultValue(this); - } else { - this[name] = config.defaultValue; - } - - return this[name]; - } - - populate() { - let fields = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; - - if (!(0, _typeable.isObject)(fields)) { - throw new Error('Only Object can populate a Document'); - } - - let names = Object.keys(fields); - - for (let name in fields) { - this.populateField(name, fields[name]); - } - - return this; - } - - populateField(name, value) { - if (this._schema.mode === 'relaxed') { - this[name] = value; - } else { - let names = Object.keys(this._schema.fields); - let exists = names.indexOf(name) > -1; - - if (exists) { - this[name] = value; - } - } - - return this[name]; - } - - castValue(value, config) { - return (0, _typeable.cast)(value, config, { - schema: (value, config) => new Document(config, value) - }); - } - - toObject() { - let data = {}; - let names = Object.keys(this); - - for (let name of names) { - let value = this[name]; - - if ((0, _typeable.isArray)(value)) { - data[name] = value.map(i => this.valueToObject(i)); - } else { - data[name] = this.valueToObject(value); - } - } - - return data; - } - - valueToObject(value) { - if (value && value.toObject) { - return value.toObject(); - } else { - return value; - } - } - - clone() { - return new Document(this._schema, this.toObject()); - } - - clear() { - let names = Object.keys(this); - - for (let name of names) { - this.clearField(name); - } - - return this; - } - - clearField(name) { - this[name] = null; - return this[name]; - } - -} -exports.Document = Document; \ No newline at end of file + // isValid() { + // let names = Object.keys(this); + // + // for (let name of names) { + // if (!this.isValidField(name)) return false; + // } + // return true; + // } + // + // isValidField(name) { + // + // } + +}) || _class) || _class) || _class; \ No newline at end of file diff --git a/dist/schema.js b/dist/schema.js index 0c910d5..33ccbb8 100644 --- a/dist/schema.js +++ b/dist/schema.js @@ -22,7 +22,7 @@ function isValidMode(mode) { return false; } -class Schema { +let Schema = exports.Schema = class Schema { constructor(_ref) { var _ref$mode = _ref.mode; @@ -41,5 +41,4 @@ class Schema { this.fields = fields; } -} -exports.Schema = Schema; \ No newline at end of file +}; \ No newline at end of file diff --git a/dist/serialization.js b/dist/serialization.js new file mode 100644 index 0000000..90bf6d0 --- /dev/null +++ b/dist/serialization.js @@ -0,0 +1,36 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.objectSerialization = objectSerialization; + +var _typeable = require('typeable'); + +function objectSerialization(target, name, descriptor) { + + target.prototype.toObject = function () { + let data = {}; + let names = Object.keys(this); + + for (let name of names) { + let value = this[name]; + + if ((0, _typeable.isArray)(value)) { + data[name] = value.map(i => this.valueToObject(i)); + } else { + data[name] = this.valueToObject(value); + } + } + + return data; + }; + + target.prototype.valueToObject = function (value) { + if (value && value.toObject) { + return value.toObject(); + } else { + return value; + } + }; +} \ No newline at end of file diff --git a/dist/structure.js b/dist/structure.js new file mode 100644 index 0000000..050ae7c --- /dev/null +++ b/dist/structure.js @@ -0,0 +1,144 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.objectFields = objectFields; +exports.objectCloning = objectCloning; + +var _typeable = require('typeable'); + +function objectFields(target, name, descriptor) { + + target.prototype.define = function () { + let fields = this._schema.fields; + + this.defineFields(fields); + + return this; + }; + + target.prototype.defineFields = function (fields) { + for (let name in fields) { + this.defineField(name, fields[name]); + } + + return this; + }; + + target.prototype.defineField = function (name) { + var _this = this; + + let config = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; + + let data; + + Object.defineProperty(this, name, { + get: () => { + if (config.get) { + return config.get(data, this); + } else { + return data; + } + }, + set: function () { + let value = arguments.length <= 0 || arguments[0] === undefined ? null : arguments[0]; + + data = _this.castValue(value, config); + if (config.set) { + return data = config.set(data, _this); + } else { + return data; + } + }, + enumerable: true, + configurable: true + }); + + if ((0, _typeable.isFunction)(config.defaultValue)) { + this[name] = config.defaultValue(this); + } else { + this[name] = config.defaultValue; + } + + return this[name]; + }; + + target.prototype.castValue = function (value, config) { + return (0, _typeable.cast)(value, config, { + schema: (value, config) => new this.constructor(config, value) + }); + }; + + target.prototype.populate = function () { + let fields = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; + + if (!(0, _typeable.isObject)(fields)) { + throw new Error(`Only Object can populate a ${ this.constructor.name }`); + } + + let names = Object.keys(fields); + + for (let name in fields) { + this.populateField(name, fields[name]); + } + + return this; + }; + + target.prototype.populateField = function (name, value) { + if (this._schema.mode === 'relaxed') { + this[name] = value; + } else { + let names = Object.keys(this._schema.fields); + let exists = names.indexOf(name) > -1; + + if (exists) { + this[name] = value; + } + } + + return this[name]; + }; + + target.prototype.purge = function () { + let names = Object.keys(this); + this.purgeFields(names); + + return this; + }; + + target.prototype.purgeFields = function () { + let names = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0]; + + names.forEach(name => this.purgeField(name)); + + return this; + }; + + target.prototype.purgeField = function (name) { + return delete this[name]; + }; + + target.prototype.clear = function () { + let names = Object.keys(this); + + for (let name of names) { + this.clearField(name); + } + + return this; + }; + + target.prototype.clearField = function (name) { + this[name] = null; + return this[name]; + }; +} + +function objectCloning(target, name, descriptor) { + + target.prototype.clone = function () { + return new this.constructor(this._schema, this.toObject()); + }; +} \ No newline at end of file diff --git a/package.json b/package.json index 4b3117c..846c327 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.3.7", + "version": "0.3.8", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -43,6 +43,7 @@ "devDependencies": { "ava": "0.16.0", "babel-cli": "6.14.0", + "babel-plugin-transform-decorators-legacy": "1.3.4", "babel-preset-node5": "11.1.0" }, "dependencies": { diff --git a/src/document.js b/src/document.js index ad487e0..86694d2 100644 --- a/src/document.js +++ b/src/document.js @@ -7,11 +7,23 @@ import { import {Schema} from './schema'; +import { + objectFields, + objectCloning +} from './structure'; + +import { + objectSerialization +} from './serialization'; + +@objectFields +@objectCloning +@objectSerialization export class Document { constructor(schema, data={}) { if (!(schema instanceof Schema)) { - throw new Error('Document expects schema to be an instance of Schema class'); + throw new Error(`${this.constructor.name} expects schema to be an instance of Schema class`); } Object.defineProperty(this, '_schema', { @@ -24,147 +36,17 @@ export class Document { this.populate(data); } - purge() { - let names = Object.keys(this); - this.purgeFields(names); - - return this; - } - - purgeFields(names=[]) { - names.forEach((name) => this.purgeField(name)); - - return this; - } - - purgeField(name) { - return delete this[name]; - } - - define() { - let {fields} = this._schema; - this.defineFields(fields); - - return this; - } - - defineFields(fields) { - for (let name in fields) { - this.defineField(name, fields[name]); - } - - return this; - } - - defineField(name, config={}) { - let data; - - Object.defineProperty(this, name, { - get: () => { - if (config.get) { - return config.get(data, this); - } else { - return data; - } - }, - set: (value=null) => { - data = this.castValue(value, config); - if (config.set) { - return data = config.set(data, this); - } else { - return data; - } - }, - enumerable: true, - configurable: true - }); - - if (isFunction(config.defaultValue)) { - this[name] = config.defaultValue(this); - } else { - this[name] = config.defaultValue; - } - - return this[name]; - } - - populate(fields={}) { - if (!isObject(fields)) { - throw new Error('Only Object can populate a Document'); - } - - let names = Object.keys(fields); - - for (let name in fields) { - this.populateField(name, fields[name]); - } - - return this; - } - - populateField(name, value) { - if (this._schema.mode === 'relaxed') { - this[name] = value; - } else { - let names = Object.keys(this._schema.fields); - let exists = names.indexOf(name) > -1; - - if (exists) { - this[name] = value; - } - } - - return this[name]; - } - - castValue(value, config) { - return cast(value, config, { - schema: (value, config) => new Document(config, value) - }); - } - - toObject() { - let data = {}; - let names = Object.keys(this); - - for (let name of names) { - let value = this[name]; - - if (isArray(value)) { - data[name] = value.map(i => this.valueToObject(i)); - } else { - data[name] = this.valueToObject(value); - } - } - - return data; - } - - valueToObject(value) { - if (value && value.toObject) { - return value.toObject(); - } else { - return value; - } - } - - clone() { - return new Document(this._schema, this.toObject()); - } - - clear() { - let names = Object.keys(this); - - for (let name of names) { - this.clearField(name); - } - - return this; - } - - clearField(name) { - this[name] = null; - return this[name]; - } + // isValid() { + // let names = Object.keys(this); + // + // for (let name of names) { + // if (!this.isValidField(name)) return false; + // } + // return true; + // } + // + // isValidField(name) { + // + // } } diff --git a/src/serialization.js b/src/serialization.js new file mode 100644 index 0000000..9582c1c --- /dev/null +++ b/src/serialization.js @@ -0,0 +1,30 @@ +import {isArray} from 'typeable'; + +export function objectSerialization(target, name, descriptor) { + + target.prototype.toObject = function() { + let data = {}; + let names = Object.keys(this); + + for (let name of names) { + let value = this[name]; + + if (isArray(value)) { + data[name] = value.map(i => this.valueToObject(i)); + } else { + data[name] = this.valueToObject(value); + } + } + + return data; + }; + + target.prototype.valueToObject = function(value) { + if (value && value.toObject) { + return value.toObject(); + } else { + return value; + } + } + +} diff --git a/src/structure.js b/src/structure.js new file mode 100644 index 0000000..ed201e8 --- /dev/null +++ b/src/structure.js @@ -0,0 +1,131 @@ +import { + cast, + isObject, + isFunction +} from 'typeable'; + +export function objectFields(target, name, descriptor) { + + target.prototype.define = function() { + let {fields} = this._schema; + this.defineFields(fields); + + return this; + }; + + target.prototype.defineFields = function(fields) { + for (let name in fields) { + this.defineField(name, fields[name]); + } + + return this; + }; + + target.prototype.defineField = function(name, config={}) { + let data; + + Object.defineProperty(this, name, { + get: () => { + if (config.get) { + return config.get(data, this); + } else { + return data; + } + }, + set: (value=null) => { + data = this.castValue(value, config); + if (config.set) { + return data = config.set(data, this); + } else { + return data; + } + }, + enumerable: true, + configurable: true + }); + + if (isFunction(config.defaultValue)) { + this[name] = config.defaultValue(this); + } else { + this[name] = config.defaultValue; + } + + return this[name]; + }; + + target.prototype.castValue = function(value, config) { + return cast(value, config, { + schema: (value, config) => new this.constructor(config, value) + }); + }; + + target.prototype.populate = function(fields={}) { + if (!isObject(fields)) { + throw new Error(`Only Object can populate a ${this.constructor.name}`); + } + + let names = Object.keys(fields); + + for (let name in fields) { + this.populateField(name, fields[name]); + } + + return this; + }; + + target.prototype.populateField = function(name, value) { + if (this._schema.mode === 'relaxed') { + this[name] = value; + } else { + let names = Object.keys(this._schema.fields); + let exists = names.indexOf(name) > -1; + + if (exists) { + this[name] = value; + } + } + + return this[name]; + }; + + target.prototype.purge = function() { + let names = Object.keys(this); + this.purgeFields(names); + + return this; + }; + + target.prototype.purgeFields = function(names=[]) { + names.forEach((name) => this.purgeField(name)); + + return this; + }; + + target.prototype.purgeField = function(name) { + return delete this[name]; + }; + + target.prototype.clear = function() { + let names = Object.keys(this); + + for (let name of names) { + this.clearField(name); + } + + return this; + }; + + target.prototype.clearField = function(name) { + this[name] = null; + return this[name]; + } + +} + +export function objectCloning(target, name, descriptor) { + + target.prototype.clone = function() { + return new this.constructor(this._schema, this.toObject()); + } + +} diff --git a/tests/cloning.js b/tests/cloning.js new file mode 100644 index 0000000..4adb47b --- /dev/null +++ b/tests/cloning.js @@ -0,0 +1,36 @@ +const test = require('ava'); +const {Document, Schema} = require('../dist'); + +test('document.clone', (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'string', + defaultValue: 100 + } + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'string' + }, + book: bookSchema, + books: [bookSchema] + } + }); + let data = { + name: 'John Smith', + books: [ + null, + { + title: 100 + } + ] + }; + + let user = new Document(userSchema, data); + + t.is(user.clone() === user, false); + t.deepEqual(user.clone(), user); +}); diff --git a/tests/document.js b/tests/document.js index 60e880c..91abe42 100644 --- a/tests/document.js +++ b/tests/document.js @@ -177,40 +177,6 @@ test('document.toObject', (t) => { }); }); -test('document.clone', (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'string', - defaultValue: 100 - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'string' - }, - book: bookSchema, - books: [bookSchema] - } - }); - let data = { - name: 'John Smith', - books: [ - null, - { - title: 100 - } - ] - }; - - let user = new Document(userSchema, data); - - t.is(user.clone() === user, false); - t.deepEqual(user.clone(), user); -}); - test('document.clear', (t) => { let userSchema = new Schema({ fields: { @@ -225,3 +191,21 @@ test('document.clear', (t) => { t.is(user.name, null); }); + +// test('document.isValid', (t) => { +// let userSchema = new Schema({ +// fields: { +// name: { +// type: 'string', +// validations: { +// isPresent: { +// message: 'is required' +// } +// } +// } +// } +// }); +// let user = new Document(userSchema); +// +// t.is(user.isValid(), false); +// }); From eb2162abf392d4238b681ae61b0aae07761141ac Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 4 Sep 2016 03:49:40 +0200 Subject: [PATCH 017/219] code refactoring --- dist/document.js | 19 +++--------- dist/serialization.js | 4 +-- dist/structure.js | 8 ++--- dist/validation.js | 12 +++++++ package.json | 2 +- src/document.js | 30 +++++------------- src/serialization.js | 2 +- src/structure.js | 4 +-- src/validation.js | 10 ++++++ tests/{cloning.js => serialization.js} | 23 +++++++++++--- tests/{document.js => structure.js} | 43 +++----------------------- tests/validation.js | 21 +++++++++++++ 12 files changed, 89 insertions(+), 89 deletions(-) create mode 100644 dist/validation.js create mode 100644 src/validation.js rename tests/{cloning.js => serialization.js} (61%) rename tests/{document.js => structure.js} (81%) create mode 100644 tests/validation.js diff --git a/dist/document.js b/dist/document.js index cddd872..9150195 100644 --- a/dist/document.js +++ b/dist/document.js @@ -15,7 +15,9 @@ var _structure = require('./structure'); var _serialization = require('./serialization'); -let Document = exports.Document = (0, _structure.objectFields)(_class = (0, _structure.objectCloning)(_class = (0, _serialization.objectSerialization)(_class = class Document { +var _validation = require('./validation'); + +let Document = exports.Document = (0, _structure.injectFieldsUtils)(_class = (0, _structure.injectCloningUtils)(_class = (0, _serialization.injectObjectSerializationUtils)(_class = (0, _validation.injectValidationUtils)(_class = class Document { constructor(schema) { let data = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; @@ -34,17 +36,4 @@ let Document = exports.Document = (0, _structure.objectFields)(_class = (0, _str this.populate(data); } - // isValid() { - // let names = Object.keys(this); - // - // for (let name of names) { - // if (!this.isValidField(name)) return false; - // } - // return true; - // } - // - // isValidField(name) { - // - // } - -}) || _class) || _class) || _class; \ No newline at end of file +}) || _class) || _class) || _class) || _class; \ No newline at end of file diff --git a/dist/serialization.js b/dist/serialization.js index 90bf6d0..236c9e9 100644 --- a/dist/serialization.js +++ b/dist/serialization.js @@ -3,11 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.objectSerialization = objectSerialization; +exports.injectObjectSerializationUtils = injectObjectSerializationUtils; var _typeable = require('typeable'); -function objectSerialization(target, name, descriptor) { +function injectObjectSerializationUtils(target, name, descriptor) { target.prototype.toObject = function () { let data = {}; diff --git a/dist/structure.js b/dist/structure.js index 050ae7c..5eb932b 100644 --- a/dist/structure.js +++ b/dist/structure.js @@ -3,12 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.objectFields = objectFields; -exports.objectCloning = objectCloning; +exports.injectFieldsUtils = injectFieldsUtils; +exports.injectCloningUtils = injectCloningUtils; var _typeable = require('typeable'); -function objectFields(target, name, descriptor) { +function injectFieldsUtils(target, name, descriptor) { target.prototype.define = function () { let fields = this._schema.fields; @@ -136,7 +136,7 @@ function objectFields(target, name, descriptor) { }; } -function objectCloning(target, name, descriptor) { +function injectCloningUtils(target, name, descriptor) { target.prototype.clone = function () { return new this.constructor(this._schema, this.toObject()); diff --git a/dist/validation.js b/dist/validation.js new file mode 100644 index 0000000..dfb3efd --- /dev/null +++ b/dist/validation.js @@ -0,0 +1,12 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.injectValidationUtils = injectValidationUtils; +function injectValidationUtils(target, name, descriptor) { + + target.prototype.isValid = function () {}; + + target.prototype.isValidField = function (name) {}; +} \ No newline at end of file diff --git a/package.json b/package.json index 846c327..282f905 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.3.8", + "version": "0.3.9", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/document.js b/src/document.js index 86694d2..b426087 100644 --- a/src/document.js +++ b/src/document.js @@ -8,17 +8,16 @@ import { import {Schema} from './schema'; import { - objectFields, - objectCloning + injectFieldsUtils, + injectCloningUtils } from './structure'; +import {injectObjectSerializationUtils} from './serialization'; +import {injectValidationUtils} from './validation'; -import { - objectSerialization -} from './serialization'; - -@objectFields -@objectCloning -@objectSerialization +@injectFieldsUtils +@injectCloningUtils +@injectObjectSerializationUtils +@injectValidationUtils export class Document { constructor(schema, data={}) { @@ -36,17 +35,4 @@ export class Document { this.populate(data); } - // isValid() { - // let names = Object.keys(this); - // - // for (let name of names) { - // if (!this.isValidField(name)) return false; - // } - // return true; - // } - // - // isValidField(name) { - // - // } - } diff --git a/src/serialization.js b/src/serialization.js index 9582c1c..030f15e 100644 --- a/src/serialization.js +++ b/src/serialization.js @@ -1,6 +1,6 @@ import {isArray} from 'typeable'; -export function objectSerialization(target, name, descriptor) { +export function injectObjectSerializationUtils(target, name, descriptor) { target.prototype.toObject = function() { let data = {}; diff --git a/src/structure.js b/src/structure.js index ed201e8..b8ad5a8 100644 --- a/src/structure.js +++ b/src/structure.js @@ -4,7 +4,7 @@ import { isFunction } from 'typeable'; -export function objectFields(target, name, descriptor) { +export function injectFieldsUtils(target, name, descriptor) { target.prototype.define = function() { let {fields} = this._schema; @@ -122,7 +122,7 @@ export function objectFields(target, name, descriptor) { } -export function objectCloning(target, name, descriptor) { +export function injectCloningUtils(target, name, descriptor) { target.prototype.clone = function() { return new this.constructor(this._schema, this.toObject()); diff --git a/src/validation.js b/src/validation.js new file mode 100644 index 0000000..a1a1a5e --- /dev/null +++ b/src/validation.js @@ -0,0 +1,10 @@ +export function injectValidationUtils(target, name, descriptor) { + + target.prototype.isValid = function() { + + }; + + target.prototype.isValidField = function(name) { + } + +} diff --git a/tests/cloning.js b/tests/serialization.js similarity index 61% rename from tests/cloning.js rename to tests/serialization.js index 4adb47b..9ae6014 100644 --- a/tests/cloning.js +++ b/tests/serialization.js @@ -1,7 +1,7 @@ const test = require('ava'); const {Document, Schema} = require('../dist'); -test('document.clone', (t) => { +test('converting document to object', (t) => { let bookSchema = new Schema({ fields: { title: { @@ -15,6 +15,12 @@ test('document.clone', (t) => { name: { type: 'string' }, + age: { + type: 'float' + }, + enabled: { + type: 'boolean' + }, book: bookSchema, books: [bookSchema] } @@ -28,9 +34,18 @@ test('document.clone', (t) => { } ] }; - let user = new Document(userSchema, data); - t.is(user.clone() === user, false); - t.deepEqual(user.clone(), user); + t.deepEqual(user.toObject(), { + name: 'John Smith', + age: null, + enabled: null, + book: null, + books: [ + null, + { + title: '100' + } + ] + }); }); diff --git a/tests/document.js b/tests/structure.js similarity index 81% rename from tests/document.js rename to tests/structure.js index 91abe42..6698c4a 100644 --- a/tests/document.js +++ b/tests/structure.js @@ -128,7 +128,7 @@ test('strict mode schema', (t) => { t.is(user.age, undefined); }); -test('document.toObject', (t) => { +test('document cloning', (t) => { let bookSchema = new Schema({ fields: { title: { @@ -142,12 +142,6 @@ test('document.toObject', (t) => { name: { type: 'string' }, - age: { - type: 'float' - }, - enabled: { - type: 'boolean' - }, book: bookSchema, books: [bookSchema] } @@ -161,23 +155,14 @@ test('document.toObject', (t) => { } ] }; + let user = new Document(userSchema, data); - t.deepEqual(user.toObject(), { - name: 'John Smith', - age: null, - enabled: null, - book: null, - books: [ - null, - { - title: '100' - } - ] - }); + t.is(user.clone() === user, false); + t.deepEqual(user.clone(), user); }); -test('document.clear', (t) => { +test('clearing document', (t) => { let userSchema = new Schema({ fields: { name: { @@ -191,21 +176,3 @@ test('document.clear', (t) => { t.is(user.name, null); }); - -// test('document.isValid', (t) => { -// let userSchema = new Schema({ -// fields: { -// name: { -// type: 'string', -// validations: { -// isPresent: { -// message: 'is required' -// } -// } -// } -// } -// }); -// let user = new Document(userSchema); -// -// t.is(user.isValid(), false); -// }); diff --git a/tests/validation.js b/tests/validation.js new file mode 100644 index 0000000..2d5f92d --- /dev/null +++ b/tests/validation.js @@ -0,0 +1,21 @@ +const test = require('ava'); +const {Document, Schema} = require('../dist'); + +test('document.isValid', (t) => { + t.pass(); + // let userSchema = new Schema({ + // fields: { + // name: { + // type: 'string', + // validations: { + // isPresent: { + // message: 'is required' + // } + // } + // } + // } + // }); + // let user = new Document(userSchema); + // + // t.is(user.isValid(), false); +}); From f9ba120a6efdd8ec03594eb5480a53bd18260f9f Mon Sep 17 00:00:00 2001 From: xpeper Date: Mon, 5 Sep 2016 23:04:36 +0200 Subject: [PATCH 018/219] code refactoring, bug fixing, validation with validatable --- .babelrc | 8 +- README.md | 17 +- dist/document.js | 268 +++++++++++++++++- dist/schema.js | 22 +- dist/serialization.js | 36 --- dist/structure.js | 144 ---------- dist/validation.js | 12 - package.json | 10 +- src/document.js | 239 +++++++++++++++- src/schema.js | 8 +- src/serialization.js | 30 -- src/structure.js | 131 --------- src/validation.js | 10 - .../{serialization.js => document/cloning.js} | 31 +- tests/{structure.js => document/fields.js} | 72 ++--- tests/document/serialization.js | 73 +++++ tests/document/validation.js | 109 +++++++ tests/validation.js | 21 -- 18 files changed, 757 insertions(+), 484 deletions(-) delete mode 100644 dist/serialization.js delete mode 100644 dist/structure.js delete mode 100644 dist/validation.js delete mode 100644 src/serialization.js delete mode 100644 src/structure.js delete mode 100644 src/validation.js rename tests/{serialization.js => document/cloning.js} (52%) rename tests/{structure.js => document/fields.js} (71%) create mode 100644 tests/document/serialization.js create mode 100644 tests/document/validation.js delete mode 100644 tests/validation.js diff --git a/.babelrc b/.babelrc index de7fbb4..62073ca 100644 --- a/.babelrc +++ b/.babelrc @@ -1,4 +1,8 @@ { - "presets": ["node5"], - "plugins": ["transform-decorators-legacy"] + "presets": [ + "node5" + ], + "plugins": [ + "transform-runtime" + ] } diff --git a/README.md b/README.md index af90847..4f4f0f3 100644 --- a/README.md +++ b/README.md @@ -31,9 +31,21 @@ let bookSchema = new Schema({ let userSchema = new Schema({ fields: { name: { - type: 'string' + type: 'string', + validations: { + presence: { + message: 'is required' + } + } }, - books: [bookSchema] + books: { + type: [bookSchema], + validations: { + presence: { + message: 'is required' + } + } + } } }); @@ -48,6 +60,7 @@ let data = { let user = new Document(userSchema, data); user.name; // -> 'John Smith' +user.isValid(); // -> true ``` ## License (MIT) diff --git a/dist/document.js b/dist/document.js index 9150195..a07352e 100644 --- a/dist/document.js +++ b/dist/document.js @@ -5,19 +5,35 @@ Object.defineProperty(exports, "__esModule", { }); exports.Document = undefined; -var _class; +var _values = require('babel-runtime/core-js/object/values'); -var _typeable = require('typeable'); +var _values2 = _interopRequireDefault(_values); -var _schema = require('./schema'); +var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); + +var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); + +var _keys = require('babel-runtime/core-js/object/keys'); + +var _keys2 = _interopRequireDefault(_keys); + +var _defineProperty = require('babel-runtime/core-js/object/define-property'); + +var _defineProperty2 = _interopRequireDefault(_defineProperty); + +var _assign = require('babel-runtime/core-js/object/assign'); + +var _assign2 = _interopRequireDefault(_assign); + +var _typeable = require('typeable'); -var _structure = require('./structure'); +var _validatable = require('validatable'); -var _serialization = require('./serialization'); +var _schema = require('./schema'); -var _validation = require('./validation'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -let Document = exports.Document = (0, _structure.injectFieldsUtils)(_class = (0, _structure.injectCloningUtils)(_class = (0, _serialization.injectObjectSerializationUtils)(_class = (0, _validation.injectValidationUtils)(_class = class Document { +class Document { constructor(schema) { let data = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; @@ -31,9 +47,245 @@ let Document = exports.Document = (0, _structure.injectFieldsUtils)(_class = (0, enumerable: false // do not expose as object key }); + Object.defineProperty(this, '_validator', { + value: new _validatable.Validator((0, _assign2.default)({}, schema.validator, { context: this })), + enumerable: false // do not expose as object key + }); + this.purge(); this.define(); this.populate(data); } -}) || _class) || _class) || _class) || _class; \ No newline at end of file + define() { + let fields = this._schema.fields; + + this.defineFields(fields); + + return this; + } + + defineFields(fields) { + for (let name in fields) { + this.defineField(name, fields[name]); + } + + return this; + } + + defineField(name) { + var _this = this; + + let definition = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; + + let data; + + (0, _defineProperty2.default)(this, name, { + get: () => { + if (definition.get) { + return definition.get(data, this); + } else { + return data; + } + }, + set: function () { + let value = arguments.length <= 0 || arguments[0] === undefined ? null : arguments[0]; + + data = _this.castValue(value, definition); + if (definition.set) { + data = definition.set(data, _this); + } + }, + enumerable: true, + configurable: true + }); + + if ((0, _typeable.isFunction)(definition.defaultValue)) { + this[name] = definition.defaultValue(this); + } else { + this[name] = definition.defaultValue; + } + + return this[name]; + } + + castValue(value, _ref) { + let type = _ref.type; + + return (0, _typeable.cast)(value, type, { + schema: value => { + if ((0, _typeable.isArray)(type)) type = type[0]; + return new this.constructor(type, value); + } + }); + } + + populate() { + let fields = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; + + if (!(0, _typeable.isObject)(fields)) { + throw new Error(`Only Object can populate a ${ this.constructor.name }`); + } + + for (let name in fields) { + this.populateField(name, fields[name]); + } + + return this; + } + + populateField(name, value) { + if (this._schema.mode === 'relaxed') { + this[name] = value; + } else { + let names = (0, _keys2.default)(this._schema.fields); + let exists = names.indexOf(name) > -1; + + if (exists) { + this[name] = value; + } + } + + return this[name]; + } + + purge() { + let names = (0, _keys2.default)(this); + this.purgeFields(names); + + return this; + } + + purgeFields() { + let names = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0]; + + names.forEach(name => this.purgeField(name)); + + return this; + } + + purgeField(name) { + return delete this[name]; + } + + clear() { + let names = (0, _keys2.default)(this); + + for (let name of names) { + this.clearField(name); + } + + return this; + } + + clearField(name) { + this[name] = null; + return this[name]; + } + + clone() { + return new this.constructor(this._schema, this.toObject()); + } + + toObject() { + let valueToObject = v => { + if (v && v.toObject) { + return v.toObject(); + } else if (v && (0, _typeable.isArray)(v)) { + return v.map(v => valueToObject(v)); + } else { + return v; + } + }; + + let data = {}; + let names = (0, _keys2.default)(this); + for (let name of names) { + data[name] = valueToObject(this[name]); + } + return data; + } + + // async validate() { + // let errors = {}; + // + // let {fields} = this._schema; + // for (let name in fields) { + // errors[name] = await this.validateField(name); + // } + // + // return errors; + // } + // + // async validateField(name) { + // let definition = this._schema.fields[name]; + // let value = this[name]; + // + // return await this.validateValue(value, definition); + // } + + validate() { + var _this2 = this; + + return (0, _asyncToGenerator3.default)(function* () { + let errors = {}; + + for (let name in _this2) { + let value = _this2[name]; + let definition = _this2._schema.fields[name]; + + let error = yield _this2.validateField(value, definition); + if (!(0, _typeable.isUndefined)(error)) { + errors[name] = error; + } + } + + return errors; + })(); + } + + validateField(value, definition) { + var _this3 = this; + + return (0, _asyncToGenerator3.default)(function* () { + let type = definition.type; + let validations = definition.validations; + + + let messages = yield _this3._validator.validate(value, validations); + + let related = null; + if (type instanceof _schema.Schema && value) { + related = yield value.validate(); + } else if ((0, _typeable.isArray)(type) && (0, _typeable.isArray)(value)) { + related = []; + for (let v of value) { + if (type[0] instanceof _schema.Schema) { + if (v) { + related.push((yield v.validate())); + } else { + related.push(undefined); + } + } else { + related.push((yield _this3.validateField(v, definition))); + } + } + } + + let isValid = messages.length === 0; + if (related && (0, _typeable.isObject)(related)) { + isValid = !(0, _values2.default)(related).map(function (v) { + return v.isValid; + }).includes(false); + } else if (related && (0, _typeable.isArray)(related)) { + isValid = related.map(function (v) { + return !v || v.isValid; + }).includes(false); + } + + return isValid ? undefined : { isValid, messages, related }; + })(); + } + +} +exports.Document = Document; \ No newline at end of file diff --git a/dist/schema.js b/dist/schema.js index 33ccbb8..a792ecb 100644 --- a/dist/schema.js +++ b/dist/schema.js @@ -4,17 +4,24 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.Schema = exports.modes = undefined; + +var _keys = require('babel-runtime/core-js/object/keys'); + +var _keys2 = _interopRequireDefault(_keys); + exports.isValidMode = isValidMode; var _typeable = require('typeable'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + const modes = exports.modes = { RELAXED: 'relaxed', STRICT: 'strict' }; function isValidMode(mode) { - let keys = Object.keys(modes); + let keys = (0, _keys2.default)(modes); for (let key of keys) { if (modes[key] === mode) return true; @@ -22,23 +29,30 @@ function isValidMode(mode) { return false; } -let Schema = exports.Schema = class Schema { +class Schema { constructor(_ref) { var _ref$mode = _ref.mode; let mode = _ref$mode === undefined ? modes.RELAXED : _ref$mode; var _ref$fields = _ref.fields; let fields = _ref$fields === undefined ? {} : _ref$fields; + var _ref$validator = _ref.validator; + let validator = _ref$validator === undefined ? {} : _ref$validator; if (!isValidMode(mode)) { throw new Error(`Unknown schema mode ${ mode }`); } if (!(0, _typeable.isObject)(fields)) { - throw new Error(`Schema fields should be an Object`); + throw new Error(`Schema fields key should be an Object`); + } + if (!(0, _typeable.isObject)(validator)) { + throw new Error(`Schema validator key should be an Object`); } this.mode = mode; this.fields = fields; + this.validator = validator; } -}; \ No newline at end of file +} +exports.Schema = Schema; \ No newline at end of file diff --git a/dist/serialization.js b/dist/serialization.js deleted file mode 100644 index 236c9e9..0000000 --- a/dist/serialization.js +++ /dev/null @@ -1,36 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.injectObjectSerializationUtils = injectObjectSerializationUtils; - -var _typeable = require('typeable'); - -function injectObjectSerializationUtils(target, name, descriptor) { - - target.prototype.toObject = function () { - let data = {}; - let names = Object.keys(this); - - for (let name of names) { - let value = this[name]; - - if ((0, _typeable.isArray)(value)) { - data[name] = value.map(i => this.valueToObject(i)); - } else { - data[name] = this.valueToObject(value); - } - } - - return data; - }; - - target.prototype.valueToObject = function (value) { - if (value && value.toObject) { - return value.toObject(); - } else { - return value; - } - }; -} \ No newline at end of file diff --git a/dist/structure.js b/dist/structure.js deleted file mode 100644 index 5eb932b..0000000 --- a/dist/structure.js +++ /dev/null @@ -1,144 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.injectFieldsUtils = injectFieldsUtils; -exports.injectCloningUtils = injectCloningUtils; - -var _typeable = require('typeable'); - -function injectFieldsUtils(target, name, descriptor) { - - target.prototype.define = function () { - let fields = this._schema.fields; - - this.defineFields(fields); - - return this; - }; - - target.prototype.defineFields = function (fields) { - for (let name in fields) { - this.defineField(name, fields[name]); - } - - return this; - }; - - target.prototype.defineField = function (name) { - var _this = this; - - let config = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; - - let data; - - Object.defineProperty(this, name, { - get: () => { - if (config.get) { - return config.get(data, this); - } else { - return data; - } - }, - set: function () { - let value = arguments.length <= 0 || arguments[0] === undefined ? null : arguments[0]; - - data = _this.castValue(value, config); - if (config.set) { - return data = config.set(data, _this); - } else { - return data; - } - }, - enumerable: true, - configurable: true - }); - - if ((0, _typeable.isFunction)(config.defaultValue)) { - this[name] = config.defaultValue(this); - } else { - this[name] = config.defaultValue; - } - - return this[name]; - }; - - target.prototype.castValue = function (value, config) { - return (0, _typeable.cast)(value, config, { - schema: (value, config) => new this.constructor(config, value) - }); - }; - - target.prototype.populate = function () { - let fields = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; - - if (!(0, _typeable.isObject)(fields)) { - throw new Error(`Only Object can populate a ${ this.constructor.name }`); - } - - let names = Object.keys(fields); - - for (let name in fields) { - this.populateField(name, fields[name]); - } - - return this; - }; - - target.prototype.populateField = function (name, value) { - if (this._schema.mode === 'relaxed') { - this[name] = value; - } else { - let names = Object.keys(this._schema.fields); - let exists = names.indexOf(name) > -1; - - if (exists) { - this[name] = value; - } - } - - return this[name]; - }; - - target.prototype.purge = function () { - let names = Object.keys(this); - this.purgeFields(names); - - return this; - }; - - target.prototype.purgeFields = function () { - let names = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0]; - - names.forEach(name => this.purgeField(name)); - - return this; - }; - - target.prototype.purgeField = function (name) { - return delete this[name]; - }; - - target.prototype.clear = function () { - let names = Object.keys(this); - - for (let name of names) { - this.clearField(name); - } - - return this; - }; - - target.prototype.clearField = function (name) { - this[name] = null; - return this[name]; - }; -} - -function injectCloningUtils(target, name, descriptor) { - - target.prototype.clone = function () { - return new this.constructor(this._schema, this.toObject()); - }; -} \ No newline at end of file diff --git a/dist/validation.js b/dist/validation.js deleted file mode 100644 index dfb3efd..0000000 --- a/dist/validation.js +++ /dev/null @@ -1,12 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.injectValidationUtils = injectValidationUtils; -function injectValidationUtils(target, name, descriptor) { - - target.prototype.isValid = function () {}; - - target.prototype.isValidField = function (name) {}; -} \ No newline at end of file diff --git a/package.json b/package.json index 282f905..da151cc 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,12 @@ { "name": "objectschema", - "version": "0.3.9", + "version": "0.4.0", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { "files": [ - "./tests/*.js" + "./tests/*.js", + "./tests/**/*.js" ], "concurrency": 4, "failFast": true @@ -43,10 +44,11 @@ "devDependencies": { "ava": "0.16.0", "babel-cli": "6.14.0", - "babel-plugin-transform-decorators-legacy": "1.3.4", + "babel-plugin-transform-runtime": "6.15.0", "babel-preset-node5": "11.1.0" }, "dependencies": { - "typeable": "0.2.5" + "typeable": "0.3.1", + "validatable": "0.3.6" } } diff --git a/src/document.js b/src/document.js index b426087..db0f0ef 100644 --- a/src/document.js +++ b/src/document.js @@ -2,22 +2,15 @@ import { cast, isObject, isArray, - isFunction + isFunction, + isPresent, + isAbsent, + isUndefined } from 'typeable'; +import {Validator} from 'validatable'; import {Schema} from './schema'; -import { - injectFieldsUtils, - injectCloningUtils -} from './structure'; -import {injectObjectSerializationUtils} from './serialization'; -import {injectValidationUtils} from './validation'; - -@injectFieldsUtils -@injectCloningUtils -@injectObjectSerializationUtils -@injectValidationUtils export class Document { constructor(schema, data={}) { @@ -30,9 +23,231 @@ export class Document { enumerable: false // do not expose as object key }); + Object.defineProperty(this, '_validator', { + value: new Validator(Object.assign({}, schema.validator, {context: this})), + enumerable: false // do not expose as object key + }); + this.purge(); this.define(); this.populate(data); } + define() { + let {fields} = this._schema; + this.defineFields(fields); + + return this; + } + + defineFields(fields) { + for (let name in fields) { + this.defineField(name, fields[name]); + } + + return this; + } + + defineField(name, definition={}) { + let data; + + Object.defineProperty(this, name, { + get: () => { + if (definition.get) { + return definition.get(data, this); + } else { + return data; + } + }, + set: (value=null) => { + data = this.castValue(value, definition); + if (definition.set) { + data = definition.set(data, this); + } + }, + enumerable: true, + configurable: true + }) + + if (isFunction(definition.defaultValue)) { + this[name] = definition.defaultValue(this); + } else { + this[name] = definition.defaultValue; + } + + return this[name]; + } + + castValue(value, {type}) { + return cast(value, type, { + schema: (value) => { + if (isArray(type)) type = type[0]; + return new this.constructor(type, value); + } + }); + } + + populate(fields={}) { + if (!isObject(fields)) { + throw new Error(`Only Object can populate a ${this.constructor.name}`); + } + + for (let name in fields) { + this.populateField(name, fields[name]); + } + + return this; + } + + populateField(name, value) { + if (this._schema.mode === 'relaxed') { + this[name] = value; + } else { + let names = Object.keys(this._schema.fields); + let exists = names.indexOf(name) > -1; + + if (exists) { + this[name] = value; + } + } + + return this[name]; + } + + purge() { + let names = Object.keys(this); + this.purgeFields(names); + + return this; + }; + + purgeFields(names=[]) { + names.forEach((name) => this.purgeField(name)); + + return this; + } + + purgeField(name) { + return delete this[name]; + } + + clear() { + let names = Object.keys(this); + + for (let name of names) { + this.clearField(name); + } + + return this; + } + + clearField(name) { + this[name] = null; + return this[name]; + } + + clone() { + return new this.constructor(this._schema, this.toObject()); + } + + toObject() { + let valueToObject = (v) => { + if (v && v.toObject) { + return v.toObject(); + } else if (v && isArray(v)) { + return v.map((v) => valueToObject(v)); + } else { + return v; + } + }; + + let data = {}; + let names = Object.keys(this); + for (let name of names) { + data[name] = valueToObject(this[name]); + } + return data; + } + + + + + + + + + + + + + + + + // async validate() { + // let errors = {}; + // + // let {fields} = this._schema; + // for (let name in fields) { + // errors[name] = await this.validateField(name); + // } + // + // return errors; + // } + // + // async validateField(name) { + // let definition = this._schema.fields[name]; + // let value = this[name]; + // + // return await this.validateValue(value, definition); + // } + + async validate() { + let errors = {}; + + for (let name in this) { + let value = this[name]; + let definition = this._schema.fields[name]; + + let error = await this.validateField(value, definition); + if (!isUndefined(error)) { + errors[name] = error; + } + } + + return errors; + } + + async validateField(value, definition) { + let {type, validations} = definition; + + let messages = await this._validator.validate(value, validations); + + let related = null; + if (type instanceof Schema && value) { + related = await value.validate(); + } else if (isArray(type) && isArray(value)) { + related = []; + for (let v of value) { + if (type[0] instanceof Schema) { + if (v) { + related.push(await v.validate()); + } else { + related.push(undefined); + } + } else { + related.push(await this.validateField(v, definition)); + } + } + } + + let isValid = messages.length === 0; + if (related && isObject(related)) { + isValid = !Object.values(related).map(v => v.isValid).includes(false); + } else if (related && isArray(related)) { + isValid = related.map(v => !v || v.isValid).includes(false); + } + + return isValid ? undefined : {isValid, messages, related}; + } + } diff --git a/src/schema.js b/src/schema.js index df615a6..81ef170 100644 --- a/src/schema.js +++ b/src/schema.js @@ -16,16 +16,20 @@ export function isValidMode(mode) { export class Schema { - constructor({mode=modes.RELAXED, fields={}}) { + constructor({mode=modes.RELAXED, fields={}, validator={}}) { if (!isValidMode(mode)) { throw new Error(`Unknown schema mode ${mode}`); } if (!isObject(fields)) { - throw new Error(`Schema fields should be an Object`); + throw new Error(`Schema fields key should be an Object`); + } + if (!isObject(validator)) { + throw new Error(`Schema validator key should be an Object`); } this.mode = mode; this.fields = fields; + this.validator = validator; } } diff --git a/src/serialization.js b/src/serialization.js deleted file mode 100644 index 030f15e..0000000 --- a/src/serialization.js +++ /dev/null @@ -1,30 +0,0 @@ -import {isArray} from 'typeable'; - -export function injectObjectSerializationUtils(target, name, descriptor) { - - target.prototype.toObject = function() { - let data = {}; - let names = Object.keys(this); - - for (let name of names) { - let value = this[name]; - - if (isArray(value)) { - data[name] = value.map(i => this.valueToObject(i)); - } else { - data[name] = this.valueToObject(value); - } - } - - return data; - }; - - target.prototype.valueToObject = function(value) { - if (value && value.toObject) { - return value.toObject(); - } else { - return value; - } - } - -} diff --git a/src/structure.js b/src/structure.js deleted file mode 100644 index b8ad5a8..0000000 --- a/src/structure.js +++ /dev/null @@ -1,131 +0,0 @@ -import { - cast, - isObject, - isFunction -} from 'typeable'; - -export function injectFieldsUtils(target, name, descriptor) { - - target.prototype.define = function() { - let {fields} = this._schema; - this.defineFields(fields); - - return this; - }; - - target.prototype.defineFields = function(fields) { - for (let name in fields) { - this.defineField(name, fields[name]); - } - - return this; - }; - - target.prototype.defineField = function(name, config={}) { - let data; - - Object.defineProperty(this, name, { - get: () => { - if (config.get) { - return config.get(data, this); - } else { - return data; - } - }, - set: (value=null) => { - data = this.castValue(value, config); - if (config.set) { - return data = config.set(data, this); - } else { - return data; - } - }, - enumerable: true, - configurable: true - }); - - if (isFunction(config.defaultValue)) { - this[name] = config.defaultValue(this); - } else { - this[name] = config.defaultValue; - } - - return this[name]; - }; - - target.prototype.castValue = function(value, config) { - return cast(value, config, { - schema: (value, config) => new this.constructor(config, value) - }); - }; - - target.prototype.populate = function(fields={}) { - if (!isObject(fields)) { - throw new Error(`Only Object can populate a ${this.constructor.name}`); - } - - let names = Object.keys(fields); - - for (let name in fields) { - this.populateField(name, fields[name]); - } - - return this; - }; - - target.prototype.populateField = function(name, value) { - if (this._schema.mode === 'relaxed') { - this[name] = value; - } else { - let names = Object.keys(this._schema.fields); - let exists = names.indexOf(name) > -1; - - if (exists) { - this[name] = value; - } - } - - return this[name]; - }; - - target.prototype.purge = function() { - let names = Object.keys(this); - this.purgeFields(names); - - return this; - }; - - target.prototype.purgeFields = function(names=[]) { - names.forEach((name) => this.purgeField(name)); - - return this; - }; - - target.prototype.purgeField = function(name) { - return delete this[name]; - }; - - target.prototype.clear = function() { - let names = Object.keys(this); - - for (let name of names) { - this.clearField(name); - } - - return this; - }; - - target.prototype.clearField = function(name) { - this[name] = null; - return this[name]; - } - -} - -export function injectCloningUtils(target, name, descriptor) { - - target.prototype.clone = function() { - return new this.constructor(this._schema, this.toObject()); - } - -} diff --git a/src/validation.js b/src/validation.js deleted file mode 100644 index a1a1a5e..0000000 --- a/src/validation.js +++ /dev/null @@ -1,10 +0,0 @@ -export function injectValidationUtils(target, name, descriptor) { - - target.prototype.isValid = function() { - - }; - - target.prototype.isValidField = function(name) { - } - -} diff --git a/tests/serialization.js b/tests/document/cloning.js similarity index 52% rename from tests/serialization.js rename to tests/document/cloning.js index 9ae6014..3d5216c 100644 --- a/tests/serialization.js +++ b/tests/document/cloning.js @@ -1,7 +1,7 @@ const test = require('ava'); -const {Document, Schema} = require('../dist'); +const {Document, Schema} = require('../../dist'); -test('converting document to object', (t) => { +test('document cloning', (t) => { let bookSchema = new Schema({ fields: { title: { @@ -15,14 +15,12 @@ test('converting document to object', (t) => { name: { type: 'string' }, - age: { - type: 'float' + book: { + type: bookSchema }, - enabled: { - type: 'boolean' - }, - book: bookSchema, - books: [bookSchema] + books: { + type: [bookSchema] + } } }); let data = { @@ -34,18 +32,9 @@ test('converting document to object', (t) => { } ] }; + let user = new Document(userSchema, data); - t.deepEqual(user.toObject(), { - name: 'John Smith', - age: null, - enabled: null, - book: null, - books: [ - null, - { - title: '100' - } - ] - }); + t.is(user.clone() === user, false); + t.deepEqual(user.clone(), user); }); diff --git a/tests/structure.js b/tests/document/fields.js similarity index 71% rename from tests/structure.js rename to tests/document/fields.js index 6698c4a..cae921e 100644 --- a/tests/structure.js +++ b/tests/document/fields.js @@ -1,11 +1,14 @@ const test = require('ava'); -const {Document, Schema} = require('../dist'); +const {Document, Schema} = require('../../dist'); -test('field type casting', (t) => { +test('document structure type casting', (t) => { let bookSchema = new Schema({ fields: { title: { type: 'string' + }, + year: { + type: 'integer' } } }); @@ -20,13 +23,21 @@ test('field type casting', (t) => { enabled: { type: 'boolean' }, - books: [bookSchema] + book: { + type: bookSchema + }, + books: { + type: [bookSchema] + } } }); let data = { name: 100, age: '35', enabled: 'true', + book: { + title: 100 + }, books: [ { title: 100 @@ -34,16 +45,17 @@ test('field type casting', (t) => { ] }; let user = new Document(userSchema, data); - let book = new Document(bookSchema, data.books[0]) t.is(user.name, '100'); t.is(user.age, 35); t.is(user.enabled, true); - t.deepEqual(user.books, [book]); + t.is(user.book.title, '100'); + t.is(user.book.year, null); t.is(user.books[0].title, '100'); + t.is(user.books[0].year, null); }); -test('field default value', (t) => { +test('document field default value', (t) => { let bookSchema = new Schema({ fields: { title: { @@ -66,8 +78,12 @@ test('field default value', (t) => { type: 'boolean', defaultValue: (ctx) => true }, - book: bookSchema, - books: [bookSchema] + book: { + type: bookSchema + }, + books: { + type: [bookSchema] + } } }); let data = { @@ -92,7 +108,7 @@ test('field default value', (t) => { t.is(user1.books[1].title, '100'); }); -test('field value transformation', (t) => { +test('document field value transformation', (t) => { let userSchema = new Schema({ fields: { name: { @@ -108,7 +124,7 @@ test('field value transformation', (t) => { t.is(user.name, '100-set-get'); }); -test('strict mode schema', (t) => { +test('document with strict mode schema', (t) => { let userSchema = new Schema({ mode: 'strict', fields: { @@ -128,41 +144,7 @@ test('strict mode schema', (t) => { t.is(user.age, undefined); }); -test('document cloning', (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'string', - defaultValue: 100 - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'string' - }, - book: bookSchema, - books: [bookSchema] - } - }); - let data = { - name: 'John Smith', - books: [ - null, - { - title: 100 - } - ] - }; - - let user = new Document(userSchema, data); - - t.is(user.clone() === user, false); - t.deepEqual(user.clone(), user); -}); - -test('clearing document', (t) => { +test('clearing document fields', (t) => { let userSchema = new Schema({ fields: { name: { diff --git a/tests/document/serialization.js b/tests/document/serialization.js new file mode 100644 index 0000000..0554e52 --- /dev/null +++ b/tests/document/serialization.js @@ -0,0 +1,73 @@ +const test = require('ava'); +const {Document, Schema} = require('../../dist'); + +test('converting document fields to object', (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'string', + defaultValue: 100 + }, + year: { + type: 'integer' + } + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'string' + }, + age: { + type: 'float' + }, + enabled: { + type: 'boolean' + }, + newBook: { + type: bookSchema + }, + newBooks: { + type: [bookSchema] + }, + oldBook: { + type: bookSchema + }, + oldBooks: { + type: [bookSchema] + } + } + }); + let data = { + name: 'John Smith', + newBook: { + title: 100 + }, + newBooks: [ + null, + { + title: 100 + } + ] + }; + let user = new Document(userSchema, data); + + t.deepEqual(user.toObject(), { + name: 'John Smith', + age: null, + enabled: null, + newBook: { + title: '100', + year: null + }, + newBooks: [ + null, + { + title: '100', + year: null + } + ], + oldBook: null, + oldBooks: null + }); +}); diff --git a/tests/document/validation.js b/tests/document/validation.js new file mode 100644 index 0000000..db4577e --- /dev/null +++ b/tests/document/validation.js @@ -0,0 +1,109 @@ +const test = require('ava'); +const {Document, Schema} = require('../../dist'); + +test('document validation', async (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'string', + validations: { + presence: {message: 'is required'} + } + }, + year: { + type: 'integer' + } + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'string', + validations: { + presence: {message: 'is required'} + } + }, + newBook: { + type: bookSchema, + validations: { + presence: {message: 'is required'} + } + }, + newBooks: { + type: [bookSchema], + validations: { + presence: {message: 'is required'} + } + }, + oldBook: { + type: bookSchema, + validations: { + presence: {message: 'is required'} + } + }, + oldBooks: { + type: [bookSchema], + validations: { + presence: {message: 'is required'} + } + } + } + }); + + let data = { + oldBook: { + title: '' + }, + oldBooks: [ + null, + { + title: '' + } + ] + }; + + let user0 = new Document(userSchema, data); + + t.deepEqual(await user0.validate(), { + name: { + isValid: false, + messages: ['is required'], + related: null + }, + newBook: { + isValid: false, + messages: ['is required'], + related: null + }, + newBooks: { + isValid: false, + messages: ['is required'], + related: null + }, + oldBook: { + isValid: false, + messages: [], + related: { + title: { + isValid: false, + messages: ['is required'], + related: null + } + } + }, + oldBooks: { + isValid: false, + messages: [], + related: [ + undefined, + { + title: { + isValid: false, + messages: ['is required'], + related: null + } + } + ] + } + }); +}); diff --git a/tests/validation.js b/tests/validation.js deleted file mode 100644 index 2d5f92d..0000000 --- a/tests/validation.js +++ /dev/null @@ -1,21 +0,0 @@ -const test = require('ava'); -const {Document, Schema} = require('../dist'); - -test('document.isValid', (t) => { - t.pass(); - // let userSchema = new Schema({ - // fields: { - // name: { - // type: 'string', - // validations: { - // isPresent: { - // message: 'is required' - // } - // } - // } - // } - // }); - // let user = new Document(userSchema); - // - // t.is(user.isValid(), false); -}); From 652e1290d49a7a88d790424f0fe36bcd66f9698a Mon Sep 17 00:00:00 2001 From: xpeper Date: Tue, 6 Sep 2016 01:16:26 +0200 Subject: [PATCH 019/219] es5 compatibility, fixing subschema validation --- dist/document.js | 242 +++++++++++++++++++++++------------ dist/index.js | 4 + dist/schema.js | 18 ++- package.json | 2 +- src/document.js | 238 +++++++++++++++++++++------------- src/index.js | 4 + src/schema.js | 18 ++- tests/document/validation.js | 15 +-- 8 files changed, 359 insertions(+), 182 deletions(-) diff --git a/dist/document.js b/dist/document.js index a07352e..50971b8 100644 --- a/dist/document.js +++ b/dist/document.js @@ -33,8 +33,16 @@ var _schema = require('./schema'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +/* +* The core schema-based object class. +*/ + class Document { + /* + * Class constructor. + */ + constructor(schema) { let data = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; @@ -52,37 +60,42 @@ class Document { enumerable: false // do not expose as object key }); - this.purge(); + this._purge(); this.define(); this.populate(data); } + /* + * Defines class fields for all fields in schema. + */ + define() { let fields = this._schema.fields; - this.defineFields(fields); - - return this; - } - defineFields(fields) { for (let name in fields) { - this.defineField(name, fields[name]); + this._defineField(name, fields[name]); } return this; } - defineField(name) { + /* + * Defines a class field from the provided `name` and + * field definition object. + */ + + _defineField(name) { var _this = this; let definition = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; let data; - (0, _defineProperty2.default)(this, name, { + (0, _defineProperty2.default)(this, name, { // field definition get: () => { if (definition.get) { + // value transformation return definition.get(data, this); } else { return data; @@ -91,8 +104,9 @@ class Document { set: function () { let value = arguments.length <= 0 || arguments[0] === undefined ? null : arguments[0]; - data = _this.castValue(value, definition); + data = _this._castValue(value, definition); // value type casting if (definition.set) { + // value transformation data = definition.set(data, _this); } }, @@ -101,6 +115,7 @@ class Document { }); if ((0, _typeable.isFunction)(definition.defaultValue)) { + // setting default value this[name] = definition.defaultValue(this); } else { this[name] = definition.defaultValue; @@ -109,31 +124,44 @@ class Document { return this[name]; } - castValue(value, _ref) { + /* + * Converts the `value` into specified `type`. + */ + + _castValue(value, _ref) { let type = _ref.type; return (0, _typeable.cast)(value, type, { schema: value => { - if ((0, _typeable.isArray)(type)) type = type[0]; + if ((0, _typeable.isArray)(type)) type = type[0]; // in case of {type: [Schema]} return new this.constructor(type, value); } }); } + /* + * Sets values of class properties with values provided by + * the `data` object. + */ + populate() { - let fields = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; + let data = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; - if (!(0, _typeable.isObject)(fields)) { + if (!(0, _typeable.isObject)(data)) { throw new Error(`Only Object can populate a ${ this.constructor.name }`); } - for (let name in fields) { - this.populateField(name, fields[name]); + for (let name in data) { + this.populateField(name, data[name]); } return this; } + /* + * Sets a value of a single class property. + */ + populateField(name, value) { if (this._schema.mode === 'relaxed') { this[name] = value; @@ -149,25 +177,29 @@ class Document { return this[name]; } - purge() { + /* + * Deletes all class fields. + */ + + _purge() { let names = (0, _keys2.default)(this); - this.purgeFields(names); + names.forEach(name => this._purgeField(name)); return this; } - purgeFields() { - let names = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0]; - - names.forEach(name => this.purgeField(name)); - - return this; - } + /* + * Deletes specified class field. + */ - purgeField(name) { + _purgeField(name) { return delete this[name]; } + /* + * Remove values of all class fields. + */ + clear() { let names = (0, _keys2.default)(this); @@ -178,51 +210,56 @@ class Document { return this; } + /* + * Removes a value of a field with `name`. + */ + clearField(name) { this[name] = null; return this[name]; } + /* + * Returns a new Document instance which is the exact + * copy of the original instance. + */ + clone() { return new this.constructor(this._schema, this.toObject()); } - toObject() { - let valueToObject = v => { - if (v && v.toObject) { - return v.toObject(); - } else if (v && (0, _typeable.isArray)(v)) { - return v.map(v => valueToObject(v)); - } else { - return v; - } - }; + /* + * Converts this class into serialized data object. + */ + toObject() { let data = {}; let names = (0, _keys2.default)(this); + for (let name of names) { - data[name] = valueToObject(this[name]); + data[name] = this._toObjectValue(this[name]); } + return data; } - // async validate() { - // let errors = {}; - // - // let {fields} = this._schema; - // for (let name in fields) { - // errors[name] = await this.validateField(name); - // } - // - // return errors; - // } - // - // async validateField(name) { - // let definition = this._schema.fields[name]; - // let value = this[name]; - // - // return await this.validateValue(value, definition); - // } + /* + * Reads a value recursivelly and returns a serialized data object. + */ + + _toObjectValue(value) { + if (value && value.toObject) { + return value.toObject(); + } else if (value && (0, _typeable.isArray)(value)) { + return value.map(value => this._toObjectValue(value)); + } else { + return value; + } + } + + /* + * Validates all class fields and returns errors. + */ validate() { var _this2 = this; @@ -231,10 +268,8 @@ class Document { let errors = {}; for (let name in _this2) { - let value = _this2[name]; - let definition = _this2._schema.fields[name]; - let error = yield _this2.validateField(value, definition); + let error = yield _this2.validateField(name); if (!(0, _typeable.isUndefined)(error)) { errors[name] = error; } @@ -244,48 +279,97 @@ class Document { })(); } - validateField(value, definition) { + /* + * Validates a single class field with `name` and returns errors. + */ + + validateField(name) { var _this3 = this; + return (0, _asyncToGenerator3.default)(function* () { + let value = _this3[name]; + let definition = _this3._schema.fields[name]; + + return yield _this3._validateValue(value, definition); + })(); + } + + /* + * Validates a value agains the field `definition` object. + */ + + _validateValue(value, definition) { + var _this4 = this; + return (0, _asyncToGenerator3.default)(function* () { let type = definition.type; let validations = definition.validations; + let error = {}; + + error.messages = yield _this4._validator.validate(value, validations); + + let related = yield _this4._validateRelatedObject(value, definition); + if (related) { + error.related = related; + } + + error.isValid = error.messages.length === 0 && _this4._isRelatedObjectValid(related); + + return error.isValid ? undefined : error; + })(); + } - let messages = yield _this3._validator.validate(value, validations); + /* + * Validates a value agains the field `definition` object. + */ - let related = null; - if (type instanceof _schema.Schema && value) { - related = yield value.validate(); + _validateRelatedObject(value, definition) { + var _this5 = this; + + return (0, _asyncToGenerator3.default)(function* () { + let type = definition.type; + let validations = definition.validations; + + + if (!value) { + return undefined; + } else if (type instanceof _schema.Schema) { + return yield value.validate(); } else if ((0, _typeable.isArray)(type) && (0, _typeable.isArray)(value)) { - related = []; + let aaa = []; + for (let v of value) { if (type[0] instanceof _schema.Schema) { if (v) { - related.push((yield v.validate())); + aaa.push((yield v.validate())); } else { - related.push(undefined); + aaa.push(undefined); } } else { - related.push((yield _this3.validateField(v, definition))); + aaa.push((yield _this5._validateValue(v, definition))); } } + return aaa; + } else { + return undefined; } - - let isValid = messages.length === 0; - if (related && (0, _typeable.isObject)(related)) { - isValid = !(0, _values2.default)(related).map(function (v) { - return v.isValid; - }).includes(false); - } else if (related && (0, _typeable.isArray)(related)) { - isValid = related.map(function (v) { - return !v || v.isValid; - }).includes(false); - } - - return isValid ? undefined : { isValid, messages, related }; })(); } + /* + * Validates a related object of a field (a sub schema). + */ + + _isRelatedObjectValid(value) { + if (!value) { + return true; + } else if ((0, _typeable.isObject)(value)) { + return (0, _values2.default)(value).map(v => v.isValid).indexOf(false) === -1; + } else if ((0, _typeable.isArray)(value)) { + return value.map(v => this._isRelatedObjectValid(v)).indexOf(false) === -1; + } + } + } exports.Document = Document; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index f98b59b..445c94f 100644 --- a/dist/index.js +++ b/dist/index.js @@ -9,5 +9,9 @@ var _schema = require('./schema'); var _document = require('./document'); +/* +* Exposing public classes. +*/ + exports.Schema = _schema.Schema; exports.Document = _document.Document; \ No newline at end of file diff --git a/dist/schema.js b/dist/schema.js index a792ecb..d38d0c5 100644 --- a/dist/schema.js +++ b/dist/schema.js @@ -15,11 +15,19 @@ var _typeable = require('typeable'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +/* +* A list of available Schema modes. +*/ + const modes = exports.modes = { RELAXED: 'relaxed', STRICT: 'strict' }; +/* +* Validates the `mode` value. +*/ + function isValidMode(mode) { let keys = (0, _keys2.default)(modes); @@ -29,6 +37,10 @@ function isValidMode(mode) { return false; } +/* +* A class for defining Document structure and properties. +*/ + class Schema { constructor(_ref) { @@ -49,9 +61,9 @@ class Schema { throw new Error(`Schema validator key should be an Object`); } - this.mode = mode; - this.fields = fields; - this.validator = validator; + this.mode = mode; // document schema mode + this.fields = fields; // document fields + this.validator = validator; // document validator configuration options } } diff --git a/package.json b/package.json index da151cc..6651b33 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.4.0", + "version": "0.4.1", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/document.js b/src/document.js index db0f0ef..0b3dabc 100644 --- a/src/document.js +++ b/src/document.js @@ -11,8 +11,16 @@ import { import {Validator} from 'validatable'; import {Schema} from './schema'; +/* +* The core schema-based object class. +*/ + export class Document { + /* + * Class constructor. + */ + constructor(schema, data={}) { if (!(schema instanceof Schema)) { throw new Error(`${this.constructor.name} expects schema to be an instance of Schema class`); @@ -28,40 +36,44 @@ export class Document { enumerable: false // do not expose as object key }); - this.purge(); + this._purge(); this.define(); this.populate(data); } + /* + * Defines class fields for all fields in schema. + */ + define() { let {fields} = this._schema; - this.defineFields(fields); - return this; - } - - defineFields(fields) { for (let name in fields) { - this.defineField(name, fields[name]); + this._defineField(name, fields[name]); } return this; } - defineField(name, definition={}) { + /* + * Defines a class field from the provided `name` and + * field definition object. + */ + + _defineField(name, definition={}) { let data; - Object.defineProperty(this, name, { + Object.defineProperty(this, name, { // field definition get: () => { - if (definition.get) { + if (definition.get) { // value transformation return definition.get(data, this); } else { return data; } }, set: (value=null) => { - data = this.castValue(value, definition); - if (definition.set) { + data = this._castValue(value, definition); // value type casting + if (definition.set) { // value transformation data = definition.set(data, this); } }, @@ -69,7 +81,7 @@ export class Document { configurable: true }) - if (isFunction(definition.defaultValue)) { + if (isFunction(definition.defaultValue)) { // setting default value this[name] = definition.defaultValue(this); } else { this[name] = definition.defaultValue; @@ -78,27 +90,40 @@ export class Document { return this[name]; } - castValue(value, {type}) { + /* + * Converts the `value` into specified `type`. + */ + + _castValue(value, {type}) { return cast(value, type, { schema: (value) => { - if (isArray(type)) type = type[0]; + if (isArray(type)) type = type[0]; // in case of {type: [Schema]} return new this.constructor(type, value); } }); } - populate(fields={}) { - if (!isObject(fields)) { + /* + * Sets values of class properties with values provided by + * the `data` object. + */ + + populate(data={}) { + if (!isObject(data)) { throw new Error(`Only Object can populate a ${this.constructor.name}`); } - for (let name in fields) { - this.populateField(name, fields[name]); + for (let name in data) { + this.populateField(name, data[name]); } return this; } + /* + * Sets a value of a single class property. + */ + populateField(name, value) { if (this._schema.mode === 'relaxed') { this[name] = value; @@ -114,23 +139,29 @@ export class Document { return this[name]; } - purge() { + /* + * Deletes all class fields. + */ + + _purge() { let names = Object.keys(this); - this.purgeFields(names); + names.forEach((name) => this._purgeField(name)); return this; }; - purgeFields(names=[]) { - names.forEach((name) => this.purgeField(name)); - - return this; - } + /* + * Deletes specified class field. + */ - purgeField(name) { + _purgeField(name) { return delete this[name]; } + /* + * Remove values of all class fields. + */ + clear() { let names = Object.keys(this); @@ -141,74 +172,63 @@ export class Document { return this; } + /* + * Removes a value of a field with `name`. + */ + clearField(name) { this[name] = null; return this[name]; } + /* + * Returns a new Document instance which is the exact + * copy of the original instance. + */ + clone() { return new this.constructor(this._schema, this.toObject()); } - toObject() { - let valueToObject = (v) => { - if (v && v.toObject) { - return v.toObject(); - } else if (v && isArray(v)) { - return v.map((v) => valueToObject(v)); - } else { - return v; - } - }; + /* + * Converts this class into serialized data object. + */ + toObject() { let data = {}; let names = Object.keys(this); + for (let name of names) { - data[name] = valueToObject(this[name]); + data[name] = this._toObjectValue(this[name]); } + return data; } + /* + * Reads a value recursivelly and returns a serialized data object. + */ + _toObjectValue(value) { + if (value && value.toObject) { + return value.toObject(); + } else if (value && isArray(value)) { + return value.map((value) => this._toObjectValue(value)); + } else { + return value; + } + }; - - - - - - - - - - - - - // async validate() { - // let errors = {}; - // - // let {fields} = this._schema; - // for (let name in fields) { - // errors[name] = await this.validateField(name); - // } - // - // return errors; - // } - // - // async validateField(name) { - // let definition = this._schema.fields[name]; - // let value = this[name]; - // - // return await this.validateValue(value, definition); - // } + /* + * Validates all class fields and returns errors. + */ async validate() { let errors = {}; for (let name in this) { - let value = this[name]; - let definition = this._schema.fields[name]; - let error = await this.validateField(value, definition); + let error = await this.validateField(name); if (!isUndefined(error)) { errors[name] = error; } @@ -217,37 +237,83 @@ export class Document { return errors; } - async validateField(value, definition) { + /* + * Validates a single class field with `name` and returns errors. + */ + + async validateField(name) { + let value = this[name]; + let definition = this._schema.fields[name]; + + return await this._validateValue(value, definition); + } + + /* + * Validates a value agains the field `definition` object. + */ + + async _validateValue(value, definition) { let {type, validations} = definition; + let error = {}; + + error.messages = await this._validator.validate(value, validations); + + let related = await this._validateRelatedObject(value, definition); + if (related) { + error.related = related; + } + + error.isValid = ( + error.messages.length === 0 + && this._isRelatedObjectValid(related) + ); + + return error.isValid ? undefined : error; + } - let messages = await this._validator.validate(value, validations); + /* + * Validates a value agains the field `definition` object. + */ - let related = null; - if (type instanceof Schema && value) { - related = await value.validate(); + async _validateRelatedObject(value, definition) { + let {type, validations} = definition; + + if (!value) { + return undefined; + } else if (type instanceof Schema) { + return await value.validate(); } else if (isArray(type) && isArray(value)) { - related = []; + let aaa = []; + for (let v of value) { if (type[0] instanceof Schema) { if (v) { - related.push(await v.validate()); + aaa.push(await v.validate()); } else { - related.push(undefined); + aaa.push(undefined); } } else { - related.push(await this.validateField(v, definition)); + aaa.push(await this._validateValue(v, definition)); } } + return aaa; + } else { + return undefined; } + } - let isValid = messages.length === 0; - if (related && isObject(related)) { - isValid = !Object.values(related).map(v => v.isValid).includes(false); - } else if (related && isArray(related)) { - isValid = related.map(v => !v || v.isValid).includes(false); + /* + * Validates a related object of a field (a sub schema). + */ + + _isRelatedObjectValid(value) { + if (!value) { + return true; + } else if (isObject(value)) { + return Object.values(value).map(v => v.isValid).indexOf(false) === -1; + } else if (isArray(value)) { + return value.map(v => this._isRelatedObjectValid(v)).indexOf(false) === -1; } - - return isValid ? undefined : {isValid, messages, related}; } } diff --git a/src/index.js b/src/index.js index 83396b7..492cfb5 100644 --- a/src/index.js +++ b/src/index.js @@ -1,4 +1,8 @@ import {Schema} from './schema'; import {Document} from './document'; +/* +* Exposing public classes. +*/ + export {Schema, Document}; diff --git a/src/schema.js b/src/schema.js index 81ef170..ca5e854 100644 --- a/src/schema.js +++ b/src/schema.js @@ -1,10 +1,18 @@ import {isObject} from 'typeable'; +/* +* A list of available Schema modes. +*/ + export const modes = { RELAXED: 'relaxed', STRICT: 'strict' }; +/* +* Validates the `mode` value. +*/ + export function isValidMode(mode) { let keys = Object.keys(modes); @@ -14,6 +22,10 @@ export function isValidMode(mode) { return false; } +/* +* A class for defining Document structure and properties. +*/ + export class Schema { constructor({mode=modes.RELAXED, fields={}, validator={}}) { @@ -27,9 +39,9 @@ export class Schema { throw new Error(`Schema validator key should be an Object`); } - this.mode = mode; - this.fields = fields; - this.validator = validator; + this.mode = mode; // document schema mode + this.fields = fields; // document fields + this.validator = validator; // document validator configuration options } } diff --git a/tests/document/validation.js b/tests/document/validation.js index db4577e..4dccc1c 100644 --- a/tests/document/validation.js +++ b/tests/document/validation.js @@ -67,18 +67,15 @@ test('document validation', async (t) => { t.deepEqual(await user0.validate(), { name: { isValid: false, - messages: ['is required'], - related: null + messages: ['is required'] }, newBook: { isValid: false, - messages: ['is required'], - related: null + messages: ['is required'] }, newBooks: { isValid: false, - messages: ['is required'], - related: null + messages: ['is required'] }, oldBook: { isValid: false, @@ -86,8 +83,7 @@ test('document validation', async (t) => { related: { title: { isValid: false, - messages: ['is required'], - related: null + messages: ['is required'] } } }, @@ -99,8 +95,7 @@ test('document validation', async (t) => { { title: { isValid: false, - messages: ['is required'], - related: null + messages: ['is required'] } } ] From 02ea579d1aac2b69c71e8f618c22f7a68a95380d Mon Sep 17 00:00:00 2001 From: xpeper Date: Tue, 6 Sep 2016 01:35:38 +0200 Subject: [PATCH 020/219] adding array field tests, removing node4 from travis --- .travis.yml | 1 - package.json | 2 +- tests/document/fields.js | 12 +++++++++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index b9879cc..58223d0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,4 +2,3 @@ language: node_js node_js: - "6" - "5" - - "4" diff --git a/package.json b/package.json index 6651b33..8223cdb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.4.1", + "version": "0.4.2", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/tests/document/fields.js b/tests/document/fields.js index cae921e..c1bac6a 100644 --- a/tests/document/fields.js +++ b/tests/document/fields.js @@ -28,6 +28,12 @@ test('document structure type casting', (t) => { }, books: { type: [bookSchema] + }, + tags: { + type: ['string'] + }, + keywords: { + type: [] } } }); @@ -42,7 +48,9 @@ test('document structure type casting', (t) => { { title: 100 } - ] + ], + tags: ['foo', 'bar', 100, null], + keywords: ['foo', 'bar', 100, null] }; let user = new Document(userSchema, data); @@ -53,6 +61,8 @@ test('document structure type casting', (t) => { t.is(user.book.year, null); t.is(user.books[0].title, '100'); t.is(user.books[0].year, null); + t.deepEqual(user.tags, ['foo', 'bar', '100', null]); + t.deepEqual(user.keywords, ['foo', 'bar', 100, null]); }); test('document field default value', (t) => { From b0696fe045cd98a3fd92846a089e3887e5c448c3 Mon Sep 17 00:00:00 2001 From: xpeper Date: Tue, 6 Sep 2016 01:47:04 +0200 Subject: [PATCH 021/219] adding document.isValid() --- dist/document.js | 13 ++++++++ package.json | 2 +- src/document.js | 10 ++++++ tests/document/cloning.js | 2 +- tests/document/serialization.js | 2 +- tests/document/validation.js | 57 +++++++++++++++++++++++++++++++-- 6 files changed, 80 insertions(+), 6 deletions(-) diff --git a/dist/document.js b/dist/document.js index 50971b8..142c552 100644 --- a/dist/document.js +++ b/dist/document.js @@ -371,5 +371,18 @@ class Document { } } + /* + * Returns `true` when all document fields are valid. + */ + + isValid() { + var _this6 = this; + + return (0, _asyncToGenerator3.default)(function* () { + let errors = yield _this6.validate(); + return (0, _typeable.isAbsent)(errors); + })(); + } + } exports.Document = Document; \ No newline at end of file diff --git a/package.json b/package.json index 8223cdb..7d79c26 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.4.2", + "version": "0.4.3", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/document.js b/src/document.js index 0b3dabc..2de4bb8 100644 --- a/src/document.js +++ b/src/document.js @@ -316,4 +316,14 @@ export class Document { } } + /* + * Returns `true` when all document fields are valid. + */ + + async isValid() { + let errors = await this.validate(); + return isAbsent(errors); + } + + } diff --git a/tests/document/cloning.js b/tests/document/cloning.js index 3d5216c..2dbf44a 100644 --- a/tests/document/cloning.js +++ b/tests/document/cloning.js @@ -1,7 +1,7 @@ const test = require('ava'); const {Document, Schema} = require('../../dist'); -test('document cloning', (t) => { +test('clone', (t) => { let bookSchema = new Schema({ fields: { title: { diff --git a/tests/document/serialization.js b/tests/document/serialization.js index 0554e52..691e98a 100644 --- a/tests/document/serialization.js +++ b/tests/document/serialization.js @@ -1,7 +1,7 @@ const test = require('ava'); const {Document, Schema} = require('../../dist'); -test('converting document fields to object', (t) => { +test('toObject', (t) => { let bookSchema = new Schema({ fields: { title: { diff --git a/tests/document/validation.js b/tests/document/validation.js index 4dccc1c..182bff1 100644 --- a/tests/document/validation.js +++ b/tests/document/validation.js @@ -1,7 +1,7 @@ const test = require('ava'); const {Document, Schema} = require('../../dist'); -test('document validation', async (t) => { +test('validate', async (t) => { let bookSchema = new Schema({ fields: { title: { @@ -62,9 +62,9 @@ test('document validation', async (t) => { ] }; - let user0 = new Document(userSchema, data); + let user = new Document(userSchema, data); - t.deepEqual(await user0.validate(), { + t.deepEqual(await user.validate(), { name: { isValid: false, messages: ['is required'] @@ -102,3 +102,54 @@ test('document validation', async (t) => { } }); }); + +test('isValid', async (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'string', + validations: { + presence: {message: 'is required'} + } + }, + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'string', + validations: { + presence: {message: 'is required'} + } + }, + book: { + type: bookSchema, + validations: { + presence: {message: 'is required'} + } + }, + books: { + type: [bookSchema], + validations: { + presence: {message: 'is required'} + } + } + } + }); + + let data = { + name: 'John', + book: { + title: 'Coding Is Fun' + }, + books: [ + { + title: 'Coding NodeJs' + } + ] + }; + + let user = new Document(userSchema, data); + + t.is(await user.isValid(), true); +}); From 0cdc3f17809083ce82ec77f304ed85b91b300692 Mon Sep 17 00:00:00 2001 From: xpeper Date: Tue, 6 Sep 2016 09:26:19 +0200 Subject: [PATCH 022/219] adding document.equalsTo, strict schema by default, documentation --- README.md | 129 ++++++++++++++++++++++++++++++++++- dist/document.js | 17 ++++- dist/schema.js | 2 +- package.json | 3 +- src/document.js | 13 +++- src/schema.js | 2 +- tests/document/comparison.js | 41 +++++++++++ 7 files changed, 199 insertions(+), 8 deletions(-) create mode 100644 tests/document/comparison.js diff --git a/README.md b/README.md index 4f4f0f3..3a80d28 100644 --- a/README.md +++ b/README.md @@ -60,9 +60,136 @@ let data = { let user = new Document(userSchema, data); user.name; // -> 'John Smith' -user.isValid(); // -> true +await user.isValid(); // -> true ``` +## API + +### Schema + +**new Schema({mode, validator, fields});** + +> A class for defining document structure. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| mode | String | No | strict | A schema type (use `relaxed` to allow dynamic fields). +| validator | Object | No | using [validatablejs](https://github.com/xpepermint/validatablejs) defaults | Object with custom validators (this variable is merged with built-in validators thus you can override a validator key if you need to). +| fields | Object | Yes | {} | An object with fields definition. + +```js +let fields = { + name: { + type: 'string', + defaultValue: 'John Smith', + validations: { + presence: { + message: 'is required' + } + } + }, +}; +``` + +### Document + +**new Document(schema, data);** + +> A class for creating a schema-based object. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| schema | Schema | Yes | - | An instance of the Schema class. +| data | Object | No | - | Data object. + +**document.populate(data):Document** + +> Applies data to a document. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| data | Object | Yes | - | Data object. + +**document.populateField(name, value):Any** + +> Sets a value of document field. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| name | string | Yes | - | Document field name. +| value | Any | Yes | - | Data object. + +**document.clear():Document** + +> Sets all document fields to `null`. + +**document.clearField(name):Document** + +> Sets the `name` document field to `null`. + +**document.clone():Document** + +> Returns a new Document instance which is the exact copy of the original instance. + +**document.toObject():Object** + +> Converts the `document` into serialized data object. + +**document.validate():Promise** + +> Validates all class fields and returns errors. + +```js +{ // return value example + name: { // field value is missing + messages: ['is required'], + isValid: false + }, + book: { // nested object is missing + messages: ['is required'], + isValid: false + }, + address: { + messages: [], + related: { // nested object errors + post: { + messages: ['is required'], + isValid: false + } + }, + isValid: false + }, + friends: { // an array of nested objects has errors + messages: [], + related: [ + undefined, // the first item was valid + { // the second item has errors + name: { + messages: ['is required'], + isValid: false + } + } + ], + isValid: false + } +} +``` + +**document.validateField(name):Promise** + +> Validates the `name` field and returns errors. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| name | string | Yes | - | Document field name. + + +**document.isValid():Promise** + +> Returns `true` when all document fields are valid. + +**document.equalsTo():Boolean** + ## License (MIT) ``` diff --git a/dist/document.js b/dist/document.js index 142c552..b833c59 100644 --- a/dist/document.js +++ b/dist/document.js @@ -27,6 +27,10 @@ var _assign2 = _interopRequireDefault(_assign); var _typeable = require('typeable'); +var _deepEqual = require('deep-equal'); + +var _deepEqual2 = _interopRequireDefault(_deepEqual); + var _validatable = require('validatable'); var _schema = require('./schema'); @@ -61,7 +65,7 @@ class Document { }); this._purge(); - this.define(); + this._define(); this.populate(data); } @@ -69,7 +73,7 @@ class Document { * Defines class fields for all fields in schema. */ - define() { + _define() { let fields = this._schema.fields; @@ -384,5 +388,14 @@ class Document { })(); } + /* + * Returns `true` when the `value` represents an object with the + * same field values as the original document. + */ + + equalsTo(value) { + return (0, _deepEqual2.default)(this, value); + } + } exports.Document = Document; \ No newline at end of file diff --git a/dist/schema.js b/dist/schema.js index d38d0c5..ad4ff07 100644 --- a/dist/schema.js +++ b/dist/schema.js @@ -45,7 +45,7 @@ class Schema { constructor(_ref) { var _ref$mode = _ref.mode; - let mode = _ref$mode === undefined ? modes.RELAXED : _ref$mode; + let mode = _ref$mode === undefined ? modes.STRICT : _ref$mode; var _ref$fields = _ref.fields; let fields = _ref$fields === undefined ? {} : _ref$fields; var _ref$validator = _ref.validator; diff --git a/package.json b/package.json index 7d79c26..bb565c3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.4.3", + "version": "0.4.4", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -48,6 +48,7 @@ "babel-preset-node5": "11.1.0" }, "dependencies": { + "deep-equal": "1.0.1", "typeable": "0.3.1", "validatable": "0.3.6" } diff --git a/src/document.js b/src/document.js index 2de4bb8..c6ea0e6 100644 --- a/src/document.js +++ b/src/document.js @@ -8,6 +8,7 @@ import { isUndefined } from 'typeable'; +import deeplyEquals from 'deep-equal'; import {Validator} from 'validatable'; import {Schema} from './schema'; @@ -37,7 +38,7 @@ export class Document { }); this._purge(); - this.define(); + this._define(); this.populate(data); } @@ -45,7 +46,7 @@ export class Document { * Defines class fields for all fields in schema. */ - define() { + _define() { let {fields} = this._schema; for (let name in fields) { @@ -325,5 +326,13 @@ export class Document { return isAbsent(errors); } + /* + * Returns `true` when the `value` represents an object with the + * same field values as the original document. + */ + + equalsTo(value) { + return deeplyEquals(this, value); + } } diff --git a/src/schema.js b/src/schema.js index ca5e854..3fec632 100644 --- a/src/schema.js +++ b/src/schema.js @@ -28,7 +28,7 @@ export function isValidMode(mode) { export class Schema { - constructor({mode=modes.RELAXED, fields={}, validator={}}) { + constructor({mode=modes.STRICT, fields={}, validator={}}) { if (!isValidMode(mode)) { throw new Error(`Unknown schema mode ${mode}`); } diff --git a/tests/document/comparison.js b/tests/document/comparison.js new file mode 100644 index 0000000..06d2a44 --- /dev/null +++ b/tests/document/comparison.js @@ -0,0 +1,41 @@ +const test = require('ava'); +const {Document, Schema} = require('../../dist'); + +test('document comperison', (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'string' + } + } + }); + let userSchema = { + fields: { + name: { + type: 'string', + defaultValue: 'John' + }, + book: { + type: bookSchema + }, + books: { + type: [bookSchema] + } + } + }; + let data0 = { + name: null + }; + let data1 = { + name: 'Mandy' + }; + let user0 = new Document(new Schema(userSchema)); + let user1 = new Document(new Schema(userSchema)); + let user2 = new Document(new Schema(userSchema), data0); + let user3 = new Document(new Schema(userSchema), data1); + + t.is(user0.equalsTo(user1), true); + t.is(user0.equalsTo(user2), false); + t.is(user0.equalsTo(user3), false); + t.is(user2.equalsTo(user3), false); +}); From d7b4fac6a8d59d15674c05596e15f07bc91b46d7 Mon Sep 17 00:00:00 2001 From: xpeper Date: Tue, 6 Sep 2016 10:15:25 +0200 Subject: [PATCH 023/219] dependencies update, documentation update --- README.md | 41 ++++++++++++++++++++++------------------- package.json | 4 ++-- 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 3a80d28..be38f28 100644 --- a/README.md +++ b/README.md @@ -78,22 +78,24 @@ await user.isValid(); // -> true | fields | Object | Yes | {} | An object with fields definition. ```js -let fields = { - name: { - type: 'string', - defaultValue: 'John Smith', - validations: { - presence: { - message: 'is required' +let fields = { // schema fields definition + name: { // field name holding a field definition + type: 'string', // field type + defaultValue: 'John Smith', // default field value + validations: { // field validations + presence: { // validator name + message: 'is required' // validator options } } }, }; ``` +This package integrates [typeablejs](https://github.com/xpepermint/typeablejs) module for type casting and [validatablejs](https://github.com/xpepermint/validatablejs) for field value validation. See these packages for available configuration options and other details. + ### Document -**new Document(schema, data);** +**new Document(schema, data)** > A class for creating a schema-based object. @@ -102,7 +104,7 @@ let fields = { | schema | Schema | Yes | - | An instance of the Schema class. | data | Object | No | - | Data object. -**document.populate(data):Document** +**document.populate(data)**:Document > Applies data to a document. @@ -110,7 +112,7 @@ let fields = { |--------|------|----------|---------|------------ | data | Object | Yes | - | Data object. -**document.populateField(name, value):Any** +**document.populateField(name, value)**:Any > Sets a value of document field. @@ -119,23 +121,23 @@ let fields = { | name | string | Yes | - | Document field name. | value | Any | Yes | - | Data object. -**document.clear():Document** +**document.clear()**:Document > Sets all document fields to `null`. -**document.clearField(name):Document** +**document.clearField(name)**:Document > Sets the `name` document field to `null`. -**document.clone():Document** +**document.clone()**:Document > Returns a new Document instance which is the exact copy of the original instance. -**document.toObject():Object** +**document.toObject()**:Object > Converts the `document` into serialized data object. -**document.validate():Promise** +**document.validate()**:Promise > Validates all class fields and returns errors. @@ -175,7 +177,7 @@ let fields = { } ``` -**document.validateField(name):Promise** +**document.validateField(name)**:Promise > Validates the `name` field and returns errors. @@ -183,12 +185,13 @@ let fields = { |--------|------|----------|---------|------------ | name | string | Yes | - | Document field name. - -**document.isValid():Promise** +**document.isValid()**:Promise > Returns `true` when all document fields are valid. -**document.equalsTo():Boolean** +**document.equalsTo(value)**:Boolean + +> Returns `true` when the `value` represents an object with the same field values as the original document. ## License (MIT) diff --git a/package.json b/package.json index bb565c3..2f647f5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.4.4", + "version": "0.4.5", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -50,6 +50,6 @@ "dependencies": { "deep-equal": "1.0.1", "typeable": "0.3.1", - "validatable": "0.3.6" + "validatable": "0.3.7" } } From 3bfcd1432eec218548dd22106cfc849e957febda Mon Sep 17 00:00:00 2001 From: xpeper Date: Tue, 6 Sep 2016 10:19:55 +0200 Subject: [PATCH 024/219] dependencies update --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 2f647f5..fb8f26b 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,7 @@ "dependencies": { "deep-equal": "1.0.1", "typeable": "0.3.1", - "validatable": "0.3.7" + "validatable": "0.3.8", + "validator": "5.6.0" } } From 587d9e58b64880f2f03df75777713d6782a8c964 Mon Sep 17 00:00:00 2001 From: xpeper Date: Tue, 6 Sep 2016 16:50:27 +0200 Subject: [PATCH 025/219] purge() and define() methods now public, do not purge on initialize --- README.md | 11 ++++++++++- dist/document.js | 7 +++---- dist/schema.js | 8 +++++++- package.json | 2 +- src/document.js | 7 +++---- src/schema.js | 6 +++++- 6 files changed, 29 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index be38f28..7a42091 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ await user.isValid(); // -> true ### Schema -**new Schema({mode, validator, fields});** +**new Schema({mode, validator, fields})** > A class for defining document structure. @@ -95,6 +95,7 @@ This package integrates [typeablejs](https://github.com/xpepermint/typeablejs) m ### Document + **new Document(schema, data)** > A class for creating a schema-based object. @@ -193,6 +194,14 @@ This package integrates [typeablejs](https://github.com/xpepermint/typeablejs) m > Returns `true` when the `value` represents an object with the same field values as the original document. +**document.purge()**:Document + +> Deletes all class fields. + +**document.define()**:Document + +> Defines class fields for all fields in schema. + ## License (MIT) ``` diff --git a/dist/document.js b/dist/document.js index b833c59..273ae89 100644 --- a/dist/document.js +++ b/dist/document.js @@ -64,8 +64,7 @@ class Document { enumerable: false // do not expose as object key }); - this._purge(); - this._define(); + this.define(); this.populate(data); } @@ -73,7 +72,7 @@ class Document { * Defines class fields for all fields in schema. */ - _define() { + define() { let fields = this._schema.fields; @@ -185,7 +184,7 @@ class Document { * Deletes all class fields. */ - _purge() { + purge() { let names = (0, _keys2.default)(this); names.forEach(name => this._purgeField(name)); diff --git a/dist/schema.js b/dist/schema.js index ad4ff07..2c2ee1f 100644 --- a/dist/schema.js +++ b/dist/schema.js @@ -43,7 +43,13 @@ function isValidMode(mode) { class Schema { - constructor(_ref) { + /* + * Class constructor. + */ + + constructor() { + var _ref = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; + var _ref$mode = _ref.mode; let mode = _ref$mode === undefined ? modes.STRICT : _ref$mode; var _ref$fields = _ref.fields; diff --git a/package.json b/package.json index fb8f26b..54a3784 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.4.5", + "version": "0.4.6", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/document.js b/src/document.js index c6ea0e6..31d950c 100644 --- a/src/document.js +++ b/src/document.js @@ -37,8 +37,7 @@ export class Document { enumerable: false // do not expose as object key }); - this._purge(); - this._define(); + this.define(); this.populate(data); } @@ -46,7 +45,7 @@ export class Document { * Defines class fields for all fields in schema. */ - _define() { + define() { let {fields} = this._schema; for (let name in fields) { @@ -144,7 +143,7 @@ export class Document { * Deletes all class fields. */ - _purge() { + purge() { let names = Object.keys(this); names.forEach((name) => this._purgeField(name)); diff --git a/src/schema.js b/src/schema.js index 3fec632..6f42540 100644 --- a/src/schema.js +++ b/src/schema.js @@ -28,7 +28,11 @@ export function isValidMode(mode) { export class Schema { - constructor({mode=modes.STRICT, fields={}, validator={}}) { + /* + * Class constructor. + */ + + constructor({mode=modes.STRICT, fields={}, validator={}}={}) { if (!isValidMode(mode)) { throw new Error(`Unknown schema mode ${mode}`); } From 606af8b9616adebf37abf9f192a914be34317928 Mon Sep 17 00:00:00 2001 From: xpeper Date: Wed, 7 Sep 2016 23:02:36 +0200 Subject: [PATCH 026/219] readme update --- README.md | 60 +++++++++++++++++++++++++++++++++------------------- package.json | 6 +++--- 2 files changed, 41 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 7a42091..d2b1670 100644 --- a/README.md +++ b/README.md @@ -65,40 +65,56 @@ await user.isValid(); // -> true ## API +This package consists of two core classes. The `Schema` class represents a configuration object and the `Document` represents a data object defined by the Schema. + +This package also integrates [*typeable.js*](https://github.com/xpepermint/typeable.js) module for type casting and [*validatable.js*](https://github.com/xpepermint/validatablejs) for validating fields. + ### Schema -**new Schema({mode, validator, fields})** +Schema represents a configuration object which configures the `Document`. It holds information about fields, type casting, how fields are validated and what the default values are. + +A Schema can also be used as a custom type object. This means that you can create a nested data structure by setting a schema instance for a field `type`. + +**Schema({fields, mode, validator})** > A class for defining document structure. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ -| mode | String | No | strict | A schema type (use `relaxed` to allow dynamic fields). -| validator | Object | No | using [validatablejs](https://github.com/xpepermint/validatablejs) defaults | Object with custom validators (this variable is merged with built-in validators thus you can override a validator key if you need to). -| fields | Object | Yes | {} | An object with fields definition. +| fields | Object | Yes | - | An object with fields definition. +| mode | String | No | strict | A schema type (use `relaxed` to allow dynamic fields not defined by the schema). +| validator | Object | No | validatablejs defaults | Configuration options for [validatablejs](https://github.com/xpepermint/validatablejs). ```js -let fields = { // schema fields definition - name: { // field name holding a field definition - type: 'string', // field type - defaultValue: 'John Smith', // default field value - validations: { // field validations - presence: { // validator name - message: 'is required' // validator options + +new Schema({ + fields: { // schema fields definition + name: { // field name holding a field definition + type: 'string', // field data type provided by the typeable.js + defaultValue: 'John Smith', // default field value + validations: { // field validations + presence: { // validator name + message: 'is required' // validator options + } } - } + }, }, -}; + mode: 'strict', // schema mode + validator: {} // validatablejs configuration options (see the package page for details) +}); ``` -This package integrates [typeablejs](https://github.com/xpepermint/typeablejs) module for type casting and [validatablejs](https://github.com/xpepermint/validatablejs) for field value validation. See these packages for available configuration options and other details. +This package uses [*typeable.js*](https://github.com/xpepermint/typeable.js) for data type casting. Many common data types and array types are supported. Please check package's website for a list of supported types and further information. -### Document +By default, all fields in a schema are set to `null`. We can set a field default value by setting the `defaultValue` option. + +Field validation is handled by the [*validatable.js*](https://github.com/xpepermint/validatablejs) package. We can configure the validator by passing the `validator` option to the `Schema` class which will be passed directly to the `Validator` class. The package provides many built-in validators but allows adding custom validators and overridding existing ones. Please check package's website for details. +### Document -**new Document(schema, data)** +**Document(schema, data)** -> A class for creating a schema-based object. +> A class for creating schema-based objects. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ @@ -115,7 +131,7 @@ This package integrates [typeablejs](https://github.com/xpepermint/typeablejs) m **document.populateField(name, value)**:Any -> Sets a value of document field. +> Sets a value of a document field. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ @@ -128,7 +144,7 @@ This package integrates [typeablejs](https://github.com/xpepermint/typeablejs) m **document.clearField(name)**:Document -> Sets the `name` document field to `null`. +> Sets a document field to `null`. **document.clone()**:Document @@ -136,7 +152,7 @@ This package integrates [typeablejs](https://github.com/xpepermint/typeablejs) m **document.toObject()**:Object -> Converts the `document` into serialized data object. +> Converts a document into serialized data object. **document.validate()**:Promise @@ -180,7 +196,7 @@ This package integrates [typeablejs](https://github.com/xpepermint/typeablejs) m **document.validateField(name)**:Promise -> Validates the `name` field and returns errors. +> Validates a document field and returns errors. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ @@ -192,7 +208,7 @@ This package integrates [typeablejs](https://github.com/xpepermint/typeablejs) m **document.equalsTo(value)**:Boolean -> Returns `true` when the `value` represents an object with the same field values as the original document. +> Returns `true` when the provided `value` represents an object with the same field values as the document. **document.purge()**:Document diff --git a/package.json b/package.json index 54a3784..1ddc07f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.4.6", + "version": "0.4.7", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -49,8 +49,8 @@ }, "dependencies": { "deep-equal": "1.0.1", - "typeable": "0.3.1", - "validatable": "0.3.8", + "typeable": "0.3.2", + "validatable": "0.3.11", "validator": "5.6.0" } } From 797292ce8eb99b00e8fcfce4d9a2a8cb12040e5c Mon Sep 17 00:00:00 2001 From: xpeper Date: Wed, 7 Sep 2016 23:15:52 +0200 Subject: [PATCH 027/219] readme fix --- README.md | 22 +++++++++++----------- package.json | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index d2b1670..a319584 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ await user.isValid(); // -> true This package consists of two core classes. The `Schema` class represents a configuration object and the `Document` represents a data object defined by the Schema. -This package also integrates [*typeable.js*](https://github.com/xpepermint/typeable.js) module for type casting and [*validatable.js*](https://github.com/xpepermint/validatablejs) for validating fields. +This package also integrates [*typeable.js*](https://github.com/xpepermint/typeablejs) module for type casting and [*validatable.js*](https://github.com/xpepermint/validatablejs) for validating fields. ### Schema @@ -83,32 +83,32 @@ A Schema can also be used as a custom type object. This means that you can creat |--------|------|----------|---------|------------ | fields | Object | Yes | - | An object with fields definition. | mode | String | No | strict | A schema type (use `relaxed` to allow dynamic fields not defined by the schema). -| validator | Object | No | validatablejs defaults | Configuration options for [validatablejs](https://github.com/xpepermint/validatablejs). +| validator | Object | No | validatable.js defaults | Configuration options for the Validator class, provided by the [validatable.js](https://github.com/xpepermint/validatablejs), which is used by this package for field validation. ```js new Schema({ fields: { // schema fields definition - name: { // field name holding a field definition - type: 'string', // field data type provided by the typeable.js - defaultValue: 'John Smith', // default field value - validations: { // field validations + email: { // a field name holding a field definition + type: 'string', // a field data type provided by typeable.js + defaultValue: 'John Smith', // a default field value + validations: { // field validations provided by validatable.js presence: { // validator name - message: 'is required' // validator options + message: 'is required' // validator option } } }, }, mode: 'strict', // schema mode - validator: {} // validatablejs configuration options (see the package page for details) + validator: {} // validatable.js configuration options (see the package's page for details) }); ``` -This package uses [*typeable.js*](https://github.com/xpepermint/typeable.js) for data type casting. Many common data types and array types are supported. Please check package's website for a list of supported types and further information. +This package uses [*typeable.js*](https://github.com/xpepermint/typeablejs) for data type casting. Many common data types and array types are supported. Please check package's website for a list of supported types and further information. -By default, all fields in a schema are set to `null`. We can set a field default value by setting the `defaultValue` option. +By default, all fields in a schema are set to `null`. We can set a default value for a field by setting the `defaultValue` option. -Field validation is handled by the [*validatable.js*](https://github.com/xpepermint/validatablejs) package. We can configure the validator by passing the `validator` option to the `Schema` class which will be passed directly to the `Validator` class. The package provides many built-in validators but allows adding custom validators and overridding existing ones. Please check package's website for details. +Field validation is handled by the [*validatable.js*](https://github.com/xpepermint/validatablejs) package. We can configure the validator by passing the `validator` option to the `Schema` class which will be passed directly to the `Validator` class. The package provides many built-in validators, allows adding custom validators and overridding existing ones. Please check package's website for details. ### Document diff --git a/package.json b/package.json index 1ddc07f..d1cc31a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.4.7", + "version": "0.4.8", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { From ee8b775d14a88ee54abd74c984444c019d55dc86 Mon Sep 17 00:00:00 2001 From: xpeper Date: Thu, 8 Sep 2016 11:40:11 +0200 Subject: [PATCH 028/219] dependencies update --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index d1cc31a..49bd2e9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.4.8", + "version": "0.4.9", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -49,8 +49,8 @@ }, "dependencies": { "deep-equal": "1.0.1", - "typeable": "0.3.2", - "validatable": "0.3.11", + "typeable": "0.3.4", + "validatable": "0.3.13", "validator": "5.6.0" } } From de452e68db9246041df7b99c8cf3817769de3703 Mon Sep 17 00:00:00 2001 From: xpeper Date: Thu, 8 Sep 2016 15:12:59 +0200 Subject: [PATCH 029/219] support for typeable.js configuration, dependencies upgrade --- README.md | 17 ++++++------ dist/document.js | 28 +++++++++++--------- dist/schema.js | 14 +++++++--- package.json | 6 ++--- src/document.js | 28 +++++++++++--------- src/schema.js | 10 ++++--- tests/document/cloning.js | 4 +-- tests/document/comparison.js | 4 +-- tests/document/fields.js | 47 ++++++++++++++++++++++++--------- tests/document/serialization.js | 8 +++--- tests/document/validation.js | 10 +++---- 11 files changed, 107 insertions(+), 69 deletions(-) diff --git a/README.md b/README.md index a319584..e56162e 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ import { let bookSchema = new Schema({ fields: { title: { - type: 'string' + type: 'String' } } }); @@ -31,7 +31,7 @@ let bookSchema = new Schema({ let userSchema = new Schema({ fields: { name: { - type: 'string', + type: 'String', validations: { presence: { message: 'is required' @@ -84,13 +84,13 @@ A Schema can also be used as a custom type object. This means that you can creat | fields | Object | Yes | - | An object with fields definition. | mode | String | No | strict | A schema type (use `relaxed` to allow dynamic fields not defined by the schema). | validator | Object | No | validatable.js defaults | Configuration options for the Validator class, provided by the [validatable.js](https://github.com/xpepermint/validatablejs), which is used by this package for field validation. - +| type | Object | No | typeable.js defaults | Configuration options which is passed directly to the the `cast` method provided by the [validatable.js](https://github.com/xpepermint/validatablejs), which is used by this package for field data type casting. ```js new Schema({ fields: { // schema fields definition email: { // a field name holding a field definition - type: 'string', // a field data type provided by typeable.js + type: 'String', // a field data type provided by typeable.js defaultValue: 'John Smith', // a default field value validations: { // field validations provided by validatable.js presence: { // validator name @@ -100,11 +100,12 @@ new Schema({ }, }, mode: 'strict', // schema mode - validator: {} // validatable.js configuration options (see the package's page for details) + validator: {}, // validatable.js configuration options (see the package's page for details) + type: {} // typeable.js configuration options (see the package's page for details) }); ``` -This package uses [*typeable.js*](https://github.com/xpepermint/typeablejs) for data type casting. Many common data types and array types are supported. Please check package's website for a list of supported types and further information. +This package uses [*typeable.js*](https://github.com/xpepermint/typeablejs) for data type casting. Many common data types and array types are supported but we can also define custom types or override existing types by setting the `type` field. Please check package's website for a list of supported types and further information. By default, all fields in a schema are set to `null`. We can set a default value for a field by setting the `defaultValue` option. @@ -135,7 +136,7 @@ Field validation is handled by the [*validatable.js*](https://github.com/xpeperm | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ -| name | string | Yes | - | Document field name. +| name | String | Yes | - | Document field name. | value | Any | Yes | - | Data object. **document.clear()**:Document @@ -200,7 +201,7 @@ Field validation is handled by the [*validatable.js*](https://github.com/xpeperm | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ -| name | string | Yes | - | Document field name. +| name | String | Yes | - | Document field name. **document.isValid()**:Promise diff --git a/dist/document.js b/dist/document.js index 273ae89..faa02fd 100644 --- a/dist/document.js +++ b/dist/document.js @@ -54,12 +54,12 @@ class Document { throw new Error(`${ this.constructor.name } expects schema to be an instance of Schema class`); } - Object.defineProperty(this, '_schema', { + Object.defineProperty(this, 'schema', { get: () => schema, enumerable: false // do not expose as object key }); - Object.defineProperty(this, '_validator', { + Object.defineProperty(this, 'validator', { value: new _validatable.Validator((0, _assign2.default)({}, schema.validator, { context: this })), enumerable: false // do not expose as object key }); @@ -73,7 +73,7 @@ class Document { */ define() { - let fields = this._schema.fields; + let fields = this.schema.fields; for (let name in fields) { @@ -107,7 +107,7 @@ class Document { set: function () { let value = arguments.length <= 0 || arguments[0] === undefined ? null : arguments[0]; - data = _this._castValue(value, definition); // value type casting + data = _this._castValue(value, definition.type); // value type casting if (definition.set) { // value transformation data = definition.set(data, _this); @@ -131,15 +131,17 @@ class Document { * Converts the `value` into specified `type`. */ - _castValue(value, _ref) { - let type = _ref.type; + _castValue(value, type) { + let options = this.schema.type; - return (0, _typeable.cast)(value, type, { - schema: value => { + options.types = (0, _assign2.default)({}, options.types, { + Schema: value => { if ((0, _typeable.isArray)(type)) type = type[0]; // in case of {type: [Schema]} return new this.constructor(type, value); } }); + + return (0, _typeable.cast)(value, type, options); } /* @@ -166,10 +168,10 @@ class Document { */ populateField(name, value) { - if (this._schema.mode === 'relaxed') { + if (this.schema.mode === 'relaxed') { this[name] = value; } else { - let names = (0, _keys2.default)(this._schema.fields); + let names = (0, _keys2.default)(this.schema.fields); let exists = names.indexOf(name) > -1; if (exists) { @@ -228,7 +230,7 @@ class Document { */ clone() { - return new this.constructor(this._schema, this.toObject()); + return new this.constructor(this.schema, this.toObject()); } /* @@ -291,7 +293,7 @@ class Document { return (0, _asyncToGenerator3.default)(function* () { let value = _this3[name]; - let definition = _this3._schema.fields[name]; + let definition = _this3.schema.fields[name]; return yield _this3._validateValue(value, definition); })(); @@ -310,7 +312,7 @@ class Document { let error = {}; - error.messages = yield _this4._validator.validate(value, validations); + error.messages = yield _this4.validator.validate(value, validations); let related = yield _this4._validateRelatedObject(value, definition); if (related) { diff --git a/dist/schema.js b/dist/schema.js index 2c2ee1f..f955806 100644 --- a/dist/schema.js +++ b/dist/schema.js @@ -50,12 +50,14 @@ class Schema { constructor() { var _ref = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; - var _ref$mode = _ref.mode; - let mode = _ref$mode === undefined ? modes.STRICT : _ref$mode; var _ref$fields = _ref.fields; let fields = _ref$fields === undefined ? {} : _ref$fields; + var _ref$mode = _ref.mode; + let mode = _ref$mode === undefined ? modes.STRICT : _ref$mode; var _ref$validator = _ref.validator; let validator = _ref$validator === undefined ? {} : _ref$validator; + var _ref$type = _ref.type; + let type = _ref$type === undefined ? {} : _ref$type; if (!isValidMode(mode)) { throw new Error(`Unknown schema mode ${ mode }`); @@ -66,10 +68,14 @@ class Schema { if (!(0, _typeable.isObject)(validator)) { throw new Error(`Schema validator key should be an Object`); } + if (!(0, _typeable.isObject)(type)) { + throw new Error(`Schema type key should be an Object`); + } - this.mode = mode; // document schema mode this.fields = fields; // document fields - this.validator = validator; // document validator configuration options + this.mode = mode; // document schema mode + this.validator = validator; // document validator configuration options for validatable.js + this.type = type; // document type configuration options for typeable.js } } diff --git a/package.json b/package.json index 49bd2e9..49494a4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.4.9", + "version": "0.4.10", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -49,8 +49,8 @@ }, "dependencies": { "deep-equal": "1.0.1", - "typeable": "0.3.4", - "validatable": "0.3.13", + "typeable": "0.5.1", + "validatable": "0.3.15", "validator": "5.6.0" } } diff --git a/src/document.js b/src/document.js index 31d950c..33ad247 100644 --- a/src/document.js +++ b/src/document.js @@ -27,12 +27,12 @@ export class Document { throw new Error(`${this.constructor.name} expects schema to be an instance of Schema class`); } - Object.defineProperty(this, '_schema', { + Object.defineProperty(this, 'schema', { get: () => schema, enumerable: false // do not expose as object key }); - Object.defineProperty(this, '_validator', { + Object.defineProperty(this, 'validator', { value: new Validator(Object.assign({}, schema.validator, {context: this})), enumerable: false // do not expose as object key }); @@ -46,7 +46,7 @@ export class Document { */ define() { - let {fields} = this._schema; + let {fields} = this.schema; for (let name in fields) { this._defineField(name, fields[name]); @@ -72,7 +72,7 @@ export class Document { } }, set: (value=null) => { - data = this._castValue(value, definition); // value type casting + data = this._castValue(value, definition.type); // value type casting if (definition.set) { // value transformation data = definition.set(data, this); } @@ -94,13 +94,17 @@ export class Document { * Converts the `value` into specified `type`. */ - _castValue(value, {type}) { - return cast(value, type, { - schema: (value) => { + _castValue(value, type) { + let options = this.schema.type; + + options.types = Object.assign({}, options.types, { + Schema: (value) => { if (isArray(type)) type = type[0]; // in case of {type: [Schema]} return new this.constructor(type, value); } }); + + return cast(value, type, options); } /* @@ -125,10 +129,10 @@ export class Document { */ populateField(name, value) { - if (this._schema.mode === 'relaxed') { + if (this.schema.mode === 'relaxed') { this[name] = value; } else { - let names = Object.keys(this._schema.fields); + let names = Object.keys(this.schema.fields); let exists = names.indexOf(name) > -1; if (exists) { @@ -187,7 +191,7 @@ export class Document { */ clone() { - return new this.constructor(this._schema, this.toObject()); + return new this.constructor(this.schema, this.toObject()); } /* @@ -243,7 +247,7 @@ export class Document { async validateField(name) { let value = this[name]; - let definition = this._schema.fields[name]; + let definition = this.schema.fields[name]; return await this._validateValue(value, definition); } @@ -256,7 +260,7 @@ export class Document { let {type, validations} = definition; let error = {}; - error.messages = await this._validator.validate(value, validations); + error.messages = await this.validator.validate(value, validations); let related = await this._validateRelatedObject(value, definition); if (related) { diff --git a/src/schema.js b/src/schema.js index 6f42540..b879313 100644 --- a/src/schema.js +++ b/src/schema.js @@ -32,7 +32,7 @@ export class Schema { * Class constructor. */ - constructor({mode=modes.STRICT, fields={}, validator={}}={}) { + constructor({fields={}, mode=modes.STRICT, validator={}, type={}}={}) { if (!isValidMode(mode)) { throw new Error(`Unknown schema mode ${mode}`); } @@ -42,10 +42,14 @@ export class Schema { if (!isObject(validator)) { throw new Error(`Schema validator key should be an Object`); } + if (!isObject(type)) { + throw new Error(`Schema type key should be an Object`); + } - this.mode = mode; // document schema mode this.fields = fields; // document fields - this.validator = validator; // document validator configuration options + this.mode = mode; // document schema mode + this.validator = validator; // document validator configuration options for validatable.js + this.type = type; // document type configuration options for typeable.js } } diff --git a/tests/document/cloning.js b/tests/document/cloning.js index 2dbf44a..02e5421 100644 --- a/tests/document/cloning.js +++ b/tests/document/cloning.js @@ -5,7 +5,7 @@ test('clone', (t) => { let bookSchema = new Schema({ fields: { title: { - type: 'string', + type: 'String', defaultValue: 100 } } @@ -13,7 +13,7 @@ test('clone', (t) => { let userSchema = new Schema({ fields: { name: { - type: 'string' + type: 'String' }, book: { type: bookSchema diff --git a/tests/document/comparison.js b/tests/document/comparison.js index 06d2a44..7c0173d 100644 --- a/tests/document/comparison.js +++ b/tests/document/comparison.js @@ -5,14 +5,14 @@ test('document comperison', (t) => { let bookSchema = new Schema({ fields: { title: { - type: 'string' + type: 'String' } } }); let userSchema = { fields: { name: { - type: 'string', + type: 'String', defaultValue: 'John' }, book: { diff --git a/tests/document/fields.js b/tests/document/fields.js index c1bac6a..24364e5 100644 --- a/tests/document/fields.js +++ b/tests/document/fields.js @@ -5,23 +5,23 @@ test('document structure type casting', (t) => { let bookSchema = new Schema({ fields: { title: { - type: 'string' + type: 'String' }, year: { - type: 'integer' + type: 'Integer' } } }); let userSchema = new Schema({ fields: { name: { - type: 'string' + type: 'String' }, age: { - type: 'integer' + type: 'Integer' }, enabled: { - type: 'boolean' + type: 'Boolean' }, book: { type: bookSchema @@ -30,7 +30,7 @@ test('document structure type casting', (t) => { type: [bookSchema] }, tags: { - type: ['string'] + type: ['String'] }, keywords: { type: [] @@ -65,11 +65,32 @@ test('document structure type casting', (t) => { t.deepEqual(user.keywords, ['foo', 'bar', 100, null]); }); +test('document custom types', (t) => { + let userSchema = new Schema({ + fields: { + name: { + type: 'cool' + } + }, + type: { + types: { + cool: (v) => `${v}-cool` + } + } + }); + let data = { + name: 100 + }; + let user = new Document(userSchema, data); + + t.is(user.name, '100-cool'); +}); + test('document field default value', (t) => { let bookSchema = new Schema({ fields: { title: { - type: 'string', + type: 'String', defaultValue: 100 } } @@ -77,15 +98,15 @@ test('document field default value', (t) => { let userSchema = new Schema({ fields: { name: { - type: 'string', + type: 'String', defaultValue: 100 }, age: { - type: 'integer', + type: 'Integer', defaultValue: '35' }, enabled: { - type: 'boolean', + type: 'Boolean', defaultValue: (ctx) => true }, book: { @@ -122,7 +143,7 @@ test('document field value transformation', (t) => { let userSchema = new Schema({ fields: { name: { - type: 'string', + type: 'String', defaultValue: 100, get: (value, ctx) => `${value}-get`, set: (value, ctx) => `${value}-set` @@ -139,7 +160,7 @@ test('document with strict mode schema', (t) => { mode: 'strict', fields: { name: { - type: 'string', + type: 'String', defaultValue: 100 } } @@ -158,7 +179,7 @@ test('clearing document fields', (t) => { let userSchema = new Schema({ fields: { name: { - type: 'string', + type: 'String', defaultValue: 'John' } } diff --git a/tests/document/serialization.js b/tests/document/serialization.js index 691e98a..4cb4078 100644 --- a/tests/document/serialization.js +++ b/tests/document/serialization.js @@ -5,24 +5,24 @@ test('toObject', (t) => { let bookSchema = new Schema({ fields: { title: { - type: 'string', + type: 'String', defaultValue: 100 }, year: { - type: 'integer' + type: 'Integer' } } }); let userSchema = new Schema({ fields: { name: { - type: 'string' + type: 'String' }, age: { type: 'float' }, enabled: { - type: 'boolean' + type: 'Boolean' }, newBook: { type: bookSchema diff --git a/tests/document/validation.js b/tests/document/validation.js index 182bff1..0bf3b3b 100644 --- a/tests/document/validation.js +++ b/tests/document/validation.js @@ -5,20 +5,20 @@ test('validate', async (t) => { let bookSchema = new Schema({ fields: { title: { - type: 'string', + type: 'String', validations: { presence: {message: 'is required'} } }, year: { - type: 'integer' + type: 'Integer' } } }); let userSchema = new Schema({ fields: { name: { - type: 'string', + type: 'String', validations: { presence: {message: 'is required'} } @@ -107,7 +107,7 @@ test('isValid', async (t) => { let bookSchema = new Schema({ fields: { title: { - type: 'string', + type: 'String', validations: { presence: {message: 'is required'} } @@ -117,7 +117,7 @@ test('isValid', async (t) => { let userSchema = new Schema({ fields: { name: { - type: 'string', + type: 'String', validations: { presence: {message: 'is required'} } From 3d335f7382b46fbcb1bbf6ecd625799015031bef Mon Sep 17 00:00:00 2001 From: xpeper Date: Thu, 8 Sep 2016 15:26:48 +0200 Subject: [PATCH 030/219] readme fix --- README.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e56162e..2fcd062 100644 --- a/README.md +++ b/README.md @@ -84,7 +84,7 @@ A Schema can also be used as a custom type object. This means that you can creat | fields | Object | Yes | - | An object with fields definition. | mode | String | No | strict | A schema type (use `relaxed` to allow dynamic fields not defined by the schema). | validator | Object | No | validatable.js defaults | Configuration options for the Validator class, provided by the [validatable.js](https://github.com/xpepermint/validatablejs), which is used by this package for field validation. -| type | Object | No | typeable.js defaults | Configuration options which is passed directly to the the `cast` method provided by the [validatable.js](https://github.com/xpepermint/validatablejs), which is used by this package for field data type casting. +| type | Object | No | typeable.js defaults | Configuration options which is passed directly to the the `cast` method provided by the [typeable.js](https://github.com/xpepermint/typeablejs), which is used by this package for field data type casting. ```js new Schema({ diff --git a/package.json b/package.json index 49494a4..23ef086 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.4.10", + "version": "0.4.11", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { From 1c8f6511b7fc398635f23dffdb6bc0d00cec0bf5 Mon Sep 17 00:00:00 2001 From: xpeper Date: Fri, 9 Sep 2016 15:09:27 +0200 Subject: [PATCH 031/219] dependencies update --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 23ef086..fa97219 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.4.11", + "version": "0.4.12", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -50,7 +50,7 @@ "dependencies": { "deep-equal": "1.0.1", "typeable": "0.5.1", - "validatable": "0.3.15", + "validatable": "0.3.18", "validator": "5.6.0" } } From aa192242f43c42297e871b548ba241486f9fbf59 Mon Sep 17 00:00:00 2001 From: xpeper Date: Fri, 9 Sep 2016 16:24:39 +0200 Subject: [PATCH 032/219] renaming validator/type key options --- README.md | 20 ++++++++++---------- dist/document.js | 9 ++++----- dist/schema.js | 20 ++++++++++---------- package.json | 2 +- src/document.js | 10 +++++----- src/schema.js | 14 +++++++------- tests/document/fields.js | 2 +- tests/document/validation.js | 20 ++++++++++---------- 8 files changed, 48 insertions(+), 49 deletions(-) diff --git a/README.md b/README.md index 2fcd062..e0a71b6 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ let userSchema = new Schema({ fields: { name: { type: 'String', - validations: { + validate: { presence: { message: 'is required' } @@ -40,7 +40,7 @@ let userSchema = new Schema({ }, books: { type: [bookSchema], - validations: { + validate: { presence: { message: 'is required' } @@ -75,7 +75,7 @@ Schema represents a configuration object which configures the `Document`. It hol A Schema can also be used as a custom type object. This means that you can create a nested data structure by setting a schema instance for a field `type`. -**Schema({fields, mode, validator})** +**Schema({fields, mode, validatorOptions, typeOptions})** > A class for defining document structure. @@ -83,8 +83,8 @@ A Schema can also be used as a custom type object. This means that you can creat |--------|------|----------|---------|------------ | fields | Object | Yes | - | An object with fields definition. | mode | String | No | strict | A schema type (use `relaxed` to allow dynamic fields not defined by the schema). -| validator | Object | No | validatable.js defaults | Configuration options for the Validator class, provided by the [validatable.js](https://github.com/xpepermint/validatablejs), which is used by this package for field validation. -| type | Object | No | typeable.js defaults | Configuration options which is passed directly to the the `cast` method provided by the [typeable.js](https://github.com/xpepermint/typeablejs), which is used by this package for field data type casting. +| validatorOptions | Object | No | validatable.js defaults | Configuration options for the `Validator` class, provided by the [validatable.js](https://github.com/xpepermint/validatablejs), which is used for field validation. +| typeOptions | Object | No | typeable.js defaults | Configuration options for the `cast` method provided by the [typeable.js](https://github.com/xpepermint/typeablejs), which is used for data type casting. ```js new Schema({ @@ -92,7 +92,7 @@ new Schema({ email: { // a field name holding a field definition type: 'String', // a field data type provided by typeable.js defaultValue: 'John Smith', // a default field value - validations: { // field validations provided by validatable.js + validate: { // field validations provided by validatable.js presence: { // validator name message: 'is required' // validator option } @@ -100,16 +100,16 @@ new Schema({ }, }, mode: 'strict', // schema mode - validator: {}, // validatable.js configuration options (see the package's page for details) - type: {} // typeable.js configuration options (see the package's page for details) + validatorOptions: {}, // validatable.js configuration options (see the package's page for details) + typeOptions: {} // typeable.js configuration options (see the package's page for details) }); ``` -This package uses [*typeable.js*](https://github.com/xpepermint/typeablejs) for data type casting. Many common data types and array types are supported but we can also define custom types or override existing types by setting the `type` field. Please check package's website for a list of supported types and further information. +This package uses [*typeable.js*](https://github.com/xpepermint/typeablejs) for data type casting. Many common data types and array types are supported but we can also define custom types or override existing types through `typeOptions` key. Please check package's website for a list of supported types and further information. By default, all fields in a schema are set to `null`. We can set a default value for a field by setting the `defaultValue` option. -Field validation is handled by the [*validatable.js*](https://github.com/xpepermint/validatablejs) package. We can configure the validator by passing the `validator` option to the `Schema` class which will be passed directly to the `Validator` class. The package provides many built-in validators, allows adding custom validators and overridding existing ones. Please check package's website for details. +Field validation is handled by the [*validatable.js*](https://github.com/xpepermint/validatablejs) package. We can configure the validator by passing the `validatorOptions` option to our schema which will be passed directly to the `Validator` class. The package provides many built-in validators, allows adding custom validators and overriding existing ones. Please check package's website for details. ### Document diff --git a/dist/document.js b/dist/document.js index faa02fd..932c9c3 100644 --- a/dist/document.js +++ b/dist/document.js @@ -60,7 +60,7 @@ class Document { }); Object.defineProperty(this, 'validator', { - value: new _validatable.Validator((0, _assign2.default)({}, schema.validator, { context: this })), + value: new _validatable.Validator((0, _assign2.default)({}, schema.validatorOptions, { context: this })), enumerable: false // do not expose as object key }); @@ -132,7 +132,7 @@ class Document { */ _castValue(value, type) { - let options = this.schema.type; + let options = this.schema.typeOptions; options.types = (0, _assign2.default)({}, options.types, { Schema: value => { @@ -308,11 +308,11 @@ class Document { return (0, _asyncToGenerator3.default)(function* () { let type = definition.type; - let validations = definition.validations; + let validate = definition.validate; let error = {}; - error.messages = yield _this4.validator.validate(value, validations); + error.messages = yield _this4.validator.validate(value, validate); let related = yield _this4._validateRelatedObject(value, definition); if (related) { @@ -334,7 +334,6 @@ class Document { return (0, _asyncToGenerator3.default)(function* () { let type = definition.type; - let validations = definition.validations; if (!value) { diff --git a/dist/schema.js b/dist/schema.js index f955806..723bca2 100644 --- a/dist/schema.js +++ b/dist/schema.js @@ -54,10 +54,10 @@ class Schema { let fields = _ref$fields === undefined ? {} : _ref$fields; var _ref$mode = _ref.mode; let mode = _ref$mode === undefined ? modes.STRICT : _ref$mode; - var _ref$validator = _ref.validator; - let validator = _ref$validator === undefined ? {} : _ref$validator; - var _ref$type = _ref.type; - let type = _ref$type === undefined ? {} : _ref$type; + var _ref$validatorOptions = _ref.validatorOptions; + let validatorOptions = _ref$validatorOptions === undefined ? {} : _ref$validatorOptions; + var _ref$typeOptions = _ref.typeOptions; + let typeOptions = _ref$typeOptions === undefined ? {} : _ref$typeOptions; if (!isValidMode(mode)) { throw new Error(`Unknown schema mode ${ mode }`); @@ -65,17 +65,17 @@ class Schema { if (!(0, _typeable.isObject)(fields)) { throw new Error(`Schema fields key should be an Object`); } - if (!(0, _typeable.isObject)(validator)) { - throw new Error(`Schema validator key should be an Object`); + if (!(0, _typeable.isObject)(validatorOptions)) { + throw new Error(`Schema validatorOptions key should be an Object`); } - if (!(0, _typeable.isObject)(type)) { - throw new Error(`Schema type key should be an Object`); + if (!(0, _typeable.isObject)(typeOptions)) { + throw new Error(`Schema typeOptions key should be an Object`); } this.fields = fields; // document fields this.mode = mode; // document schema mode - this.validator = validator; // document validator configuration options for validatable.js - this.type = type; // document type configuration options for typeable.js + this.validatorOptions = validatorOptions; // options for validatable.js + this.typeOptions = typeOptions; // options for typeable.js } } diff --git a/package.json b/package.json index fa97219..bf4ed0e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.4.12", + "version": "0.4.13", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/document.js b/src/document.js index 33ad247..f6c4e6b 100644 --- a/src/document.js +++ b/src/document.js @@ -33,7 +33,7 @@ export class Document { }); Object.defineProperty(this, 'validator', { - value: new Validator(Object.assign({}, schema.validator, {context: this})), + value: new Validator(Object.assign({}, schema.validatorOptions, {context: this})), enumerable: false // do not expose as object key }); @@ -95,7 +95,7 @@ export class Document { */ _castValue(value, type) { - let options = this.schema.type; + let options = this.schema.typeOptions; options.types = Object.assign({}, options.types, { Schema: (value) => { @@ -257,10 +257,10 @@ export class Document { */ async _validateValue(value, definition) { - let {type, validations} = definition; + let {type, validate} = definition; let error = {}; - error.messages = await this.validator.validate(value, validations); + error.messages = await this.validator.validate(value, validate); let related = await this._validateRelatedObject(value, definition); if (related) { @@ -280,7 +280,7 @@ export class Document { */ async _validateRelatedObject(value, definition) { - let {type, validations} = definition; + let {type} = definition; if (!value) { return undefined; diff --git a/src/schema.js b/src/schema.js index b879313..7acf732 100644 --- a/src/schema.js +++ b/src/schema.js @@ -32,24 +32,24 @@ export class Schema { * Class constructor. */ - constructor({fields={}, mode=modes.STRICT, validator={}, type={}}={}) { + constructor({fields={}, mode=modes.STRICT, validatorOptions={}, typeOptions={}}={}) { if (!isValidMode(mode)) { throw new Error(`Unknown schema mode ${mode}`); } if (!isObject(fields)) { throw new Error(`Schema fields key should be an Object`); } - if (!isObject(validator)) { - throw new Error(`Schema validator key should be an Object`); + if (!isObject(validatorOptions)) { + throw new Error(`Schema validatorOptions key should be an Object`); } - if (!isObject(type)) { - throw new Error(`Schema type key should be an Object`); + if (!isObject(typeOptions)) { + throw new Error(`Schema typeOptions key should be an Object`); } this.fields = fields; // document fields this.mode = mode; // document schema mode - this.validator = validator; // document validator configuration options for validatable.js - this.type = type; // document type configuration options for typeable.js + this.validatorOptions = validatorOptions; // options for validatable.js + this.typeOptions = typeOptions; // options for typeable.js } } diff --git a/tests/document/fields.js b/tests/document/fields.js index 24364e5..70c20f9 100644 --- a/tests/document/fields.js +++ b/tests/document/fields.js @@ -72,7 +72,7 @@ test('document custom types', (t) => { type: 'cool' } }, - type: { + typeOptions: { types: { cool: (v) => `${v}-cool` } diff --git a/tests/document/validation.js b/tests/document/validation.js index 0bf3b3b..ca7d2b5 100644 --- a/tests/document/validation.js +++ b/tests/document/validation.js @@ -6,7 +6,7 @@ test('validate', async (t) => { fields: { title: { type: 'String', - validations: { + validate: { presence: {message: 'is required'} } }, @@ -19,31 +19,31 @@ test('validate', async (t) => { fields: { name: { type: 'String', - validations: { + validate: { presence: {message: 'is required'} } }, newBook: { type: bookSchema, - validations: { + validate: { presence: {message: 'is required'} } }, newBooks: { type: [bookSchema], - validations: { + validate: { presence: {message: 'is required'} } }, oldBook: { type: bookSchema, - validations: { + validate: { presence: {message: 'is required'} } }, oldBooks: { type: [bookSchema], - validations: { + validate: { presence: {message: 'is required'} } } @@ -108,7 +108,7 @@ test('isValid', async (t) => { fields: { title: { type: 'String', - validations: { + validate: { presence: {message: 'is required'} } }, @@ -118,19 +118,19 @@ test('isValid', async (t) => { fields: { name: { type: 'String', - validations: { + validate: { presence: {message: 'is required'} } }, book: { type: bookSchema, - validations: { + validate: { presence: {message: 'is required'} } }, books: { type: [bookSchema], - validations: { + validate: { presence: {message: 'is required'} } } From ab01beb1dc7913b77418cbf6cccb95ce3430c1f6 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 10 Sep 2016 08:50:17 +0200 Subject: [PATCH 033/219] refactoring for easier methods overriding --- README.md | 21 ---------- dist/document.js | 104 +++++++++++++++++++++++++++++++++-------------- package.json | 2 +- src/document.js | 76 ++++++++++++++++++++++++++-------- 4 files changed, 132 insertions(+), 71 deletions(-) diff --git a/README.md b/README.md index e0a71b6..e570243 100644 --- a/README.md +++ b/README.md @@ -130,21 +130,8 @@ Field validation is handled by the [*validatable.js*](https://github.com/xpeperm |--------|------|----------|---------|------------ | data | Object | Yes | - | Data object. -**document.populateField(name, value)**:Any - -> Sets a value of a document field. - -| Option | Type | Required | Default | Description -|--------|------|----------|---------|------------ -| name | String | Yes | - | Document field name. -| value | Any | Yes | - | Data object. - **document.clear()**:Document -> Sets all document fields to `null`. - -**document.clearField(name)**:Document - > Sets a document field to `null`. **document.clone()**:Document @@ -195,14 +182,6 @@ Field validation is handled by the [*validatable.js*](https://github.com/xpeperm } ``` -**document.validateField(name)**:Promise - -> Validates a document field and returns errors. - -| Option | Type | Required | Default | Description -|--------|------|----------|---------|------------ -| name | String | Yes | - | Document field name. - **document.isValid()**:Promise > Returns `true` when all document fields are valid. diff --git a/dist/document.js b/dist/document.js index 932c9c3..0764aac 100644 --- a/dist/document.js +++ b/dist/document.js @@ -73,26 +73,32 @@ class Document { */ define() { + return this._defineFields(); + } + + /* + * Defines all schema fields. + */ + + _defineFields() { let fields = this.schema.fields; for (let name in fields) { - this._defineField(name, fields[name]); + this._defineField(name); } return this; } /* - * Defines a class field from the provided `name` and - * field definition object. + * Defines a schema field by name. */ _defineField(name) { var _this = this; - let definition = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; - + let definition = this.schema.fields[name]; let data; (0, _defineProperty2.default)(this, name, { // field definition @@ -145,29 +151,38 @@ class Document { } /* - * Sets values of class properties with values provided by - * the `data` object. + * Sets field values from the provided by data object. */ populate() { let data = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; + return this._populateFields(data); + } + + /* + * Sets field values from the provided by data object. + */ + + _populateFields() { + let data = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; + if (!(0, _typeable.isObject)(data)) { - throw new Error(`Only Object can populate a ${ this.constructor.name }`); + throw new Error(`Only object can populate a ${ this.constructor.name.toLowerCase() }`); } for (let name in data) { - this.populateField(name, data[name]); + this._populateField(name, data[name]); } return this; } /* - * Sets a value of a single class property. + * Sets a value of a field by name. */ - populateField(name, value) { + _populateField(name, value) { if (this.schema.mode === 'relaxed') { this[name] = value; } else { @@ -187,6 +202,14 @@ class Document { */ purge() { + return this._purgeFields(); + } + + /* + * Deletes all class fields. + */ + + _purgeFields() { let names = (0, _keys2.default)(this); names.forEach(name => this._purgeField(name)); @@ -206,10 +229,18 @@ class Document { */ clear() { + return this._clearFields(); + } + + /* + * Remove values of all class fields. + */ + + _clearFields() { let names = (0, _keys2.default)(this); for (let name of names) { - this.clearField(name); + this._clearField(name); } return this; @@ -219,7 +250,7 @@ class Document { * Removes a value of a field with `name`. */ - clearField(name) { + _clearField(name) { this[name] = null; return this[name]; } @@ -269,12 +300,24 @@ class Document { validate() { var _this2 = this; + return (0, _asyncToGenerator3.default)(function* () { + return yield _this2._validateFields(); + })(); + } + + /* + * Validates all class fields and returns errors. + */ + + _validateFields() { + var _this3 = this; + return (0, _asyncToGenerator3.default)(function* () { let errors = {}; - for (let name in _this2) { + for (let name in _this3) { - let error = yield _this2.validateField(name); + let error = yield _this3._validateField(name); if (!(0, _typeable.isUndefined)(error)) { errors[name] = error; } @@ -288,14 +331,14 @@ class Document { * Validates a single class field with `name` and returns errors. */ - validateField(name) { - var _this3 = this; + _validateField(name) { + var _this4 = this; return (0, _asyncToGenerator3.default)(function* () { - let value = _this3[name]; - let definition = _this3.schema.fields[name]; + let value = _this4[name]; + let definition = _this4.schema.fields[name]; - return yield _this3._validateValue(value, definition); + return yield _this4._validateValue(value, definition); })(); } @@ -304,7 +347,7 @@ class Document { */ _validateValue(value, definition) { - var _this4 = this; + var _this5 = this; return (0, _asyncToGenerator3.default)(function* () { let type = definition.type; @@ -312,14 +355,14 @@ class Document { let error = {}; - error.messages = yield _this4.validator.validate(value, validate); + error.messages = yield _this5.validator.validate(value, validate); - let related = yield _this4._validateRelatedObject(value, definition); + let related = yield _this5._validateRelatedObject(value, definition); if (related) { error.related = related; } - error.isValid = error.messages.length === 0 && _this4._isRelatedObjectValid(related); + error.isValid = error.messages.length === 0 && _this5._isRelatedObjectValid(related); return error.isValid ? undefined : error; })(); @@ -330,7 +373,7 @@ class Document { */ _validateRelatedObject(value, definition) { - var _this5 = this; + var _this6 = this; return (0, _asyncToGenerator3.default)(function* () { let type = definition.type; @@ -339,19 +382,19 @@ class Document { if (!value) { return undefined; } else if (type instanceof _schema.Schema) { - return yield value.validate(); + return yield value._validateFields(); } else if ((0, _typeable.isArray)(type) && (0, _typeable.isArray)(value)) { let aaa = []; for (let v of value) { if (type[0] instanceof _schema.Schema) { if (v) { - aaa.push((yield v.validate())); + aaa.push((yield v._validateFields())); } else { aaa.push(undefined); } } else { - aaa.push((yield _this5._validateValue(v, definition))); + aaa.push((yield _this6._validateValue(v, definition))); } } return aaa; @@ -380,11 +423,10 @@ class Document { */ isValid() { - var _this6 = this; + var _this7 = this; return (0, _asyncToGenerator3.default)(function* () { - let errors = yield _this6.validate(); - return (0, _typeable.isAbsent)(errors); + return (0, _typeable.isAbsent)((yield _this7._validateFields())); })(); } diff --git a/package.json b/package.json index bf4ed0e..0ee927d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.4.13", + "version": "0.4.14", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/document.js b/src/document.js index f6c4e6b..cc3469f 100644 --- a/src/document.js +++ b/src/document.js @@ -46,21 +46,29 @@ export class Document { */ define() { + return this._defineFields(); + } + + /* + * Defines all schema fields. + */ + + _defineFields() { let {fields} = this.schema; for (let name in fields) { - this._defineField(name, fields[name]); + this._defineField(name); } return this; } /* - * Defines a class field from the provided `name` and - * field definition object. + * Defines a schema field by name. */ - _defineField(name, definition={}) { + _defineField(name) { + let definition = this.schema.fields[name]; let data; Object.defineProperty(this, name, { // field definition @@ -108,27 +116,34 @@ export class Document { } /* - * Sets values of class properties with values provided by - * the `data` object. + * Sets field values from the provided by data object. */ populate(data={}) { + return this._populateFields(data); + } + + /* + * Sets field values from the provided by data object. + */ + + _populateFields(data={}) { if (!isObject(data)) { - throw new Error(`Only Object can populate a ${this.constructor.name}`); + throw new Error(`Only object can populate a ${this.constructor.name.toLowerCase()}`); } for (let name in data) { - this.populateField(name, data[name]); + this._populateField(name, data[name]); } return this; } /* - * Sets a value of a single class property. + * Sets a value of a field by name. */ - populateField(name, value) { + _populateField(name, value) { if (this.schema.mode === 'relaxed') { this[name] = value; } else { @@ -148,6 +163,14 @@ export class Document { */ purge() { + return this._purgeFields(); + }; + + /* + * Deletes all class fields. + */ + + _purgeFields() { let names = Object.keys(this); names.forEach((name) => this._purgeField(name)); @@ -167,10 +190,18 @@ export class Document { */ clear() { + return this._clearFields(); + } + + /* + * Remove values of all class fields. + */ + + _clearFields() { let names = Object.keys(this); for (let name of names) { - this.clearField(name); + this._clearField(name); } return this; @@ -180,7 +211,7 @@ export class Document { * Removes a value of a field with `name`. */ - clearField(name) { + _clearField(name) { this[name] = null; return this[name]; } @@ -228,11 +259,19 @@ export class Document { */ async validate() { + return await this._validateFields(); + } + + /* + * Validates all class fields and returns errors. + */ + + async _validateFields() { let errors = {}; for (let name in this) { - let error = await this.validateField(name); + let error = await this._validateField(name); if (!isUndefined(error)) { errors[name] = error; } @@ -245,7 +284,7 @@ export class Document { * Validates a single class field with `name` and returns errors. */ - async validateField(name) { + async _validateField(name) { let value = this[name]; let definition = this.schema.fields[name]; @@ -285,14 +324,14 @@ export class Document { if (!value) { return undefined; } else if (type instanceof Schema) { - return await value.validate(); + return await value._validateFields(); } else if (isArray(type) && isArray(value)) { let aaa = []; for (let v of value) { if (type[0] instanceof Schema) { if (v) { - aaa.push(await v.validate()); + aaa.push(await v._validateFields()); } else { aaa.push(undefined); } @@ -325,8 +364,9 @@ export class Document { */ async isValid() { - let errors = await this.validate(); - return isAbsent(errors); + return isAbsent( + await this._validateFields() + ); } /* From cf44cae6900daf52aef5fc186f758b8505fe8f5d Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 10 Sep 2016 08:53:22 +0200 Subject: [PATCH 034/219] version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0ee927d..b562cd3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.4.14", + "version": "0.4.15", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { From ac4780fef5b9debbe786f11f9af4923881a5fe39 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 10 Sep 2016 11:15:27 +0200 Subject: [PATCH 035/219] code refactoring --- dist/document.js | 44 ++++++++++++++++++++---------------- package.json | 2 +- src/document.js | 44 +++++++++++++++++++++--------------- tests/document/comparison.js | 2 +- tests/document/fields.js | 18 +++++++-------- 5 files changed, 62 insertions(+), 48 deletions(-) diff --git a/dist/document.js b/dist/document.js index 0764aac..dae228f 100644 --- a/dist/document.js +++ b/dist/document.js @@ -293,6 +293,14 @@ class Document { } } + /* + * Returns a new instance of validator. + */ + + _createValidator() { + new _validatable.Validator((0, _assign2.default)({}, this.schema.validatorOptions, { context: this })); + } + /* * Validates all class fields and returns errors. */ @@ -313,17 +321,17 @@ class Document { var _this3 = this; return (0, _asyncToGenerator3.default)(function* () { - let errors = {}; + let data = {}; - for (let name in _this3) { + for (let name in _this3.schema.fields) { - let error = yield _this3._validateField(name); - if (!(0, _typeable.isUndefined)(error)) { - errors[name] = error; + let info = yield _this3._validateField(name); + if (!(0, _typeable.isUndefined)(info)) { + data[name] = info; } } - return errors; + return data; })(); } @@ -350,21 +358,19 @@ class Document { var _this5 = this; return (0, _asyncToGenerator3.default)(function* () { - let type = definition.type; - let validate = definition.validate; - - let error = {}; + let data = {}; - error.messages = yield _this5.validator.validate(value, validate); + let validator = _this5._createValidator(); + data.messages = yield _this5.validator.validate(value, definition.validate); let related = yield _this5._validateRelatedObject(value, definition); if (related) { - error.related = related; + data.related = related; } - error.isValid = error.messages.length === 0 && _this5._isRelatedObjectValid(related); + data.isValid = data.messages.length === 0 && _this5._isRelatedObjectValid(related); - return error.isValid ? undefined : error; + return data.isValid ? undefined : data; })(); } @@ -384,20 +390,20 @@ class Document { } else if (type instanceof _schema.Schema) { return yield value._validateFields(); } else if ((0, _typeable.isArray)(type) && (0, _typeable.isArray)(value)) { - let aaa = []; + let items = []; for (let v of value) { if (type[0] instanceof _schema.Schema) { if (v) { - aaa.push((yield v._validateFields())); + items.push((yield v._validateFields())); } else { - aaa.push(undefined); + items.push(undefined); } } else { - aaa.push((yield _this6._validateValue(v, definition))); + items.push((yield _this6._validateValue(v, definition))); } } - return aaa; + return items; } else { return undefined; } diff --git a/package.json b/package.json index b562cd3..c482fcc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.4.15", + "version": "0.4.16", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/document.js b/src/document.js index cc3469f..9405e3d 100644 --- a/src/document.js +++ b/src/document.js @@ -254,6 +254,14 @@ export class Document { } }; + /* + * Returns a new instance of validator. + */ + + _createValidator() { + new Validator(Object.assign({}, this.schema.validatorOptions, {context: this})); + } + /* * Validates all class fields and returns errors. */ @@ -267,17 +275,17 @@ export class Document { */ async _validateFields() { - let errors = {}; + let data = {}; - for (let name in this) { + for (let name in this.schema.fields) { - let error = await this._validateField(name); - if (!isUndefined(error)) { - errors[name] = error; + let info = await this._validateField(name); + if (!isUndefined(info)) { + data[name] = info; } } - return errors; + return data; } /* @@ -296,22 +304,22 @@ export class Document { */ async _validateValue(value, definition) { - let {type, validate} = definition; - let error = {}; + let data = {}; - error.messages = await this.validator.validate(value, validate); + let validator = this._createValidator(); + data.messages = await this.validator.validate(value, definition.validate); let related = await this._validateRelatedObject(value, definition); if (related) { - error.related = related; + data.related = related; } - error.isValid = ( - error.messages.length === 0 + data.isValid = ( + data.messages.length === 0 && this._isRelatedObjectValid(related) ); - return error.isValid ? undefined : error; + return data.isValid ? undefined : data; } /* @@ -326,20 +334,20 @@ export class Document { } else if (type instanceof Schema) { return await value._validateFields(); } else if (isArray(type) && isArray(value)) { - let aaa = []; + let items = []; for (let v of value) { if (type[0] instanceof Schema) { if (v) { - aaa.push(await v._validateFields()); + items.push(await v._validateFields()); } else { - aaa.push(undefined); + items.push(undefined); } } else { - aaa.push(await this._validateValue(v, definition)); + items.push(await this._validateValue(v, definition)); } } - return aaa; + return items; } else { return undefined; } diff --git a/tests/document/comparison.js b/tests/document/comparison.js index 7c0173d..bd997b2 100644 --- a/tests/document/comparison.js +++ b/tests/document/comparison.js @@ -1,7 +1,7 @@ const test = require('ava'); const {Document, Schema} = require('../../dist'); -test('document comperison', (t) => { +test('comperison', (t) => { let bookSchema = new Schema({ fields: { title: { diff --git a/tests/document/fields.js b/tests/document/fields.js index 70c20f9..5e1acef 100644 --- a/tests/document/fields.js +++ b/tests/document/fields.js @@ -1,7 +1,7 @@ const test = require('ava'); const {Document, Schema} = require('../../dist'); -test('document structure type casting', (t) => { +test('structure type casting', (t) => { let bookSchema = new Schema({ fields: { title: { @@ -65,7 +65,7 @@ test('document structure type casting', (t) => { t.deepEqual(user.keywords, ['foo', 'bar', 100, null]); }); -test('document custom types', (t) => { +test('custom types', (t) => { let userSchema = new Schema({ fields: { name: { @@ -86,7 +86,7 @@ test('document custom types', (t) => { t.is(user.name, '100-cool'); }); -test('document field default value', (t) => { +test('field default value', (t) => { let bookSchema = new Schema({ fields: { title: { @@ -107,7 +107,7 @@ test('document field default value', (t) => { }, enabled: { type: 'Boolean', - defaultValue: (ctx) => true + defaultValue: () => true }, book: { type: bookSchema @@ -139,14 +139,14 @@ test('document field default value', (t) => { t.is(user1.books[1].title, '100'); }); -test('document field value transformation', (t) => { +test('field value transformation', (t) => { let userSchema = new Schema({ fields: { name: { type: 'String', defaultValue: 100, - get: (value, ctx) => `${value}-get`, - set: (value, ctx) => `${value}-set` + get: (value) => `${value}-get`, + set: (value) => `${value}-set` } } }); @@ -155,7 +155,7 @@ test('document field value transformation', (t) => { t.is(user.name, '100-set-get'); }); -test('document with strict mode schema', (t) => { +test('strict mode schema', (t) => { let userSchema = new Schema({ mode: 'strict', fields: { @@ -175,7 +175,7 @@ test('document with strict mode schema', (t) => { t.is(user.age, undefined); }); -test('clearing document fields', (t) => { +test('clearing fields', (t) => { let userSchema = new Schema({ fields: { name: { From e2fcc6114387af1b310c1c75ebceae90e24eb024 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 10 Sep 2016 16:35:33 +0200 Subject: [PATCH 036/219] refactoring --- dist/document.js | 19 +++++++++---------- package.json | 2 +- src/document.js | 19 +++++++++---------- 3 files changed, 19 insertions(+), 21 deletions(-) diff --git a/dist/document.js b/dist/document.js index dae228f..abf3e82 100644 --- a/dist/document.js +++ b/dist/document.js @@ -60,7 +60,7 @@ class Document { }); Object.defineProperty(this, 'validator', { - value: new _validatable.Validator((0, _assign2.default)({}, schema.validatorOptions, { context: this })), + value: this._createValidator(), enumerable: false // do not expose as object key }); @@ -68,6 +68,14 @@ class Document { this.populate(data); } + /* + * Returns a new instance of validator. + */ + + _createValidator() { + return new _validatable.Validator((0, _assign2.default)({}, this.schema.validatorOptions, { context: this })); + } + /* * Defines class fields for all fields in schema. */ @@ -293,14 +301,6 @@ class Document { } } - /* - * Returns a new instance of validator. - */ - - _createValidator() { - new _validatable.Validator((0, _assign2.default)({}, this.schema.validatorOptions, { context: this })); - } - /* * Validates all class fields and returns errors. */ @@ -360,7 +360,6 @@ class Document { return (0, _asyncToGenerator3.default)(function* () { let data = {}; - let validator = _this5._createValidator(); data.messages = yield _this5.validator.validate(value, definition.validate); let related = yield _this5._validateRelatedObject(value, definition); diff --git a/package.json b/package.json index c482fcc..c1b55be 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.4.16", + "version": "0.4.17", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/document.js b/src/document.js index 9405e3d..73af9b6 100644 --- a/src/document.js +++ b/src/document.js @@ -33,7 +33,7 @@ export class Document { }); Object.defineProperty(this, 'validator', { - value: new Validator(Object.assign({}, schema.validatorOptions, {context: this})), + value: this._createValidator(), enumerable: false // do not expose as object key }); @@ -41,6 +41,14 @@ export class Document { this.populate(data); } + /* + * Returns a new instance of validator. + */ + + _createValidator() { + return new Validator(Object.assign({}, this.schema.validatorOptions, {context: this})); + } + /* * Defines class fields for all fields in schema. */ @@ -254,14 +262,6 @@ export class Document { } }; - /* - * Returns a new instance of validator. - */ - - _createValidator() { - new Validator(Object.assign({}, this.schema.validatorOptions, {context: this})); - } - /* * Validates all class fields and returns errors. */ @@ -306,7 +306,6 @@ export class Document { async _validateValue(value, definition) { let data = {}; - let validator = this._createValidator(); data.messages = await this.validator.validate(value, definition.validate); let related = await this._validateRelatedObject(value, definition); From a2aebed15e586d324a396456b70a9da80fc63673 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 10 Sep 2016 19:20:48 +0200 Subject: [PATCH 037/219] optimized validation result --- dist/document.js | 8 ++++---- package.json | 2 +- src/document.js | 8 ++++---- tests/document/validation.js | 7 ------- 4 files changed, 9 insertions(+), 16 deletions(-) diff --git a/dist/document.js b/dist/document.js index abf3e82..42ee286 100644 --- a/dist/document.js +++ b/dist/document.js @@ -367,14 +367,14 @@ class Document { data.related = related; } - data.isValid = data.messages.length === 0 && _this5._isRelatedObjectValid(related); + let isValid = data.messages.length === 0 && _this5._isRelatedObjectValid(related); - return data.isValid ? undefined : data; + return isValid ? undefined : data; })(); } /* - * Validates a value agains the field `definition` object. + * Validates nested data of a value agains the field `definition` object. */ _validateRelatedObject(value, definition) { @@ -417,7 +417,7 @@ class Document { if (!value) { return true; } else if ((0, _typeable.isObject)(value)) { - return (0, _values2.default)(value).map(v => v.isValid).indexOf(false) === -1; + return (0, _values2.default)(value).map(v => v.messages.length > 0 || v.related).indexOf(true) === -1; } else if ((0, _typeable.isArray)(value)) { return value.map(v => this._isRelatedObjectValid(v)).indexOf(false) === -1; } diff --git a/package.json b/package.json index c1b55be..fc6b995 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.4.17", + "version": "0.5.0", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/document.js b/src/document.js index 73af9b6..433f919 100644 --- a/src/document.js +++ b/src/document.js @@ -313,16 +313,16 @@ export class Document { data.related = related; } - data.isValid = ( + let isValid = ( data.messages.length === 0 && this._isRelatedObjectValid(related) ); - return data.isValid ? undefined : data; + return isValid ? undefined : data; } /* - * Validates a value agains the field `definition` object. + * Validates nested data of a value agains the field `definition` object. */ async _validateRelatedObject(value, definition) { @@ -360,7 +360,7 @@ export class Document { if (!value) { return true; } else if (isObject(value)) { - return Object.values(value).map(v => v.isValid).indexOf(false) === -1; + return Object.values(value).map(v => v.messages.length > 0 || v.related).indexOf(true) === -1; } else if (isArray(value)) { return value.map(v => this._isRelatedObjectValid(v)).indexOf(false) === -1; } diff --git a/tests/document/validation.js b/tests/document/validation.js index ca7d2b5..d407ebf 100644 --- a/tests/document/validation.js +++ b/tests/document/validation.js @@ -66,35 +66,28 @@ test('validate', async (t) => { t.deepEqual(await user.validate(), { name: { - isValid: false, messages: ['is required'] }, newBook: { - isValid: false, messages: ['is required'] }, newBooks: { - isValid: false, messages: ['is required'] }, oldBook: { - isValid: false, messages: [], related: { title: { - isValid: false, messages: ['is required'] } } }, oldBooks: { - isValid: false, messages: [], related: [ undefined, { title: { - isValid: false, messages: ['is required'] } } From 17fe0fe47b68e00ca0d1cc6fe293f354b85b5224 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 10 Sep 2016 20:51:52 +0200 Subject: [PATCH 038/219] mini refactoring --- package.json | 2 +- src/document.js | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index fc6b995..99d1022 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.5.0", + "version": "0.5.1", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/document.js b/src/document.js index 433f919..c191437 100644 --- a/src/document.js +++ b/src/document.js @@ -317,7 +317,6 @@ export class Document { data.messages.length === 0 && this._isRelatedObjectValid(related) ); - return isValid ? undefined : data; } From ad921fc272602e231f70d7bc1858e17026287754 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 10 Sep 2016 21:24:13 +0200 Subject: [PATCH 039/219] readme update --- README.md | 8 +++++--- package.json | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e570243..6b8fed2 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ This package also integrates [*typeable.js*](https://github.com/xpepermint/typea Schema represents a configuration object which configures the `Document`. It holds information about fields, type casting, how fields are validated and what the default values are. -A Schema can also be used as a custom type object. This means that you can create a nested data structure by setting a schema instance for a field `type`. +A Schema can also be used as a custom type object. This way you can create a nested data structure by setting a schema instance for a field `type`. When a document is created, each schema in a tree of fields will become an instance of a Document - a tree of documents. **Schema({fields, mode, validatorOptions, typeOptions})** @@ -105,14 +105,16 @@ new Schema({ }); ``` -This package uses [*typeable.js*](https://github.com/xpepermint/typeablejs) for data type casting. Many common data types and array types are supported but we can also define custom types or override existing types through `typeOptions` key. Please check package's website for a list of supported types and further information. +This package uses [*typeable.js*](https://github.com/xpepermint/typeablejs) for data type casting. Many common data types and array types are supported but we can also define custom types or override existing types through a `typeOptions` key. Please check package's website for a list of supported types and further information. By default, all fields in a schema are set to `null`. We can set a default value for a field by setting the `defaultValue` option. -Field validation is handled by the [*validatable.js*](https://github.com/xpepermint/validatablejs) package. We can configure the validator by passing the `validatorOptions` option to our schema which will be passed directly to the `Validator` class. The package provides many built-in validators, allows adding custom validators and overriding existing ones. Please check package's website for details. +Field validation is handled by the [*validatable.js*](https://github.com/xpepermint/validatablejs) package. We can configure the package by passing the `validatorOptions` option to our schema which will be passed directly to the `Validator` class. The package provides many built-in validators, allows adding custom validators and overriding existing ones. When a document is created all validator methods share document's context thus we can write context-aware checks. Please check package's website for details. ### Document +A document is a schema enforced data object. All document properties and configuration options are defined by the schema. + **Document(schema, data)** > A class for creating schema-based objects. diff --git a/package.json b/package.json index 99d1022..a34d06e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.5.1", + "version": "0.5.2", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { From 65dc71246ed6145d812d9f341bd64cc3e5a23324 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 10 Sep 2016 21:27:29 +0200 Subject: [PATCH 040/219] vesion bump --- dist/document.js | 1 - package.json | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/dist/document.js b/dist/document.js index 42ee286..4c3974c 100644 --- a/dist/document.js +++ b/dist/document.js @@ -368,7 +368,6 @@ class Document { } let isValid = data.messages.length === 0 && _this5._isRelatedObjectValid(related); - return isValid ? undefined : data; })(); } diff --git a/package.json b/package.json index a34d06e..7631432 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.5.2", + "version": "0.5.3", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { From 3802754c8b82939883eb6f5e63ba6520d48bb24b Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 11 Sep 2016 00:46:45 +0200 Subject: [PATCH 041/219] removing populate method error --- dist/document.js | 5 ----- package.json | 2 +- src/document.js | 5 ----- 3 files changed, 1 insertion(+), 11 deletions(-) diff --git a/dist/document.js b/dist/document.js index 4c3974c..2d2db32 100644 --- a/dist/document.js +++ b/dist/document.js @@ -175,14 +175,9 @@ class Document { _populateFields() { let data = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; - if (!(0, _typeable.isObject)(data)) { - throw new Error(`Only object can populate a ${ this.constructor.name.toLowerCase() }`); - } - for (let name in data) { this._populateField(name, data[name]); } - return this; } diff --git a/package.json b/package.json index 7631432..e99c662 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.5.3", + "version": "0.5.4", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/document.js b/src/document.js index c191437..4eed665 100644 --- a/src/document.js +++ b/src/document.js @@ -136,14 +136,9 @@ export class Document { */ _populateFields(data={}) { - if (!isObject(data)) { - throw new Error(`Only object can populate a ${this.constructor.name.toLowerCase()}`); - } - for (let name in data) { this._populateField(name, data[name]); } - return this; } From 81723fb983018cc57c7c7aa02fdbc7828313fd98 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 11 Sep 2016 01:35:56 +0200 Subject: [PATCH 042/219] dependencies update --- package.json | 4 ++-- tests/document/fields.js | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index e99c662..760533d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.5.4", + "version": "0.5.5", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -49,7 +49,7 @@ }, "dependencies": { "deep-equal": "1.0.1", - "typeable": "0.5.1", + "typeable": "0.5.2", "validatable": "0.3.18", "validator": "5.6.0" } diff --git a/tests/document/fields.js b/tests/document/fields.js index 5e1acef..e90748a 100644 --- a/tests/document/fields.js +++ b/tests/document/fields.js @@ -155,6 +155,26 @@ test('field value transformation', (t) => { t.is(user.name, '100-set-get'); }); +test('relaxed mode schema', (t) => { + let userSchema = new Schema({ + mode: 'relaxed', + fields: { + name: { + type: 'String', + defaultValue: 100 + } + } + }); + let data = { + name: 'John', + age: 35.5 + }; + let user = new Document(userSchema, data); + + t.is(user.name, 'John'); + t.is(user.age, 35.5); +}); + test('strict mode schema', (t) => { let userSchema = new Schema({ mode: 'strict', From f0a1c4e9ca409d8008a8a7af9e52e1657897753e Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 11 Sep 2016 10:38:54 +0200 Subject: [PATCH 043/219] dependencies update --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 760533d..8793049 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.5.5", + "version": "0.5.6", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -50,7 +50,7 @@ "dependencies": { "deep-equal": "1.0.1", "typeable": "0.5.2", - "validatable": "0.3.18", - "validator": "5.6.0" + "validatable": "0.3.19", + "validator": "5.7.0" } } From d5aebb5c4c33d9c6d891fdabbcf5ba49f2d28b55 Mon Sep 17 00:00:00 2001 From: xpeper Date: Wed, 28 Sep 2016 19:56:20 +0200 Subject: [PATCH 044/219] dependencies --- package.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 8793049..19782a7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.5.6", + "version": "0.5.7", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -42,15 +42,15 @@ "author": "Kristijan Sedlak (Xpepermint)", "license": "MIT", "devDependencies": { - "ava": "0.16.0", - "babel-cli": "6.14.0", - "babel-plugin-transform-runtime": "6.15.0", - "babel-preset-node5": "11.1.0" + "ava": "0.16.x", + "babel-cli": "6.14.x", + "babel-plugin-transform-runtime": "6.15.x", + "babel-preset-node5": "11.1.x" }, "dependencies": { - "deep-equal": "1.0.1", - "typeable": "0.5.2", - "validatable": "0.3.19", - "validator": "5.7.0" + "deep-equal": "1.0.x", + "typeable": "0.5.x", + "validatable": "0.3.x", + "validator": "5.7.x" } } From d0734f9c9060bf9ef358b116e991fc3dc3b6c1e4 Mon Sep 17 00:00:00 2001 From: xpeper Date: Thu, 29 Sep 2016 21:13:13 +0200 Subject: [PATCH 045/219] dependencies --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 19782a7..0265609 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.5.7", + "version": "0.5.8", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -43,7 +43,7 @@ "license": "MIT", "devDependencies": { "ava": "0.16.x", - "babel-cli": "6.14.x", + "babel-cli": "6.16.x", "babel-plugin-transform-runtime": "6.15.x", "babel-preset-node5": "11.1.x" }, @@ -51,6 +51,6 @@ "deep-equal": "1.0.x", "typeable": "0.5.x", "validatable": "0.3.x", - "validator": "5.7.x" + "validator": "6.0.x" } } From 0caa602b18dfde490686ec5b0947af2d890563d8 Mon Sep 17 00:00:00 2001 From: xpeper Date: Wed, 19 Oct 2016 02:09:13 +0200 Subject: [PATCH 046/219] dependencies --- dist/document.js | 8 ++++---- dist/schema.js | 2 +- package.json | 5 ++--- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/dist/document.js b/dist/document.js index 2d2db32..85f2e8e 100644 --- a/dist/document.js +++ b/dist/document.js @@ -48,7 +48,7 @@ class Document { */ constructor(schema) { - let data = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; + let data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; if (!(schema instanceof _schema.Schema)) { throw new Error(`${ this.constructor.name } expects schema to be an instance of Schema class`); @@ -119,7 +119,7 @@ class Document { } }, set: function () { - let value = arguments.length <= 0 || arguments[0] === undefined ? null : arguments[0]; + let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; data = _this._castValue(value, definition.type); // value type casting if (definition.set) { @@ -163,7 +163,7 @@ class Document { */ populate() { - let data = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; + let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return this._populateFields(data); } @@ -173,7 +173,7 @@ class Document { */ _populateFields() { - let data = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; + let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; for (let name in data) { this._populateField(name, data[name]); diff --git a/dist/schema.js b/dist/schema.js index 723bca2..b40bf46 100644 --- a/dist/schema.js +++ b/dist/schema.js @@ -48,7 +48,7 @@ class Schema { */ constructor() { - var _ref = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; + var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var _ref$fields = _ref.fields; let fields = _ref$fields === undefined ? {} : _ref$fields; diff --git a/package.json b/package.json index 0265609..d9387a2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.5.8", + "version": "0.5.9", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -50,7 +50,6 @@ "dependencies": { "deep-equal": "1.0.x", "typeable": "0.5.x", - "validatable": "0.3.x", - "validator": "6.0.x" + "validatable": "0.3.x" } } From 6198c9faf3c78fcb8c85c4ccbfbd1fc203b6f3a3 Mon Sep 17 00:00:00 2001 From: xpeper Date: Tue, 25 Oct 2016 01:13:24 +0200 Subject: [PATCH 047/219] ready for server & client, dependencies --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index d9387a2..10e7837 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.5.9", + "version": "0.6.0", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -49,7 +49,7 @@ }, "dependencies": { "deep-equal": "1.0.x", - "typeable": "0.5.x", - "validatable": "0.3.x" + "typeable": "0.7.x", + "validatable": "0.4.x" } } From 70338d315a07258759fc1359eb3925fcd4732f9b Mon Sep 17 00:00:00 2001 From: xpeper Date: Tue, 25 Oct 2016 17:15:53 +0200 Subject: [PATCH 048/219] data normalization --- package.json | 2 +- src/document.js | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 10e7837..77e7cc0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.6.0", + "version": "0.7.0", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/document.js b/src/document.js index 4eed665..3cdc015 100644 --- a/src/document.js +++ b/src/document.js @@ -128,7 +128,9 @@ export class Document { */ populate(data={}) { - return this._populateFields(data); + return this._populateFields( + this._normalizeData(data) + ); } /* @@ -161,6 +163,14 @@ export class Document { return this[name]; } + /* + * Returns a normalized data object. + */ + + _normalizeData(data={}) { + return JSON.parse(JSON.stringify(data)); + } + /* * Deletes all class fields. */ From 209250905e47a1a4cf439887d0adfade53bb9872 Mon Sep 17 00:00:00 2001 From: xpeper Date: Tue, 25 Oct 2016 17:18:13 +0200 Subject: [PATCH 049/219] retranspiling --- dist/document.js | 16 +++++++++++++++- package.json | 2 +- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/dist/document.js b/dist/document.js index 85f2e8e..47aea17 100644 --- a/dist/document.js +++ b/dist/document.js @@ -13,6 +13,10 @@ var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); +var _stringify = require('babel-runtime/core-js/json/stringify'); + +var _stringify2 = _interopRequireDefault(_stringify); + var _keys = require('babel-runtime/core-js/object/keys'); var _keys2 = _interopRequireDefault(_keys); @@ -165,7 +169,7 @@ class Document { populate() { let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - return this._populateFields(data); + return this._populateFields(this._normalizeData(data)); } /* @@ -200,6 +204,16 @@ class Document { return this[name]; } + /* + * Returns a normalized data object. + */ + + _normalizeData() { + let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + return JSON.parse((0, _stringify2.default)(data)); + } + /* * Deletes all class fields. */ diff --git a/package.json b/package.json index 77e7cc0..9fa1820 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.7.0", + "version": "0.7.1", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { From d9d4fbd1e14baf1c25c590179acfe0eb579c0623 Mon Sep 17 00:00:00 2001 From: xpeper Date: Fri, 28 Oct 2016 00:02:54 +0200 Subject: [PATCH 050/219] system variables to functions, parent document reference --- README.md | 63 ++++++++++++++++++++------------- dist/document.js | 58 ++++++++++++++++++++++-------- package.json | 2 +- src/document.js | 59 ++++++++++++++++++++++-------- tests/document/cloning.js | 2 +- tests/document/comparison.js | 2 +- tests/document/serialization.js | 2 +- tests/document/validation.js | 50 ++++++++++++++++++++++++-- 8 files changed, 178 insertions(+), 60 deletions(-) diff --git a/README.md b/README.md index 6b8fed2..e7ded86 100644 --- a/README.md +++ b/README.md @@ -123,8 +123,41 @@ A document is a schema enforced data object. All document properties and configu |--------|------|----------|---------|------------ | schema | Schema | Yes | - | An instance of the Schema class. | data | Object | No | - | Data object. +| parent | Document | No | - | Parent document instance. -**document.populate(data)**:Document +**Document.prototype.clear()**:Document + +> Sets a document field to `null`. + +**Document.prototype.clone()**:Document + +> Returns a new Document instance which is the exact copy of the original instance. + +**Document.prototype.define()**:Document + +> Defines class fields for all fields in schema. + +**Document.prototype.equalsTo(value)**:Boolean + +> Returns `true` when the provided `value` represents an object with the same field values as the document. + +**Document.prototype.getSchema()**:Schema + +> Returns document's schema instance. + +**Document.prototype.getParent**:Document + +> Returns parent document instance. + +**Document.prototype.getValidator**:Validator + +> Returns validator instance. + +**Document.prototype.isValid()**:Promise + +> Returns `true` when all document fields are valid. + +**Document.prototype.populate(data)**:Document > Applies data to a document. @@ -132,19 +165,15 @@ A document is a schema enforced data object. All document properties and configu |--------|------|----------|---------|------------ | data | Object | Yes | - | Data object. -**document.clear()**:Document - -> Sets a document field to `null`. - -**document.clone()**:Document +**Document.prototype.purge()**:Document -> Returns a new Document instance which is the exact copy of the original instance. +> Deletes all class fields. -**document.toObject()**:Object +**Document.prototype.toObject()**:Object > Converts a document into serialized data object. -**document.validate()**:Promise +**Document.prototype.validate()**:Promise > Validates all class fields and returns errors. @@ -184,22 +213,6 @@ A document is a schema enforced data object. All document properties and configu } ``` -**document.isValid()**:Promise - -> Returns `true` when all document fields are valid. - -**document.equalsTo(value)**:Boolean - -> Returns `true` when the provided `value` represents an object with the same field values as the document. - -**document.purge()**:Document - -> Deletes all class fields. - -**document.define()**:Document - -> Defines class fields for all fields in schema. - ## License (MIT) ``` diff --git a/dist/document.js b/dist/document.js index 47aea17..f5fe8a4 100644 --- a/dist/document.js +++ b/dist/document.js @@ -53,17 +53,23 @@ class Document { constructor(schema) { let data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; if (!(schema instanceof _schema.Schema)) { throw new Error(`${ this.constructor.name } expects schema to be an instance of Schema class`); } - Object.defineProperty(this, 'schema', { + Object.defineProperty(this, '_schema', { get: () => schema, enumerable: false // do not expose as object key }); - Object.defineProperty(this, 'validator', { + Object.defineProperty(this, '_parent', { + get: () => parent, + enumerable: false // do not expose as object key + }); + + Object.defineProperty(this, '_validator', { value: this._createValidator(), enumerable: false // do not expose as object key }); @@ -72,16 +78,40 @@ class Document { this.populate(data); } + /* + * Returns the schema. + */ + + getSchema() { + return this._schema; + } + + /* + * Returns the validator instance. + */ + + getValidator() { + return this._validator; + } + + /* + * Returns the parent document instance. + */ + + getParent() { + return this._parent; + } + /* * Returns a new instance of validator. */ _createValidator() { - return new _validatable.Validator((0, _assign2.default)({}, this.schema.validatorOptions, { context: this })); + return new _validatable.Validator((0, _assign2.default)({}, this._schema.validatorOptions, { context: this })); } /* - * Defines class fields for all fields in schema. + * Defines class fields for schema. */ define() { @@ -93,7 +123,7 @@ class Document { */ _defineFields() { - let fields = this.schema.fields; + let fields = this._schema.fields; for (let name in fields) { @@ -110,7 +140,7 @@ class Document { _defineField(name) { var _this = this; - let definition = this.schema.fields[name]; + let definition = this._schema.fields[name]; let data; (0, _defineProperty2.default)(this, name, { // field definition @@ -150,12 +180,12 @@ class Document { */ _castValue(value, type) { - let options = this.schema.typeOptions; + let options = this._schema.typeOptions; options.types = (0, _assign2.default)({}, options.types, { Schema: value => { if ((0, _typeable.isArray)(type)) type = type[0]; // in case of {type: [Schema]} - return new this.constructor(type, value); + return new this.constructor(type, value, this); } }); @@ -190,10 +220,10 @@ class Document { */ _populateField(name, value) { - if (this.schema.mode === 'relaxed') { + if (this._schema.mode === 'relaxed') { this[name] = value; } else { - let names = (0, _keys2.default)(this.schema.fields); + let names = (0, _keys2.default)(this._schema.fields); let exists = names.indexOf(name) > -1; if (exists) { @@ -278,7 +308,7 @@ class Document { */ clone() { - return new this.constructor(this.schema, this.toObject()); + return new this.constructor(this._schema, this.toObject()); } /* @@ -332,7 +362,7 @@ class Document { return (0, _asyncToGenerator3.default)(function* () { let data = {}; - for (let name in _this3.schema.fields) { + for (let name in _this3._schema.fields) { let info = yield _this3._validateField(name); if (!(0, _typeable.isUndefined)(info)) { @@ -353,7 +383,7 @@ class Document { return (0, _asyncToGenerator3.default)(function* () { let value = _this4[name]; - let definition = _this4.schema.fields[name]; + let definition = _this4._schema.fields[name]; return yield _this4._validateValue(value, definition); })(); @@ -369,7 +399,7 @@ class Document { return (0, _asyncToGenerator3.default)(function* () { let data = {}; - data.messages = yield _this5.validator.validate(value, definition.validate); + data.messages = yield _this5._validator.validate(value, definition.validate); let related = yield _this5._validateRelatedObject(value, definition); if (related) { diff --git a/package.json b/package.json index 9fa1820..5e6aa32 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.7.1", + "version": "0.8.0", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/document.js b/src/document.js index 3cdc015..7d2e654 100644 --- a/src/document.js +++ b/src/document.js @@ -22,17 +22,22 @@ export class Document { * Class constructor. */ - constructor(schema, data={}) { + constructor(schema, data={}, parent=null) { if (!(schema instanceof Schema)) { throw new Error(`${this.constructor.name} expects schema to be an instance of Schema class`); } - Object.defineProperty(this, 'schema', { + Object.defineProperty(this, '_schema', { get: () => schema, enumerable: false // do not expose as object key }); - Object.defineProperty(this, 'validator', { + Object.defineProperty(this, '_parent', { + get: () => parent, + enumerable: false // do not expose as object key + }); + + Object.defineProperty(this, '_validator', { value: this._createValidator(), enumerable: false // do not expose as object key }); @@ -41,16 +46,40 @@ export class Document { this.populate(data); } + /* + * Returns the schema. + */ + + getSchema() { + return this._schema; + } + + /* + * Returns the validator instance. + */ + + getValidator() { + return this._validator; + } + + /* + * Returns the parent document instance. + */ + + getParent() { + return this._parent; + } + /* * Returns a new instance of validator. */ _createValidator() { - return new Validator(Object.assign({}, this.schema.validatorOptions, {context: this})); + return new Validator(Object.assign({}, this._schema.validatorOptions, {context: this})); } /* - * Defines class fields for all fields in schema. + * Defines class fields for schema. */ define() { @@ -62,7 +91,7 @@ export class Document { */ _defineFields() { - let {fields} = this.schema; + let {fields} = this._schema; for (let name in fields) { this._defineField(name); @@ -76,7 +105,7 @@ export class Document { */ _defineField(name) { - let definition = this.schema.fields[name]; + let definition = this._schema.fields[name]; let data; Object.defineProperty(this, name, { // field definition @@ -111,12 +140,12 @@ export class Document { */ _castValue(value, type) { - let options = this.schema.typeOptions; + let options = this._schema.typeOptions; options.types = Object.assign({}, options.types, { Schema: (value) => { if (isArray(type)) type = type[0]; // in case of {type: [Schema]} - return new this.constructor(type, value); + return new this.constructor(type, value, this); } }); @@ -149,10 +178,10 @@ export class Document { */ _populateField(name, value) { - if (this.schema.mode === 'relaxed') { + if (this._schema.mode === 'relaxed') { this[name] = value; } else { - let names = Object.keys(this.schema.fields); + let names = Object.keys(this._schema.fields); let exists = names.indexOf(name) > -1; if (exists) { @@ -235,7 +264,7 @@ export class Document { */ clone() { - return new this.constructor(this.schema, this.toObject()); + return new this.constructor(this._schema, this.toObject()); } /* @@ -282,7 +311,7 @@ export class Document { async _validateFields() { let data = {}; - for (let name in this.schema.fields) { + for (let name in this._schema.fields) { let info = await this._validateField(name); if (!isUndefined(info)) { @@ -299,7 +328,7 @@ export class Document { async _validateField(name) { let value = this[name]; - let definition = this.schema.fields[name]; + let definition = this._schema.fields[name]; return await this._validateValue(value, definition); } @@ -311,7 +340,7 @@ export class Document { async _validateValue(value, definition) { let data = {}; - data.messages = await this.validator.validate(value, definition.validate); + data.messages = await this._validator.validate(value, definition.validate); let related = await this._validateRelatedObject(value, definition); if (related) { diff --git a/tests/document/cloning.js b/tests/document/cloning.js index 02e5421..aa306c9 100644 --- a/tests/document/cloning.js +++ b/tests/document/cloning.js @@ -1,7 +1,7 @@ const test = require('ava'); const {Document, Schema} = require('../../dist'); -test('clone', (t) => { +test('method `clone`', (t) => { let bookSchema = new Schema({ fields: { title: { diff --git a/tests/document/comparison.js b/tests/document/comparison.js index bd997b2..7bb7df9 100644 --- a/tests/document/comparison.js +++ b/tests/document/comparison.js @@ -1,7 +1,7 @@ const test = require('ava'); const {Document, Schema} = require('../../dist'); -test('comperison', (t) => { +test('method `equalsTo`', (t) => { let bookSchema = new Schema({ fields: { title: { diff --git a/tests/document/serialization.js b/tests/document/serialization.js index 4cb4078..045e0d5 100644 --- a/tests/document/serialization.js +++ b/tests/document/serialization.js @@ -1,7 +1,7 @@ const test = require('ava'); const {Document, Schema} = require('../../dist'); -test('toObject', (t) => { +test('method toObject', (t) => { let bookSchema = new Schema({ fields: { title: { diff --git a/tests/document/validation.js b/tests/document/validation.js index d407ebf..02ae98d 100644 --- a/tests/document/validation.js +++ b/tests/document/validation.js @@ -1,7 +1,7 @@ const test = require('ava'); const {Document, Schema} = require('../../dist'); -test('validate', async (t) => { +test('method `validate`', async (t) => { let bookSchema = new Schema({ fields: { title: { @@ -96,7 +96,7 @@ test('validate', async (t) => { }); }); -test('isValid', async (t) => { +test('method `isValid`', async (t) => { let bookSchema = new Schema({ fields: { title: { @@ -146,3 +146,49 @@ test('isValid', async (t) => { t.is(await user.isValid(), true); }); + +test('validator parent reference', async (t) => { + let name = null + let validators = { + async coolness (value, definition) { + name = this.getParent().name; + } + } + + let bookSchema = new Schema({ + fields: { + title: { + type: 'String', + validate: { + coolness: {message: 'must be cool'} + } + }, + }, + validatorOptions: { + validators + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'String' + }, + books: { + type: [bookSchema] + } + } + }); + + let data = { + name: 'John', + books: [ + { + title: 'Coding NodeJs' + } + ] + }; + + let user = new Document(userSchema, data); + await user.validate(); + t.is(name, 'John'); +}); From 52b15b9ba8790c60806abe7dab8a5cd64b263e58 Mon Sep 17 00:00:00 2001 From: xpeper Date: Fri, 28 Oct 2016 00:04:35 +0200 Subject: [PATCH 051/219] dependencies --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 5e6aa32..04b9024 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.8.0", + "version": "0.8.1", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -43,7 +43,7 @@ "license": "MIT", "devDependencies": { "ava": "0.16.x", - "babel-cli": "6.16.x", + "babel-cli": "6.18.x", "babel-plugin-transform-runtime": "6.15.x", "babel-preset-node5": "11.1.x" }, From 2905b674636e127c58aeb6dc68159d6c98237d0e Mon Sep 17 00:00:00 2001 From: xpeper Date: Fri, 28 Oct 2016 10:52:31 +0200 Subject: [PATCH 052/219] advanced validation error messages --- README.md | 8 ++--- dist/document.js | 10 +++--- dist/schema.js | 37 ++++++++++++++------ package.json | 4 +-- src/document.js | 68 ++++++++++++++++++------------------ src/schema.js | 14 ++++++-- tests/document/validation.js | 14 ++++---- 7 files changed, 87 insertions(+), 68 deletions(-) diff --git a/README.md b/README.md index e7ded86..9fecb90 100644 --- a/README.md +++ b/README.md @@ -133,10 +133,6 @@ A document is a schema enforced data object. All document properties and configu > Returns a new Document instance which is the exact copy of the original instance. -**Document.prototype.define()**:Document - -> Defines class fields for all fields in schema. - **Document.prototype.equalsTo(value)**:Boolean > Returns `true` when the provided `value` represents an object with the same field values as the document. @@ -145,11 +141,11 @@ A document is a schema enforced data object. All document properties and configu > Returns document's schema instance. -**Document.prototype.getParent**:Document +**Document.prototype.getParent()**:Document > Returns parent document instance. -**Document.prototype.getValidator**:Validator +**Document.prototype.getValidator()**:Validator > Returns validator instance. diff --git a/dist/document.js b/dist/document.js index f5fe8a4..b29a2e6 100644 --- a/dist/document.js +++ b/dist/document.js @@ -74,7 +74,7 @@ class Document { enumerable: false // do not expose as object key }); - this.define(); + this._define(); this.populate(data); } @@ -114,7 +114,7 @@ class Document { * Defines class fields for schema. */ - define() { + _define() { return this._defineFields(); } @@ -399,14 +399,14 @@ class Document { return (0, _asyncToGenerator3.default)(function* () { let data = {}; - data.messages = yield _this5._validator.validate(value, definition.validate); + data.errors = yield _this5._validator.validate(value, definition.validate); let related = yield _this5._validateRelatedObject(value, definition); if (related) { data.related = related; } - let isValid = data.messages.length === 0 && _this5._isRelatedObjectValid(related); + let isValid = data.errors.length === 0 && _this5._isRelatedObjectValid(related); return isValid ? undefined : data; })(); } @@ -455,7 +455,7 @@ class Document { if (!value) { return true; } else if ((0, _typeable.isObject)(value)) { - return (0, _values2.default)(value).map(v => v.messages.length > 0 || v.related).indexOf(true) === -1; + return (0, _values2.default)(value).map(v => v.errors.length > 0 || v.related).indexOf(true) === -1; } else if ((0, _typeable.isArray)(value)) { return value.map(v => this._isRelatedObjectValid(v)).indexOf(false) === -1; } diff --git a/dist/schema.js b/dist/schema.js index b40bf46..43a1467 100644 --- a/dist/schema.js +++ b/dist/schema.js @@ -3,7 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.Schema = exports.modes = undefined; +exports.Schema = exports.validatorDefaults = exports.modes = undefined; + +var _assign = require('babel-runtime/core-js/object/assign'); + +var _assign2 = _interopRequireDefault(_assign); var _keys = require('babel-runtime/core-js/object/keys'); @@ -37,6 +41,17 @@ function isValidMode(mode) { return false; } +/* +* Validator default options. +*/ + +const validatorDefaults = exports.validatorDefaults = { + errorBuilder: (validator, value, _ref) => { + let message = _ref.message; + return { validator, message }; + } +}; + /* * A class for defining Document structure and properties. */ @@ -48,16 +63,16 @@ class Schema { */ constructor() { - var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var _ref$fields = _ref.fields; - let fields = _ref$fields === undefined ? {} : _ref$fields; - var _ref$mode = _ref.mode; - let mode = _ref$mode === undefined ? modes.STRICT : _ref$mode; - var _ref$validatorOptions = _ref.validatorOptions; - let validatorOptions = _ref$validatorOptions === undefined ? {} : _ref$validatorOptions; - var _ref$typeOptions = _ref.typeOptions; - let typeOptions = _ref$typeOptions === undefined ? {} : _ref$typeOptions; + var _ref2$fields = _ref2.fields; + let fields = _ref2$fields === undefined ? {} : _ref2$fields; + var _ref2$mode = _ref2.mode; + let mode = _ref2$mode === undefined ? modes.STRICT : _ref2$mode; + var _ref2$validatorOption = _ref2.validatorOptions; + let validatorOptions = _ref2$validatorOption === undefined ? {} : _ref2$validatorOption; + var _ref2$typeOptions = _ref2.typeOptions; + let typeOptions = _ref2$typeOptions === undefined ? {} : _ref2$typeOptions; if (!isValidMode(mode)) { throw new Error(`Unknown schema mode ${ mode }`); @@ -74,7 +89,7 @@ class Schema { this.fields = fields; // document fields this.mode = mode; // document schema mode - this.validatorOptions = validatorOptions; // options for validatable.js + this.validatorOptions = (0, _assign2.default)({}, validatorDefaults, validatorOptions); // options for validatable.js this.typeOptions = typeOptions; // options for typeable.js } diff --git a/package.json b/package.json index 04b9024..a95b0bf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.8.1", + "version": "0.9.0", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -50,6 +50,6 @@ "dependencies": { "deep-equal": "1.0.x", "typeable": "0.7.x", - "validatable": "0.4.x" + "validatable": "0.5.x" } } diff --git a/src/document.js b/src/document.js index 7d2e654..5ae641b 100644 --- a/src/document.js +++ b/src/document.js @@ -22,7 +22,7 @@ export class Document { * Class constructor. */ - constructor(schema, data={}, parent=null) { + constructor (schema, data={}, parent=null) { if (!(schema instanceof Schema)) { throw new Error(`${this.constructor.name} expects schema to be an instance of Schema class`); } @@ -42,7 +42,7 @@ export class Document { enumerable: false // do not expose as object key }); - this.define(); + this._define(); this.populate(data); } @@ -50,7 +50,7 @@ export class Document { * Returns the schema. */ - getSchema() { + getSchema () { return this._schema; } @@ -58,7 +58,7 @@ export class Document { * Returns the validator instance. */ - getValidator() { + getValidator () { return this._validator; } @@ -66,7 +66,7 @@ export class Document { * Returns the parent document instance. */ - getParent() { + getParent () { return this._parent; } @@ -74,7 +74,7 @@ export class Document { * Returns a new instance of validator. */ - _createValidator() { + _createValidator () { return new Validator(Object.assign({}, this._schema.validatorOptions, {context: this})); } @@ -82,7 +82,7 @@ export class Document { * Defines class fields for schema. */ - define() { + _define () { return this._defineFields(); } @@ -90,7 +90,7 @@ export class Document { * Defines all schema fields. */ - _defineFields() { + _defineFields () { let {fields} = this._schema; for (let name in fields) { @@ -104,7 +104,7 @@ export class Document { * Defines a schema field by name. */ - _defineField(name) { + _defineField (name) { let definition = this._schema.fields[name]; let data; @@ -139,7 +139,7 @@ export class Document { * Converts the `value` into specified `type`. */ - _castValue(value, type) { + _castValue (value, type) { let options = this._schema.typeOptions; options.types = Object.assign({}, options.types, { @@ -156,7 +156,7 @@ export class Document { * Sets field values from the provided by data object. */ - populate(data={}) { + populate (data={}) { return this._populateFields( this._normalizeData(data) ); @@ -166,7 +166,7 @@ export class Document { * Sets field values from the provided by data object. */ - _populateFields(data={}) { + _populateFields (data={}) { for (let name in data) { this._populateField(name, data[name]); } @@ -177,7 +177,7 @@ export class Document { * Sets a value of a field by name. */ - _populateField(name, value) { + _populateField (name, value) { if (this._schema.mode === 'relaxed') { this[name] = value; } else { @@ -196,7 +196,7 @@ export class Document { * Returns a normalized data object. */ - _normalizeData(data={}) { + _normalizeData (data={}) { return JSON.parse(JSON.stringify(data)); } @@ -204,7 +204,7 @@ export class Document { * Deletes all class fields. */ - purge() { + purge () { return this._purgeFields(); }; @@ -212,7 +212,7 @@ export class Document { * Deletes all class fields. */ - _purgeFields() { + _purgeFields () { let names = Object.keys(this); names.forEach((name) => this._purgeField(name)); @@ -223,7 +223,7 @@ export class Document { * Deletes specified class field. */ - _purgeField(name) { + _purgeField (name) { return delete this[name]; } @@ -231,7 +231,7 @@ export class Document { * Remove values of all class fields. */ - clear() { + clear () { return this._clearFields(); } @@ -239,7 +239,7 @@ export class Document { * Remove values of all class fields. */ - _clearFields() { + _clearFields () { let names = Object.keys(this); for (let name of names) { @@ -253,7 +253,7 @@ export class Document { * Removes a value of a field with `name`. */ - _clearField(name) { + _clearField (name) { this[name] = null; return this[name]; } @@ -263,7 +263,7 @@ export class Document { * copy of the original instance. */ - clone() { + clone () { return new this.constructor(this._schema, this.toObject()); } @@ -271,7 +271,7 @@ export class Document { * Converts this class into serialized data object. */ - toObject() { + toObject () { let data = {}; let names = Object.keys(this); @@ -286,7 +286,7 @@ export class Document { * Reads a value recursivelly and returns a serialized data object. */ - _toObjectValue(value) { + _toObjectValue (value) { if (value && value.toObject) { return value.toObject(); } else if (value && isArray(value)) { @@ -300,7 +300,7 @@ export class Document { * Validates all class fields and returns errors. */ - async validate() { + async validate () { return await this._validateFields(); } @@ -308,7 +308,7 @@ export class Document { * Validates all class fields and returns errors. */ - async _validateFields() { + async _validateFields () { let data = {}; for (let name in this._schema.fields) { @@ -326,7 +326,7 @@ export class Document { * Validates a single class field with `name` and returns errors. */ - async _validateField(name) { + async _validateField (name) { let value = this[name]; let definition = this._schema.fields[name]; @@ -337,10 +337,10 @@ export class Document { * Validates a value agains the field `definition` object. */ - async _validateValue(value, definition) { + async _validateValue (value, definition) { let data = {}; - data.messages = await this._validator.validate(value, definition.validate); + data.errors = await this._validator.validate(value, definition.validate); let related = await this._validateRelatedObject(value, definition); if (related) { @@ -348,7 +348,7 @@ export class Document { } let isValid = ( - data.messages.length === 0 + data.errors.length === 0 && this._isRelatedObjectValid(related) ); return isValid ? undefined : data; @@ -358,7 +358,7 @@ export class Document { * Validates nested data of a value agains the field `definition` object. */ - async _validateRelatedObject(value, definition) { + async _validateRelatedObject (value, definition) { let {type} = definition; if (!value) { @@ -389,11 +389,11 @@ export class Document { * Validates a related object of a field (a sub schema). */ - _isRelatedObjectValid(value) { + _isRelatedObjectValid (value) { if (!value) { return true; } else if (isObject(value)) { - return Object.values(value).map(v => v.messages.length > 0 || v.related).indexOf(true) === -1; + return Object.values(value).map(v => v.errors.length > 0 || v.related).indexOf(true) === -1; } else if (isArray(value)) { return value.map(v => this._isRelatedObjectValid(v)).indexOf(false) === -1; } @@ -403,7 +403,7 @@ export class Document { * Returns `true` when all document fields are valid. */ - async isValid() { + async isValid () { return isAbsent( await this._validateFields() ); @@ -414,7 +414,7 @@ export class Document { * same field values as the original document. */ - equalsTo(value) { + equalsTo (value) { return deeplyEquals(this, value); } diff --git a/src/schema.js b/src/schema.js index 7acf732..fd9babe 100644 --- a/src/schema.js +++ b/src/schema.js @@ -13,7 +13,7 @@ export const modes = { * Validates the `mode` value. */ -export function isValidMode(mode) { +export function isValidMode (mode) { let keys = Object.keys(modes); for (let key of keys) { @@ -22,6 +22,14 @@ export function isValidMode(mode) { return false; } +/* +* Validator default options. +*/ + +export const validatorDefaults = { + errorBuilder: (validator, value, {message}) => ({validator, message}) +}; + /* * A class for defining Document structure and properties. */ @@ -32,7 +40,7 @@ export class Schema { * Class constructor. */ - constructor({fields={}, mode=modes.STRICT, validatorOptions={}, typeOptions={}}={}) { + constructor ({fields={}, mode=modes.STRICT, validatorOptions={}, typeOptions={}}={}) { if (!isValidMode(mode)) { throw new Error(`Unknown schema mode ${mode}`); } @@ -48,7 +56,7 @@ export class Schema { this.fields = fields; // document fields this.mode = mode; // document schema mode - this.validatorOptions = validatorOptions; // options for validatable.js + this.validatorOptions = Object.assign({}, validatorDefaults, validatorOptions); // options for validatable.js this.typeOptions = typeOptions; // options for typeable.js } diff --git a/tests/document/validation.js b/tests/document/validation.js index 02ae98d..8036965 100644 --- a/tests/document/validation.js +++ b/tests/document/validation.js @@ -66,29 +66,29 @@ test('method `validate`', async (t) => { t.deepEqual(await user.validate(), { name: { - messages: ['is required'] + errors: [{validator: 'presence', message: 'is required'}] }, newBook: { - messages: ['is required'] + errors: [{validator: 'presence', message: 'is required'}] }, newBooks: { - messages: ['is required'] + errors: [{validator: 'presence', message: 'is required'}] }, oldBook: { - messages: [], + errors: [], related: { title: { - messages: ['is required'] + errors: [{validator: 'presence', message: 'is required'}] } } }, oldBooks: { - messages: [], + errors: [], related: [ undefined, { title: { - messages: ['is required'] + errors: [{validator: 'presence', message: 'is required'}] } } ] From 8449539192b26111ec47ac7e2ba43769e2bfa4e8 Mon Sep 17 00:00:00 2001 From: xpeper Date: Fri, 28 Oct 2016 11:37:53 +0200 Subject: [PATCH 053/219] api now uses $ for object referencing --- README.md | 24 ++++++++--------- dist/document.js | 50 +++++++++------------------------- package.json | 2 +- src/document.js | 52 ++++++++++-------------------------- tests/document/validation.js | 2 +- 5 files changed, 41 insertions(+), 89 deletions(-) diff --git a/README.md b/README.md index 9fecb90..5fe3520 100644 --- a/README.md +++ b/README.md @@ -125,29 +125,29 @@ A document is a schema enforced data object. All document properties and configu | data | Object | No | - | Data object. | parent | Document | No | - | Parent document instance. -**Document.prototype.clear()**:Document +**Document.prototype.$schema**:Schema -> Sets a document field to `null`. +> Schema instance. -**Document.prototype.clone()**:Document +**Document.prototype.$parent**:Document -> Returns a new Document instance which is the exact copy of the original instance. +> Parent document instance. -**Document.prototype.equalsTo(value)**:Boolean +**Document.prototype.$validator()**:Validator -> Returns `true` when the provided `value` represents an object with the same field values as the document. +> Validator instance. -**Document.prototype.getSchema()**:Schema +**Document.prototype.clear()**:Document -> Returns document's schema instance. +> Sets a document field to `null`. -**Document.prototype.getParent()**:Document +**Document.prototype.clone()**:Document -> Returns parent document instance. +> Returns a new Document instance which is the exact copy of the original instance. -**Document.prototype.getValidator()**:Validator +**Document.prototype.equalsTo(value)**:Boolean -> Returns validator instance. +> Returns `true` when the provided `value` represents an object with the same field values as the document. **Document.prototype.isValid()**:Promise diff --git a/dist/document.js b/dist/document.js index b29a2e6..1dc67dc 100644 --- a/dist/document.js +++ b/dist/document.js @@ -59,17 +59,17 @@ class Document { throw new Error(`${ this.constructor.name } expects schema to be an instance of Schema class`); } - Object.defineProperty(this, '_schema', { + Object.defineProperty(this, '$schema', { get: () => schema, enumerable: false // do not expose as object key }); - Object.defineProperty(this, '_parent', { + Object.defineProperty(this, '$parent', { get: () => parent, enumerable: false // do not expose as object key }); - Object.defineProperty(this, '_validator', { + Object.defineProperty(this, '$validator', { value: this._createValidator(), enumerable: false // do not expose as object key }); @@ -78,36 +78,12 @@ class Document { this.populate(data); } - /* - * Returns the schema. - */ - - getSchema() { - return this._schema; - } - - /* - * Returns the validator instance. - */ - - getValidator() { - return this._validator; - } - - /* - * Returns the parent document instance. - */ - - getParent() { - return this._parent; - } - /* * Returns a new instance of validator. */ _createValidator() { - return new _validatable.Validator((0, _assign2.default)({}, this._schema.validatorOptions, { context: this })); + return new _validatable.Validator((0, _assign2.default)({}, this.$schema.validatorOptions, { context: this })); } /* @@ -123,7 +99,7 @@ class Document { */ _defineFields() { - let fields = this._schema.fields; + let fields = this.$schema.fields; for (let name in fields) { @@ -140,7 +116,7 @@ class Document { _defineField(name) { var _this = this; - let definition = this._schema.fields[name]; + let definition = this.$schema.fields[name]; let data; (0, _defineProperty2.default)(this, name, { // field definition @@ -180,7 +156,7 @@ class Document { */ _castValue(value, type) { - let options = this._schema.typeOptions; + let options = this.$schema.typeOptions; options.types = (0, _assign2.default)({}, options.types, { Schema: value => { @@ -220,10 +196,10 @@ class Document { */ _populateField(name, value) { - if (this._schema.mode === 'relaxed') { + if (this.$schema.mode === 'relaxed') { this[name] = value; } else { - let names = (0, _keys2.default)(this._schema.fields); + let names = (0, _keys2.default)(this.$schema.fields); let exists = names.indexOf(name) > -1; if (exists) { @@ -308,7 +284,7 @@ class Document { */ clone() { - return new this.constructor(this._schema, this.toObject()); + return new this.constructor(this.$schema, this.toObject()); } /* @@ -362,7 +338,7 @@ class Document { return (0, _asyncToGenerator3.default)(function* () { let data = {}; - for (let name in _this3._schema.fields) { + for (let name in _this3.$schema.fields) { let info = yield _this3._validateField(name); if (!(0, _typeable.isUndefined)(info)) { @@ -383,7 +359,7 @@ class Document { return (0, _asyncToGenerator3.default)(function* () { let value = _this4[name]; - let definition = _this4._schema.fields[name]; + let definition = _this4.$schema.fields[name]; return yield _this4._validateValue(value, definition); })(); @@ -399,7 +375,7 @@ class Document { return (0, _asyncToGenerator3.default)(function* () { let data = {}; - data.errors = yield _this5._validator.validate(value, definition.validate); + data.errors = yield _this5.$validator.validate(value, definition.validate); let related = yield _this5._validateRelatedObject(value, definition); if (related) { diff --git a/package.json b/package.json index a95b0bf..a800cf5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.9.0", + "version": "0.10.0", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/document.js b/src/document.js index 5ae641b..9d13d7b 100644 --- a/src/document.js +++ b/src/document.js @@ -27,17 +27,17 @@ export class Document { throw new Error(`${this.constructor.name} expects schema to be an instance of Schema class`); } - Object.defineProperty(this, '_schema', { + Object.defineProperty(this, '$schema', { get: () => schema, enumerable: false // do not expose as object key }); - Object.defineProperty(this, '_parent', { + Object.defineProperty(this, '$parent', { get: () => parent, enumerable: false // do not expose as object key }); - Object.defineProperty(this, '_validator', { + Object.defineProperty(this, '$validator', { value: this._createValidator(), enumerable: false // do not expose as object key }); @@ -46,36 +46,12 @@ export class Document { this.populate(data); } - /* - * Returns the schema. - */ - - getSchema () { - return this._schema; - } - - /* - * Returns the validator instance. - */ - - getValidator () { - return this._validator; - } - - /* - * Returns the parent document instance. - */ - - getParent () { - return this._parent; - } - /* * Returns a new instance of validator. */ _createValidator () { - return new Validator(Object.assign({}, this._schema.validatorOptions, {context: this})); + return new Validator(Object.assign({}, this.$schema.validatorOptions, {context: this})); } /* @@ -91,7 +67,7 @@ export class Document { */ _defineFields () { - let {fields} = this._schema; + let {fields} = this.$schema; for (let name in fields) { this._defineField(name); @@ -105,7 +81,7 @@ export class Document { */ _defineField (name) { - let definition = this._schema.fields[name]; + let definition = this.$schema.fields[name]; let data; Object.defineProperty(this, name, { // field definition @@ -124,7 +100,7 @@ export class Document { }, enumerable: true, configurable: true - }) + }); if (isFunction(definition.defaultValue)) { // setting default value this[name] = definition.defaultValue(this); @@ -140,7 +116,7 @@ export class Document { */ _castValue (value, type) { - let options = this._schema.typeOptions; + let options = this.$schema.typeOptions; options.types = Object.assign({}, options.types, { Schema: (value) => { @@ -178,10 +154,10 @@ export class Document { */ _populateField (name, value) { - if (this._schema.mode === 'relaxed') { + if (this.$schema.mode === 'relaxed') { this[name] = value; } else { - let names = Object.keys(this._schema.fields); + let names = Object.keys(this.$schema.fields); let exists = names.indexOf(name) > -1; if (exists) { @@ -264,7 +240,7 @@ export class Document { */ clone () { - return new this.constructor(this._schema, this.toObject()); + return new this.constructor(this.$schema, this.toObject()); } /* @@ -311,7 +287,7 @@ export class Document { async _validateFields () { let data = {}; - for (let name in this._schema.fields) { + for (let name in this.$schema.fields) { let info = await this._validateField(name); if (!isUndefined(info)) { @@ -328,7 +304,7 @@ export class Document { async _validateField (name) { let value = this[name]; - let definition = this._schema.fields[name]; + let definition = this.$schema.fields[name]; return await this._validateValue(value, definition); } @@ -340,7 +316,7 @@ export class Document { async _validateValue (value, definition) { let data = {}; - data.errors = await this._validator.validate(value, definition.validate); + data.errors = await this.$validator.validate(value, definition.validate); let related = await this._validateRelatedObject(value, definition); if (related) { diff --git a/tests/document/validation.js b/tests/document/validation.js index 8036965..14dbf37 100644 --- a/tests/document/validation.js +++ b/tests/document/validation.js @@ -151,7 +151,7 @@ test('validator parent reference', async (t) => { let name = null let validators = { async coolness (value, definition) { - name = this.getParent().name; + name = this.$parent.name; } } From 7818544caf87893af518f48457bae32d9cf51699 Mon Sep 17 00:00:00 2001 From: xpeper Date: Fri, 28 Oct 2016 11:55:25 +0200 Subject: [PATCH 054/219] method hasPath --- README.md | 12 ++++++++-- dist/document.js | 16 ++++++++++++- package.json | 2 +- src/document.js | 12 +++++++++- tests/document/comparison.js | 10 ++++---- tests/document/fields.js | 45 ++++++++++++++++++++++++++++++++++++ 6 files changed, 87 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 5fe3520..b1474e6 100644 --- a/README.md +++ b/README.md @@ -133,7 +133,7 @@ A document is a schema enforced data object. All document properties and configu > Parent document instance. -**Document.prototype.$validator()**:Validator +**Document.prototype.$validator**:Validator > Validator instance. @@ -145,10 +145,18 @@ A document is a schema enforced data object. All document properties and configu > Returns a new Document instance which is the exact copy of the original instance. -**Document.prototype.equalsTo(value)**:Boolean +**Document.prototype.equals(value)**:Boolean > Returns `true` when the provided `value` represents an object with the same field values as the document. +**Document.prototype.hasPath(...keys)**:Boolean + +> Returns `true` when all document fields are valid. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| keys | Array | Yes | - | List of object keys (e.g. `['book', 0, 'title']`). + **Document.prototype.isValid()**:Promise > Returns `true` when all document fields are valid. diff --git a/dist/document.js b/dist/document.js index 1dc67dc..4b3d888 100644 --- a/dist/document.js +++ b/dist/document.js @@ -449,12 +449,26 @@ class Document { })(); } + /* + * Returns `true` if keys exist on the document. + */ + + hasPath() { + for (var _len = arguments.length, keys = Array(_len), _key = 0; _key < _len; _key++) { + keys[_key] = arguments[_key]; + } + + if ((0, _typeable.isArray)(keys[0])) keys = keys[0]; + + return keys.reduce((a, b) => (a || {})[b], this) !== undefined; + } + /* * Returns `true` when the `value` represents an object with the * same field values as the original document. */ - equalsTo(value) { + equals(value) { return (0, _deepEqual2.default)(this, value); } diff --git a/package.json b/package.json index a800cf5..b76707a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "0.10.0", + "version": "0.10.1", "description": "Schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/document.js b/src/document.js index 9d13d7b..9f2a3af 100644 --- a/src/document.js +++ b/src/document.js @@ -385,12 +385,22 @@ export class Document { ); } + /* + * Returns `true` if keys exist on the document. + */ + + hasPath (...keys) { + if (isArray(keys[0])) keys = keys[0]; + + return keys.reduce(( a, b ) => (a || {})[b], this) !== undefined; + } + /* * Returns `true` when the `value` represents an object with the * same field values as the original document. */ - equalsTo (value) { + equals (value) { return deeplyEquals(this, value); } diff --git a/tests/document/comparison.js b/tests/document/comparison.js index 7bb7df9..13b8b5b 100644 --- a/tests/document/comparison.js +++ b/tests/document/comparison.js @@ -1,7 +1,7 @@ const test = require('ava'); const {Document, Schema} = require('../../dist'); -test('method `equalsTo`', (t) => { +test('method `equals`', (t) => { let bookSchema = new Schema({ fields: { title: { @@ -34,8 +34,8 @@ test('method `equalsTo`', (t) => { let user2 = new Document(new Schema(userSchema), data0); let user3 = new Document(new Schema(userSchema), data1); - t.is(user0.equalsTo(user1), true); - t.is(user0.equalsTo(user2), false); - t.is(user0.equalsTo(user3), false); - t.is(user2.equalsTo(user3), false); + t.is(user0.equals(user1), true); + t.is(user0.equals(user2), false); + t.is(user0.equals(user3), false); + t.is(user2.equals(user3), false); }); diff --git a/tests/document/fields.js b/tests/document/fields.js index e90748a..624a4d5 100644 --- a/tests/document/fields.js +++ b/tests/document/fields.js @@ -209,3 +209,48 @@ test('clearing fields', (t) => { t.is(user.name, null); }); + +test('method `hasPath`', (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'String' + } + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'String' + }, + book: { + type: bookSchema + }, + books: { + type: [bookSchema] + } + } + }); + let data = { + name: 100, + book: { + title: 100 + }, + books: [ + { + title: 100 + } + ] + }; + let user0 = new Document(userSchema); + let user1 = new Document(userSchema, data); + + t.is(user0.hasPath('name'), true); + t.is(user0.hasPath('book', 'title'), false); + t.is(user0.hasPath('books', 0, 'title'), false); + t.is(user0.hasPath(['books', 0, 'title']), false); + t.is(user1.hasPath('name'), true); + t.is(user1.hasPath('book', 'title'), true); + t.is(user1.hasPath('books', 0, 'title'), true); + t.is(user1.hasPath(['books', 0, 'title']), true); +}); From bc52d2291e693b32b9cbd0cd13bb0e0b0d6386c7 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 30 Oct 2016 23:39:45 +0100 Subject: [PATCH 055/219] complete refactoring --- README.md | 55 +- dist/document.js | 350 ++++--------- dist/field.js | 301 +++++++++++ dist/schema.js | 65 +-- dist/utils.js | 21 + package.json | 4 +- src/document.js | 316 ++++------- src/field.js | 265 ++++++++++ src/schema.js | 55 +- src/utils.js | 7 + tests/document.js | 897 ++++++++++++++++++++++++++++++++ tests/document/cloning.js | 40 -- tests/document/comparison.js | 41 -- tests/document/fields.js | 256 --------- tests/document/serialization.js | 73 --- tests/document/validation.js | 194 ------- 16 files changed, 1750 insertions(+), 1190 deletions(-) create mode 100644 dist/field.js create mode 100644 dist/utils.js create mode 100644 src/field.js create mode 100644 src/utils.js create mode 100644 tests/document.js delete mode 100644 tests/document/cloning.js delete mode 100644 tests/document/comparison.js delete mode 100644 tests/document/fields.js delete mode 100644 tests/document/serialization.js delete mode 100644 tests/document/validation.js diff --git a/README.md b/README.md index b1474e6..e47083d 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,31 @@ # objectschema.js -> Schema enforced JavaScript objects. +> Advanced schema enforced JavaScript objects. +## Features + +* Type casting +* Custom data types +* Field default value +* Field value transformation with custom getter and setter +* Strict and relaxed schemas +* Document nesting with support for self referencing +* Field change tracking, data commit and rollback +* Field validation + +## Related Projects + +* [Typeable.js](https://github.com/xpepermint/typeablejs): A library for checking and casting types. +* [Validatable.js](https://github.com/xpepermint/validatablejs): A library for synchronous and asynchronous validation. +* [Contextable.js](https://github.com/xpepermint/contextablejs): Simple, unopinionated and minimalist framework for creating context objects with support for unopinionated ORM, object schemas, type casting, validation and error handling and more. + ## Install +Run the command below to install the package. + ``` $ npm install --save objectschema ``` @@ -60,7 +79,33 @@ let data = { let user = new Document(userSchema, data); user.name; // -> 'John Smith' -await user.isValid(); // -> true + +user.$name.value; // -> 'John Smith' +user.$name.defaultValue; // -> 'John Smith' +user.$name.initialValue; // -> 'John Smith' +// +user.$name.commit(); // -> 'John Smith' +user.$name.rollback(); // -> 'John Smith' +user.$name.reset(); // -> 'John Smith' +user.$name.clear(); // -> null +user.$name.equals({}); // -> false +user.$name.isChanged(); // -> false +await user.$name.validate(); // -> {errors: [], related: null} +await user.$name.isValid(); // -> false + +user.hasPath('name'); // -> true +user.populate({}); // -> this +user.toObject(); // -> {} +user.clone(); // -> this +// +user.commit(); // -> this +user.rollback(); // -> this +user.reset(); // -> this +user.clear(); // -> this +user.equals({}); // -> false +user.isChanged(); // -> false +await user.validate(); // -> {errors: [], related: null} +await user.isValid(); // -> false ``` ## API @@ -81,7 +126,7 @@ A Schema can also be used as a custom type object. This way you can create a nes | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ -| fields | Object | Yes | - | An object with fields definition. +| fields | Object,Function | Yes | - | An object with fields definition. You should pass a function which returns the object in case of self referencing. | mode | String | No | strict | A schema type (use `relaxed` to allow dynamic fields not defined by the schema). | validatorOptions | Object | No | validatable.js defaults | Configuration options for the `Validator` class, provided by the [validatable.js](https://github.com/xpepermint/validatablejs), which is used for field validation. | typeOptions | Object | No | typeable.js defaults | Configuration options for the `cast` method provided by the [typeable.js](https://github.com/xpepermint/typeablejs), which is used for data type casting. @@ -169,10 +214,6 @@ A document is a schema enforced data object. All document properties and configu |--------|------|----------|---------|------------ | data | Object | Yes | - | Data object. -**Document.prototype.purge()**:Document - -> Deletes all class fields. - **Document.prototype.toObject()**:Object > Converts a document into serialized data object. diff --git a/dist/document.js b/dist/document.js index 4b3d888..f500287 100644 --- a/dist/document.js +++ b/dist/document.js @@ -5,18 +5,10 @@ Object.defineProperty(exports, "__esModule", { }); exports.Document = undefined; -var _values = require('babel-runtime/core-js/object/values'); - -var _values2 = _interopRequireDefault(_values); - var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); -var _stringify = require('babel-runtime/core-js/json/stringify'); - -var _stringify2 = _interopRequireDefault(_stringify); - var _keys = require('babel-runtime/core-js/object/keys'); var _keys2 = _interopRequireDefault(_keys); @@ -37,8 +29,12 @@ var _deepEqual2 = _interopRequireDefault(_deepEqual); var _validatable = require('validatable'); +var _utils = require('./utils'); + var _schema = require('./schema'); +var _field = require('./field'); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /* @@ -55,27 +51,18 @@ class Document { let data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; let parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - if (!(schema instanceof _schema.Schema)) { - throw new Error(`${ this.constructor.name } expects schema to be an instance of Schema class`); - } - Object.defineProperty(this, '$schema', { - get: () => schema, - enumerable: false // do not expose as object key + value: schema }); - Object.defineProperty(this, '$parent', { - get: () => parent, - enumerable: false // do not expose as object key + value: parent }); - Object.defineProperty(this, '$validator', { - value: this._createValidator(), - enumerable: false // do not expose as object key + value: this._createValidator() }); - this._define(); - this.populate(data); + this._defineFields(); + this._populateFields(data); } /* @@ -87,15 +74,7 @@ class Document { } /* - * Defines class fields for schema. - */ - - _define() { - return this._defineFields(); - } - - /* - * Defines all schema fields. + * Defines class fields from schema. */ _defineFields() { @@ -105,8 +84,6 @@ class Document { for (let name in fields) { this._defineField(name); } - - return this; } /* @@ -114,58 +91,34 @@ class Document { */ _defineField(name) { - var _this = this; - - let definition = this.$schema.fields[name]; - let data; + let field = new _field.Field(this, name); (0, _defineProperty2.default)(this, name, { // field definition - get: () => { - if (definition.get) { - // value transformation - return definition.get(data, this); - } else { - return data; - } - }, - set: function () { - let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - - data = _this._castValue(value, definition.type); // value type casting - if (definition.set) { - // value transformation - data = definition.set(data, _this); - } - }, + get: () => field.value, + set: v => field.value = v, enumerable: true, configurable: true }); - if ((0, _typeable.isFunction)(definition.defaultValue)) { - // setting default value - this[name] = definition.defaultValue(this); - } else { - this[name] = definition.defaultValue; - } - - return this[name]; + Object.defineProperty(this, `$${ name }`, { // field class instance definition + value: field + }); } /* - * Converts the `value` into specified `type`. + * Returns `true` if keys exist on the document. */ - _castValue(value, type) { - let options = this.$schema.typeOptions; + hasPath() { + for (var _len = arguments.length, keys = Array(_len), _key = 0; _key < _len; _key++) { + keys[_key] = arguments[_key]; + } - options.types = (0, _assign2.default)({}, options.types, { - Schema: value => { - if ((0, _typeable.isArray)(type)) type = type[0]; // in case of {type: [Schema]} - return new this.constructor(type, value, this); - } - }); + if ((0, _typeable.isArray)(keys[0])) { + keys = keys[0]; + } - return (0, _typeable.cast)(value, type, options); + return keys.reduce((a, b) => (a || {})[b], this) !== undefined; } /* @@ -175,7 +128,7 @@ class Document { populate() { let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - return this._populateFields(this._normalizeData(data)); + return this._populateFields(data); } /* @@ -185,9 +138,12 @@ class Document { _populateFields() { let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + data = (0, _utils.cloneData)(data); + for (let name in data) { this._populateField(name, data[name]); } + return this; } @@ -196,7 +152,7 @@ class Document { */ _populateField(name, value) { - if (this.$schema.mode === 'relaxed') { + if (!this.$schema.strict) { this[name] = value; } else { let names = (0, _keys2.default)(this.$schema.fields); @@ -206,235 +162,138 @@ class Document { this[name] = value; } } - - return this[name]; } /* - * Returns a normalized data object. + * Converts this class into serialized data object. */ - _normalizeData() { - let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + toObject() { + let data = {}; + let names = (0, _keys2.default)(this); - return JSON.parse((0, _stringify2.default)(data)); + for (let name of names) { + data[name] = this._serializeValue(this[name]); + } + + return data; } /* - * Deletes all class fields. + * Serializes a value recursivelly and returns a serialized data object. */ - purge() { - return this._purgeFields(); + _serializeValue(value) { + if (value && value.toObject) { + return value.toObject(); + } else if (value && (0, _typeable.isArray)(value)) { + return value.map(value => this._serializeValue(value)); + } else { + return value; + } } /* - * Deletes all class fields. + * Resets all fields to their default values. */ - _purgeFields() { - let names = (0, _keys2.default)(this); - names.forEach(name => this._purgeField(name)); - - return this; - } + reset() { + let fields = this.$schema.fields; - /* - * Deletes specified class field. - */ - _purgeField(name) { - return delete this[name]; + for (let name in fields) { + this[`$${ name }`].reset(); + } } /* - * Remove values of all class fields. + * Removes all fileds values by setting them to `null`. */ clear() { - return this._clearFields(); - } - - /* - * Remove values of all class fields. - */ + let fields = this.$schema.fields; - _clearFields() { - let names = (0, _keys2.default)(this); - for (let name of names) { - this._clearField(name); + for (let name in fields) { + this[`$${ name }`].clear(); } - - return this; } /* - * Removes a value of a field with `name`. + * Removes all fileds values by setting them to `null`. */ - _clearField(name) { - this[name] = null; - return this[name]; - } + commit() { + let fields = this.$schema.fields; - /* - * Returns a new Document instance which is the exact - * copy of the original instance. - */ - clone() { - return new this.constructor(this.$schema, this.toObject()); + for (let name in fields) { + this[`$${ name }`].commit(); + } } /* - * Converts this class into serialized data object. + * Resets all fields to their initial values. */ - toObject() { - let data = {}; - let names = (0, _keys2.default)(this); - - for (let name of names) { - data[name] = this._toObjectValue(this[name]); - } - - return data; - } + rollback() { + let fields = this.$schema.fields; - /* - * Reads a value recursivelly and returns a serialized data object. - */ - _toObjectValue(value) { - if (value && value.toObject) { - return value.toObject(); - } else if (value && (0, _typeable.isArray)(value)) { - return value.map(value => this._toObjectValue(value)); - } else { - return value; + for (let name in fields) { + this[`$${ name }`].rollback(); } } /* - * Validates all class fields and returns errors. + * Returns `true` when the `value` represents an object with the + * same field values as the original document. */ - validate() { - var _this2 = this; - - return (0, _asyncToGenerator3.default)(function* () { - return yield _this2._validateFields(); - })(); + equals(value) { + return (0, _deepEqual2.default)(this, value); } /* - * Validates all class fields and returns errors. + * Returns a new Document instance which is the exact copy of the original. */ - _validateFields() { - var _this3 = this; - - return (0, _asyncToGenerator3.default)(function* () { - let data = {}; - - for (let name in _this3.$schema.fields) { - - let info = yield _this3._validateField(name); - if (!(0, _typeable.isUndefined)(info)) { - data[name] = info; - } - } - - return data; - })(); + clone() { + return new this.constructor(this.$schema, this.toObject()); } /* - * Validates a single class field with `name` and returns errors. + * Returns a `true` if at least one field has been changed. */ - _validateField(name) { - var _this4 = this; - - return (0, _asyncToGenerator3.default)(function* () { - let value = _this4[name]; - let definition = _this4.$schema.fields[name]; - - return yield _this4._validateValue(value, definition); - })(); + isChanged() { + return (0, _keys2.default)(this.$schema.fields).some(name => { + return this[`$${ name }`].isChanged(); + }); } /* - * Validates a value agains the field `definition` object. + * Validates fields and returns errors. */ - _validateValue(value, definition) { - var _this5 = this; + validate() { + var _this = this; return (0, _asyncToGenerator3.default)(function* () { let data = {}; + let fields = _this.$schema.fields; - data.errors = yield _this5.$validator.validate(value, definition.validate); - - let related = yield _this5._validateRelatedObject(value, definition); - if (related) { - data.related = related; - } - let isValid = data.errors.length === 0 && _this5._isRelatedObjectValid(related); - return isValid ? undefined : data; - })(); - } + for (let name in fields) { + let errors = yield _this[`$${ name }`].validate(); - /* - * Validates nested data of a value agains the field `definition` object. - */ - - _validateRelatedObject(value, definition) { - var _this6 = this; - - return (0, _asyncToGenerator3.default)(function* () { - let type = definition.type; - - - if (!value) { - return undefined; - } else if (type instanceof _schema.Schema) { - return yield value._validateFields(); - } else if ((0, _typeable.isArray)(type) && (0, _typeable.isArray)(value)) { - let items = []; - - for (let v of value) { - if (type[0] instanceof _schema.Schema) { - if (v) { - items.push((yield v._validateFields())); - } else { - items.push(undefined); - } - } else { - items.push((yield _this6._validateValue(v, definition))); - } + if (!(0, _typeable.isAbsent)(errors)) { + data[name] = errors; } - return items; - } else { - return undefined; } - })(); - } - /* - * Validates a related object of a field (a sub schema). - */ - - _isRelatedObjectValid(value) { - if (!value) { - return true; - } else if ((0, _typeable.isObject)(value)) { - return (0, _values2.default)(value).map(v => v.errors.length > 0 || v.related).indexOf(true) === -1; - } else if ((0, _typeable.isArray)(value)) { - return value.map(v => this._isRelatedObjectValid(v)).indexOf(false) === -1; - } + return data; + })(); } /* @@ -442,35 +301,12 @@ class Document { */ isValid() { - var _this7 = this; + var _this2 = this; return (0, _asyncToGenerator3.default)(function* () { - return (0, _typeable.isAbsent)((yield _this7._validateFields())); + return (0, _typeable.isAbsent)((yield _this2.validate())); })(); } - /* - * Returns `true` if keys exist on the document. - */ - - hasPath() { - for (var _len = arguments.length, keys = Array(_len), _key = 0; _key < _len; _key++) { - keys[_key] = arguments[_key]; - } - - if ((0, _typeable.isArray)(keys[0])) keys = keys[0]; - - return keys.reduce((a, b) => (a || {})[b], this) !== undefined; - } - - /* - * Returns `true` when the `value` represents an object with the - * same field values as the original document. - */ - - equals(value) { - return (0, _deepEqual2.default)(this, value); - } - } exports.Document = Document; \ No newline at end of file diff --git a/dist/field.js b/dist/field.js new file mode 100644 index 0000000..276a381 --- /dev/null +++ b/dist/field.js @@ -0,0 +1,301 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Field = undefined; + +var _values = require('babel-runtime/core-js/object/values'); + +var _values2 = _interopRequireDefault(_values); + +var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); + +var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); + +var _assign = require('babel-runtime/core-js/object/assign'); + +var _assign2 = _interopRequireDefault(_assign); + +var _typeable = require('typeable'); + +var _deepEqual = require('deep-equal'); + +var _deepEqual2 = _interopRequireDefault(_deepEqual); + +var _utils = require('./utils'); + +var _schema = require('./schema'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/* +* Document field class. +*/ + +class Field { + + /* + * Class constructor. + */ + + constructor(document, name) { + Object.defineProperty(this, '$document', { + value: document + }); + Object.defineProperty(this, '$name', { + value: name + }); + Object.defineProperty(this, '_value', { + value: this.defaultValue, + writable: true + }); + Object.defineProperty(this, '_initialValue', { + value: this._value, + writable: true + }); + } + + /* + * Return field value. + */ + + get value() { + let get = this.$document.$schema.fields[this.$name].get; + + + let value = this._value; + if (get) { + // transformation with custom getter + value = get.call(this.$document, value); + } + return value; + } + + /* + * Sets field value. + */ + + set value(value) { + var _$document$$schema$fi = this.$document.$schema.fields[this.$name]; + let set = _$document$$schema$fi.set; + let type = _$document$$schema$fi.type; + + + value = this._cast(value, type); // value type casting + if (set) { + // transformation with custom setter + value = set.call(this.$document, value); + } + + this._value = value; + } + + /* + * Returns the default value of a field. + */ + + get defaultValue() { + var _$document$$schema$fi2 = this.$document.$schema.fields[this.$name]; + let type = _$document$$schema$fi2.type; + let set = _$document$$schema$fi2.set; + let defaultValue = _$document$$schema$fi2.defaultValue; + + + let value = (0, _typeable.isFunction)(defaultValue) ? defaultValue(this._document) : defaultValue; + + value = this._cast(value, type); // value type casting + if (set) { + // custom setter + value = set.call(this.$document, value); + } + + return value; + } + + /* + * Converts the `value` into specified `type`. + */ + + _cast(value, type) { + let options = this.$document.$schema.typeOptions; + + options.types = (0, _assign2.default)({}, options.types, { + Schema: value => { + if ((0, _typeable.isArray)(type)) type = type[0]; // in case of {type: [Schema]} + return new this.$document.constructor(type, value, this.$document); + } + }); + + return (0, _typeable.cast)(value, type, options); + } + + /* + * Sets field to the default value. + */ + + reset() { + return this.value = this.defaultValue; + } + + /* + * Removes field's value by setting it to null. + */ + + clear() { + return this.value = null; + } + + /* + * Returns the value of a field before last commit. + */ + + get initialValue() { + return this._initialValue; + } + + /* + * Deeply set's the initial values to the current value of each field. + */ + + commit() { + this._commitRelated(this.value); + + return this._initialValue = (0, _utils.cloneData)(this.value); + } + + /* + * Deeply set's the initial values of the related `data` object to the current + * value of each field. + */ + + _commitRelated(data) { + // commit sub fields + if (data && data.commit) { + data.commit(); + } else if (data && (0, _typeable.isArray)(data)) { + data.forEach(d => this._commitRelated(d)); + } + } + + /* + * Sets field's value before last commit. + */ + + rollback() { + return this.value = this.initialValue; + } + + /* + * Returns `true` when the `data` equals to the current value. + */ + + equals(data) { + return (0, _deepEqual2.default)(this.value, data); + } + + /* + * Returns `true` if the field or related sub-fields have been changed. + */ + + isChanged() { + return !this.equals(this.initialValue); + } + + /* + * Validates the field and returns errors. + */ + + validate() { + var _this = this; + + return (0, _asyncToGenerator3.default)(function* () { + let data = {}; + + let errors = yield _this._validateValue(_this.value); + data.errors = errors; + + let related = yield _this._validateRelated(_this.value); + if (related) { + data.related = related; + } + + let isValid = errors.length === 0 && _this._isRelatedValid(related); + return !isValid ? data : undefined; + })(); + } + + /* + * Validates the `value` and returns errors. + */ + + _validateValue(value) { + var _this2 = this; + + return (0, _asyncToGenerator3.default)(function* () { + let validate = _this2.$document.$schema.fields[_this2.$name].validate; + + + return yield _this2.$document.$validator.validate(value, validate); + })(); + } + + /* + * Validates the related fields of the `value` and returns errors. + */ + + _validateRelated(value) { + var _this3 = this; + + return (0, _asyncToGenerator3.default)(function* () { + let type = _this3.$document.$schema.fields[_this3.$name].type; + + + if (!value) { + return undefined; + } else if (type instanceof _schema.Schema) { + return yield value.validate(); + } else if ((0, _typeable.isArray)(type) && (0, _typeable.isArray)(value)) { + let items = []; + for (let v of value) { + if (type[0] instanceof _schema.Schema) { + items.push(v ? yield v.validate() : undefined); + } else { + items.push((yield _this3._validateValue(v))); + } + } + return items; + } else { + return undefined; + } + })(); + } + + /* + * Checks if the `related` field is valid. + */ + + _isRelatedValid(related) { + if ((0, _typeable.isObject)(related)) { + return (0, _values2.default)(related).every(v => v.errors.length === 0 && !v.related); + } else if ((0, _typeable.isArray)(related)) { + return related.every(v => this._isRelatedValid(v)); + } else { + return true; + } + } + + /* + * Returns `true` when the value is valid. + */ + + isValid() { + var _this4 = this; + + return (0, _asyncToGenerator3.default)(function* () { + return (0, _typeable.isAbsent)((yield _this4.validate())); + })(); + } + +} +exports.Field = Field; \ No newline at end of file diff --git a/dist/schema.js b/dist/schema.js index 43a1467..9589315 100644 --- a/dist/schema.js +++ b/dist/schema.js @@ -3,44 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.Schema = exports.validatorDefaults = exports.modes = undefined; +exports.Schema = exports.validatorDefaults = undefined; var _assign = require('babel-runtime/core-js/object/assign'); var _assign2 = _interopRequireDefault(_assign); -var _keys = require('babel-runtime/core-js/object/keys'); - -var _keys2 = _interopRequireDefault(_keys); - -exports.isValidMode = isValidMode; - -var _typeable = require('typeable'); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/* -* A list of available Schema modes. -*/ - -const modes = exports.modes = { - RELAXED: 'relaxed', - STRICT: 'strict' -}; - -/* -* Validates the `mode` value. -*/ - -function isValidMode(mode) { - let keys = (0, _keys2.default)(modes); - - for (let key of keys) { - if (modes[key] === mode) return true; - } - return false; -} - /* * Validator default options. */ @@ -67,30 +37,25 @@ class Schema { var _ref2$fields = _ref2.fields; let fields = _ref2$fields === undefined ? {} : _ref2$fields; - var _ref2$mode = _ref2.mode; - let mode = _ref2$mode === undefined ? modes.STRICT : _ref2$mode; + var _ref2$strict = _ref2.strict; + let strict = _ref2$strict === undefined ? true : _ref2$strict; var _ref2$validatorOption = _ref2.validatorOptions; let validatorOptions = _ref2$validatorOption === undefined ? {} : _ref2$validatorOption; var _ref2$typeOptions = _ref2.typeOptions; let typeOptions = _ref2$typeOptions === undefined ? {} : _ref2$typeOptions; - if (!isValidMode(mode)) { - throw new Error(`Unknown schema mode ${ mode }`); - } - if (!(0, _typeable.isObject)(fields)) { - throw new Error(`Schema fields key should be an Object`); - } - if (!(0, _typeable.isObject)(validatorOptions)) { - throw new Error(`Schema validatorOptions key should be an Object`); - } - if (!(0, _typeable.isObject)(typeOptions)) { - throw new Error(`Schema typeOptions key should be an Object`); - } - - this.fields = fields; // document fields - this.mode = mode; // document schema mode - this.validatorOptions = (0, _assign2.default)({}, validatorDefaults, validatorOptions); // options for validatable.js - this.typeOptions = typeOptions; // options for typeable.js + Object.defineProperty(this, 'fields', { // document fields + get: () => typeof fields === 'function' ? fields() : fields + }); + Object.defineProperty(this, 'strict', { // document schema mode + value: strict + }); + Object.defineProperty(this, 'validatorOptions', { // options for validatable.js + value: (0, _assign2.default)({}, validatorDefaults, validatorOptions) + }); + Object.defineProperty(this, 'typeOptions', { // options for typeable.js + value: typeOptions + }); } } diff --git a/dist/utils.js b/dist/utils.js new file mode 100644 index 0000000..8e37541 --- /dev/null +++ b/dist/utils.js @@ -0,0 +1,21 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _stringify = require("babel-runtime/core-js/json/stringify"); + +var _stringify2 = _interopRequireDefault(_stringify); + +exports.cloneData = cloneData; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/* +* Returns a duplicated data object (useful to remove data bindings). +*/ + +function cloneData(data) { + return JSON.parse((0, _stringify2.default)(data)); +} \ No newline at end of file diff --git a/package.json b/package.json index b76707a..54c0ee6 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "objectschema", - "version": "0.10.1", - "description": "Schema enforced JavaScript objects.", + "version": "1.0.0", + "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { "files": [ diff --git a/src/document.js b/src/document.js index 9f2a3af..25eacaf 100644 --- a/src/document.js +++ b/src/document.js @@ -1,5 +1,4 @@ import { - cast, isObject, isArray, isFunction, @@ -10,7 +9,9 @@ import { import deeplyEquals from 'deep-equal'; import {Validator} from 'validatable'; +import {cloneData} from './utils'; import {Schema} from './schema'; +import {Field} from './field'; /* * The core schema-based object class. @@ -23,27 +24,18 @@ export class Document { */ constructor (schema, data={}, parent=null) { - if (!(schema instanceof Schema)) { - throw new Error(`${this.constructor.name} expects schema to be an instance of Schema class`); - } - Object.defineProperty(this, '$schema', { - get: () => schema, - enumerable: false // do not expose as object key + value: schema }); - Object.defineProperty(this, '$parent', { - get: () => parent, - enumerable: false // do not expose as object key + value: parent, }); - Object.defineProperty(this, '$validator', { value: this._createValidator(), - enumerable: false // do not expose as object key }); - this._define(); - this.populate(data); + this._defineFields(); + this._populateFields(data); } /* @@ -55,15 +47,7 @@ export class Document { } /* - * Defines class fields for schema. - */ - - _define () { - return this._defineFields(); - } - - /* - * Defines all schema fields. + * Defines class fields from schema. */ _defineFields () { @@ -72,8 +56,6 @@ export class Document { for (let name in fields) { this._defineField(name); } - - return this; } /* @@ -81,51 +63,30 @@ export class Document { */ _defineField (name) { - let definition = this.$schema.fields[name]; - let data; + let field = new Field(this, name); Object.defineProperty(this, name, { // field definition - get: () => { - if (definition.get) { // value transformation - return definition.get(data, this); - } else { - return data; - } - }, - set: (value=null) => { - data = this._castValue(value, definition.type); // value type casting - if (definition.set) { // value transformation - data = definition.set(data, this); - } - }, + get: () => field.value, + set: (v) => field.value = v, enumerable: true, configurable: true }); - if (isFunction(definition.defaultValue)) { // setting default value - this[name] = definition.defaultValue(this); - } else { - this[name] = definition.defaultValue; - } - - return this[name]; + Object.defineProperty(this, `$${name}`, { // field class instance definition + value: field + }); } /* - * Converts the `value` into specified `type`. + * Returns `true` if keys exist on the document. */ - _castValue (value, type) { - let options = this.$schema.typeOptions; - - options.types = Object.assign({}, options.types, { - Schema: (value) => { - if (isArray(type)) type = type[0]; // in case of {type: [Schema]} - return new this.constructor(type, value, this); - } - }); + hasPath (...keys) { + if (isArray(keys[0])) { + keys = keys[0]; + } - return cast(value, type, options); + return keys.reduce(( a, b ) => (a || {})[b], this) !== undefined; } /* @@ -133,9 +94,7 @@ export class Document { */ populate (data={}) { - return this._populateFields( - this._normalizeData(data) - ); + return this._populateFields(data); } /* @@ -143,9 +102,12 @@ export class Document { */ _populateFields (data={}) { + data = cloneData(data); + for (let name in data) { this._populateField(name, data[name]); } + return this; } @@ -154,9 +116,10 @@ export class Document { */ _populateField (name, value) { - if (this.$schema.mode === 'relaxed') { + if (!this.$schema.strict) { this[name] = value; - } else { + } + else { let names = Object.keys(this.$schema.fields); let exists = names.indexOf(name) > -1; @@ -164,83 +127,6 @@ export class Document { this[name] = value; } } - - return this[name]; - } - - /* - * Returns a normalized data object. - */ - - _normalizeData (data={}) { - return JSON.parse(JSON.stringify(data)); - } - - /* - * Deletes all class fields. - */ - - purge () { - return this._purgeFields(); - }; - - /* - * Deletes all class fields. - */ - - _purgeFields () { - let names = Object.keys(this); - names.forEach((name) => this._purgeField(name)); - - return this; - }; - - /* - * Deletes specified class field. - */ - - _purgeField (name) { - return delete this[name]; - } - - /* - * Remove values of all class fields. - */ - - clear () { - return this._clearFields(); - } - - /* - * Remove values of all class fields. - */ - - _clearFields () { - let names = Object.keys(this); - - for (let name of names) { - this._clearField(name); - } - - return this; - } - - /* - * Removes a value of a field with `name`. - */ - - _clearField (name) { - this[name] = null; - return this[name]; - } - - /* - * Returns a new Document instance which is the exact - * copy of the original instance. - */ - - clone () { - return new this.constructor(this.$schema, this.toObject()); } /* @@ -252,156 +138,130 @@ export class Document { let names = Object.keys(this); for (let name of names) { - data[name] = this._toObjectValue(this[name]); + data[name] = this._serializeValue(this[name]); } return data; } /* - * Reads a value recursivelly and returns a serialized data object. + * Serializes a value recursivelly and returns a serialized data object. */ - _toObjectValue (value) { + _serializeValue (value) { if (value && value.toObject) { return value.toObject(); - } else if (value && isArray(value)) { - return value.map((value) => this._toObjectValue(value)); - } else { + } + else if (value && isArray(value)) { + return value.map((value) => this._serializeValue(value)); + } + else { return value; } - }; + } /* - * Validates all class fields and returns errors. + * Resets all fields to their default values. */ - async validate () { - return await this._validateFields(); + reset () { + let {fields} = this.$schema; + + for (let name in fields) { + this[`$${name}`].reset(); + } } /* - * Validates all class fields and returns errors. + * Removes all fileds values by setting them to `null`. */ - async _validateFields () { - let data = {}; - - for (let name in this.$schema.fields) { + clear () { + let {fields} = this.$schema; - let info = await this._validateField(name); - if (!isUndefined(info)) { - data[name] = info; - } + for (let name in fields) { + this[`$${name}`].clear(); } - - return data; } /* - * Validates a single class field with `name` and returns errors. + * Removes all fileds values by setting them to `null`. */ - async _validateField (name) { - let value = this[name]; - let definition = this.$schema.fields[name]; + commit () { + let {fields} = this.$schema; - return await this._validateValue(value, definition); + for (let name in fields) { + this[`$${name}`].commit(); + } } /* - * Validates a value agains the field `definition` object. + * Resets all fields to their initial values. */ - async _validateValue (value, definition) { - let data = {}; - - data.errors = await this.$validator.validate(value, definition.validate); + rollback () { + let {fields} = this.$schema; - let related = await this._validateRelatedObject(value, definition); - if (related) { - data.related = related; + for (let name in fields) { + this[`$${name}`].rollback(); } - - let isValid = ( - data.errors.length === 0 - && this._isRelatedObjectValid(related) - ); - return isValid ? undefined : data; } /* - * Validates nested data of a value agains the field `definition` object. + * Returns `true` when the `value` represents an object with the + * same field values as the original document. */ - async _validateRelatedObject (value, definition) { - let {type} = definition; - - if (!value) { - return undefined; - } else if (type instanceof Schema) { - return await value._validateFields(); - } else if (isArray(type) && isArray(value)) { - let items = []; - - for (let v of value) { - if (type[0] instanceof Schema) { - if (v) { - items.push(await v._validateFields()); - } else { - items.push(undefined); - } - } else { - items.push(await this._validateValue(v, definition)); - } - } - return items; - } else { - return undefined; - } + equals (value) { + return deeplyEquals(this, value); } /* - * Validates a related object of a field (a sub schema). + * Returns a new Document instance which is the exact copy of the original. */ - _isRelatedObjectValid (value) { - if (!value) { - return true; - } else if (isObject(value)) { - return Object.values(value).map(v => v.errors.length > 0 || v.related).indexOf(true) === -1; - } else if (isArray(value)) { - return value.map(v => this._isRelatedObjectValid(v)).indexOf(false) === -1; - } + clone () { + return new this.constructor(this.$schema, this.toObject()); } /* - * Returns `true` when all document fields are valid. + * Returns a `true` if at least one field has been changed. */ - async isValid () { - return isAbsent( - await this._validateFields() - ); + isChanged () { + return Object.keys(this.$schema.fields).some((name) => { + return this[`$${name}`].isChanged(); + }); } /* - * Returns `true` if keys exist on the document. + * Validates fields and returns errors. */ - hasPath (...keys) { - if (isArray(keys[0])) keys = keys[0]; + async validate () { + let data = {}; + let {fields} = this.$schema; - return keys.reduce(( a, b ) => (a || {})[b], this) !== undefined; + for (let name in fields) { + let errors = await this[`$${name}`].validate(); + + if (!isAbsent(errors)) { + data[name] = errors; + } + } + + return data; } /* - * Returns `true` when the `value` represents an object with the - * same field values as the original document. + * Returns `true` when all document fields are valid. */ - equals (value) { - return deeplyEquals(this, value); + async isValid () { + return isAbsent( + await this.validate() + ); } } diff --git a/src/field.js b/src/field.js new file mode 100644 index 0000000..594fcca --- /dev/null +++ b/src/field.js @@ -0,0 +1,265 @@ +import { + cast, + isAbsent, + isArray, + isObject, + isFunction +} from 'typeable'; + +import deeplyEquals from 'deep-equal'; +import {cloneData} from './utils'; +import {Schema} from './schema'; + +/* +* Document field class. +*/ + +export class Field { + + /* + * Class constructor. + */ + + constructor (document, name) { + Object.defineProperty(this, '$document', { + value: document + }); + Object.defineProperty(this, '$name', { + value: name, + }); + Object.defineProperty(this, '_value', { + value: this.defaultValue, + writable: true + }); + Object.defineProperty(this, '_initialValue', { + value: this._value, + writable: true + }); + } + + /* + * Return field value. + */ + + get value () { + let {get} = this.$document.$schema.fields[this.$name]; + + let value = this._value; + if (get) { // transformation with custom getter + value = get.call(this.$document, value); + } + return value; + } + + /* + * Sets field value. + */ + + set value (value) { + let {set, type} = this.$document.$schema.fields[this.$name]; + + value = this._cast(value, type); // value type casting + if (set) { // transformation with custom setter + value = set.call(this.$document, value); + } + + this._value = value; + } + + /* + * Returns the default value of a field. + */ + + get defaultValue () { + let {type, set, defaultValue} = this.$document.$schema.fields[this.$name]; + + let value = isFunction(defaultValue) + ? defaultValue(this._document) + : defaultValue; + + value = this._cast(value, type); // value type casting + if (set) { // custom setter + value = set.call(this.$document, value); + } + + return value; + } + + /* + * Converts the `value` into specified `type`. + */ + + _cast (value, type) { + let options = this.$document.$schema.typeOptions; + + options.types = Object.assign({}, options.types, { + Schema: (value) => { + if (isArray(type)) type = type[0]; // in case of {type: [Schema]} + return new this.$document.constructor(type, value, this.$document); + } + }); + + return cast(value, type, options); + } + + /* + * Sets field to the default value. + */ + + reset () { + return this.value = this.defaultValue; + } + + /* + * Removes field's value by setting it to null. + */ + + clear () { + return this.value = null; + } + + /* + * Returns the value of a field before last commit. + */ + + get initialValue () { + return this._initialValue; + } + + /* + * Deeply set's the initial values to the current value of each field. + */ + + commit () { + this._commitRelated(this.value); + + return this._initialValue = cloneData(this.value); + } + + /* + * Deeply set's the initial values of the related `data` object to the current + * value of each field. + */ + + _commitRelated (data) { // commit sub fields + if (data && data.commit) { + data.commit(); + } + else if (data && isArray(data)) { + data.forEach((d) => this._commitRelated(d)); + } + } + + /* + * Sets field's value before last commit. + */ + + rollback () { + return this.value = this.initialValue; + } + + /* + * Returns `true` when the `data` equals to the current value. + */ + + equals (data) { + return deeplyEquals(this.value, data); + } + + /* + * Returns `true` if the field or related sub-fields have been changed. + */ + + isChanged () { + return !this.equals(this.initialValue); + } + + /* + * Validates the field and returns errors. + */ + + async validate() { + let data = {} + + let errors = await this._validateValue(this.value); + data.errors = errors; + + let related = await this._validateRelated(this.value); + if (related) { + data.related = related; + } + + let isValid = ( + errors.length === 0 + && this._isRelatedValid(related) + ); + return !isValid ? data : undefined; + } + + /* + * Validates the `value` and returns errors. + */ + + async _validateValue (value) { + let {validate} = this.$document.$schema.fields[this.$name]; + + return await this.$document.$validator.validate(value, validate); + } + + /* + * Validates the related fields of the `value` and returns errors. + */ + + async _validateRelated (value) { + let {type} = this.$document.$schema.fields[this.$name]; + + if (!value) { + return undefined; + } + else if (type instanceof Schema) { + return await value.validate(); + } + else if (isArray(type) && isArray(value)) { + let items = []; + for (let v of value) { + if (type[0] instanceof Schema) { + items.push(v ? await v.validate() : undefined); + } + else { + items.push(await this._validateValue(v)); + } + } + return items; + } + else { + return undefined; + } + } + + /* + * Checks if the `related` field is valid. + */ + + _isRelatedValid (related) { + if (isObject(related)) { + return Object.values(related).every(v => v.errors.length === 0 && !v.related); + } + else if (isArray(related)) { + return related.every(v => this._isRelatedValid(v)); + } + else { + return true; + } + } + + /* + * Returns `true` when the value is valid. + */ + + async isValid () { + return isAbsent( + await this.validate() + ); + } + +} diff --git a/src/schema.js b/src/schema.js index fd9babe..3229b85 100644 --- a/src/schema.js +++ b/src/schema.js @@ -1,27 +1,3 @@ -import {isObject} from 'typeable'; - -/* -* A list of available Schema modes. -*/ - -export const modes = { - RELAXED: 'relaxed', - STRICT: 'strict' -}; - -/* -* Validates the `mode` value. -*/ - -export function isValidMode (mode) { - let keys = Object.keys(modes); - - for (let key of keys) { - if (modes[key] === mode) return true; - } - return false; -} - /* * Validator default options. */ @@ -40,24 +16,19 @@ export class Schema { * Class constructor. */ - constructor ({fields={}, mode=modes.STRICT, validatorOptions={}, typeOptions={}}={}) { - if (!isValidMode(mode)) { - throw new Error(`Unknown schema mode ${mode}`); - } - if (!isObject(fields)) { - throw new Error(`Schema fields key should be an Object`); - } - if (!isObject(validatorOptions)) { - throw new Error(`Schema validatorOptions key should be an Object`); - } - if (!isObject(typeOptions)) { - throw new Error(`Schema typeOptions key should be an Object`); - } - - this.fields = fields; // document fields - this.mode = mode; // document schema mode - this.validatorOptions = Object.assign({}, validatorDefaults, validatorOptions); // options for validatable.js - this.typeOptions = typeOptions; // options for typeable.js + constructor ({fields={}, strict=true, validatorOptions={}, typeOptions={}}={}) { + Object.defineProperty(this, 'fields', { // document fields + get: () => typeof fields === 'function' ? fields() : fields, + }); + Object.defineProperty(this, 'strict', { // document schema mode + value: strict + }); + Object.defineProperty(this, 'validatorOptions', { // options for validatable.js + value: Object.assign({}, validatorDefaults, validatorOptions) + }); + Object.defineProperty(this, 'typeOptions', { // options for typeable.js + value: typeOptions + }); } } diff --git a/src/utils.js b/src/utils.js new file mode 100644 index 0000000..a3ba8ac --- /dev/null +++ b/src/utils.js @@ -0,0 +1,7 @@ +/* +* Returns a duplicated data object (useful to remove data bindings). +*/ + +export function cloneData (data) { + return JSON.parse(JSON.stringify(data)); +} diff --git a/tests/document.js b/tests/document.js new file mode 100644 index 0000000..607d927 --- /dev/null +++ b/tests/document.js @@ -0,0 +1,897 @@ +const test = require('ava'); +const {Document, Schema} = require('../dist'); + +test('field value should be converted to the specified type', (t) => { + let bookSchema = new Schema({ + fields: () => ({ + title: { + type: 'String' + }, + year: { + type: 'Integer' + }, + book: { + type: bookSchema + } + }) + }); + + let userSchema = new Schema({ + fields: { + name: { + type: 'String' + }, + age: { + type: 'Integer' + }, + enabled: { + type: 'Boolean' + }, + book: { + type: bookSchema + }, + books: { + type: [bookSchema] + }, + tags: { + type: ['String'] + }, + keywords: { + type: [] + } + } + }); + let data = { + name: 100, + age: '35', + enabled: 'true', + book: { + title: 100, + book: { + title: 200 + } + }, + books: [ + { + title: 100 + } + ], + tags: ['foo', 'bar', 100, null], + keywords: ['foo', 'bar', 100, null] + }; + let user = new Document(userSchema, data); + + t.is(user.name, '100'); + t.is(user.age, 35); + t.is(user.enabled, true); + t.is(user.book.title, '100'); + t.is(user.book.year, null); + t.is(user.book.book.title, '200'); + t.is(user.books[0].title, '100'); + t.is(user.books[0].year, null); + t.deepEqual(user.tags, ['foo', 'bar', '100', null]); + t.deepEqual(user.keywords, ['foo', 'bar', 100, null]); +}); + +test('field can be of a custom type', (t) => { + let userSchema = new Schema({ + fields: { + name: { + type: 'cool' + } + }, + typeOptions: { + types: { + cool: (v) => `${v}-cool` + } + } + }); + let data = { + name: 100 + }; + let user = new Document(userSchema, data); + + t.is(user.name, '100-cool'); +}); + +test('field can have a default value', (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'String', + defaultValue: 100 + } + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'String', + defaultValue: 100 + }, + age: { + type: 'Integer', + defaultValue: '35' + }, + enabled: { + type: 'Boolean', + defaultValue: () => true + }, + book: { + type: bookSchema + }, + books: { + type: [bookSchema] + }, + papers: { + type: [bookSchema], + defaultValue: [ + { + title: 'Foo' + } + ] + } + } + }); + let data = { + books: [ + null, + { + title: 100 + } + ] + }; + let user0 = new Document(userSchema); + let user1 = new Document(userSchema, data); + let book0 = new Document(bookSchema); + let book1 = new Document(bookSchema, data.books[1]) + + t.is(user0.name, '100'); + t.is(user0.age, 35); + t.is(user0.enabled, true); + t.is(user0.book, null); + t.deepEqual(user0.papers, [{title: 'Foo'}]); + t.deepEqual(user1.books, [null, book1]); + t.is(user1.books[0], null); + t.is(user1.books[1].title, '100'); +}); + +test('field can be transformed through custom setter and getter', (t) => { + let userSchema = new Schema({ + fields: { + name: { + type: 'String', + defaultValue: 100, + get: (value) => `${value}-get`, + set: (value) => `${value}-set` + } + } + }); + let user = new Document(userSchema); + + t.is(user.name, '100-set-get'); +}); + +test('method `populate` should not set custom fields when schema strict=true', (t) => { + let userSchema = new Schema({ + strict: true, + fields: { + name: { + type: 'String', + defaultValue: 100 + } + } + }); + let data = { + name: 'John', + age: 35.5 + }; + let user = new Document(userSchema); + user.populate(data); + + t.is(user.name, 'John'); + t.is(user.age, undefined); +}); + +test('method `populate` should set custom fields when schema strict=false', (t) => { + let userSchema = new Schema({ + strict: false, + fields: { + name: { + type: 'String', + defaultValue: 100 + } + } + }); + let data = { + name: 'John', + age: 35.5 + }; + let user = new Document(userSchema); + user.populate(data); + + t.is(user.name, 'John'); + t.is(user.age, 35.5); +}); + +test('method `hasPath` should deeply check field existance', (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'String' + } + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'String' + }, + book: { + type: bookSchema + }, + books: { + type: [bookSchema] + } + } + }); + let data = { + name: 100, + book: { + title: 100 + }, + books: [ + { + title: 100 + } + ] + }; + let user0 = new Document(userSchema); + let user1 = new Document(userSchema, data); + + t.is(user0.hasPath('name'), true); + t.is(user0.hasPath('book', 'title'), false); + t.is(user0.hasPath('books', 0, 'title'), false); + t.is(user0.hasPath(['books', 0, 'title']), false); + t.is(user1.hasPath('name'), true); + t.is(user1.hasPath('book', 'title'), true); + t.is(user1.hasPath('books', 0, 'title'), true); + t.is(user1.hasPath(['books', 0, 'title']), true); +}); + +test('method `toObject` should convert a document into serialized data object', (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'String', + defaultValue: 100 + }, + year: { + type: 'Integer' + } + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'String' + }, + age: { + type: 'float' + }, + enabled: { + type: 'Boolean' + }, + newBook: { + type: bookSchema + }, + newBooks: { + type: [bookSchema] + }, + oldBook: { + type: bookSchema + }, + oldBooks: { + type: [bookSchema] + } + } + }); + let data = { + name: 'John Smith', + newBook: { + title: 100 + }, + newBooks: [ + null, + { + title: 100 + } + ] + }; + let user = new Document(userSchema, data); + + t.deepEqual(user.toObject(), { + name: 'John Smith', + age: null, + enabled: null, + newBook: { + title: '100', + year: null + }, + newBooks: [ + null, + { + title: '100', + year: null + } + ], + oldBook: null, + oldBooks: null + }); +}); + +test('method `reset` should deeply reset fields to their default values', (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'String', + defaultValue: 'Foo' + } + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'String', + defaultValue: 'Bar' + }, + book: { + type: bookSchema, + defaultValue: { + title: 'Baz' + } + }, + books: { + type: [bookSchema], + defaultValue: [ + { + title: 'Qux' + } + ] + } + } + }); + let data = { + name: 100, + book: { + title: 'Quux' + }, + books: [ + { + title: 'Corge' + }, + { + title: 'Grault' + } + ] + }; + let user = new Document(userSchema); + user.populate(data); + user.reset(); + + t.deepEqual(user.toObject(), { + name: 'Bar', + book: { + title: 'Baz' + }, + books: [ + { + title: 'Qux' + } + ] + }); +}); + +test('method `clear` should deeply clear fields', (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'String', + defaultValue: 'Foo' + } + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'String', + defaultValue: 'Bar' + }, + book: { + type: bookSchema, + defaultValue: { + title: 'Baz' + } + }, + books: { + type: [bookSchema], + defaultValue: [ + { + title: 'Qux' + } + ] + } + } + }); + let user = new Document(userSchema); + user.clear(); + + t.deepEqual(user.toObject(), { + name: null, + book: null, + books: null + }); +}); + +test('method `clear` should deeply clear fields', (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'String', + defaultValue: 'Foo' + } + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'String', + defaultValue: 'Bar' + }, + book: { + type: bookSchema, + defaultValue: { + title: 'Baz' + } + }, + books: { + type: [bookSchema], + defaultValue: [ + { + title: 'Qux' + } + ] + } + } + }); + let user = new Document(userSchema); + user.clear(); + + t.deepEqual(user.toObject(), { + name: null, + book: null, + books: null + }); +}); + +test('method `commit` should deeply reset information about changed fields.', (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'String', + defaultValue: 'Foo' + } + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'String', + defaultValue: 'Bar' + }, + book: { + type: bookSchema, + defaultValue: { + title: 'Baz' + } + }, + books: { + type: [bookSchema], + defaultValue: [ + { + title: 'Qux' + } + ] + } + } + }); + let data = { + name: 100, + book: { + title: 'Quux' + }, + books: [ + { + title: 'Corge' + }, + { + title: 'Grault' + } + ] + }; + let user = new Document(userSchema, data); + + t.is(user.$name.initialValue, 'Bar'); + user.commit(); + t.is(user.$name.initialValue, '100'); + t.is(user.book.$title.initialValue, 'Quux'); + t.is(user.books[0].$title.initialValue, 'Corge'); + t.is(user.books[1].$title.initialValue, 'Grault'); +}); + +test('method `rollback` should deeply reset fields to their initial values', (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'String' + } + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'String', + defaultValue: 'Bar' + }, + book: { + type: bookSchema, + defaultValue: { + title: 'Baz' + } + }, + books: { + type: [bookSchema], + defaultValue: [ + { + title: 'Qux' + } + ] + } + } + }); + let data = { + name: 100, + book: { + title: 'Quux' + }, + books: [ + { + title: 'Corge' + }, + { + title: 'Grault' + } + ] + }; + let user = new Document(userSchema); + user.populate(data); + user.rollback(); + + t.deepEqual(user.toObject(), { + name: 'Bar', + book: { + title: 'Baz' + }, + books: [ + { + title: 'Qux' + } + ] + }); +}); + +test('method `isChanged` should return `true` if at least one field has been changed', (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'String' + } + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'String' + }, + book: { + type: bookSchema + }, + books: { + type: [bookSchema] + } + } + }); + + let user = new Document(userSchema); + t.is(user.isChanged(), false); + user.name = 'Foo'; + t.is(user.$name.isChanged(), true); + t.is(user.isChanged(), true); + user.commit(); + user.book = {title: 'Foo'}; + t.is(user.$book.isChanged(), true); + t.is(user.book.isChanged(), true); + t.is(user.isChanged(), true); + user.commit(); + user.book.title = {title: 'Bar'}; + t.is(user.book.$title.isChanged(), true); + t.is(user.isChanged(), true); + user.commit(); + user.books = [{title: 'Foo'}]; + t.is(user.$books.isChanged(), true); + t.is(user.isChanged(), true); + user.commit(); + user.books[0].title = [{title: 'Bar'}]; + t.is(user.books[0].$title.isChanged(), true); + t.is(user.isChanged(), true); +}); + +test('method `equals` should return `true` when the passing object looks the same', (t) => { + let authorSchema = new Schema({ + fields: { + name: { + type: 'String' + } + } + }); + let bookSchema = new Schema({ + fields: { + title: { + type: 'String' + }, + author: { + type: authorSchema + } + } + }); + let userSchema = { + fields: { + name: { + type: 'String', + defaultValue: 'John' + }, + book: { + type: bookSchema + }, + books: { + type: [bookSchema] + } + } + }; + let data0 = { + name: null, + book: { + title: 'Foo', + author: { + name: 'Bar' + } + }, + books: [ + { + title: 'Bar' + } + ] + }; + let data1 = { + name: 'Mandy' + }; + let user0 = new Document(new Schema(userSchema)); + let user1 = new Document(new Schema(userSchema)); + let user2 = new Document(new Schema(userSchema), data0); + let user3 = new Document(new Schema(userSchema), data1); + + t.is(user0.equals(user1), true); + t.is(user0.equals(user2), false); + t.is(user0.equals(user3), false); + t.is(user2.equals(user3), false); + t.is(user0.$name.equals('John'), true); + t.is(user2.$book.equals({ + title: 'Foo', + author: { + name: 'Bar' + } + }), true); + t.is(user2.$books.equals([ + { + title: 'Bar', + author: null + } + ]), true); +}); + +test('method `clone` should return an exact copy of the original', (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'String', + defaultValue: 100 + } + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'String' + }, + book: { + type: bookSchema + }, + books: { + type: [bookSchema] + } + } + }); + let data = { + name: 'John Smith', + books: [ + null, + { + title: 100 + } + ] + }; + + let user = new Document(userSchema, data); + + t.is(user.clone() === user, false); + t.deepEqual(user.clone(), user); +}); + +test('method `validate` should validate fields and return an error object', async (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'String', + validate: { + presence: {message: 'is required'} + } + }, + year: { + type: 'Integer' + } + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'String', + validate: { + presence: {message: 'is required'} + } + }, + newBook: { + type: bookSchema, + validate: { + presence: {message: 'is required'} + } + }, + newBooks: { + type: [bookSchema], + validate: { + presence: {message: 'is required'} + } + }, + oldBook: { + type: bookSchema, + validate: { + presence: {message: 'is required'} + } + }, + oldBooks: { + type: [bookSchema], + validate: { + presence: {message: 'is required'} + } + } + } + }); + + let data = { + oldBook: { + title: '' + }, + oldBooks: [ + null, + { + title: '' + } + ] + }; + + let user = new Document(userSchema, data); + + t.deepEqual(await user.validate(), { + name: { + errors: [{validator: 'presence', message: 'is required'}] + }, + newBook: { + errors: [{validator: 'presence', message: 'is required'}] + }, + newBooks: { + errors: [{validator: 'presence', message: 'is required'}] + }, + oldBook: { + errors: [], + related: { + title: { + errors: [{validator: 'presence', message: 'is required'}] + } + } + }, + oldBooks: { + errors: [], + related: [ + undefined, + { + title: { + errors: [{validator: 'presence', message: 'is required'}] + } + } + ] + } + }); +}); + +test('method `isValid` should return `true` when fields are valid', async (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'String', + validate: { + presence: {message: 'is required'} + } + }, + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'String', + validate: { + presence: {message: 'is required'} + } + }, + book: { + type: bookSchema, + validate: { + presence: {message: 'is required'} + } + }, + books: { + type: [bookSchema], + validate: { + presence: {message: 'is required'} + } + } + } + }); + + let data = { + name: 'Foo', + book: { + title: 'Bar' + }, + books: [ + { + title: 'Baz' + } + ] + }; + + let user = new Document(userSchema, data); + + t.is(await user.$name.isValid(), true); + t.is(await user.book.$title.isValid(), true); + t.is(await user.books[0].$title.isValid(), true); + t.is(await user.isValid(), true); +}); diff --git a/tests/document/cloning.js b/tests/document/cloning.js deleted file mode 100644 index aa306c9..0000000 --- a/tests/document/cloning.js +++ /dev/null @@ -1,40 +0,0 @@ -const test = require('ava'); -const {Document, Schema} = require('../../dist'); - -test('method `clone`', (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String', - defaultValue: 100 - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String' - }, - book: { - type: bookSchema - }, - books: { - type: [bookSchema] - } - } - }); - let data = { - name: 'John Smith', - books: [ - null, - { - title: 100 - } - ] - }; - - let user = new Document(userSchema, data); - - t.is(user.clone() === user, false); - t.deepEqual(user.clone(), user); -}); diff --git a/tests/document/comparison.js b/tests/document/comparison.js deleted file mode 100644 index 13b8b5b..0000000 --- a/tests/document/comparison.js +++ /dev/null @@ -1,41 +0,0 @@ -const test = require('ava'); -const {Document, Schema} = require('../../dist'); - -test('method `equals`', (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String' - } - } - }); - let userSchema = { - fields: { - name: { - type: 'String', - defaultValue: 'John' - }, - book: { - type: bookSchema - }, - books: { - type: [bookSchema] - } - } - }; - let data0 = { - name: null - }; - let data1 = { - name: 'Mandy' - }; - let user0 = new Document(new Schema(userSchema)); - let user1 = new Document(new Schema(userSchema)); - let user2 = new Document(new Schema(userSchema), data0); - let user3 = new Document(new Schema(userSchema), data1); - - t.is(user0.equals(user1), true); - t.is(user0.equals(user2), false); - t.is(user0.equals(user3), false); - t.is(user2.equals(user3), false); -}); diff --git a/tests/document/fields.js b/tests/document/fields.js deleted file mode 100644 index 624a4d5..0000000 --- a/tests/document/fields.js +++ /dev/null @@ -1,256 +0,0 @@ -const test = require('ava'); -const {Document, Schema} = require('../../dist'); - -test('structure type casting', (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String' - }, - year: { - type: 'Integer' - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String' - }, - age: { - type: 'Integer' - }, - enabled: { - type: 'Boolean' - }, - book: { - type: bookSchema - }, - books: { - type: [bookSchema] - }, - tags: { - type: ['String'] - }, - keywords: { - type: [] - } - } - }); - let data = { - name: 100, - age: '35', - enabled: 'true', - book: { - title: 100 - }, - books: [ - { - title: 100 - } - ], - tags: ['foo', 'bar', 100, null], - keywords: ['foo', 'bar', 100, null] - }; - let user = new Document(userSchema, data); - - t.is(user.name, '100'); - t.is(user.age, 35); - t.is(user.enabled, true); - t.is(user.book.title, '100'); - t.is(user.book.year, null); - t.is(user.books[0].title, '100'); - t.is(user.books[0].year, null); - t.deepEqual(user.tags, ['foo', 'bar', '100', null]); - t.deepEqual(user.keywords, ['foo', 'bar', 100, null]); -}); - -test('custom types', (t) => { - let userSchema = new Schema({ - fields: { - name: { - type: 'cool' - } - }, - typeOptions: { - types: { - cool: (v) => `${v}-cool` - } - } - }); - let data = { - name: 100 - }; - let user = new Document(userSchema, data); - - t.is(user.name, '100-cool'); -}); - -test('field default value', (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String', - defaultValue: 100 - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String', - defaultValue: 100 - }, - age: { - type: 'Integer', - defaultValue: '35' - }, - enabled: { - type: 'Boolean', - defaultValue: () => true - }, - book: { - type: bookSchema - }, - books: { - type: [bookSchema] - } - } - }); - let data = { - books: [ - null, - { - title: 100 - } - ] - }; - let user0 = new Document(userSchema); - let user1 = new Document(userSchema, data); - let book0 = new Document(bookSchema); - let book1 = new Document(bookSchema, data.books[1]) - - t.is(user0.name, '100'); - t.is(user0.age, 35); - t.is(user0.enabled, true); - t.is(user0.book, null); - t.deepEqual(user1.books, [null, book1]); - t.is(user1.books[0], null); - t.is(user1.books[1].title, '100'); -}); - -test('field value transformation', (t) => { - let userSchema = new Schema({ - fields: { - name: { - type: 'String', - defaultValue: 100, - get: (value) => `${value}-get`, - set: (value) => `${value}-set` - } - } - }); - let user = new Document(userSchema); - - t.is(user.name, '100-set-get'); -}); - -test('relaxed mode schema', (t) => { - let userSchema = new Schema({ - mode: 'relaxed', - fields: { - name: { - type: 'String', - defaultValue: 100 - } - } - }); - let data = { - name: 'John', - age: 35.5 - }; - let user = new Document(userSchema, data); - - t.is(user.name, 'John'); - t.is(user.age, 35.5); -}); - -test('strict mode schema', (t) => { - let userSchema = new Schema({ - mode: 'strict', - fields: { - name: { - type: 'String', - defaultValue: 100 - } - } - }); - let data = { - name: 'John', - age: 35.5 - }; - let user = new Document(userSchema, data); - - t.is(user.name, 'John'); - t.is(user.age, undefined); -}); - -test('clearing fields', (t) => { - let userSchema = new Schema({ - fields: { - name: { - type: 'String', - defaultValue: 'John' - } - } - }); - let user = new Document(userSchema); - user.clear(); - - t.is(user.name, null); -}); - -test('method `hasPath`', (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String' - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String' - }, - book: { - type: bookSchema - }, - books: { - type: [bookSchema] - } - } - }); - let data = { - name: 100, - book: { - title: 100 - }, - books: [ - { - title: 100 - } - ] - }; - let user0 = new Document(userSchema); - let user1 = new Document(userSchema, data); - - t.is(user0.hasPath('name'), true); - t.is(user0.hasPath('book', 'title'), false); - t.is(user0.hasPath('books', 0, 'title'), false); - t.is(user0.hasPath(['books', 0, 'title']), false); - t.is(user1.hasPath('name'), true); - t.is(user1.hasPath('book', 'title'), true); - t.is(user1.hasPath('books', 0, 'title'), true); - t.is(user1.hasPath(['books', 0, 'title']), true); -}); diff --git a/tests/document/serialization.js b/tests/document/serialization.js deleted file mode 100644 index 045e0d5..0000000 --- a/tests/document/serialization.js +++ /dev/null @@ -1,73 +0,0 @@ -const test = require('ava'); -const {Document, Schema} = require('../../dist'); - -test('method toObject', (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String', - defaultValue: 100 - }, - year: { - type: 'Integer' - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String' - }, - age: { - type: 'float' - }, - enabled: { - type: 'Boolean' - }, - newBook: { - type: bookSchema - }, - newBooks: { - type: [bookSchema] - }, - oldBook: { - type: bookSchema - }, - oldBooks: { - type: [bookSchema] - } - } - }); - let data = { - name: 'John Smith', - newBook: { - title: 100 - }, - newBooks: [ - null, - { - title: 100 - } - ] - }; - let user = new Document(userSchema, data); - - t.deepEqual(user.toObject(), { - name: 'John Smith', - age: null, - enabled: null, - newBook: { - title: '100', - year: null - }, - newBooks: [ - null, - { - title: '100', - year: null - } - ], - oldBook: null, - oldBooks: null - }); -}); diff --git a/tests/document/validation.js b/tests/document/validation.js deleted file mode 100644 index 14dbf37..0000000 --- a/tests/document/validation.js +++ /dev/null @@ -1,194 +0,0 @@ -const test = require('ava'); -const {Document, Schema} = require('../../dist'); - -test('method `validate`', async (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String', - validate: { - presence: {message: 'is required'} - } - }, - year: { - type: 'Integer' - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String', - validate: { - presence: {message: 'is required'} - } - }, - newBook: { - type: bookSchema, - validate: { - presence: {message: 'is required'} - } - }, - newBooks: { - type: [bookSchema], - validate: { - presence: {message: 'is required'} - } - }, - oldBook: { - type: bookSchema, - validate: { - presence: {message: 'is required'} - } - }, - oldBooks: { - type: [bookSchema], - validate: { - presence: {message: 'is required'} - } - } - } - }); - - let data = { - oldBook: { - title: '' - }, - oldBooks: [ - null, - { - title: '' - } - ] - }; - - let user = new Document(userSchema, data); - - t.deepEqual(await user.validate(), { - name: { - errors: [{validator: 'presence', message: 'is required'}] - }, - newBook: { - errors: [{validator: 'presence', message: 'is required'}] - }, - newBooks: { - errors: [{validator: 'presence', message: 'is required'}] - }, - oldBook: { - errors: [], - related: { - title: { - errors: [{validator: 'presence', message: 'is required'}] - } - } - }, - oldBooks: { - errors: [], - related: [ - undefined, - { - title: { - errors: [{validator: 'presence', message: 'is required'}] - } - } - ] - } - }); -}); - -test('method `isValid`', async (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String', - validate: { - presence: {message: 'is required'} - } - }, - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String', - validate: { - presence: {message: 'is required'} - } - }, - book: { - type: bookSchema, - validate: { - presence: {message: 'is required'} - } - }, - books: { - type: [bookSchema], - validate: { - presence: {message: 'is required'} - } - } - } - }); - - let data = { - name: 'John', - book: { - title: 'Coding Is Fun' - }, - books: [ - { - title: 'Coding NodeJs' - } - ] - }; - - let user = new Document(userSchema, data); - - t.is(await user.isValid(), true); -}); - -test('validator parent reference', async (t) => { - let name = null - let validators = { - async coolness (value, definition) { - name = this.$parent.name; - } - } - - let bookSchema = new Schema({ - fields: { - title: { - type: 'String', - validate: { - coolness: {message: 'must be cool'} - } - }, - }, - validatorOptions: { - validators - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String' - }, - books: { - type: [bookSchema] - } - } - }); - - let data = { - name: 'John', - books: [ - { - title: 'Coding NodeJs' - } - ] - }; - - let user = new Document(userSchema, data); - await user.validate(); - t.is(name, 'John'); -}); From 2273494c35c95e84d8efd9c46138074f0f191263 Mon Sep 17 00:00:00 2001 From: xpeper Date: Mon, 31 Oct 2016 00:41:51 +0100 Subject: [PATCH 056/219] documentation --- README.md | 142 +++++++++++++++++++++++++++++++++--------------- package.json | 2 +- src/document.js | 14 ++++- 3 files changed, 109 insertions(+), 49 deletions(-) diff --git a/README.md b/README.md index e47083d..35cf6e5 100644 --- a/README.md +++ b/README.md @@ -78,39 +78,12 @@ let data = { }; let user = new Document(userSchema, data); -user.name; // -> 'John Smith' - -user.$name.value; // -> 'John Smith' -user.$name.defaultValue; // -> 'John Smith' -user.$name.initialValue; // -> 'John Smith' -// -user.$name.commit(); // -> 'John Smith' -user.$name.rollback(); // -> 'John Smith' -user.$name.reset(); // -> 'John Smith' -user.$name.clear(); // -> null -user.$name.equals({}); // -> false -user.$name.isChanged(); // -> false -await user.$name.validate(); // -> {errors: [], related: null} -await user.$name.isValid(); // -> false - -user.hasPath('name'); // -> true -user.populate({}); // -> this -user.toObject(); // -> {} -user.clone(); // -> this -// -user.commit(); // -> this -user.rollback(); // -> this -user.reset(); // -> this -user.clear(); // -> this -user.equals({}); // -> false -user.isChanged(); // -> false -await user.validate(); // -> {errors: [], related: null} await user.isValid(); // -> false ``` ## API -This package consists of two core classes. The `Schema` class represents a configuration object and the `Document` represents a data object defined by the Schema. +This package consists of two core classes. The `Schema` class represents a configuration object and the `Document` represents a data object defined by the Schema. There is also the `Field` class which represents a document field. This package also integrates [*typeable.js*](https://github.com/xpepermint/typeablejs) module for type casting and [*validatable.js*](https://github.com/xpepermint/validatablejs) for validating fields. @@ -120,14 +93,14 @@ Schema represents a configuration object which configures the `Document`. It hol A Schema can also be used as a custom type object. This way you can create a nested data structure by setting a schema instance for a field `type`. When a document is created, each schema in a tree of fields will become an instance of a Document - a tree of documents. -**Schema({fields, mode, validatorOptions, typeOptions})** +**Schema({fields, strict, validatorOptions, typeOptions})** > A class for defining document structure. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ -| fields | Object,Function | Yes | - | An object with fields definition. You should pass a function which returns the object in case of self referencing. -| mode | String | No | strict | A schema type (use `relaxed` to allow dynamic fields not defined by the schema). +| fields | Object,Function | Yes | - | An object with fields definition. You should pass a function which returns the definition object in case of self referencing. +| strict | Boolean | No | true | A schema type (set to `false` to allow dynamic fields not defined in schema). | validatorOptions | Object | No | validatable.js defaults | Configuration options for the `Validator` class, provided by the [validatable.js](https://github.com/xpepermint/validatablejs), which is used for field validation. | typeOptions | Object | No | typeable.js defaults | Configuration options for the `cast` method provided by the [typeable.js](https://github.com/xpepermint/typeablejs), which is used for data type casting. ```js @@ -144,31 +117,31 @@ new Schema({ } }, }, - mode: 'strict', // schema mode + strict: true, // schema mode validatorOptions: {}, // validatable.js configuration options (see the package's page for details) typeOptions: {} // typeable.js configuration options (see the package's page for details) }); ``` -This package uses [*typeable.js*](https://github.com/xpepermint/typeablejs) for data type casting. Many common data types and array types are supported but we can also define custom types or override existing types through a `typeOptions` key. Please check package's website for a list of supported types and further information. +This package uses [*typeable.js*](https://github.com/xpepermint/typeablejs) for data type casting. Many common data types and array types are supported, but we can also define custom types or override existing types through a `typeOptions` key. Please check package's website for a list of supported types and further information. By default, all fields in a schema are set to `null`. We can set a default value for a field by setting the `defaultValue` option. -Field validation is handled by the [*validatable.js*](https://github.com/xpepermint/validatablejs) package. We can configure the package by passing the `validatorOptions` option to our schema which will be passed directly to the `Validator` class. The package provides many built-in validators, allows adding custom validators and overriding existing ones. When a document is created all validator methods share document's context thus we can write context-aware checks. Please check package's website for details. +Validation is handled by the [*validatable.js*](https://github.com/xpepermint/validatablejs) package. We can configure the package by passing the `validatorOptions` option to our schema which will be passed directly to the `Validator` class. The package provides many built-in validators, allows adding custom validators and overriding existing ones. When a document is created all validator methods share document's context thus we can write context-aware checks. Please see package's website for details. ### Document A document is a schema enforced data object. All document properties and configuration options are defined by the schema. -**Document(schema, data)** +**Document(schema, data, parent)** -> A class for creating schema-based objects. +> A class for creating schema enforced objects. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ | schema | Schema | Yes | - | An instance of the Schema class. -| data | Object | No | - | Data object. -| parent | Document | No | - | Parent document instance. +| data | Object | No | - | Initial data object. +| parent | Document | No | - | Parent document instance (for nesting documents). **Document.prototype.$schema**:Schema @@ -180,28 +153,36 @@ A document is a schema enforced data object. All document properties and configu **Document.prototype.$validator**:Validator -> Validator instance. +> Validator instance, used for validating fields. **Document.prototype.clear()**:Document -> Sets a document field to `null`. +> Sets all document fields to `null`. **Document.prototype.clone()**:Document -> Returns a new Document instance which is the exact copy of the original instance. +> Returns a new Document instance which is the exact copy of the original. + +**Document.prototype.commit()**:Document + +> Sets initial value of each document field to the current value of a field. This is how field change tracking is restarted. **Document.prototype.equals(value)**:Boolean -> Returns `true` when the provided `value` represents an object with the same field values as the document. +> Returns `true` when the provided `value` represents an object with the same fields as the document itself. **Document.prototype.hasPath(...keys)**:Boolean -> Returns `true` when all document fields are valid. +> Returns `true` when a field path exists. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ | keys | Array | Yes | - | List of object keys (e.g. `['book', 0, 'title']`). +**Document.prototype.isChanged()**:Boolean + +> Returns `true` if at least one document field has been changed. + **Document.prototype.isValid()**:Promise > Returns `true` when all document fields are valid. @@ -214,13 +195,21 @@ A document is a schema enforced data object. All document properties and configu |--------|------|----------|---------|------------ | data | Object | Yes | - | Data object. +**Document.prototype.reset()**:Document + +> Sets each document field to its default value. + +**Document.prototype.rollback()**:Document + +> Sets each document field to its initial value (last committed value). This is how you can discharge document changes. + **Document.prototype.toObject()**:Object > Converts a document into serialized data object. -**Document.prototype.validate()**:Promise +**Document.prototype.validate()**:Promise(Object) -> Validates all class fields and returns errors. +> Validates all document fields and returns errors. ```js { // return value example @@ -258,6 +247,69 @@ A document is a schema enforced data object. All document properties and configu } ``` +### Field + +When a document field is defined, another field with the same name but prefixed with the `$` sign is set. This special read-only field holds a reference to the actual field instance. + +```js +let user = new Document(schema); +user.name = 'John'; // -> actual document field +user.$name; // -> reference to document field instance +user.$name.isChanged(); // -> calling field instance method +``` + +**Field.prototype.$document**:Document + +> Document instance. + +**Field.prototype.$name**:String + +> Field name. + +**Field.prototype.clear()**:Field + +> Sets field and related sub fields to `null`. + +**Field.prototype.commit()**:Field + +> Sets initial value to the current value. This is how field change tracking is restarted. + +**Field.prototype.defaultValue**:Any + +> A getter which returns the default field value. + +**Field.prototype.equals(value)**:Boolean + +> Returns `true` when the provided `value` represents an object that looks the same. + +**Field.prototype.initialValue**:Any + +> A getter which returns the initial field value (a value from the last commit). + +**Field.prototype.isChanged()**:Boolean + +> Returns `true` if the field or at least one sub field have been changed. + +**Field.prototype.isValid()**:Promise(Boolean) + +> Returns `true` if the field and all sub fields are valid. + +**Field.prototype.reset()**:Field + +> Sets the field to its default value. + +**Field.prototype.rollback()**:Field + +> Sets the field to its initial value (last committed value). This is how you can discharge field's changes. + +**Field.prototype.validate()**:Promise(Object) + +> Validates the field and returns errors. + +**Field.prototype.value**:Any + +> A getter and setter for the value of the field. + ## License (MIT) ``` diff --git a/package.json b/package.json index 54c0ee6..e8c56fb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "1.0.0", + "version": "1.0.1", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/document.js b/src/document.js index 25eacaf..4cda834 100644 --- a/src/document.js +++ b/src/document.js @@ -161,7 +161,7 @@ export class Document { } /* - * Resets all fields to their default values. + * Sets each document field to its default value. */ reset () { @@ -170,6 +170,8 @@ export class Document { for (let name in fields) { this[`$${name}`].reset(); } + + return this; } /* @@ -182,10 +184,12 @@ export class Document { for (let name in fields) { this[`$${name}`].clear(); } + + return this; } /* - * Removes all fileds values by setting them to `null`. + * Sets initial value of each document field to the current value of a field. */ commit () { @@ -194,10 +198,12 @@ export class Document { for (let name in fields) { this[`$${name}`].commit(); } + + return this; } /* - * Resets all fields to their initial values. + * Sets each document field to its initial value (value before last commit). */ rollback () { @@ -206,6 +212,8 @@ export class Document { for (let name in fields) { this[`$${name}`].rollback(); } + + return this; } /* From 56903355231eaa398c01d3981f3c7592c3c50554 Mon Sep 17 00:00:00 2001 From: xpeper Date: Mon, 31 Oct 2016 00:43:39 +0100 Subject: [PATCH 057/219] methods return self instead of undefined --- dist/document.js | 14 +++++++++++--- package.json | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/dist/document.js b/dist/document.js index f500287..5a749c1 100644 --- a/dist/document.js +++ b/dist/document.js @@ -194,7 +194,7 @@ class Document { } /* - * Resets all fields to their default values. + * Sets each document field to its default value. */ reset() { @@ -204,6 +204,8 @@ class Document { for (let name in fields) { this[`$${ name }`].reset(); } + + return this; } /* @@ -217,10 +219,12 @@ class Document { for (let name in fields) { this[`$${ name }`].clear(); } + + return this; } /* - * Removes all fileds values by setting them to `null`. + * Sets initial value of each document field to the current value of a field. */ commit() { @@ -230,10 +234,12 @@ class Document { for (let name in fields) { this[`$${ name }`].commit(); } + + return this; } /* - * Resets all fields to their initial values. + * Sets each document field to its initial value (value before last commit). */ rollback() { @@ -243,6 +249,8 @@ class Document { for (let name in fields) { this[`$${ name }`].rollback(); } + + return this; } /* diff --git a/package.json b/package.json index e8c56fb..8afe000 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "1.0.1", + "version": "1.0.2", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { From fa3ccc8535460ff76f948aa1429bbef68c7f5021 Mon Sep 17 00:00:00 2001 From: xpeper Date: Mon, 31 Oct 2016 00:48:58 +0100 Subject: [PATCH 058/219] minor refactoring --- dist/field.js | 29 ++++++++++++++++++----------- package.json | 2 +- src/field.js | 29 ++++++++++++++++++----------- 3 files changed, 37 insertions(+), 23 deletions(-) diff --git a/dist/field.js b/dist/field.js index 276a381..fef7ac1 100644 --- a/dist/field.js +++ b/dist/field.js @@ -131,27 +131,31 @@ class Field { } /* - * Sets field to the default value. + * Returns the value of a field before last commit. */ - reset() { - return this.value = this.defaultValue; + get initialValue() { + return this._initialValue; } /* - * Removes field's value by setting it to null. + * Sets field to the default value. */ - clear() { - return this.value = null; + reset() { + this.value = this.defaultValue; + + return this; } /* - * Returns the value of a field before last commit. + * Removes field's value by setting it to null. */ - get initialValue() { - return this._initialValue; + clear() { + this.value = null; + + return this; } /* @@ -160,8 +164,9 @@ class Field { commit() { this._commitRelated(this.value); + this._initialValue = (0, _utils.cloneData)(this.value); - return this._initialValue = (0, _utils.cloneData)(this.value); + return this; } /* @@ -183,7 +188,9 @@ class Field { */ rollback() { - return this.value = this.initialValue; + this.value = this.initialValue; + + return this; } /* diff --git a/package.json b/package.json index 8afe000..6d78312 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "1.0.2", + "version": "1.0.3", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/field.js b/src/field.js index 594fcca..f56f78a 100644 --- a/src/field.js +++ b/src/field.js @@ -103,27 +103,31 @@ export class Field { } /* - * Sets field to the default value. + * Returns the value of a field before last commit. */ - reset () { - return this.value = this.defaultValue; + get initialValue () { + return this._initialValue; } /* - * Removes field's value by setting it to null. + * Sets field to the default value. */ - clear () { - return this.value = null; + reset () { + this.value = this.defaultValue; + + return this; } /* - * Returns the value of a field before last commit. + * Removes field's value by setting it to null. */ - get initialValue () { - return this._initialValue; + clear () { + this.value = null; + + return this; } /* @@ -132,8 +136,9 @@ export class Field { commit () { this._commitRelated(this.value); + this._initialValue = cloneData(this.value); - return this._initialValue = cloneData(this.value); + return this; } /* @@ -155,7 +160,9 @@ export class Field { */ rollback () { - return this.value = this.initialValue; + this.value = this.initialValue; + + return this; } /* From b8a1bb99aab3f7b2a170824838da58ca3733a645 Mon Sep 17 00:00:00 2001 From: xpeper Date: Mon, 31 Oct 2016 01:00:59 +0100 Subject: [PATCH 059/219] readme --- README.md | 5 +++-- package.json | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 35cf6e5..233a0d2 100644 --- a/README.md +++ b/README.md @@ -19,9 +19,10 @@ ## Related Projects -* [Typeable.js](https://github.com/xpepermint/typeablejs): A library for checking and casting types. -* [Validatable.js](https://github.com/xpepermint/validatablejs): A library for synchronous and asynchronous validation. * [Contextable.js](https://github.com/xpepermint/contextablejs): Simple, unopinionated and minimalist framework for creating context objects with support for unopinionated ORM, object schemas, type casting, validation and error handling and more. +* [Validatable.js](https://github.com/xpepermint/validatablejs): A library for synchronous and asynchronous validation. +* [Handleable.js](https://github.com/xpepermint/handleablejs): A library for synchronous and asynchronous error handling. +* [Typeable.js](https://github.com/xpepermint/typeablejs): A library for checking and casting types. ## Install diff --git a/package.json b/package.json index 6d78312..6585dcb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "1.0.3", + "version": "1.0.4", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { From 9ac3af4e16d9a4f777b4e615039cb849ad38878f Mon Sep 17 00:00:00 2001 From: xpeper Date: Mon, 31 Oct 2016 02:41:06 +0100 Subject: [PATCH 060/219] readme --- README.md | 18 ++++++------------ package.json | 2 +- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 233a0d2..8b928ab 100644 --- a/README.md +++ b/README.md @@ -215,22 +215,18 @@ A document is a schema enforced data object. All document properties and configu ```js { // return value example name: { // field value is missing - messages: ['is required'], - isValid: false + messages: [{validator: 'presence', message: 'is required'}] }, book: { // nested object is missing - messages: ['is required'], - isValid: false + messages: [{validator: 'presence', message: 'is required'}] }, address: { messages: [], related: { // nested object errors post: { - messages: ['is required'], - isValid: false + messages: [{validator: 'presence', message: 'is required'}] } - }, - isValid: false + } }, friends: { // an array of nested objects has errors messages: [], @@ -238,12 +234,10 @@ A document is a schema enforced data object. All document properties and configu undefined, // the first item was valid { // the second item has errors name: { - messages: ['is required'], - isValid: false + messages: [{validator: 'presence', message: 'is required'}] } } - ], - isValid: false + ] } } ``` diff --git a/package.json b/package.json index 6585dcb..0b73c3e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "1.0.4", + "version": "1.0.5", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { From 0153cbca4cb70a0af35757f09a0849b322a0578b Mon Sep 17 00:00:00 2001 From: xpeper Date: Mon, 31 Oct 2016 03:08:40 +0100 Subject: [PATCH 061/219] readme --- README.md | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 8b928ab..98c0d4c 100644 --- a/README.md +++ b/README.md @@ -144,14 +144,14 @@ A document is a schema enforced data object. All document properties and configu | data | Object | No | - | Initial data object. | parent | Document | No | - | Parent document instance (for nesting documents). -**Document.prototype.$schema**:Schema - -> Schema instance. - **Document.prototype.$parent**:Document > Parent document instance. +**Document.prototype.$schema**:Schema + +> Schema instance. + **Document.prototype.$validator**:Validator > Validator instance, used for validating fields. diff --git a/package.json b/package.json index 0b73c3e..470df1d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "1.0.5", + "version": "1.0.6", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { From e424418871cdae37a49cba37f842409270af8678 Mon Sep 17 00:00:00 2001 From: xpeper Date: Mon, 31 Oct 2016 17:29:29 +0100 Subject: [PATCH 062/219] renaming `hasPath` to `get`, adding `has` --- README.md | 12 +++++++-- dist/document.js | 14 ++++++++--- package.json | 2 +- src/document.js | 14 ++++++++--- tests/document.js | 62 ++++++++++++++++++++++++++++++++++++++++------- 5 files changed, 86 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 98c0d4c..65c05d3 100644 --- a/README.md +++ b/README.md @@ -172,13 +172,21 @@ A document is a schema enforced data object. All document properties and configu > Returns `true` when the provided `value` represents an object with the same fields as the document itself. -**Document.prototype.hasPath(...keys)**:Boolean +**Document.prototype.get(...keys)**:Field + +> Returns a class instance of the field at path. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| keys | Array | Yes | - | Path to a field (e.g. `['book', 0, 'title']`). + +**Document.prototype.has(...keys)**:Boolean > Returns `true` when a field path exists. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ -| keys | Array | Yes | - | List of object keys (e.g. `['book', 0, 'title']`). +| keys | Array | Yes | - | Path to a field (e.g. `['book', 0, 'title']`). **Document.prototype.isChanged()**:Boolean diff --git a/dist/document.js b/dist/document.js index 5a749c1..6f7bdad 100644 --- a/dist/document.js +++ b/dist/document.js @@ -106,10 +106,10 @@ class Document { } /* - * Returns `true` if keys exist on the document. + * Returns a value at path. */ - hasPath() { + get() { for (var _len = arguments.length, keys = Array(_len), _key = 0; _key < _len; _key++) { keys[_key] = arguments[_key]; } @@ -118,7 +118,15 @@ class Document { keys = keys[0]; } - return keys.reduce((a, b) => (a || {})[b], this) !== undefined; + return keys.reduce((a, b) => (a || {})[b], this); + } + + /* + * Returns `true` if field at path exists. + */ + + has() { + return this.get(...arguments) !== undefined; } /* diff --git a/package.json b/package.json index 470df1d..daf21ef 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "1.0.6", + "version": "1.1.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/document.js b/src/document.js index 4cda834..7bad7c2 100644 --- a/src/document.js +++ b/src/document.js @@ -78,15 +78,23 @@ export class Document { } /* - * Returns `true` if keys exist on the document. + * Returns a value at path. */ - hasPath (...keys) { + get (...keys) { if (isArray(keys[0])) { keys = keys[0]; } - return keys.reduce(( a, b ) => (a || {})[b], this) !== undefined; + return keys.reduce((a, b) => (a || {})[b], this); + } + + /* + * Returns `true` if field at path exists. + */ + + has (...keys) { + return this.get(...keys) !== undefined; } /* diff --git a/tests/document.js b/tests/document.js index 607d927..1fc38bd 100644 --- a/tests/document.js +++ b/tests/document.js @@ -214,7 +214,51 @@ test('method `populate` should set custom fields when schema strict=false', (t) t.is(user.age, 35.5); }); -test('method `hasPath` should deeply check field existance', (t) => { +test('method `get` should return an instance of a field at path', (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'String' + } + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'String' + }, + book: { + type: bookSchema + }, + books: { + type: [bookSchema] + } + } + }); + let data = { + name: 'Foo', + book: { + title: 'Bar' + }, + books: [ + { + title: 'Baz' + } + ] + }; + let user0 = new Document(userSchema); + let user1 = new Document(userSchema, data); + + t.is(user0.get('name'), null); + t.is(user1.get('name'), 'Foo'); + t.is(user1.get('$name').value, 'Foo'); + t.is(user0.get('book', 'title'), undefined); + t.is(user1.get('book', 'title'), 'Bar'); + t.is(user0.get('books', 0, 'title'), undefined); + t.is(user1.get('books', 0, '$title').value, 'Baz'); +}); + +test('method `has` should check field existance at path', (t) => { let bookSchema = new Schema({ fields: { title: { @@ -249,14 +293,14 @@ test('method `hasPath` should deeply check field existance', (t) => { let user0 = new Document(userSchema); let user1 = new Document(userSchema, data); - t.is(user0.hasPath('name'), true); - t.is(user0.hasPath('book', 'title'), false); - t.is(user0.hasPath('books', 0, 'title'), false); - t.is(user0.hasPath(['books', 0, 'title']), false); - t.is(user1.hasPath('name'), true); - t.is(user1.hasPath('book', 'title'), true); - t.is(user1.hasPath('books', 0, 'title'), true); - t.is(user1.hasPath(['books', 0, 'title']), true); + t.is(user0.has('name'), true); + t.is(user0.has('book', 'title'), false); + t.is(user0.has('books', 0, 'title'), false); + t.is(user0.has(['books', 0, 'title']), false); + t.is(user1.has('name'), true); + t.is(user1.has('book', 'title'), true); + t.is(user1.has('books', 0, 'title'), true); + t.is(user1.has(['books', 0, 'title']), true); }); test('method `toObject` should convert a document into serialized data object', (t) => { From 126333fd0e0c8e572fec4a8b8aca1d4e684b930e Mon Sep 17 00:00:00 2001 From: xpeper Date: Mon, 31 Oct 2016 17:36:24 +0100 Subject: [PATCH 063/219] consistent validation object --- README.md | 16 ++++++++++------ dist/field.js | 15 +++++---------- package.json | 2 +- src/field.js | 17 ++++++----------- tests/document.js | 15 ++++++++++----- 5 files changed, 32 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 65c05d3..507ffca 100644 --- a/README.md +++ b/README.md @@ -223,26 +223,30 @@ A document is a schema enforced data object. All document properties and configu ```js { // return value example name: { // field value is missing - messages: [{validator: 'presence', message: 'is required'}] + errors: [{validator: 'presence', message: 'is required'}], + related: undefined }, book: { // nested object is missing - messages: [{validator: 'presence', message: 'is required'}] + errors: [{validator: 'presence', message: 'is required'}], + related: undefined }, address: { - messages: [], + errors: [], related: { // nested object errors post: { - messages: [{validator: 'presence', message: 'is required'}] + errors: [{validator: 'presence', message: 'is required'}], + related: undefined } } }, friends: { // an array of nested objects has errors - messages: [], + errors: [], related: [ undefined, // the first item was valid { // the second item has errors name: { - messages: [{validator: 'presence', message: 'is required'}] + errors: [{validator: 'presence', message: 'is required'}], + related: undefined } } ] diff --git a/dist/field.js b/dist/field.js index fef7ac1..1491de9 100644 --- a/dist/field.js +++ b/dist/field.js @@ -217,17 +217,12 @@ class Field { var _this = this; return (0, _asyncToGenerator3.default)(function* () { - let data = {}; + let data = { + errors: yield _this._validateValue(_this.value), + related: yield _this._validateRelated(_this.value) + }; - let errors = yield _this._validateValue(_this.value); - data.errors = errors; - - let related = yield _this._validateRelated(_this.value); - if (related) { - data.related = related; - } - - let isValid = errors.length === 0 && _this._isRelatedValid(related); + let isValid = data.errors.length === 0 && _this._isRelatedValid(data.related); return !isValid ? data : undefined; })(); } diff --git a/package.json b/package.json index daf21ef..eb5d807 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "1.1.0", + "version": "1.2.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/field.js b/src/field.js index f56f78a..ae4f505 100644 --- a/src/field.js +++ b/src/field.js @@ -161,7 +161,7 @@ export class Field { rollback () { this.value = this.initialValue; - + return this; } @@ -186,19 +186,14 @@ export class Field { */ async validate() { - let data = {} - - let errors = await this._validateValue(this.value); - data.errors = errors; - - let related = await this._validateRelated(this.value); - if (related) { - data.related = related; + let data = { + errors: await this._validateValue(this.value), + related: await this._validateRelated(this.value) } let isValid = ( - errors.length === 0 - && this._isRelatedValid(related) + data.errors.length === 0 + && this._isRelatedValid(data.related) ); return !isValid ? data : undefined; } diff --git a/tests/document.js b/tests/document.js index 1fc38bd..b357f92 100644 --- a/tests/document.js +++ b/tests/document.js @@ -856,19 +856,23 @@ test('method `validate` should validate fields and return an error object', asyn t.deepEqual(await user.validate(), { name: { - errors: [{validator: 'presence', message: 'is required'}] + errors: [{validator: 'presence', message: 'is required'}], + related: undefined }, newBook: { - errors: [{validator: 'presence', message: 'is required'}] + errors: [{validator: 'presence', message: 'is required'}], + related: undefined }, newBooks: { - errors: [{validator: 'presence', message: 'is required'}] + errors: [{validator: 'presence', message: 'is required'}], + related: undefined }, oldBook: { errors: [], related: { title: { - errors: [{validator: 'presence', message: 'is required'}] + errors: [{validator: 'presence', message: 'is required'}], + related: undefined } } }, @@ -878,7 +882,8 @@ test('method `validate` should validate fields and return an error object', asyn undefined, { title: { - errors: [{validator: 'presence', message: 'is required'}] + errors: [{validator: 'presence', message: 'is required'}], + related: undefined } } ] From 830001397be8bfad8391fd3e5ea1f980b96e52b8 Mon Sep 17 00:00:00 2001 From: xpeper Date: Wed, 2 Nov 2016 20:16:47 +0100 Subject: [PATCH 064/219] adding document.$root --- README.md | 4 +++ dist/document.js | 18 +++++++++++ package.json | 2 +- src/document.js | 19 ++++++++++++ tests/document.js | 76 +++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 118 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 507ffca..f5764bd 100644 --- a/README.md +++ b/README.md @@ -148,6 +148,10 @@ A document is a schema enforced data object. All document properties and configu > Parent document instance. +**Document.prototype.$root**:Document + +> The first document instance in a tree of documents. + **Document.prototype.$schema**:Schema > Schema instance. diff --git a/dist/document.js b/dist/document.js index 6f7bdad..9b529c4 100644 --- a/dist/document.js +++ b/dist/document.js @@ -57,6 +57,9 @@ class Document { Object.defineProperty(this, '$parent', { value: parent }); + Object.defineProperty(this, '$root', { + get: () => this._getRootDocument() + }); Object.defineProperty(this, '$validator', { value: this._createValidator() }); @@ -65,6 +68,21 @@ class Document { this._populateFields(data); } + /* + * Loops up on the tree and returns the first document in the tree. + */ + + _getRootDocument() { + let root = this; + do { + if (root.$parent) { + root = root.$parent; + } else { + return root; + } + } while (true); + } + /* * Returns a new instance of validator. */ diff --git a/package.json b/package.json index eb5d807..efc6e86 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "1.2.0", + "version": "1.3.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/document.js b/src/document.js index 7bad7c2..d21edf7 100644 --- a/src/document.js +++ b/src/document.js @@ -30,6 +30,9 @@ export class Document { Object.defineProperty(this, '$parent', { value: parent, }); + Object.defineProperty(this, '$root', { + get: () => this._getRootDocument(), + }); Object.defineProperty(this, '$validator', { value: this._createValidator(), }); @@ -38,6 +41,22 @@ export class Document { this._populateFields(data); } + /* + * Loops up on the tree and returns the first document in the tree. + */ + + _getRootDocument () { + let root = this; + do { + if (root.$parent) { + root = root.$parent; + } + else { + return root; + } + } while (true); + } + /* * Returns a new instance of validator. */ diff --git a/tests/document.js b/tests/document.js index b357f92..d339116 100644 --- a/tests/document.js +++ b/tests/document.js @@ -214,6 +214,82 @@ test('method `populate` should set custom fields when schema strict=false', (t) t.is(user.age, 35.5); }); +test('variable `$parent` should return the parent document', (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'String' + } + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'String' + }, + book: { + type: bookSchema + }, + books: { + type: [bookSchema] + } + } + }); + let data = { + book: { + title: null + }, + books: [ + { + title: null + } + ] + }; + let user = new Document(userSchema, data); + + t.is(user.$parent, null); + t.is(user.book.$parent, user); + t.is(user.books[0].$parent, user); +}); + +test('variable `$root` should return the first document in a tree of nested documents', (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'String' + } + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'String' + }, + book: { + type: bookSchema + }, + books: { + type: [bookSchema] + } + } + }); + let data = { + book: { + title: null + }, + books: [ + { + title: null + } + ] + }; + let user = new Document(userSchema, data); + + t.is(user.$root, user); + t.is(user.book.$root, user); + t.is(user.books[0].$root, user); +}); + test('method `get` should return an instance of a field at path', (t) => { let bookSchema = new Schema({ fields: { From f93b1142e35e5592073b3b2ef171902b1b13073d Mon Sep 17 00:00:00 2001 From: xpeper Date: Wed, 2 Nov 2016 23:09:25 +0100 Subject: [PATCH 065/219] refactoring, allow overriding field's class --- dist/{document.js => documents.js} | 18 +++++++++++------- dist/{field.js => fields.js} | 6 +++--- dist/index.js | 8 ++++---- dist/{schema.js => schemas.js} | 0 package.json | 2 +- src/{document.js => documents.js} | 20 ++++++++++++-------- src/{field.js => fields.js} | 2 +- src/index.js | 4 ++-- src/{schema.js => schemas.js} | 0 9 files changed, 34 insertions(+), 26 deletions(-) rename dist/{document.js => documents.js} (92%) rename dist/{field.js => fields.js} (97%) rename dist/{schema.js => schemas.js} (100%) rename src/{document.js => documents.js} (90%) rename src/{field.js => fields.js} (99%) rename src/{schema.js => schemas.js} (100%) diff --git a/dist/document.js b/dist/documents.js similarity index 92% rename from dist/document.js rename to dist/documents.js index 9b529c4..736df4f 100644 --- a/dist/document.js +++ b/dist/documents.js @@ -31,9 +31,9 @@ var _validatable = require('validatable'); var _utils = require('./utils'); -var _schema = require('./schema'); +var _schemas = require('./schemas'); -var _field = require('./field'); +var _fields = require('./fields'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -51,19 +51,23 @@ class Document { let data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; let parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - Object.defineProperty(this, '$schema', { + Object.defineProperty(this, '$schema', { // schema instance value: schema }); - Object.defineProperty(this, '$parent', { + Object.defineProperty(this, '$parent', { // parent document instance value: parent }); - Object.defineProperty(this, '$root', { + Object.defineProperty(this, '$root', { // root document instance get: () => this._getRootDocument() }); - Object.defineProperty(this, '$validator', { + Object.defineProperty(this, '$validator', { // validatable.js instance value: this._createValidator() }); + Object.defineProperty(this, '$Field', { // field class + value: _fields.Field + }); + this._defineFields(); this._populateFields(data); } @@ -109,7 +113,7 @@ class Document { */ _defineField(name) { - let field = new _field.Field(this, name); + let field = new this.$Field(this, name); (0, _defineProperty2.default)(this, name, { // field definition get: () => field.value, diff --git a/dist/field.js b/dist/fields.js similarity index 97% rename from dist/field.js rename to dist/fields.js index 1491de9..a7f4d75 100644 --- a/dist/field.js +++ b/dist/fields.js @@ -25,7 +25,7 @@ var _deepEqual2 = _interopRequireDefault(_deepEqual); var _utils = require('./utils'); -var _schema = require('./schema'); +var _schemas = require('./schemas'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -255,12 +255,12 @@ class Field { if (!value) { return undefined; - } else if (type instanceof _schema.Schema) { + } else if (type instanceof _schemas.Schema) { return yield value.validate(); } else if ((0, _typeable.isArray)(type) && (0, _typeable.isArray)(value)) { let items = []; for (let v of value) { - if (type[0] instanceof _schema.Schema) { + if (type[0] instanceof _schemas.Schema) { items.push(v ? yield v.validate() : undefined); } else { items.push((yield _this3._validateValue(v))); diff --git a/dist/index.js b/dist/index.js index 445c94f..349c8f0 100644 --- a/dist/index.js +++ b/dist/index.js @@ -5,13 +5,13 @@ Object.defineProperty(exports, "__esModule", { }); exports.Document = exports.Schema = undefined; -var _schema = require('./schema'); +var _schemas = require('./schemas'); -var _document = require('./document'); +var _documents = require('./documents'); /* * Exposing public classes. */ -exports.Schema = _schema.Schema; -exports.Document = _document.Document; \ No newline at end of file +exports.Schema = _schemas.Schema; +exports.Document = _documents.Document; \ No newline at end of file diff --git a/dist/schema.js b/dist/schemas.js similarity index 100% rename from dist/schema.js rename to dist/schemas.js diff --git a/package.json b/package.json index efc6e86..d0db52f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "1.3.0", + "version": "1.3.1", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/document.js b/src/documents.js similarity index 90% rename from src/document.js rename to src/documents.js index d21edf7..5cd1cb3 100644 --- a/src/document.js +++ b/src/documents.js @@ -10,8 +10,8 @@ import { import deeplyEquals from 'deep-equal'; import {Validator} from 'validatable'; import {cloneData} from './utils'; -import {Schema} from './schema'; -import {Field} from './field'; +import {Schema} from './schemas'; +import {Field} from './fields'; /* * The core schema-based object class. @@ -24,17 +24,21 @@ export class Document { */ constructor (schema, data={}, parent=null) { - Object.defineProperty(this, '$schema', { + Object.defineProperty(this, '$schema', { // schema instance value: schema }); - Object.defineProperty(this, '$parent', { + Object.defineProperty(this, '$parent', { // parent document instance value: parent, }); - Object.defineProperty(this, '$root', { + Object.defineProperty(this, '$root', { // root document instance get: () => this._getRootDocument(), }); - Object.defineProperty(this, '$validator', { - value: this._createValidator(), + Object.defineProperty(this, '$validator', { // validatable.js instance + value: this._createValidator() + }); + + Object.defineProperty(this, '$Field', { // field class + value: Field }); this._defineFields(); @@ -82,7 +86,7 @@ export class Document { */ _defineField (name) { - let field = new Field(this, name); + let field = new this.$Field(this, name); Object.defineProperty(this, name, { // field definition get: () => field.value, diff --git a/src/field.js b/src/fields.js similarity index 99% rename from src/field.js rename to src/fields.js index ae4f505..97fe0a9 100644 --- a/src/field.js +++ b/src/fields.js @@ -8,7 +8,7 @@ import { import deeplyEquals from 'deep-equal'; import {cloneData} from './utils'; -import {Schema} from './schema'; +import {Schema} from './schemas'; /* * Document field class. diff --git a/src/index.js b/src/index.js index 492cfb5..0b867a9 100644 --- a/src/index.js +++ b/src/index.js @@ -1,5 +1,5 @@ -import {Schema} from './schema'; -import {Document} from './document'; +import {Schema} from './schemas'; +import {Document} from './documents'; /* * Exposing public classes. diff --git a/src/schema.js b/src/schemas.js similarity index 100% rename from src/schema.js rename to src/schemas.js From b7c62832f624886c298acea78bbe01b357fa201a Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 5 Nov 2016 15:44:53 +0100 Subject: [PATCH 066/219] upgrading related dependencies --- dist/fields.js | 11 +++--- dist/index.js | 7 ++-- dist/schemas.js | 39 ++++++-------------- package.json | 6 ++-- src/fields.js | 1 - src/index.js | 3 +- src/schemas.js | 10 +----- tests/document.js | 90 +++++++++++++++++++++++------------------------ tests/index.js | 5 +-- 9 files changed, 73 insertions(+), 99 deletions(-) diff --git a/dist/fields.js b/dist/fields.js index a7f4d75..d56dd33 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -78,8 +78,8 @@ class Field { set value(value) { var _$document$$schema$fi = this.$document.$schema.fields[this.$name]; - let set = _$document$$schema$fi.set; - let type = _$document$$schema$fi.type; + let set = _$document$$schema$fi.set, + type = _$document$$schema$fi.type; value = this._cast(value, type); // value type casting @@ -97,9 +97,9 @@ class Field { get defaultValue() { var _$document$$schema$fi2 = this.$document.$schema.fields[this.$name]; - let type = _$document$$schema$fi2.type; - let set = _$document$$schema$fi2.set; - let defaultValue = _$document$$schema$fi2.defaultValue; + let type = _$document$$schema$fi2.type, + set = _$document$$schema$fi2.set, + defaultValue = _$document$$schema$fi2.defaultValue; let value = (0, _typeable.isFunction)(defaultValue) ? defaultValue(this._document) : defaultValue; @@ -237,7 +237,6 @@ class Field { return (0, _asyncToGenerator3.default)(function* () { let validate = _this2.$document.$schema.fields[_this2.$name].validate; - return yield _this2.$document.$validator.validate(value, validate); })(); } diff --git a/dist/index.js b/dist/index.js index 349c8f0..46def90 100644 --- a/dist/index.js +++ b/dist/index.js @@ -3,15 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.Document = exports.Schema = undefined; +exports.ValidationError = exports.Document = exports.Schema = undefined; var _schemas = require('./schemas'); var _documents = require('./documents'); +var _validatable = require('validatable'); + /* * Exposing public classes. */ exports.Schema = _schemas.Schema; -exports.Document = _documents.Document; \ No newline at end of file +exports.Document = _documents.Document; +exports.ValidationError = _validatable.ValidationError; \ No newline at end of file diff --git a/dist/schemas.js b/dist/schemas.js index 9589315..5ad8cdb 100644 --- a/dist/schemas.js +++ b/dist/schemas.js @@ -3,25 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.Schema = exports.validatorDefaults = undefined; - -var _assign = require('babel-runtime/core-js/object/assign'); - -var _assign2 = _interopRequireDefault(_assign); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/* -* Validator default options. -*/ - -const validatorDefaults = exports.validatorDefaults = { - errorBuilder: (validator, value, _ref) => { - let message = _ref.message; - return { validator, message }; - } -}; - /* * A class for defining Document structure and properties. */ @@ -33,16 +14,16 @@ class Schema { */ constructor() { - var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + _ref$fields = _ref.fields; - var _ref2$fields = _ref2.fields; - let fields = _ref2$fields === undefined ? {} : _ref2$fields; - var _ref2$strict = _ref2.strict; - let strict = _ref2$strict === undefined ? true : _ref2$strict; - var _ref2$validatorOption = _ref2.validatorOptions; - let validatorOptions = _ref2$validatorOption === undefined ? {} : _ref2$validatorOption; - var _ref2$typeOptions = _ref2.typeOptions; - let typeOptions = _ref2$typeOptions === undefined ? {} : _ref2$typeOptions; + let fields = _ref$fields === undefined ? {} : _ref$fields; + var _ref$strict = _ref.strict; + let strict = _ref$strict === undefined ? true : _ref$strict; + var _ref$validatorOptions = _ref.validatorOptions; + let validatorOptions = _ref$validatorOptions === undefined ? {} : _ref$validatorOptions; + var _ref$typeOptions = _ref.typeOptions; + let typeOptions = _ref$typeOptions === undefined ? {} : _ref$typeOptions; Object.defineProperty(this, 'fields', { // document fields get: () => typeof fields === 'function' ? fields() : fields @@ -51,7 +32,7 @@ class Schema { value: strict }); Object.defineProperty(this, 'validatorOptions', { // options for validatable.js - value: (0, _assign2.default)({}, validatorDefaults, validatorOptions) + value: validatorOptions }); Object.defineProperty(this, 'typeOptions', { // options for typeable.js value: typeOptions diff --git a/package.json b/package.json index d0db52f..68ba560 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "1.3.1", + "version": "1.4.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -49,7 +49,7 @@ }, "dependencies": { "deep-equal": "1.0.x", - "typeable": "0.7.x", - "validatable": "0.5.x" + "typeable": "0.9.x", + "validatable": "0.7.x" } } diff --git a/src/fields.js b/src/fields.js index 97fe0a9..8e446e3 100644 --- a/src/fields.js +++ b/src/fields.js @@ -204,7 +204,6 @@ export class Field { async _validateValue (value) { let {validate} = this.$document.$schema.fields[this.$name]; - return await this.$document.$validator.validate(value, validate); } diff --git a/src/index.js b/src/index.js index 0b867a9..7ea572f 100644 --- a/src/index.js +++ b/src/index.js @@ -1,8 +1,9 @@ import {Schema} from './schemas'; import {Document} from './documents'; +import {ValidationError} from 'validatable'; /* * Exposing public classes. */ -export {Schema, Document}; +export {Schema, Document, ValidationError}; diff --git a/src/schemas.js b/src/schemas.js index 3229b85..48b5ef4 100644 --- a/src/schemas.js +++ b/src/schemas.js @@ -1,11 +1,3 @@ -/* -* Validator default options. -*/ - -export const validatorDefaults = { - errorBuilder: (validator, value, {message}) => ({validator, message}) -}; - /* * A class for defining Document structure and properties. */ @@ -24,7 +16,7 @@ export class Schema { value: strict }); Object.defineProperty(this, 'validatorOptions', { // options for validatable.js - value: Object.assign({}, validatorDefaults, validatorOptions) + value: validatorOptions }); Object.defineProperty(this, 'typeOptions', { // options for typeable.js value: typeOptions diff --git a/tests/document.js b/tests/document.js index d339116..070734c 100644 --- a/tests/document.js +++ b/tests/document.js @@ -1,5 +1,9 @@ -const test = require('ava'); -const {Document, Schema} = require('../dist'); +import test from 'ava'; +import { + Document, + Schema, + ValidationError +} from '../dist'; test('field value should be converted to the specified type', (t) => { let bookSchema = new Schema({ @@ -872,9 +876,9 @@ test('method `validate` should validate fields and return an error object', asyn fields: { title: { type: 'String', - validate: { - presence: {message: 'is required'} - } + validate: [ + {name: 'presence', message: 'is required'} + ] }, year: { type: 'Integer' @@ -885,69 +889,63 @@ test('method `validate` should validate fields and return an error object', asyn fields: { name: { type: 'String', - validate: { - presence: {message: 'is required'} - } + validate: [ + {name: 'presence', message: 'is required'} + ] }, newBook: { type: bookSchema, - validate: { - presence: {message: 'is required'} - } + validate: [ + {name: 'presence', message: 'is required'} + ] }, newBooks: { type: [bookSchema], - validate: { - presence: {message: 'is required'} - } + validate: [ + {name: 'presence', message: 'is required'} + ] }, oldBook: { type: bookSchema, - validate: { - presence: {message: 'is required'} - } + validate: [ + {name: 'presence', message: 'is required'} + ] }, oldBooks: { type: [bookSchema], - validate: { - presence: {message: 'is required'} - } + validate: [ + {name: 'presence', message: 'is required'} + ] } } }); let data = { - oldBook: { - title: '' - }, - oldBooks: [ - null, - { - title: '' - } - ] + oldBook: {}, + oldBooks: [null, {}] }; let user = new Document(userSchema, data); + let error = new ValidationError(undefined, {name: "presence", message: "is required"}); t.deepEqual(await user.validate(), { name: { - errors: [{validator: 'presence', message: 'is required'}], + errors: [error], related: undefined }, newBook: { - errors: [{validator: 'presence', message: 'is required'}], + errors: [error], related: undefined }, newBooks: { - errors: [{validator: 'presence', message: 'is required'}], + errors: [error], related: undefined }, oldBook: { errors: [], related: { title: { - errors: [{validator: 'presence', message: 'is required'}], + errors: [error], related: undefined } } @@ -958,7 +956,7 @@ test('method `validate` should validate fields and return an error object', asyn undefined, { title: { - errors: [{validator: 'presence', message: 'is required'}], + errors: [error], related: undefined } } @@ -972,9 +970,9 @@ test('method `isValid` should return `true` when fields are valid', async (t) => fields: { title: { type: 'String', - validate: { - presence: {message: 'is required'} - } + validate: [ + {name: 'presence', message: 'is required'} + ] }, } }); @@ -982,21 +980,21 @@ test('method `isValid` should return `true` when fields are valid', async (t) => fields: { name: { type: 'String', - validate: { - presence: {message: 'is required'} - } + validate: [ + {name: 'presence', message: 'is required'} + ] }, book: { type: bookSchema, - validate: { - presence: {message: 'is required'} - } + validate: [ + {name: 'presence', message: 'is required'} + ] }, books: { type: [bookSchema], - validate: { - presence: {message: 'is required'} - } + validate: [ + {name: 'presence', message: 'is required'} + ] } } }); diff --git a/tests/index.js b/tests/index.js index c2f29aa..b7ed14c 100644 --- a/tests/index.js +++ b/tests/index.js @@ -1,7 +1,8 @@ -const test = require('ava'); -const objectschema = require('../dist'); +import test from 'ava'; +import * as objectschema from '../dist'; test('exposed content', (t) => { t.is(!!objectschema.Schema, true); t.is(!!objectschema.Document, true); + t.is(!!objectschema.ValidationError, true); }); From 1fe301ebef5732a5b51d2db3dc80a07e6f3fd92a Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 5 Nov 2016 15:46:36 +0100 Subject: [PATCH 067/219] travis configuration --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 58223d0..b13747c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,4 @@ language: node_js node_js: + - "7" - "6" - - "5" From 21b077252ede61a1f98abf404d28f23ec408ed41 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 5 Nov 2016 15:46:52 +0100 Subject: [PATCH 068/219] version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 68ba560..e510f8c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "1.4.0", + "version": "1.4.1", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { From 4349e7fd482d76252b9aee05f60c56b234161d50 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 5 Nov 2016 20:19:36 +0100 Subject: [PATCH 069/219] refactoring validation, adding InvalidFieldError --- README.md | 166 ++++++++++++++++++++++++---------------------- dist/documents.js | 12 ++-- dist/fields.js | 87 +++++++++++++++++------- dist/index.js | 7 +- giphy.gif | Bin 237606 -> 0 bytes package.json | 4 +- src/documents.js | 14 ++-- src/fields.js | 82 ++++++++++++++++------- src/index.js | 5 +- tests/document.js | 73 +++++++++----------- tests/index.js | 3 +- 11 files changed, 259 insertions(+), 194 deletions(-) delete mode 100644 giphy.gif diff --git a/README.md b/README.md index f5764bd..52c279a 100644 --- a/README.md +++ b/README.md @@ -4,18 +4,18 @@ > Advanced schema enforced JavaScript objects. - +This is a light weight open source package for use on **server or in browser**. The source code is available on [GitHub](https://github.com/xpepermint/objectschemajs) where you can also find our [issue tracker](https://github.com/xpepermint/objectschemajs/issues). ## Features * Type casting * Custom data types * Field default value -* Field value transformation with custom getter and setter +* Field value transformation with getter and setter * Strict and relaxed schemas * Document nesting with support for self referencing -* Field change tracking, data commit and rollback -* Field validation +* Change tracking, data commits and rollbacks +* Advanced field validation ## Related Projects @@ -50,21 +50,23 @@ let bookSchema = new Schema({ let userSchema = new Schema({ fields: { - name: { - type: 'String', - validate: { - presence: { - message: 'is required' + name: { // field name + type: 'String', // field type + validate: [ + { + name: 'presence', // validator name + message: 'is required' // validator error message } - } + ] }, books: { type: [bookSchema], - validate: { - presence: { + validate: [ + { + name: 'presence', message: 'is required' } - } + ] } } }); @@ -111,11 +113,12 @@ new Schema({ email: { // a field name holding a field definition type: 'String', // a field data type provided by typeable.js defaultValue: 'John Smith', // a default field value - validate: { // field validations provided by validatable.js - presence: { // validator name - message: 'is required' // validator option + validate: [ // field validations provided by validatable.js + { // validator recipe + name: 'presence', // validator name + message: 'is required' // validator error message } - } + ] }, }, strict: true, // schema mode @@ -144,39 +147,39 @@ A document is a schema enforced data object. All document properties and configu | data | Object | No | - | Initial data object. | parent | Document | No | - | Parent document instance (for nesting documents). -**Document.prototype.$parent**:Document +**Document.prototype.$parent**: Document > Parent document instance. -**Document.prototype.$root**:Document +**Document.prototype.$root**: Document > The first document instance in a tree of documents. -**Document.prototype.$schema**:Schema +**Document.prototype.$schema**: Schema > Schema instance. -**Document.prototype.$validator**:Validator +**Document.prototype.$validator**: Validator > Validator instance, used for validating fields. -**Document.prototype.clear()**:Document +**Document.prototype.clear()**: Document > Sets all document fields to `null`. -**Document.prototype.clone()**:Document +**Document.prototype.clone()**: Document > Returns a new Document instance which is the exact copy of the original. -**Document.prototype.commit()**:Document +**Document.prototype.commit()**: Document > Sets initial value of each document field to the current value of a field. This is how field change tracking is restarted. -**Document.prototype.equals(value)**:Boolean +**Document.prototype.equals(value)**: Boolean > Returns `true` when the provided `value` represents an object with the same fields as the document itself. -**Document.prototype.get(...keys)**:Field +**Document.prototype.get(...keys)**: Field > Returns a class instance of the field at path. @@ -184,7 +187,7 @@ A document is a schema enforced data object. All document properties and configu |--------|------|----------|---------|------------ | keys | Array | Yes | - | Path to a field (e.g. `['book', 0, 'title']`). -**Document.prototype.has(...keys)**:Boolean +**Document.prototype.has(...keys)**: Boolean > Returns `true` when a field path exists. @@ -192,15 +195,15 @@ A document is a schema enforced data object. All document properties and configu |--------|------|----------|---------|------------ | keys | Array | Yes | - | Path to a field (e.g. `['book', 0, 'title']`). -**Document.prototype.isChanged()**:Boolean +**Document.prototype.isChanged()**: Boolean > Returns `true` if at least one document field has been changed. -**Document.prototype.isValid()**:Promise +**Document.prototype.isValid()**: Promise > Returns `true` when all document fields are valid. -**Document.prototype.populate(data)**:Document +**Document.prototype.populate(data)**: Document > Applies data to a document. @@ -208,56 +211,22 @@ A document is a schema enforced data object. All document properties and configu |--------|------|----------|---------|------------ | data | Object | Yes | - | Data object. -**Document.prototype.reset()**:Document +**Document.prototype.reset()**: Document > Sets each document field to its default value. -**Document.prototype.rollback()**:Document +**Document.prototype.rollback()**: Document > Sets each document field to its initial value (last committed value). This is how you can discharge document changes. -**Document.prototype.toObject()**:Object +**Document.prototype.toObject()**: Object > Converts a document into serialized data object. -**Document.prototype.validate()**:Promise(Object) +**Document.prototype.validate()**: Promise > Validates all document fields and returns errors. -```js -{ // return value example - name: { // field value is missing - errors: [{validator: 'presence', message: 'is required'}], - related: undefined - }, - book: { // nested object is missing - errors: [{validator: 'presence', message: 'is required'}], - related: undefined - }, - address: { - errors: [], - related: { // nested object errors - post: { - errors: [{validator: 'presence', message: 'is required'}], - related: undefined - } - } - }, - friends: { // an array of nested objects has errors - errors: [], - related: [ - undefined, // the first item was valid - { // the second item has errors - name: { - errors: [{validator: 'presence', message: 'is required'}], - related: undefined - } - } - ] - } -} -``` - ### Field When a document field is defined, another field with the same name but prefixed with the `$` sign is set. This special read-only field holds a reference to the actual field instance. @@ -269,58 +238,93 @@ user.$name; // -> reference to document field instance user.$name.isChanged(); // -> calling field instance method ``` -**Field.prototype.$document**:Document +**Field(document, name)** + +> Document field class. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| document | Document | Yes | - | An instance of a Document. +| name | String | Yes | - | Field name + +**Field.prototype.$document**: Document > Document instance. -**Field.prototype.$name**:String +**Field.prototype.$name**: String > Field name. -**Field.prototype.clear()**:Field +**Field.prototype.clear()**: Field > Sets field and related sub fields to `null`. -**Field.prototype.commit()**:Field +**Field.prototype.commit()**: Field > Sets initial value to the current value. This is how field change tracking is restarted. -**Field.prototype.defaultValue**:Any +**Field.prototype.defaultValue**: Any > A getter which returns the default field value. -**Field.prototype.equals(value)**:Boolean +**Field.prototype.equals(value)**: Boolean > Returns `true` when the provided `value` represents an object that looks the same. -**Field.prototype.initialValue**:Any +**Field.prototype.initialValue**: Any > A getter which returns the initial field value (a value from the last commit). -**Field.prototype.isChanged()**:Boolean +**Field.prototype.isChanged()**: Boolean > Returns `true` if the field or at least one sub field have been changed. -**Field.prototype.isValid()**:Promise(Boolean) +**Field.prototype.isValid()**: Promise > Returns `true` if the field and all sub fields are valid. -**Field.prototype.reset()**:Field +**Field.prototype.reset()**: Field > Sets the field to its default value. -**Field.prototype.rollback()**:Field +**Field.prototype.rollback()**: Field > Sets the field to its initial value (last committed value). This is how you can discharge field's changes. -**Field.prototype.validate()**:Promise(Object) +**Field.prototype.validate()**: Promise(Object) > Validates the field and returns errors. -**Field.prototype.value**:Any +**Field.prototype.value**: Any > A getter and setter for the value of the field. +### ValidatorError + +**ValidatorError(value, recipe, code)** + +> Validator error class, provided by the `validatable.js`, which holds information about an invalid value of a field.. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| recipe | Object | Yes | - | Validator recipe object. +| value | Any | Yes | - | The value which failed to pass the validation. +| code | Integer | No | 422 | Error status code. + +### InvalidFieldError + +**InvalidFieldError(path, errors, related, message, code)** + +> Field validation error class. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| path | String | No | - | Field name +| errors | ValidatorError[] | No | [] | List of ValidatorError instances of a field. +| related | InvalidFieldError[] | No | [] | List of InvalidFieldError instances of a sub-document. +| message | String | No | Field validation failed | General error message. +| code | Number | No | 422 | Error code. + ## License (MIT) ``` diff --git a/dist/documents.js b/dist/documents.js index 736df4f..d49d2aa 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -318,19 +318,19 @@ class Document { var _this = this; return (0, _asyncToGenerator3.default)(function* () { - let data = {}; + let errors = []; let fields = _this.$schema.fields; - for (let name in fields) { - let errors = yield _this[`$${ name }`].validate(); + for (let path in fields) { + let error = yield _this[`$${ path }`].validate(); - if (!(0, _typeable.isAbsent)(errors)) { - data[name] = errors; + if (!(0, _typeable.isAbsent)(error)) { + errors.push(error); } } - return data; + return errors; })(); } diff --git a/dist/fields.js b/dist/fields.js index d56dd33..44fd8a7 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -3,11 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.Field = undefined; - -var _values = require('babel-runtime/core-js/object/values'); - -var _values2 = _interopRequireDefault(_values); +exports.Field = exports.InvalidFieldError = exports.ValidatorError = undefined; var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); @@ -23,16 +19,52 @@ var _deepEqual = require('deep-equal'); var _deepEqual2 = _interopRequireDefault(_deepEqual); +var _validatable = require('validatable'); + var _utils = require('./utils'); var _schemas = require('./schemas'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +/** +* Exposing validatable ValidatorError. +*/ + +exports.ValidatorError = _validatable.ValidatorError; + /* -* Document field class. +* A validation error class. */ +class InvalidFieldError extends Error { + + /* + * Class constructor. + */ + + constructor() { + let path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + let errors = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + let related = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; + let message = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'Field validation failed'; + let code = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 422; + + super(); + + this.name = this.constructor.name; + this.path = path; + this.errors = errors; + this.related = related; + this.message = message; + this.code = code; + } +} + +exports.InvalidFieldError = InvalidFieldError; /* + * Document field class. + */ + class Field { /* @@ -209,6 +241,14 @@ class Field { return !this.equals(this.initialValue); } + /* + * Creates a new instance of InvalidFieldError. + */ + + createInvalidFieldError(path, errors, related) { + return new InvalidFieldError(path, errors, related); + } + /* * Validates the field and returns errors. */ @@ -217,13 +257,16 @@ class Field { var _this = this; return (0, _asyncToGenerator3.default)(function* () { - let data = { - errors: yield _this._validateValue(_this.value), - related: yield _this._validateRelated(_this.value) - }; + let path = _this.$name; + let errors = yield _this._validateValue(_this.value); + let related = yield _this._validateRelated(_this.value); + + let hasError = errors.length > 0 || !_this._isRelatedValid(related); - let isValid = data.errors.length === 0 && _this._isRelatedValid(data.related); - return !isValid ? data : undefined; + if (hasError) { + return _this.createInvalidFieldError(path, errors, related); + } + return undefined; })(); } @@ -237,6 +280,7 @@ class Field { return (0, _asyncToGenerator3.default)(function* () { let validate = _this2.$document.$schema.fields[_this2.$name].validate; + return yield _this2.$document.$validator.validate(value, validate); })(); } @@ -252,11 +296,9 @@ class Field { let type = _this3.$document.$schema.fields[_this3.$name].type; - if (!value) { - return undefined; - } else if (type instanceof _schemas.Schema) { + if ((0, _typeable.isPresent)(value) && type instanceof _schemas.Schema) { return yield value.validate(); - } else if ((0, _typeable.isArray)(type) && (0, _typeable.isArray)(value)) { + } else if ((0, _typeable.isArray)(value) && (0, _typeable.isArray)(type)) { let items = []; for (let v of value) { if (type[0] instanceof _schemas.Schema) { @@ -266,9 +308,8 @@ class Field { } } return items; - } else { - return undefined; } + return []; })(); } @@ -277,13 +318,9 @@ class Field { */ _isRelatedValid(related) { - if ((0, _typeable.isObject)(related)) { - return (0, _values2.default)(related).every(v => v.errors.length === 0 && !v.related); - } else if ((0, _typeable.isArray)(related)) { - return related.every(v => this._isRelatedValid(v)); - } else { - return true; - } + return related.every(v => { + return (0, _typeable.isArray)(v) ? this._isRelatedValid(v) : (0, _typeable.isAbsent)(v); + }); } /* diff --git a/dist/index.js b/dist/index.js index 46def90..b736769 100644 --- a/dist/index.js +++ b/dist/index.js @@ -3,12 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.ValidationError = exports.Document = exports.Schema = undefined; +exports.ValidatorError = exports.InvalidFieldError = exports.Document = exports.Schema = undefined; var _schemas = require('./schemas'); var _documents = require('./documents'); +var _fields = require('./fields'); + var _validatable = require('validatable'); /* @@ -17,4 +19,5 @@ var _validatable = require('validatable'); exports.Schema = _schemas.Schema; exports.Document = _documents.Document; -exports.ValidationError = _validatable.ValidationError; \ No newline at end of file +exports.InvalidFieldError = _fields.InvalidFieldError; +exports.ValidatorError = _validatable.ValidatorError; \ No newline at end of file diff --git a/giphy.gif b/giphy.gif deleted file mode 100644 index 1a60e61e996695f6a950ee637162417dcbaa68ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 237606 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 z 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�j?qGZj&s*J?>L!<0#(rr);~!q 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 0 + || !this._isRelatedValid(related) ); - return !isValid ? data : undefined; + + if (hasError) { + return this.createInvalidFieldError(path, errors, related); + } + return undefined; } /* @@ -204,6 +246,7 @@ export class Field { async _validateValue (value) { let {validate} = this.$document.$schema.fields[this.$name]; + return await this.$document.$validator.validate(value, validate); } @@ -214,13 +257,10 @@ export class Field { async _validateRelated (value) { let {type} = this.$document.$schema.fields[this.$name]; - if (!value) { - return undefined; - } - else if (type instanceof Schema) { + if (isPresent(value) && type instanceof Schema) { return await value.validate(); } - else if (isArray(type) && isArray(value)) { + else if (isArray(value) && isArray(type)) { let items = []; for (let v of value) { if (type[0] instanceof Schema) { @@ -232,9 +272,7 @@ export class Field { } return items; } - else { - return undefined; - } + return []; } /* @@ -242,15 +280,9 @@ export class Field { */ _isRelatedValid (related) { - if (isObject(related)) { - return Object.values(related).every(v => v.errors.length === 0 && !v.related); - } - else if (isArray(related)) { - return related.every(v => this._isRelatedValid(v)); - } - else { - return true; - } + return related.every(v => { + return isArray(v) ? this._isRelatedValid(v) : isAbsent(v); + }); } /* diff --git a/src/index.js b/src/index.js index 7ea572f..12b56f6 100644 --- a/src/index.js +++ b/src/index.js @@ -1,9 +1,10 @@ import {Schema} from './schemas'; import {Document} from './documents'; -import {ValidationError} from 'validatable'; +import {InvalidFieldError} from './fields'; +import {ValidatorError} from 'validatable'; /* * Exposing public classes. */ -export {Schema, Document, ValidationError}; +export {Schema, Document, InvalidFieldError, ValidatorError}; diff --git a/tests/document.js b/tests/document.js index 070734c..052b601 100644 --- a/tests/document.js +++ b/tests/document.js @@ -1,8 +1,9 @@ import test from 'ava'; import { - Document, - Schema, - ValidationError + Document, + Schema, + InvalidFieldError, + ValidatorError } from '../dist'; test('field value should be converted to the specified type', (t) => { @@ -916,53 +917,40 @@ test('method `validate` should validate fields and return an error object', asyn validate: [ {name: 'presence', message: 'is required'} ] + }, + prevBooks: { + type: [bookSchema] } } }); - let data = { oldBook: {}, - oldBooks: [null, {}] + oldBooks: [null, {}], + prevBooks: [null, {}] }; - let user = new Document(userSchema, data); - let error = new ValidationError(undefined, {name: "presence", message: "is required"}); - - t.deepEqual(await user.validate(), { - name: { - errors: [error], - related: undefined - }, - newBook: { - errors: [error], - related: undefined - }, - newBooks: { - errors: [error], - related: undefined - }, - oldBook: { - errors: [], - related: { - title: { - errors: [error], - related: undefined - } - } - }, - oldBooks: { - errors: [], - related: [ - undefined, - { - title: { - errors: [error], - related: undefined - } - } + let error = new ValidatorError(undefined, {name: "presence", message: "is required"}); + + t.deepEqual(await user.validate(), [ + new InvalidFieldError('name', [error]), + new InvalidFieldError('newBook', [error]), + new InvalidFieldError('newBooks', [error]), + new InvalidFieldError('oldBook', [], [ + new InvalidFieldError('title', [error]) + ]), + new InvalidFieldError('oldBooks', [], [ + undefined, + [ + new InvalidFieldError('title', [error]) ] - } - }); + ]), + new InvalidFieldError('prevBooks', [], [ + undefined, + [ + new InvalidFieldError('title', [error]) + ] + ]), + ]); }); test('method `isValid` should return `true` when fields are valid', async (t) => { @@ -1010,7 +998,6 @@ test('method `isValid` should return `true` when fields are valid', async (t) => } ] }; - let user = new Document(userSchema, data); t.is(await user.$name.isValid(), true); diff --git a/tests/index.js b/tests/index.js index b7ed14c..06f093e 100644 --- a/tests/index.js +++ b/tests/index.js @@ -4,5 +4,6 @@ import * as objectschema from '../dist'; test('exposed content', (t) => { t.is(!!objectschema.Schema, true); t.is(!!objectschema.Document, true); - t.is(!!objectschema.ValidationError, true); + t.is(!!objectschema.InvalidFieldError, true); + t.is(!!objectschema.ValidatorError, true); }); From 34fc1cc78249194087f8dde032cb05df9caf7211 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 5 Nov 2016 20:27:57 +0100 Subject: [PATCH 070/219] overridable Field --- README.md | 8 ++++++++ dist/documents.js | 14 +++++++++----- src/documents.js | 14 +++++++++----- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 52c279a..4669889 100644 --- a/README.md +++ b/README.md @@ -175,6 +175,14 @@ A document is a schema enforced data object. All document properties and configu > Sets initial value of each document field to the current value of a field. This is how field change tracking is restarted. +**Document.prototype.createField(name)**: Field + +> A helper method which creates a new field instance. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| name | String | Yes | - | Field name. + **Document.prototype.equals(value)**: Boolean > Returns `true` when the provided `value` represents an object with the same fields as the document itself. diff --git a/dist/documents.js b/dist/documents.js index d49d2aa..eaf8bab 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -64,10 +64,6 @@ class Document { value: this._createValidator() }); - Object.defineProperty(this, '$Field', { // field class - value: _fields.Field - }); - this._defineFields(); this._populateFields(data); } @@ -108,12 +104,20 @@ class Document { } } + /* + * Creates a new Field instance. + */ + + createField(name) { + return new _fields.Field(this, name); + } + /* * Defines a schema field by name. */ _defineField(name) { - let field = new this.$Field(this, name); + let field = this.createField(name); (0, _defineProperty2.default)(this, name, { // field definition get: () => field.value, diff --git a/src/documents.js b/src/documents.js index a7e68e8..0a86777 100644 --- a/src/documents.js +++ b/src/documents.js @@ -37,10 +37,6 @@ export class Document { value: this._createValidator() }); - Object.defineProperty(this, '$Field', { // field class - value: Field - }); - this._defineFields(); this._populateFields(data); } @@ -81,12 +77,20 @@ export class Document { } } + /* + * Creates a new Field instance. + */ + + createField (name) { + return new Field(this, name); + } + /* * Defines a schema field by name. */ _defineField (name) { - let field = new this.$Field(this, name); + let field = this.createField(name); Object.defineProperty(this, name, { // field definition get: () => field.value, From 258ace59dadb08a115573027fe1425a9d53f420d Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 5 Nov 2016 20:28:14 +0100 Subject: [PATCH 071/219] version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 67788cc..411fa1c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "1.5.0", + "version": "1.5.1", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { From 354b9919cf72861084c398a172dbfa002de0744c Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 5 Nov 2016 20:31:25 +0100 Subject: [PATCH 072/219] readme --- README.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4669889..b2556d9 100644 --- a/README.md +++ b/README.md @@ -233,7 +233,7 @@ A document is a schema enforced data object. All document properties and configu **Document.prototype.validate()**: Promise -> Validates all document fields and returns errors. +> Validates all document fields and returns a list of `InvalidFieldError` errors for all invalid fields. ### Field diff --git a/package.json b/package.json index 411fa1c..8991c92 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "1.5.1", + "version": "1.5.2", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { From c45ae19e369ce223eab5386bae3e87f6854fe7b1 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 5 Nov 2016 20:39:10 +0100 Subject: [PATCH 073/219] readme --- README.md | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index b2556d9..788871b 100644 --- a/README.md +++ b/README.md @@ -207,7 +207,7 @@ A document is a schema enforced data object. All document properties and configu > Returns `true` if at least one document field has been changed. -**Document.prototype.isValid()**: Promise +**Document.prototype.isValid()**: Promise(Boolean) > Returns `true` when all document fields are valid. @@ -231,7 +231,7 @@ A document is a schema enforced data object. All document properties and configu > Converts a document into serialized data object. -**Document.prototype.validate()**: Promise +**Document.prototype.validate()**: Promise(InvalidFieldError[]) > Validates all document fields and returns a list of `InvalidFieldError` errors for all invalid fields. @@ -287,7 +287,7 @@ user.$name.isChanged(); // -> calling field instance method > Returns `true` if the field or at least one sub field have been changed. -**Field.prototype.isValid()**: Promise +**Field.prototype.isValid()**: Promise(Boolean) > Returns `true` if the field and all sub fields are valid. diff --git a/package.json b/package.json index 8991c92..5257ce9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "1.5.2", + "version": "1.5.3", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { From b4ccb60e50969776b6b88562bfae682bd161cc54 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 5 Nov 2016 21:36:58 +0100 Subject: [PATCH 074/219] adding `approved` and ValidationError --- README.md | 39 +++++++++++++++++++++++++------ dist/documents.js | 58 +++++++++++++++++++++++++++++++++++++++++++---- dist/index.js | 3 ++- package.json | 2 +- src/documents.js | 42 ++++++++++++++++++++++++++++++++++ src/index.js | 10 ++++++-- tests/document.js | 19 +++++++++++++++- tests/index.js | 1 + 8 files changed, 158 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 788871b..cb9b241 100644 --- a/README.md +++ b/README.md @@ -203,6 +203,19 @@ A document is a schema enforced data object. All document properties and configu |--------|------|----------|---------|------------ | keys | Array | Yes | - | Path to a field (e.g. `['book', 0, 'title']`). +**Document.prototype.approve()**: Document + +> The same as method `validate()` but it throws the `ValidationError` when not all fields are valid. + +```js +try { + await document.approve(); // throws a ValidationError when fields are invalid +} +catch (e) { + // `e` is an instance of ValidationError +} +``` + **Document.prototype.isChanged()**: Boolean > Returns `true` if at least one document field has been changed. @@ -307,23 +320,23 @@ user.$name.isChanged(); // -> calling field instance method > A getter and setter for the value of the field. -### ValidatorError +### ValidationError -**ValidatorError(value, recipe, code)** +**ValidationError(errors, message, code)** -> Validator error class, provided by the `validatable.js`, which holds information about an invalid value of a field.. +> Validation error class which holds information about invalid fields of a document. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ -| recipe | Object | Yes | - | Validator recipe object. -| value | Any | Yes | - | The value which failed to pass the validation. -| code | Integer | No | 422 | Error status code. +| errors | InvalidFieldError[] | No | [] | List of ValidatorError instances of a field. +| message | String | No | Fields validation failed | General error message. +| code | Number | No | 422 | Error code. ### InvalidFieldError **InvalidFieldError(path, errors, related, message, code)** -> Field validation error class. +> Validation error class which holds information of an invalid field. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ @@ -333,6 +346,18 @@ user.$name.isChanged(); // -> calling field instance method | message | String | No | Field validation failed | General error message. | code | Number | No | 422 | Error code. +### ValidatorError + +**ValidatorError(value, recipe, code)** + +> Validator error class, provided by the `validatable.js`, which holds information about not satisfied validators of a value. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| recipe | Object | Yes | - | Validator recipe object. +| value | Any | Yes | - | The value which failed to pass the validation. +| code | Integer | No | 422 | Error status code. + ## License (MIT) ``` diff --git a/dist/documents.js b/dist/documents.js index eaf8bab..177db61 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.Document = undefined; +exports.Document = exports.ValidationError = undefined; var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); @@ -38,9 +38,33 @@ var _fields = require('./fields'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /* -* The core schema-based object class. +* A validation error class. */ +class ValidationError extends Error { + + /* + * Class constructor. + */ + + constructor() { + let errors = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + let message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Fields validation failed'; + let code = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 422; + + super(); + + this.name = this.constructor.name; + this.errors = errors; + this.message = message; + this.code = code; + } +} + +exports.ValidationError = ValidationError; /* + * The core schema-based object class. + */ + class Document { /* @@ -338,15 +362,41 @@ class Document { })(); } + /* + * Creates a new ValidationError instance. + */ + + createValidationError(errors) { + return new ValidationError(errors); + } + + /* + * Validates fields and throws a ValidationError if not all fields are valid. + */ + + approve() { + var _this2 = this; + + return (0, _asyncToGenerator3.default)(function* () { + let errors = yield _this2.validate(); + + if ((0, _typeable.isPresent)(errors)) { + throw _this2.createValidationError(errors); + } + + return _this2; + })(); + } + /* * Returns `true` when all document fields are valid. */ isValid() { - var _this2 = this; + var _this3 = this; return (0, _asyncToGenerator3.default)(function* () { - return (0, _typeable.isAbsent)((yield _this2.validate())); + return (0, _typeable.isAbsent)((yield _this3.validate())); })(); } diff --git a/dist/index.js b/dist/index.js index b736769..10f938f 100644 --- a/dist/index.js +++ b/dist/index.js @@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.ValidatorError = exports.InvalidFieldError = exports.Document = exports.Schema = undefined; +exports.ValidatorError = exports.InvalidFieldError = exports.ValidationError = exports.Document = exports.Schema = undefined; var _schemas = require('./schemas'); @@ -19,5 +19,6 @@ var _validatable = require('validatable'); exports.Schema = _schemas.Schema; exports.Document = _documents.Document; +exports.ValidationError = _documents.ValidationError; exports.InvalidFieldError = _fields.InvalidFieldError; exports.ValidatorError = _validatable.ValidatorError; \ No newline at end of file diff --git a/package.json b/package.json index 5257ce9..8b8fc9b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "1.5.3", + "version": "1.6.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/documents.js b/src/documents.js index 0a86777..2e04fc1 100644 --- a/src/documents.js +++ b/src/documents.js @@ -13,6 +13,26 @@ import {cloneData} from './utils'; import {Schema} from './schemas'; import {Field} from './fields'; +/* +* A validation error class. +*/ + +export class ValidationError extends Error { + + /* + * Class constructor. + */ + + constructor (errors = [], message = 'Fields validation failed', code = 422) { + super(); + + this.name = this.constructor.name; + this.errors = errors; + this.message = message; + this.code = code; + } +} + /* * The core schema-based object class. */ @@ -297,6 +317,28 @@ export class Document { return errors; } + /* + * Creates a new ValidationError instance. + */ + + createValidationError (errors) { + return new ValidationError(errors); + } + + /* + * Validates fields and throws a ValidationError if not all fields are valid. + */ + + async approve () { + let errors = await this.validate(); + + if (isPresent(errors)) { + throw this.createValidationError(errors); + } + + return this; + } + /* * Returns `true` when all document fields are valid. */ diff --git a/src/index.js b/src/index.js index 12b56f6..f0ea056 100644 --- a/src/index.js +++ b/src/index.js @@ -1,5 +1,5 @@ import {Schema} from './schemas'; -import {Document} from './documents'; +import {Document, ValidationError} from './documents'; import {InvalidFieldError} from './fields'; import {ValidatorError} from 'validatable'; @@ -7,4 +7,10 @@ import {ValidatorError} from 'validatable'; * Exposing public classes. */ -export {Schema, Document, InvalidFieldError, ValidatorError}; +export { + Schema, + Document, + ValidationError, + InvalidFieldError, + ValidatorError +}; diff --git a/tests/document.js b/tests/document.js index 052b601..1d51182 100644 --- a/tests/document.js +++ b/tests/document.js @@ -2,6 +2,7 @@ import test from 'ava'; import { Document, Schema, + ValidationError, InvalidFieldError, ValidatorError } from '../dist'; @@ -949,7 +950,7 @@ test('method `validate` should validate fields and return an error object', asyn [ new InvalidFieldError('title', [error]) ] - ]), + ]) ]); }); @@ -1005,3 +1006,19 @@ test('method `isValid` should return `true` when fields are valid', async (t) => t.is(await user.books[0].$title.isValid(), true); t.is(await user.isValid(), true); }); + +test('method `approve` should throw ValidationError when not all fields are valid', async (t) => { + let userSchema = new Schema({ + fields: { + name: { + type: 'String', + validate: [ + {name: 'presence', message: 'is required'} + ] + } + } + }); + let user = new Document(userSchema); + + t.throws(user.approve(), ValidationError); +}); diff --git a/tests/index.js b/tests/index.js index 06f093e..4ab862f 100644 --- a/tests/index.js +++ b/tests/index.js @@ -6,4 +6,5 @@ test('exposed content', (t) => { t.is(!!objectschema.Document, true); t.is(!!objectschema.InvalidFieldError, true); t.is(!!objectschema.ValidatorError, true); + t.is(!!objectschema.ValidationError, true); }); From 8a2dd17347bc8ae3daacc86fd9d5095f89e1262e Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 6 Nov 2016 10:50:30 +0100 Subject: [PATCH 075/219] moving errors into dedicated file --- README.md | 6 ++--- dist/documents.js | 32 ++++------------------- dist/errors.js | 66 +++++++++++++++++++++++++++++++++++++++++++++++ dist/fields.js | 36 ++++---------------------- dist/index.js | 11 ++++---- package.json | 2 +- src/documents.js | 22 +--------------- src/errors.js | 49 +++++++++++++++++++++++++++++++++++ src/fields.js | 24 +---------------- src/index.js | 11 +++++--- 10 files changed, 145 insertions(+), 114 deletions(-) create mode 100644 dist/errors.js create mode 100644 src/errors.js diff --git a/README.md b/README.md index cb9b241..6359117 100644 --- a/README.md +++ b/README.md @@ -324,7 +324,7 @@ user.$name.isChanged(); // -> calling field instance method **ValidationError(errors, message, code)** -> Validation error class which holds information about invalid fields of a document. +> A validation error class which holds information about invalid fields of a document. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ @@ -336,7 +336,7 @@ user.$name.isChanged(); // -> calling field instance method **InvalidFieldError(path, errors, related, message, code)** -> Validation error class which holds information of an invalid field. +> A validation error class which holds information of a single invalid field. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ @@ -350,7 +350,7 @@ user.$name.isChanged(); // -> calling field instance method **ValidatorError(value, recipe, code)** -> Validator error class, provided by the `validatable.js`, which holds information about not satisfied validators of a value. +> A validator error class, provided by the `validatable.js`, which holds information about the validators which do not approve a value that has just been validated. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ diff --git a/dist/documents.js b/dist/documents.js index 177db61..011fc49 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.Document = exports.ValidationError = undefined; +exports.Document = undefined; var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); @@ -35,36 +35,14 @@ var _schemas = require('./schemas'); var _fields = require('./fields'); +var _errors = require('./errors'); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /* -* A validation error class. +* The core schema-based object class. */ -class ValidationError extends Error { - - /* - * Class constructor. - */ - - constructor() { - let errors = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; - let message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Fields validation failed'; - let code = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 422; - - super(); - - this.name = this.constructor.name; - this.errors = errors; - this.message = message; - this.code = code; - } -} - -exports.ValidationError = ValidationError; /* - * The core schema-based object class. - */ - class Document { /* @@ -367,7 +345,7 @@ class Document { */ createValidationError(errors) { - return new ValidationError(errors); + return new _errors.ValidationError(errors); } /* diff --git a/dist/errors.js b/dist/errors.js new file mode 100644 index 0000000..18b8766 --- /dev/null +++ b/dist/errors.js @@ -0,0 +1,66 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ValidatorError = exports.InvalidFieldError = exports.ValidationError = undefined; + +var _validatable = require('validatable'); + +/* +* A validation error class which holds information about document's invalid fields. +*/ + +class ValidationError extends Error { + + /* + * Class constructor. + */ + + constructor() { + let errors = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + let message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Fields validation failed'; + let code = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 422; + + super(); + + this.name = this.constructor.name; + this.errors = errors; + this.message = message; + this.code = code; + } +} + +exports.ValidationError = ValidationError; /* + * A validation error class which holds information of a single invalid field. + */ + +class InvalidFieldError extends Error { + + /* + * Class constructor. + */ + + constructor() { + let path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + let errors = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + let related = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; + let message = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'Field validation failed'; + let code = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 422; + + super(); + + this.name = this.constructor.name; + this.path = path; + this.errors = errors; + this.related = related; + this.message = message; + this.code = code; + } +} + +exports.InvalidFieldError = InvalidFieldError; /* + * A validator error class, provided by the `validatable.js`, which holds information about the validators which do not approve a value that has just been validated. + */ + +exports.ValidatorError = _validatable.ValidatorError; \ No newline at end of file diff --git a/dist/fields.js b/dist/fields.js index 44fd8a7..1e679da 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.Field = exports.InvalidFieldError = exports.ValidatorError = undefined; +exports.Field = exports.ValidatorError = undefined; var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); @@ -25,6 +25,8 @@ var _utils = require('./utils'); var _schemas = require('./schemas'); +var _errors = require('./errors'); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** @@ -34,37 +36,9 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de exports.ValidatorError = _validatable.ValidatorError; /* -* A validation error class. +* Document field class. */ -class InvalidFieldError extends Error { - - /* - * Class constructor. - */ - - constructor() { - let path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - let errors = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; - let related = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; - let message = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'Field validation failed'; - let code = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 422; - - super(); - - this.name = this.constructor.name; - this.path = path; - this.errors = errors; - this.related = related; - this.message = message; - this.code = code; - } -} - -exports.InvalidFieldError = InvalidFieldError; /* - * Document field class. - */ - class Field { /* @@ -246,7 +220,7 @@ class Field { */ createInvalidFieldError(path, errors, related) { - return new InvalidFieldError(path, errors, related); + return new _errors.InvalidFieldError(path, errors, related); } /* diff --git a/dist/index.js b/dist/index.js index 10f938f..762f50a 100644 --- a/dist/index.js +++ b/dist/index.js @@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.ValidatorError = exports.InvalidFieldError = exports.ValidationError = exports.Document = exports.Schema = undefined; +exports.ValidatorError = exports.InvalidFieldError = exports.ValidationError = exports.Field = exports.Document = exports.Schema = undefined; var _schemas = require('./schemas'); @@ -11,7 +11,7 @@ var _documents = require('./documents'); var _fields = require('./fields'); -var _validatable = require('validatable'); +var _errors = require('./errors'); /* * Exposing public classes. @@ -19,6 +19,7 @@ var _validatable = require('validatable'); exports.Schema = _schemas.Schema; exports.Document = _documents.Document; -exports.ValidationError = _documents.ValidationError; -exports.InvalidFieldError = _fields.InvalidFieldError; -exports.ValidatorError = _validatable.ValidatorError; \ No newline at end of file +exports.Field = _fields.Field; +exports.ValidationError = _errors.ValidationError; +exports.InvalidFieldError = _errors.InvalidFieldError; +exports.ValidatorError = _errors.ValidatorError; \ No newline at end of file diff --git a/package.json b/package.json index 8b8fc9b..d430fdb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "1.6.0", + "version": "1.6.1", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/documents.js b/src/documents.js index 2e04fc1..1fedad5 100644 --- a/src/documents.js +++ b/src/documents.js @@ -6,32 +6,12 @@ import { isAbsent, isUndefined } from 'typeable'; - import deeplyEquals from 'deep-equal'; import {Validator} from 'validatable'; import {cloneData} from './utils'; import {Schema} from './schemas'; import {Field} from './fields'; - -/* -* A validation error class. -*/ - -export class ValidationError extends Error { - - /* - * Class constructor. - */ - - constructor (errors = [], message = 'Fields validation failed', code = 422) { - super(); - - this.name = this.constructor.name; - this.errors = errors; - this.message = message; - this.code = code; - } -} +import {ValidationError} from './errors'; /* * The core schema-based object class. diff --git a/src/errors.js b/src/errors.js new file mode 100644 index 0000000..a40175a --- /dev/null +++ b/src/errors.js @@ -0,0 +1,49 @@ +import {ValidatorError} from 'validatable'; + +/* +* A validation error class which holds information about document's invalid fields. +*/ + +export class ValidationError extends Error { + + /* + * Class constructor. + */ + + constructor (errors = [], message = 'Fields validation failed', code = 422) { + super(); + + this.name = this.constructor.name; + this.errors = errors; + this.message = message; + this.code = code; + } +} + +/* +* A validation error class which holds information of a single invalid field. +*/ + +export class InvalidFieldError extends Error { + + /* + * Class constructor. + */ + + constructor (path = null, errors = [], related = [], message = 'Field validation failed', code = 422) { + super(); + + this.name = this.constructor.name; + this.path = path; + this.errors = errors; + this.related = related; + this.message = message; + this.code = code; + } +} + +/* +* A validator error class, provided by the `validatable.js`, which holds information about the validators which do not approve a value that has just been validated. +*/ + +export {ValidatorError}; diff --git a/src/fields.js b/src/fields.js index da15ee2..3d5bcb6 100644 --- a/src/fields.js +++ b/src/fields.js @@ -7,11 +7,11 @@ import { isObject, isFunction } from 'typeable'; - import deeplyEquals from 'deep-equal'; import {ValidatorError} from 'validatable'; import {cloneData} from './utils'; import {Schema} from './schemas'; +import {InvalidFieldError} from './errors'; /** * Exposing validatable ValidatorError. @@ -19,28 +19,6 @@ import {Schema} from './schemas'; export {ValidatorError}; -/* -* A validation error class. -*/ - -export class InvalidFieldError extends Error { - - /* - * Class constructor. - */ - - constructor (path = null, errors = [], related = [], message = 'Field validation failed', code = 422) { - super(); - - this.name = this.constructor.name; - this.path = path; - this.errors = errors; - this.related = related; - this.message = message; - this.code = code; - } -} - /* * Document field class. */ diff --git a/src/index.js b/src/index.js index f0ea056..c9de2b2 100644 --- a/src/index.js +++ b/src/index.js @@ -1,7 +1,11 @@ import {Schema} from './schemas'; -import {Document, ValidationError} from './documents'; -import {InvalidFieldError} from './fields'; -import {ValidatorError} from 'validatable'; +import {Document} from './documents'; +import {Field} from './fields'; +import { + ValidationError, + InvalidFieldError, + ValidatorError +} from './errors'; /* * Exposing public classes. @@ -10,6 +14,7 @@ import {ValidatorError} from 'validatable'; export { Schema, Document, + Field, ValidationError, InvalidFieldError, ValidatorError From d30594c70bcdae301c47952560041cae350ddff1 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 6 Nov 2016 16:15:22 +0100 Subject: [PATCH 076/219] protecting overridable helper methods, nested validation errors, flat array or validation errors --- README.md | 48 ++++++++++----------- dist/documents.js | 48 ++++++++++++--------- dist/errors.js | 101 +++++++++++++++++++++++++++++++++------------ dist/fields.js | 21 ++++------ package.json | 4 +- src/documents.js | 46 ++++++++++++--------- src/errors.js | 103 +++++++++++++++++++++++++++++++++++++++------- src/fields.js | 20 ++++----- tests/document.js | 53 ++++++++++++++---------- tests/errors.js | 28 +++++++++++++ tests/index.js | 1 - 11 files changed, 315 insertions(+), 158 deletions(-) create mode 100644 tests/errors.js diff --git a/README.md b/README.md index 6359117..5bc4d87 100644 --- a/README.md +++ b/README.md @@ -175,14 +175,6 @@ A document is a schema enforced data object. All document properties and configu > Sets initial value of each document field to the current value of a field. This is how field change tracking is restarted. -**Document.prototype.createField(name)**: Field - -> A helper method which creates a new field instance. - -| Option | Type | Required | Default | Description -|--------|------|----------|---------|------------ -| name | String | Yes | - | Field name. - **Document.prototype.equals(value)**: Boolean > Returns `true` when the provided `value` represents an object with the same fields as the document itself. @@ -209,10 +201,10 @@ A document is a schema enforced data object. All document properties and configu ```js try { - await document.approve(); // throws a ValidationError when fields are invalid + await doc.approve(); // throws a ValidationError when fields are invalid } catch (e) { - // `e` is an instance of ValidationError + // `e` is an instance of ValidationError where root document errors exists inside the `related` property } ``` @@ -244,9 +236,9 @@ catch (e) { > Converts a document into serialized data object. -**Document.prototype.validate()**: Promise(InvalidFieldError[]) +**Document.prototype.validate()**: Promise(ValidationError[]) -> Validates all document fields and returns a list of `InvalidFieldError` errors for all invalid fields. +> Validates all document fields and returns a list of `ValidationError` errors for all invalid fields. ### Field @@ -261,7 +253,7 @@ user.$name.isChanged(); // -> calling field instance method **Field(document, name)** -> Document field class. +> Document field class which represents each field on a document. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ @@ -322,40 +314,44 @@ user.$name.isChanged(); // -> calling field instance method ### ValidationError -**ValidationError(errors, message, code)** +**ValidationError(path, errors, related, message, code)** > A validation error class which holds information about invalid fields of a document. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ -| errors | InvalidFieldError[] | No | [] | List of ValidatorError instances of a field. +| path | String,String[] | No | [] | A path to a field in a document tree (e.g. ['friends', 1, 'name']). If the path is not specified it represents the root field holding a root document. +| errors | ValidationError[] | No | [] | A list of `ValidatorError` instances of the related document field. +| related | ValidationError[] | No | A list of related `ValidationError` instances (of a sub document). | message | String | No | Fields validation failed | General error message. | code | Number | No | 422 | Error code. -### InvalidFieldError +**ValidationError.prototype.isEmpty()**: Boolean -**InvalidFieldError(path, errors, related, message, code)** +> Returns `true` if the instance holds no errors. -> A validation error class which holds information of a single invalid field. +**ValidationError.prototype.isRoot()**: Boolean + +> Returns `true` if the instance represents the root field error. + +**ValidationError.prototype.toArray(flatten)**: ValidationError[] + +> When `flatten` is `true`, it returns an flattened array of all errors, including the deeply related errors, otherwise the original nested format array is returned. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ -| path | String | No | - | Field name -| errors | ValidatorError[] | No | [] | List of ValidatorError instances of a field. -| related | InvalidFieldError[] | No | [] | List of InvalidFieldError instances of a sub-document. -| message | String | No | Field validation failed | General error message. -| code | Number | No | 422 | Error code. +| flatten | Boolean | No | true | When `true`, an array of all errors, including the deeply related errors, is returned. ### ValidatorError -**ValidatorError(value, recipe, code)** +**ValidatorError(validator, message, code)** > A validator error class, provided by the `validatable.js`, which holds information about the validators which do not approve a value that has just been validated. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ -| recipe | Object | Yes | - | Validator recipe object. -| value | Any | Yes | - | The value which failed to pass the validation. +| validator | String | Yes | - | Validator name. +| message | String | No | null | Validation error message. | code | Integer | No | 422 | Error status code. ## License (MIT) diff --git a/dist/documents.js b/dist/documents.js index 011fc49..59afbff 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -93,6 +93,32 @@ class Document { return new _validatable.Validator((0, _assign2.default)({}, this.$schema.validatorOptions, { context: this })); } + /* + * Creates a new Field instance. + */ + + _createField(name) { + return new _fields.Field(this, name); + } + + /* + * Creates a new sub-document instance (a nested document). + */ + + _createRelative(schema) { + let data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + return new this.constructor(schema, data, this); + } + + /* + * Creates a new ValidationError instance. + */ + + _createValidationError(errors) { + return new _errors.ValidationError([], [], errors); + } + /* * Defines class fields from schema. */ @@ -106,20 +132,12 @@ class Document { } } - /* - * Creates a new Field instance. - */ - - createField(name) { - return new _fields.Field(this, name); - } - /* * Defines a schema field by name. */ _defineField(name) { - let field = this.createField(name); + let field = this._createField(name); (0, _defineProperty2.default)(this, name, { // field definition get: () => field.value, @@ -340,14 +358,6 @@ class Document { })(); } - /* - * Creates a new ValidationError instance. - */ - - createValidationError(errors) { - return new _errors.ValidationError(errors); - } - /* * Validates fields and throws a ValidationError if not all fields are valid. */ @@ -358,8 +368,8 @@ class Document { return (0, _asyncToGenerator3.default)(function* () { let errors = yield _this2.validate(); - if ((0, _typeable.isPresent)(errors)) { - throw _this2.createValidationError(errors); + if (errors.length > 0) { + throw _this2._createValidationError(errors); } return _this2; diff --git a/dist/errors.js b/dist/errors.js index 18b8766..a28153a 100644 --- a/dist/errors.js +++ b/dist/errors.js @@ -3,64 +3,113 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.ValidatorError = exports.InvalidFieldError = exports.ValidationError = undefined; +exports.ValidatorError = exports.ValidationError = undefined; var _validatable = require('validatable'); +var _typeable = require('typeable'); + /* * A validation error class which holds information about document's invalid fields. */ class ValidationError extends Error { + /* + * Creates a ValidationError from input data. + */ + + static parse(data) {} + /* * Class constructor. */ constructor() { - let errors = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; - let message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Fields validation failed'; - let code = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 422; + let path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + let errors = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + let related = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; + let message = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'Validation failed'; + let code = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 422; super(); this.name = this.constructor.name; + this.path = (0, _typeable.toArray)(path); this.errors = errors; + this.related = related; this.message = message; this.code = code; } -} -exports.ValidationError = ValidationError; /* - * A validation error class which holds information of a single invalid field. - */ + /* + * Returns `true` if the error represents the root field error. + */ -class InvalidFieldError extends Error { + isRoot() { + return this.path.length === 0; + } /* - * Class constructor. + * Returns `true` if the error has no error messages. */ - constructor() { - let path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - let errors = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; - let related = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; - let message = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'Field validation failed'; - let code = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 422; + isEmpty() { + return this.errors.length === 0 && this.related.length === 0; + } - super(); + /* + * Returns single-dimensional array of errors when `flatten` is `true`, + * otherwise the original nested array is returned. + */ - this.name = this.constructor.name; - this.path = path; - this.errors = errors; - this.related = related; - this.message = message; - this.code = code; + toArray() { + var _this = this; + + let flatten = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; + + + let flattenError = function (error) { + let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + + let errors = []; + + if (error.errors.length > 0) { + errors.push(new _this.constructor(prefix.concat(error.path), error.errors, [], error.message, error.code)); + } + + if (error.related.length > 0) { + error.related.forEach((e, i) => { + if ((0, _typeable.isAbsent)(e)) { + return; + } else if ((0, _typeable.isArray)(e)) { + e.forEach(e => { + errors.push(...flattenError(e, prefix.concat(error.path, [i]))); + }); + } else if (e instanceof _this.constructor) { + errors.push(...flattenError(e, prefix.concat(error.path))); + } + }); + } + + return errors; + }; + + if (this.isEmpty()) { + return []; + } else if (flatten) { + return flattenError(this); + } else { + return [this]; + } } + } -exports.InvalidFieldError = InvalidFieldError; /* - * A validator error class, provided by the `validatable.js`, which holds information about the validators which do not approve a value that has just been validated. - */ +exports.ValidationError = ValidationError; /* + * A validator error class, provided by the `validatable.js`, which holds + * information about the validators which do not approve a value that has + * just been validated. + */ exports.ValidatorError = _validatable.ValidatorError; \ No newline at end of file diff --git a/dist/fields.js b/dist/fields.js index 1e679da..304da7e 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.Field = exports.ValidatorError = undefined; +exports.Field = undefined; var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); @@ -19,8 +19,6 @@ var _deepEqual = require('deep-equal'); var _deepEqual2 = _interopRequireDefault(_deepEqual); -var _validatable = require('validatable'); - var _utils = require('./utils'); var _schemas = require('./schemas'); @@ -29,12 +27,6 @@ var _errors = require('./errors'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -/** -* Exposing validatable ValidatorError. -*/ - -exports.ValidatorError = _validatable.ValidatorError; - /* * Document field class. */ @@ -129,7 +121,8 @@ class Field { options.types = (0, _assign2.default)({}, options.types, { Schema: value => { if ((0, _typeable.isArray)(type)) type = type[0]; // in case of {type: [Schema]} - return new this.$document.constructor(type, value, this.$document); + + return this.$document._createRelative(type, value); } }); @@ -216,11 +209,11 @@ class Field { } /* - * Creates a new instance of InvalidFieldError. + * Creates a new instance of ValidationError. */ - createInvalidFieldError(path, errors, related) { - return new _errors.InvalidFieldError(path, errors, related); + _createValidationError(path, errors, related) { + return new _errors.ValidationError(path, errors, related); } /* @@ -238,7 +231,7 @@ class Field { let hasError = errors.length > 0 || !_this._isRelatedValid(related); if (hasError) { - return _this.createInvalidFieldError(path, errors, related); + return _this._createValidationError(path, errors, related); } return undefined; })(); diff --git a/package.json b/package.json index d430fdb..c4951f8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "1.6.1", + "version": "1.7.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -50,6 +50,6 @@ "dependencies": { "deep-equal": "1.0.x", "typeable": "0.9.x", - "validatable": "0.8.x" + "validatable": "0.10.x" } } diff --git a/src/documents.js b/src/documents.js index 1fedad5..b48f83c 100644 --- a/src/documents.js +++ b/src/documents.js @@ -65,6 +65,30 @@ export class Document { return new Validator(Object.assign({}, this.$schema.validatorOptions, {context: this})); } + /* + * Creates a new Field instance. + */ + + _createField (name) { + return new Field(this, name); + } + + /* + * Creates a new sub-document instance (a nested document). + */ + + _createRelative (schema, data={}) { + return new this.constructor(schema, data, this); + } + + /* + * Creates a new ValidationError instance. + */ + + _createValidationError (errors) { + return new ValidationError([], [], errors); + } + /* * Defines class fields from schema. */ @@ -77,20 +101,12 @@ export class Document { } } - /* - * Creates a new Field instance. - */ - - createField (name) { - return new Field(this, name); - } - /* * Defines a schema field by name. */ _defineField (name) { - let field = this.createField(name); + let field = this._createField(name); Object.defineProperty(this, name, { // field definition get: () => field.value, @@ -297,14 +313,6 @@ export class Document { return errors; } - /* - * Creates a new ValidationError instance. - */ - - createValidationError (errors) { - return new ValidationError(errors); - } - /* * Validates fields and throws a ValidationError if not all fields are valid. */ @@ -312,8 +320,8 @@ export class Document { async approve () { let errors = await this.validate(); - if (isPresent(errors)) { - throw this.createValidationError(errors); + if (errors.length > 0) { + throw this._createValidationError(errors); } return this; diff --git a/src/errors.js b/src/errors.js index a40175a..20f17cb 100644 --- a/src/errors.js +++ b/src/errors.js @@ -1,4 +1,9 @@ import {ValidatorError} from 'validatable'; +import { + toArray, + isArray, + isAbsent +} from 'typeable'; /* * A validation error class which holds information about document's invalid fields. @@ -6,44 +11,110 @@ import {ValidatorError} from 'validatable'; export class ValidationError extends Error { + /* + * Creates a ValidationError from input data. + */ + + static parse (data) { + + } + /* * Class constructor. */ - constructor (errors = [], message = 'Fields validation failed', code = 422) { + constructor (path = [], errors = [], related = [], message = 'Validation failed', code = 422) { super(); this.name = this.constructor.name; + this.path = toArray(path); this.errors = errors; + this.related = related; this.message = message; this.code = code; } -} -/* -* A validation error class which holds information of a single invalid field. -*/ + /* + * Returns `true` if the error represents the root field error. + */ -export class InvalidFieldError extends Error { + isRoot () { + return this.path.length === 0; + } /* - * Class constructor. + * Returns `true` if the error has no error messages. */ - constructor (path = null, errors = [], related = [], message = 'Field validation failed', code = 422) { - super(); + isEmpty () { + return ( + this.errors.length === 0 + && this.related.length === 0 + ); + } - this.name = this.constructor.name; - this.path = path; - this.errors = errors; - this.related = related; - this.message = message; - this.code = code; + /* + * Returns single-dimensional array of errors when `flatten` is `true`, + * otherwise the original nested array is returned. + */ + + toArray (flatten = true) { + + let flattenError = (error, prefix = []) => { + let errors = []; + + if (error.errors.length > 0) { + errors.push( + new this.constructor( + prefix.concat(error.path), + error.errors, + [], + error.message, + error.code + ) + ); + } + + if (error.related.length > 0) { + error.related.forEach((e, i) => { + if (isAbsent(e)) { + return; + } + else if (isArray(e)) { + e.forEach((e) => { + errors.push( + ...flattenError(e, prefix.concat(error.path, [i])) + ); + }); + } + else if (e instanceof this.constructor) { + errors.push( + ...flattenError(e, prefix.concat(error.path)) + ); + } + }); + } + + return errors; + } + + if (this.isEmpty()) { + return []; + } + else if (flatten) { + return flattenError(this); + } + else { + return [this]; + } } + } /* -* A validator error class, provided by the `validatable.js`, which holds information about the validators which do not approve a value that has just been validated. +* A validator error class, provided by the `validatable.js`, which holds +* information about the validators which do not approve a value that has +* just been validated. */ export {ValidatorError}; diff --git a/src/fields.js b/src/fields.js index 3d5bcb6..b964077 100644 --- a/src/fields.js +++ b/src/fields.js @@ -8,16 +8,9 @@ import { isFunction } from 'typeable'; import deeplyEquals from 'deep-equal'; -import {ValidatorError} from 'validatable'; import {cloneData} from './utils'; import {Schema} from './schemas'; -import {InvalidFieldError} from './errors'; - -/** -* Exposing validatable ValidatorError. -*/ - -export {ValidatorError}; +import {ValidationError} from './errors'; /* * Document field class. @@ -104,7 +97,8 @@ export class Field { options.types = Object.assign({}, options.types, { Schema: (value) => { if (isArray(type)) type = type[0]; // in case of {type: [Schema]} - return new this.$document.constructor(type, value, this.$document); + + return this.$document._createRelative(type, value); } }); @@ -191,11 +185,11 @@ export class Field { } /* - * Creates a new instance of InvalidFieldError. + * Creates a new instance of ValidationError. */ - createInvalidFieldError (path, errors, related) { - return new InvalidFieldError(path, errors, related); + _createValidationError (path, errors, related) { + return new ValidationError(path, errors, related); } /* @@ -213,7 +207,7 @@ export class Field { ); if (hasError) { - return this.createInvalidFieldError(path, errors, related); + return this._createValidationError(path, errors, related); } return undefined; } diff --git a/tests/document.js b/tests/document.js index 1d51182..71d2e73 100644 --- a/tests/document.js +++ b/tests/document.js @@ -3,7 +3,6 @@ import { Document, Schema, ValidationError, - InvalidFieldError, ValidatorError } from '../dist'; @@ -879,7 +878,7 @@ test('method `validate` should validate fields and return an error object', asyn title: { type: 'String', validate: [ - {name: 'presence', message: 'is required'} + {validator: 'presence', message: 'is required'} ] }, year: { @@ -892,31 +891,31 @@ test('method `validate` should validate fields and return an error object', asyn name: { type: 'String', validate: [ - {name: 'presence', message: 'is required'} + {validator: 'presence', message: 'is required'} ] }, newBook: { type: bookSchema, validate: [ - {name: 'presence', message: 'is required'} + {validator: 'presence', message: 'is required'} ] }, newBooks: { type: [bookSchema], validate: [ - {name: 'presence', message: 'is required'} + {validator: 'presence', message: 'is required'} ] }, oldBook: { type: bookSchema, validate: [ - {name: 'presence', message: 'is required'} + {validator: 'presence', message: 'is required'} ] }, oldBooks: { type: [bookSchema], validate: [ - {name: 'presence', message: 'is required'} + {validator: 'presence', message: 'is required'} ] }, prevBooks: { @@ -930,25 +929,25 @@ test('method `validate` should validate fields and return an error object', asyn prevBooks: [null, {}] }; let user = new Document(userSchema, data); - let error = new ValidatorError(undefined, {name: "presence", message: "is required"}); + let error = new ValidatorError('presence', 'is required'); t.deepEqual(await user.validate(), [ - new InvalidFieldError('name', [error]), - new InvalidFieldError('newBook', [error]), - new InvalidFieldError('newBooks', [error]), - new InvalidFieldError('oldBook', [], [ - new InvalidFieldError('title', [error]) + new ValidationError('name', [error]), + new ValidationError('newBook', [error]), + new ValidationError('newBooks', [error]), + new ValidationError('oldBook', [], [ + new ValidationError('title', [error]) ]), - new InvalidFieldError('oldBooks', [], [ + new ValidationError('oldBooks', [], [ undefined, [ - new InvalidFieldError('title', [error]) + new ValidationError('title', [error]) ] ]), - new InvalidFieldError('prevBooks', [], [ + new ValidationError('prevBooks', [], [ undefined, [ - new InvalidFieldError('title', [error]) + new ValidationError('title', [error]) ] ]) ]); @@ -960,7 +959,7 @@ test('method `isValid` should return `true` when fields are valid', async (t) => title: { type: 'String', validate: [ - {name: 'presence', message: 'is required'} + {validator: 'presence', message: 'is required'} ] }, } @@ -970,19 +969,19 @@ test('method `isValid` should return `true` when fields are valid', async (t) => name: { type: 'String', validate: [ - {name: 'presence', message: 'is required'} + {validator: 'presence', message: 'is required'} ] }, book: { type: bookSchema, validate: [ - {name: 'presence', message: 'is required'} + {validator: 'presence', message: 'is required'} ] }, books: { type: [bookSchema], validate: [ - {name: 'presence', message: 'is required'} + {validator: 'presence', message: 'is required'} ] } } @@ -1013,12 +1012,22 @@ test('method `approve` should throw ValidationError when not all fields are vali name: { type: 'String', validate: [ - {name: 'presence', message: 'is required'} + {validator: 'presence', message: 'is required'} ] } } }); let user = new Document(userSchema); + let error = {}; + try { + await user.approve(); + } + catch (e) { + error = e; + } t.throws(user.approve(), ValidationError); + t.is(error.path.length, 0); + t.is(error.errors.length, 0); + t.is(error.related.length, 1); }); diff --git a/tests/errors.js b/tests/errors.js new file mode 100644 index 0000000..316741c --- /dev/null +++ b/tests/errors.js @@ -0,0 +1,28 @@ +import test from 'ava'; +import { + ValidationError, + ValidatorError +} from '../dist'; + +test.only('ValidationError method `toArray` should return a single-dimensional array of errors', (t) => { + let validatorError = new ValidatorError('presence', 'is required'); + let validationError = new ValidationError([], [], [ + new ValidationError('name', [validatorError]), + new ValidationError('oldBook', [], [ + new ValidationError('title', [validatorError]) + ]), + new ValidationError('oldBooks', [validatorError], [ + undefined, + [ + new ValidationError('title', [validatorError]) + ] + ]) + ]); + + t.deepEqual(validationError.toArray(), [ + new ValidationError(['name'], [validatorError]), + new ValidationError(['oldBook', 'title'], [validatorError]), + new ValidationError(['oldBooks'], [validatorError]), + new ValidationError(['oldBooks', 1, 'title'], [validatorError]) + ]); +}); diff --git a/tests/index.js b/tests/index.js index 4ab862f..74e698f 100644 --- a/tests/index.js +++ b/tests/index.js @@ -4,7 +4,6 @@ import * as objectschema from '../dist'; test('exposed content', (t) => { t.is(!!objectschema.Schema, true); t.is(!!objectschema.Document, true); - t.is(!!objectschema.InvalidFieldError, true); t.is(!!objectschema.ValidatorError, true); t.is(!!objectschema.ValidationError, true); }); From 14520b2d5c616775c04ac2b318bb2e1698bd2768 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 6 Nov 2016 21:59:23 +0100 Subject: [PATCH 077/219] validate by setting field errors, merging methods approved and validate, collec/apply errors, optimizations --- README.md | 82 +++++++++---------- dist/documents.js | 121 +++++++++++++++++++++------ dist/errors.js | 85 ++----------------- dist/fields.js | 144 ++++++++++++++++---------------- package.json | 2 +- src/documents.js | 111 ++++++++++++++++++++----- src/errors.js | 100 ++--------------------- src/fields.js | 147 ++++++++++++++++----------------- tests/document.js | 203 ++++++++++++++++++++++++++++++++++------------ tests/errors.js | 28 ------- 10 files changed, 533 insertions(+), 490 deletions(-) delete mode 100644 tests/errors.js diff --git a/README.md b/README.md index 5bc4d87..44d2237 100644 --- a/README.md +++ b/README.md @@ -163,6 +163,10 @@ A document is a schema enforced data object. All document properties and configu > Validator instance, used for validating fields. +**Document.prototype.applyErrors(errors)**: Document + +> Deeply populates fields with the provided `errors`. + **Document.prototype.clear()**: Document > Sets all document fields to `null`. @@ -171,6 +175,10 @@ A document is a schema enforced data object. All document properties and configu > Returns a new Document instance which is the exact copy of the original. +**Document.prototype.collectErrors()**: Array + +> Returns a list of errors for all the fields (e.g. [{path: ['name'], errors: [ValidatorError(), ...]}]). + **Document.prototype.commit()**: Document > Sets initial value of each document field to the current value of a field. This is how field change tracking is restarted. @@ -179,7 +187,7 @@ A document is a schema enforced data object. All document properties and configu > Returns `true` when the provided `value` represents an object with the same fields as the document itself. -**Document.prototype.get(...keys)**: Field +**Document.prototype.getPath(...keys)**: Field > Returns a class instance of the field at path. @@ -187,7 +195,7 @@ A document is a schema enforced data object. All document properties and configu |--------|------|----------|---------|------------ | keys | Array | Yes | - | Path to a field (e.g. `['book', 0, 'title']`). -**Document.prototype.has(...keys)**: Boolean +**Document.prototype.hasPath(...keys)**: Boolean > Returns `true` when a field path exists. @@ -195,19 +203,6 @@ A document is a schema enforced data object. All document properties and configu |--------|------|----------|---------|------------ | keys | Array | Yes | - | Path to a field (e.g. `['book', 0, 'title']`). -**Document.prototype.approve()**: Document - -> The same as method `validate()` but it throws the `ValidationError` when not all fields are valid. - -```js -try { - await doc.approve(); // throws a ValidationError when fields are invalid -} -catch (e) { - // `e` is an instance of ValidationError where root document errors exists inside the `related` property -} -``` - **Document.prototype.isChanged()**: Boolean > Returns `true` if at least one document field has been changed. @@ -216,6 +211,10 @@ catch (e) { > Returns `true` when all document fields are valid. +**Document.prototype.invalidate()**: Document + +> Clears `errors` on all fields (the reverse of `validate()`). + **Document.prototype.populate(data)**: Document > Applies data to a document. @@ -236,9 +235,22 @@ catch (e) { > Converts a document into serialized data object. -**Document.prototype.validate()**: Promise(ValidationError[]) +**Document.prototype.validate({quiet})**: Promise(Document) + +> Validates document fields and throws a ValidationError error if not all fields are valid unless the `quiet` is set to `true`. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| quiet | Boolean | No | false | When set to `true`, a ValidationError is thrown. -> Validates all document fields and returns a list of `ValidationError` errors for all invalid fields. +```js +try { + await doc.validate(); // throws a ValidationError when fields are invalid +} +catch (e) { + // `e` is an instance of ValidationError, which holds errors for all invalid fields (including those deeply nested) +} +``` ### Field @@ -286,7 +298,7 @@ user.$name.isChanged(); // -> calling field instance method **Field.prototype.initialValue**: Any -> A getter which returns the initial field value (a value from the last commit). +> A getter which returns the initial field value (last committed value). **Field.prototype.isChanged()**: Boolean @@ -296,6 +308,10 @@ user.$name.isChanged(); // -> calling field instance method > Returns `true` if the field and all sub fields are valid. +**Field.prototype.invalidate()**: Field + +> Clears the `errors` field on all fields (the reverse of `validate()`). + **Field.prototype.reset()**: Field > Sets the field to its default value. @@ -304,9 +320,9 @@ user.$name.isChanged(); // -> calling field instance method > Sets the field to its initial value (last committed value). This is how you can discharge field's changes. -**Field.prototype.validate()**: Promise(Object) +**Field.prototype.validate()**: Promise(Field) -> Validates the field and returns errors. +> Validates the `value` and populates the `errors` property with errors. **Field.prototype.value**: Any @@ -314,34 +330,16 @@ user.$name.isChanged(); // -> calling field instance method ### ValidationError -**ValidationError(path, errors, related, message, code)** +**ValidationError(message, code)** -> A validation error class which holds information about invalid fields of a document. +> A validation error class which is triggered by method `validate` when not all fields are valid. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ -| path | String,String[] | No | [] | A path to a field in a document tree (e.g. ['friends', 1, 'name']). If the path is not specified it represents the root field holding a root document. -| errors | ValidationError[] | No | [] | A list of `ValidatorError` instances of the related document field. -| related | ValidationError[] | No | A list of related `ValidationError` instances (of a sub document). -| message | String | No | Fields validation failed | General error message. +| paths | String[][] | No | [] | A list of all invalid document paths (e.g. [['friends', 1, 'name'], ...]) +| message | String | No | Validation failed | General error message. | code | Number | No | 422 | Error code. -**ValidationError.prototype.isEmpty()**: Boolean - -> Returns `true` if the instance holds no errors. - -**ValidationError.prototype.isRoot()**: Boolean - -> Returns `true` if the instance represents the root field error. - -**ValidationError.prototype.toArray(flatten)**: ValidationError[] - -> When `flatten` is `true`, it returns an flattened array of all errors, including the deeply related errors, otherwise the original nested format array is returned. - -| Option | Type | Required | Default | Description -|--------|------|----------|---------|------------ -| flatten | Boolean | No | true | When `true`, an array of all errors, including the deeply related errors, is returned. - ### ValidatorError **ValidatorError(validator, message, code)** diff --git a/dist/documents.js b/dist/documents.js index 59afbff..27de0fe 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -65,6 +65,10 @@ class Document { Object.defineProperty(this, '$validator', { // validatable.js instance value: this._createValidator() }); + Object.defineProperty(this, '$error', { // last document error instance + value: null, + writable: true + }); this._defineFields(); this._populateFields(data); @@ -115,8 +119,8 @@ class Document { * Creates a new ValidationError instance. */ - _createValidationError(errors) { - return new _errors.ValidationError([], [], errors); + _createValidationError(paths) { + return new _errors.ValidationError(paths); } /* @@ -155,7 +159,7 @@ class Document { * Returns a value at path. */ - get() { + getPath() { for (var _len = arguments.length, keys = Array(_len), _key = 0; _key < _len; _key++) { keys[_key] = arguments[_key]; } @@ -171,8 +175,8 @@ class Document { * Returns `true` if field at path exists. */ - has() { - return this.get(...arguments) !== undefined; + hasPath() { + return this.getPath(...arguments) !== undefined; } /* @@ -339,54 +343,125 @@ class Document { */ validate() { - var _this = this; + var _this = this, + _arguments = arguments; return (0, _asyncToGenerator3.default)(function* () { - let errors = []; + var _ref = _arguments.length > 0 && _arguments[0] !== undefined ? _arguments[0] : {}, + _ref$quiet = _ref.quiet; + + let quiet = _ref$quiet === undefined ? false : _ref$quiet; let fields = _this.$schema.fields; for (let path in fields) { - let error = yield _this[`$${ path }`].validate(); + yield _this[`$${ path }`].validate(); + } - if (!(0, _typeable.isAbsent)(error)) { - errors.push(error); - } + let paths = _this.collectErrors().map(function (e) { + return e.path; + }); + if (!quiet && paths.length > 0) { + let error = _this._createValidationError(paths); + throw error; } - return errors; + return _this; })(); } /* - * Validates fields and throws a ValidationError if not all fields are valid. + * Returns `true` when all document fields are valid. */ - approve() { + isValid() { var _this2 = this; return (0, _asyncToGenerator3.default)(function* () { - let errors = yield _this2.validate(); - - if (errors.length > 0) { - throw _this2._createValidationError(errors); + try { + yield _this2.validate(); + } catch (e) { + return false; } - - return _this2; + return true; })(); } /* - * Returns `true` when all document fields are valid. + * Validates fields and returns errors. */ - isValid() { + invalidate() { var _this3 = this; return (0, _asyncToGenerator3.default)(function* () { - return (0, _typeable.isAbsent)((yield _this3.validate())); + let fields = _this3.$schema.fields; + + + for (let path in fields) { + _this3[`$${ path }`].invalidate(); + } + + return _this3; })(); } + /* + * Returns a list of all field-related errors, including those deeply nested. + */ + + collectErrors() { + var _this4 = this; + + let getErrors = function (doc) { + let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + + let errors = []; + + for (let name in doc.$schema.fields) { + let field = doc[`$${ name }`]; + + if (field.value instanceof _this4.constructor) { + errors.push(...getErrors(field.value, prefix.concat(field.$name))); + } else if ((0, _typeable.isArray)(field.value)) { + field.value.forEach((d, i) => { + if (d instanceof _this4.constructor) { + errors.push(...getErrors(d, prefix.concat([field.$name, i]))); + } + }); + } else if (field.errors.length > 0) { + errors.push({ + path: prefix.concat([field.$name]), + errors: field.errors + }); + } + } + + return errors; + }; + + return getErrors(this); + } + + /* + * Deeply populates fields with the provided `errors`. + */ + + applyErrors() { + let errors = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + + for (let error of errors) { + let path = error.path.concat(); + path[path.length - 1] = `$${ path[path.length - 1] }`; + + let field = this.getPath(path); + if (field) { + field.errors = error.errors; + } + } + + return this; + } + } exports.Document = Document; \ No newline at end of file diff --git a/dist/errors.js b/dist/errors.js index a28153a..110ce2a 100644 --- a/dist/errors.js +++ b/dist/errors.js @@ -15,100 +15,27 @@ var _typeable = require('typeable'); class ValidationError extends Error { - /* - * Creates a ValidationError from input data. - */ - - static parse(data) {} - /* * Class constructor. */ constructor() { - let path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; - let errors = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; - let related = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; - let message = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'Validation failed'; - let code = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 422; + let paths = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + let message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Validation failed'; + let code = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 422; super(); this.name = this.constructor.name; - this.path = (0, _typeable.toArray)(path); - this.errors = errors; - this.related = related; + this.paths = (0, _typeable.toArray)(paths); this.message = message; this.code = code; } - - /* - * Returns `true` if the error represents the root field error. - */ - - isRoot() { - return this.path.length === 0; - } - - /* - * Returns `true` if the error has no error messages. - */ - - isEmpty() { - return this.errors.length === 0 && this.related.length === 0; - } - - /* - * Returns single-dimensional array of errors when `flatten` is `true`, - * otherwise the original nested array is returned. - */ - - toArray() { - var _this = this; - - let flatten = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; - - - let flattenError = function (error) { - let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; - - let errors = []; - - if (error.errors.length > 0) { - errors.push(new _this.constructor(prefix.concat(error.path), error.errors, [], error.message, error.code)); - } - - if (error.related.length > 0) { - error.related.forEach((e, i) => { - if ((0, _typeable.isAbsent)(e)) { - return; - } else if ((0, _typeable.isArray)(e)) { - e.forEach(e => { - errors.push(...flattenError(e, prefix.concat(error.path, [i]))); - }); - } else if (e instanceof _this.constructor) { - errors.push(...flattenError(e, prefix.concat(error.path))); - } - }); - } - - return errors; - }; - - if (this.isEmpty()) { - return []; - } else if (flatten) { - return flattenError(this); - } else { - return [this]; - } - } - } exports.ValidationError = ValidationError; /* - * A validator error class, provided by the `validatable.js`, which holds - * information about the validators which do not approve a value that has + * A validator error class, provided by the `validatable.js`, which holds + * information about the validators which do not approve a value that has * just been validated. */ diff --git a/dist/fields.js b/dist/fields.js index 304da7e..f47aebd 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -38,20 +38,24 @@ class Field { */ constructor(document, name) { - Object.defineProperty(this, '$document', { + Object.defineProperty(this, '$document', { // reference to the Document instance which owns the field value: document }); - Object.defineProperty(this, '$name', { + Object.defineProperty(this, '$name', { // the name that a field has on the document value: name }); - Object.defineProperty(this, '_value', { + Object.defineProperty(this, '_value', { // current field value value: this.defaultValue, writable: true }); - Object.defineProperty(this, '_initialValue', { + Object.defineProperty(this, '_initialValue', { // last committed field value value: this._value, writable: true }); + Object.defineProperty(this, '_errors', { // last action errors + value: [], + writable: true + }); } /* @@ -86,6 +90,7 @@ class Field { value = set.call(this.$document, value); } + this.invalidate(); // remove the last memorized error because the value has changed this._value = value; } @@ -111,6 +116,45 @@ class Field { return value; } + /* + * Returns the value of a field of the last commit. + */ + + get initialValue() { + return this._initialValue; + } + + /* + * Returns the last error of the field. + */ + + get errors() { + return this._errors; + } + + /* + * Returns the last error of the field. + */ + + set errors(errors) { + this._errors = errors.map(e => this._createError(e)); + } + + /* + * Returns the last error of the field. + */ + + _createError(data) { + switch (data.name) { + case 'ValidatorError': + return new _errors.ValidatorError(data.validator, data.message, data.code); + case 'Error': + return new Error(data.message); + } + + throw new Error(`Unknown document field error`); + } + /* * Converts the `value` into specified `type`. */ @@ -129,20 +173,13 @@ class Field { return (0, _typeable.cast)(value, type, options); } - /* - * Returns the value of a field before last commit. - */ - - get initialValue() { - return this._initialValue; - } - /* * Sets field to the default value. */ reset() { this.value = this.defaultValue; + this.invalidate(); return this; } @@ -209,85 +246,46 @@ class Field { } /* - * Creates a new instance of ValidationError. - */ - - _createValidationError(path, errors, related) { - return new _errors.ValidationError(path, errors, related); - } - - /* - * Validates the field and returns errors. + * Validates the field by populating the `_errors` property. */ validate() { var _this = this; return (0, _asyncToGenerator3.default)(function* () { - let path = _this.$name; - let errors = yield _this._validateValue(_this.value); - let related = yield _this._validateRelated(_this.value); + let relatives = (0, _typeable.toArray)(_this.value) || []; // validate related documents + for (let relative of relatives) { + let isDocument = relative instanceof _this.$document.constructor; - let hasError = errors.length > 0 || !_this._isRelatedValid(related); - - if (hasError) { - return _this._createValidationError(path, errors, related); + if (isDocument) { + yield relative.validate({ quiet: true }); // don't throw + } } - return undefined; - })(); - } - /* - * Validates the `value` and returns errors. - */ + _this._errors = yield _this.$document.$validator.validate( // validate this field + _this.value, _this.$document.$schema.fields[_this.$name].validate); - _validateValue(value) { - var _this2 = this; - - return (0, _asyncToGenerator3.default)(function* () { - let validate = _this2.$document.$schema.fields[_this2.$name].validate; - - - return yield _this2.$document.$validator.validate(value, validate); + return _this; })(); } /* - * Validates the related fields of the `value` and returns errors. + * Validates the field by clearing the `_errors` property */ - _validateRelated(value) { - var _this3 = this; + invalidate() { + let relatives = (0, _typeable.toArray)(this.value) || []; // validate related documents + for (let relative of relatives) { + let isDocument = relative instanceof this.$document.constructor; - return (0, _asyncToGenerator3.default)(function* () { - let type = _this3.$document.$schema.fields[_this3.$name].type; - - - if ((0, _typeable.isPresent)(value) && type instanceof _schemas.Schema) { - return yield value.validate(); - } else if ((0, _typeable.isArray)(value) && (0, _typeable.isArray)(type)) { - let items = []; - for (let v of value) { - if (type[0] instanceof _schemas.Schema) { - items.push(v ? yield v.validate() : undefined); - } else { - items.push((yield _this3._validateValue(v))); - } - } - return items; + if (isDocument) { + relative.invalidate(); } - return []; - })(); - } + } - /* - * Checks if the `related` field is valid. - */ + this._errors = []; - _isRelatedValid(related) { - return related.every(v => { - return (0, _typeable.isArray)(v) ? this._isRelatedValid(v) : (0, _typeable.isAbsent)(v); - }); + return this; } /* @@ -295,10 +293,10 @@ class Field { */ isValid() { - var _this4 = this; + var _this2 = this; return (0, _asyncToGenerator3.default)(function* () { - return (0, _typeable.isAbsent)((yield _this4.validate())); + return (0, _typeable.isAbsent)(_this2.errors); })(); } diff --git a/package.json b/package.json index c4951f8..02b7712 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "1.7.0", + "version": "2.0.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/documents.js b/src/documents.js index b48f83c..5f16816 100644 --- a/src/documents.js +++ b/src/documents.js @@ -36,6 +36,10 @@ export class Document { Object.defineProperty(this, '$validator', { // validatable.js instance value: this._createValidator() }); + Object.defineProperty(this, '$error', { // last document error instance + value: null, + writable: true + }); this._defineFields(); this._populateFields(data); @@ -85,8 +89,8 @@ export class Document { * Creates a new ValidationError instance. */ - _createValidationError (errors) { - return new ValidationError([], [], errors); + _createValidationError (paths) { + return new ValidationError(paths); } /* @@ -124,7 +128,7 @@ export class Document { * Returns a value at path. */ - get (...keys) { + getPath (...keys) { if (isArray(keys[0])) { keys = keys[0]; } @@ -136,8 +140,8 @@ export class Document { * Returns `true` if field at path exists. */ - has (...keys) { - return this.get(...keys) !== undefined; + hasPath (...keys) { + return this.getPath(...keys) !== undefined; } /* @@ -298,43 +302,106 @@ export class Document { * Validates fields and returns errors. */ - async validate () { - let errors = []; + async validate ({quiet = false} = {}) { let {fields} = this.$schema; for (let path in fields) { - let error = await this[`$${path}`].validate(); + await this[`$${path}`].validate(); + } - if (!isAbsent(error)) { - errors.push(error); - } + let paths = this.collectErrors().map((e) => e.path); + if (!quiet && paths.length > 0) { + let error = this._createValidationError(paths); + throw error; } - return errors; + return this; + } + + /* + * Returns `true` when all document fields are valid. + */ + + async isValid () { + try { + await this.validate(); + } + catch (e) { + return false; + } + return true; } /* - * Validates fields and throws a ValidationError if not all fields are valid. + * Validates fields and returns errors. */ - async approve () { - let errors = await this.validate(); + async invalidate () { + let {fields} = this.$schema; - if (errors.length > 0) { - throw this._createValidationError(errors); + for (let path in fields) { + this[`$${path}`].invalidate(); } return this; } /* - * Returns `true` when all document fields are valid. + * Returns a list of all field-related errors, including those deeply nested. */ - async isValid () { - return isAbsent( - await this.validate() - ); + collectErrors () { + + let getErrors = (doc, prefix = []) => { + let errors = []; + + for (let name in doc.$schema.fields) { + let field = doc[`$${name}`]; + + if (field.value instanceof this.constructor) { + errors.push( + ...getErrors(field.value, prefix.concat(field.$name)) + ); + } + else if (isArray(field.value)) { + field.value.forEach((d, i) => { + if (d instanceof this.constructor) { + errors.push( + ...getErrors(d, prefix.concat([field.$name, i])) + ); + } + }); + } + else if (field.errors.length > 0) { + errors.push({ + path: prefix.concat([field.$name]), + errors: field.errors + }); + } + } + + return errors; + } + + return getErrors(this); + } + + /* + * Deeply populates fields with the provided `errors`. + */ + + applyErrors (errors = []) { + for (let error of errors) { + let path = error.path.concat(); + path[path.length - 1] = `$${path[path.length - 1]}`; + + let field = this.getPath(path); + if (field) { + field.errors = error.errors; + } + } + + return this; } } diff --git a/src/errors.js b/src/errors.js index 20f17cb..ef7520e 100644 --- a/src/errors.js +++ b/src/errors.js @@ -1,9 +1,5 @@ import {ValidatorError} from 'validatable'; -import { - toArray, - isArray, - isAbsent -} from 'typeable'; +import {toArray} from 'typeable'; /* * A validation error class which holds information about document's invalid fields. @@ -11,109 +7,23 @@ import { export class ValidationError extends Error { - /* - * Creates a ValidationError from input data. - */ - - static parse (data) { - - } - /* * Class constructor. */ - constructor (path = [], errors = [], related = [], message = 'Validation failed', code = 422) { + constructor (paths = [], message = 'Validation failed', code = 422) { super(); this.name = this.constructor.name; - this.path = toArray(path); - this.errors = errors; - this.related = related; + this.paths = toArray(paths); this.message = message; this.code = code; } - - /* - * Returns `true` if the error represents the root field error. - */ - - isRoot () { - return this.path.length === 0; - } - - /* - * Returns `true` if the error has no error messages. - */ - - isEmpty () { - return ( - this.errors.length === 0 - && this.related.length === 0 - ); - } - - /* - * Returns single-dimensional array of errors when `flatten` is `true`, - * otherwise the original nested array is returned. - */ - - toArray (flatten = true) { - - let flattenError = (error, prefix = []) => { - let errors = []; - - if (error.errors.length > 0) { - errors.push( - new this.constructor( - prefix.concat(error.path), - error.errors, - [], - error.message, - error.code - ) - ); - } - - if (error.related.length > 0) { - error.related.forEach((e, i) => { - if (isAbsent(e)) { - return; - } - else if (isArray(e)) { - e.forEach((e) => { - errors.push( - ...flattenError(e, prefix.concat(error.path, [i])) - ); - }); - } - else if (e instanceof this.constructor) { - errors.push( - ...flattenError(e, prefix.concat(error.path)) - ); - } - }); - } - - return errors; - } - - if (this.isEmpty()) { - return []; - } - else if (flatten) { - return flattenError(this); - } - else { - return [this]; - } - } - } /* -* A validator error class, provided by the `validatable.js`, which holds -* information about the validators which do not approve a value that has +* A validator error class, provided by the `validatable.js`, which holds +* information about the validators which do not approve a value that has * just been validated. */ diff --git a/src/fields.js b/src/fields.js index b964077..73c8148 100644 --- a/src/fields.js +++ b/src/fields.js @@ -1,16 +1,14 @@ import { cast, - isUndefined, - isPresent, isAbsent, isArray, - isObject, + toArray, isFunction } from 'typeable'; import deeplyEquals from 'deep-equal'; import {cloneData} from './utils'; import {Schema} from './schemas'; -import {ValidationError} from './errors'; +import {ValidatorError} from './errors'; /* * Document field class. @@ -23,20 +21,24 @@ export class Field { */ constructor (document, name) { - Object.defineProperty(this, '$document', { + Object.defineProperty(this, '$document', { // reference to the Document instance which owns the field value: document }); - Object.defineProperty(this, '$name', { + Object.defineProperty(this, '$name', { // the name that a field has on the document value: name, }); - Object.defineProperty(this, '_value', { + Object.defineProperty(this, '_value', { // current field value value: this.defaultValue, writable: true }); - Object.defineProperty(this, '_initialValue', { + Object.defineProperty(this, '_initialValue', { // last committed field value value: this._value, writable: true }); + Object.defineProperty(this, '_errors', { // last action errors + value: [], + writable: true + }); } /* @@ -65,6 +67,7 @@ export class Field { value = set.call(this.$document, value); } + this.invalidate(); // remove the last memorized error because the value has changed this._value = value; } @@ -87,6 +90,45 @@ export class Field { return value; } + /* + * Returns the value of a field of the last commit. + */ + + get initialValue () { + return this._initialValue; + } + + /* + * Returns the last error of the field. + */ + + get errors () { + return this._errors; + } + + /* + * Returns the last error of the field. + */ + + set errors (errors) { + this._errors = errors.map((e) => this._createError(e)); + } + + /* + * Returns the last error of the field. + */ + + _createError (data) { + switch (data.name) { + case 'ValidatorError': + return new ValidatorError(data.validator, data.message, data.code); + case 'Error': + return new Error(data.message); + } + + throw new Error(`Unknown document field error`); + } + /* * Converts the `value` into specified `type`. */ @@ -105,20 +147,13 @@ export class Field { return cast(value, type, options); } - /* - * Returns the value of a field before last commit. - */ - - get initialValue () { - return this._initialValue; - } - /* * Sets field to the default value. */ reset () { this.value = this.defaultValue; + this.invalidate(); return this; } @@ -185,76 +220,44 @@ export class Field { } /* - * Creates a new instance of ValidationError. - */ - - _createValidationError (path, errors, related) { - return new ValidationError(path, errors, related); - } - - /* - * Validates the field and returns errors. + * Validates the field by populating the `_errors` property. */ - async validate() { - let path = this.$name; - let errors = await this._validateValue(this.value); - let related = await this._validateRelated(this.value); + async validate () { + let relatives = toArray(this.value) || []; // validate related documents + for (let relative of relatives) { + let isDocument = relative instanceof this.$document.constructor; - let hasError = ( - errors.length > 0 - || !this._isRelatedValid(related) - ); - - if (hasError) { - return this._createValidationError(path, errors, related); + if (isDocument) { + await relative.validate({quiet: true}); // don't throw + } } - return undefined; - } - - /* - * Validates the `value` and returns errors. - */ - async _validateValue (value) { - let {validate} = this.$document.$schema.fields[this.$name]; + this._errors = await this.$document.$validator.validate( // validate this field + this.value, + this.$document.$schema.fields[this.$name].validate + ); - return await this.$document.$validator.validate(value, validate); + return this; } /* - * Validates the related fields of the `value` and returns errors. + * Validates the field by clearing the `_errors` property */ - async _validateRelated (value) { - let {type} = this.$document.$schema.fields[this.$name]; + invalidate () { + let relatives = toArray(this.value) || []; // validate related documents + for (let relative of relatives) { + let isDocument = relative instanceof this.$document.constructor; - if (isPresent(value) && type instanceof Schema) { - return await value.validate(); - } - else if (isArray(value) && isArray(type)) { - let items = []; - for (let v of value) { - if (type[0] instanceof Schema) { - items.push(v ? await v.validate() : undefined); - } - else { - items.push(await this._validateValue(v)); - } + if (isDocument) { + relative.invalidate(); } - return items; } - return []; - } - /* - * Checks if the `related` field is valid. - */ + this._errors = []; - _isRelatedValid (related) { - return related.every(v => { - return isArray(v) ? this._isRelatedValid(v) : isAbsent(v); - }); + return this; } /* @@ -262,9 +265,7 @@ export class Field { */ async isValid () { - return isAbsent( - await this.validate() - ); + return isAbsent(this.errors); } } diff --git a/tests/document.js b/tests/document.js index 71d2e73..c289194 100644 --- a/tests/document.js +++ b/tests/document.js @@ -295,7 +295,7 @@ test('variable `$root` should return the first document in a tree of nested docu t.is(user.books[0].$root, user); }); -test('method `get` should return an instance of a field at path', (t) => { +test('method `getPath` should return an instance of a field at path', (t) => { let bookSchema = new Schema({ fields: { title: { @@ -330,16 +330,16 @@ test('method `get` should return an instance of a field at path', (t) => { let user0 = new Document(userSchema); let user1 = new Document(userSchema, data); - t.is(user0.get('name'), null); - t.is(user1.get('name'), 'Foo'); - t.is(user1.get('$name').value, 'Foo'); - t.is(user0.get('book', 'title'), undefined); - t.is(user1.get('book', 'title'), 'Bar'); - t.is(user0.get('books', 0, 'title'), undefined); - t.is(user1.get('books', 0, '$title').value, 'Baz'); + t.is(user0.getPath('name'), null); + t.is(user1.getPath('name'), 'Foo'); + t.is(user1.getPath('$name').value, 'Foo'); + t.is(user0.getPath('book', 'title'), undefined); + t.is(user1.getPath('book', 'title'), 'Bar'); + t.is(user0.getPath('books', 0, 'title'), undefined); + t.is(user1.getPath('books', 0, '$title').value, 'Baz'); }); -test('method `has` should check field existance at path', (t) => { +test('method `hasPath` should check field existance at path', (t) => { let bookSchema = new Schema({ fields: { title: { @@ -374,14 +374,14 @@ test('method `has` should check field existance at path', (t) => { let user0 = new Document(userSchema); let user1 = new Document(userSchema, data); - t.is(user0.has('name'), true); - t.is(user0.has('book', 'title'), false); - t.is(user0.has('books', 0, 'title'), false); - t.is(user0.has(['books', 0, 'title']), false); - t.is(user1.has('name'), true); - t.is(user1.has('book', 'title'), true); - t.is(user1.has('books', 0, 'title'), true); - t.is(user1.has(['books', 0, 'title']), true); + t.is(user0.hasPath('name'), true); + t.is(user0.hasPath('book', 'title'), false); + t.is(user0.hasPath('books', 0, 'title'), false); + t.is(user0.hasPath(['books', 0, 'title']), false); + t.is(user1.hasPath('name'), true); + t.is(user1.hasPath('book', 'title'), true); + t.is(user1.hasPath('books', 0, 'title'), true); + t.is(user1.hasPath(['books', 0, 'title']), true); }); test('method `toObject` should convert a document into serialized data object', (t) => { @@ -455,7 +455,7 @@ test('method `toObject` should convert a document into serialized data object', }); }); -test('method `reset` should deeply reset fields to their default values', (t) => { +test('method `reset` should deeply set fields to their default values and invalidate the errors', (t) => { let bookSchema = new Schema({ fields: { title: { @@ -502,8 +502,11 @@ test('method `reset` should deeply reset fields to their default values', (t) => }; let user = new Document(userSchema); user.populate(data); + user.$name._errors = ['foo']; + user.reset(); + t.deepEqual(user.$name.errors, []); t.deepEqual(user.toObject(), { name: 'Bar', book: { @@ -872,7 +875,7 @@ test('method `clone` should return an exact copy of the original', (t) => { t.deepEqual(user.clone(), user); }); -test('method `validate` should validate fields and return an error object', async (t) => { +test('method `validate` should validate all fields and throw an error', async (t) => { let bookSchema = new Schema({ fields: { title: { @@ -925,32 +928,39 @@ test('method `validate` should validate fields and return an error object', asyn }); let data = { oldBook: {}, - oldBooks: [null, {}], - prevBooks: [null, {}] + oldBooks: [null, {}] }; let user = new Document(userSchema, data); - let error = new ValidatorError('presence', 'is required'); + let validatorError = new ValidatorError('presence', 'is required'); + + // throws an error + t.throws(user.validate(), ValidationError); + let error = null; + try { + await user.validate(); + } catch (e) { + error = e; + } - t.deepEqual(await user.validate(), [ - new ValidationError('name', [error]), - new ValidationError('newBook', [error]), - new ValidationError('newBooks', [error]), - new ValidationError('oldBook', [], [ - new ValidationError('title', [error]) - ]), - new ValidationError('oldBooks', [], [ - undefined, - [ - new ValidationError('title', [error]) - ] - ]), - new ValidationError('prevBooks', [], [ - undefined, - [ - new ValidationError('title', [error]) - ] - ]) + t.deepEqual(error.paths, [ + ['name'], + ['newBook'], + ['newBooks'], + ['oldBook', 'title'], + ['oldBooks', 1, 'title'] ]); + // errors are populated + t.deepEqual(user.$name.errors, [validatorError]); + t.deepEqual(user.$newBook.errors, [validatorError]); + t.deepEqual(user.$newBooks.errors, [validatorError]); + t.deepEqual(user.$oldBook.errors, []); + t.deepEqual(user.oldBook.$title.errors, [validatorError]); + t.deepEqual(user.oldBook.$year.errors, []); + t.deepEqual(user.$oldBooks.errors, []); + t.deepEqual(user.oldBooks[0], null); + t.deepEqual(user.oldBooks[1].$title.errors, [validatorError]); + t.deepEqual(user.oldBooks[1].$year.errors, []); + t.deepEqual(user.$prevBooks.errors, []); }); test('method `isValid` should return `true` when fields are valid', async (t) => { @@ -1006,7 +1016,20 @@ test('method `isValid` should return `true` when fields are valid', async (t) => t.is(await user.isValid(), true); }); -test('method `approve` should throw ValidationError when not all fields are valid', async (t) => { +test('method `invalidate` should clear errors on all fields', async (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'String', + validate: [ + {validator: 'presence', message: 'is required'} + ] + }, + year: { + type: 'Integer' + } + } + }); let userSchema = new Schema({ fields: { name: { @@ -1014,20 +1037,92 @@ test('method `approve` should throw ValidationError when not all fields are vali validate: [ {validator: 'presence', message: 'is required'} ] + }, + newBook: { + type: bookSchema, + validate: [ + {validator: 'presence', message: 'is required'} + ] + }, + newBooks: { + type: [bookSchema], + validate: [ + {validator: 'presence', message: 'is required'} + ] + }, + oldBook: { + type: bookSchema, + validate: [ + {validator: 'presence', message: 'is required'} + ] + }, + oldBooks: { + type: [bookSchema], + validate: [ + {validator: 'presence', message: 'is required'} + ] + }, + prevBooks: { + type: [bookSchema] } } }); - let user = new Document(userSchema); + let data = { + oldBook: {}, + oldBooks: [null, {}] + }; + let user = new Document(userSchema, data); - let error = {}; - try { - await user.approve(); - } - catch (e) { - error = e; - } - t.throws(user.approve(), ValidationError); - t.is(error.path.length, 0); - t.is(error.errors.length, 0); - t.is(error.related.length, 1); + await user.validate({quiet: true}); + // invalidate is triggered when a field changes + user.name = 'foo'; + t.deepEqual(user.$name.errors, []); + // errors are populated + user.invalidate(); + t.deepEqual(user.$newBook.errors, []); + t.deepEqual(user.$newBooks.errors, []); + t.deepEqual(user.oldBook.$title.errors, []); + t.deepEqual(user.oldBooks[0], null); + t.deepEqual(user.oldBooks[1].$title.errors, []); +}); + +test('method `applyErrors` should set field `errors` property', async (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'String' + } + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'String' + }, + newBook: { + type: bookSchema + }, + newBooks: { + type: [bookSchema] + } + } + }); + let data = { + newBook: {}, + newBooks: [{}, {}] + }; + let user = new Document(userSchema, data); + let validatorData = {name: 'ValidatorError', validator: 'presence', message: 'is required'}; + let validatorError = new ValidatorError(validatorData.validator, validatorData.message); + + user.applyErrors([ + {path: ['name'], errors: [validatorData]}, + {path: ['newBook', 'title'], errors: [validatorData]}, + {path: ['newBooks', 1, 'title'], errors: [validatorData]} + ]); + + t.deepEqual(user.$name.errors, [validatorError]); + t.deepEqual(user.newBook.$title.errors, [validatorError]); + t.deepEqual(user.newBooks[0].$title.errors, []); + t.deepEqual(user.newBooks[1].$title.errors, [validatorError]); }); diff --git a/tests/errors.js b/tests/errors.js deleted file mode 100644 index 316741c..0000000 --- a/tests/errors.js +++ /dev/null @@ -1,28 +0,0 @@ -import test from 'ava'; -import { - ValidationError, - ValidatorError -} from '../dist'; - -test.only('ValidationError method `toArray` should return a single-dimensional array of errors', (t) => { - let validatorError = new ValidatorError('presence', 'is required'); - let validationError = new ValidationError([], [], [ - new ValidationError('name', [validatorError]), - new ValidationError('oldBook', [], [ - new ValidationError('title', [validatorError]) - ]), - new ValidationError('oldBooks', [validatorError], [ - undefined, - [ - new ValidationError('title', [validatorError]) - ] - ]) - ]); - - t.deepEqual(validationError.toArray(), [ - new ValidationError(['name'], [validatorError]), - new ValidationError(['oldBook', 'title'], [validatorError]), - new ValidationError(['oldBooks'], [validatorError]), - new ValidationError(['oldBooks', 1, 'title'], [validatorError]) - ]); -}); From 5c310dff30c62e20011386c0f3e717cf80201832 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 6 Nov 2016 22:14:53 +0100 Subject: [PATCH 078/219] field $name to name, readme --- README.md | 2 +- dist/documents.js | 6 +++--- dist/fields.js | 10 +++++----- dist/index.js | 3 +-- package.json | 2 +- src/documents.js | 6 +++--- src/fields.js | 10 +++++----- src/index.js | 2 -- 8 files changed, 19 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 44d2237..a288ac0 100644 --- a/README.md +++ b/README.md @@ -276,7 +276,7 @@ user.$name.isChanged(); // -> calling field instance method > Document instance. -**Field.prototype.$name**: String +**Field.prototype.name**: String > Field name. diff --git a/dist/documents.js b/dist/documents.js index 27de0fe..0eb0b66 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -422,16 +422,16 @@ class Document { let field = doc[`$${ name }`]; if (field.value instanceof _this4.constructor) { - errors.push(...getErrors(field.value, prefix.concat(field.$name))); + errors.push(...getErrors(field.value, prefix.concat(field.name))); } else if ((0, _typeable.isArray)(field.value)) { field.value.forEach((d, i) => { if (d instanceof _this4.constructor) { - errors.push(...getErrors(d, prefix.concat([field.$name, i]))); + errors.push(...getErrors(d, prefix.concat([field.name, i]))); } }); } else if (field.errors.length > 0) { errors.push({ - path: prefix.concat([field.$name]), + path: prefix.concat([field.name]), errors: field.errors }); } diff --git a/dist/fields.js b/dist/fields.js index f47aebd..aad857d 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -41,7 +41,7 @@ class Field { Object.defineProperty(this, '$document', { // reference to the Document instance which owns the field value: document }); - Object.defineProperty(this, '$name', { // the name that a field has on the document + Object.defineProperty(this, 'name', { // the name that a field has on the document value: name }); Object.defineProperty(this, '_value', { // current field value @@ -63,7 +63,7 @@ class Field { */ get value() { - let get = this.$document.$schema.fields[this.$name].get; + let get = this.$document.$schema.fields[this.name].get; let value = this._value; @@ -79,7 +79,7 @@ class Field { */ set value(value) { - var _$document$$schema$fi = this.$document.$schema.fields[this.$name]; + var _$document$$schema$fi = this.$document.$schema.fields[this.name]; let set = _$document$$schema$fi.set, type = _$document$$schema$fi.type; @@ -99,7 +99,7 @@ class Field { */ get defaultValue() { - var _$document$$schema$fi2 = this.$document.$schema.fields[this.$name]; + var _$document$$schema$fi2 = this.$document.$schema.fields[this.name]; let type = _$document$$schema$fi2.type, set = _$document$$schema$fi2.set, defaultValue = _$document$$schema$fi2.defaultValue; @@ -263,7 +263,7 @@ class Field { } _this._errors = yield _this.$document.$validator.validate( // validate this field - _this.value, _this.$document.$schema.fields[_this.$name].validate); + _this.value, _this.$document.$schema.fields[_this.name].validate); return _this; })(); diff --git a/dist/index.js b/dist/index.js index 762f50a..78cef62 100644 --- a/dist/index.js +++ b/dist/index.js @@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.ValidatorError = exports.InvalidFieldError = exports.ValidationError = exports.Field = exports.Document = exports.Schema = undefined; +exports.ValidatorError = exports.ValidationError = exports.Field = exports.Document = exports.Schema = undefined; var _schemas = require('./schemas'); @@ -21,5 +21,4 @@ exports.Schema = _schemas.Schema; exports.Document = _documents.Document; exports.Field = _fields.Field; exports.ValidationError = _errors.ValidationError; -exports.InvalidFieldError = _errors.InvalidFieldError; exports.ValidatorError = _errors.ValidatorError; \ No newline at end of file diff --git a/package.json b/package.json index 02b7712..75ef26d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.0.0", + "version": "2.1.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/documents.js b/src/documents.js index 5f16816..1571187 100644 --- a/src/documents.js +++ b/src/documents.js @@ -360,21 +360,21 @@ export class Document { if (field.value instanceof this.constructor) { errors.push( - ...getErrors(field.value, prefix.concat(field.$name)) + ...getErrors(field.value, prefix.concat(field.name)) ); } else if (isArray(field.value)) { field.value.forEach((d, i) => { if (d instanceof this.constructor) { errors.push( - ...getErrors(d, prefix.concat([field.$name, i])) + ...getErrors(d, prefix.concat([field.name, i])) ); } }); } else if (field.errors.length > 0) { errors.push({ - path: prefix.concat([field.$name]), + path: prefix.concat([field.name]), errors: field.errors }); } diff --git a/src/fields.js b/src/fields.js index 73c8148..24e0cd0 100644 --- a/src/fields.js +++ b/src/fields.js @@ -24,7 +24,7 @@ export class Field { Object.defineProperty(this, '$document', { // reference to the Document instance which owns the field value: document }); - Object.defineProperty(this, '$name', { // the name that a field has on the document + Object.defineProperty(this, 'name', { // the name that a field has on the document value: name, }); Object.defineProperty(this, '_value', { // current field value @@ -46,7 +46,7 @@ export class Field { */ get value () { - let {get} = this.$document.$schema.fields[this.$name]; + let {get} = this.$document.$schema.fields[this.name]; let value = this._value; if (get) { // transformation with custom getter @@ -60,7 +60,7 @@ export class Field { */ set value (value) { - let {set, type} = this.$document.$schema.fields[this.$name]; + let {set, type} = this.$document.$schema.fields[this.name]; value = this._cast(value, type); // value type casting if (set) { // transformation with custom setter @@ -76,7 +76,7 @@ export class Field { */ get defaultValue () { - let {type, set, defaultValue} = this.$document.$schema.fields[this.$name]; + let {type, set, defaultValue} = this.$document.$schema.fields[this.name]; let value = isFunction(defaultValue) ? defaultValue(this._document) @@ -235,7 +235,7 @@ export class Field { this._errors = await this.$document.$validator.validate( // validate this field this.value, - this.$document.$schema.fields[this.$name].validate + this.$document.$schema.fields[this.name].validate ); return this; diff --git a/src/index.js b/src/index.js index c9de2b2..6c20ebc 100644 --- a/src/index.js +++ b/src/index.js @@ -3,7 +3,6 @@ import {Document} from './documents'; import {Field} from './fields'; import { ValidationError, - InvalidFieldError, ValidatorError } from './errors'; @@ -16,6 +15,5 @@ export { Document, Field, ValidationError, - InvalidFieldError, ValidatorError }; From 9f0e538a6f8023860ad377efe88c8a0b1acfb3c5 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 6 Nov 2016 23:15:23 +0100 Subject: [PATCH 079/219] readme --- README.md | 35 +++++++++++++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a288ac0..81ae66c 100644 --- a/README.md +++ b/README.md @@ -167,6 +167,41 @@ A document is a schema enforced data object. All document properties and configu > Deeply populates fields with the provided `errors`. +```js +doc.applyErrors([ + { + path: ['name'], // field path + errors: [ + { + name: 'ValidatorError', // error class name (ValidatorError or Error) + validator: 'presence', // validator name + message: 'is required' // validator message + } + ] + }, + { + path: ['newBook', 'title'], + errors: [ + { + name: 'ValidatorError', + validator: 'absence', + message: 'must be blank' + } + ] + }, + { + path: ['newBooks', 1, 'title'], + errors: [ + { + name: 'ValidatorError', + validator: 'presence', + message: 'is required' + } + ] + } +]); +``` + **Document.prototype.clear()**: Document > Sets all document fields to `null`. diff --git a/package.json b/package.json index 75ef26d..f23f9ac 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.1.0", + "version": "2.1.1", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { From f124d7b294c47583e05b16d86c67c46b156a9dd9 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 6 Nov 2016 23:19:18 +0100 Subject: [PATCH 080/219] field $document to $owner --- README.md | 4 ++-- dist/fields.js | 36 ++++++++++++++++++------------------ package.json | 2 +- src/fields.js | 26 +++++++++++++------------- 4 files changed, 34 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index 81ae66c..be2c852 100644 --- a/README.md +++ b/README.md @@ -307,9 +307,9 @@ user.$name.isChanged(); // -> calling field instance method | document | Document | Yes | - | An instance of a Document. | name | String | Yes | - | Field name -**Field.prototype.$document**: Document +**Field.prototype.$owner**: Document -> Document instance. +> A reference to a Document instance on which the field is defined. **Field.prototype.name**: String diff --git a/dist/fields.js b/dist/fields.js index aad857d..e712103 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -38,7 +38,7 @@ class Field { */ constructor(document, name) { - Object.defineProperty(this, '$document', { // reference to the Document instance which owns the field + Object.defineProperty(this, '$owner', { // reference to the Document instance which owns the field value: document }); Object.defineProperty(this, 'name', { // the name that a field has on the document @@ -63,13 +63,13 @@ class Field { */ get value() { - let get = this.$document.$schema.fields[this.name].get; + let get = this.$owner.$schema.fields[this.name].get; let value = this._value; if (get) { // transformation with custom getter - value = get.call(this.$document, value); + value = get.call(this.$owner, value); } return value; } @@ -79,15 +79,15 @@ class Field { */ set value(value) { - var _$document$$schema$fi = this.$document.$schema.fields[this.name]; - let set = _$document$$schema$fi.set, - type = _$document$$schema$fi.type; + var _$owner$$schema$field = this.$owner.$schema.fields[this.name]; + let set = _$owner$$schema$field.set, + type = _$owner$$schema$field.type; value = this._cast(value, type); // value type casting if (set) { // transformation with custom setter - value = set.call(this.$document, value); + value = set.call(this.$owner, value); } this.invalidate(); // remove the last memorized error because the value has changed @@ -99,10 +99,10 @@ class Field { */ get defaultValue() { - var _$document$$schema$fi2 = this.$document.$schema.fields[this.name]; - let type = _$document$$schema$fi2.type, - set = _$document$$schema$fi2.set, - defaultValue = _$document$$schema$fi2.defaultValue; + var _$owner$$schema$field2 = this.$owner.$schema.fields[this.name]; + let type = _$owner$$schema$field2.type, + set = _$owner$$schema$field2.set, + defaultValue = _$owner$$schema$field2.defaultValue; let value = (0, _typeable.isFunction)(defaultValue) ? defaultValue(this._document) : defaultValue; @@ -110,7 +110,7 @@ class Field { value = this._cast(value, type); // value type casting if (set) { // custom setter - value = set.call(this.$document, value); + value = set.call(this.$owner, value); } return value; @@ -160,13 +160,13 @@ class Field { */ _cast(value, type) { - let options = this.$document.$schema.typeOptions; + let options = this.$owner.$schema.typeOptions; options.types = (0, _assign2.default)({}, options.types, { Schema: value => { if ((0, _typeable.isArray)(type)) type = type[0]; // in case of {type: [Schema]} - return this.$document._createRelative(type, value); + return this.$owner._createRelative(type, value); } }); @@ -255,15 +255,15 @@ class Field { return (0, _asyncToGenerator3.default)(function* () { let relatives = (0, _typeable.toArray)(_this.value) || []; // validate related documents for (let relative of relatives) { - let isDocument = relative instanceof _this.$document.constructor; + let isDocument = relative instanceof _this.$owner.constructor; if (isDocument) { yield relative.validate({ quiet: true }); // don't throw } } - _this._errors = yield _this.$document.$validator.validate( // validate this field - _this.value, _this.$document.$schema.fields[_this.name].validate); + _this._errors = yield _this.$owner.$validator.validate( // validate this field + _this.value, _this.$owner.$schema.fields[_this.name].validate); return _this; })(); @@ -276,7 +276,7 @@ class Field { invalidate() { let relatives = (0, _typeable.toArray)(this.value) || []; // validate related documents for (let relative of relatives) { - let isDocument = relative instanceof this.$document.constructor; + let isDocument = relative instanceof this.$owner.constructor; if (isDocument) { relative.invalidate(); diff --git a/package.json b/package.json index f23f9ac..1a03d05 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.1.1", + "version": "2.2.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/fields.js b/src/fields.js index 24e0cd0..3d8fe48 100644 --- a/src/fields.js +++ b/src/fields.js @@ -21,7 +21,7 @@ export class Field { */ constructor (document, name) { - Object.defineProperty(this, '$document', { // reference to the Document instance which owns the field + Object.defineProperty(this, '$owner', { // reference to the Document instance which owns the field value: document }); Object.defineProperty(this, 'name', { // the name that a field has on the document @@ -46,11 +46,11 @@ export class Field { */ get value () { - let {get} = this.$document.$schema.fields[this.name]; + let {get} = this.$owner.$schema.fields[this.name]; let value = this._value; if (get) { // transformation with custom getter - value = get.call(this.$document, value); + value = get.call(this.$owner, value); } return value; } @@ -60,11 +60,11 @@ export class Field { */ set value (value) { - let {set, type} = this.$document.$schema.fields[this.name]; + let {set, type} = this.$owner.$schema.fields[this.name]; value = this._cast(value, type); // value type casting if (set) { // transformation with custom setter - value = set.call(this.$document, value); + value = set.call(this.$owner, value); } this.invalidate(); // remove the last memorized error because the value has changed @@ -76,7 +76,7 @@ export class Field { */ get defaultValue () { - let {type, set, defaultValue} = this.$document.$schema.fields[this.name]; + let {type, set, defaultValue} = this.$owner.$schema.fields[this.name]; let value = isFunction(defaultValue) ? defaultValue(this._document) @@ -84,7 +84,7 @@ export class Field { value = this._cast(value, type); // value type casting if (set) { // custom setter - value = set.call(this.$document, value); + value = set.call(this.$owner, value); } return value; @@ -134,13 +134,13 @@ export class Field { */ _cast (value, type) { - let options = this.$document.$schema.typeOptions; + let options = this.$owner.$schema.typeOptions; options.types = Object.assign({}, options.types, { Schema: (value) => { if (isArray(type)) type = type[0]; // in case of {type: [Schema]} - return this.$document._createRelative(type, value); + return this.$owner._createRelative(type, value); } }); @@ -226,16 +226,16 @@ export class Field { async validate () { let relatives = toArray(this.value) || []; // validate related documents for (let relative of relatives) { - let isDocument = relative instanceof this.$document.constructor; + let isDocument = relative instanceof this.$owner.constructor; if (isDocument) { await relative.validate({quiet: true}); // don't throw } } - this._errors = await this.$document.$validator.validate( // validate this field + this._errors = await this.$owner.$validator.validate( // validate this field this.value, - this.$document.$schema.fields[this.name].validate + this.$owner.$schema.fields[this.name].validate ); return this; @@ -248,7 +248,7 @@ export class Field { invalidate () { let relatives = toArray(this.value) || []; // validate related documents for (let relative of relatives) { - let isDocument = relative instanceof this.$document.constructor; + let isDocument = relative instanceof this.$owner.constructor; if (isDocument) { relative.invalidate(); From 610384744577f3675b289f9e29d66d8e0e2c297b Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 6 Nov 2016 23:25:54 +0100 Subject: [PATCH 081/219] removing redundant reset.invalidate() --- dist/fields.js | 1 - package.json | 2 +- src/fields.js | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/dist/fields.js b/dist/fields.js index e712103..f9a56f5 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -179,7 +179,6 @@ class Field { reset() { this.value = this.defaultValue; - this.invalidate(); return this; } diff --git a/package.json b/package.json index 1a03d05..f2e50e2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.2.0", + "version": "2.2.1", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/fields.js b/src/fields.js index 3d8fe48..0970a09 100644 --- a/src/fields.js +++ b/src/fields.js @@ -153,7 +153,6 @@ export class Field { reset () { this.value = this.defaultValue; - this.invalidate(); return this; } From 63721e438a5eb6503e2f74b2d8db0c12304cda69 Mon Sep 17 00:00:00 2001 From: xpeper Date: Mon, 7 Nov 2016 00:12:59 +0100 Subject: [PATCH 082/219] collectErrors bug fix, upgrading validator --- dist/documents.js | 12 +++++++----- package.json | 4 ++-- src/documents.js | 13 +++++++------ tests/document.js | 19 +++++++++++-------- 4 files changed, 27 insertions(+), 21 deletions(-) diff --git a/dist/documents.js b/dist/documents.js index 0eb0b66..eacca20 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -421,6 +421,13 @@ class Document { for (let name in doc.$schema.fields) { let field = doc[`$${ name }`]; + if (field.errors.length > 0) { + errors.push({ + path: prefix.concat([field.name]), + errors: field.errors + }); + } + if (field.value instanceof _this4.constructor) { errors.push(...getErrors(field.value, prefix.concat(field.name))); } else if ((0, _typeable.isArray)(field.value)) { @@ -429,11 +436,6 @@ class Document { errors.push(...getErrors(d, prefix.concat([field.name, i]))); } }); - } else if (field.errors.length > 0) { - errors.push({ - path: prefix.concat([field.name]), - errors: field.errors - }); } } diff --git a/package.json b/package.json index f2e50e2..8f4846c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.2.1", + "version": "2.3.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -50,6 +50,6 @@ "dependencies": { "deep-equal": "1.0.x", "typeable": "0.9.x", - "validatable": "0.10.x" + "validatable": "0.11.x" } } diff --git a/src/documents.js b/src/documents.js index 1571187..27b4d72 100644 --- a/src/documents.js +++ b/src/documents.js @@ -358,6 +358,13 @@ export class Document { for (let name in doc.$schema.fields) { let field = doc[`$${name}`]; + if (field.errors.length > 0) { + errors.push({ + path: prefix.concat([field.name]), + errors: field.errors + }); + } + if (field.value instanceof this.constructor) { errors.push( ...getErrors(field.value, prefix.concat(field.name)) @@ -372,12 +379,6 @@ export class Document { } }); } - else if (field.errors.length > 0) { - errors.push({ - path: prefix.concat([field.name]), - errors: field.errors - }); - } } return errors; diff --git a/tests/document.js b/tests/document.js index c289194..1b48df9 100644 --- a/tests/document.js +++ b/tests/document.js @@ -918,7 +918,8 @@ test('method `validate` should validate all fields and throw an error', async (t oldBooks: { type: [bookSchema], validate: [ - {validator: 'presence', message: 'is required'} + {validator: 'presence', message: 'is required'}, + {validator: 'arrayLength', message: 'is too short', min: 10} ] }, prevBooks: { @@ -931,7 +932,8 @@ test('method `validate` should validate all fields and throw an error', async (t oldBooks: [null, {}] }; let user = new Document(userSchema, data); - let validatorError = new ValidatorError('presence', 'is required'); + let validatorError0 = new ValidatorError('presence', 'is required'); + let validatorError1 = new ValidatorError('arrayLength', 'is too short'); // throws an error t.throws(user.validate(), ValidationError); @@ -947,18 +949,19 @@ test('method `validate` should validate all fields and throw an error', async (t ['newBook'], ['newBooks'], ['oldBook', 'title'], + ['oldBooks'], ['oldBooks', 1, 'title'] ]); // errors are populated - t.deepEqual(user.$name.errors, [validatorError]); - t.deepEqual(user.$newBook.errors, [validatorError]); - t.deepEqual(user.$newBooks.errors, [validatorError]); + t.deepEqual(user.$name.errors, [validatorError0]); + t.deepEqual(user.$newBook.errors, [validatorError0]); + t.deepEqual(user.$newBooks.errors, [validatorError0]); t.deepEqual(user.$oldBook.errors, []); - t.deepEqual(user.oldBook.$title.errors, [validatorError]); + t.deepEqual(user.oldBook.$title.errors, [validatorError0]); t.deepEqual(user.oldBook.$year.errors, []); - t.deepEqual(user.$oldBooks.errors, []); + t.deepEqual(user.$oldBooks.errors, [validatorError1]); t.deepEqual(user.oldBooks[0], null); - t.deepEqual(user.oldBooks[1].$title.errors, [validatorError]); + t.deepEqual(user.oldBooks[1].$title.errors, [validatorError0]); t.deepEqual(user.oldBooks[1].$year.errors, []); t.deepEqual(user.$prevBooks.errors, []); }); From 86ccf274202d1c88645e68622b02b82133154020 Mon Sep 17 00:00:00 2001 From: xpeper Date: Mon, 7 Nov 2016 01:05:38 +0100 Subject: [PATCH 083/219] latest validatable.js --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 8f4846c..9595657 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.3.0", + "version": "2.4.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -50,6 +50,6 @@ "dependencies": { "deep-equal": "1.0.x", "typeable": "0.9.x", - "validatable": "0.11.x" + "validatable": "0.12.x" } } From de5a66bd0f2c58b5925297751f600d14eba5dad9 Mon Sep 17 00:00:00 2001 From: xpeper Date: Mon, 7 Nov 2016 01:06:32 +0100 Subject: [PATCH 084/219] fixing tests --- package.json | 2 +- tests/document.js | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index 9595657..f283b02 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.4.0", + "version": "2.5.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/tests/document.js b/tests/document.js index 1b48df9..3665ba6 100644 --- a/tests/document.js +++ b/tests/document.js @@ -932,8 +932,8 @@ test('method `validate` should validate all fields and throw an error', async (t oldBooks: [null, {}] }; let user = new Document(userSchema, data); - let validatorError0 = new ValidatorError('presence', 'is required'); - let validatorError1 = new ValidatorError('arrayLength', 'is too short'); + let validatorError0 = (new ValidatorError('presence', 'is required')).toObject(); + let validatorError1 = (new ValidatorError('arrayLength', 'is too short')).toObject(); // throws an error t.throws(user.validate(), ValidationError); @@ -953,17 +953,17 @@ test('method `validate` should validate all fields and throw an error', async (t ['oldBooks', 1, 'title'] ]); // errors are populated - t.deepEqual(user.$name.errors, [validatorError0]); - t.deepEqual(user.$newBook.errors, [validatorError0]); - t.deepEqual(user.$newBooks.errors, [validatorError0]); - t.deepEqual(user.$oldBook.errors, []); - t.deepEqual(user.oldBook.$title.errors, [validatorError0]); - t.deepEqual(user.oldBook.$year.errors, []); - t.deepEqual(user.$oldBooks.errors, [validatorError1]); + t.deepEqual(user.$name.errors[0].toObject(), validatorError0); + t.deepEqual(user.$newBook.errors[0].toObject(), validatorError0); + t.deepEqual(user.$newBooks.errors[0].toObject(), validatorError0); + t.deepEqual(user.$oldBook.errors.length, 0); + t.deepEqual(user.oldBook.$title.errors[0].toObject(), validatorError0); + t.deepEqual(user.oldBook.$year.errors.length, 0); + t.deepEqual(user.$oldBooks.errors[0].toObject(), validatorError1); t.deepEqual(user.oldBooks[0], null); - t.deepEqual(user.oldBooks[1].$title.errors, [validatorError0]); - t.deepEqual(user.oldBooks[1].$year.errors, []); - t.deepEqual(user.$prevBooks.errors, []); + t.deepEqual(user.oldBooks[1].$title.errors[0].toObject(), validatorError0); + t.deepEqual(user.oldBooks[1].$year.errors.length, 0); + t.deepEqual(user.$prevBooks.errors.length, 0); }); test('method `isValid` should return `true` when fields are valid', async (t) => { From 01278c3647c5a013f475a9cdb6b26a497b91ccc8 Mon Sep 17 00:00:00 2001 From: xpeper Date: Mon, 7 Nov 2016 01:18:25 +0100 Subject: [PATCH 085/219] ValidationError does not expose properties --- dist/errors.js | 35 ++++++++++++++++++++++++++++++----- package.json | 2 +- src/errors.js | 31 ++++++++++++++++++++++++++----- tests/errors.js | 17 +++++++++++++++++ 4 files changed, 74 insertions(+), 11 deletions(-) create mode 100644 tests/errors.js diff --git a/dist/errors.js b/dist/errors.js index 110ce2a..84ac713 100644 --- a/dist/errors.js +++ b/dist/errors.js @@ -24,12 +24,37 @@ class ValidationError extends Error { let message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Validation failed'; let code = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 422; - super(); + super(message); - this.name = this.constructor.name; - this.paths = (0, _typeable.toArray)(paths); - this.message = message; - this.code = code; + Object.defineProperty(this, 'name', { // class name + value: this.constructor.name, + writable: true + }); + Object.defineProperty(this, 'message', { // validation error message + value: message, + writable: true + }); + Object.defineProperty(this, 'paths', { // validator name + value: (0, _typeable.toArray)(paths), + writable: true + }); + Object.defineProperty(this, 'code', { // error code + value: code, + writable: true + }); + } + + /* + * Returns error data. + */ + + toObject() { + let name = this.name, + message = this.message, + paths = this.paths, + code = this.code; + + return { name, message, paths, code }; } } diff --git a/package.json b/package.json index f283b02..6f2071f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.5.0", + "version": "2.6.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/errors.js b/src/errors.js index ef7520e..d66f265 100644 --- a/src/errors.js +++ b/src/errors.js @@ -12,12 +12,33 @@ export class ValidationError extends Error { */ constructor (paths = [], message = 'Validation failed', code = 422) { - super(); + super(message); - this.name = this.constructor.name; - this.paths = toArray(paths); - this.message = message; - this.code = code; + Object.defineProperty(this, 'name', { // class name + value: this.constructor.name, + writable: true + }); + Object.defineProperty(this, 'message', { // validation error message + value: message, + writable: true + }); + Object.defineProperty(this, 'paths', { // validator name + value: toArray(paths), + writable: true + }); + Object.defineProperty(this, 'code', { // error code + value: code, + writable: true + }); + } + + /* + * Returns error data. + */ + + toObject () { + let {name, message, paths, code} = this; + return {name, message, paths, code}; } } diff --git a/tests/errors.js b/tests/errors.js new file mode 100644 index 0000000..5594a7b --- /dev/null +++ b/tests/errors.js @@ -0,0 +1,17 @@ +import test from 'ava'; +import {ValidationError} from '../dist/index'; + +test('ValidationError should not expose properties', async (t) => { + let e = new ValidationError(); + t.deepEqual(Object.keys(e), []); +}); + +test('ValidationError.toObject should return error data', async (t) => { + let e = new ValidationError(['foo'], 'bar'); + t.deepEqual(e.toObject(), { + name: 'ValidationError', + message: 'bar', + paths: ['foo'], + code: 422 + }); +}); From 9820cec803a87c0090061b6bc640b16e35ddb9da Mon Sep 17 00:00:00 2001 From: xpeper Date: Mon, 7 Nov 2016 01:34:02 +0100 Subject: [PATCH 086/219] readme --- README.md | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index be2c852..55a1751 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ let userSchema = new Schema({ type: 'String', // field type validate: [ { - name: 'presence', // validator name + validator: 'presence', // validator name message: 'is required' // validator error message } ] @@ -63,7 +63,7 @@ let userSchema = new Schema({ type: [bookSchema], validate: [ { - name: 'presence', + validator: 'presence', message: 'is required' } ] @@ -115,7 +115,7 @@ new Schema({ defaultValue: 'John Smith', // a default field value validate: [ // field validations provided by validatable.js { // validator recipe - name: 'presence', // validator name + validator: 'presence', // validator name message: 'is required' // validator error message } ] diff --git a/package.json b/package.json index 6f2071f..865358a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.6.0", + "version": "2.6.1", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { From ee7436c4396df3745cde896d3a49fac657757fe5 Mon Sep 17 00:00:00 2001 From: xpeper Date: Mon, 7 Nov 2016 02:10:41 +0100 Subject: [PATCH 087/219] readme --- README.md | 6 +++--- dist/fields.js | 4 ++-- package.json | 2 +- src/fields.js | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 55a1751..19df80c 100644 --- a/README.md +++ b/README.md @@ -298,13 +298,13 @@ user.$name; // -> reference to document field instance user.$name.isChanged(); // -> calling field instance method ``` -**Field(document, name)** +**Field(owner, name)** -> Document field class which represents each field on a document. +> A field class which represents each field on a document. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ -| document | Document | Yes | - | An instance of a Document. +| owner | Document | Yes | - | An instance of a Document which owns the field. | name | String | Yes | - | Field name **Field.prototype.$owner**: Document diff --git a/dist/fields.js b/dist/fields.js index f9a56f5..a0fc1cd 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -37,9 +37,9 @@ class Field { * Class constructor. */ - constructor(document, name) { + constructor(owner, name) { Object.defineProperty(this, '$owner', { // reference to the Document instance which owns the field - value: document + value: owner }); Object.defineProperty(this, 'name', { // the name that a field has on the document value: name diff --git a/package.json b/package.json index 865358a..c040d01 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.6.1", + "version": "2.6.2", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/fields.js b/src/fields.js index 0970a09..70bd92a 100644 --- a/src/fields.js +++ b/src/fields.js @@ -20,9 +20,9 @@ export class Field { * Class constructor. */ - constructor (document, name) { + constructor (owner, name) { Object.defineProperty(this, '$owner', { // reference to the Document instance which owns the field - value: document + value: owner }); Object.defineProperty(this, 'name', { // the name that a field has on the document value: name, From 19223700469682a0f490639ee93be9d70f34fded Mon Sep 17 00:00:00 2001 From: xpeper Date: Mon, 7 Nov 2016 03:02:01 +0100 Subject: [PATCH 088/219] latest typeable.js --- dist/fields.js | 6 ++---- package.json | 4 ++-- src/fields.js | 6 ++---- tests/document.js | 4 +--- 4 files changed, 7 insertions(+), 13 deletions(-) diff --git a/dist/fields.js b/dist/fields.js index a0fc1cd..f592bd2 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -160,9 +160,7 @@ class Field { */ _cast(value, type) { - let options = this.$owner.$schema.typeOptions; - - options.types = (0, _assign2.default)({}, options.types, { + let types = (0, _assign2.default)({}, this.$owner.$schema.typeOptions, { Schema: value => { if ((0, _typeable.isArray)(type)) type = type[0]; // in case of {type: [Schema]} @@ -170,7 +168,7 @@ class Field { } }); - return (0, _typeable.cast)(value, type, options); + return (0, _typeable.cast)(value, type, types); } /* diff --git a/package.json b/package.json index c040d01..4afbb36 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.6.2", + "version": "2.7.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -49,7 +49,7 @@ }, "dependencies": { "deep-equal": "1.0.x", - "typeable": "0.9.x", + "typeable": "0.10.x", "validatable": "0.12.x" } } diff --git a/src/fields.js b/src/fields.js index 70bd92a..8f8b564 100644 --- a/src/fields.js +++ b/src/fields.js @@ -134,9 +134,7 @@ export class Field { */ _cast (value, type) { - let options = this.$owner.$schema.typeOptions; - - options.types = Object.assign({}, options.types, { + let types = Object.assign({}, this.$owner.$schema.typeOptions, { Schema: (value) => { if (isArray(type)) type = type[0]; // in case of {type: [Schema]} @@ -144,7 +142,7 @@ export class Field { } }); - return cast(value, type, options); + return cast(value, type, types); } /* diff --git a/tests/document.js b/tests/document.js index 3665ba6..bb301a7 100644 --- a/tests/document.js +++ b/tests/document.js @@ -86,9 +86,7 @@ test('field can be of a custom type', (t) => { } }, typeOptions: { - types: { - cool: (v) => `${v}-cool` - } + cool: (v) => `${v}-cool` } }); let data = { From 6b3880497a25f2edd9b1055a800905f3dfe49beb Mon Sep 17 00:00:00 2001 From: xpeper Date: Mon, 7 Nov 2016 03:35:52 +0100 Subject: [PATCH 089/219] isValid() fix, adding hasErrors(), readme --- README.md | 19 ++++++++++++++----- dist/documents.js | 47 +++++++++++++++++++++-------------------------- dist/fields.js | 14 +++++++++----- package.json | 2 +- src/documents.js | 32 +++++++++++++++++--------------- src/fields.js | 15 +++++++++++---- tests/document.js | 15 ++++++++++----- 7 files changed, 83 insertions(+), 61 deletions(-) diff --git a/README.md b/README.md index 19df80c..855ff5c 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,8 @@ let data = { }; let user = new Document(userSchema, data); -await user.isValid(); // -> false +await user.validate({quiet: true}); +user.isValid(); // -> false ``` ## API @@ -230,6 +231,10 @@ doc.applyErrors([ |--------|------|----------|---------|------------ | keys | Array | Yes | - | Path to a field (e.g. `['book', 0, 'title']`). +**Document.prototype.hasErrors()**: Boolean + +> Returns `true` when no errors exist (inverse of `isValid()`). Make sure that you call the `validate()` method first. + **Document.prototype.hasPath(...keys)**: Boolean > Returns `true` when a field path exists. @@ -242,9 +247,9 @@ doc.applyErrors([ > Returns `true` if at least one document field has been changed. -**Document.prototype.isValid()**: Promise(Boolean) +**Document.prototype.isValid()**: Boolean -> Returns `true` when all document fields are valid. +> Returns `true` when all document fields are valid (inverse of `hasErrors()`). Make sure that you call the `validate()` method first. **Document.prototype.invalidate()**: Document @@ -331,6 +336,10 @@ user.$name.isChanged(); // -> calling field instance method > Returns `true` when the provided `value` represents an object that looks the same. +**Field.prototype.hasErrors()**: Boolean + +> Returns `true` when no errors exist (inverse of `isValid()`). Make sure that you call the `validate()` method first. + **Field.prototype.initialValue**: Any > A getter which returns the initial field value (last committed value). @@ -339,9 +348,9 @@ user.$name.isChanged(); // -> calling field instance method > Returns `true` if the field or at least one sub field have been changed. -**Field.prototype.isValid()**: Promise(Boolean) +**Field.prototype.isValid()**: Boolean -> Returns `true` if the field and all sub fields are valid. +> Returns `true` if the field and all sub fields are valid (inverse of `hasErrors()`). Make sure that you call the `validate()` method first. **Field.prototype.invalidate()**: Field diff --git a/dist/documents.js b/dist/documents.js index eacca20..aba450a 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -371,39 +371,34 @@ class Document { } /* - * Returns `true` when all document fields are valid. + * Validates fields and returns errors. */ - isValid() { - var _this2 = this; + invalidate() { + let fields = this.$schema.fields; - return (0, _asyncToGenerator3.default)(function* () { - try { - yield _this2.validate(); - } catch (e) { - return false; - } - return true; - })(); + + for (let path in fields) { + this[`$${ path }`].invalidate(); + } + + return this; } /* - * Validates fields and returns errors. + * Returns `true` when all document fields are valid (inverse of `hasErrors`). */ - invalidate() { - var _this3 = this; - - return (0, _asyncToGenerator3.default)(function* () { - let fields = _this3.$schema.fields; - + isValid() { + return !this.hasErrors(); + } - for (let path in fields) { - _this3[`$${ path }`].invalidate(); - } + /* + * Returns `true` when errors exist (inverse of `isValid`). + */ - return _this3; - })(); + hasErrors() { + return this.collectErrors().length > 0; } /* @@ -411,7 +406,7 @@ class Document { */ collectErrors() { - var _this4 = this; + var _this2 = this; let getErrors = function (doc) { let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; @@ -428,11 +423,11 @@ class Document { }); } - if (field.value instanceof _this4.constructor) { + if (field.value instanceof _this2.constructor) { errors.push(...getErrors(field.value, prefix.concat(field.name))); } else if ((0, _typeable.isArray)(field.value)) { field.value.forEach((d, i) => { - if (d instanceof _this4.constructor) { + if (d instanceof _this2.constructor) { errors.push(...getErrors(d, prefix.concat([field.name, i]))); } }); diff --git a/dist/fields.js b/dist/fields.js index f592bd2..292cf8a 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -286,15 +286,19 @@ class Field { } /* - * Returns `true` when the value is valid. + * Returns `true` when the value is valid (inverse of `hasErrors`). */ isValid() { - var _this2 = this; + return !this.hasErrors(); + } - return (0, _asyncToGenerator3.default)(function* () { - return (0, _typeable.isAbsent)(_this2.errors); - })(); + /* + * Returns `true` when errors exist (inverse of `isValid`). + */ + + hasErrors() { + return this.errors.length > 0; } } diff --git a/package.json b/package.json index 4afbb36..c8fd815 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.7.0", + "version": "2.8.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/documents.js b/src/documents.js index 27b4d72..c3b7f5a 100644 --- a/src/documents.js +++ b/src/documents.js @@ -318,25 +318,11 @@ export class Document { return this; } - /* - * Returns `true` when all document fields are valid. - */ - - async isValid () { - try { - await this.validate(); - } - catch (e) { - return false; - } - return true; - } - /* * Validates fields and returns errors. */ - async invalidate () { + invalidate () { let {fields} = this.$schema; for (let path in fields) { @@ -346,6 +332,22 @@ export class Document { return this; } + /* + * Returns `true` when all document fields are valid (inverse of `hasErrors`). + */ + + isValid () { + return !this.hasErrors(); + } + + /* + * Returns `true` when errors exist (inverse of `isValid`). + */ + + hasErrors () { + return this.collectErrors().length > 0; + } + /* * Returns a list of all field-related errors, including those deeply nested. */ diff --git a/src/fields.js b/src/fields.js index 8f8b564..425a392 100644 --- a/src/fields.js +++ b/src/fields.js @@ -1,6 +1,5 @@ import { cast, - isAbsent, isArray, toArray, isFunction @@ -258,11 +257,19 @@ export class Field { } /* - * Returns `true` when the value is valid. + * Returns `true` when the value is valid (inverse of `hasErrors`). */ - async isValid () { - return isAbsent(this.errors); + isValid () { + return !this.hasErrors(); + } + + /* + * Returns `true` when errors exist (inverse of `isValid`). + */ + + hasErrors () { + return this.errors.length > 0; } } diff --git a/tests/document.js b/tests/document.js index bb301a7..87456b4 100644 --- a/tests/document.js +++ b/tests/document.js @@ -964,7 +964,7 @@ test('method `validate` should validate all fields and throw an error', async (t t.deepEqual(user.$prevBooks.errors.length, 0); }); -test('method `isValid` should return `true` when fields are valid', async (t) => { +test('methods `isValid` and `hasErrors` should tell if fields are valid', async (t) => { let bookSchema = new Schema({ fields: { title: { @@ -1010,11 +1010,16 @@ test('method `isValid` should return `true` when fields are valid', async (t) => ] }; let user = new Document(userSchema, data); + await user.validate({quiet: true}); - t.is(await user.$name.isValid(), true); - t.is(await user.book.$title.isValid(), true); - t.is(await user.books[0].$title.isValid(), true); - t.is(await user.isValid(), true); + t.is(user.$name.isValid(), true); + t.is(user.$name.hasErrors(), false); + t.is(user.book.$title.isValid(), true); + t.is(user.book.$title.hasErrors(), false); + t.is(user.books[0].$title.isValid(), true); + t.is(user.books[0].$title.hasErrors(), false); + t.is(user.isValid(), true); + t.is(user.hasErrors(), false); }); test('method `invalidate` should clear errors on all fields', async (t) => { From 8be490e0ba9c22b480ea737cbf5631d1ad61897a Mon Sep 17 00:00:00 2001 From: xpeper Date: Mon, 7 Nov 2016 03:59:54 +0100 Subject: [PATCH 090/219] dependencies --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index c8fd815..95e250c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.8.0", + "version": "2.9.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -50,6 +50,6 @@ "dependencies": { "deep-equal": "1.0.x", "typeable": "0.10.x", - "validatable": "0.12.x" + "validatable": "0.13.x" } } From 64c0490dc0e54b0cfec79278adf082219b60fa19 Mon Sep 17 00:00:00 2001 From: Kristian Mandrup Date: Tue, 8 Nov 2016 00:23:38 +0100 Subject: [PATCH 091/219] faker added with tests and docs --- README.md | 30 +- dist/documents.js | 11 + dist/fields.js | 38 + dist/schemas.js | 8 +- package.json | 3 +- src/documents.js | 10 + src/fields.js | 40 + src/schemas.js | 6 +- tests/document.js | 42 +- yarn.lock | 2843 +++++++++++++++++++++++++++++++++++++++++++++ 10 files changed, 3022 insertions(+), 9 deletions(-) create mode 100644 yarn.lock diff --git a/README.md b/README.md index 855ff5c..69de906 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,11 @@ import { let bookSchema = new Schema({ fields: { title: { - type: 'String' + type: 'String', + defaultValue: 'Lord of the flies', + fakeValue: () => { + return faker.lorem.sentence() + } } } }); @@ -81,8 +85,15 @@ let data = { }; let user = new Document(userSchema, data); +user.title // => True Detective await user.validate({quiet: true}); user.isValid(); // -> false + +// generate fake data +user.fake() +user.title // => lorem ipsum +user.reset() // use default value +user.title // => Lord of the flies ``` ## API @@ -97,23 +108,32 @@ Schema represents a configuration object which configures the `Document`. It hol A Schema can also be used as a custom type object. This way you can create a nested data structure by setting a schema instance for a field `type`. When a document is created, each schema in a tree of fields will become an instance of a Document - a tree of documents. -**Schema({fields, strict, validatorOptions, typeOptions})** +**Schema({fakerRegistry, fields, strict, validatorOptions, typeOptions})** > A class for defining document structure. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ +| fakes | Object,Function | No | - | A registry of faker methods that can be used to generate fake field data | fields | Object,Function | Yes | - | An object with fields definition. You should pass a function which returns the definition object in case of self referencing. | strict | Boolean | No | true | A schema type (set to `false` to allow dynamic fields not defined in schema). | validatorOptions | Object | No | validatable.js defaults | Configuration options for the `Validator` class, provided by the [validatable.js](https://github.com/xpepermint/validatablejs), which is used for field validation. | typeOptions | Object | No | typeable.js defaults | Configuration options for the `cast` method provided by the [typeable.js](https://github.com/xpepermint/typeablejs), which is used for data type casting. ```js +// reusable fakers +const fakes = { + title: () => { + return faker.lorem.sentence() + } +} + new Schema({ + fakes, fields: { // schema fields definition email: { // a field name holding a field definition type: 'String', // a field data type provided by typeable.js - defaultValue: 'John Smith', // a default field value + defaultValue: 'John Smith', // a default field value validate: [ // field validations provided by validatable.js { // validator recipe validator: 'presence', // validator name @@ -267,6 +287,10 @@ doc.applyErrors([ > Sets each document field to its default value. +**Document.prototype.fake()**: Document + +> Sets each document field to its fake value if a fake value generator is registered either on the field itself or in the fake registry of the schema (if not uses default value if present) + **Document.prototype.rollback()**: Document > Sets each document field to its initial value (last committed value). This is how you can discharge document changes. diff --git a/dist/documents.js b/dist/documents.js index aba450a..7af732a 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -266,6 +266,17 @@ class Document { return this; } + fake() { + let fields = this.$schema.fields; + + + for (let name in fields) { + this[`$${ name }`].fake(); + } + + return this; + } + /* * Removes all fileds values by setting them to `null`. */ diff --git a/dist/fields.js b/dist/fields.js index 292cf8a..0b557bc 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -116,6 +116,38 @@ class Field { return value; } + get fakeValue() { + var _$owner$$schema$field3 = this.$owner.$schema.fields[this.name]; + let type = _$owner$$schema$field3.type, + set = _$owner$$schema$field3.set, + fakeValue = _$owner$$schema$field3.fakeValue; + + + let value = (0, _typeable.isFunction)(fakeValue) ? fakeValue(this._document) : fakeValue; + + function generateFrom(schemaFaker, name) { + let fakeGen = schemaFaker[name]; + if (!fakeGen) return; + + if (typeof fakeGen === 'function') { + return fakeGen(); + } + } + + let schemaFaker = this.$owner.$schema.fakes; + if (!value && schemaFaker) { + value = generateFrom(schemaFaker, this.name); + } + + value = this._cast(value, type); // value type casting + if (set) { + // custom setter + value = set.call(this.$owner, value); + } + + return value; + } + /* * Returns the value of a field of the last commit. */ @@ -181,6 +213,12 @@ class Field { return this; } + fake() { + this.value = this.fakeValue || this.defaultValue; + + return this; + } + /* * Removes field's value by setting it to null. */ diff --git a/dist/schemas.js b/dist/schemas.js index 5ad8cdb..e078f08 100644 --- a/dist/schemas.js +++ b/dist/schemas.js @@ -15,8 +15,10 @@ class Schema { constructor() { var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - _ref$fields = _ref.fields; + _ref$fakes = _ref.fakes; + let fakes = _ref$fakes === undefined ? {} : _ref$fakes; + var _ref$fields = _ref.fields; let fields = _ref$fields === undefined ? {} : _ref$fields; var _ref$strict = _ref.strict; let strict = _ref$strict === undefined ? true : _ref$strict; @@ -25,6 +27,10 @@ class Schema { var _ref$typeOptions = _ref.typeOptions; let typeOptions = _ref$typeOptions === undefined ? {} : _ref$typeOptions; + Object.defineProperty(this, 'fakes', { // document fields + get: () => typeof fakes === 'function' ? fakes() : fakes + }); + Object.defineProperty(this, 'fields', { // document fields get: () => typeof fields === 'function' ? fields() : fields }); diff --git a/package.json b/package.json index 95e250c..1dbadab 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.9.0", + "version": "2.9.1", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -49,6 +49,7 @@ }, "dependencies": { "deep-equal": "1.0.x", + "faker": "^3.1.0", "typeable": "0.10.x", "validatable": "0.13.x" } diff --git a/src/documents.js b/src/documents.js index c3b7f5a..6fc37f3 100644 --- a/src/documents.js +++ b/src/documents.js @@ -229,6 +229,16 @@ export class Document { return this; } + fake () { + let {fields} = this.$schema; + + for (let name in fields) { + this[`$${name}`].fake(); + } + + return this; + } + /* * Removes all fileds values by setting them to `null`. */ diff --git a/src/fields.js b/src/fields.js index 425a392..73df170 100644 --- a/src/fields.js +++ b/src/fields.js @@ -89,6 +89,36 @@ export class Field { return value; } + get fakeValue () { + let {type, set, fakeValue} = this.$owner.$schema.fields[this.name]; + + let value = isFunction(fakeValue) + ? fakeValue(this._document) + : fakeValue; + + function generateFrom(schemaFaker, name) { + let fakeGen = schemaFaker[name] + if (!fakeGen) return + + if (typeof fakeGen === 'function') { + return fakeGen() + } + } + + let schemaFaker = this.$owner.$schema.fakes + if (!value && schemaFaker) { + value = generateFrom(schemaFaker, this.name) + } + + value = this._cast(value, type); // value type casting + if (set) { // custom setter + value = set.call(this.$owner, value); + } + + return value; + } + + /* * Returns the value of a field of the last commit. */ @@ -154,6 +184,16 @@ export class Field { return this; } + /* + * Sets field to a generated fake value. + */ + + fake () { + this.value = this.fakeValue || this.defaultValue; + + return this; + } + /* * Removes field's value by setting it to null. */ diff --git a/src/schemas.js b/src/schemas.js index 48b5ef4..c337b2e 100644 --- a/src/schemas.js +++ b/src/schemas.js @@ -8,7 +8,11 @@ export class Schema { * Class constructor. */ - constructor ({fields={}, strict=true, validatorOptions={}, typeOptions={}}={}) { + constructor ({fakes={}, fields={}, strict=true, validatorOptions={}, typeOptions={}}={}) { + Object.defineProperty(this, 'fakes', { // document fields + get: () => typeof fakes === 'function' ? fakes() : fakes, + }); + Object.defineProperty(this, 'fields', { // document fields get: () => typeof fields === 'function' ? fields() : fields, }); diff --git a/tests/document.js b/tests/document.js index 87456b4..47ba2be 100644 --- a/tests/document.js +++ b/tests/document.js @@ -1,4 +1,5 @@ import test from 'ava'; +import faker from 'faker'; import { Document, Schema, @@ -97,12 +98,27 @@ test('field can be of a custom type', (t) => { t.is(user.name, '100-cool'); }); +// reusable fakers +const fakes = { + title: () => { + return faker.lorem.sentence() + } +} + test('field can have a default value', (t) => { let bookSchema = new Schema({ + fakes, fields: { title: { type: 'String', - defaultValue: 100 + defaultValue: 'blip blap' + // fakeValue: () => { + // return fakerRegistry.title() + // } + }, + price: { + type: 'Integer', + defaultValue: 10, } } }); @@ -110,7 +126,10 @@ test('field can have a default value', (t) => { fields: { name: { type: 'String', - defaultValue: 100 + defaultValue: 100, + fakeValue: () => { + return faker.name.findName() + } }, age: { type: 'Integer', @@ -146,14 +165,31 @@ test('field can have a default value', (t) => { }; let user0 = new Document(userSchema); let user1 = new Document(userSchema, data); + let user2 = new Document(userSchema); + let book0 = new Document(bookSchema); let book1 = new Document(bookSchema, data.books[1]) + let book2 = new Document(bookSchema); + + let fakeUser = new Document(userSchema); + let fakeBook = new Document(bookSchema); + + user2.reset() + fakeUser.fake() + + book2.reset() + fakeBook.fake() + + t.not(user2.name, fakeUser.name); + + t.is(book2.price, fakeBook.price); + t.not(book2.title, fakeBook.title); t.is(user0.name, '100'); t.is(user0.age, 35); t.is(user0.enabled, true); t.is(user0.book, null); - t.deepEqual(user0.papers, [{title: 'Foo'}]); + t.deepEqual(user0.papers, [{title: 'Foo', price: 10}]); t.deepEqual(user1.books, [null, book1]); t.is(user1.books[0], null); t.is(user1.books[1].title, '100'); diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..59df1ce --- /dev/null +++ b/yarn.lock @@ -0,0 +1,2843 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 +abbrev@1: + version "1.0.9" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" + +ansi-align@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba" + dependencies: + string-width "^1.0.1" + +ansi-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.0.0.tgz#c5061b6e0ef8a81775e50f5d66151bf6bf371107" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +ansi-styles@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" + +anymatch@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" + dependencies: + arrify "^1.0.0" + micromatch "^2.1.5" + +aproba@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0" + +are-we-there-yet@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.0 || ^1.1.13" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-exclude@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/arr-exclude/-/arr-exclude-1.0.0.tgz#dfc7c2e552a270723ccda04cf3128c8cbfe5c631" + +arr-flatten@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b" + +array-differ@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1, array-uniq@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + +array-uniq@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.2.tgz#5fcc373920775723cfd64d65c64bef53bf9eba6d" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +arrify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +ava-files@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ava-files/-/ava-files-0.1.1.tgz#18abb6f4b87029c32fc35f2053fecd3a55f1d2b0" + dependencies: + arr-flatten "^1.0.1" + bluebird "^3.4.1" + globby "^5.0.0" + ignore-by-default "^1.0.1" + multimatch "^2.1.0" + slash "^1.0.0" + +ava-init@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ava-init/-/ava-init-0.1.6.tgz#ef19ed0b24b6bf359dad6fbadf1a05d836395c91" + dependencies: + arr-exclude "^1.0.0" + cross-spawn "^4.0.0" + pinkie-promise "^2.0.0" + read-pkg-up "^1.0.1" + the-argv "^1.0.0" + write-pkg "^1.0.0" + +ava@0.16.x: + version "0.16.0" + resolved "https://registry.yarnpkg.com/ava/-/ava-0.16.0.tgz#07d7e06c627820115a84d7ee346f0bb165730454" + dependencies: + arr-flatten "^1.0.1" + array-union "^1.0.1" + array-uniq "^1.0.2" + arrify "^1.0.0" + ava-files "^0.1.1" + ava-init "^0.1.0" + babel-code-frame "^6.7.5" + babel-core "^6.3.21" + babel-plugin-ava-throws-helper "^0.1.0" + babel-plugin-detective "^2.0.0" + babel-plugin-espower "^2.2.0" + babel-plugin-transform-runtime "^6.3.13" + babel-preset-es2015 "^6.3.13" + babel-preset-stage-2 "^6.3.13" + babel-runtime "^6.3.19" + bluebird "^3.0.0" + caching-transform "^1.0.0" + chalk "^1.0.0" + chokidar "^1.4.2" + clean-yaml-object "^0.1.0" + cli-cursor "^1.0.2" + cli-spinners "^0.1.2" + cli-truncate "^0.2.0" + co-with-promise "^4.6.0" + common-path-prefix "^1.0.0" + convert-source-map "^1.2.0" + core-assert "^0.2.0" + currently-unhandled "^0.4.1" + debug "^2.2.0" + empower-core "^0.6.1" + figures "^1.4.0" + find-cache-dir "^0.1.1" + fn-name "^2.0.0" + has-flag "^2.0.0" + ignore-by-default "^1.0.0" + is-ci "^1.0.7" + is-generator-fn "^1.0.0" + is-obj "^1.0.0" + is-observable "^0.2.0" + is-promise "^2.1.0" + last-line-stream "^1.0.0" + lodash.debounce "^4.0.3" + lodash.difference "^4.3.0" + loud-rejection "^1.2.0" + matcher "^0.1.1" + max-timeout "^1.0.0" + md5-hex "^1.2.0" + meow "^3.7.0" + ms "^0.7.1" + not-so-shallow "^0.1.3" + object-assign "^4.0.1" + observable-to-promise "^0.4.0" + option-chain "^0.1.0" + package-hash "^1.1.0" + pkg-conf "^1.0.1" + plur "^2.0.0" + power-assert-context-formatter "^1.0.4" + power-assert-renderer-assertion "^1.0.1" + power-assert-renderer-succinct "^1.0.1" + pretty-ms "^2.0.0" + repeating "^2.0.0" + require-precompiled "^0.1.0" + resolve-cwd "^1.0.0" + set-immediate-shim "^1.0.1" + source-map-support "^0.4.0" + stack-utils "^0.4.0" + strip-ansi "^3.0.1" + strip-bom "^2.0.0" + time-require "^0.1.2" + unique-temp-dir "^1.0.0" + update-notifier "^1.0.0" + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +aws4@^1.2.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755" + +babel-cli@6.18.x: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.18.0.tgz#92117f341add9dead90f6fa7d0a97c0cc08ec186" + dependencies: + babel-core "^6.18.0" + babel-polyfill "^6.16.0" + babel-register "^6.18.0" + babel-runtime "^6.9.0" + commander "^2.8.1" + convert-source-map "^1.1.0" + fs-readdir-recursive "^1.0.0" + glob "^5.0.5" + lodash "^4.2.0" + output-file-sync "^1.1.0" + path-is-absolute "^1.0.0" + slash "^1.0.0" + source-map "^0.5.0" + v8flags "^2.0.10" + optionalDependencies: + chokidar "^1.0.0" + +babel-code-frame@^6.16.0, babel-code-frame@^6.7.5: + version "6.16.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.16.0.tgz#f90e60da0862909d3ce098733b5d3987c97cb8de" + dependencies: + chalk "^1.1.0" + esutils "^2.0.2" + js-tokens "^2.0.0" + +babel-core@^6.18.0, babel-core@^6.3.21: + version "6.18.2" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.18.2.tgz#d8bb14dd6986fa4f3566a26ceda3964fa0e04e5b" + dependencies: + babel-code-frame "^6.16.0" + babel-generator "^6.18.0" + babel-helpers "^6.16.0" + babel-messages "^6.8.0" + babel-register "^6.18.0" + babel-runtime "^6.9.1" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + babylon "^6.11.0" + convert-source-map "^1.1.0" + debug "^2.1.1" + json5 "^0.5.0" + lodash "^4.2.0" + minimatch "^3.0.2" + path-is-absolute "^1.0.0" + private "^0.1.6" + slash "^1.0.0" + source-map "^0.5.0" + +babel-generator@^6.1.0, babel-generator@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.18.0.tgz#e4f104cb3063996d9850556a45aae4a022060a07" + dependencies: + babel-messages "^6.8.0" + babel-runtime "^6.9.0" + babel-types "^6.18.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.2.0" + source-map "^0.5.0" + +babel-helper-bindify-decorators@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.18.0.tgz#fc00c573676a6e702fffa00019580892ec8780a5" + dependencies: + babel-runtime "^6.0.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-helper-builder-binary-assignment-operator-visitor@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.18.0.tgz#8ae814989f7a53682152e3401a04fabd0bb333a6" + dependencies: + babel-helper-explode-assignable-expression "^6.18.0" + babel-runtime "^6.0.0" + babel-types "^6.18.0" + +babel-helper-call-delegate@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.18.0.tgz#05b14aafa430884b034097ef29e9f067ea4133bd" + dependencies: + babel-helper-hoist-variables "^6.18.0" + babel-runtime "^6.0.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-helper-define-map@^6.18.0, babel-helper-define-map@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.18.0.tgz#8d6c85dc7fbb4c19be3de40474d18e97c3676ec2" + dependencies: + babel-helper-function-name "^6.18.0" + babel-runtime "^6.9.0" + babel-types "^6.18.0" + lodash "^4.2.0" + +babel-helper-explode-assignable-expression@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.18.0.tgz#14b8e8c2d03ad735d4b20f1840b24cd1f65239fe" + dependencies: + babel-runtime "^6.0.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-helper-explode-class@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.18.0.tgz#c44f76f4fa23b9c5d607cbac5d4115e7a76f62cb" + dependencies: + babel-helper-bindify-decorators "^6.18.0" + babel-runtime "^6.0.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-helper-function-name@^6.18.0, babel-helper-function-name@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.18.0.tgz#68ec71aeba1f3e28b2a6f0730190b754a9bf30e6" + dependencies: + babel-helper-get-function-arity "^6.18.0" + babel-runtime "^6.0.0" + babel-template "^6.8.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-helper-get-function-arity@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.18.0.tgz#a5b19695fd3f9cdfc328398b47dafcd7094f9f24" + dependencies: + babel-runtime "^6.0.0" + babel-types "^6.18.0" + +babel-helper-hoist-variables@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.18.0.tgz#a835b5ab8b46d6de9babefae4d98ea41e866b82a" + dependencies: + babel-runtime "^6.0.0" + babel-types "^6.18.0" + +babel-helper-optimise-call-expression@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.18.0.tgz#9261d0299ee1a4f08a6dd28b7b7c777348fd8f0f" + dependencies: + babel-runtime "^6.0.0" + babel-types "^6.18.0" + +babel-helper-regex@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.18.0.tgz#ae0ebfd77de86cb2f1af258e2cc20b5fe893ecc6" + dependencies: + babel-runtime "^6.9.0" + babel-types "^6.18.0" + lodash "^4.2.0" + +babel-helper-remap-async-to-generator@^6.16.0, babel-helper-remap-async-to-generator@^6.16.2: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.18.0.tgz#336cdf3cab650bb191b02fc16a3708e7be7f9ce5" + dependencies: + babel-helper-function-name "^6.18.0" + babel-runtime "^6.0.0" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-helper-replace-supers@^6.18.0, babel-helper-replace-supers@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.18.0.tgz#28ec69877be4144dbd64f4cc3a337e89f29a924e" + dependencies: + babel-helper-optimise-call-expression "^6.18.0" + babel-messages "^6.8.0" + babel-runtime "^6.0.0" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-helpers@^6.16.0: + version "6.16.0" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.16.0.tgz#1095ec10d99279460553e67eb3eee9973d3867e3" + dependencies: + babel-runtime "^6.0.0" + babel-template "^6.16.0" + +babel-messages@^6.8.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.8.0.tgz#bf504736ca967e6d65ef0adb5a2a5f947c8e0eb9" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-ava-throws-helper@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-ava-throws-helper/-/babel-plugin-ava-throws-helper-0.1.0.tgz#951107708a12208026bf8ca4cef18a87bc9b0cfe" + dependencies: + babel-template "^6.7.0" + babel-types "^6.7.2" + +babel-plugin-check-es2015-constants@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.8.0.tgz#dbf024c32ed37bfda8dee1e76da02386a8d26fe7" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-detective@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-detective/-/babel-plugin-detective-2.0.0.tgz#6e642e83c22a335279754ebe2d754d2635f49f13" + +babel-plugin-espower@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-espower/-/babel-plugin-espower-2.3.1.tgz#d15e904bc9949b14ac233b7965c2a5dc7a19a6a9" + dependencies: + babel-generator "^6.1.0" + babylon "^6.1.0" + call-matcher "^1.0.0" + core-js "^2.0.0" + espower-location-detector "^0.1.1" + espurify "^1.6.0" + estraverse "^4.1.1" + +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + +babel-plugin-syntax-async-generators@^6.5.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" + +babel-plugin-syntax-class-properties@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" + +babel-plugin-syntax-decorators@^6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" + +babel-plugin-syntax-dynamic-import@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + +babel-plugin-syntax-trailing-function-commas@^6.3.13, babel-plugin-syntax-trailing-function-commas@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.13.0.tgz#2b84b7d53dd744f94ff1fad7669406274b23f541" + +babel-plugin-transform-async-generator-functions@^6.17.0: + version "6.17.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.17.0.tgz#d0b5a2b2f0940f2b245fa20a00519ed7bc6cae54" + dependencies: + babel-helper-remap-async-to-generator "^6.16.2" + babel-plugin-syntax-async-generators "^6.5.0" + babel-runtime "^6.0.0" + +babel-plugin-transform-async-to-generator@^6.16.0, babel-plugin-transform-async-to-generator@^6.8.0: + version "6.16.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.16.0.tgz#19ec36cb1486b59f9f468adfa42ce13908ca2999" + dependencies: + babel-helper-remap-async-to-generator "^6.16.0" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.0.0" + +babel-plugin-transform-class-properties@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.18.0.tgz#bc1266a39d4c8726e0bd7b15c56235177e6ede57" + dependencies: + babel-helper-function-name "^6.18.0" + babel-plugin-syntax-class-properties "^6.8.0" + babel-runtime "^6.9.1" + +babel-plugin-transform-decorators@^6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.13.0.tgz#82d65c1470ae83e2d13eebecb0a1c2476d62da9d" + dependencies: + babel-helper-define-map "^6.8.0" + babel-helper-explode-class "^6.8.0" + babel-plugin-syntax-decorators "^6.13.0" + babel-runtime "^6.0.0" + babel-template "^6.8.0" + babel-types "^6.13.0" + +babel-plugin-transform-es2015-arrow-functions@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.8.0.tgz#5b63afc3181bdc9a8c4d481b5a4f3f7d7fef3d9d" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.8.0.tgz#ed95d629c4b5a71ae29682b998f70d9833eb366d" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-block-scoping@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.18.0.tgz#3bfdcfec318d46df22525cdea88f1978813653af" + dependencies: + babel-runtime "^6.9.0" + babel-template "^6.15.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + lodash "^4.2.0" + +babel-plugin-transform-es2015-classes@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.18.0.tgz#ffe7a17321bf83e494dcda0ae3fc72df48ffd1d9" + dependencies: + babel-helper-define-map "^6.18.0" + babel-helper-function-name "^6.18.0" + babel-helper-optimise-call-expression "^6.18.0" + babel-helper-replace-supers "^6.18.0" + babel-messages "^6.8.0" + babel-runtime "^6.9.0" + babel-template "^6.14.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-plugin-transform-es2015-computed-properties@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.8.0.tgz#f51010fd61b3bd7b6b60a5fdfd307bb7a5279870" + dependencies: + babel-helper-define-map "^6.8.0" + babel-runtime "^6.0.0" + babel-template "^6.8.0" + +babel-plugin-transform-es2015-destructuring@^6.18.0, babel-plugin-transform-es2015-destructuring@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.18.0.tgz#a08fb89415ab82058649558bedb7bf8dafa76ba5" + dependencies: + babel-runtime "^6.9.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.6.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.8.0.tgz#fd8f7f7171fc108cc1c70c3164b9f15a81c25f7d" + dependencies: + babel-runtime "^6.0.0" + babel-types "^6.8.0" + +babel-plugin-transform-es2015-for-of@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.18.0.tgz#4c517504db64bf8cfc119a6b8f177211f2028a70" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-function-name@^6.9.0: + version "6.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.9.0.tgz#8c135b17dbd064e5bba56ec511baaee2fca82719" + dependencies: + babel-helper-function-name "^6.8.0" + babel-runtime "^6.9.0" + babel-types "^6.9.0" + +babel-plugin-transform-es2015-literals@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.8.0.tgz#50aa2e5c7958fc2ab25d74ec117e0cc98f046468" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-modules-amd@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.18.0.tgz#49a054cbb762bdf9ae2d8a807076cfade6141e40" + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.18.0" + babel-runtime "^6.0.0" + babel-template "^6.8.0" + +babel-plugin-transform-es2015-modules-commonjs@^6.18.0, babel-plugin-transform-es2015-modules-commonjs@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.18.0.tgz#c15ae5bb11b32a0abdcc98a5837baa4ee8d67bcc" + dependencies: + babel-plugin-transform-strict-mode "^6.18.0" + babel-runtime "^6.0.0" + babel-template "^6.16.0" + babel-types "^6.18.0" + +babel-plugin-transform-es2015-modules-systemjs@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.18.0.tgz#f09294707163edae4d3b3e8bfacecd01d920b7ad" + dependencies: + babel-helper-hoist-variables "^6.18.0" + babel-runtime "^6.11.6" + babel-template "^6.14.0" + +babel-plugin-transform-es2015-modules-umd@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.18.0.tgz#23351770ece5c1f8e83ed67cb1d7992884491e50" + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.18.0" + babel-runtime "^6.0.0" + babel-template "^6.8.0" + +babel-plugin-transform-es2015-object-super@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.8.0.tgz#1b858740a5a4400887c23dcff6f4d56eea4a24c5" + dependencies: + babel-helper-replace-supers "^6.8.0" + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-parameters@^6.18.0, babel-plugin-transform-es2015-parameters@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.18.0.tgz#9b2cfe238c549f1635ba27fc1daa858be70608b1" + dependencies: + babel-helper-call-delegate "^6.18.0" + babel-helper-get-function-arity "^6.18.0" + babel-runtime "^6.9.0" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-plugin-transform-es2015-shorthand-properties@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.18.0.tgz#e2ede3b7df47bf980151926534d1dd0cbea58f43" + dependencies: + babel-runtime "^6.0.0" + babel-types "^6.18.0" + +babel-plugin-transform-es2015-spread@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.8.0.tgz#0217f737e3b821fa5a669f187c6ed59205f05e9c" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-sticky-regex@^6.3.13, babel-plugin-transform-es2015-sticky-regex@^6.8.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.8.0.tgz#e73d300a440a35d5c64f5c2a344dc236e3df47be" + dependencies: + babel-helper-regex "^6.8.0" + babel-runtime "^6.0.0" + babel-types "^6.8.0" + +babel-plugin-transform-es2015-template-literals@^6.6.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.8.0.tgz#86eb876d0a2c635da4ec048b4f7de9dfc897e66b" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.18.0.tgz#0b14c48629c90ff47a0650077f6aa699bee35798" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-unicode-regex@^6.3.13, babel-plugin-transform-es2015-unicode-regex@^6.8.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.11.0.tgz#6298ceabaad88d50a3f4f392d8de997260f6ef2c" + dependencies: + babel-helper-regex "^6.8.0" + babel-runtime "^6.0.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.8.0.tgz#db25742e9339eade676ca9acec46f955599a68a4" + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.8.0" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.0.0" + +babel-plugin-transform-object-rest-spread@^6.16.0, babel-plugin-transform-object-rest-spread@^6.8.0: + version "6.16.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.16.0.tgz#db441d56fffc1999052fdebe2e2f25ebd28e36a9" + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.0.0" + +babel-plugin-transform-regenerator@^6.16.0: + version "6.16.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.16.1.tgz#a75de6b048a14154aae14b0122756c5bed392f59" + dependencies: + babel-runtime "^6.9.0" + babel-types "^6.16.0" + private "~0.1.5" + +babel-plugin-transform-runtime@^6.3.13, babel-plugin-transform-runtime@6.15.x: + version "6.15.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.15.0.tgz#3d75b4d949ad81af157570273846fb59aeb0d57c" + dependencies: + babel-runtime "^6.9.0" + +babel-plugin-transform-strict-mode@^6.18.0, babel-plugin-transform-strict-mode@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.18.0.tgz#df7cf2991fe046f44163dcd110d5ca43bc652b9d" + dependencies: + babel-runtime "^6.0.0" + babel-types "^6.18.0" + +babel-polyfill@^6.16.0, babel-polyfill@^6.8.0: + version "6.16.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.16.0.tgz#2d45021df87e26a374b6d4d1a9c65964d17f2422" + dependencies: + babel-runtime "^6.9.1" + core-js "^2.4.0" + regenerator-runtime "^0.9.5" + +babel-preset-es2015@^6.3.13: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.18.0.tgz#b8c70df84ec948c43dcf2bf770e988eb7da88312" + dependencies: + babel-plugin-check-es2015-constants "^6.3.13" + babel-plugin-transform-es2015-arrow-functions "^6.3.13" + babel-plugin-transform-es2015-block-scoped-functions "^6.3.13" + babel-plugin-transform-es2015-block-scoping "^6.18.0" + babel-plugin-transform-es2015-classes "^6.18.0" + babel-plugin-transform-es2015-computed-properties "^6.3.13" + babel-plugin-transform-es2015-destructuring "^6.18.0" + babel-plugin-transform-es2015-duplicate-keys "^6.6.0" + babel-plugin-transform-es2015-for-of "^6.18.0" + babel-plugin-transform-es2015-function-name "^6.9.0" + babel-plugin-transform-es2015-literals "^6.3.13" + babel-plugin-transform-es2015-modules-amd "^6.18.0" + babel-plugin-transform-es2015-modules-commonjs "^6.18.0" + babel-plugin-transform-es2015-modules-systemjs "^6.18.0" + babel-plugin-transform-es2015-modules-umd "^6.18.0" + babel-plugin-transform-es2015-object-super "^6.3.13" + babel-plugin-transform-es2015-parameters "^6.18.0" + babel-plugin-transform-es2015-shorthand-properties "^6.18.0" + babel-plugin-transform-es2015-spread "^6.3.13" + babel-plugin-transform-es2015-sticky-regex "^6.3.13" + babel-plugin-transform-es2015-template-literals "^6.6.0" + babel-plugin-transform-es2015-typeof-symbol "^6.18.0" + babel-plugin-transform-es2015-unicode-regex "^6.3.13" + babel-plugin-transform-regenerator "^6.16.0" + +babel-preset-node5@11.1.x: + version "11.1.0" + resolved "https://registry.yarnpkg.com/babel-preset-node5/-/babel-preset-node5-11.1.0.tgz#61e76f6150e4a7265fe9d6cf4771f8bfedc90f7d" + dependencies: + babel-plugin-syntax-async-functions "^6.8.0" + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-plugin-syntax-trailing-function-commas "^6.8.0" + babel-plugin-transform-async-to-generator "^6.8.0" + babel-plugin-transform-es2015-destructuring "^6.8.0" + babel-plugin-transform-es2015-modules-commonjs "^6.8.0" + babel-plugin-transform-es2015-parameters "^6.8.0" + babel-plugin-transform-es2015-sticky-regex "^6.8.0" + babel-plugin-transform-es2015-unicode-regex "^6.8.0" + babel-plugin-transform-object-rest-spread "^6.8.0" + babel-plugin-transform-strict-mode "^6.8.0" + babel-polyfill "^6.8.0" + +babel-preset-stage-2@^6.3.13: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.18.0.tgz#9eb7bf9a8e91c68260d5ba7500493caaada4b5b5" + dependencies: + babel-plugin-syntax-dynamic-import "^6.18.0" + babel-plugin-transform-class-properties "^6.18.0" + babel-plugin-transform-decorators "^6.13.0" + babel-preset-stage-3 "^6.17.0" + +babel-preset-stage-3@^6.17.0: + version "6.17.0" + resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.17.0.tgz#b6638e46db6e91e3f889013d8ce143917c685e39" + dependencies: + babel-plugin-syntax-trailing-function-commas "^6.3.13" + babel-plugin-transform-async-generator-functions "^6.17.0" + babel-plugin-transform-async-to-generator "^6.16.0" + babel-plugin-transform-exponentiation-operator "^6.3.13" + babel-plugin-transform-object-rest-spread "^6.16.0" + +babel-register@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.18.0.tgz#892e2e03865078dd90ad2c715111ec4449b32a68" + dependencies: + babel-core "^6.18.0" + babel-runtime "^6.11.6" + core-js "^2.4.0" + home-or-tmp "^2.0.0" + lodash "^4.2.0" + mkdirp "^0.5.1" + source-map-support "^0.4.2" + +babel-runtime@^6.0.0, babel-runtime@^6.11.6, babel-runtime@^6.3.19, babel-runtime@^6.9.0, babel-runtime@^6.9.1: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.18.0.tgz#0f4177ffd98492ef13b9f823e9994a02584c9078" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.9.5" + +babel-template@^6.14.0, babel-template@^6.15.0, babel-template@^6.16.0, babel-template@^6.7.0, babel-template@^6.8.0: + version "6.16.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.16.0.tgz#e149dd1a9f03a35f817ddbc4d0481988e7ebc8ca" + dependencies: + babel-runtime "^6.9.0" + babel-traverse "^6.16.0" + babel-types "^6.16.0" + babylon "^6.11.0" + lodash "^4.2.0" + +babel-traverse@^6.16.0, babel-traverse@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.18.0.tgz#5aeaa980baed2a07c8c47329cd90c3b90c80f05e" + dependencies: + babel-code-frame "^6.16.0" + babel-messages "^6.8.0" + babel-runtime "^6.9.0" + babel-types "^6.18.0" + babylon "^6.11.0" + debug "^2.2.0" + globals "^9.0.0" + invariant "^2.2.0" + lodash "^4.2.0" + +babel-types@^6.13.0, babel-types@^6.16.0, babel-types@^6.18.0, babel-types@^6.7.2, babel-types@^6.8.0, babel-types@^6.9.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.18.0.tgz#1f7d5a73474c59eb9151b2417bbff4e4fce7c3f8" + dependencies: + babel-runtime "^6.9.1" + esutils "^2.0.2" + lodash "^4.2.0" + to-fast-properties "^1.0.1" + +babylon@^6.1.0, babylon@^6.11.0: + version "6.13.1" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.13.1.tgz#adca350e088f0467647157652bafead6ddb8dfdb" + +balanced-match@^0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" + +bcrypt-pbkdf@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz#3ca76b85241c7170bf7d9703e7b9aa74630040d4" + dependencies: + tweetnacl "^0.14.3" + +binary-extensions@^1.0.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.7.0.tgz#6c1610db163abfb34edfe42fa423343a1e01185d" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + +bluebird@^3.0.0, bluebird@^3.4.1: + version "3.4.6" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.6.tgz#01da8d821d87813d158967e743d5fe6c62cf8c0f" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +boxen@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6" + dependencies: + ansi-align "^1.1.0" + camelcase "^2.1.0" + chalk "^1.1.1" + cli-boxes "^1.0.0" + filled-array "^1.0.0" + object-assign "^4.0.1" + repeating "^2.0.0" + string-width "^1.0.1" + widest-line "^1.0.0" + +brace-expansion@^1.0.0: + version "1.1.6" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" + dependencies: + balanced-match "^0.4.1" + concat-map "0.0.1" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +buf-compare@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buf-compare/-/buf-compare-1.0.1.tgz#fef28da8b8113a0a0db4430b0b6467b69730b34a" + +buffer-equals@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/buffer-equals/-/buffer-equals-1.0.4.tgz#0353b54fd07fd9564170671ae6f66b9cf10d27f5" + +buffer-shims@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" + +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +caching-transform@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-1.0.1.tgz#6dbdb2f20f8d8fbce79f3e94e9d1742dcdf5c0a1" + dependencies: + md5-hex "^1.2.0" + mkdirp "^0.5.1" + write-file-atomic "^1.1.4" + +call-matcher@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/call-matcher/-/call-matcher-1.0.0.tgz#eafa31036dbfaa9c0d1716f12ddacfd9c69ef22f" + dependencies: + core-js "^2.0.0" + deep-equal "^1.0.0" + espurify "^1.6.0" + estraverse "^4.0.0" + +call-signature@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/call-signature/-/call-signature-0.0.2.tgz#a84abc825a55ef4cb2b028bd74e205a65b9a4996" + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^2.0.0, camelcase@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + +capture-stack-trace@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" + +caseless@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" + +chalk@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" + dependencies: + ansi-styles "~1.0.0" + has-color "~0.1.0" + strip-ansi "~0.1.0" + +chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chokidar@^1.0.0, chokidar@^1.4.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2" + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + +ci-info@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.0.0.tgz#dc5285f2b4e251821683681c381c3388f46ec534" + +clean-yaml-object@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz#63fb110dc2ce1a84dc21f6d9334876d010ae8b68" + +cli-boxes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" + +cli-cursor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" + dependencies: + restore-cursor "^1.0.1" + +cli-spinners@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c" + +cli-truncate@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" + dependencies: + slice-ansi "0.0.4" + string-width "^1.0.1" + +co-with-promise@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co-with-promise/-/co-with-promise-4.6.0.tgz#413e7db6f5893a60b942cf492c4bec93db415ab7" + dependencies: + pinkie-promise "^1.0.0" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" + dependencies: + delayed-stream "~1.0.0" + +commander@^2.8.1, commander@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" + dependencies: + graceful-readlink ">= 1.0.0" + +common-path-prefix@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-1.0.0.tgz#cd52f6f0712e0baab97d6f9732874f22f47752c0" + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +configstore@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1" + dependencies: + dot-prop "^3.0.0" + graceful-fs "^4.1.2" + mkdirp "^0.5.0" + object-assign "^4.0.1" + os-tmpdir "^1.0.0" + osenv "^0.1.0" + uuid "^2.0.1" + write-file-atomic "^1.1.2" + xdg-basedir "^2.0.0" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +convert-source-map@^1.1.0, convert-source-map@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.3.0.tgz#e9f3e9c6e2728efc2676696a70eb382f73106a67" + +core-assert@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/core-assert/-/core-assert-0.2.1.tgz#f85e2cf9bfed28f773cc8b3fa5c5b69bdc02fe3f" + dependencies: + buf-compare "^1.0.0" + is-error "^2.2.0" + +core-js@^2.0.0, core-js@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +create-error-class@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" + dependencies: + capture-stack-trace "^1.0.0" + +cross-spawn@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + dependencies: + array-find-index "^1.0.1" + +dashdash@^1.12.0: + version "1.14.0" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.0.tgz#29e486c5418bf0f356034a993d51686a33e84141" + dependencies: + assert-plus "^1.0.0" + +date-time@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/date-time/-/date-time-0.1.1.tgz#ed2f6d93d9790ce2fd66d5b5ff3edd5bbcbf3b07" + +debug@^2.1.1, debug@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.0.tgz#3912dc55d7167fc3af17d2b85c13f93deaedaa43" + dependencies: + ms "0.7.2" + +debug@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" + dependencies: + ms "0.7.1" + +decamelize@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +deep-equal@^1.0.0, deep-equal@1.0.x: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + +deep-extend@~0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + dependencies: + repeating "^2.0.0" + +dot-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" + dependencies: + is-obj "^1.0.0" + +duplexer2@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + dependencies: + readable-stream "^2.0.2" + +eastasianwidth@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.1.1.tgz#44d656de9da415694467335365fb3147b8572b7c" + +ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.1.0" + +empower-core@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/empower-core/-/empower-core-0.6.1.tgz#6c187f502fcef7554d57933396aac655483772b1" + dependencies: + call-signature "0.0.2" + core-js "^2.0.0" + +error-ex@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9" + dependencies: + is-arrayish "^0.2.1" + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +espower-location-detector@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/espower-location-detector/-/espower-location-detector-0.1.2.tgz#d43be738af3e0b18197eeb5c22b95512dee6b83c" + dependencies: + is-url "^1.2.1" + path-is-absolute "^1.0.0" + source-map "^0.5.0" + xtend "^4.0.0" + +espurify@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/espurify/-/espurify-1.6.0.tgz#6cb993582d9422bd6f2d4b258aadb14833f394f0" + dependencies: + core-js "^2.0.0" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +exit-hook@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + +extend@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + +extsprintf@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" + +figures@^1.4.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +filename-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775" + +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +filled-array@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/filled-array/-/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84" + +find-cache-dir@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" + dependencies: + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^1.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +fn-name@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7" + +for-in@^0.1.5: + version "0.1.6" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.6.tgz#c9f96e89bfad18a545af5ec3ed352a1d9e5b4dc8" + +for-own@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.4.tgz#0149b41a39088c7515f51ebe1c1386d45f935072" + dependencies: + for-in "^0.1.5" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@~2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.1.tgz#4adf0342e1a79afa1e84c8c320a9ffc82392a1f3" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +fs-readdir-recursive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +fsevents@^1.0.0: + version "1.0.15" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.0.15.tgz#fa63f590f3c2ad91275e4972a6cea545fb0aae44" + dependencies: + nan "^2.3.0" + node-pre-gyp "^0.6.29" + +fstream-ignore@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^3.0.0" + +fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +gauge@~2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.6.0.tgz#d35301ad18e96902b4751dcbbe40f4218b942a46" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-color "^0.1.7" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +generate-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" + +generate-object-property@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" + dependencies: + is-property "^1.0.0" + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + +getpass@^0.1.1: + version "0.1.6" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6" + dependencies: + assert-plus "^1.0.0" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob@^5.0.5: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.3, glob@^7.0.5: + version "7.1.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^9.0.0: + version "9.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.12.0.tgz#992ce90828c3a55fa8f16fada177adb64664cf9d" + +globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +got@^5.0.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35" + dependencies: + create-error-class "^3.0.1" + duplexer2 "^0.1.4" + is-redirect "^1.0.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + lowercase-keys "^1.0.0" + node-status-codes "^1.0.0" + object-assign "^4.0.1" + parse-json "^2.1.0" + pinkie-promise "^2.0.0" + read-all-stream "^3.0.0" + readable-stream "^2.0.5" + timed-out "^3.0.0" + unzip-response "^1.0.2" + url-parse-lax "^1.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.4: + version "4.1.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.10.tgz#f2d720c22092f743228775c75e3612632501f131" + +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + +har-validator@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" + dependencies: + chalk "^1.1.1" + commander "^2.9.0" + is-my-json-valid "^2.12.4" + pinkie-promise "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-color@^0.1.7, has-color@~0.1.0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" + +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +hosted-git-info@^2.1.4: + version "2.1.5" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +ignore-by-default@^1.0.0, ignore-by-default@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + dependencies: + repeating "^2.0.0" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +ini@~1.3.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" + +internet-timestamp@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/internet-timestamp/-/internet-timestamp-0.0.1.tgz#16b4a7ada6d1110d4e141fd443756b81b16d1712" + +invariant@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.1.tgz#b097010547668c7e337028ebe816ebe36c8a8d54" + dependencies: + loose-envify "^1.0.0" + +irregular-plurals@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-1.2.0.tgz#38f299834ba8c00c30be9c554e137269752ff3ac" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.0.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b" + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-ci@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e" + dependencies: + ci-info "^1.0.0" + +is-dotfile@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-error@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-error/-/is-error-2.2.1.tgz#684a96d84076577c98f4cdb40c6d26a5123bf19c" + +is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-finite@^1.0.0, is-finite@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-generator-fn@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a" + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + +is-my-json-valid@^2.12.4: + version "2.15.0" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b" + dependencies: + generate-function "^2.0.0" + generate-object-property "^1.1.0" + jsonpointer "^4.0.0" + xtend "^4.0.0" + +is-npm@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" + +is-number@^2.0.2, is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + +is-observable@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-0.2.0.tgz#b361311d83c6e5d726cabf5e250b0237106f5ae2" + dependencies: + symbol-observable "^0.2.2" + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + +is-property@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + +is-redirect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + +is-retry-allowed@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + +is-stream@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +is-url@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.2.tgz#498905a593bf47cc2d9e7f738372bbf7696c7f26" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + +isarray@~1.0.0, isarray@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isexe@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +jodid25519@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" + dependencies: + jsbn "~0.1.0" + +js-tokens@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-2.0.0.tgz#79903f5563ee778cc1162e6dcf1a0027c97f9cb5" + +jsbn@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +json5@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.0.tgz#9b20715b026cbe3778fd769edccd822d8332a5b2" + +jsonpointer@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.0.tgz#6661e161d2fc445f19f98430231343722e1fcbd5" + +jsprim@^1.2.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252" + dependencies: + extsprintf "1.0.2" + json-schema "0.2.3" + verror "1.3.6" + +kind-of@^3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.0.4.tgz#7b8ecf18a4e17f8269d73b501c9f232c96887a74" + dependencies: + is-buffer "^1.0.2" + +kristianmandrup/faker.js#master: + name faker + version "3.2.0" + resolved "https://codeload.github.com/kristianmandrup/faker.js/tar.gz/c8bce555baf72593d49890d2079e2eb476939c38" + dependencies: + internet-timestamp "0.0.1" + moment "^2.x" + randomstring "^1.1.5" + string "^3.3.3" + +last-line-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/last-line-stream/-/last-line-stream-1.0.0.tgz#d1b64d69f86ff24af2d04883a2ceee14520a5600" + dependencies: + through2 "^2.0.0" + +latest-version@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b" + dependencies: + package-json "^2.0.0" + +lazy-req@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac" + +load-json-file@^1.0.0, load-json-file@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +lodash.debounce@^4.0.3: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + +lodash.difference@^4.3.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" + +lodash@^4.2.0: + version "4.16.6" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777" + +loose-envify@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.0.tgz#6b26248c42f6d4fa4b0d8542f78edfcde35642a8" + dependencies: + js-tokens "^2.0.0" + +loud-rejection@^1.0.0, loud-rejection@^1.2.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lowercase-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + +lru-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.1.tgz#1343955edaf2e37d9b9e7ee7241e27c4b9fb72be" + dependencies: + pseudomap "^1.0.1" + yallist "^2.0.0" + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + +matcher@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/matcher/-/matcher-0.1.2.tgz#ef20cbde64c24c50cc61af5b83ee0b1b8ff00101" + dependencies: + escape-string-regexp "^1.0.4" + +max-timeout@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/max-timeout/-/max-timeout-1.0.0.tgz#b68f69a2f99e0b476fd4cb23e2059ca750715e1f" + +md5-hex@^1.2.0, md5-hex@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-1.3.0.tgz#d2c4afe983c4370662179b8cad145219135046c4" + dependencies: + md5-o-matic "^0.1.1" + +md5-o-matic@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3" + +meow@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +micromatch@^2.1.5: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +mime-db@~1.24.0: + version "1.24.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.24.0.tgz#e2d13f939f0016c6e4e9ad25a8652f126c467f0c" + +mime-types@^2.1.12, mime-types@~2.1.7: + version "2.1.12" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.12.tgz#152ba256777020dd4663f54c2e7bc26381e71729" + dependencies: + mime-db "~1.24.0" + +minimatch@^3.0.0, minimatch@^3.0.2, "minimatch@2 || 3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" + dependencies: + brace-expansion "^1.0.0" + +minimist@^1.1.3, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +mkdirp@^0.5.0, mkdirp@^0.5.1, "mkdirp@>=0.5 0", mkdirp@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +moment@^2.x: + version "2.15.2" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.15.2.tgz#1bfdedf6a6e345f322fe956d5df5bd08a8ce84dc" + +ms@^0.7.1, ms@0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" + +ms@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" + +multimatch@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" + dependencies: + array-differ "^1.0.0" + array-union "^1.0.1" + arrify "^1.0.0" + minimatch "^3.0.0" + +nan@^2.3.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.4.0.tgz#fb3c59d45fe4effe215f0b890f8adf6eb32d2232" + +node-pre-gyp@^0.6.29: + version "0.6.31" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.31.tgz#d8a00ddaa301a940615dbcc8caad4024d58f6017" + dependencies: + mkdirp "~0.5.1" + nopt "~3.0.6" + npmlog "^4.0.0" + rc "~1.1.6" + request "^2.75.0" + rimraf "~2.5.4" + semver "~5.3.0" + tar "~2.2.1" + tar-pack "~3.3.0" + +node-status-codes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" + +node-uuid@~1.4.7: + version "1.4.7" + resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.7.tgz#6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f" + +nopt@~3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: + version "2.3.5" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a" + +not-so-shallow@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/not-so-shallow/-/not-so-shallow-0.1.4.tgz#e8c7f7b9c9b9f069594344368330cbcea387c3c7" + dependencies: + buffer-equals "^1.0.3" + +npmlog@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.0.tgz#e094503961c70c1774eb76692080e8d578a9f88f" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.6.0" + set-blocking "~2.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +oauth-sign@~0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +object-assign@^4.0.1, object-assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +observable-to-promise@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/observable-to-promise/-/observable-to-promise-0.4.0.tgz#28afe71645308f2d41d71f47ad3fece1a377e52b" + dependencies: + is-observable "^0.2.0" + symbol-observable "^0.2.2" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +once@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" + dependencies: + wrappy "1" + +onetime@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + +option-chain@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/option-chain/-/option-chain-0.1.1.tgz#e9b811e006f1c0f54802f28295bfc8970f8dcfbd" + dependencies: + object-assign "^4.0.1" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@^0.1.0: + version "0.1.3" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.3.tgz#83cf05c6d6458fc4d5ac6362ea325d92f2754217" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +output-file-sync@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" + dependencies: + graceful-fs "^4.1.4" + mkdirp "^0.5.1" + object-assign "^4.1.0" + +package-hash@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-1.2.0.tgz#003e56cd57b736a6ed6114cc2b81542672770e44" + dependencies: + md5-hex "^1.3.0" + +package-json@^2.0.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb" + dependencies: + got "^5.0.0" + registry-auth-token "^3.0.1" + registry-url "^3.0.3" + semver "^5.1.0" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^2.1.0, parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + +parse-ms@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-0.1.2.tgz#dd3fa25ed6c2efc7bdde12ad9b46c163aa29224e" + +parse-ms@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-1.0.1.tgz#56346d4749d78f23430ca0c713850aef91aa361d" + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pinkie-promise@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-1.0.0.tgz#d1da67f5482563bb7cf57f286ae2822ecfbf3670" + dependencies: + pinkie "^1.0.0" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-1.0.0.tgz#5a47f28ba1015d0201bda7bf0f358e47bec8c7e4" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +pkg-conf@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-1.1.3.tgz#378e56d6fd13e88bfb6f4a25df7a83faabddba5b" + dependencies: + find-up "^1.0.0" + load-json-file "^1.1.0" + object-assign "^4.0.1" + symbol "^0.2.1" + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + dependencies: + find-up "^1.0.0" + +plur@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/plur/-/plur-1.0.0.tgz#db85c6814f5e5e5a3b49efc28d604fec62975156" + +plur@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/plur/-/plur-2.1.2.tgz#7482452c1a0f508e3e344eaec312c91c29dc655a" + dependencies: + irregular-plurals "^1.0.0" + +power-assert-context-formatter@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/power-assert-context-formatter/-/power-assert-context-formatter-1.1.0.tgz#85ec15ec24309528ef1a2303d2c86e44423cd18f" + dependencies: + core-js "^2.0.0" + power-assert-context-traversal "^1.1.0" + +power-assert-context-traversal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/power-assert-context-traversal/-/power-assert-context-traversal-1.1.0.tgz#d815975745a26d9280ec363625c819642edf0264" + dependencies: + core-js "^2.0.0" + estraverse "^4.1.0" + +power-assert-renderer-assertion@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/power-assert-renderer-assertion/-/power-assert-renderer-assertion-1.1.0.tgz#e512c49bdda30f905d601d1d11f7e0094b657ac3" + dependencies: + power-assert-renderer-base "^1.1.0" + power-assert-util-string-width "^1.1.0" + +power-assert-renderer-base@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/power-assert-renderer-base/-/power-assert-renderer-base-1.1.0.tgz#de8c0132c5ff42ccaab39034487d5c30bda154a5" + +power-assert-renderer-diagram@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.1.0.tgz#91e28458fba754cb977ed81fe06d3eee4333f14d" + dependencies: + core-js "^2.0.0" + power-assert-renderer-base "^1.1.0" + power-assert-util-string-width "^1.1.0" + stringifier "^1.3.0" + +power-assert-renderer-succinct@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/power-assert-renderer-succinct/-/power-assert-renderer-succinct-1.1.0.tgz#3f024af776eac7aad9b33105b93f7ba18e7ce22d" + dependencies: + core-js "^2.0.0" + power-assert-renderer-diagram "^1.1.0" + +power-assert-util-string-width@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/power-assert-util-string-width/-/power-assert-util-string-width-1.1.0.tgz#63d2c714c0cddb8dce0e0d7cc5f9851be94ddd98" + dependencies: + eastasianwidth "^0.1.1" + +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + +pretty-ms@^0.2.1: + version "0.2.2" + resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-0.2.2.tgz#da879a682ff33a37011046f13d627f67c73b84f6" + dependencies: + parse-ms "^0.1.0" + +pretty-ms@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-2.1.0.tgz#4257c256df3fb0b451d6affaab021884126981dc" + dependencies: + is-finite "^1.0.1" + parse-ms "^1.0.0" + plur "^1.0.0" + +private@^0.1.6, private@~0.1.5: + version "0.1.6" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.6.tgz#55c6a976d0f9bafb9924851350fe47b9b5fbb7c1" + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + +pseudomap@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +qs@~6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442" + +randomatic@^1.1.3: + version "1.1.5" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.5.tgz#5e9ef5f2d573c67bd2b8124ae90b5156e457840b" + dependencies: + is-number "^2.0.2" + kind-of "^3.0.2" + +randomstring@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/randomstring/-/randomstring-1.1.5.tgz#6df0628f75cbd5932930d9fe3ab4e956a18518c3" + dependencies: + array-uniq "1.0.2" + +rc@^1.0.1, rc@^1.1.6, rc@~1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~1.0.4" + +read-all-stream@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa" + dependencies: + pinkie-promise "^2.0.0" + readable-stream "^2.0.0" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@~2.1.4: + version "2.1.5" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" + dependencies: + buffer-shims "^1.0.0" + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +readable-stream@~2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + dependencies: + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +regenerate@^1.2.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.1.tgz#0300203a5d2fdcf89116dce84275d011f5903f33" + +regenerator-runtime@^0.9.5: + version "0.9.6" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz#d33eb95d0d2001a4be39659707c51b0cb71ce029" + +regex-cache@^0.4.2: + version "0.4.3" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" + dependencies: + is-equal-shallow "^0.1.3" + is-primitive "^2.0.0" + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +registry-auth-token@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.1.0.tgz#997c08256e0c7999837b90e944db39d8a790276b" + dependencies: + rc "^1.1.6" + +registry-url@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + dependencies: + rc "^1.0.1" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + dependencies: + jsesc "~0.5.0" + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +request@^2.75.0: + version "2.78.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.78.0.tgz#e1c8dec346e1c81923b24acdb337f11decabe9cc" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.11.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~2.0.6" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + node-uuid "~1.4.7" + oauth-sign "~0.8.1" + qs "~6.3.0" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "~0.4.1" + +require-precompiled@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/require-precompiled/-/require-precompiled-0.1.0.tgz#5a1b52eb70ebed43eb982e974c85ab59571e56fa" + +resolve-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-1.0.0.tgz#4eaeea41ed040d1702457df64a42b2b07d246f9f" + dependencies: + resolve-from "^2.0.0" + +resolve-from@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" + +restore-cursor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" + dependencies: + exit-hook "^1.0.0" + onetime "^1.0.0" + +rimraf@~2.5.1, rimraf@~2.5.4, rimraf@2: + version "2.5.4" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" + dependencies: + glob "^7.0.5" + +semver-diff@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" + dependencies: + semver "^5.0.3" + +semver@^5.0.3, semver@^5.1.0, semver@~5.3.0, "semver@2 || 3 || 4 || 5": + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + +set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + +signal-exit@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.1.tgz#5a4c884992b63a7acd9badb7894c3ee9cfccad81" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + +slide@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + +sort-keys@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + dependencies: + is-plain-obj "^1.0.0" + +source-map-support@^0.4.0, source-map-support@^0.4.2: + version "0.4.6" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.6.tgz#32552aa64b458392a85eab3b0b5ee61527167aeb" + dependencies: + source-map "^0.5.3" + +source-map@^0.5.0, source-map@^0.5.3: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" + +spdx-correct@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" + dependencies: + spdx-license-ids "^1.0.2" + +spdx-expression-parse@~1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" + +spdx-license-ids@^1.0.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" + +sshpk@^1.7.0: + version "1.10.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.1.tgz#30e1a5d329244974a1af61511339d595af6638b0" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jodid25519 "^1.0.0" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +stack-utils@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-0.4.0.tgz#940cb82fccfa84e8ff2f3fdf293fe78016beccd1" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/string/-/string-3.3.3.tgz#5ea211cd92d228e184294990a6cc97b366a77cb0" + +stringifier@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/stringifier/-/stringifier-1.3.0.tgz#def18342f6933db0f2dbfc9aa02175b448c17959" + dependencies: + core-js "^2.0.0" + traverse "^0.6.6" + type-name "^2.0.1" + +stringstream@~0.0.4: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + dependencies: + is-utf8 "^0.2.0" + +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + dependencies: + get-stdin "^4.0.1" + +strip-json-comments@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +symbol-observable@^0.2.2: + version "0.2.4" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-0.2.4.tgz#95a83db26186d6af7e7a18dbd9760a2f86d08f40" + +symbol@^0.2.1: + version "0.2.3" + resolved "https://registry.yarnpkg.com/symbol/-/symbol-0.2.3.tgz#3b9873b8a901e47c6efe21526a3ac372ef28bbc7" + +tar-pack@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae" + dependencies: + debug "~2.2.0" + fstream "~1.0.10" + fstream-ignore "~1.0.5" + once "~1.3.3" + readable-stream "~2.1.4" + rimraf "~2.5.1" + tar "~2.2.1" + uid-number "~0.0.6" + +tar@~2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + +the-argv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/the-argv/-/the-argv-1.0.0.tgz#0084705005730dd84db755253c931ae398db9522" + +through2@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.1.tgz#384e75314d49f32de12eebb8136b8eb6b5d59da9" + dependencies: + readable-stream "~2.0.0" + xtend "~4.0.0" + +time-require@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/time-require/-/time-require-0.1.2.tgz#f9e12cb370fc2605e11404582ba54ef5ca2b2d98" + dependencies: + chalk "^0.4.0" + date-time "^0.1.1" + pretty-ms "^0.2.1" + text-table "^0.2.0" + +timed-out@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.0.0.tgz#ff88de96030ce960eabd42487db61d3add229273" + +to-fast-properties@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320" + +tough-cookie@~2.3.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" + dependencies: + punycode "^1.4.1" + +traverse@^0.6.6: + version "0.6.6" + resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + +tunnel-agent@~0.4.1: + version "0.4.3" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.3.tgz#3da382f670f25ded78d7b3d1792119bca0b7132d" + +type-name@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/type-name/-/type-name-2.0.2.tgz#efe7d4123d8ac52afff7f40c7e4dec5266008fb4" + +typeable@0.10.x: + version "0.10.0" + resolved "https://registry.yarnpkg.com/typeable/-/typeable-0.10.0.tgz#780490e00549fc7008bdb29f1b9aced3da595a1c" + +uid-number@~0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + +uid2@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82" + +unique-temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz#6dce95b2681ca003eebfb304a415f9cbabcc5385" + dependencies: + mkdirp "^0.5.1" + os-tmpdir "^1.0.1" + uid2 "0.0.3" + +unzip-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" + +update-notifier@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-1.0.2.tgz#27c90519196dc15015be02a34ea52986feab8877" + dependencies: + boxen "^0.6.0" + chalk "^1.0.0" + configstore "^2.0.0" + is-npm "^1.0.0" + latest-version "^2.0.0" + lazy-req "^1.1.0" + semver-diff "^2.0.0" + xdg-basedir "^2.0.0" + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + dependencies: + prepend-http "^1.0.1" + +user-home@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +uuid@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" + +v8flags@^2.0.10: + version "2.0.11" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881" + dependencies: + user-home "^1.1.1" + +validatable@0.13.x: + version "0.13.0" + resolved "https://registry.yarnpkg.com/validatable/-/validatable-0.13.0.tgz#a5781575d5b2c1b64cf9297fda10a0ede7a146d2" + dependencies: + typeable "0.10.x" + +validate-npm-package-license@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" + dependencies: + spdx-correct "~1.0.0" + spdx-expression-parse "~1.0.0" + +verror@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" + dependencies: + extsprintf "1.0.2" + +which@^1.2.9: + version "1.2.11" + resolved "https://registry.yarnpkg.com/which/-/which-1.2.11.tgz#c8b2eeea6b8c1659fa7c1dd4fdaabe9533dc5e8b" + dependencies: + isexe "^1.1.1" + +wide-align@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad" + dependencies: + string-width "^1.0.1" + +widest-line@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c" + dependencies: + string-width "^1.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +write-file-atomic@^1.1.2, write-file-atomic@^1.1.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.2.0.tgz#14c66d4e4cb3ca0565c28cf3b7a6f3e4d5938fab" + dependencies: + graceful-fs "^4.1.2" + imurmurhash "^0.1.4" + slide "^1.1.5" + +write-json-file@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-1.2.0.tgz#2d5dfe96abc3c889057c93971aa4005efb548134" + dependencies: + graceful-fs "^4.1.2" + mkdirp "^0.5.1" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + sort-keys "^1.1.1" + write-file-atomic "^1.1.2" + +write-pkg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-1.0.0.tgz#aeb8aa9d4d788e1d893dfb0854968b543a919f57" + dependencies: + write-json-file "^1.1.0" + +xdg-basedir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2" + dependencies: + os-homedir "^1.0.0" + +xtend@^4.0.0, xtend@~4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +yallist@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.0.0.tgz#306c543835f09ee1a4cb23b7bce9ab341c91cdd4" + From 8f588880c890a48a9aee22c5fa18d9b1a948dd62 Mon Sep 17 00:00:00 2001 From: Kristian Mandrup Date: Tue, 8 Nov 2016 00:58:09 +0100 Subject: [PATCH 092/219] better faker registry design --- README.md | 9 +++++++++ dist/fields.js | 18 +++++++++++++----- dist/schemas.js | 11 ++++++++--- src/fields.js | 16 ++++++++++------ src/schemas.js | 8 ++++++-- tests/document.js | 20 ++++++++++++++++++++ 6 files changed, 66 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 69de906..53655f6 100644 --- a/README.md +++ b/README.md @@ -114,6 +114,7 @@ A Schema can also be used as a custom type object. This way you can create a nes | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ +| name | String | No | - | The name of the schema | fakes | Object,Function | No | - | A registry of faker methods that can be used to generate fake field data | fields | Object,Function | Yes | - | An object with fields definition. You should pass a function which returns the definition object in case of self referencing. | strict | Boolean | No | true | A schema type (set to `false` to allow dynamic fields not defined in schema). @@ -123,8 +124,16 @@ A Schema can also be used as a custom type object. This way you can create a nes // reusable fakers const fakes = { + // default faker functions if no key for schema name title: () => { return faker.lorem.sentence() + }, + schemas: { + book: { // used by book schema if present + title: () => { + return faker.book.title() + }, + } } } diff --git a/dist/fields.js b/dist/fields.js index 0b557bc..d771d8b 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -125,17 +125,21 @@ class Field { let value = (0, _typeable.isFunction)(fakeValue) ? fakeValue(this._document) : fakeValue; - function generateFrom(schemaFaker, name) { - let fakeGen = schemaFaker[name]; + function generateFrom(fakes, name) { + if (!fakes) return; + if (typeof fakes !== 'object') return; + + let fakeGen = fakes[name]; if (!fakeGen) return; if (typeof fakeGen === 'function') { return fakeGen(); } } - - let schemaFaker = this.$owner.$schema.fakes; - if (!value && schemaFaker) { + let schema = this.$owner.$schema; + let fakes = this.$owner.$schema.fakes; + if (!value && fakes) { + let schemaFaker = fakes.schemas ? fakes.schemas[schema.name] : fakes; value = generateFrom(schemaFaker, this.name); } @@ -213,6 +217,10 @@ class Field { return this; } + /* + * Sets field to a generated fake value. + */ + fake() { this.value = this.fakeValue || this.defaultValue; diff --git a/dist/schemas.js b/dist/schemas.js index e078f08..7a0fab5 100644 --- a/dist/schemas.js +++ b/dist/schemas.js @@ -14,9 +14,10 @@ class Schema { */ constructor() { - var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - _ref$fakes = _ref.fakes; + var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + let name = _ref.name; + var _ref$fakes = _ref.fakes; let fakes = _ref$fakes === undefined ? {} : _ref$fakes; var _ref$fields = _ref.fields; let fields = _ref$fields === undefined ? {} : _ref$fields; @@ -27,7 +28,11 @@ class Schema { var _ref$typeOptions = _ref.typeOptions; let typeOptions = _ref$typeOptions === undefined ? {} : _ref$typeOptions; - Object.defineProperty(this, 'fakes', { // document fields + Object.defineProperty(this, 'name', { // document name + value: name + }); + + Object.defineProperty(this, 'fakes', { // document fakes registry get: () => typeof fakes === 'function' ? fakes() : fakes }); diff --git a/src/fields.js b/src/fields.js index 73df170..27cf4b9 100644 --- a/src/fields.js +++ b/src/fields.js @@ -96,18 +96,22 @@ export class Field { ? fakeValue(this._document) : fakeValue; - function generateFrom(schemaFaker, name) { - let fakeGen = schemaFaker[name] + function generateFrom(fakes, name) { + if (!fakes) return + if (typeof fakes !== 'object') return + + let fakeGen = fakes[name] if (!fakeGen) return if (typeof fakeGen === 'function') { return fakeGen() } } - - let schemaFaker = this.$owner.$schema.fakes - if (!value && schemaFaker) { - value = generateFrom(schemaFaker, this.name) + let schema = this.$owner.$schema + let fakes = this.$owner.$schema.fakes + if (!value && fakes) { + let schemaFaker = fakes.schemas ? fakes.schemas[schema.name] : fakes + value = generateFrom(schemaFaker, this.name) } value = this._cast(value, type); // value type casting diff --git a/src/schemas.js b/src/schemas.js index c337b2e..2fa0a06 100644 --- a/src/schemas.js +++ b/src/schemas.js @@ -8,8 +8,12 @@ export class Schema { * Class constructor. */ - constructor ({fakes={}, fields={}, strict=true, validatorOptions={}, typeOptions={}}={}) { - Object.defineProperty(this, 'fakes', { // document fields + constructor ({name, fakes={}, fields={}, strict=true, validatorOptions={}, typeOptions={}}={}) { + Object.defineProperty(this, 'name', { // document name + value: name + }); + + Object.defineProperty(this, 'fakes', { // document fakes registry get: () => typeof fakes === 'function' ? fakes() : fakes, }); diff --git a/tests/document.js b/tests/document.js index 47ba2be..f0b1089 100644 --- a/tests/document.js +++ b/tests/document.js @@ -7,6 +7,10 @@ import { ValidatorError } from '../dist'; +function displayObj(label, obj) { + console.log(label, '>>', JSON.stringify(obj, null, 2)) +} + test('field value should be converted to the specified type', (t) => { let bookSchema = new Schema({ fields: () => ({ @@ -102,11 +106,19 @@ test('field can be of a custom type', (t) => { const fakes = { title: () => { return faker.lorem.sentence() + }, + schemas: { + book: { + title: () => { + return 'random book title' + } + } } } test('field can have a default value', (t) => { let bookSchema = new Schema({ + name: 'book', fakes, fields: { title: { @@ -123,6 +135,8 @@ test('field can have a default value', (t) => { } }); let userSchema = new Schema({ + name: 'user', + fakes, fields: { name: { type: 'String', @@ -131,6 +145,9 @@ test('field can have a default value', (t) => { return faker.name.findName() } }, + title: { + type: 'String', + }, age: { type: 'Integer', defaultValue: '35' @@ -180,6 +197,9 @@ test('field can have a default value', (t) => { book2.reset() fakeBook.fake() + // displayObj('user', fakeUser) + // displayObj('book', fakeBook) + t.not(user2.name, fakeUser.name); t.is(book2.price, fakeBook.price); From d6aed735c9443825e3825244416b1e31912fc8dc Mon Sep 17 00:00:00 2001 From: xpeper Date: Tue, 8 Nov 2016 17:26:19 +0100 Subject: [PATCH 093/219] dependencies, adding Number field type --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 95e250c..2ee8951 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.9.0", + "version": "2.10.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -49,7 +49,7 @@ }, "dependencies": { "deep-equal": "1.0.x", - "typeable": "0.10.x", - "validatable": "0.13.x" + "typeable": "0.12.x", + "validatable": "0.14.x" } } From f734ba89a73c53213ccfed61d69b1edc5709ad7d Mon Sep 17 00:00:00 2001 From: xpeper Date: Tue, 8 Nov 2016 20:54:42 +0100 Subject: [PATCH 094/219] optimized data serialization --- dist/documents.js | 31 +++++-------------------------- dist/fields.js | 8 ++++---- dist/utils.js | 4 ++-- package.json | 4 ++-- src/documents.js | 36 ++++++++---------------------------- src/fields.js | 11 +++++++---- src/utils.js | 2 +- 7 files changed, 29 insertions(+), 67 deletions(-) diff --git a/dist/documents.js b/dist/documents.js index a53c106..f29eb4d 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -23,9 +23,9 @@ var _assign2 = _interopRequireDefault(_assign); var _typeable = require('typeable'); -var _deepEqual = require('deep-equal'); +var _lodash = require('lodash.isequal'); -var _deepEqual2 = _interopRequireDefault(_deepEqual); +var _lodash2 = _interopRequireDefault(_lodash); var _validatable = require('validatable'); @@ -196,7 +196,7 @@ class Document { _populateFields() { let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - data = (0, _utils.cloneData)(data); + data = (0, _utils.serialize)(data); for (let name in data) { this._populateField(name, data[name]); @@ -227,28 +227,7 @@ class Document { */ toObject() { - let data = {}; - let names = (0, _keys2.default)(this); - - for (let name of names) { - data[name] = this._serializeValue(this[name]); - } - - return data; - } - - /* - * Serializes a value recursivelly and returns a serialized data object. - */ - - _serializeValue(value) { - if (value && value.toObject) { - return value.toObject(); - } else if (value && (0, _typeable.isArray)(value)) { - return value.map(value => this._serializeValue(value)); - } else { - return value; - } + return (0, _utils.serialize)(this); } /* @@ -333,7 +312,7 @@ class Document { */ equals(value) { - return (0, _deepEqual2.default)(this, value); + return (0, _lodash2.default)((0, _utils.serialize)(this), (0, _utils.serialize)(value)); } /* diff --git a/dist/fields.js b/dist/fields.js index 0e7af49..9e6d4ba 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -15,9 +15,9 @@ var _assign2 = _interopRequireDefault(_assign); var _typeable = require('typeable'); -var _deepEqual = require('deep-equal'); +var _lodash = require('lodash.isequal'); -var _deepEqual2 = _interopRequireDefault(_deepEqual); +var _lodash2 = _interopRequireDefault(_lodash); var _utils = require('./utils'); @@ -229,7 +229,7 @@ class Field { commit() { this._commitRelated(this.value); - this._initialValue = (0, _utils.cloneData)(this.value); + this._initialValue = (0, _utils.serialize)(this.value); return this; } @@ -263,7 +263,7 @@ class Field { */ equals(data) { - return (0, _deepEqual2.default)(this.value, data); + return (0, _lodash2.default)((0, _utils.serialize)(this.value), (0, _utils.serialize)(data)); } /* diff --git a/dist/utils.js b/dist/utils.js index 8e37541..4f11558 100644 --- a/dist/utils.js +++ b/dist/utils.js @@ -8,7 +8,7 @@ var _stringify = require("babel-runtime/core-js/json/stringify"); var _stringify2 = _interopRequireDefault(_stringify); -exports.cloneData = cloneData; +exports.serialize = serialize; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -16,6 +16,6 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de * Returns a duplicated data object (useful to remove data bindings). */ -function cloneData(data) { +function serialize(data) { return JSON.parse((0, _stringify2.default)(data)); } \ No newline at end of file diff --git a/package.json b/package.json index 20bbed0..daa6ee7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.11.0", + "version": "2.12.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -48,7 +48,7 @@ "babel-preset-node5": "11.1.x" }, "dependencies": { - "deep-equal": "1.0.x", + "lodash.isequal": "4.4.x", "typeable": "0.12.x", "validatable": "0.14.x" } diff --git a/src/documents.js b/src/documents.js index d06116b..7decd17 100644 --- a/src/documents.js +++ b/src/documents.js @@ -6,9 +6,9 @@ import { isAbsent, isUndefined } from 'typeable'; -import deeplyEquals from 'deep-equal'; +import isEqual from 'lodash.isequal'; import {Validator} from 'validatable'; -import {cloneData} from './utils'; +import {serialize} from './utils'; import {Schema} from './schemas'; import {Field} from './fields'; import {ValidationError} from './errors'; @@ -157,7 +157,7 @@ export class Document { */ _populateFields (data={}) { - data = cloneData(data); + data = serialize(data); for (let name in data) { this._populateField(name, data[name]); @@ -189,30 +189,7 @@ export class Document { */ toObject () { - let data = {}; - let names = Object.keys(this); - - for (let name of names) { - data[name] = this._serializeValue(this[name]); - } - - return data; - } - - /* - * Serializes a value recursivelly and returns a serialized data object. - */ - - _serializeValue (value) { - if (value && value.toObject) { - return value.toObject(); - } - else if (value && isArray(value)) { - return value.map((value) => this._serializeValue(value)); - } - else { - return value; - } + return serialize(this); } /* @@ -292,7 +269,10 @@ export class Document { */ equals (value) { - return deeplyEquals(this, value); + return isEqual( + serialize(this), + serialize(value) + ); } /* diff --git a/src/fields.js b/src/fields.js index 022743d..90c3630 100644 --- a/src/fields.js +++ b/src/fields.js @@ -4,8 +4,8 @@ import { toArray, isFunction } from 'typeable'; -import deeplyEquals from 'deep-equal'; -import {cloneData} from './utils'; +import isEqual from 'lodash.isequal'; +import {serialize} from './utils'; import {Schema} from './schemas'; import {ValidatorError} from './errors'; @@ -199,7 +199,7 @@ export class Field { commit () { this._commitRelated(this.value); - this._initialValue = cloneData(this.value); + this._initialValue = serialize(this.value); return this; } @@ -233,7 +233,10 @@ export class Field { */ equals (data) { - return deeplyEquals(this.value, data); + return isEqual( + serialize(this.value), + serialize(data) + ); } /* diff --git a/src/utils.js b/src/utils.js index a3ba8ac..9440b4c 100644 --- a/src/utils.js +++ b/src/utils.js @@ -2,6 +2,6 @@ * Returns a duplicated data object (useful to remove data bindings). */ -export function cloneData (data) { +export function serialize (data) { return JSON.parse(JSON.stringify(data)); } From bf64204f2f99c6e27443d24dbfbe35da9d12525a Mon Sep 17 00:00:00 2001 From: xpeper Date: Wed, 9 Nov 2016 00:36:33 +0100 Subject: [PATCH 095/219] schema mixins, proposed by kristianmandrup --- README.md | 9 ++-- dist/schemas.js | 37 +++++++++++---- dist/utils.js | 16 ++++++- package.json | 3 +- src/schemas.js | 39 +++++++++++++-- src/utils.js | 11 +++++ tests/{document.js => documents.js} | 0 tests/schemas.js | 74 +++++++++++++++++++++++++++++ 8 files changed, 170 insertions(+), 19 deletions(-) rename tests/{document.js => documents.js} (100%) create mode 100644 tests/schemas.js diff --git a/README.md b/README.md index bd18e14..1440d97 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ This is a light weight open source package for use on **server or in browser**. * Field fake value * Field value transformation with getter and setter * Strict and relaxed schemas +* Schema mixins for extending schemas * Document nesting with support for self referencing * Change tracking, data commits and rollbacks * Advanced field validation @@ -107,12 +108,13 @@ Schema represents a configuration object which configures the `Document`. It hol A Schema can also be used as a custom type object. This way you can create a nested data structure by setting a schema instance for a field `type`. When a document is created, each schema in a tree of fields will become an instance of a Document - a tree of documents. -**Schema({fields, fakes strict, validatorOptions, typeOptions})** +**Schema({fields, fakes strict, validatorOptions, typeOptions, mixins})** > A class for defining document structure. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ +| mixins | [] | No | [] | A list of schema instances from which to extend the schema. | fields | Object,Function | Yes | - | An object with fields definition. You should pass a function which returns the definition object in case of self referencing. | strict | Boolean | No | true | A schema type (set to `false` to allow dynamic fields not defined in schema). | validatorOptions | Object | No | validatable.js defaults | Configuration options for the `Validator` class, provided by the [validatable.js](https://github.com/xpepermint/validatablejs), which is used for field validation. @@ -120,11 +122,12 @@ A Schema can also be used as a custom type object. This way you can create a nes ```js new Schema({ + mixins: [animalSchema, catSchema], // schema extensions fields: { // schema fields definition email: { // a field name holding a field definition type: 'String', // a field data type provided by typeable.js - defaultValue: 'John Smith', // a default field value (can be a value of a function) - fakeValue: 'John Smith', // a fake field value (can be a value of a function) + defaultValue: 'John Smith', // a default field value (can be a value of a function) + fakeValue: 'John Smith', // a fake field value (can be a value of a function) validate: [ // field validations provided by validatable.js { // validator recipe validator: 'presence', // validator name diff --git a/dist/schemas.js b/dist/schemas.js index 5ad8cdb..5c3fc3d 100644 --- a/dist/schemas.js +++ b/dist/schemas.js @@ -3,6 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true }); +exports.Schema = undefined; + +var _lodash = require('lodash.merge'); + +var _lodash2 = _interopRequireDefault(_lodash); + +var _typeable = require('typeable'); + +var _utils = require('./utils'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + /* * A class for defining Document structure and properties. */ @@ -15,27 +27,36 @@ class Schema { constructor() { var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - _ref$fields = _ref.fields; + _ref$mixins = _ref.mixins; - let fields = _ref$fields === undefined ? {} : _ref$fields; - var _ref$strict = _ref.strict; - let strict = _ref$strict === undefined ? true : _ref$strict; + let mixins = _ref$mixins === undefined ? [] : _ref$mixins; + var _ref$fields = _ref.fields; + let fields = _ref$fields === undefined ? {} : _ref$fields, + strict = _ref.strict; var _ref$validatorOptions = _ref.validatorOptions; let validatorOptions = _ref$validatorOptions === undefined ? {} : _ref$validatorOptions; var _ref$typeOptions = _ref.typeOptions; let typeOptions = _ref$typeOptions === undefined ? {} : _ref$typeOptions; + Object.defineProperty(this, 'fields', { // document fields - get: () => typeof fields === 'function' ? fields() : fields + get: () => (0, _lodash2.default)(...mixins.map(s => (0, _utils.retrieve)(s.fields)), (0, _utils.retrieve)(fields)), + enumerable: true // required for deep nesting }); + Object.defineProperty(this, 'strict', { // document schema mode - value: strict + get: () => [true].concat(mixins.map(s => s.strict), strict).filter(s => (0, _typeable.isBoolean)(s)).reverse()[0], + enumerable: true // required for deep nesting }); + Object.defineProperty(this, 'validatorOptions', { // options for validatable.js - value: validatorOptions + get: () => (0, _lodash2.default)(...mixins.map(v => v.validatorOptions), validatorOptions), + enumerable: true // required for deep nesting }); + Object.defineProperty(this, 'typeOptions', { // options for typeable.js - value: typeOptions + get: () => (0, _lodash2.default)(...mixins.map(v => v.typeOptions), typeOptions), + enumerable: true // required for deep nesting }); } diff --git a/dist/utils.js b/dist/utils.js index 4f11558..24afe89 100644 --- a/dist/utils.js +++ b/dist/utils.js @@ -1,14 +1,17 @@ -"use strict"; +'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); -var _stringify = require("babel-runtime/core-js/json/stringify"); +var _stringify = require('babel-runtime/core-js/json/stringify'); var _stringify2 = _interopRequireDefault(_stringify); exports.serialize = serialize; +exports.retrieve = retrieve; + +var _typeable = require('typeable'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -18,4 +21,13 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de function serialize(data) { return JSON.parse((0, _stringify2.default)(data)); +} + +/* +* A helper method for retrieving a value from an input which can be +* a value or a function. +*/ + +function retrieve(input) { + return (0, _typeable.isFunction)(input) ? input() : input; } \ No newline at end of file diff --git a/package.json b/package.json index daa6ee7..d165545 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.12.0", + "version": "2.13.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -49,6 +49,7 @@ }, "dependencies": { "lodash.isequal": "4.4.x", + "lodash.merge": "4.6.x", "typeable": "0.12.x", "validatable": "0.14.x" } diff --git a/src/schemas.js b/src/schemas.js index 48b5ef4..f7d88ff 100644 --- a/src/schemas.js +++ b/src/schemas.js @@ -1,3 +1,7 @@ +import merge from 'lodash.merge'; +import {isBoolean} from 'typeable'; +import {retrieve} from './utils'; + /* * A class for defining Document structure and properties. */ @@ -8,18 +12,43 @@ export class Schema { * Class constructor. */ - constructor ({fields={}, strict=true, validatorOptions={}, typeOptions={}}={}) { + constructor ({ + mixins = [], // not a property + fields = {}, + strict, + validatorOptions = {}, + typeOptions = {} + } = {}) { + Object.defineProperty(this, 'fields', { // document fields - get: () => typeof fields === 'function' ? fields() : fields, + get: () => merge( + ...mixins.map((s) => retrieve(s.fields)), + retrieve(fields) + ), + enumerable: true // required for deep nesting }); + Object.defineProperty(this, 'strict', { // document schema mode - value: strict + get: () => ( + [true].concat(mixins.map((s) => s.strict), strict).filter((s) => isBoolean(s)).reverse()[0] + ), + enumerable: true // required for deep nesting }); + Object.defineProperty(this, 'validatorOptions', { // options for validatable.js - value: validatorOptions + get: () => merge( + ...mixins.map((v) => v.validatorOptions), + validatorOptions + ), + enumerable: true // required for deep nesting }); + Object.defineProperty(this, 'typeOptions', { // options for typeable.js - value: typeOptions + get: () => merge( + ...mixins.map((v) => v.typeOptions), + typeOptions + ), + enumerable: true // required for deep nesting }); } diff --git a/src/utils.js b/src/utils.js index 9440b4c..e5506c2 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,3 +1,5 @@ +import {isFunction} from 'typeable'; + /* * Returns a duplicated data object (useful to remove data bindings). */ @@ -5,3 +7,12 @@ export function serialize (data) { return JSON.parse(JSON.stringify(data)); } + +/* +* A helper method for retrieving a value from an input which can be +* a value or a function. +*/ + +export function retrieve (input) { + return isFunction(input) ? input() : input; +} diff --git a/tests/document.js b/tests/documents.js similarity index 100% rename from tests/document.js rename to tests/documents.js diff --git a/tests/schemas.js b/tests/schemas.js new file mode 100644 index 0000000..9199a42 --- /dev/null +++ b/tests/schemas.js @@ -0,0 +1,74 @@ +import test from 'ava'; +import {Schema} from '../dist/index'; + +test('can be extended through mixins', async (t) => { + let animalSchema = new Schema({ + fields: () => ({ + kind: { + type: 'String' + }, + relatives: { + type: [animalSchema] + } + }), + strict: true, + validatorOptions: { + foo: 'foo' + }, + typeOptions: { + foo: 'foo' + } + }); + let dogSchema = new Schema({ + mixins: [ + animalSchema + ], + fields: () => ({ + name: { + type: 'String' + } + }), + strict: false, + validatorOptions: { + bar: 'bar' + }, + typeOptions: { + bar: 'bar' + } + }); + let catSchema = new Schema({ + mixins: [ + dogSchema + ], + fields: () => ({ + dislikes: { + type: [dogSchema] + } + }), + validatorOptions: { + baz: 'baz' + }, + typeOptions: { + baz: 'baz' + } + }); + + let keys = []; + let field = {type: 'String'}; + // fields + keys = Object.keys(catSchema.fields) // cats + t.deepEqual(keys, ['kind', 'relatives', 'name', 'dislikes']); + keys = Object.keys(catSchema.fields.dislikes.type[0].fields) + t.deepEqual(keys, ['kind', 'relatives', 'name']); // dogs + keys = Object.keys(catSchema.fields.dislikes.type[0].fields.relatives.type[0].fields) + t.deepEqual(keys, ['kind', 'relatives']); // animals + // strict + t.is(dogSchema.strict, false); + t.is(catSchema.strict, false); + // validatorOptions + keys = Object.keys(catSchema.validatorOptions) + t.deepEqual(keys, ['foo', 'bar', 'baz']); + // typeOptions + keys = Object.keys(catSchema.typeOptions) + t.deepEqual(keys, ['foo', 'bar', 'baz']); +}); From e58fe2ecbcd5b61aefab401c7cbdd25b0b78097b Mon Sep 17 00:00:00 2001 From: xpeper Date: Wed, 9 Nov 2016 00:55:41 +0100 Subject: [PATCH 096/219] readme --- README.md | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 1440d97..737c1b9 100644 --- a/README.md +++ b/README.md @@ -245,6 +245,10 @@ doc.applyErrors([ |--------|------|----------|---------|------------ | keys | Array | Yes | - | Path to a field (e.g. `['book', 0, 'title']`). +**Document.prototype.fake()**: Document + +> Sets each document field to its fake value if a fake value generator is registered, otherwise the default value is used. + **Document.prototype.hasErrors()**: Boolean > Returns `true` when no errors exist (inverse of `isValid()`). Make sure that you call the `validate()` method first. @@ -281,10 +285,6 @@ doc.applyErrors([ > Sets each document field to its default value. -**Document.prototype.fake()**: Document - -> Sets each document field to its fake value if a fake value generator is registered, otherwise the default value is used. - **Document.prototype.rollback()**: Document > Sets each document field to its initial value (last committed value). This is how you can discharge document changes. diff --git a/package.json b/package.json index d165545..edf06ea 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.13.0", + "version": "2.13.1", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { From 85f85aac7b6c43ea3db04bfa9feb87d161761ca1 Mon Sep 17 00:00:00 2001 From: xpeper Date: Wed, 9 Nov 2016 01:02:44 +0100 Subject: [PATCH 097/219] readme --- README.md | 12 ++++++++---- package.json | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 737c1b9..6c411e3 100644 --- a/README.md +++ b/README.md @@ -334,10 +334,6 @@ user.$name.isChanged(); // calling field instance method > A reference to a Document instance on which the field is defined. -**Field.prototype.name**: String - -> Field name. - **Field.prototype.clear()**: Field > Sets field and related sub fields to `null`. @@ -354,6 +350,10 @@ user.$name.isChanged(); // calling field instance method > Returns `true` when the provided `value` represents an object that looks the same. +**Field.prototype.fake()**: Field + +> Sets field to a generated fake value. + **Field.prototype.fakeValue**: Any > A getter which returns a fake field value. @@ -378,6 +378,10 @@ user.$name.isChanged(); // calling field instance method > Clears the `errors` field on all fields (the reverse of `validate()`). +**Field.prototype.name**: String + +> A getter which returns a name of a field. + **Field.prototype.reset()**: Field > Sets the field to its default value. diff --git a/package.json b/package.json index edf06ea..284b606 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.13.1", + "version": "2.13.2", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { From 4368dd1a54af6931ed22904fe7b7db6a208cd18f Mon Sep 17 00:00:00 2001 From: xpeper Date: Wed, 9 Nov 2016 01:08:07 +0100 Subject: [PATCH 098/219] readme --- README.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6c411e3..6e7438e 100644 --- a/README.md +++ b/README.md @@ -108,7 +108,7 @@ Schema represents a configuration object which configures the `Document`. It hol A Schema can also be used as a custom type object. This way you can create a nested data structure by setting a schema instance for a field `type`. When a document is created, each schema in a tree of fields will become an instance of a Document - a tree of documents. -**Schema({fields, fakes strict, validatorOptions, typeOptions, mixins})** +**Schema({mixins, fields, fakes strict, validatorOptions, typeOptions})** > A class for defining document structure. diff --git a/package.json b/package.json index 284b606..25fca8c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.13.2", + "version": "2.13.3", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { From b001d285acd84c94af032098353182c7ceec247e Mon Sep 17 00:00:00 2001 From: xpeper Date: Wed, 9 Nov 2016 01:14:51 +0100 Subject: [PATCH 099/219] exposing useful utils --- dist/documents.js | 12 ++++-------- dist/fields.js | 6 +----- dist/schemas.js | 12 +++--------- dist/utils.js | 23 ++++++++++++++++++++++- package.json | 2 +- src/documents.js | 10 ++++++---- src/fields.js | 8 +++++--- src/schemas.js | 6 ++++-- src/utils.js | 14 ++++++++++++++ 9 files changed, 60 insertions(+), 33 deletions(-) diff --git a/dist/documents.js b/dist/documents.js index f29eb4d..43423b8 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -23,20 +23,16 @@ var _assign2 = _interopRequireDefault(_assign); var _typeable = require('typeable'); -var _lodash = require('lodash.isequal'); - -var _lodash2 = _interopRequireDefault(_lodash); - var _validatable = require('validatable'); -var _utils = require('./utils'); - var _schemas = require('./schemas'); var _fields = require('./fields'); var _errors = require('./errors'); +var _utils = require('./utils'); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /* @@ -246,7 +242,7 @@ class Document { } /* - * Sets each document field to its fake value if a fake value generator + * Sets each document field to its fake value if a fake value generator * is registered, otherwise the default value is used. */ @@ -312,7 +308,7 @@ class Document { */ equals(value) { - return (0, _lodash2.default)((0, _utils.serialize)(this), (0, _utils.serialize)(value)); + return (0, _utils.isEqual)((0, _utils.serialize)(this), (0, _utils.serialize)(value)); } /* diff --git a/dist/fields.js b/dist/fields.js index 9e6d4ba..9310bf1 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -15,10 +15,6 @@ var _assign2 = _interopRequireDefault(_assign); var _typeable = require('typeable'); -var _lodash = require('lodash.isequal'); - -var _lodash2 = _interopRequireDefault(_lodash); - var _utils = require('./utils'); var _schemas = require('./schemas'); @@ -263,7 +259,7 @@ class Field { */ equals(data) { - return (0, _lodash2.default)((0, _utils.serialize)(this.value), (0, _utils.serialize)(data)); + return (0, _utils.isEqual)((0, _utils.serialize)(this.value), (0, _utils.serialize)(data)); } /* diff --git a/dist/schemas.js b/dist/schemas.js index 5c3fc3d..0e061a3 100644 --- a/dist/schemas.js +++ b/dist/schemas.js @@ -5,16 +5,10 @@ Object.defineProperty(exports, "__esModule", { }); exports.Schema = undefined; -var _lodash = require('lodash.merge'); - -var _lodash2 = _interopRequireDefault(_lodash); - var _typeable = require('typeable'); var _utils = require('./utils'); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - /* * A class for defining Document structure and properties. */ @@ -40,7 +34,7 @@ class Schema { Object.defineProperty(this, 'fields', { // document fields - get: () => (0, _lodash2.default)(...mixins.map(s => (0, _utils.retrieve)(s.fields)), (0, _utils.retrieve)(fields)), + get: () => (0, _utils.merge)(...mixins.map(s => (0, _utils.retrieve)(s.fields)), (0, _utils.retrieve)(fields)), enumerable: true // required for deep nesting }); @@ -50,12 +44,12 @@ class Schema { }); Object.defineProperty(this, 'validatorOptions', { // options for validatable.js - get: () => (0, _lodash2.default)(...mixins.map(v => v.validatorOptions), validatorOptions), + get: () => (0, _utils.merge)(...mixins.map(v => v.validatorOptions), validatorOptions), enumerable: true // required for deep nesting }); Object.defineProperty(this, 'typeOptions', { // options for typeable.js - get: () => (0, _lodash2.default)(...mixins.map(v => v.typeOptions), typeOptions), + get: () => (0, _utils.merge)(...mixins.map(v => v.typeOptions), typeOptions), enumerable: true // required for deep nesting }); } diff --git a/dist/utils.js b/dist/utils.js index 24afe89..0f7b215 100644 --- a/dist/utils.js +++ b/dist/utils.js @@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); +exports.isEqual = exports.merge = undefined; var _stringify = require('babel-runtime/core-js/json/stringify'); @@ -13,6 +14,14 @@ exports.retrieve = retrieve; var _typeable = require('typeable'); +var _lodash = require('lodash.merge'); + +var _lodash2 = _interopRequireDefault(_lodash); + +var _lodash3 = require('lodash.isequal'); + +var _lodash4 = _interopRequireDefault(_lodash3); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /* @@ -30,4 +39,16 @@ function serialize(data) { function retrieve(input) { return (0, _typeable.isFunction)(input) ? input() : input; -} \ No newline at end of file +} + +/* +* Deeply combines multiple values. +*/ + +exports.merge = _lodash2.default; + +/* +* Deeply checks if two objects are equal. +*/ + +exports.isEqual = _lodash4.default; \ No newline at end of file diff --git a/package.json b/package.json index 25fca8c..8692ee1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.13.3", + "version": "2.14.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/documents.js b/src/documents.js index 7decd17..9f71267 100644 --- a/src/documents.js +++ b/src/documents.js @@ -6,12 +6,14 @@ import { isAbsent, isUndefined } from 'typeable'; -import isEqual from 'lodash.isequal'; import {Validator} from 'validatable'; -import {serialize} from './utils'; import {Schema} from './schemas'; import {Field} from './fields'; import {ValidationError} from './errors'; +import { + serialize, + isEqual +} from './utils'; /* * The core schema-based object class. @@ -207,7 +209,7 @@ export class Document { } /* - * Sets each document field to its fake value if a fake value generator + * Sets each document field to its fake value if a fake value generator * is registered, otherwise the default value is used. */ @@ -270,7 +272,7 @@ export class Document { equals (value) { return isEqual( - serialize(this), + serialize(this), serialize(value) ); } diff --git a/src/fields.js b/src/fields.js index 90c3630..5206f67 100644 --- a/src/fields.js +++ b/src/fields.js @@ -4,8 +4,10 @@ import { toArray, isFunction } from 'typeable'; -import isEqual from 'lodash.isequal'; -import {serialize} from './utils'; +import { + serialize, + isEqual +} from './utils'; import {Schema} from './schemas'; import {ValidatorError} from './errors'; @@ -234,7 +236,7 @@ export class Field { equals (data) { return isEqual( - serialize(this.value), + serialize(this.value), serialize(data) ); } diff --git a/src/schemas.js b/src/schemas.js index f7d88ff..1596dce 100644 --- a/src/schemas.js +++ b/src/schemas.js @@ -1,6 +1,8 @@ -import merge from 'lodash.merge'; import {isBoolean} from 'typeable'; -import {retrieve} from './utils'; +import { + retrieve, + merge +} from './utils'; /* * A class for defining Document structure and properties. diff --git a/src/utils.js b/src/utils.js index e5506c2..a2ad620 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,4 +1,6 @@ import {isFunction} from 'typeable'; +import merge from 'lodash.merge'; +import isEqual from 'lodash.isequal'; /* * Returns a duplicated data object (useful to remove data bindings). @@ -16,3 +18,15 @@ export function serialize (data) { export function retrieve (input) { return isFunction(input) ? input() : input; } + +/* +* Deeply combines multiple values. +*/ + +export {merge}; + +/* +* Deeply checks if two objects are equal. +*/ + +export {isEqual}; From 54b8361f838cb3a049b97dc6e7424a31234adbed Mon Sep 17 00:00:00 2001 From: xpeper Date: Wed, 9 Nov 2016 01:18:46 +0100 Subject: [PATCH 100/219] test fix --- package.json | 2 +- tests/schemas.js | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 8692ee1..420220c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.14.0", + "version": "2.14.1", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/tests/schemas.js b/tests/schemas.js index 9199a42..7f6749e 100644 --- a/tests/schemas.js +++ b/tests/schemas.js @@ -54,7 +54,6 @@ test('can be extended through mixins', async (t) => { }); let keys = []; - let field = {type: 'String'}; // fields keys = Object.keys(catSchema.fields) // cats t.deepEqual(keys, ['kind', 'relatives', 'name', 'dislikes']); From 8a79a3ec79ef4405d37a9567f8e76e0382f1a12e Mon Sep 17 00:00:00 2001 From: xpeper Date: Thu, 10 Nov 2016 00:23:59 +0100 Subject: [PATCH 101/219] dependencies --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 420220c..042faad 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.14.1", + "version": "2.15.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -50,7 +50,7 @@ "dependencies": { "lodash.isequal": "4.4.x", "lodash.merge": "4.6.x", - "typeable": "0.12.x", - "validatable": "0.14.x" + "typeable": "1.1.x", + "validatable": "1.1.x" } } From 8aa678b5c2b5c8fdbafe5689cbeef7e4d5fb35ed Mon Sep 17 00:00:00 2001 From: xpeper Date: Thu, 10 Nov 2016 04:14:42 +0100 Subject: [PATCH 102/219] dependencies, api shift --- README.md | 46 +++++++++++----------------------------------- dist/errors.js | 25 ++----------------------- dist/fields.js | 17 +---------------- package.json | 6 +++--- src/errors.js | 17 ----------------- src/fields.js | 17 +---------------- tests/documents.js | 28 +++++++++++++--------------- tests/errors.js | 17 ----------------- tests/index.js | 1 - 9 files changed, 31 insertions(+), 143 deletions(-) delete mode 100644 tests/errors.js diff --git a/README.md b/README.md index 6e7438e..f53760a 100644 --- a/README.md +++ b/README.md @@ -188,9 +188,9 @@ doc.applyErrors([ path: ['name'], // field path errors: [ { - name: 'ValidatorError', // error class name (ValidatorError or Error) validator: 'presence', // validator name - message: 'is required' // validator message + message: 'is required', // validator message + code: 422 // error code } ] }, @@ -198,9 +198,9 @@ doc.applyErrors([ path: ['newBook', 'title'], errors: [ { - name: 'ValidatorError', validator: 'absence', - message: 'must be blank' + message: 'must be blank', + code: 422 } ] }, @@ -208,9 +208,9 @@ doc.applyErrors([ path: ['newBooks', 1, 'title'], errors: [ { - name: 'ValidatorError', validator: 'presence', - message: 'is required' + message: 'is required', + code: 422 } ] } @@ -227,7 +227,7 @@ doc.applyErrors([ **Document.prototype.collectErrors()**: Array -> Returns a list of errors for all the fields (e.g. [{path: ['name'], errors: [ValidatorError(), ...]}]). +> Returns a list of errors for all the fields ({path, errors}[]). **Document.prototype.commit()**: Document @@ -295,18 +295,18 @@ doc.applyErrors([ **Document.prototype.validate({quiet})**: Promise(Document) -> Validates document fields and throws a ValidationError error if not all fields are valid unless the `quiet` is set to `true`. +> Validates document fields and throws an error if not all fields are valid unless the `quiet` is set to `true`. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ -| quiet | Boolean | No | false | When set to `true`, a ValidationError is thrown. +| quiet | Boolean | No | false | When set to `true`, a validation error is thrown. ```js try { - await doc.validate(); // throws a ValidationError when fields are invalid + await doc.validate(); // throws a validation error when fields are invalid } catch (e) { - // `e` is an instance of ValidationError, which holds errors for all invalid fields (including those deeply nested) + // `e` is an error, which holds errors for all invalid fields (including those deeply nested) } ``` @@ -398,30 +398,6 @@ user.$name.isChanged(); // calling field instance method > A getter and setter for the value of the field. -### ValidationError - -**ValidationError(message, code)** - -> A validation error class which is triggered by method `validate` when not all fields are valid. - -| Option | Type | Required | Default | Description -|--------|------|----------|---------|------------ -| paths | String[][] | No | [] | A list of all invalid document paths (e.g. [['friends', 1, 'name'], ...]) -| message | String | No | Validation failed | General error message. -| code | Number | No | 422 | Error code. - -### ValidatorError - -**ValidatorError(validator, message, code)** - -> A validator error class, provided by the `validatable.js`, which holds information about the validators which do not approve a value that has just been validated. - -| Option | Type | Required | Default | Description -|--------|------|----------|---------|------------ -| validator | String | Yes | - | Validator name. -| message | String | No | null | Validation error message. -| code | Integer | No | 422 | Error status code. - ## License (MIT) ``` diff --git a/dist/errors.js b/dist/errors.js index 84ac713..5d1abfb 100644 --- a/dist/errors.js +++ b/dist/errors.js @@ -3,9 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.ValidatorError = exports.ValidationError = undefined; - -var _validatable = require('validatable'); +exports.ValidationError = undefined; var _typeable = require('typeable'); @@ -44,24 +42,5 @@ class ValidationError extends Error { }); } - /* - * Returns error data. - */ - - toObject() { - let name = this.name, - message = this.message, - paths = this.paths, - code = this.code; - - return { name, message, paths, code }; - } } - -exports.ValidationError = ValidationError; /* - * A validator error class, provided by the `validatable.js`, which holds - * information about the validators which do not approve a value that has - * just been validated. - */ - -exports.ValidatorError = _validatable.ValidatorError; \ No newline at end of file +exports.ValidationError = ValidationError; \ No newline at end of file diff --git a/dist/fields.js b/dist/fields.js index 9310bf1..7ab3899 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -155,22 +155,7 @@ class Field { */ set errors(errors) { - this._errors = errors.map(e => this._createError(e)); - } - - /* - * Returns the last error of the field. - */ - - _createError(data) { - switch (data.name) { - case 'ValidatorError': - return new _errors.ValidatorError(data.validator, data.message, data.code); - case 'Error': - return new Error(data.message); - } - - throw new Error(`Unknown document field error`); + this._errors = errors; } /* diff --git a/package.json b/package.json index 042faad..679565b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.15.0", + "version": "2.16.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -50,7 +50,7 @@ "dependencies": { "lodash.isequal": "4.4.x", "lodash.merge": "4.6.x", - "typeable": "1.1.x", - "validatable": "1.1.x" + "typeable": "0.15.x", + "validatable": "0.16.x" } } diff --git a/src/errors.js b/src/errors.js index d66f265..4e9f179 100644 --- a/src/errors.js +++ b/src/errors.js @@ -1,4 +1,3 @@ -import {ValidatorError} from 'validatable'; import {toArray} from 'typeable'; /* @@ -32,20 +31,4 @@ export class ValidationError extends Error { }); } - /* - * Returns error data. - */ - - toObject () { - let {name, message, paths, code} = this; - return {name, message, paths, code}; - } } - -/* -* A validator error class, provided by the `validatable.js`, which holds -* information about the validators which do not approve a value that has -* just been validated. -*/ - -export {ValidatorError}; diff --git a/src/fields.js b/src/fields.js index 5206f67..20664fb 100644 --- a/src/fields.js +++ b/src/fields.js @@ -131,22 +131,7 @@ export class Field { */ set errors (errors) { - this._errors = errors.map((e) => this._createError(e)); - } - - /* - * Returns the last error of the field. - */ - - _createError (data) { - switch (data.name) { - case 'ValidatorError': - return new ValidatorError(data.validator, data.message, data.code); - case 'Error': - return new Error(data.message); - } - - throw new Error(`Unknown document field error`); + this._errors = errors; } /* diff --git a/tests/documents.js b/tests/documents.js index 8e68de4..613d42d 100644 --- a/tests/documents.js +++ b/tests/documents.js @@ -3,8 +3,7 @@ import { Document, Schema, Field, - ValidationError, - ValidatorError + ValidationError } from '../dist'; test('field value should be converted to the specified type', (t) => { @@ -990,8 +989,8 @@ test('method `validate` should validate all fields and throw an error', async (t oldBooks: [null, {}] }; let user = new Document(userSchema, data); - let validatorError0 = (new ValidatorError('presence', 'is required')).toObject(); - let validatorError1 = (new ValidatorError('arrayLength', 'is too short')).toObject(); + let validatorError0 = {validator: 'presence', message: 'is required', code: 422}; + let validatorError1 = {validator: 'arrayLength', message: 'is too short', code: 422}; // throws an error t.throws(user.validate(), ValidationError); @@ -1011,15 +1010,15 @@ test('method `validate` should validate all fields and throw an error', async (t ['oldBooks', 1, 'title'] ]); // errors are populated - t.deepEqual(user.$name.errors[0].toObject(), validatorError0); - t.deepEqual(user.$newBook.errors[0].toObject(), validatorError0); - t.deepEqual(user.$newBooks.errors[0].toObject(), validatorError0); + t.deepEqual(user.$name.errors[0], validatorError0); + t.deepEqual(user.$newBook.errors[0], validatorError0); + t.deepEqual(user.$newBooks.errors[0], validatorError0); t.deepEqual(user.$oldBook.errors.length, 0); - t.deepEqual(user.oldBook.$title.errors[0].toObject(), validatorError0); + t.deepEqual(user.oldBook.$title.errors[0], validatorError0); t.deepEqual(user.oldBook.$year.errors.length, 0); - t.deepEqual(user.$oldBooks.errors[0].toObject(), validatorError1); + t.deepEqual(user.$oldBooks.errors[0], validatorError1); t.deepEqual(user.oldBooks[0], null); - t.deepEqual(user.oldBooks[1].$title.errors[0].toObject(), validatorError0); + t.deepEqual(user.oldBooks[1].$title.errors[0], validatorError0); t.deepEqual(user.oldBooks[1].$year.errors.length, 0); t.deepEqual(user.$prevBooks.errors.length, 0); }); @@ -1178,13 +1177,12 @@ test('method `applyErrors` should set field `errors` property', async (t) => { newBooks: [{}, {}] }; let user = new Document(userSchema, data); - let validatorData = {name: 'ValidatorError', validator: 'presence', message: 'is required'}; - let validatorError = new ValidatorError(validatorData.validator, validatorData.message); + let validatorError = {validator: 'presence', message: 'is required', code: 422}; user.applyErrors([ - {path: ['name'], errors: [validatorData]}, - {path: ['newBook', 'title'], errors: [validatorData]}, - {path: ['newBooks', 1, 'title'], errors: [validatorData]} + {path: ['name'], errors: [validatorError]}, + {path: ['newBook', 'title'], errors: [validatorError]}, + {path: ['newBooks', 1, 'title'], errors: [validatorError]} ]); t.deepEqual(user.$name.errors, [validatorError]); diff --git a/tests/errors.js b/tests/errors.js deleted file mode 100644 index 5594a7b..0000000 --- a/tests/errors.js +++ /dev/null @@ -1,17 +0,0 @@ -import test from 'ava'; -import {ValidationError} from '../dist/index'; - -test('ValidationError should not expose properties', async (t) => { - let e = new ValidationError(); - t.deepEqual(Object.keys(e), []); -}); - -test('ValidationError.toObject should return error data', async (t) => { - let e = new ValidationError(['foo'], 'bar'); - t.deepEqual(e.toObject(), { - name: 'ValidationError', - message: 'bar', - paths: ['foo'], - code: 422 - }); -}); diff --git a/tests/index.js b/tests/index.js index 74e698f..b7ed14c 100644 --- a/tests/index.js +++ b/tests/index.js @@ -4,6 +4,5 @@ import * as objectschema from '../dist'; test('exposed content', (t) => { t.is(!!objectschema.Schema, true); t.is(!!objectschema.Document, true); - t.is(!!objectschema.ValidatorError, true); t.is(!!objectschema.ValidationError, true); }); From 8a87824596161a1af78420737508f2d40d13ba80 Mon Sep 17 00:00:00 2001 From: xpeper Date: Thu, 10 Nov 2016 16:32:25 +0100 Subject: [PATCH 103/219] readme --- README.md | 7 +++++++ package.json | 10 +++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f53760a..aa47b6d 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,13 @@ Run the command below to install the package. $ npm install --save objectschema ``` +This package is targeting `es2015`. If you plan to use it in a browser, you need to transpile it with [Babel](https://babeljs.io) or similar tool. + +To support browsers `>= IE9` you need to +* use the [preset-es2015](https://babeljs.io/docs/plugins/preset-es2015/) preset, +* include [Babel polyfill](https://babeljs.io/docs/usage/polyfill), +* use plugins [syntax-async-functions](https://babeljs.io/docs/plugins/syntax-async-functions), [transform-regenerator](https://babeljs.io/docs/plugins/transform-regenerator/) and [transform-object-assign](https://www.npmjs.com/package/babel-plugin-transform-object-assign). + ## Example ```js diff --git a/package.json b/package.json index 679565b..57599b3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.16.0", + "version": "2.17.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -44,13 +44,13 @@ "devDependencies": { "ava": "0.16.x", "babel-cli": "6.18.x", - "babel-plugin-transform-runtime": "6.15.x", - "babel-preset-node5": "11.1.x" + "babel-plugin-transform-object-assign": "6.8.x", + "babel-preset-es2015": "6.18.x" }, "dependencies": { "lodash.isequal": "4.4.x", "lodash.merge": "4.6.x", - "typeable": "0.15.x", - "validatable": "0.16.x" + "typeable": "0.16.x", + "validatable": "0.18.x" } } From 401a8d16e04765f5d0aa3a342b24cd4028bc9699 Mon Sep 17 00:00:00 2001 From: xpeper Date: Thu, 10 Nov 2016 16:58:24 +0100 Subject: [PATCH 104/219] compatibility, dependencies --- .babelrc | 4 +- dist/documents.js | 719 +++++++++++++++++++++++++++------------------ dist/errors.js | 46 --- dist/fields.js | 542 ++++++++++++++++++++++------------ dist/index.js | 8 +- dist/schemas.js | 112 ++++--- package.json | 5 +- src/documents.js | 12 +- src/errors.js | 34 --- src/fields.js | 1 - src/index.js | 8 +- tests/documents.js | 7 +- tests/index.js | 1 - 13 files changed, 869 insertions(+), 630 deletions(-) delete mode 100644 dist/errors.js delete mode 100644 src/errors.js diff --git a/.babelrc b/.babelrc index 62073ca..9bfdfb3 100644 --- a/.babelrc +++ b/.babelrc @@ -1,8 +1,10 @@ { "presets": [ - "node5" + "es2015" ], "plugins": [ + "transform-async-to-generator", + "syntax-async-functions", "transform-runtime" ] } diff --git a/dist/documents.js b/dist/documents.js index 43423b8..9e517e4 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -5,6 +5,18 @@ Object.defineProperty(exports, "__esModule", { }); exports.Document = undefined; +var _getIterator2 = require('babel-runtime/core-js/get-iterator'); + +var _getIterator3 = _interopRequireDefault(_getIterator2); + +var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray'); + +var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); + +var _regenerator = require('babel-runtime/regenerator'); + +var _regenerator2 = _interopRequireDefault(_regenerator); + var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); @@ -21,6 +33,14 @@ var _assign = require('babel-runtime/core-js/object/assign'); var _assign2 = _interopRequireDefault(_assign); +var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +var _createClass2 = require('babel-runtime/helpers/createClass'); + +var _createClass3 = _interopRequireDefault(_createClass2); + var _typeable = require('typeable'); var _validatable = require('validatable'); @@ -29,8 +49,6 @@ var _schemas = require('./schemas'); var _fields = require('./fields'); -var _errors = require('./errors'); - var _utils = require('./utils'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -39,15 +57,18 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de * The core schema-based object class. */ -class Document { +var Document = exports.Document = function () { /* * Class constructor. */ - constructor(schema) { - let data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - let parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + function Document(schema) { + var _this = this; + + var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + (0, _classCallCheck3.default)(this, Document); Object.defineProperty(this, '$schema', { // schema instance value: schema @@ -56,7 +77,9 @@ class Document { value: parent }); Object.defineProperty(this, '$root', { // root document instance - get: () => this._getRootDocument() + get: function get() { + return _this._getRootDocument(); + } }); Object.defineProperty(this, '$validator', { // validatable.js instance value: this._createValidator() @@ -74,382 +97,502 @@ class Document { * Loops up on the tree and returns the first document in the tree. */ - _getRootDocument() { - let root = this; - do { - if (root.$parent) { - root = root.$parent; - } else { - return root; - } - } while (true); - } - - /* - * Returns a new instance of validator. - */ - - _createValidator() { - return new _validatable.Validator((0, _assign2.default)({}, this.$schema.validatorOptions, { context: this })); - } - - /* - * Creates a new Field instance. - */ + (0, _createClass3.default)(Document, [{ + key: '_getRootDocument', + value: function _getRootDocument() { + var root = this; + do { + if (root.$parent) { + root = root.$parent; + } else { + return root; + } + } while (true); + } - _createField(name) { - return new _fields.Field(this, name); - } + /* + * Returns a new instance of validator. + */ - /* - * Creates a new sub-document instance (a nested document). - */ + }, { + key: '_createValidator', + value: function _createValidator() { + return new _validatable.Validator((0, _assign2.default)({}, this.$schema.validatorOptions, { context: this })); + } - _createRelative(schema) { - let data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + /* + * Creates a new Field instance. + */ - return new this.constructor(schema, data, this); - } + }, { + key: '_createField', + value: function _createField(name) { + return new _fields.Field(this, name); + } - /* - * Creates a new ValidationError instance. - */ + /* + * Creates a new sub-document instance (a nested document). + */ - _createValidationError(paths) { - return new _errors.ValidationError(paths); - } + }, { + key: '_createRelative', + value: function _createRelative(schema) { + var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - /* - * Defines class fields from schema. - */ + return new this.constructor(schema, data, this); + } - _defineFields() { - let fields = this.$schema.fields; + /* + * Creates a new validation error instance. + */ + }, { + key: '_createValidationError', + value: function _createValidationError(paths) { + var error = new Error('Validation failed'); + error.code = 422; + error.paths = paths; - for (let name in fields) { - this._defineField(name); + return error; } - } - /* - * Defines a schema field by name. - */ - - _defineField(name) { - let field = this._createField(name); - - (0, _defineProperty2.default)(this, name, { // field definition - get: () => field.value, - set: v => field.value = v, - enumerable: true, - configurable: true - }); + /* + * Defines class fields from schema. + */ - Object.defineProperty(this, `$${ name }`, { // field class instance definition - value: field - }); - } + }, { + key: '_defineFields', + value: function _defineFields() { + var fields = this.$schema.fields; - /* - * Returns a value at path. - */ - getPath() { - for (var _len = arguments.length, keys = Array(_len), _key = 0; _key < _len; _key++) { - keys[_key] = arguments[_key]; + for (var name in fields) { + this._defineField(name); + } } - if ((0, _typeable.isArray)(keys[0])) { - keys = keys[0]; - } + /* + * Defines a schema field by name. + */ + + }, { + key: '_defineField', + value: function _defineField(name) { + var field = this._createField(name); + + (0, _defineProperty2.default)(this, name, { // field definition + get: function get() { + return field.value; + }, + set: function set(v) { + return field.value = v; + }, + enumerable: true, + configurable: true + }); - return keys.reduce((a, b) => (a || {})[b], this); - } + Object.defineProperty(this, '$' + name, { // field class instance definition + value: field + }); + } - /* - * Returns `true` if field at path exists. - */ + /* + * Returns a value at path. + */ - hasPath() { - return this.getPath(...arguments) !== undefined; - } + }, { + key: 'getPath', + value: function getPath() { + for (var _len = arguments.length, keys = Array(_len), _key = 0; _key < _len; _key++) { + keys[_key] = arguments[_key]; + } - /* - * Sets field values from the provided by data object. - */ + if ((0, _typeable.isArray)(keys[0])) { + keys = keys[0]; + } - populate() { - let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return keys.reduce(function (a, b) { + return (a || {})[b]; + }, this); + } - return this._populateFields(data); - } + /* + * Returns `true` if field at path exists. + */ - /* - * Sets field values from the provided by data object. - */ + }, { + key: 'hasPath', + value: function hasPath() { + return this.getPath.apply(this, arguments) !== undefined; + } - _populateFields() { - let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + /* + * Sets field values from the provided by data object. + */ - data = (0, _utils.serialize)(data); + }, { + key: 'populate', + value: function populate() { + var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - for (let name in data) { - this._populateField(name, data[name]); + return this._populateFields(data); } - return this; - } + /* + * Sets field values from the provided by data object. + */ - /* - * Sets a value of a field by name. - */ + }, { + key: '_populateFields', + value: function _populateFields() { + var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - _populateField(name, value) { - if (!this.$schema.strict) { - this[name] = value; - } else { - let names = (0, _keys2.default)(this.$schema.fields); - let exists = names.indexOf(name) > -1; + data = (0, _utils.serialize)(data); - if (exists) { - this[name] = value; + for (var name in data) { + this._populateField(name, data[name]); } - } - } - /* - * Converts this class into serialized data object. - */ + return this; + } - toObject() { - return (0, _utils.serialize)(this); - } + /* + * Sets a value of a field by name. + */ - /* - * Sets each document field to its default value. - */ + }, { + key: '_populateField', + value: function _populateField(name, value) { + if (!this.$schema.strict) { + this[name] = value; + } else { + var names = (0, _keys2.default)(this.$schema.fields); + var exists = names.indexOf(name) > -1; - reset() { - let fields = this.$schema.fields; + if (exists) { + this[name] = value; + } + } + } + /* + * Converts this class into serialized data object. + */ - for (let name in fields) { - this[`$${ name }`].reset(); + }, { + key: 'toObject', + value: function toObject() { + return (0, _utils.serialize)(this); } - return this; - } + /* + * Sets each document field to its default value. + */ - /* - * Sets each document field to its fake value if a fake value generator - * is registered, otherwise the default value is used. - */ + }, { + key: 'reset', + value: function reset() { + var fields = this.$schema.fields; - fake() { - let fields = this.$schema.fields; + for (var name in fields) { + this['$' + name].reset(); + } - for (let name in fields) { - this[`$${ name }`].fake(); + return this; } - return this; - } + /* + * Sets each document field to its fake value if a fake value generator + * is registered, otherwise the default value is used. + */ - /* - * Removes all fileds values by setting them to `null`. - */ + }, { + key: 'fake', + value: function fake() { + var fields = this.$schema.fields; - clear() { - let fields = this.$schema.fields; + for (var name in fields) { + this['$' + name].fake(); + } - for (let name in fields) { - this[`$${ name }`].clear(); + return this; } - return this; - } + /* + * Removes all fileds values by setting them to `null`. + */ - /* - * Sets initial value of each document field to the current value of a field. - */ + }, { + key: 'clear', + value: function clear() { + var fields = this.$schema.fields; - commit() { - let fields = this.$schema.fields; + for (var name in fields) { + this['$' + name].clear(); + } - for (let name in fields) { - this[`$${ name }`].commit(); + return this; } - return this; - } + /* + * Sets initial value of each document field to the current value of a field. + */ - /* - * Sets each document field to its initial value (value before last commit). - */ + }, { + key: 'commit', + value: function commit() { + var fields = this.$schema.fields; - rollback() { - let fields = this.$schema.fields; + for (var name in fields) { + this['$' + name].commit(); + } - for (let name in fields) { - this[`$${ name }`].rollback(); + return this; } - return this; - } - - /* - * Returns `true` when the `value` represents an object with the - * same field values as the original document. - */ - - equals(value) { - return (0, _utils.isEqual)((0, _utils.serialize)(this), (0, _utils.serialize)(value)); - } + /* + * Sets each document field to its initial value (value before last commit). + */ - /* - * Returns a new Document instance which is the exact copy of the original. - */ + }, { + key: 'rollback', + value: function rollback() { + var fields = this.$schema.fields; - clone() { - return new this.constructor(this.$schema, this.toObject()); - } - /* - * Returns a `true` if at least one field has been changed. - */ + for (var name in fields) { + this['$' + name].rollback(); + } - isChanged() { - return (0, _keys2.default)(this.$schema.fields).some(name => { - return this[`$${ name }`].isChanged(); - }); - } + return this; + } - /* - * Validates fields and returns errors. - */ + /* + * Returns `true` when the `value` represents an object with the + * same field values as the original document. + */ - validate() { - var _this = this, - _arguments = arguments; + }, { + key: 'equals', + value: function equals(value) { + return (0, _utils.isEqual)((0, _utils.serialize)(this), (0, _utils.serialize)(value)); + } - return (0, _asyncToGenerator3.default)(function* () { - var _ref = _arguments.length > 0 && _arguments[0] !== undefined ? _arguments[0] : {}, - _ref$quiet = _ref.quiet; + /* + * Returns a new Document instance which is the exact copy of the original. + */ - let quiet = _ref$quiet === undefined ? false : _ref$quiet; - let fields = _this.$schema.fields; + }, { + key: 'clone', + value: function clone() { + return new this.constructor(this.$schema, this.toObject()); + } + /* + * Returns a `true` if at least one field has been changed. + */ - for (let path in fields) { - yield _this[`$${ path }`].validate(); - } + }, { + key: 'isChanged', + value: function isChanged() { + var _this2 = this; - let paths = _this.collectErrors().map(function (e) { - return e.path; + return (0, _keys2.default)(this.$schema.fields).some(function (name) { + return _this2['$' + name].isChanged(); }); - if (!quiet && paths.length > 0) { - let error = _this._createValidationError(paths); - throw error; - } + } - return _this; - })(); - } + /* + * Validates fields and returns errors. + */ + + }, { + key: 'validate', + value: function () { + var _ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee() { + var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + _ref2$quiet = _ref2.quiet, + quiet = _ref2$quiet === undefined ? false : _ref2$quiet; + + var fields, path, paths; + return _regenerator2.default.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + fields = this.$schema.fields; + _context.t0 = _regenerator2.default.keys(fields); + + case 2: + if ((_context.t1 = _context.t0()).done) { + _context.next = 8; + break; + } + + path = _context.t1.value; + _context.next = 6; + return this['$' + path].validate(); + + case 6: + _context.next = 2; + break; + + case 8: + paths = this.collectErrors().map(function (e) { + return e.path; + }); + + if (!(!quiet && paths.length > 0)) { + _context.next = 11; + break; + } + + throw this._createValidationError(paths); + + case 11: + return _context.abrupt('return', this); + + case 12: + case 'end': + return _context.stop(); + } + } + }, _callee, this); + })); - /* - * Validates fields and returns errors. - */ + function validate(_x6) { + return _ref.apply(this, arguments); + } - invalidate() { - let fields = this.$schema.fields; + return validate; + }() + /* + * Validates fields and returns errors. + */ - for (let path in fields) { - this[`$${ path }`].invalidate(); - } + }, { + key: 'invalidate', + value: function invalidate() { + var fields = this.$schema.fields; - return this; - } - /* - * Returns `true` when all document fields are valid (inverse of `hasErrors`). - */ + for (var path in fields) { + this['$' + path].invalidate(); + } - isValid() { - return !this.hasErrors(); - } + return this; + } - /* - * Returns `true` when errors exist (inverse of `isValid`). - */ + /* + * Returns `true` when all document fields are valid (inverse of `hasErrors`). + */ - hasErrors() { - return this.collectErrors().length > 0; - } + }, { + key: 'isValid', + value: function isValid() { + return !this.hasErrors(); + } - /* - * Returns a list of all field-related errors, including those deeply nested. - */ + /* + * Returns `true` when errors exist (inverse of `isValid`). + */ - collectErrors() { - var _this2 = this; + }, { + key: 'hasErrors', + value: function hasErrors() { + return this.collectErrors().length > 0; + } - let getErrors = function (doc) { - let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + /* + * Returns a list of all field-related errors, including those deeply nested. + */ + + }, { + key: 'collectErrors', + value: function collectErrors() { + var _this3 = this; + + var getErrors = function getErrors(doc) { + var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + + var errors = []; + + var _loop = function _loop(name) { + var field = doc['$' + name]; + + if (field.errors.length > 0) { + errors.push({ + path: prefix.concat([field.name]), + errors: field.errors + }); + } + + if (field.value instanceof _this3.constructor) { + errors.push.apply(errors, (0, _toConsumableArray3.default)(getErrors(field.value, prefix.concat(field.name)))); + } else if ((0, _typeable.isArray)(field.value)) { + field.value.forEach(function (d, i) { + if (d instanceof _this3.constructor) { + errors.push.apply(errors, (0, _toConsumableArray3.default)(getErrors(d, prefix.concat([field.name, i])))); + } + }); + } + }; + + for (var name in doc.$schema.fields) { + _loop(name); + } - let errors = []; + return errors; + }; - for (let name in doc.$schema.fields) { - let field = doc[`$${ name }`]; + return getErrors(this); + } - if (field.errors.length > 0) { - errors.push({ - path: prefix.concat([field.name]), - errors: field.errors - }); + /* + * Deeply populates fields with the provided `errors`. + */ + + }, { + key: 'applyErrors', + value: function applyErrors() { + var errors = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = (0, _getIterator3.default)(errors), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var error = _step.value; + + var path = error.path.concat(); + path[path.length - 1] = '$' + path[path.length - 1]; + + var _field = this.getPath(path); + if (_field) { + _field.errors = error.errors; + } } - - if (field.value instanceof _this2.constructor) { - errors.push(...getErrors(field.value, prefix.concat(field.name))); - } else if ((0, _typeable.isArray)(field.value)) { - field.value.forEach((d, i) => { - if (d instanceof _this2.constructor) { - errors.push(...getErrors(d, prefix.concat([field.name, i]))); - } - }); + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } } } - return errors; - }; - - return getErrors(this); - } - - /* - * Deeply populates fields with the provided `errors`. - */ - - applyErrors() { - let errors = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; - - for (let error of errors) { - let path = error.path.concat(); - path[path.length - 1] = `$${ path[path.length - 1] }`; - - let field = this.getPath(path); - if (field) { - field.errors = error.errors; - } + return this; } - - return this; - } - -} -exports.Document = Document; \ No newline at end of file + }]); + return Document; +}(); \ No newline at end of file diff --git a/dist/errors.js b/dist/errors.js deleted file mode 100644 index 5d1abfb..0000000 --- a/dist/errors.js +++ /dev/null @@ -1,46 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.ValidationError = undefined; - -var _typeable = require('typeable'); - -/* -* A validation error class which holds information about document's invalid fields. -*/ - -class ValidationError extends Error { - - /* - * Class constructor. - */ - - constructor() { - let paths = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; - let message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Validation failed'; - let code = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 422; - - super(message); - - Object.defineProperty(this, 'name', { // class name - value: this.constructor.name, - writable: true - }); - Object.defineProperty(this, 'message', { // validation error message - value: message, - writable: true - }); - Object.defineProperty(this, 'paths', { // validator name - value: (0, _typeable.toArray)(paths), - writable: true - }); - Object.defineProperty(this, 'code', { // error code - value: code, - writable: true - }); - } - -} -exports.ValidationError = ValidationError; \ No newline at end of file diff --git a/dist/fields.js b/dist/fields.js index 7ab3899..f606056 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -5,6 +5,14 @@ Object.defineProperty(exports, "__esModule", { }); exports.Field = undefined; +var _regenerator = require('babel-runtime/regenerator'); + +var _regenerator2 = _interopRequireDefault(_regenerator); + +var _getIterator2 = require('babel-runtime/core-js/get-iterator'); + +var _getIterator3 = _interopRequireDefault(_getIterator2); + var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); @@ -13,27 +21,35 @@ var _assign = require('babel-runtime/core-js/object/assign'); var _assign2 = _interopRequireDefault(_assign); +var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +var _createClass2 = require('babel-runtime/helpers/createClass'); + +var _createClass3 = _interopRequireDefault(_createClass2); + var _typeable = require('typeable'); var _utils = require('./utils'); var _schemas = require('./schemas'); -var _errors = require('./errors'); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /* * Document field class. */ -class Field { +var Field = exports.Field = function () { /* * Class constructor. */ - constructor(owner, name) { + function Field(owner, name) { + (0, _classCallCheck3.default)(this, Field); + Object.defineProperty(this, '$owner', { // reference to the Document instance which owns the field value: owner }); @@ -58,261 +74,403 @@ class Field { * Return field value. */ - get value() { - let get = this.$owner.$schema.fields[this.name].get; + (0, _createClass3.default)(Field, [{ + key: '_cast', - let value = this._value; - if (get) { - // transformation with custom getter - value = get.call(this.$owner, value); - } - return value; - } + /* + * Converts the `value` into specified `type`. + */ - /* - * Sets field value. - */ + value: function _cast(value, type) { + var _this = this; - set value(value) { - var _$owner$$schema$field = this.$owner.$schema.fields[this.name]; - let set = _$owner$$schema$field.set, - type = _$owner$$schema$field.type; + var types = (0, _assign2.default)({}, this.$owner.$schema.typeOptions, { + Schema: function Schema(value) { + if ((0, _typeable.isArray)(type)) type = type[0]; // in case of {type: [Schema]} + return _this.$owner._createRelative(type, value); + } + }); - value = this._cast(value, type); // value type casting - if (set) { - // transformation with custom setter - value = set.call(this.$owner, value); + return (0, _typeable.cast)(value, type, types); } - this.invalidate(); // remove the last memorized error because the value has changed - this._value = value; - } + /* + * Sets field to the default value. + */ - /* - * Returns the default value of a field. - */ + }, { + key: 'reset', + value: function reset() { + this.value = this.defaultValue; - get defaultValue() { - var _$owner$$schema$field2 = this.$owner.$schema.fields[this.name]; - let type = _$owner$$schema$field2.type, - set = _$owner$$schema$field2.set, - defaultValue = _$owner$$schema$field2.defaultValue; + return this; + } + /* + * Sets field to a generated fake value. + */ - let value = (0, _typeable.isFunction)(defaultValue) ? defaultValue.call(this) : defaultValue; + }, { + key: 'fake', + value: function fake() { + this.value = this.fakeValue || this.defaultValue; - value = this._cast(value, type); // value type casting - if (set) { - // custom setter - value = set.call(this.$owner, value); + return this; } - return value; - } + /* + * Removes field's value by setting it to null. + */ - /* - * Returns a fake value of a field. - */ + }, { + key: 'clear', + value: function clear() { + this.value = null; - get fakeValue() { - var _$owner$$schema$field3 = this.$owner.$schema.fields[this.name]; - let type = _$owner$$schema$field3.type, - set = _$owner$$schema$field3.set, - fakeValue = _$owner$$schema$field3.fakeValue; + return this; + } + /* + * Deeply set's the initial values to the current value of each field. + */ - let value = (0, _typeable.isFunction)(fakeValue) ? fakeValue.call(this) : fakeValue; + }, { + key: 'commit', + value: function commit() { + this._commitRelated(this.value); + this._initialValue = (0, _utils.serialize)(this.value); - value = this._cast(value, type); // value type casting - if (set) { - // custom setter - value = set.call(this.$owner, value); + return this; } - return value; - } - - /* - * Returns the value of a field of the last commit. - */ + /* + * Deeply set's the initial values of the related `data` object to the current + * value of each field. + */ + + }, { + key: '_commitRelated', + value: function _commitRelated(data) { + var _this2 = this; + + // commit sub fields + if (data && data.commit) { + data.commit(); + } else if (data && (0, _typeable.isArray)(data)) { + data.forEach(function (d) { + return _this2._commitRelated(d); + }); + } + } - get initialValue() { - return this._initialValue; - } + /* + * Sets field's value before last commit. + */ - /* - * Returns the last error of the field. - */ + }, { + key: 'rollback', + value: function rollback() { + this.value = this.initialValue; - get errors() { - return this._errors; - } + return this; + } - /* - * Returns the last error of the field. - */ + /* + * Returns `true` when the `data` equals to the current value. + */ - set errors(errors) { - this._errors = errors; - } + }, { + key: 'equals', + value: function equals(data) { + return (0, _utils.isEqual)((0, _utils.serialize)(this.value), (0, _utils.serialize)(data)); + } - /* - * Converts the `value` into specified `type`. - */ + /* + * Returns `true` if the field or related sub-fields have been changed. + */ - _cast(value, type) { - let types = (0, _assign2.default)({}, this.$owner.$schema.typeOptions, { - Schema: value => { - if ((0, _typeable.isArray)(type)) type = type[0]; // in case of {type: [Schema]} + }, { + key: 'isChanged', + value: function isChanged() { + return !this.equals(this.initialValue); + } - return this.$owner._createRelative(type, value); + /* + * Validates the field by populating the `_errors` property. + */ + + }, { + key: 'validate', + value: function () { + var _ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee() { + var relatives, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, relative, isDocument; + + return _regenerator2.default.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + relatives = (0, _typeable.toArray)(this.value) || []; // validate related documents + + _iteratorNormalCompletion = true; + _didIteratorError = false; + _iteratorError = undefined; + _context.prev = 4; + _iterator = (0, _getIterator3.default)(relatives); + + case 6: + if (_iteratorNormalCompletion = (_step = _iterator.next()).done) { + _context.next = 15; + break; + } + + relative = _step.value; + isDocument = relative instanceof this.$owner.constructor; + + if (!isDocument) { + _context.next = 12; + break; + } + + _context.next = 12; + return relative.validate({ quiet: true }); + + case 12: + _iteratorNormalCompletion = true; + _context.next = 6; + break; + + case 15: + _context.next = 21; + break; + + case 17: + _context.prev = 17; + _context.t0 = _context['catch'](4); + _didIteratorError = true; + _iteratorError = _context.t0; + + case 21: + _context.prev = 21; + _context.prev = 22; + + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + + case 24: + _context.prev = 24; + + if (!_didIteratorError) { + _context.next = 27; + break; + } + + throw _iteratorError; + + case 27: + return _context.finish(24); + + case 28: + return _context.finish(21); + + case 29: + _context.next = 31; + return this.$owner.$validator.validate( // validate this field + this.value, this.$owner.$schema.fields[this.name].validate); + + case 31: + this._errors = _context.sent; + return _context.abrupt('return', this); + + case 33: + case 'end': + return _context.stop(); + } + } + }, _callee, this, [[4, 17, 21, 29], [22,, 24, 28]]); + })); + + function validate() { + return _ref.apply(this, arguments); } - }); - - return (0, _typeable.cast)(value, type, types); - } - /* - * Sets field to the default value. - */ + return validate; + }() - reset() { - this.value = this.defaultValue; + /* + * Validates the field by clearing the `_errors` property + */ - return this; - } + }, { + key: 'invalidate', + value: function invalidate() { + var relatives = (0, _typeable.toArray)(this.value) || []; // validate related documents + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; - /* - * Sets field to a generated fake value. - */ + try { + for (var _iterator2 = (0, _getIterator3.default)(relatives), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var relative = _step2.value; - fake() { - this.value = this.fakeValue || this.defaultValue; + var isDocument = relative instanceof this.$owner.constructor; - return this; - } + if (isDocument) { + relative.invalidate(); + } + } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2.return) { + _iterator2.return(); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } + } + } - /* - * Removes field's value by setting it to null. - */ + this._errors = []; - clear() { - this.value = null; + return this; + } - return this; - } + /* + * Returns `true` when the value is valid (inverse of `hasErrors`). + */ - /* - * Deeply set's the initial values to the current value of each field. - */ + }, { + key: 'isValid', + value: function isValid() { + return !this.hasErrors(); + } - commit() { - this._commitRelated(this.value); - this._initialValue = (0, _utils.serialize)(this.value); + /* + * Returns `true` when errors exist (inverse of `isValid`). + */ - return this; - } + }, { + key: 'hasErrors', + value: function hasErrors() { + return this.errors.length > 0; + } + }, { + key: 'value', + get: function get() { + var get = this.$owner.$schema.fields[this.name].get; - /* - * Deeply set's the initial values of the related `data` object to the current - * value of each field. - */ - _commitRelated(data) { - // commit sub fields - if (data && data.commit) { - data.commit(); - } else if (data && (0, _typeable.isArray)(data)) { - data.forEach(d => this._commitRelated(d)); + var value = this._value; + if (get) { + // transformation with custom getter + value = get.call(this.$owner, value); + } + return value; } - } - - /* - * Sets field's value before last commit. - */ - rollback() { - this.value = this.initialValue; + /* + * Sets field value. + */ - return this; - } + , + set: function set(value) { + var _$owner$$schema$field = this.$owner.$schema.fields[this.name], + set = _$owner$$schema$field.set, + type = _$owner$$schema$field.type; - /* - * Returns `true` when the `data` equals to the current value. - */ - equals(data) { - return (0, _utils.isEqual)((0, _utils.serialize)(this.value), (0, _utils.serialize)(data)); - } + value = this._cast(value, type); // value type casting + if (set) { + // transformation with custom setter + value = set.call(this.$owner, value); + } - /* - * Returns `true` if the field or related sub-fields have been changed. - */ + this.invalidate(); // remove the last memorized error because the value has changed + this._value = value; + } - isChanged() { - return !this.equals(this.initialValue); - } + /* + * Returns the default value of a field. + */ - /* - * Validates the field by populating the `_errors` property. - */ + }, { + key: 'defaultValue', + get: function get() { + var _$owner$$schema$field2 = this.$owner.$schema.fields[this.name], + type = _$owner$$schema$field2.type, + set = _$owner$$schema$field2.set, + defaultValue = _$owner$$schema$field2.defaultValue; - validate() { - var _this = this; - return (0, _asyncToGenerator3.default)(function* () { - let relatives = (0, _typeable.toArray)(_this.value) || []; // validate related documents - for (let relative of relatives) { - let isDocument = relative instanceof _this.$owner.constructor; + var value = (0, _typeable.isFunction)(defaultValue) ? defaultValue.call(this) : defaultValue; - if (isDocument) { - yield relative.validate({ quiet: true }); // don't throw - } + value = this._cast(value, type); // value type casting + if (set) { + // custom setter + value = set.call(this.$owner, value); } - _this._errors = yield _this.$owner.$validator.validate( // validate this field - _this.value, _this.$owner.$schema.fields[_this.name].validate); + return value; + } - return _this; - })(); - } + /* + * Returns a fake value of a field. + */ + + }, { + key: 'fakeValue', + get: function get() { + var _$owner$$schema$field3 = this.$owner.$schema.fields[this.name], + type = _$owner$$schema$field3.type, + set = _$owner$$schema$field3.set, + fakeValue = _$owner$$schema$field3.fakeValue; - /* - * Validates the field by clearing the `_errors` property - */ - invalidate() { - let relatives = (0, _typeable.toArray)(this.value) || []; // validate related documents - for (let relative of relatives) { - let isDocument = relative instanceof this.$owner.constructor; + var value = (0, _typeable.isFunction)(fakeValue) ? fakeValue.call(this) : fakeValue; - if (isDocument) { - relative.invalidate(); + value = this._cast(value, type); // value type casting + if (set) { + // custom setter + value = set.call(this.$owner, value); } - } - this._errors = []; + return value; + } - return this; - } + /* + * Returns the value of a field of the last commit. + */ - /* - * Returns `true` when the value is valid (inverse of `hasErrors`). - */ + }, { + key: 'initialValue', + get: function get() { + return this._initialValue; + } - isValid() { - return !this.hasErrors(); - } + /* + * Returns the last error of the field. + */ - /* - * Returns `true` when errors exist (inverse of `isValid`). - */ + }, { + key: 'errors', + get: function get() { + return this._errors; + } - hasErrors() { - return this.errors.length > 0; - } + /* + * Returns the last error of the field. + */ -} -exports.Field = Field; \ No newline at end of file + , + set: function set(errors) { + this._errors = errors; + } + }]); + return Field; +}(); \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index 78cef62..46999c0 100644 --- a/dist/index.js +++ b/dist/index.js @@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.ValidatorError = exports.ValidationError = exports.Field = exports.Document = exports.Schema = undefined; +exports.Field = exports.Document = exports.Schema = undefined; var _schemas = require('./schemas'); @@ -11,14 +11,10 @@ var _documents = require('./documents'); var _fields = require('./fields'); -var _errors = require('./errors'); - /* * Exposing public classes. */ exports.Schema = _schemas.Schema; exports.Document = _documents.Document; -exports.Field = _fields.Field; -exports.ValidationError = _errors.ValidationError; -exports.ValidatorError = _errors.ValidatorError; \ No newline at end of file +exports.Field = _fields.Field; \ No newline at end of file diff --git a/dist/schemas.js b/dist/schemas.js index 0e061a3..9e499a2 100644 --- a/dist/schemas.js +++ b/dist/schemas.js @@ -5,54 +5,80 @@ Object.defineProperty(exports, "__esModule", { }); exports.Schema = undefined; +var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray'); + +var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); + +var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + var _typeable = require('typeable'); var _utils = require('./utils'); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + /* * A class for defining Document structure and properties. */ -class Schema { - - /* - * Class constructor. - */ - - constructor() { - var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - _ref$mixins = _ref.mixins; - - let mixins = _ref$mixins === undefined ? [] : _ref$mixins; - var _ref$fields = _ref.fields; - let fields = _ref$fields === undefined ? {} : _ref$fields, - strict = _ref.strict; - var _ref$validatorOptions = _ref.validatorOptions; - let validatorOptions = _ref$validatorOptions === undefined ? {} : _ref$validatorOptions; - var _ref$typeOptions = _ref.typeOptions; - let typeOptions = _ref$typeOptions === undefined ? {} : _ref$typeOptions; - - - Object.defineProperty(this, 'fields', { // document fields - get: () => (0, _utils.merge)(...mixins.map(s => (0, _utils.retrieve)(s.fields)), (0, _utils.retrieve)(fields)), - enumerable: true // required for deep nesting - }); - - Object.defineProperty(this, 'strict', { // document schema mode - get: () => [true].concat(mixins.map(s => s.strict), strict).filter(s => (0, _typeable.isBoolean)(s)).reverse()[0], - enumerable: true // required for deep nesting - }); - - Object.defineProperty(this, 'validatorOptions', { // options for validatable.js - get: () => (0, _utils.merge)(...mixins.map(v => v.validatorOptions), validatorOptions), - enumerable: true // required for deep nesting - }); - - Object.defineProperty(this, 'typeOptions', { // options for typeable.js - get: () => (0, _utils.merge)(...mixins.map(v => v.typeOptions), typeOptions), - enumerable: true // required for deep nesting - }); - } - -} -exports.Schema = Schema; \ No newline at end of file +var Schema = + +/* +* Class constructor. +*/ + +exports.Schema = function Schema() { + var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + _ref$mixins = _ref.mixins, + mixins = _ref$mixins === undefined ? [] : _ref$mixins, + _ref$fields = _ref.fields, + fields = _ref$fields === undefined ? {} : _ref$fields, + strict = _ref.strict, + _ref$validatorOptions = _ref.validatorOptions, + validatorOptions = _ref$validatorOptions === undefined ? {} : _ref$validatorOptions, + _ref$typeOptions = _ref.typeOptions, + typeOptions = _ref$typeOptions === undefined ? {} : _ref$typeOptions; + + (0, _classCallCheck3.default)(this, Schema); + + + Object.defineProperty(this, 'fields', { // document fields + get: function get() { + return _utils.merge.apply(undefined, (0, _toConsumableArray3.default)(mixins.map(function (s) { + return (0, _utils.retrieve)(s.fields); + })).concat([(0, _utils.retrieve)(fields)])); + }, + enumerable: true // required for deep nesting + }); + + Object.defineProperty(this, 'strict', { // document schema mode + get: function get() { + return [true].concat(mixins.map(function (s) { + return s.strict; + }), strict).filter(function (s) { + return (0, _typeable.isBoolean)(s); + }).reverse()[0]; + }, + enumerable: true // required for deep nesting + }); + + Object.defineProperty(this, 'validatorOptions', { // options for validatable.js + get: function get() { + return _utils.merge.apply(undefined, (0, _toConsumableArray3.default)(mixins.map(function (v) { + return v.validatorOptions; + })).concat([validatorOptions])); + }, + enumerable: true // required for deep nesting + }); + + Object.defineProperty(this, 'typeOptions', { // options for typeable.js + get: function get() { + return _utils.merge.apply(undefined, (0, _toConsumableArray3.default)(mixins.map(function (v) { + return v.typeOptions; + })).concat([typeOptions])); + }, + enumerable: true // required for deep nesting + }); +}; \ No newline at end of file diff --git a/package.json b/package.json index 57599b3..95713ff 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.17.0", + "version": "2.18.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -44,7 +44,8 @@ "devDependencies": { "ava": "0.16.x", "babel-cli": "6.18.x", - "babel-plugin-transform-object-assign": "6.8.x", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-plugin-transform-async-to-generator": "6.16.0", "babel-preset-es2015": "6.18.x" }, "dependencies": { diff --git a/src/documents.js b/src/documents.js index 9f71267..e7e534f 100644 --- a/src/documents.js +++ b/src/documents.js @@ -9,7 +9,6 @@ import { import {Validator} from 'validatable'; import {Schema} from './schemas'; import {Field} from './fields'; -import {ValidationError} from './errors'; import { serialize, isEqual @@ -88,11 +87,15 @@ export class Document { } /* - * Creates a new ValidationError instance. + * Creates a new validation error instance. */ _createValidationError (paths) { - return new ValidationError(paths); + let error = new Error('Validation failed'); + error.code = 422; + error.paths = paths; + + return error; } /* @@ -308,8 +311,7 @@ export class Document { let paths = this.collectErrors().map((e) => e.path); if (!quiet && paths.length > 0) { - let error = this._createValidationError(paths); - throw error; + throw this._createValidationError(paths); } return this; diff --git a/src/errors.js b/src/errors.js deleted file mode 100644 index 4e9f179..0000000 --- a/src/errors.js +++ /dev/null @@ -1,34 +0,0 @@ -import {toArray} from 'typeable'; - -/* -* A validation error class which holds information about document's invalid fields. -*/ - -export class ValidationError extends Error { - - /* - * Class constructor. - */ - - constructor (paths = [], message = 'Validation failed', code = 422) { - super(message); - - Object.defineProperty(this, 'name', { // class name - value: this.constructor.name, - writable: true - }); - Object.defineProperty(this, 'message', { // validation error message - value: message, - writable: true - }); - Object.defineProperty(this, 'paths', { // validator name - value: toArray(paths), - writable: true - }); - Object.defineProperty(this, 'code', { // error code - value: code, - writable: true - }); - } - -} diff --git a/src/fields.js b/src/fields.js index 20664fb..0a94d2f 100644 --- a/src/fields.js +++ b/src/fields.js @@ -9,7 +9,6 @@ import { isEqual } from './utils'; import {Schema} from './schemas'; -import {ValidatorError} from './errors'; /* * Document field class. diff --git a/src/index.js b/src/index.js index 6c20ebc..8c0f823 100644 --- a/src/index.js +++ b/src/index.js @@ -1,10 +1,6 @@ import {Schema} from './schemas'; import {Document} from './documents'; import {Field} from './fields'; -import { - ValidationError, - ValidatorError -} from './errors'; /* * Exposing public classes. @@ -13,7 +9,5 @@ import { export { Schema, Document, - Field, - ValidationError, - ValidatorError + Field }; diff --git a/tests/documents.js b/tests/documents.js index 613d42d..78954ff 100644 --- a/tests/documents.js +++ b/tests/documents.js @@ -2,8 +2,7 @@ import test from 'ava'; import { Document, Schema, - Field, - ValidationError + Field } from '../dist'; test('field value should be converted to the specified type', (t) => { @@ -993,14 +992,14 @@ test('method `validate` should validate all fields and throw an error', async (t let validatorError1 = {validator: 'arrayLength', message: 'is too short', code: 422}; // throws an error - t.throws(user.validate(), ValidationError); + t.throws(user.validate()); let error = null; try { await user.validate(); } catch (e) { error = e; } - + t.is(error.code, 422); t.deepEqual(error.paths, [ ['name'], ['newBook'], diff --git a/tests/index.js b/tests/index.js index b7ed14c..4c4808e 100644 --- a/tests/index.js +++ b/tests/index.js @@ -4,5 +4,4 @@ import * as objectschema from '../dist'; test('exposed content', (t) => { t.is(!!objectschema.Schema, true); t.is(!!objectschema.Document, true); - t.is(!!objectschema.ValidationError, true); }); From 8090da484352502d419ba4c628f5a4e77c16033c Mon Sep 17 00:00:00 2001 From: xpeper Date: Fri, 11 Nov 2016 23:42:36 +0100 Subject: [PATCH 105/219] legacy browsers support --- .babelrc | 8 ++- .travis.yml | 2 + README.md | 9 +-- dist/documents.js | 120 ++++++++++++++------------------- dist/fields.js | 164 +++++++++++++++++++++------------------------- dist/utils.js | 7 +- package.json | 11 ++-- 7 files changed, 139 insertions(+), 182 deletions(-) diff --git a/.babelrc b/.babelrc index 9bfdfb3..5f19e82 100644 --- a/.babelrc +++ b/.babelrc @@ -3,8 +3,12 @@ "es2015" ], "plugins": [ - "transform-async-to-generator", "syntax-async-functions", - "transform-runtime" + "transform-object-assign", + "transform-regenerator", + ["transform-runtime", { + "polyfill": false, + "regenerator": true + }] ] } diff --git a/.travis.yml b/.travis.yml index b13747c..34e25b3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,3 +2,5 @@ language: node_js node_js: - "7" - "6" + - "5" + - "4" diff --git a/README.md b/README.md index aa47b6d..6097b2d 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ > Advanced schema enforced JavaScript objects. -This is a light weight open source package for use on **server or in browser**. The source code is available on [GitHub](https://github.com/xpepermint/objectschemajs) where you can also find our [issue tracker](https://github.com/xpepermint/objectschemajs/issues). +This is a light weight open source package for use on **server** or in **browser** (using module bundler). The source code is available on [GitHub](https://github.com/xpepermint/objectschemajs) where you can also find our [issue tracker](https://github.com/xpepermint/objectschemajs/issues). ## Features @@ -34,13 +34,6 @@ Run the command below to install the package. $ npm install --save objectschema ``` -This package is targeting `es2015`. If you plan to use it in a browser, you need to transpile it with [Babel](https://babeljs.io) or similar tool. - -To support browsers `>= IE9` you need to -* use the [preset-es2015](https://babeljs.io/docs/plugins/preset-es2015/) preset, -* include [Babel polyfill](https://babeljs.io/docs/usage/polyfill), -* use plugins [syntax-async-functions](https://babeljs.io/docs/plugins/syntax-async-functions), [transform-regenerator](https://babeljs.io/docs/plugins/transform-regenerator/) and [transform-object-assign](https://www.npmjs.com/package/babel-plugin-transform-object-assign). - ## Example ```js diff --git a/dist/documents.js b/dist/documents.js index 9e517e4..5dc8d21 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -5,10 +5,6 @@ Object.defineProperty(exports, "__esModule", { }); exports.Document = undefined; -var _getIterator2 = require('babel-runtime/core-js/get-iterator'); - -var _getIterator3 = _interopRequireDefault(_getIterator2); - var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray'); var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); @@ -17,21 +13,9 @@ var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); -var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); - -var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); - -var _keys = require('babel-runtime/core-js/object/keys'); - -var _keys2 = _interopRequireDefault(_keys); - -var _defineProperty = require('babel-runtime/core-js/object/define-property'); - -var _defineProperty2 = _interopRequireDefault(_defineProperty); - -var _assign = require('babel-runtime/core-js/object/assign'); +var _extends2 = require('babel-runtime/helpers/extends'); -var _assign2 = _interopRequireDefault(_assign); +var _extends3 = _interopRequireDefault(_extends2); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); @@ -117,7 +101,7 @@ var Document = exports.Document = function () { }, { key: '_createValidator', value: function _createValidator() { - return new _validatable.Validator((0, _assign2.default)({}, this.$schema.validatorOptions, { context: this })); + return new _validatable.Validator((0, _extends3.default)({}, this.$schema.validatorOptions, { context: this })); } /* @@ -180,7 +164,7 @@ var Document = exports.Document = function () { value: function _defineField(name) { var field = this._createField(name); - (0, _defineProperty2.default)(this, name, { // field definition + Object.defineProperty(this, name, { // field definition get: function get() { return field.value; }, @@ -266,7 +250,7 @@ var Document = exports.Document = function () { if (!this.$schema.strict) { this[name] = value; } else { - var names = (0, _keys2.default)(this.$schema.fields); + var names = Object.keys(this.$schema.fields); var exists = names.indexOf(name) > -1; if (exists) { @@ -401,7 +385,7 @@ var Document = exports.Document = function () { value: function isChanged() { var _this2 = this; - return (0, _keys2.default)(this.$schema.fields).some(function (name) { + return Object.keys(this.$schema.fields).some(function (name) { return _this2['$' + name].isChanged(); }); } @@ -412,63 +396,55 @@ var Document = exports.Document = function () { }, { key: 'validate', - value: function () { - var _ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee() { - var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - _ref2$quiet = _ref2.quiet, - quiet = _ref2$quiet === undefined ? false : _ref2$quiet; - - var fields, path, paths; - return _regenerator2.default.wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - fields = this.$schema.fields; - _context.t0 = _regenerator2.default.keys(fields); - - case 2: - if ((_context.t1 = _context.t0()).done) { - _context.next = 8; - break; - } - - path = _context.t1.value; - _context.next = 6; - return this['$' + path].validate(); - - case 6: - _context.next = 2; + value: function validate() { + var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + _ref$quiet = _ref.quiet, + quiet = _ref$quiet === undefined ? false : _ref$quiet; + + var fields, path, paths; + return _regenerator2.default.async(function validate$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + fields = this.$schema.fields; + _context.t0 = _regenerator2.default.keys(fields); + + case 2: + if ((_context.t1 = _context.t0()).done) { + _context.next = 8; break; + } - case 8: - paths = this.collectErrors().map(function (e) { - return e.path; - }); + path = _context.t1.value; + _context.next = 6; + return _regenerator2.default.awrap(this['$' + path].validate()); - if (!(!quiet && paths.length > 0)) { - _context.next = 11; - break; - } + case 6: + _context.next = 2; + break; - throw this._createValidationError(paths); + case 8: + paths = this.collectErrors().map(function (e) { + return e.path; + }); - case 11: - return _context.abrupt('return', this); + if (!(!quiet && paths.length > 0)) { + _context.next = 11; + break; + } - case 12: - case 'end': - return _context.stop(); - } - } - }, _callee, this); - })); + throw this._createValidationError(paths); - function validate(_x6) { - return _ref.apply(this, arguments); - } + case 11: + return _context.abrupt('return', this); - return validate; - }() + case 12: + case 'end': + return _context.stop(); + } + } + }, null, this); + } /* * Validates fields and returns errors. @@ -565,7 +541,7 @@ var Document = exports.Document = function () { var _iteratorError = undefined; try { - for (var _iterator = (0, _getIterator3.default)(errors), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + for (var _iterator = errors[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var error = _step.value; var path = error.path.concat(); diff --git a/dist/fields.js b/dist/fields.js index f606056..78b634c 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -9,17 +9,9 @@ var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); -var _getIterator2 = require('babel-runtime/core-js/get-iterator'); +var _extends2 = require('babel-runtime/helpers/extends'); -var _getIterator3 = _interopRequireDefault(_getIterator2); - -var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); - -var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); - -var _assign = require('babel-runtime/core-js/object/assign'); - -var _assign2 = _interopRequireDefault(_assign); +var _extends3 = _interopRequireDefault(_extends2); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); @@ -85,7 +77,7 @@ var Field = exports.Field = function () { value: function _cast(value, type) { var _this = this; - var types = (0, _assign2.default)({}, this.$owner.$schema.typeOptions, { + var types = (0, _extends3.default)({}, this.$owner.$schema.typeOptions, { Schema: function Schema(value) { if ((0, _typeable.isArray)(type)) type = type[0]; // in case of {type: [Schema]} @@ -203,101 +195,93 @@ var Field = exports.Field = function () { }, { key: 'validate', - value: function () { - var _ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee() { - var relatives, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, relative, isDocument; - - return _regenerator2.default.wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - relatives = (0, _typeable.toArray)(this.value) || []; // validate related documents - - _iteratorNormalCompletion = true; - _didIteratorError = false; - _iteratorError = undefined; - _context.prev = 4; - _iterator = (0, _getIterator3.default)(relatives); - - case 6: - if (_iteratorNormalCompletion = (_step = _iterator.next()).done) { - _context.next = 15; - break; - } - - relative = _step.value; - isDocument = relative instanceof this.$owner.constructor; - - if (!isDocument) { - _context.next = 12; - break; - } + value: function validate() { + var relatives, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, relative, isDocument; + + return _regenerator2.default.async(function validate$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + relatives = (0, _typeable.toArray)(this.value) || []; // validate related documents + + _iteratorNormalCompletion = true; + _didIteratorError = false; + _iteratorError = undefined; + _context.prev = 4; + _iterator = relatives[Symbol.iterator](); + + case 6: + if (_iteratorNormalCompletion = (_step = _iterator.next()).done) { + _context.next = 15; + break; + } - _context.next = 12; - return relative.validate({ quiet: true }); + relative = _step.value; + isDocument = relative instanceof this.$owner.constructor; - case 12: - _iteratorNormalCompletion = true; - _context.next = 6; + if (!isDocument) { + _context.next = 12; break; + } - case 15: - _context.next = 21; - break; + _context.next = 12; + return _regenerator2.default.awrap(relative.validate({ quiet: true })); - case 17: - _context.prev = 17; - _context.t0 = _context['catch'](4); - _didIteratorError = true; - _iteratorError = _context.t0; + case 12: + _iteratorNormalCompletion = true; + _context.next = 6; + break; - case 21: - _context.prev = 21; - _context.prev = 22; + case 15: + _context.next = 21; + break; - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } + case 17: + _context.prev = 17; + _context.t0 = _context['catch'](4); + _didIteratorError = true; + _iteratorError = _context.t0; - case 24: - _context.prev = 24; + case 21: + _context.prev = 21; + _context.prev = 22; - if (!_didIteratorError) { - _context.next = 27; - break; - } + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } - throw _iteratorError; + case 24: + _context.prev = 24; - case 27: - return _context.finish(24); + if (!_didIteratorError) { + _context.next = 27; + break; + } - case 28: - return _context.finish(21); + throw _iteratorError; - case 29: - _context.next = 31; - return this.$owner.$validator.validate( // validate this field - this.value, this.$owner.$schema.fields[this.name].validate); + case 27: + return _context.finish(24); - case 31: - this._errors = _context.sent; - return _context.abrupt('return', this); + case 28: + return _context.finish(21); - case 33: - case 'end': - return _context.stop(); - } - } - }, _callee, this, [[4, 17, 21, 29], [22,, 24, 28]]); - })); + case 29: + _context.next = 31; + return _regenerator2.default.awrap(this.$owner.$validator.validate( // validate this field + this.value, this.$owner.$schema.fields[this.name].validate)); - function validate() { - return _ref.apply(this, arguments); - } + case 31: + this._errors = _context.sent; + return _context.abrupt('return', this); - return validate; - }() + case 33: + case 'end': + return _context.stop(); + } + } + }, null, this, [[4, 17, 21, 29], [22,, 24, 28]]); + } /* * Validates the field by clearing the `_errors` property @@ -312,7 +296,7 @@ var Field = exports.Field = function () { var _iteratorError2 = undefined; try { - for (var _iterator2 = (0, _getIterator3.default)(relatives), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + for (var _iterator2 = relatives[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { var relative = _step2.value; var isDocument = relative instanceof this.$owner.constructor; diff --git a/dist/utils.js b/dist/utils.js index 0f7b215..ee04aae 100644 --- a/dist/utils.js +++ b/dist/utils.js @@ -4,11 +4,6 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.isEqual = exports.merge = undefined; - -var _stringify = require('babel-runtime/core-js/json/stringify'); - -var _stringify2 = _interopRequireDefault(_stringify); - exports.serialize = serialize; exports.retrieve = retrieve; @@ -29,7 +24,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de */ function serialize(data) { - return JSON.parse((0, _stringify2.default)(data)); + return JSON.parse(JSON.stringify(data)); } /* diff --git a/package.json b/package.json index 95713ff..dcce7ba 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.18.0", + "version": "2.19.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -44,14 +44,17 @@ "devDependencies": { "ava": "0.16.x", "babel-cli": "6.18.x", - "babel-plugin-syntax-async-functions": "6.13.0", - "babel-plugin-transform-async-to-generator": "6.16.0", + "babel-plugin-syntax-async-functions": "6.13.x", + "babel-plugin-transform-object-assign": "6.8.x", + "babel-plugin-transform-regenerator": "6.16.x", + "babel-plugin-transform-runtime": "6.15.x", "babel-preset-es2015": "6.18.x" }, "dependencies": { + "babel-runtime": "6.18.x", "lodash.isequal": "4.4.x", "lodash.merge": "4.6.x", "typeable": "0.16.x", - "validatable": "0.18.x" + "validatable": "0.19.x" } } From 283be01a0aca984483d156d0c8997ac36cbbdd46 Mon Sep 17 00:00:00 2001 From: xpeper Date: Fri, 11 Nov 2016 23:45:15 +0100 Subject: [PATCH 106/219] scripts --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index dcce7ba..1e74024 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.19.0", + "version": "2.19.1", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -15,9 +15,9 @@ "clean": "rm -Rf ./dist", "prebuild": "npm run clean; mkdir -p ./dist", "build": "babel ./src --out-dir ./dist --copy-files", + "prepublish": "npm run build", "pretest": "npm run build", - "test": "ava", - "prepublish": "npm run build" + "test": "ava" }, "repository": { "type": "git", From b0ef5fd4af1535fee872e5f37b70f04b67c95866 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 12 Nov 2016 00:17:44 +0100 Subject: [PATCH 107/219] dependencies --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 1e74024..4c0540d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.19.1", + "version": "2.20.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -54,7 +54,7 @@ "babel-runtime": "6.18.x", "lodash.isequal": "4.4.x", "lodash.merge": "4.6.x", - "typeable": "0.16.x", + "typeable": "0.19.x", "validatable": "0.19.x" } } From 25a12d0b29d69d26aed3c1a5a4ff40e068da9457 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 12 Nov 2016 00:50:31 +0100 Subject: [PATCH 108/219] runtime --- .babelrc | 5 +---- dist/documents.js | 20 ++++++++++++++++---- dist/fields.js | 8 ++++++-- dist/utils.js | 7 ++++++- package.json | 2 +- 5 files changed, 30 insertions(+), 12 deletions(-) diff --git a/.babelrc b/.babelrc index 5f19e82..d801064 100644 --- a/.babelrc +++ b/.babelrc @@ -6,9 +6,6 @@ "syntax-async-functions", "transform-object-assign", "transform-regenerator", - ["transform-runtime", { - "polyfill": false, - "regenerator": true - }] + "transform-runtime" ] } diff --git a/dist/documents.js b/dist/documents.js index 5dc8d21..b3ca0f8 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -5,6 +5,10 @@ Object.defineProperty(exports, "__esModule", { }); exports.Document = undefined; +var _getIterator2 = require('babel-runtime/core-js/get-iterator'); + +var _getIterator3 = _interopRequireDefault(_getIterator2); + var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray'); var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); @@ -13,6 +17,14 @@ var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); +var _keys = require('babel-runtime/core-js/object/keys'); + +var _keys2 = _interopRequireDefault(_keys); + +var _defineProperty = require('babel-runtime/core-js/object/define-property'); + +var _defineProperty2 = _interopRequireDefault(_defineProperty); + var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); @@ -164,7 +176,7 @@ var Document = exports.Document = function () { value: function _defineField(name) { var field = this._createField(name); - Object.defineProperty(this, name, { // field definition + (0, _defineProperty2.default)(this, name, { // field definition get: function get() { return field.value; }, @@ -250,7 +262,7 @@ var Document = exports.Document = function () { if (!this.$schema.strict) { this[name] = value; } else { - var names = Object.keys(this.$schema.fields); + var names = (0, _keys2.default)(this.$schema.fields); var exists = names.indexOf(name) > -1; if (exists) { @@ -385,7 +397,7 @@ var Document = exports.Document = function () { value: function isChanged() { var _this2 = this; - return Object.keys(this.$schema.fields).some(function (name) { + return (0, _keys2.default)(this.$schema.fields).some(function (name) { return _this2['$' + name].isChanged(); }); } @@ -541,7 +553,7 @@ var Document = exports.Document = function () { var _iteratorError = undefined; try { - for (var _iterator = errors[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + for (var _iterator = (0, _getIterator3.default)(errors), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var error = _step.value; var path = error.path.concat(); diff --git a/dist/fields.js b/dist/fields.js index 78b634c..d72679f 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -9,6 +9,10 @@ var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); +var _getIterator2 = require('babel-runtime/core-js/get-iterator'); + +var _getIterator3 = _interopRequireDefault(_getIterator2); + var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); @@ -208,7 +212,7 @@ var Field = exports.Field = function () { _didIteratorError = false; _iteratorError = undefined; _context.prev = 4; - _iterator = relatives[Symbol.iterator](); + _iterator = (0, _getIterator3.default)(relatives); case 6: if (_iteratorNormalCompletion = (_step = _iterator.next()).done) { @@ -296,7 +300,7 @@ var Field = exports.Field = function () { var _iteratorError2 = undefined; try { - for (var _iterator2 = relatives[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + for (var _iterator2 = (0, _getIterator3.default)(relatives), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { var relative = _step2.value; var isDocument = relative instanceof this.$owner.constructor; diff --git a/dist/utils.js b/dist/utils.js index ee04aae..0f7b215 100644 --- a/dist/utils.js +++ b/dist/utils.js @@ -4,6 +4,11 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.isEqual = exports.merge = undefined; + +var _stringify = require('babel-runtime/core-js/json/stringify'); + +var _stringify2 = _interopRequireDefault(_stringify); + exports.serialize = serialize; exports.retrieve = retrieve; @@ -24,7 +29,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de */ function serialize(data) { - return JSON.parse(JSON.stringify(data)); + return JSON.parse((0, _stringify2.default)(data)); } /* diff --git a/package.json b/package.json index 4c0540d..3a9aaca 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.20.0", + "version": "2.21.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { From 0963e13761485e37a592f4b76252d1278bd3c5d8 Mon Sep 17 00:00:00 2001 From: xpeper Date: Thu, 24 Nov 2016 01:27:40 +0100 Subject: [PATCH 109/219] dependencies, validator `condition` --- README.md | 7 +- package.json | 8 +- tests/documents.js | 3 +- yarn.lock | 2844 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 2854 insertions(+), 8 deletions(-) create mode 100644 yarn.lock diff --git a/README.md b/README.md index 6097b2d..0f5cd2b 100644 --- a/README.md +++ b/README.md @@ -125,13 +125,14 @@ new Schema({ mixins: [animalSchema, catSchema], // schema extensions fields: { // schema fields definition email: { // a field name holding a field definition - type: 'String', // a field data type provided by typeable.js + type: 'String', // [required] a field data type provided by typeable.js defaultValue: 'John Smith', // a default field value (can be a value of a function) fakeValue: 'John Smith', // a fake field value (can be a value of a function) validate: [ // field validations provided by validatable.js { // validator recipe - validator: 'presence', // validator name - message: 'is required' // validator error message + validator: 'presence', // [required] validator name + message: 'is required', // [required] validator error message + condition () { return true } // condition to switch off the validator } ] }, diff --git a/package.json b/package.json index 3a9aaca..4f8e405 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.21.0", + "version": "2.22.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -42,7 +42,7 @@ "author": "Kristijan Sedlak (Xpepermint)", "license": "MIT", "devDependencies": { - "ava": "0.16.x", + "ava": "0.17.x", "babel-cli": "6.18.x", "babel-plugin-syntax-async-functions": "6.13.x", "babel-plugin-transform-object-assign": "6.8.x", @@ -54,7 +54,7 @@ "babel-runtime": "6.18.x", "lodash.isequal": "4.4.x", "lodash.merge": "4.6.x", - "typeable": "0.19.x", - "validatable": "0.19.x" + "typeable": "0.20.x", + "validatable": "0.20.x" } } diff --git a/tests/documents.js b/tests/documents.js index 78954ff..1c266fa 100644 --- a/tests/documents.js +++ b/tests/documents.js @@ -153,7 +153,8 @@ test('field can have a default value', (t) => { t.is(user0.age, 35); t.is(user0.enabled, true); t.is(user0.book, null); - t.deepEqual(user0.papers, [{title: 'Foo'}]); + + t.deepEqual(user0.papers[0].title, 'Foo'); t.deepEqual(user1.books, [null, book1]); t.is(user1.books[0], null); t.is(user1.books[1].title, '100'); diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..5880c5f --- /dev/null +++ b/yarn.lock @@ -0,0 +1,2844 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +abbrev@1: + version "1.0.9" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" + +ansi-align@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba" + dependencies: + string-width "^1.0.1" + +ansi-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.0.0.tgz#c5061b6e0ef8a81775e50f5d66151bf6bf371107" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +ansi-styles@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" + +anymatch@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" + dependencies: + arrify "^1.0.0" + micromatch "^2.1.5" + +aproba@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0" + +are-we-there-yet@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.0 || ^1.1.13" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-exclude@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/arr-exclude/-/arr-exclude-1.0.0.tgz#dfc7c2e552a270723ccda04cf3128c8cbfe5c631" + +arr-flatten@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b" + +array-differ@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1, array-uniq@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +arrify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +auto-bind@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-0.1.0.tgz#7a29efc8c2388d3d578e02fc2df531c81ffc1ee1" + +ava-files@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/ava-files/-/ava-files-0.2.0.tgz#c7b8b6e2e0cea63b57a6e27e0db145c7c19cfe20" + dependencies: + auto-bind "^0.1.0" + bluebird "^3.4.1" + globby "^6.0.0" + ignore-by-default "^1.0.1" + lodash.flatten "^4.2.0" + multimatch "^2.1.0" + slash "^1.0.0" + +ava-init@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ava-init/-/ava-init-0.1.6.tgz#ef19ed0b24b6bf359dad6fbadf1a05d836395c91" + dependencies: + arr-exclude "^1.0.0" + cross-spawn "^4.0.0" + pinkie-promise "^2.0.0" + read-pkg-up "^1.0.1" + the-argv "^1.0.0" + write-pkg "^1.0.0" + +ava@0.17.x: + version "0.17.0" + resolved "https://registry.yarnpkg.com/ava/-/ava-0.17.0.tgz#359e2a89616801ef03929c3cf10a9d4f8e451d02" + dependencies: + arr-flatten "^1.0.1" + array-union "^1.0.1" + array-uniq "^1.0.2" + arrify "^1.0.0" + auto-bind "^0.1.0" + ava-files "^0.2.0" + ava-init "^0.1.0" + babel-code-frame "^6.16.0" + babel-core "^6.17.0" + babel-plugin-ava-throws-helper "^0.1.0" + babel-plugin-detective "^2.0.0" + babel-plugin-espower "^2.3.1" + babel-plugin-transform-runtime "^6.15.0" + babel-preset-es2015 "^6.16.0" + babel-preset-es2015-node4 "^2.1.0" + babel-preset-stage-2 "^6.17.0" + babel-runtime "^6.11.6" + bluebird "^3.0.0" + caching-transform "^1.0.0" + chalk "^1.0.0" + chokidar "^1.4.2" + clean-yaml-object "^0.1.0" + cli-cursor "^1.0.2" + cli-spinners "^0.1.2" + cli-truncate "^0.2.0" + co-with-promise "^4.6.0" + common-path-prefix "^1.0.0" + convert-source-map "^1.2.0" + core-assert "^0.2.0" + currently-unhandled "^0.4.1" + debug "^2.2.0" + empower-core "^0.6.1" + figures "^1.4.0" + find-cache-dir "^0.1.1" + fn-name "^2.0.0" + get-port "^2.1.0" + has-flag "^2.0.0" + ignore-by-default "^1.0.0" + is-ci "^1.0.7" + is-generator-fn "^1.0.0" + is-obj "^1.0.0" + is-observable "^0.2.0" + is-promise "^2.1.0" + last-line-stream "^1.0.0" + lodash.debounce "^4.0.3" + lodash.difference "^4.3.0" + lodash.isequal "^4.4.0" + loud-rejection "^1.2.0" + matcher "^0.1.1" + max-timeout "^1.0.0" + md5-hex "^1.2.0" + meow "^3.7.0" + ms "^0.7.1" + object-assign "^4.0.1" + observable-to-promise "^0.4.0" + option-chain "^0.1.0" + package-hash "^1.1.0" + pkg-conf "^1.0.1" + plur "^2.0.0" + power-assert-context-formatter "^1.0.4" + power-assert-renderer-assertion "^1.0.1" + power-assert-renderer-succinct "^1.0.1" + pretty-ms "^2.0.0" + repeating "^2.0.0" + require-precompiled "^0.1.0" + resolve-cwd "^1.0.0" + semver "^5.3.0" + set-immediate-shim "^1.0.1" + source-map-support "^0.4.0" + stack-utils "^0.4.0" + strip-ansi "^3.0.1" + strip-bom "^2.0.0" + time-require "^0.1.2" + unique-temp-dir "^1.0.0" + update-notifier "^1.0.0" + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +aws4@^1.2.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755" + +babel-cli@6.18.x: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.18.0.tgz#92117f341add9dead90f6fa7d0a97c0cc08ec186" + dependencies: + babel-core "^6.18.0" + babel-polyfill "^6.16.0" + babel-register "^6.18.0" + babel-runtime "^6.9.0" + commander "^2.8.1" + convert-source-map "^1.1.0" + fs-readdir-recursive "^1.0.0" + glob "^5.0.5" + lodash "^4.2.0" + output-file-sync "^1.1.0" + path-is-absolute "^1.0.0" + slash "^1.0.0" + source-map "^0.5.0" + v8flags "^2.0.10" + optionalDependencies: + chokidar "^1.0.0" + +babel-code-frame@^6.16.0: + version "6.16.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.16.0.tgz#f90e60da0862909d3ce098733b5d3987c97cb8de" + dependencies: + chalk "^1.1.0" + esutils "^2.0.2" + js-tokens "^2.0.0" + +babel-core@^6.17.0, babel-core@^6.18.0: + version "6.18.2" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.18.2.tgz#d8bb14dd6986fa4f3566a26ceda3964fa0e04e5b" + dependencies: + babel-code-frame "^6.16.0" + babel-generator "^6.18.0" + babel-helpers "^6.16.0" + babel-messages "^6.8.0" + babel-register "^6.18.0" + babel-runtime "^6.9.1" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + babylon "^6.11.0" + convert-source-map "^1.1.0" + debug "^2.1.1" + json5 "^0.5.0" + lodash "^4.2.0" + minimatch "^3.0.2" + path-is-absolute "^1.0.0" + private "^0.1.6" + slash "^1.0.0" + source-map "^0.5.0" + +babel-generator@^6.1.0, babel-generator@^6.18.0: + version "6.19.0" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.19.0.tgz#9b2f244204777a3d6810ec127c673c87b349fac5" + dependencies: + babel-messages "^6.8.0" + babel-runtime "^6.9.0" + babel-types "^6.19.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.2.0" + source-map "^0.5.0" + +babel-helper-bindify-decorators@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.18.0.tgz#fc00c573676a6e702fffa00019580892ec8780a5" + dependencies: + babel-runtime "^6.0.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-helper-builder-binary-assignment-operator-visitor@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.18.0.tgz#8ae814989f7a53682152e3401a04fabd0bb333a6" + dependencies: + babel-helper-explode-assignable-expression "^6.18.0" + babel-runtime "^6.0.0" + babel-types "^6.18.0" + +babel-helper-call-delegate@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.18.0.tgz#05b14aafa430884b034097ef29e9f067ea4133bd" + dependencies: + babel-helper-hoist-variables "^6.18.0" + babel-runtime "^6.0.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-helper-define-map@^6.18.0, babel-helper-define-map@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.18.0.tgz#8d6c85dc7fbb4c19be3de40474d18e97c3676ec2" + dependencies: + babel-helper-function-name "^6.18.0" + babel-runtime "^6.9.0" + babel-types "^6.18.0" + lodash "^4.2.0" + +babel-helper-explode-assignable-expression@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.18.0.tgz#14b8e8c2d03ad735d4b20f1840b24cd1f65239fe" + dependencies: + babel-runtime "^6.0.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-helper-explode-class@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.18.0.tgz#c44f76f4fa23b9c5d607cbac5d4115e7a76f62cb" + dependencies: + babel-helper-bindify-decorators "^6.18.0" + babel-runtime "^6.0.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-helper-function-name@^6.18.0, babel-helper-function-name@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.18.0.tgz#68ec71aeba1f3e28b2a6f0730190b754a9bf30e6" + dependencies: + babel-helper-get-function-arity "^6.18.0" + babel-runtime "^6.0.0" + babel-template "^6.8.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-helper-get-function-arity@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.18.0.tgz#a5b19695fd3f9cdfc328398b47dafcd7094f9f24" + dependencies: + babel-runtime "^6.0.0" + babel-types "^6.18.0" + +babel-helper-hoist-variables@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.18.0.tgz#a835b5ab8b46d6de9babefae4d98ea41e866b82a" + dependencies: + babel-runtime "^6.0.0" + babel-types "^6.18.0" + +babel-helper-optimise-call-expression@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.18.0.tgz#9261d0299ee1a4f08a6dd28b7b7c777348fd8f0f" + dependencies: + babel-runtime "^6.0.0" + babel-types "^6.18.0" + +babel-helper-regex@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.18.0.tgz#ae0ebfd77de86cb2f1af258e2cc20b5fe893ecc6" + dependencies: + babel-runtime "^6.9.0" + babel-types "^6.18.0" + lodash "^4.2.0" + +babel-helper-remap-async-to-generator@^6.16.0, babel-helper-remap-async-to-generator@^6.16.2: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.18.0.tgz#336cdf3cab650bb191b02fc16a3708e7be7f9ce5" + dependencies: + babel-helper-function-name "^6.18.0" + babel-runtime "^6.0.0" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-helper-replace-supers@^6.18.0, babel-helper-replace-supers@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.18.0.tgz#28ec69877be4144dbd64f4cc3a337e89f29a924e" + dependencies: + babel-helper-optimise-call-expression "^6.18.0" + babel-messages "^6.8.0" + babel-runtime "^6.0.0" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-helpers@^6.16.0: + version "6.16.0" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.16.0.tgz#1095ec10d99279460553e67eb3eee9973d3867e3" + dependencies: + babel-runtime "^6.0.0" + babel-template "^6.16.0" + +babel-messages@^6.8.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.8.0.tgz#bf504736ca967e6d65ef0adb5a2a5f947c8e0eb9" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-ava-throws-helper@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-ava-throws-helper/-/babel-plugin-ava-throws-helper-0.1.0.tgz#951107708a12208026bf8ca4cef18a87bc9b0cfe" + dependencies: + babel-template "^6.7.0" + babel-types "^6.7.2" + +babel-plugin-check-es2015-constants@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.8.0.tgz#dbf024c32ed37bfda8dee1e76da02386a8d26fe7" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-detective@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-detective/-/babel-plugin-detective-2.0.0.tgz#6e642e83c22a335279754ebe2d754d2635f49f13" + +babel-plugin-espower@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-espower/-/babel-plugin-espower-2.3.1.tgz#d15e904bc9949b14ac233b7965c2a5dc7a19a6a9" + dependencies: + babel-generator "^6.1.0" + babylon "^6.1.0" + call-matcher "^1.0.0" + core-js "^2.0.0" + espower-location-detector "^0.1.1" + espurify "^1.6.0" + estraverse "^4.1.1" + +babel-plugin-syntax-async-functions@6.13.x, babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + +babel-plugin-syntax-async-generators@^6.5.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" + +babel-plugin-syntax-class-properties@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" + +babel-plugin-syntax-decorators@^6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" + +babel-plugin-syntax-dynamic-import@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + +babel-plugin-syntax-trailing-function-commas@^6.3.13: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.13.0.tgz#2b84b7d53dd744f94ff1fad7669406274b23f541" + +babel-plugin-transform-async-generator-functions@^6.17.0: + version "6.17.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.17.0.tgz#d0b5a2b2f0940f2b245fa20a00519ed7bc6cae54" + dependencies: + babel-helper-remap-async-to-generator "^6.16.2" + babel-plugin-syntax-async-generators "^6.5.0" + babel-runtime "^6.0.0" + +babel-plugin-transform-async-to-generator@^6.16.0: + version "6.16.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.16.0.tgz#19ec36cb1486b59f9f468adfa42ce13908ca2999" + dependencies: + babel-helper-remap-async-to-generator "^6.16.0" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.0.0" + +babel-plugin-transform-class-properties@^6.18.0: + version "6.19.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.19.0.tgz#1274b349abaadc835164e2004f4a2444a2788d5f" + dependencies: + babel-helper-function-name "^6.18.0" + babel-plugin-syntax-class-properties "^6.8.0" + babel-runtime "^6.9.1" + babel-template "^6.15.0" + +babel-plugin-transform-decorators@^6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.13.0.tgz#82d65c1470ae83e2d13eebecb0a1c2476d62da9d" + dependencies: + babel-helper-define-map "^6.8.0" + babel-helper-explode-class "^6.8.0" + babel-plugin-syntax-decorators "^6.13.0" + babel-runtime "^6.0.0" + babel-template "^6.8.0" + babel-types "^6.13.0" + +babel-plugin-transform-es2015-arrow-functions@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.8.0.tgz#5b63afc3181bdc9a8c4d481b5a4f3f7d7fef3d9d" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.8.0.tgz#ed95d629c4b5a71ae29682b998f70d9833eb366d" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-block-scoping@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.18.0.tgz#3bfdcfec318d46df22525cdea88f1978813653af" + dependencies: + babel-runtime "^6.9.0" + babel-template "^6.15.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + lodash "^4.2.0" + +babel-plugin-transform-es2015-classes@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.18.0.tgz#ffe7a17321bf83e494dcda0ae3fc72df48ffd1d9" + dependencies: + babel-helper-define-map "^6.18.0" + babel-helper-function-name "^6.18.0" + babel-helper-optimise-call-expression "^6.18.0" + babel-helper-replace-supers "^6.18.0" + babel-messages "^6.8.0" + babel-runtime "^6.9.0" + babel-template "^6.14.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-plugin-transform-es2015-computed-properties@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.8.0.tgz#f51010fd61b3bd7b6b60a5fdfd307bb7a5279870" + dependencies: + babel-helper-define-map "^6.8.0" + babel-runtime "^6.0.0" + babel-template "^6.8.0" + +babel-plugin-transform-es2015-destructuring@^6.18.0, babel-plugin-transform-es2015-destructuring@^6.6.5: + version "6.19.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.19.0.tgz#ff1d911c4b3f4cab621bd66702a869acd1900533" + dependencies: + babel-runtime "^6.9.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.6.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.8.0.tgz#fd8f7f7171fc108cc1c70c3164b9f15a81c25f7d" + dependencies: + babel-runtime "^6.0.0" + babel-types "^6.8.0" + +babel-plugin-transform-es2015-for-of@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.18.0.tgz#4c517504db64bf8cfc119a6b8f177211f2028a70" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-function-name@^6.5.0, babel-plugin-transform-es2015-function-name@^6.9.0: + version "6.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.9.0.tgz#8c135b17dbd064e5bba56ec511baaee2fca82719" + dependencies: + babel-helper-function-name "^6.8.0" + babel-runtime "^6.9.0" + babel-types "^6.9.0" + +babel-plugin-transform-es2015-literals@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.8.0.tgz#50aa2e5c7958fc2ab25d74ec117e0cc98f046468" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-modules-amd@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.18.0.tgz#49a054cbb762bdf9ae2d8a807076cfade6141e40" + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.18.0" + babel-runtime "^6.0.0" + babel-template "^6.8.0" + +babel-plugin-transform-es2015-modules-commonjs@^6.18.0, babel-plugin-transform-es2015-modules-commonjs@^6.7.4: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.18.0.tgz#c15ae5bb11b32a0abdcc98a5837baa4ee8d67bcc" + dependencies: + babel-plugin-transform-strict-mode "^6.18.0" + babel-runtime "^6.0.0" + babel-template "^6.16.0" + babel-types "^6.18.0" + +babel-plugin-transform-es2015-modules-systemjs@^6.18.0: + version "6.19.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.19.0.tgz#50438136eba74527efa00a5b0fefaf1dc4071da6" + dependencies: + babel-helper-hoist-variables "^6.18.0" + babel-runtime "^6.11.6" + babel-template "^6.14.0" + +babel-plugin-transform-es2015-modules-umd@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.18.0.tgz#23351770ece5c1f8e83ed67cb1d7992884491e50" + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.18.0" + babel-runtime "^6.0.0" + babel-template "^6.8.0" + +babel-plugin-transform-es2015-object-super@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.8.0.tgz#1b858740a5a4400887c23dcff6f4d56eea4a24c5" + dependencies: + babel-helper-replace-supers "^6.8.0" + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-parameters@^6.18.0, babel-plugin-transform-es2015-parameters@^6.7.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.18.0.tgz#9b2cfe238c549f1635ba27fc1daa858be70608b1" + dependencies: + babel-helper-call-delegate "^6.18.0" + babel-helper-get-function-arity "^6.18.0" + babel-runtime "^6.9.0" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-plugin-transform-es2015-shorthand-properties@^6.18.0, babel-plugin-transform-es2015-shorthand-properties@^6.5.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.18.0.tgz#e2ede3b7df47bf980151926534d1dd0cbea58f43" + dependencies: + babel-runtime "^6.0.0" + babel-types "^6.18.0" + +babel-plugin-transform-es2015-spread@^6.3.13, babel-plugin-transform-es2015-spread@^6.6.5: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.8.0.tgz#0217f737e3b821fa5a669f187c6ed59205f05e9c" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-sticky-regex@^6.3.13, babel-plugin-transform-es2015-sticky-regex@^6.5.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.8.0.tgz#e73d300a440a35d5c64f5c2a344dc236e3df47be" + dependencies: + babel-helper-regex "^6.8.0" + babel-runtime "^6.0.0" + babel-types "^6.8.0" + +babel-plugin-transform-es2015-template-literals@^6.6.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.8.0.tgz#86eb876d0a2c635da4ec048b4f7de9dfc897e66b" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.18.0.tgz#0b14c48629c90ff47a0650077f6aa699bee35798" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-unicode-regex@^6.3.13, babel-plugin-transform-es2015-unicode-regex@^6.5.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.11.0.tgz#6298ceabaad88d50a3f4f392d8de997260f6ef2c" + dependencies: + babel-helper-regex "^6.8.0" + babel-runtime "^6.0.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.8.0.tgz#db25742e9339eade676ca9acec46f955599a68a4" + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.8.0" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.0.0" + +babel-plugin-transform-object-assign@6.8.x: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-assign/-/babel-plugin-transform-object-assign-6.8.0.tgz#76e17f2dc0f36f14f548b9afd7aaef58d29ebb75" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-object-rest-spread@^6.16.0: + version "6.19.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.19.0.tgz#f6ac428ee3cb4c6aa00943ed1422ce813603b34c" + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.0.0" + +babel-plugin-transform-regenerator@6.16.x, babel-plugin-transform-regenerator@^6.16.0: + version "6.16.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.16.1.tgz#a75de6b048a14154aae14b0122756c5bed392f59" + dependencies: + babel-runtime "^6.9.0" + babel-types "^6.16.0" + private "~0.1.5" + +babel-plugin-transform-runtime@6.15.x, babel-plugin-transform-runtime@^6.15.0: + version "6.15.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.15.0.tgz#3d75b4d949ad81af157570273846fb59aeb0d57c" + dependencies: + babel-runtime "^6.9.0" + +babel-plugin-transform-strict-mode@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.18.0.tgz#df7cf2991fe046f44163dcd110d5ca43bc652b9d" + dependencies: + babel-runtime "^6.0.0" + babel-types "^6.18.0" + +babel-polyfill@^6.16.0: + version "6.16.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.16.0.tgz#2d45021df87e26a374b6d4d1a9c65964d17f2422" + dependencies: + babel-runtime "^6.9.1" + core-js "^2.4.0" + regenerator-runtime "^0.9.5" + +babel-preset-es2015-node4@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/babel-preset-es2015-node4/-/babel-preset-es2015-node4-2.1.0.tgz#9852f281e2332b57d49c189841ac25466a6ebe98" + dependencies: + babel-plugin-transform-es2015-destructuring "^6.6.5" + babel-plugin-transform-es2015-function-name "^6.5.0" + babel-plugin-transform-es2015-modules-commonjs "^6.7.4" + babel-plugin-transform-es2015-parameters "^6.7.0" + babel-plugin-transform-es2015-shorthand-properties "^6.5.0" + babel-plugin-transform-es2015-spread "^6.6.5" + babel-plugin-transform-es2015-sticky-regex "^6.5.0" + babel-plugin-transform-es2015-unicode-regex "^6.5.0" + +babel-preset-es2015@6.18.x, babel-preset-es2015@^6.16.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.18.0.tgz#b8c70df84ec948c43dcf2bf770e988eb7da88312" + dependencies: + babel-plugin-check-es2015-constants "^6.3.13" + babel-plugin-transform-es2015-arrow-functions "^6.3.13" + babel-plugin-transform-es2015-block-scoped-functions "^6.3.13" + babel-plugin-transform-es2015-block-scoping "^6.18.0" + babel-plugin-transform-es2015-classes "^6.18.0" + babel-plugin-transform-es2015-computed-properties "^6.3.13" + babel-plugin-transform-es2015-destructuring "^6.18.0" + babel-plugin-transform-es2015-duplicate-keys "^6.6.0" + babel-plugin-transform-es2015-for-of "^6.18.0" + babel-plugin-transform-es2015-function-name "^6.9.0" + babel-plugin-transform-es2015-literals "^6.3.13" + babel-plugin-transform-es2015-modules-amd "^6.18.0" + babel-plugin-transform-es2015-modules-commonjs "^6.18.0" + babel-plugin-transform-es2015-modules-systemjs "^6.18.0" + babel-plugin-transform-es2015-modules-umd "^6.18.0" + babel-plugin-transform-es2015-object-super "^6.3.13" + babel-plugin-transform-es2015-parameters "^6.18.0" + babel-plugin-transform-es2015-shorthand-properties "^6.18.0" + babel-plugin-transform-es2015-spread "^6.3.13" + babel-plugin-transform-es2015-sticky-regex "^6.3.13" + babel-plugin-transform-es2015-template-literals "^6.6.0" + babel-plugin-transform-es2015-typeof-symbol "^6.18.0" + babel-plugin-transform-es2015-unicode-regex "^6.3.13" + babel-plugin-transform-regenerator "^6.16.0" + +babel-preset-stage-2@^6.17.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.18.0.tgz#9eb7bf9a8e91c68260d5ba7500493caaada4b5b5" + dependencies: + babel-plugin-syntax-dynamic-import "^6.18.0" + babel-plugin-transform-class-properties "^6.18.0" + babel-plugin-transform-decorators "^6.13.0" + babel-preset-stage-3 "^6.17.0" + +babel-preset-stage-3@^6.17.0: + version "6.17.0" + resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.17.0.tgz#b6638e46db6e91e3f889013d8ce143917c685e39" + dependencies: + babel-plugin-syntax-trailing-function-commas "^6.3.13" + babel-plugin-transform-async-generator-functions "^6.17.0" + babel-plugin-transform-async-to-generator "^6.16.0" + babel-plugin-transform-exponentiation-operator "^6.3.13" + babel-plugin-transform-object-rest-spread "^6.16.0" + +babel-register@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.18.0.tgz#892e2e03865078dd90ad2c715111ec4449b32a68" + dependencies: + babel-core "^6.18.0" + babel-runtime "^6.11.6" + core-js "^2.4.0" + home-or-tmp "^2.0.0" + lodash "^4.2.0" + mkdirp "^0.5.1" + source-map-support "^0.4.2" + +babel-runtime@6.18.x, babel-runtime@^6.0.0, babel-runtime@^6.11.6, babel-runtime@^6.9.0, babel-runtime@^6.9.1: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.18.0.tgz#0f4177ffd98492ef13b9f823e9994a02584c9078" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.9.5" + +babel-template@^6.14.0, babel-template@^6.15.0, babel-template@^6.16.0, babel-template@^6.7.0, babel-template@^6.8.0: + version "6.16.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.16.0.tgz#e149dd1a9f03a35f817ddbc4d0481988e7ebc8ca" + dependencies: + babel-runtime "^6.9.0" + babel-traverse "^6.16.0" + babel-types "^6.16.0" + babylon "^6.11.0" + lodash "^4.2.0" + +babel-traverse@^6.16.0, babel-traverse@^6.18.0: + version "6.19.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.19.0.tgz#68363fb821e26247d52a519a84b2ceab8df4f55a" + dependencies: + babel-code-frame "^6.16.0" + babel-messages "^6.8.0" + babel-runtime "^6.9.0" + babel-types "^6.19.0" + babylon "^6.11.0" + debug "^2.2.0" + globals "^9.0.0" + invariant "^2.2.0" + lodash "^4.2.0" + +babel-types@^6.13.0, babel-types@^6.16.0, babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.7.2, babel-types@^6.8.0, babel-types@^6.9.0: + version "6.19.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.19.0.tgz#8db2972dbed01f1192a8b602ba1e1e4c516240b9" + dependencies: + babel-runtime "^6.9.1" + esutils "^2.0.2" + lodash "^4.2.0" + to-fast-properties "^1.0.1" + +babylon@^6.1.0, babylon@^6.11.0: + version "6.14.1" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.14.1.tgz#956275fab72753ad9b3435d7afe58f8bf0a29815" + +balanced-match@^0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" + +bcrypt-pbkdf@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz#3ca76b85241c7170bf7d9703e7b9aa74630040d4" + dependencies: + tweetnacl "^0.14.3" + +binary-extensions@^1.0.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.7.0.tgz#6c1610db163abfb34edfe42fa423343a1e01185d" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + +bluebird@^3.0.0, bluebird@^3.4.1: + version "3.4.6" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.6.tgz#01da8d821d87813d158967e743d5fe6c62cf8c0f" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +boxen@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6" + dependencies: + ansi-align "^1.1.0" + camelcase "^2.1.0" + chalk "^1.1.1" + cli-boxes "^1.0.0" + filled-array "^1.0.0" + object-assign "^4.0.1" + repeating "^2.0.0" + string-width "^1.0.1" + widest-line "^1.0.0" + +brace-expansion@^1.0.0: + version "1.1.6" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" + dependencies: + balanced-match "^0.4.1" + concat-map "0.0.1" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +buf-compare@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buf-compare/-/buf-compare-1.0.1.tgz#fef28da8b8113a0a0db4430b0b6467b69730b34a" + +buffer-shims@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" + +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +caching-transform@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-1.0.1.tgz#6dbdb2f20f8d8fbce79f3e94e9d1742dcdf5c0a1" + dependencies: + md5-hex "^1.2.0" + mkdirp "^0.5.1" + write-file-atomic "^1.1.4" + +call-matcher@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/call-matcher/-/call-matcher-1.0.0.tgz#eafa31036dbfaa9c0d1716f12ddacfd9c69ef22f" + dependencies: + core-js "^2.0.0" + deep-equal "^1.0.0" + espurify "^1.6.0" + estraverse "^4.0.0" + +call-signature@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/call-signature/-/call-signature-0.0.2.tgz#a84abc825a55ef4cb2b028bd74e205a65b9a4996" + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^2.0.0, camelcase@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + +capture-stack-trace@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" + +caseless@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" + +chalk@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" + dependencies: + ansi-styles "~1.0.0" + has-color "~0.1.0" + strip-ansi "~0.1.0" + +chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chokidar@^1.0.0, chokidar@^1.4.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2" + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + +ci-info@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.0.0.tgz#dc5285f2b4e251821683681c381c3388f46ec534" + +clean-yaml-object@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz#63fb110dc2ce1a84dc21f6d9334876d010ae8b68" + +cli-boxes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" + +cli-cursor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" + dependencies: + restore-cursor "^1.0.1" + +cli-spinners@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c" + +cli-truncate@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" + dependencies: + slice-ansi "0.0.4" + string-width "^1.0.1" + +co-with-promise@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co-with-promise/-/co-with-promise-4.6.0.tgz#413e7db6f5893a60b942cf492c4bec93db415ab7" + dependencies: + pinkie-promise "^1.0.0" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" + dependencies: + delayed-stream "~1.0.0" + +commander@^2.8.1, commander@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" + dependencies: + graceful-readlink ">= 1.0.0" + +common-path-prefix@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-1.0.0.tgz#cd52f6f0712e0baab97d6f9732874f22f47752c0" + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +configstore@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1" + dependencies: + dot-prop "^3.0.0" + graceful-fs "^4.1.2" + mkdirp "^0.5.0" + object-assign "^4.0.1" + os-tmpdir "^1.0.0" + osenv "^0.1.0" + uuid "^2.0.1" + write-file-atomic "^1.1.2" + xdg-basedir "^2.0.0" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +convert-source-map@^1.1.0, convert-source-map@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.3.0.tgz#e9f3e9c6e2728efc2676696a70eb382f73106a67" + +core-assert@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/core-assert/-/core-assert-0.2.1.tgz#f85e2cf9bfed28f773cc8b3fa5c5b69bdc02fe3f" + dependencies: + buf-compare "^1.0.0" + is-error "^2.2.0" + +core-js@^2.0.0, core-js@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +create-error-class@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" + dependencies: + capture-stack-trace "^1.0.0" + +cross-spawn@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + dependencies: + array-find-index "^1.0.1" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + +date-time@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/date-time/-/date-time-0.1.1.tgz#ed2f6d93d9790ce2fd66d5b5ff3edd5bbcbf3b07" + +debug@^2.1.1, debug@^2.2.0: + version "2.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" + dependencies: + ms "0.7.2" + +debug@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" + dependencies: + ms "0.7.1" + +decamelize@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +deep-equal@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + +deep-extend@~0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + dependencies: + repeating "^2.0.0" + +dot-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" + dependencies: + is-obj "^1.0.0" + +duplexer2@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + dependencies: + readable-stream "^2.0.2" + +eastasianwidth@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.1.1.tgz#44d656de9da415694467335365fb3147b8572b7c" + +ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.1.0" + +empower-core@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/empower-core/-/empower-core-0.6.1.tgz#6c187f502fcef7554d57933396aac655483772b1" + dependencies: + call-signature "0.0.2" + core-js "^2.0.0" + +error-ex@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9" + dependencies: + is-arrayish "^0.2.1" + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +espower-location-detector@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/espower-location-detector/-/espower-location-detector-0.1.2.tgz#d43be738af3e0b18197eeb5c22b95512dee6b83c" + dependencies: + is-url "^1.2.1" + path-is-absolute "^1.0.0" + source-map "^0.5.0" + xtend "^4.0.0" + +espurify@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/espurify/-/espurify-1.6.0.tgz#6cb993582d9422bd6f2d4b258aadb14833f394f0" + dependencies: + core-js "^2.0.0" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +exit-hook@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + +extend@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + +extsprintf@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" + +figures@^1.4.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +filename-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775" + +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +filled-array@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/filled-array/-/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84" + +find-cache-dir@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" + dependencies: + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^1.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +fn-name@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7" + +for-in@^0.1.5: + version "0.1.6" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.6.tgz#c9f96e89bfad18a545af5ec3ed352a1d9e5b4dc8" + +for-own@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.4.tgz#0149b41a39088c7515f51ebe1c1386d45f935072" + dependencies: + for-in "^0.1.5" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@~2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +fs-readdir-recursive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +fsevents@^1.0.0: + version "1.0.15" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.0.15.tgz#fa63f590f3c2ad91275e4972a6cea545fb0aae44" + dependencies: + nan "^2.3.0" + node-pre-gyp "^0.6.29" + +fstream-ignore@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^3.0.0" + +fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +gauge@~2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.1.tgz#388473894fe8be5e13ffcdb8b93e4ed0616428c7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-color "^0.1.7" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +generate-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" + +generate-object-property@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" + dependencies: + is-property "^1.0.0" + +get-port@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-2.1.0.tgz#8783f9dcebd1eea495a334e1a6a251e78887ab1a" + dependencies: + pinkie-promise "^2.0.0" + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + +getpass@^0.1.1: + version "0.1.6" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6" + dependencies: + assert-plus "^1.0.0" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob@^5.0.5: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.3, glob@^7.0.5: + version "7.1.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^9.0.0: + version "9.14.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.14.0.tgz#8859936af0038741263053b39d0e76ca241e4034" + +globby@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +got@^5.0.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35" + dependencies: + create-error-class "^3.0.1" + duplexer2 "^0.1.4" + is-redirect "^1.0.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + lowercase-keys "^1.0.0" + node-status-codes "^1.0.0" + object-assign "^4.0.1" + parse-json "^2.1.0" + pinkie-promise "^2.0.0" + read-all-stream "^3.0.0" + readable-stream "^2.0.5" + timed-out "^3.0.0" + unzip-response "^1.0.2" + url-parse-lax "^1.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.4: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + +har-validator@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" + dependencies: + chalk "^1.1.1" + commander "^2.9.0" + is-my-json-valid "^2.12.4" + pinkie-promise "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-color@^0.1.7, has-color@~0.1.0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" + +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +hosted-git-info@^2.1.4: + version "2.1.5" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +ignore-by-default@^1.0.0, ignore-by-default@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + dependencies: + repeating "^2.0.0" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +ini@~1.3.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" + +invariant@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" + dependencies: + loose-envify "^1.0.0" + +irregular-plurals@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-1.2.0.tgz#38f299834ba8c00c30be9c554e137269752ff3ac" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.0.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b" + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-ci@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e" + dependencies: + ci-info "^1.0.0" + +is-dotfile@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-error@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-error/-/is-error-2.2.1.tgz#684a96d84076577c98f4cdb40c6d26a5123bf19c" + +is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-finite@^1.0.0, is-finite@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-generator-fn@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a" + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + +is-my-json-valid@^2.12.4: + version "2.15.0" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b" + dependencies: + generate-function "^2.0.0" + generate-object-property "^1.1.0" + jsonpointer "^4.0.0" + xtend "^4.0.0" + +is-npm@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" + +is-number@^2.0.2, is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + +is-observable@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-0.2.0.tgz#b361311d83c6e5d726cabf5e250b0237106f5ae2" + dependencies: + symbol-observable "^0.2.2" + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + +is-property@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + +is-redirect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + +is-retry-allowed@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + +is-stream@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +is-url@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.2.tgz#498905a593bf47cc2d9e7f738372bbf7696c7f26" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isexe@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +jodid25519@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" + dependencies: + jsbn "~0.1.0" + +js-tokens@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-2.0.0.tgz#79903f5563ee778cc1162e6dcf1a0027c97f9cb5" + +jsbn@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +json5@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.0.tgz#9b20715b026cbe3778fd769edccd822d8332a5b2" + +jsonpointer@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.0.tgz#6661e161d2fc445f19f98430231343722e1fcbd5" + +jsprim@^1.2.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252" + dependencies: + extsprintf "1.0.2" + json-schema "0.2.3" + verror "1.3.6" + +kind-of@^3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.0.4.tgz#7b8ecf18a4e17f8269d73b501c9f232c96887a74" + dependencies: + is-buffer "^1.0.2" + +last-line-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/last-line-stream/-/last-line-stream-1.0.0.tgz#d1b64d69f86ff24af2d04883a2ceee14520a5600" + dependencies: + through2 "^2.0.0" + +latest-version@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b" + dependencies: + package-json "^2.0.0" + +lazy-req@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac" + +load-json-file@^1.0.0, load-json-file@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +lodash.debounce@^4.0.3: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + +lodash.difference@^4.3.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" + +lodash.flatten@^4.2.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + +lodash.isequal@4.4.x, lodash.isequal@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.4.0.tgz#6295768e98e14dc15ce8d362ef6340db82852031" + +lodash.merge@4.6.x: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" + +lodash@^4.2.0: + version "4.17.2" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.2.tgz#34a3055babe04ce42467b607d700072c7ff6bf42" + +loose-envify@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.0.tgz#6b26248c42f6d4fa4b0d8542f78edfcde35642a8" + dependencies: + js-tokens "^2.0.0" + +loud-rejection@^1.0.0, loud-rejection@^1.2.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lowercase-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + +lru-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.1.tgz#1343955edaf2e37d9b9e7ee7241e27c4b9fb72be" + dependencies: + pseudomap "^1.0.1" + yallist "^2.0.0" + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + +matcher@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/matcher/-/matcher-0.1.2.tgz#ef20cbde64c24c50cc61af5b83ee0b1b8ff00101" + dependencies: + escape-string-regexp "^1.0.4" + +max-timeout@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/max-timeout/-/max-timeout-1.0.0.tgz#b68f69a2f99e0b476fd4cb23e2059ca750715e1f" + +md5-hex@^1.2.0, md5-hex@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-1.3.0.tgz#d2c4afe983c4370662179b8cad145219135046c4" + dependencies: + md5-o-matic "^0.1.1" + +md5-o-matic@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3" + +meow@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +micromatch@^2.1.5: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +mime-db@~1.25.0: + version "1.25.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.25.0.tgz#c18dbd7c73a5dbf6f44a024dc0d165a1e7b1c392" + +mime-types@^2.1.12, mime-types@~2.1.7: + version "2.1.13" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.13.tgz#e07aaa9c6c6b9a7ca3012c69003ad25a39e92a88" + dependencies: + mime-db "~1.25.0" + +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" + dependencies: + brace-expansion "^1.0.0" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@^1.1.3, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +ms@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" + +ms@0.7.2, ms@^0.7.1: + version "0.7.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" + +multimatch@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" + dependencies: + array-differ "^1.0.0" + array-union "^1.0.1" + arrify "^1.0.0" + minimatch "^3.0.0" + +nan@^2.3.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.4.0.tgz#fb3c59d45fe4effe215f0b890f8adf6eb32d2232" + +node-pre-gyp@^0.6.29: + version "0.6.31" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.31.tgz#d8a00ddaa301a940615dbcc8caad4024d58f6017" + dependencies: + mkdirp "~0.5.1" + nopt "~3.0.6" + npmlog "^4.0.0" + rc "~1.1.6" + request "^2.75.0" + rimraf "~2.5.4" + semver "~5.3.0" + tar "~2.2.1" + tar-pack "~3.3.0" + +node-status-codes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" + +nopt@~3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: + version "2.3.5" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a" + +npmlog@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.1.tgz#d14f503b4cd79710375553004ba96e6662fbc0b8" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.1" + set-blocking "~2.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +oauth-sign@~0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +object-assign@^4.0.1, object-assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +observable-to-promise@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/observable-to-promise/-/observable-to-promise-0.4.0.tgz#28afe71645308f2d41d71f47ad3fece1a377e52b" + dependencies: + is-observable "^0.2.0" + symbol-observable "^0.2.2" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +once@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" + dependencies: + wrappy "1" + +onetime@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + +option-chain@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/option-chain/-/option-chain-0.1.1.tgz#e9b811e006f1c0f54802f28295bfc8970f8dcfbd" + dependencies: + object-assign "^4.0.1" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@^0.1.0: + version "0.1.3" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.3.tgz#83cf05c6d6458fc4d5ac6362ea325d92f2754217" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +output-file-sync@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" + dependencies: + graceful-fs "^4.1.4" + mkdirp "^0.5.1" + object-assign "^4.1.0" + +package-hash@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-1.2.0.tgz#003e56cd57b736a6ed6114cc2b81542672770e44" + dependencies: + md5-hex "^1.3.0" + +package-json@^2.0.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb" + dependencies: + got "^5.0.0" + registry-auth-token "^3.0.1" + registry-url "^3.0.3" + semver "^5.1.0" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^2.1.0, parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + +parse-ms@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-0.1.2.tgz#dd3fa25ed6c2efc7bdde12ad9b46c163aa29224e" + +parse-ms@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-1.0.1.tgz#56346d4749d78f23430ca0c713850aef91aa361d" + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pinkie-promise@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-1.0.0.tgz#d1da67f5482563bb7cf57f286ae2822ecfbf3670" + dependencies: + pinkie "^1.0.0" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-1.0.0.tgz#5a47f28ba1015d0201bda7bf0f358e47bec8c7e4" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +pkg-conf@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-1.1.3.tgz#378e56d6fd13e88bfb6f4a25df7a83faabddba5b" + dependencies: + find-up "^1.0.0" + load-json-file "^1.1.0" + object-assign "^4.0.1" + symbol "^0.2.1" + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + dependencies: + find-up "^1.0.0" + +plur@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/plur/-/plur-1.0.0.tgz#db85c6814f5e5e5a3b49efc28d604fec62975156" + +plur@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/plur/-/plur-2.1.2.tgz#7482452c1a0f508e3e344eaec312c91c29dc655a" + dependencies: + irregular-plurals "^1.0.0" + +power-assert-context-formatter@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/power-assert-context-formatter/-/power-assert-context-formatter-1.1.1.tgz#edba352d3ed8a603114d667265acce60d689ccdf" + dependencies: + core-js "^2.0.0" + power-assert-context-traversal "^1.1.1" + +power-assert-context-traversal@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/power-assert-context-traversal/-/power-assert-context-traversal-1.1.1.tgz#88cabca0d13b6359f07d3d3e8afa699264577ed9" + dependencies: + core-js "^2.0.0" + estraverse "^4.1.0" + +power-assert-renderer-assertion@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/power-assert-renderer-assertion/-/power-assert-renderer-assertion-1.1.1.tgz#cbfc0e77e0086a8f96af3f1d8e67b9ee7e28ce98" + dependencies: + power-assert-renderer-base "^1.1.1" + power-assert-util-string-width "^1.1.1" + +power-assert-renderer-base@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/power-assert-renderer-base/-/power-assert-renderer-base-1.1.1.tgz#96a650c6fd05ee1bc1f66b54ad61442c8b3f63eb" + +power-assert-renderer-diagram@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.1.1.tgz#7e0c82cc08a84b155e51b5ae94f59709778a65fb" + dependencies: + core-js "^2.0.0" + power-assert-renderer-base "^1.1.1" + power-assert-util-string-width "^1.1.1" + stringifier "^1.3.0" + +power-assert-renderer-succinct@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/power-assert-renderer-succinct/-/power-assert-renderer-succinct-1.1.1.tgz#c2a468b23822abd6f80e2aba5322347b09df476e" + dependencies: + core-js "^2.0.0" + power-assert-renderer-diagram "^1.1.1" + +power-assert-util-string-width@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/power-assert-util-string-width/-/power-assert-util-string-width-1.1.1.tgz#be659eb7937fdd2e6c9a77268daaf64bd5b7c592" + dependencies: + eastasianwidth "^0.1.1" + +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + +pretty-ms@^0.2.1: + version "0.2.2" + resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-0.2.2.tgz#da879a682ff33a37011046f13d627f67c73b84f6" + dependencies: + parse-ms "^0.1.0" + +pretty-ms@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-2.1.0.tgz#4257c256df3fb0b451d6affaab021884126981dc" + dependencies: + is-finite "^1.0.1" + parse-ms "^1.0.0" + plur "^1.0.0" + +private@^0.1.6, private@~0.1.5: + version "0.1.6" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.6.tgz#55c6a976d0f9bafb9924851350fe47b9b5fbb7c1" + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + +pseudomap@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +qs@~6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442" + +randomatic@^1.1.3: + version "1.1.5" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.5.tgz#5e9ef5f2d573c67bd2b8124ae90b5156e457840b" + dependencies: + is-number "^2.0.2" + kind-of "^3.0.2" + +rc@^1.0.1, rc@^1.1.6, rc@~1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~1.0.4" + +read-all-stream@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa" + dependencies: + pinkie-promise "^2.0.0" + readable-stream "^2.0.0" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2, readable-stream@^2.0.5: + version "2.2.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e" + dependencies: + buffer-shims "^1.0.0" + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +readable-stream@~2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +readable-stream@~2.1.4: + version "2.1.5" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" + dependencies: + buffer-shims "^1.0.0" + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + dependencies: + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +regenerate@^1.2.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" + +regenerator-runtime@^0.9.5: + version "0.9.6" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz#d33eb95d0d2001a4be39659707c51b0cb71ce029" + +regex-cache@^0.4.2: + version "0.4.3" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" + dependencies: + is-equal-shallow "^0.1.3" + is-primitive "^2.0.0" + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +registry-auth-token@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.1.0.tgz#997c08256e0c7999837b90e944db39d8a790276b" + dependencies: + rc "^1.1.6" + +registry-url@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + dependencies: + rc "^1.0.1" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + dependencies: + jsesc "~0.5.0" + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +request@^2.75.0: + version "2.79.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.11.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~2.0.6" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + qs "~6.3.0" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "~0.4.1" + uuid "^3.0.0" + +require-precompiled@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/require-precompiled/-/require-precompiled-0.1.0.tgz#5a1b52eb70ebed43eb982e974c85ab59571e56fa" + +resolve-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-1.0.0.tgz#4eaeea41ed040d1702457df64a42b2b07d246f9f" + dependencies: + resolve-from "^2.0.0" + +resolve-from@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" + +restore-cursor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" + dependencies: + exit-hook "^1.0.0" + onetime "^1.0.0" + +rimraf@2, rimraf@~2.5.1, rimraf@~2.5.4: + version "2.5.4" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" + dependencies: + glob "^7.0.5" + +semver-diff@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" + dependencies: + semver "^5.0.3" + +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + +set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + +signal-exit@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.1.tgz#5a4c884992b63a7acd9badb7894c3ee9cfccad81" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + +slide@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + +sort-keys@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + dependencies: + is-plain-obj "^1.0.0" + +source-map-support@^0.4.0, source-map-support@^0.4.2: + version "0.4.6" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.6.tgz#32552aa64b458392a85eab3b0b5ee61527167aeb" + dependencies: + source-map "^0.5.3" + +source-map@^0.5.0, source-map@^0.5.3: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" + +spdx-correct@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" + dependencies: + spdx-license-ids "^1.0.2" + +spdx-expression-parse@~1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" + +spdx-license-ids@^1.0.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" + +sshpk@^1.7.0: + version "1.10.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.1.tgz#30e1a5d329244974a1af61511339d595af6638b0" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jodid25519 "^1.0.0" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +stack-utils@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-0.4.0.tgz#940cb82fccfa84e8ff2f3fdf293fe78016beccd1" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +stringifier@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/stringifier/-/stringifier-1.3.0.tgz#def18342f6933db0f2dbfc9aa02175b448c17959" + dependencies: + core-js "^2.0.0" + traverse "^0.6.6" + type-name "^2.0.1" + +stringstream@~0.0.4: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + dependencies: + is-utf8 "^0.2.0" + +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + dependencies: + get-stdin "^4.0.1" + +strip-json-comments@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +symbol-observable@^0.2.2: + version "0.2.4" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-0.2.4.tgz#95a83db26186d6af7e7a18dbd9760a2f86d08f40" + +symbol@^0.2.1: + version "0.2.3" + resolved "https://registry.yarnpkg.com/symbol/-/symbol-0.2.3.tgz#3b9873b8a901e47c6efe21526a3ac372ef28bbc7" + +tar-pack@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae" + dependencies: + debug "~2.2.0" + fstream "~1.0.10" + fstream-ignore "~1.0.5" + once "~1.3.3" + readable-stream "~2.1.4" + rimraf "~2.5.1" + tar "~2.2.1" + uid-number "~0.0.6" + +tar@~2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + +the-argv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/the-argv/-/the-argv-1.0.0.tgz#0084705005730dd84db755253c931ae398db9522" + +through2@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.1.tgz#384e75314d49f32de12eebb8136b8eb6b5d59da9" + dependencies: + readable-stream "~2.0.0" + xtend "~4.0.0" + +time-require@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/time-require/-/time-require-0.1.2.tgz#f9e12cb370fc2605e11404582ba54ef5ca2b2d98" + dependencies: + chalk "^0.4.0" + date-time "^0.1.1" + pretty-ms "^0.2.1" + text-table "^0.2.0" + +timed-out@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.0.0.tgz#ff88de96030ce960eabd42487db61d3add229273" + +to-fast-properties@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320" + +tough-cookie@~2.3.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" + dependencies: + punycode "^1.4.1" + +traverse@^0.6.6: + version "0.6.6" + resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + +tunnel-agent@~0.4.1: + version "0.4.3" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.3.tgz#3da382f670f25ded78d7b3d1792119bca0b7132d" + +type-name@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/type-name/-/type-name-2.0.2.tgz#efe7d4123d8ac52afff7f40c7e4dec5266008fb4" + +typeable@0.20.x: + version "0.20.0" + resolved "https://registry.yarnpkg.com/typeable/-/typeable-0.20.0.tgz#f979c91207b7b4921377b605ee21e9847672d6e0" + +uid-number@~0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + +uid2@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82" + +unique-temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz#6dce95b2681ca003eebfb304a415f9cbabcc5385" + dependencies: + mkdirp "^0.5.1" + os-tmpdir "^1.0.1" + uid2 "0.0.3" + +unzip-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" + +update-notifier@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-1.0.2.tgz#27c90519196dc15015be02a34ea52986feab8877" + dependencies: + boxen "^0.6.0" + chalk "^1.0.0" + configstore "^2.0.0" + is-npm "^1.0.0" + latest-version "^2.0.0" + lazy-req "^1.1.0" + semver-diff "^2.0.0" + xdg-basedir "^2.0.0" + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + dependencies: + prepend-http "^1.0.1" + +user-home@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +uuid@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" + +uuid@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.0.tgz#6728fc0459c450d796a99c31837569bdf672d728" + +v8flags@^2.0.10: + version "2.0.11" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881" + dependencies: + user-home "^1.1.1" + +validatable@0.20.x: + version "0.20.1" + resolved "https://registry.yarnpkg.com/validatable/-/validatable-0.20.1.tgz#990f6361781f0f069374e3b55bf6c2753d64f875" + dependencies: + babel-runtime "6.18.x" + typeable "0.20.x" + +validate-npm-package-license@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" + dependencies: + spdx-correct "~1.0.0" + spdx-expression-parse "~1.0.0" + +verror@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" + dependencies: + extsprintf "1.0.2" + +which@^1.2.9: + version "1.2.12" + resolved "https://registry.yarnpkg.com/which/-/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192" + dependencies: + isexe "^1.1.1" + +wide-align@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad" + dependencies: + string-width "^1.0.1" + +widest-line@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c" + dependencies: + string-width "^1.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +write-file-atomic@^1.1.2, write-file-atomic@^1.1.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.2.0.tgz#14c66d4e4cb3ca0565c28cf3b7a6f3e4d5938fab" + dependencies: + graceful-fs "^4.1.2" + imurmurhash "^0.1.4" + slide "^1.1.5" + +write-json-file@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-1.2.0.tgz#2d5dfe96abc3c889057c93971aa4005efb548134" + dependencies: + graceful-fs "^4.1.2" + mkdirp "^0.5.1" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + sort-keys "^1.1.1" + write-file-atomic "^1.1.2" + +write-pkg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-1.0.0.tgz#aeb8aa9d4d788e1d893dfb0854968b543a919f57" + dependencies: + write-json-file "^1.1.0" + +xdg-basedir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2" + dependencies: + os-homedir "^1.0.0" + +xtend@^4.0.0, xtend@~4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +yallist@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.0.0.tgz#306c543835f09ee1a4cb23b7bce9ab341c91cdd4" From 9331a0c5a7003109158033896891baf2de519be5 Mon Sep 17 00:00:00 2001 From: xpeper Date: Tue, 6 Dec 2016 19:07:08 +0100 Subject: [PATCH 110/219] refactoring, simplifications (api changed) --- README.md | 70 +++++++++++++++++++++------------------- dist/documents.js | 47 +++++++++++++-------------- dist/fields.js | 8 +++-- dist/schemas.js | 32 +++++++++++++------ example/index.js | 31 ++++++++++++++++++ package.json | 2 +- src/documents.js | 34 ++++++++++---------- src/fields.js | 8 +++-- src/schemas.js | 24 +++++++++----- tests/documents.js | 71 ++++++++++++++++++++--------------------- tests/schemas.js | 29 ++++++++++------- yarn.lock | 79 +++++++++++++++++++++------------------------- 12 files changed, 246 insertions(+), 189 deletions(-) create mode 100644 example/index.js diff --git a/README.md b/README.md index 0f5cd2b..1dc6c4f 100644 --- a/README.md +++ b/README.md @@ -37,46 +37,42 @@ $ npm install --save objectschema ## Example ```js -import faker from 'faker'; // optional -import { - Document, - Schema -} from 'objectschema'; +import {Document, Schema} from 'objectschema'; let bookSchema = new Schema({ - fields: { - title: { - type: 'String', + fields: { // document fields + title: { // field name + type: 'String', // field type defaultValue: () => 'Lord of the flies', // value or function - fakeValue: () => faker.lorem.sentence() // value or function + fakeValue: () => 'Fake Title' // value or function (use e.g. `faker` for that) } } }); -let userSchema = new Schema({ - fields: { +let userSchema = new Schema({ // root document + fields: { // document fields name: { // field name - type: 'String', // field type - validate: [ + type: 'String', // field type (string) + validate: [ // field validators { validator: 'presence', // validator name message: 'is required' // validator error message } ] }, - books: { - type: [bookSchema], - validate: [ + books: { // field name + type: [bookSchema], // array of `bookSchema` documents + validate: [ // validators { - validator: 'presence', - message: 'is required' + validator: 'presence', // validator name + message: 'is required' // validator error message } ] } } }); -let data = { +let initialData = { name: 'John Smith', books: [ { @@ -85,7 +81,11 @@ let data = { ] }; -let user = new Document(userSchema, data); +let user = new Document({ + data: initialData, + schema: userSchema +}); // new document instance + user.title; // => "True Detective" await user.validate({quiet: true}); user.isValid(); // => false @@ -94,13 +94,15 @@ user.fake(); // generate fake data user.title; // => "lorem ipsum" user.reset(); // use default value user.title; // => "Lord of the flies" + +user.$title; // => field class instance ``` ## API This package consists of two core classes. The `Schema` class represents a configuration object and the `Document` represents a data object defined by the Schema. There is also the `Field` class which represents a document field. -This package also integrates [*typeable.js*](https://github.com/xpepermint/typeablejs) module for type casting and [*validatable.js*](https://github.com/xpepermint/validatablejs) for validating fields. +This package uses [*typeable.js*](https://github.com/xpepermint/typeablejs) module for type casting and [*validatable.js*](https://github.com/xpepermint/validatablejs) for validating fields. ### Schema @@ -108,7 +110,7 @@ Schema represents a configuration object which configures the `Document`. It hol A Schema can also be used as a custom type object. This way you can create a nested data structure by setting a schema instance for a field `type`. When a document is created, each schema in a tree of fields will become an instance of a Document - a tree of documents. -**Schema({mixins, fields, fakes strict, validatorOptions, typeOptions})** +**Schema({mixins, fields, strict, validators, types, firstErrorOnly})** > A class for defining document structure. @@ -117,8 +119,9 @@ A Schema can also be used as a custom type object. This way you can create a nes | mixins | [] | No | [] | A list of schema instances from which to extend the schema. | fields | Object,Function | Yes | - | An object with fields definition. You should pass a function which returns the definition object in case of self referencing. | strict | Boolean | No | true | A schema type (set to `false` to allow dynamic fields not defined in schema). -| validatorOptions | Object | No | validatable.js defaults | Configuration options for the `Validator` class, provided by the [validatable.js](https://github.com/xpepermint/validatablejs), which is used for field validation. -| typeOptions | Object | No | typeable.js defaults | Configuration options for the `cast` method provided by the [typeable.js](https://github.com/xpepermint/typeablejs), which is used for data type casting. +| validators | Object | No | validatable.js defaults | Configuration options for the `Validator` class, provided by the [validatable.js](https://github.com/xpepermint/validatablejs), which is used for field validation. +| types | Object | No | typeable.js defaults | Configuration options for the `cast` method provided by the [typeable.js](https://github.com/xpepermint/typeablejs), which is used for data type casting. +| firstErrorOnly | Boolean | No | false | When set to true, the validation stops after the first validation error. ```js new Schema({ @@ -138,30 +141,31 @@ new Schema({ }, }, strict: true, // schema mode - validatorOptions: {}, // validatable.js configuration options (see the package's page for details) - typeOptions: {} // typeable.js configuration options (see the package's page for details) + validators: {}, // validatable.js configuration options (see the package's page for details) + types: {}, // typeable.js configuration options (see the package's page for details) + firstErrorOnly: false, // validatable.js configuration options (see the package's page for details) }); ``` -This package uses [*typeable.js*](https://github.com/xpepermint/typeablejs) for data type casting. Many common data types and array types are supported, but we can also define custom types or override existing types through a `typeOptions` key. Please check package's website for a list of supported types and further information. +This package uses [*typeable.js*](https://github.com/xpepermint/typeablejs) for data type casting. Many common data types and array types are supported, but we can also define custom types or override existing types through a `types` key. Please check package's website for a list of supported types and further information. By default, all fields in a schema are set to `null`. We can set a default value for a field by setting the `defaultValue` option. -Validation is handled by the [*validatable.js*](https://github.com/xpepermint/validatablejs) package. We can configure the package by passing the `validatorOptions` option to our schema which will be passed directly to the `Validator` class. The package provides many built-in validators, allows adding custom validators and overriding existing ones. When a document is created all validator methods share document's context thus we can write context-aware checks. Please see package's website for details. +Validation is handled by the [*validatable.js*](https://github.com/xpepermint/validatablejs) package. We can configure the package by setting `validators` and `firstErrorOnly` options. The package provides many built-in validators, allows adding custom validators and overriding existing ones. When a document is created all validator methods share document's context thus we can write context-aware checks. Please see package's website for details. ### Document -A document is a schema enforced data object. All document properties and configuration options are defined by the schema. +A document is a schema enforced object. All document properties and configuration options are defined by the schema. -**Document(schema, data, parent)** +**Document({data, schema, parent})** > A class for creating schema enforced objects. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ -| schema | Schema | Yes | - | An instance of the Schema class. | data | Object | No | - | Initial data object. -| parent | Document | No | - | Parent document instance (for nesting documents). +| schema | Schema | No | Schema({strict: false}) | An instance of the Schema class. +| parent | Document | No | - | A parent document instance (for nesting documents). **Document.prototype.$parent**: Document @@ -316,7 +320,7 @@ catch (e) { When a document field is defined, another field with the same name but prefixed with the `$` sign is set. This special read-only field holds a reference to the actual field instance. ```js -let user = new Document(schema); +let user = new Document({schema}); user.name = 'John'; // actual document field user.$name; // reference to document field instance user.$name.isChanged(); // calling field instance method diff --git a/dist/documents.js b/dist/documents.js index b3ca0f8..26b50ab 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -59,31 +59,34 @@ var Document = exports.Document = function () { * Class constructor. */ - function Document(schema) { + function Document() { var _this = this; - var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + data = _ref.data, + schema = _ref.schema, + parent = _ref.parent; + (0, _classCallCheck3.default)(this, Document); Object.defineProperty(this, '$schema', { // schema instance - value: schema + value: schema || new _schemas.Schema({ strict: false }) }); Object.defineProperty(this, '$parent', { // parent document instance - value: parent + value: parent || null }); Object.defineProperty(this, '$root', { // root document instance get: function get() { return _this._getRootDocument(); } }); - Object.defineProperty(this, '$validator', { // validatable.js instance - value: this._createValidator() - }); Object.defineProperty(this, '$error', { // last document error instance value: null, writable: true }); + Object.defineProperty(this, '$validator', { // validatable.js instance + value: this._createValidator() + }); this._defineFields(); this._populateFields(data); @@ -113,7 +116,10 @@ var Document = exports.Document = function () { }, { key: '_createValidator', value: function _createValidator() { - return new _validatable.Validator((0, _extends3.default)({}, this.$schema.validatorOptions, { context: this })); + return new _validatable.Validator((0, _extends3.default)({}, { + validators: this.$schema.validators, + firstErrorOnly: this.$schema.firstErrorOnly + })); } /* @@ -126,18 +132,6 @@ var Document = exports.Document = function () { return new _fields.Field(this, name); } - /* - * Creates a new sub-document instance (a nested document). - */ - - }, { - key: '_createRelative', - value: function _createRelative(schema) { - var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - return new this.constructor(schema, data, this); - } - /* * Creates a new validation error instance. */ @@ -385,7 +379,10 @@ var Document = exports.Document = function () { }, { key: 'clone', value: function clone() { - return new this.constructor(this.$schema, this.toObject()); + return new this.constructor({ + data: this.toObject(), + schema: this.$schema + }); } /* @@ -409,9 +406,9 @@ var Document = exports.Document = function () { }, { key: 'validate', value: function validate() { - var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - _ref$quiet = _ref.quiet, - quiet = _ref$quiet === undefined ? false : _ref$quiet; + var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + _ref2$quiet = _ref2.quiet, + quiet = _ref2$quiet === undefined ? false : _ref2$quiet; var fields, path, paths; return _regenerator2.default.async(function validate$(_context) { diff --git a/dist/fields.js b/dist/fields.js index d72679f..dcf8b0e 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -81,11 +81,15 @@ var Field = exports.Field = function () { value: function _cast(value, type) { var _this = this; - var types = (0, _extends3.default)({}, this.$owner.$schema.typeOptions, { + var types = (0, _extends3.default)({}, this.$owner.$schema.types, { Schema: function Schema(value) { if ((0, _typeable.isArray)(type)) type = type[0]; // in case of {type: [Schema]} - return _this.$owner._createRelative(type, value); + return new _this.$owner.constructor({ + data: value, + schema: type, + parent: _this.$owner + }); } }); diff --git a/dist/schemas.js b/dist/schemas.js index 9e499a2..8a9d3ea 100644 --- a/dist/schemas.js +++ b/dist/schemas.js @@ -36,10 +36,11 @@ exports.Schema = function Schema() { _ref$fields = _ref.fields, fields = _ref$fields === undefined ? {} : _ref$fields, strict = _ref.strict, - _ref$validatorOptions = _ref.validatorOptions, - validatorOptions = _ref$validatorOptions === undefined ? {} : _ref$validatorOptions, - _ref$typeOptions = _ref.typeOptions, - typeOptions = _ref$typeOptions === undefined ? {} : _ref$typeOptions; + _ref$validators = _ref.validators, + validators = _ref$validators === undefined ? {} : _ref$validators, + _ref$types = _ref.types, + types = _ref$types === undefined ? {} : _ref$types, + firstErrorOnly = _ref.firstErrorOnly; (0, _classCallCheck3.default)(this, Schema); @@ -64,20 +65,31 @@ exports.Schema = function Schema() { enumerable: true // required for deep nesting }); - Object.defineProperty(this, 'validatorOptions', { // options for validatable.js + Object.defineProperty(this, 'validators', { // validatable.js configuration option get: function get() { return _utils.merge.apply(undefined, (0, _toConsumableArray3.default)(mixins.map(function (v) { - return v.validatorOptions; - })).concat([validatorOptions])); + return v.validators; + })).concat([validators])); }, enumerable: true // required for deep nesting }); - Object.defineProperty(this, 'typeOptions', { // options for typeable.js + Object.defineProperty(this, 'types', { // typeable.js configuration option get: function get() { return _utils.merge.apply(undefined, (0, _toConsumableArray3.default)(mixins.map(function (v) { - return v.typeOptions; - })).concat([typeOptions])); + return v.types; + })).concat([types])); + }, + enumerable: true // required for deep nesting + }); + + Object.defineProperty(this, 'firstErrorOnly', { // validatable.js configuration option + get: function get() { + return [false].concat(mixins.map(function (s) { + return s.firstErrorOnly; + }), firstErrorOnly).filter(function (s) { + return (0, _typeable.isBoolean)(s); + }).reverse()[0]; }, enumerable: true // required for deep nesting }); diff --git a/example/index.js b/example/index.js new file mode 100644 index 0000000..9af113b --- /dev/null +++ b/example/index.js @@ -0,0 +1,31 @@ +const {Schema, Document} = require('../dist'); + +let schema = new Schema({ // root document + fields: { // document fields + name: { // field name + type: 'String', // field type (string) + validate: [ // field validators + { + validator: 'presence', // validator name + message: 'is required' // validator error message + } + ] + } + } +}); + +let data = { + name: 'John Smith', + books: [ + { + title: 'True Detective' + } + ] +}; + +let user = new Document({data, schema}); // new document instance +console.log('title:', user.name); +console.log('$title:', user.$name.value); +user.validate({quiet: true}).then(() => { + console.log('isValid:', user.isValid()); +}); diff --git a/package.json b/package.json index 4f8e405..543a994 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "2.22.0", + "version": "3.0.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/documents.js b/src/documents.js index e7e534f..a7952d8 100644 --- a/src/documents.js +++ b/src/documents.js @@ -24,23 +24,23 @@ export class Document { * Class constructor. */ - constructor (schema, data = {}, parent = null) { + constructor ({data, schema, parent} = {}) { Object.defineProperty(this, '$schema', { // schema instance - value: schema + value: schema || new Schema({strict: false}) }); Object.defineProperty(this, '$parent', { // parent document instance - value: parent, + value: parent || null }); Object.defineProperty(this, '$root', { // root document instance - get: () => this._getRootDocument(), - }); - Object.defineProperty(this, '$validator', { // validatable.js instance - value: this._createValidator() + get: () => this._getRootDocument() }); Object.defineProperty(this, '$error', { // last document error instance value: null, writable: true }); + Object.defineProperty(this, '$validator', { // validatable.js instance + value: this._createValidator() + }); this._defineFields(); this._populateFields(data); @@ -67,7 +67,12 @@ export class Document { */ _createValidator () { - return new Validator(Object.assign({}, this.$schema.validatorOptions, {context: this})); + return new Validator( + Object.assign({}, { + validators: this.$schema.validators, + firstErrorOnly: this.$schema.firstErrorOnly + }) + ); } /* @@ -78,14 +83,6 @@ export class Document { return new Field(this, name); } - /* - * Creates a new sub-document instance (a nested document). - */ - - _createRelative (schema, data={}) { - return new this.constructor(schema, data, this); - } - /* * Creates a new validation error instance. */ @@ -285,7 +282,10 @@ export class Document { */ clone () { - return new this.constructor(this.$schema, this.toObject()); + return new this.constructor({ + data: this.toObject(), + schema: this.$schema + }); } /* diff --git a/src/fields.js b/src/fields.js index 0a94d2f..84e29a6 100644 --- a/src/fields.js +++ b/src/fields.js @@ -138,11 +138,15 @@ export class Field { */ _cast (value, type) { - let types = Object.assign({}, this.$owner.$schema.typeOptions, { + let types = Object.assign({}, this.$owner.$schema.types, { Schema: (value) => { if (isArray(type)) type = type[0]; // in case of {type: [Schema]} - return this.$owner._createRelative(type, value); + return new this.$owner.constructor({ + data: value, + schema: type, + parent: this.$owner + }); } }); diff --git a/src/schemas.js b/src/schemas.js index 1596dce..a0a2420 100644 --- a/src/schemas.js +++ b/src/schemas.js @@ -18,8 +18,9 @@ export class Schema { mixins = [], // not a property fields = {}, strict, - validatorOptions = {}, - typeOptions = {} + validators = {}, + types = {}, + firstErrorOnly } = {}) { Object.defineProperty(this, 'fields', { // document fields @@ -37,18 +38,25 @@ export class Schema { enumerable: true // required for deep nesting }); - Object.defineProperty(this, 'validatorOptions', { // options for validatable.js + Object.defineProperty(this, 'validators', { // validatable.js configuration option get: () => merge( - ...mixins.map((v) => v.validatorOptions), - validatorOptions + ...mixins.map((v) => v.validators), + validators ), enumerable: true // required for deep nesting }); - Object.defineProperty(this, 'typeOptions', { // options for typeable.js + Object.defineProperty(this, 'types', { // typeable.js configuration option get: () => merge( - ...mixins.map((v) => v.typeOptions), - typeOptions + ...mixins.map((v) => v.types), + types + ), + enumerable: true // required for deep nesting + }); + + Object.defineProperty(this, 'firstErrorOnly', { // validatable.js configuration option + get: () => ( + [false].concat(mixins.map((s) => s.firstErrorOnly), firstErrorOnly).filter((s) => isBoolean(s)).reverse()[0] ), enumerable: true // required for deep nesting }); diff --git a/tests/documents.js b/tests/documents.js index 1c266fa..d75744b 100644 --- a/tests/documents.js +++ b/tests/documents.js @@ -19,7 +19,6 @@ test('field value should be converted to the specified type', (t) => { } }) }); - let userSchema = new Schema({ fields: { name: { @@ -63,7 +62,7 @@ test('field value should be converted to the specified type', (t) => { tags: ['foo', 'bar', 100, null], keywords: ['foo', 'bar', 100, null] }; - let user = new Document(userSchema, data); + let user = new Document({data, schema: userSchema}); t.is(user.name, '100'); t.is(user.age, 35); @@ -78,20 +77,20 @@ test('field value should be converted to the specified type', (t) => { }); test('field can be of a custom type', (t) => { - let userSchema = new Schema({ + let schema = new Schema({ fields: { name: { type: 'cool' } }, - typeOptions: { + types: { cool: (v) => `${v}-cool` } }); let data = { name: 100 }; - let user = new Document(userSchema, data); + let user = new Document({data, schema}); t.is(user.name, '100-cool'); }); @@ -143,10 +142,10 @@ test('field can have a default value', (t) => { } ] }; - let user0 = new Document(userSchema); - let user1 = new Document(userSchema, data); - let book0 = new Document(bookSchema); - let book1 = new Document(bookSchema, data.books[1]) + let user0 = new Document({schema: userSchema}); + let user1 = new Document({data, schema: userSchema}); + let book0 = new Document({schema: bookSchema}); + let book1 = new Document({data: data.books[1], schema: bookSchema}); t.is(user0.name, 'yes'); t.is(user0.$name.defaultValue, 'yes'); @@ -193,8 +192,8 @@ test('field can have a fake value', (t) => { } } }); - let user0 = new Document(userSchema); - let user1 = new Document(userSchema); + let user0 = new Document({schema: userSchema}); + let user1 = new Document({schema: userSchema}); t.is(user0.$name.fakeValue, 'yes'); t.is(user0.$age.fakeValue, null); @@ -230,7 +229,7 @@ test('field can be transformed through custom setter and getter', (t) => { } } }); - let user = new Document(userSchema); + let user = new Document({schema: userSchema}); t.is(user.name, '100-set-get'); }); @@ -248,7 +247,7 @@ test('method `populate` should not set custom fields when schema strict=true', ( name: 'John', age: 35.5 }; - let user = new Document(userSchema); + let user = new Document({schema: userSchema}); user.populate(data); t.is(user.name, 'John'); @@ -269,7 +268,7 @@ test('method `populate` should set custom fields when schema strict=false', (t) name: 'John', age: 35.5 }; - let user = new Document(userSchema); + let user = new Document({schema: userSchema}); user.populate(data); t.is(user.name, 'John'); @@ -307,7 +306,7 @@ test('variable `$parent` should return the parent document', (t) => { } ] }; - let user = new Document(userSchema, data); + let user = new Document({data, schema: userSchema}); t.is(user.$parent, null); t.is(user.book.$parent, user); @@ -345,7 +344,7 @@ test('variable `$root` should return the first document in a tree of nested docu } ] }; - let user = new Document(userSchema, data); + let user = new Document({data, schema: userSchema}); t.is(user.$root, user); t.is(user.book.$root, user); @@ -384,8 +383,8 @@ test('method `getPath` should return an instance of a field at path', (t) => { } ] }; - let user0 = new Document(userSchema); - let user1 = new Document(userSchema, data); + let user0 = new Document({schema: userSchema}); + let user1 = new Document({data, schema: userSchema}); t.is(user0.getPath('name'), null); t.is(user1.getPath('name'), 'Foo'); @@ -428,8 +427,8 @@ test('method `hasPath` should check field existance at path', (t) => { } ] }; - let user0 = new Document(userSchema); - let user1 = new Document(userSchema, data); + let user0 = new Document({schema: userSchema}); + let user1 = new Document({data, schema: userSchema}); t.is(user0.hasPath('name'), true); t.is(user0.hasPath('book', 'title'), false); @@ -490,7 +489,7 @@ test('method `toObject` should convert a document into serialized data object', } ] }; - let user = new Document(userSchema, data); + let user = new Document({data, schema: userSchema}); t.deepEqual(user.toObject(), { name: 'John Smith', @@ -557,7 +556,7 @@ test('method `reset` should deeply set fields to their default values and invali } ] }; - let user = new Document(userSchema); + let user = new Document({schema: userSchema}); user.populate(data); user.$name._errors = ['foo']; @@ -608,7 +607,7 @@ test('method `clear` should deeply clear fields', (t) => { } } }); - let user = new Document(userSchema); + let user = new Document({schema: userSchema}); user.clear(); t.deepEqual(user.toObject(), { @@ -649,7 +648,7 @@ test('method `clear` should deeply clear fields', (t) => { } } }); - let user = new Document(userSchema); + let user = new Document({schema: userSchema}); user.clear(); t.deepEqual(user.toObject(), { @@ -704,7 +703,7 @@ test('method `commit` should deeply reset information about changed fields.', (t } ] }; - let user = new Document(userSchema, data); + let user = new Document({data, schema: userSchema}); t.is(user.$name.initialValue, 'Bar'); user.commit(); @@ -758,7 +757,7 @@ test('method `rollback` should deeply reset fields to their initial values', (t) } ] }; - let user = new Document(userSchema); + let user = new Document({schema: userSchema}); user.populate(data); user.rollback(); @@ -797,7 +796,7 @@ test('method `isChanged` should return `true` if at least one field has been cha } }); - let user = new Document(userSchema); + let user = new Document({schema: userSchema}); t.is(user.isChanged(), false); user.name = 'Foo'; t.is(user.$name.isChanged(), true); @@ -870,10 +869,10 @@ test('method `equals` should return `true` when the passing object looks the sam let data1 = { name: 'Mandy' }; - let user0 = new Document(new Schema(userSchema)); - let user1 = new Document(new Schema(userSchema)); - let user2 = new Document(new Schema(userSchema), data0); - let user3 = new Document(new Schema(userSchema), data1); + let user0 = new Document({schema: new Schema(userSchema)}); + let user1 = new Document({schema: new Schema(userSchema)}); + let user2 = new Document({data: data0, schema: new Schema(userSchema)}); + let user3 = new Document({data: data1, schema: new Schema(userSchema)}); t.is(user0.equals(user1), true); t.is(user0.equals(user2), false); @@ -926,7 +925,7 @@ test('method `clone` should return an exact copy of the original', (t) => { ] }; - let user = new Document(userSchema, data); + let user = new Document({data, schema: userSchema}); t.is(user.clone() === user, false); t.deepEqual(user.clone(), user); @@ -988,7 +987,7 @@ test('method `validate` should validate all fields and throw an error', async (t oldBook: {}, oldBooks: [null, {}] }; - let user = new Document(userSchema, data); + let user = new Document({data, schema: userSchema}); let validatorError0 = {validator: 'presence', message: 'is required', code: 422}; let validatorError1 = {validator: 'arrayLength', message: 'is too short', code: 422}; @@ -1068,7 +1067,7 @@ test('methods `isValid` and `hasErrors` should tell if fields are valid', async } ] }; - let user = new Document(userSchema, data); + let user = new Document({data, schema: userSchema}); await user.validate({quiet: true}); t.is(user.$name.isValid(), true); @@ -1136,7 +1135,7 @@ test('method `invalidate` should clear errors on all fields', async (t) => { oldBook: {}, oldBooks: [null, {}] }; - let user = new Document(userSchema, data); + let user = new Document({data, schema: userSchema}); await user.validate({quiet: true}); // invalidate is triggered when a field changes @@ -1176,7 +1175,7 @@ test('method `applyErrors` should set field `errors` property', async (t) => { newBook: {}, newBooks: [{}, {}] }; - let user = new Document(userSchema, data); + let user = new Document({data, schema: userSchema}); let validatorError = {validator: 'presence', message: 'is required', code: 422}; user.applyErrors([ diff --git a/tests/schemas.js b/tests/schemas.js index 7f6749e..046d7cd 100644 --- a/tests/schemas.js +++ b/tests/schemas.js @@ -12,12 +12,13 @@ test('can be extended through mixins', async (t) => { } }), strict: true, - validatorOptions: { + validators: { foo: 'foo' }, - typeOptions: { + types: { foo: 'foo' - } + }, + firstErrorOnly: true }); let dogSchema = new Schema({ mixins: [ @@ -29,12 +30,13 @@ test('can be extended through mixins', async (t) => { } }), strict: false, - validatorOptions: { + validators: { bar: 'bar' }, - typeOptions: { + types: { bar: 'bar' - } + }, + firstErrorOnly: false }); let catSchema = new Schema({ mixins: [ @@ -45,10 +47,10 @@ test('can be extended through mixins', async (t) => { type: [dogSchema] } }), - validatorOptions: { + validators: { baz: 'baz' }, - typeOptions: { + types: { baz: 'baz' } }); @@ -64,10 +66,13 @@ test('can be extended through mixins', async (t) => { // strict t.is(dogSchema.strict, false); t.is(catSchema.strict, false); - // validatorOptions - keys = Object.keys(catSchema.validatorOptions) + // validators + keys = Object.keys(catSchema.validators) t.deepEqual(keys, ['foo', 'bar', 'baz']); - // typeOptions - keys = Object.keys(catSchema.typeOptions) + // types + keys = Object.keys(catSchema.types) t.deepEqual(keys, ['foo', 'bar', 'baz']); + // firstErrorOnly + t.is(dogSchema.firstErrorOnly, false); + t.is(catSchema.firstErrorOnly, false); }); diff --git a/yarn.lock b/yarn.lock index 5880c5f..43a6bfe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -850,8 +850,8 @@ bcrypt-pbkdf@^1.0.0: tweetnacl "^0.14.3" binary-extensions@^1.0.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.7.0.tgz#6c1610db163abfb34edfe42fa423343a1e01185d" + version "1.8.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" block-stream@*: version "0.0.9" @@ -1347,17 +1347,17 @@ fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10: rimraf "2" gauge@~2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.1.tgz#388473894fe8be5e13ffcdb8b93e4ed0616428c7" + version "2.7.2" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.2.tgz#15cecc31b02d05345a5d6b0e171cdb3ad2307774" dependencies: aproba "^1.0.3" console-control-strings "^1.0.0" - has-color "^0.1.7" has-unicode "^2.0.0" object-assign "^4.1.0" signal-exit "^3.0.0" string-width "^1.0.1" strip-ansi "^3.0.1" + supports-color "^0.2.0" wide-align "^1.1.0" generate-function@^2.0.0: @@ -1477,7 +1477,7 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" -has-color@^0.1.7, has-color@~0.1.0: +has-color@~0.1.0: version "0.1.7" resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" @@ -1752,8 +1752,8 @@ json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" json5@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.0.tgz#9b20715b026cbe3778fd769edccd822d8332a5b2" + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" jsonpointer@^4.0.0: version "4.0.0" @@ -1841,8 +1841,8 @@ lowercase-keys@^1.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" lru-cache@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.1.tgz#1343955edaf2e37d9b9e7ee7241e27c4b9fb72be" + version "4.0.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" dependencies: pseudomap "^1.0.1" yallist "^2.0.0" @@ -1956,14 +1956,14 @@ nan@^2.3.0: resolved "https://registry.yarnpkg.com/nan/-/nan-2.4.0.tgz#fb3c59d45fe4effe215f0b890f8adf6eb32d2232" node-pre-gyp@^0.6.29: - version "0.6.31" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.31.tgz#d8a00ddaa301a940615dbcc8caad4024d58f6017" + version "0.6.32" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.32.tgz#fc452b376e7319b3d255f5f34853ef6fd8fe1fd5" dependencies: mkdirp "~0.5.1" nopt "~3.0.6" - npmlog "^4.0.0" + npmlog "^4.0.1" rc "~1.1.6" - request "^2.75.0" + request "^2.79.0" rimraf "~2.5.4" semver "~5.3.0" tar "~2.2.1" @@ -1992,7 +1992,7 @@ normalize-path@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a" -npmlog@^4.0.0: +npmlog@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.1.tgz#d14f503b4cd79710375553004ba96e6662fbc0b8" dependencies: @@ -2267,8 +2267,8 @@ qs@~6.3.0: resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442" randomatic@^1.1.3: - version "1.1.5" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.5.tgz#5e9ef5f2d573c67bd2b8124ae90b5156e457840b" + version "1.1.6" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" dependencies: is-number "^2.0.2" kind-of "^3.0.2" @@ -2304,7 +2304,7 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" -readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2, readable-stream@^2.0.5: +readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.5: version "2.2.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e" dependencies: @@ -2316,17 +2316,6 @@ readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2. string_decoder "~0.10.x" util-deprecate "~1.0.1" -readable-stream@~2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - readable-stream@~2.1.4: version "2.1.5" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" @@ -2414,7 +2403,7 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -request@^2.75.0: +request@^2.79.0: version "2.79.0" resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" dependencies: @@ -2485,8 +2474,8 @@ set-immediate-shim@^1.0.1: resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" signal-exit@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.1.tgz#5a4c884992b63a7acd9badb7894c3ee9cfccad81" + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" slash@^1.0.0: version "1.0.0" @@ -2605,6 +2594,10 @@ strip-json-comments@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" +supports-color@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a" + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -2647,11 +2640,11 @@ the-argv@^1.0.0: resolved "https://registry.yarnpkg.com/the-argv/-/the-argv-1.0.0.tgz#0084705005730dd84db755253c931ae398db9522" through2@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.1.tgz#384e75314d49f32de12eebb8136b8eb6b5d59da9" + version "2.0.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" dependencies: - readable-stream "~2.0.0" - xtend "~4.0.0" + readable-stream "^2.1.5" + xtend "~4.0.1" time-require@^0.1.2: version "0.1.2" @@ -2689,8 +2682,8 @@ tunnel-agent@~0.4.1: resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.3" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.3.tgz#3da382f670f25ded78d7b3d1792119bca0b7132d" + version "0.14.4" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.4.tgz#8c9dbfb52795686f166cd2023794bcf103d13c2b" type-name@^2.0.1: version "2.0.2" @@ -2721,8 +2714,8 @@ unzip-response@^1.0.2: resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" update-notifier@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-1.0.2.tgz#27c90519196dc15015be02a34ea52986feab8877" + version "1.0.3" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a" dependencies: boxen "^0.6.0" chalk "^1.0.0" @@ -2752,8 +2745,8 @@ uuid@^2.0.1: resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" uuid@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.0.tgz#6728fc0459c450d796a99c31837569bdf672d728" + version "3.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" v8flags@^2.0.10: version "2.0.11" @@ -2835,7 +2828,7 @@ xdg-basedir@^2.0.0: dependencies: os-homedir "^1.0.0" -xtend@^4.0.0, xtend@~4.0.0: +xtend@^4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" From 14b9eca9eda5b9fc5bc46fa96e52188a2264d449 Mon Sep 17 00:00:00 2001 From: xpeper Date: Wed, 7 Dec 2016 08:31:34 +0100 Subject: [PATCH 111/219] renaming toObject to serialize --- README.md | 3 ++- dist/documents.js | 6 +++--- dist/utils.js | 26 +++++++++++++------------- src/documents.js | 4 ++-- src/utils.js | 24 ++++++++++++------------ tests/documents.js | 12 ++++++------ 6 files changed, 38 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index 1dc6c4f..ba623b8 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ This is a light weight open source package for use on **server** or in **browser * Field value transformation with getter and setter * Strict and relaxed schemas * Schema mixins for extending schemas +* Document serialization * Document nesting with support for self referencing * Change tracking, data commits and rollbacks * Advanced field validation @@ -294,7 +295,7 @@ doc.applyErrors([ > Sets each document field to its initial value (last committed value). This is how you can discharge document changes. -**Document.prototype.toObject()**: Object +**Document.prototype.serialize()**: Object > Converts a document into serialized data object. diff --git a/dist/documents.js b/dist/documents.js index 26b50ab..6b7265e 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -270,8 +270,8 @@ var Document = exports.Document = function () { */ }, { - key: 'toObject', - value: function toObject() { + key: 'serialize', + value: function serialize() { return (0, _utils.serialize)(this); } @@ -380,7 +380,7 @@ var Document = exports.Document = function () { key: 'clone', value: function clone() { return new this.constructor({ - data: this.toObject(), + data: this.serialize(), schema: this.$schema }); } diff --git a/dist/utils.js b/dist/utils.js index 0f7b215..3cf0bfd 100644 --- a/dist/utils.js +++ b/dist/utils.js @@ -25,30 +25,30 @@ var _lodash4 = _interopRequireDefault(_lodash3); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /* -* Returns a duplicated data object (useful to remove data bindings). +* Deeply combines multiple values. */ -function serialize(data) { - return JSON.parse((0, _stringify2.default)(data)); -} +exports.merge = _lodash2.default; /* -* A helper method for retrieving a value from an input which can be -* a value or a function. +* Deeply checks if two objects are equal. */ -function retrieve(input) { - return (0, _typeable.isFunction)(input) ? input() : input; -} +exports.isEqual = _lodash4.default; /* -* Deeply combines multiple values. +* Returns a duplicated data object (useful to remove data bindings). */ -exports.merge = _lodash2.default; +function serialize(data) { + return JSON.parse((0, _stringify2.default)(data)); +} /* -* Deeply checks if two objects are equal. +* A helper method for retrieving a value from an input which can be +* a value or a function. */ -exports.isEqual = _lodash4.default; \ No newline at end of file +function retrieve(input) { + return (0, _typeable.isFunction)(input) ? input() : input; +} \ No newline at end of file diff --git a/src/documents.js b/src/documents.js index a7952d8..7ceb3dd 100644 --- a/src/documents.js +++ b/src/documents.js @@ -190,7 +190,7 @@ export class Document { * Converts this class into serialized data object. */ - toObject () { + serialize () { return serialize(this); } @@ -283,7 +283,7 @@ export class Document { clone () { return new this.constructor({ - data: this.toObject(), + data: this.serialize(), schema: this.$schema }); } diff --git a/src/utils.js b/src/utils.js index a2ad620..3851119 100644 --- a/src/utils.js +++ b/src/utils.js @@ -2,6 +2,18 @@ import {isFunction} from 'typeable'; import merge from 'lodash.merge'; import isEqual from 'lodash.isequal'; +/* +* Deeply combines multiple values. +*/ + +export {merge}; + +/* +* Deeply checks if two objects are equal. +*/ + +export {isEqual}; + /* * Returns a duplicated data object (useful to remove data bindings). */ @@ -18,15 +30,3 @@ export function serialize (data) { export function retrieve (input) { return isFunction(input) ? input() : input; } - -/* -* Deeply combines multiple values. -*/ - -export {merge}; - -/* -* Deeply checks if two objects are equal. -*/ - -export {isEqual}; diff --git a/tests/documents.js b/tests/documents.js index d75744b..d86cf9b 100644 --- a/tests/documents.js +++ b/tests/documents.js @@ -440,7 +440,7 @@ test('method `hasPath` should check field existance at path', (t) => { t.is(user1.hasPath(['books', 0, 'title']), true); }); -test('method `toObject` should convert a document into serialized data object', (t) => { +test('method `serialize` should convert a document into serialized data object', (t) => { let bookSchema = new Schema({ fields: { title: { @@ -491,7 +491,7 @@ test('method `toObject` should convert a document into serialized data object', }; let user = new Document({data, schema: userSchema}); - t.deepEqual(user.toObject(), { + t.deepEqual(user.serialize(), { name: 'John Smith', age: null, enabled: null, @@ -563,7 +563,7 @@ test('method `reset` should deeply set fields to their default values and invali user.reset(); t.deepEqual(user.$name.errors, []); - t.deepEqual(user.toObject(), { + t.deepEqual(user.serialize(), { name: 'Bar', book: { title: 'Baz' @@ -610,7 +610,7 @@ test('method `clear` should deeply clear fields', (t) => { let user = new Document({schema: userSchema}); user.clear(); - t.deepEqual(user.toObject(), { + t.deepEqual(user.serialize(), { name: null, book: null, books: null @@ -651,7 +651,7 @@ test('method `clear` should deeply clear fields', (t) => { let user = new Document({schema: userSchema}); user.clear(); - t.deepEqual(user.toObject(), { + t.deepEqual(user.serialize(), { name: null, book: null, books: null @@ -761,7 +761,7 @@ test('method `rollback` should deeply reset fields to their initial values', (t) user.populate(data); user.rollback(); - t.deepEqual(user.toObject(), { + t.deepEqual(user.serialize(), { name: 'Bar', book: { title: 'Baz' From 6bc117d9e6021dc2660076294d5de69a9cd0fd30 Mon Sep 17 00:00:00 2001 From: xpeper Date: Wed, 7 Dec 2016 09:03:04 +0100 Subject: [PATCH 112/219] validator context --- dist/documents.js | 3 ++- package.json | 2 +- src/documents.js | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/dist/documents.js b/dist/documents.js index 6b7265e..ecbd532 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -118,7 +118,8 @@ var Document = exports.Document = function () { value: function _createValidator() { return new _validatable.Validator((0, _extends3.default)({}, { validators: this.$schema.validators, - firstErrorOnly: this.$schema.firstErrorOnly + firstErrorOnly: this.$schema.firstErrorOnly, + context: this })); } diff --git a/package.json b/package.json index 543a994..0cebc69 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "3.0.0", + "version": "3.1.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/documents.js b/src/documents.js index 7ceb3dd..744703f 100644 --- a/src/documents.js +++ b/src/documents.js @@ -70,7 +70,8 @@ export class Document { return new Validator( Object.assign({}, { validators: this.$schema.validators, - firstErrorOnly: this.$schema.firstErrorOnly + firstErrorOnly: this.$schema.firstErrorOnly, + context: this }) ); } From 273365ab5b2d5be34cc31a1a693ae14209c4f6fe Mon Sep 17 00:00:00 2001 From: xpeper Date: Wed, 7 Dec 2016 11:47:24 +0100 Subject: [PATCH 113/219] simplification, adding example --- README.md | 9 +++---- dist/documents.js | 18 ++++--------- dist/fields.js | 6 +---- example/index.js | 27 +++++++++++++++---- package.json | 5 ++-- src/documents.js | 7 ++--- src/fields.js | 6 +---- tests/documents.js | 66 +++++++++++++++++++++++----------------------- tests/index.js | 1 + 9 files changed, 71 insertions(+), 74 deletions(-) diff --git a/README.md b/README.md index ba623b8..ac19540 100644 --- a/README.md +++ b/README.md @@ -82,10 +82,7 @@ let initialData = { ] }; -let user = new Document({ - data: initialData, - schema: userSchema -}); // new document instance +let user = new Document(initialData, userSchema); // new document instance user.title; // => "True Detective" await user.validate({quiet: true}); @@ -158,7 +155,7 @@ Validation is handled by the [*validatable.js*](https://github.com/xpepermint/va A document is a schema enforced object. All document properties and configuration options are defined by the schema. -**Document({data, schema, parent})** +**Document(data, schema, parent)** > A class for creating schema enforced objects. @@ -321,7 +318,7 @@ catch (e) { When a document field is defined, another field with the same name but prefixed with the `$` sign is set. This special read-only field holds a reference to the actual field instance. ```js -let user = new Document({schema}); +let user = new Document(null, schema); user.name = 'John'; // actual document field user.$name; // reference to document field instance user.$name.isChanged(); // calling field instance method diff --git a/dist/documents.js b/dist/documents.js index ecbd532..c87086e 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -59,14 +59,9 @@ var Document = exports.Document = function () { * Class constructor. */ - function Document() { + function Document(data, schema, parent) { var _this = this; - var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - data = _ref.data, - schema = _ref.schema, - parent = _ref.parent; - (0, _classCallCheck3.default)(this, Document); Object.defineProperty(this, '$schema', { // schema instance @@ -380,10 +375,7 @@ var Document = exports.Document = function () { }, { key: 'clone', value: function clone() { - return new this.constructor({ - data: this.serialize(), - schema: this.$schema - }); + return new this.constructor(this, this.$schema, this.$parent); } /* @@ -407,9 +399,9 @@ var Document = exports.Document = function () { }, { key: 'validate', value: function validate() { - var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - _ref2$quiet = _ref2.quiet, - quiet = _ref2$quiet === undefined ? false : _ref2$quiet; + var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + _ref$quiet = _ref.quiet, + quiet = _ref$quiet === undefined ? false : _ref$quiet; var fields, path, paths; return _regenerator2.default.async(function validate$(_context) { diff --git a/dist/fields.js b/dist/fields.js index dcf8b0e..64c8df0 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -85,11 +85,7 @@ var Field = exports.Field = function () { Schema: function Schema(value) { if ((0, _typeable.isArray)(type)) type = type[0]; // in case of {type: [Schema]} - return new _this.$owner.constructor({ - data: value, - schema: type, - parent: _this.$owner - }); + return new _this.$owner.constructor(value, type, _this.$owner); } }); diff --git a/example/index.js b/example/index.js index 9af113b..c49765c 100644 --- a/example/index.js +++ b/example/index.js @@ -1,5 +1,7 @@ const {Schema, Document} = require('../dist'); +/* Model definition ***********************************************************/ + let schema = new Schema({ // root document fields: { // document fields name: { // field name @@ -14,18 +16,33 @@ let schema = new Schema({ // root document } }); -let data = { +class User extends Document { // creating a model + + constructor (data) { + super(data, schema); + } + + echo () { + return `echo for ${this.name}`; + } +} + +/* Usage example **************************************************************/ + +let user = new User({ // new model instance with data name: 'John Smith', books: [ { title: 'True Detective' } ] -}; +}); -let user = new Document({data, schema}); // new document instance -console.log('title:', user.name); +console.log('title:', user.name); // fields console.log('$title:', user.$name.value); -user.validate({quiet: true}).then(() => { + +user.validate({quiet: true}).then(() => { // built-in methods console.log('isValid:', user.isValid()); }); + +console.log('echo():', user.echo()); // custom methods diff --git a/package.json b/package.json index 0cebc69..978fe2c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "3.1.0", + "version": "3.2.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -17,7 +17,8 @@ "build": "babel ./src --out-dir ./dist --copy-files", "prepublish": "npm run build", "pretest": "npm run build", - "test": "ava" + "test": "ava", + "example": "node ./example" }, "repository": { "type": "git", diff --git a/src/documents.js b/src/documents.js index 744703f..9fb7a33 100644 --- a/src/documents.js +++ b/src/documents.js @@ -24,7 +24,7 @@ export class Document { * Class constructor. */ - constructor ({data, schema, parent} = {}) { + constructor (data, schema, parent) { Object.defineProperty(this, '$schema', { // schema instance value: schema || new Schema({strict: false}) }); @@ -283,10 +283,7 @@ export class Document { */ clone () { - return new this.constructor({ - data: this.serialize(), - schema: this.$schema - }); + return new this.constructor(this, this.$schema, this.$parent); } /* diff --git a/src/fields.js b/src/fields.js index 84e29a6..db70a61 100644 --- a/src/fields.js +++ b/src/fields.js @@ -142,11 +142,7 @@ export class Field { Schema: (value) => { if (isArray(type)) type = type[0]; // in case of {type: [Schema]} - return new this.$owner.constructor({ - data: value, - schema: type, - parent: this.$owner - }); + return new this.$owner.constructor(value, type, this.$owner); } }); diff --git a/tests/documents.js b/tests/documents.js index d86cf9b..2f9488b 100644 --- a/tests/documents.js +++ b/tests/documents.js @@ -62,7 +62,7 @@ test('field value should be converted to the specified type', (t) => { tags: ['foo', 'bar', 100, null], keywords: ['foo', 'bar', 100, null] }; - let user = new Document({data, schema: userSchema}); + let user = new Document(data, userSchema); t.is(user.name, '100'); t.is(user.age, 35); @@ -90,7 +90,7 @@ test('field can be of a custom type', (t) => { let data = { name: 100 }; - let user = new Document({data, schema}); + let user = new Document(data, schema); t.is(user.name, '100-cool'); }); @@ -142,10 +142,10 @@ test('field can have a default value', (t) => { } ] }; - let user0 = new Document({schema: userSchema}); - let user1 = new Document({data, schema: userSchema}); - let book0 = new Document({schema: bookSchema}); - let book1 = new Document({data: data.books[1], schema: bookSchema}); + let user0 = new Document(null, userSchema); + let user1 = new Document(data, userSchema); + let book0 = new Document(null, bookSchema); + let book1 = new Document(data.books[1], bookSchema); t.is(user0.name, 'yes'); t.is(user0.$name.defaultValue, 'yes'); @@ -192,8 +192,8 @@ test('field can have a fake value', (t) => { } } }); - let user0 = new Document({schema: userSchema}); - let user1 = new Document({schema: userSchema}); + let user0 = new Document(null, userSchema); + let user1 = new Document(null, userSchema); t.is(user0.$name.fakeValue, 'yes'); t.is(user0.$age.fakeValue, null); @@ -229,7 +229,7 @@ test('field can be transformed through custom setter and getter', (t) => { } } }); - let user = new Document({schema: userSchema}); + let user = new Document(null, userSchema); t.is(user.name, '100-set-get'); }); @@ -247,7 +247,7 @@ test('method `populate` should not set custom fields when schema strict=true', ( name: 'John', age: 35.5 }; - let user = new Document({schema: userSchema}); + let user = new Document(null, userSchema); user.populate(data); t.is(user.name, 'John'); @@ -268,7 +268,7 @@ test('method `populate` should set custom fields when schema strict=false', (t) name: 'John', age: 35.5 }; - let user = new Document({schema: userSchema}); + let user = new Document(null, userSchema); user.populate(data); t.is(user.name, 'John'); @@ -306,7 +306,7 @@ test('variable `$parent` should return the parent document', (t) => { } ] }; - let user = new Document({data, schema: userSchema}); + let user = new Document(data, userSchema); t.is(user.$parent, null); t.is(user.book.$parent, user); @@ -344,7 +344,7 @@ test('variable `$root` should return the first document in a tree of nested docu } ] }; - let user = new Document({data, schema: userSchema}); + let user = new Document(data, userSchema); t.is(user.$root, user); t.is(user.book.$root, user); @@ -383,8 +383,8 @@ test('method `getPath` should return an instance of a field at path', (t) => { } ] }; - let user0 = new Document({schema: userSchema}); - let user1 = new Document({data, schema: userSchema}); + let user0 = new Document(null, userSchema); + let user1 = new Document(data, userSchema); t.is(user0.getPath('name'), null); t.is(user1.getPath('name'), 'Foo'); @@ -427,8 +427,8 @@ test('method `hasPath` should check field existance at path', (t) => { } ] }; - let user0 = new Document({schema: userSchema}); - let user1 = new Document({data, schema: userSchema}); + let user0 = new Document(null, userSchema); + let user1 = new Document(data, userSchema); t.is(user0.hasPath('name'), true); t.is(user0.hasPath('book', 'title'), false); @@ -489,7 +489,7 @@ test('method `serialize` should convert a document into serialized data object', } ] }; - let user = new Document({data, schema: userSchema}); + let user = new Document(data, userSchema); t.deepEqual(user.serialize(), { name: 'John Smith', @@ -556,7 +556,7 @@ test('method `reset` should deeply set fields to their default values and invali } ] }; - let user = new Document({schema: userSchema}); + let user = new Document(null, userSchema); user.populate(data); user.$name._errors = ['foo']; @@ -607,7 +607,7 @@ test('method `clear` should deeply clear fields', (t) => { } } }); - let user = new Document({schema: userSchema}); + let user = new Document(null, userSchema); user.clear(); t.deepEqual(user.serialize(), { @@ -648,7 +648,7 @@ test('method `clear` should deeply clear fields', (t) => { } } }); - let user = new Document({schema: userSchema}); + let user = new Document(null, userSchema); user.clear(); t.deepEqual(user.serialize(), { @@ -703,7 +703,7 @@ test('method `commit` should deeply reset information about changed fields.', (t } ] }; - let user = new Document({data, schema: userSchema}); + let user = new Document(data, userSchema); t.is(user.$name.initialValue, 'Bar'); user.commit(); @@ -757,7 +757,7 @@ test('method `rollback` should deeply reset fields to their initial values', (t) } ] }; - let user = new Document({schema: userSchema}); + let user = new Document(null, userSchema); user.populate(data); user.rollback(); @@ -796,7 +796,7 @@ test('method `isChanged` should return `true` if at least one field has been cha } }); - let user = new Document({schema: userSchema}); + let user = new Document(null, userSchema); t.is(user.isChanged(), false); user.name = 'Foo'; t.is(user.$name.isChanged(), true); @@ -869,10 +869,10 @@ test('method `equals` should return `true` when the passing object looks the sam let data1 = { name: 'Mandy' }; - let user0 = new Document({schema: new Schema(userSchema)}); - let user1 = new Document({schema: new Schema(userSchema)}); - let user2 = new Document({data: data0, schema: new Schema(userSchema)}); - let user3 = new Document({data: data1, schema: new Schema(userSchema)}); + let user0 = new Document(null, new Schema(userSchema)); + let user1 = new Document(null, new Schema(userSchema)); + let user2 = new Document(data0, new Schema(userSchema)); + let user3 = new Document(data1, new Schema(userSchema)); t.is(user0.equals(user1), true); t.is(user0.equals(user2), false); @@ -925,7 +925,7 @@ test('method `clone` should return an exact copy of the original', (t) => { ] }; - let user = new Document({data, schema: userSchema}); + let user = new Document(data, userSchema); t.is(user.clone() === user, false); t.deepEqual(user.clone(), user); @@ -987,7 +987,7 @@ test('method `validate` should validate all fields and throw an error', async (t oldBook: {}, oldBooks: [null, {}] }; - let user = new Document({data, schema: userSchema}); + let user = new Document(data, userSchema); let validatorError0 = {validator: 'presence', message: 'is required', code: 422}; let validatorError1 = {validator: 'arrayLength', message: 'is too short', code: 422}; @@ -1067,7 +1067,7 @@ test('methods `isValid` and `hasErrors` should tell if fields are valid', async } ] }; - let user = new Document({data, schema: userSchema}); + let user = new Document(data, userSchema); await user.validate({quiet: true}); t.is(user.$name.isValid(), true); @@ -1135,7 +1135,7 @@ test('method `invalidate` should clear errors on all fields', async (t) => { oldBook: {}, oldBooks: [null, {}] }; - let user = new Document({data, schema: userSchema}); + let user = new Document(data, userSchema); await user.validate({quiet: true}); // invalidate is triggered when a field changes @@ -1175,7 +1175,7 @@ test('method `applyErrors` should set field `errors` property', async (t) => { newBook: {}, newBooks: [{}, {}] }; - let user = new Document({data, schema: userSchema}); + let user = new Document(data, userSchema); let validatorError = {validator: 'presence', message: 'is required', code: 422}; user.applyErrors([ diff --git a/tests/index.js b/tests/index.js index 4c4808e..cfaf8d5 100644 --- a/tests/index.js +++ b/tests/index.js @@ -4,4 +4,5 @@ import * as objectschema from '../dist'; test('exposed content', (t) => { t.is(!!objectschema.Schema, true); t.is(!!objectschema.Document, true); + t.is(!!objectschema.Field, true); }); From fc81eee08d85f589f4ee1f0abe2aebc1c7511188 Mon Sep 17 00:00:00 2001 From: xpeper Date: Thu, 8 Dec 2016 19:02:54 +0100 Subject: [PATCH 114/219] example fix --- example/index.js | 17 ++--------------- package.json | 2 +- 2 files changed, 3 insertions(+), 16 deletions(-) diff --git a/example/index.js b/example/index.js index c49765c..10f5275 100644 --- a/example/index.js +++ b/example/index.js @@ -16,27 +16,16 @@ let schema = new Schema({ // root document } }); -class User extends Document { // creating a model - - constructor (data) { - super(data, schema); - } - - echo () { - return `echo for ${this.name}`; - } -} - /* Usage example **************************************************************/ -let user = new User({ // new model instance with data +let user = new Document({ // new model instance with data name: 'John Smith', books: [ { title: 'True Detective' } ] -}); +}, schema); console.log('title:', user.name); // fields console.log('$title:', user.$name.value); @@ -44,5 +33,3 @@ console.log('$title:', user.$name.value); user.validate({quiet: true}).then(() => { // built-in methods console.log('isValid:', user.isValid()); }); - -console.log('echo():', user.echo()); // custom methods diff --git a/package.json b/package.json index 978fe2c..00239ee 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "3.2.0", + "version": "3.2.1", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { From 3174b56bd25de848a66276a2898a9d5cf59dfa6a Mon Sep 17 00:00:00 2001 From: xpeper Date: Fri, 9 Dec 2016 08:53:06 +0100 Subject: [PATCH 115/219] easier extending --- README.md | 6 +++--- dist/documents.js | 47 +++++++++++++++++++++++++++++++--------------- dist/fields.js | 2 +- package.json | 2 +- src/documents.js | 48 +++++++++++++++++++++++------------------------ src/fields.js | 14 +++----------- src/schemas.js | 5 +---- 7 files changed, 65 insertions(+), 59 deletions(-) diff --git a/README.md b/README.md index ac19540..58aa024 100644 --- a/README.md +++ b/README.md @@ -98,7 +98,7 @@ user.$title; // => field class instance ## API -This package consists of two core classes. The `Schema` class represents a configuration object and the `Document` represents a data object defined by the Schema. There is also the `Field` class which represents a document field. +This package consists of two core classes. A `Schema` represents a configuration object and a `Document` represents a data object defined by the Schema. There is also the `Field` class which represents a document field. This package uses [*typeable.js*](https://github.com/xpepermint/typeablejs) module for type casting and [*validatable.js*](https://github.com/xpepermint/validatablejs) for validating fields. @@ -149,7 +149,7 @@ This package uses [*typeable.js*](https://github.com/xpepermint/typeablejs) for By default, all fields in a schema are set to `null`. We can set a default value for a field by setting the `defaultValue` option. -Validation is handled by the [*validatable.js*](https://github.com/xpepermint/validatablejs) package. We can configure the package by setting `validators` and `firstErrorOnly` options. The package provides many built-in validators, allows adding custom validators and overriding existing ones. When a document is created all validator methods share document's context thus we can write context-aware checks. Please see package's website for details. +Validation is handled by [*validatable.js*](https://github.com/xpepermint/validatablejs). We can configure the package through `validators` and `firstErrorOnly` options. The package provides many built-in validators, allows adding custom validators and overriding existing ones. When a document is created all validator methods share document's context thus we can write context-aware checks. Please see package's website for details. ### Document @@ -162,7 +162,7 @@ A document is a schema enforced object. All document properties and configuratio | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ | data | Object | No | - | Initial data object. -| schema | Schema | No | Schema({strict: false}) | An instance of the Schema class. +| schema | Schema | No | - | An instance of the Schema class. | parent | Document | No | - | A parent document instance (for nesting documents). **Document.prototype.$parent**: Document diff --git a/dist/documents.js b/dist/documents.js index c87086e..eae5fec 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -59,16 +59,17 @@ var Document = exports.Document = function () { * Class constructor. */ - function Document(data, schema, parent) { + function Document(data, schema) { var _this = this; + var parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; (0, _classCallCheck3.default)(this, Document); Object.defineProperty(this, '$schema', { // schema instance - value: schema || new _schemas.Schema({ strict: false }) + value: schema }); Object.defineProperty(this, '$parent', { // parent document instance - value: parent || null + value: parent }); Object.defineProperty(this, '$root', { // root document instance get: function get() { @@ -88,10 +89,36 @@ var Document = exports.Document = function () { } /* - * Loops up on the tree and returns the first document in the tree. + * Creates a new document instance. This method is especially useful when + * extending this class. */ (0, _createClass3.default)(Document, [{ + key: '_createDocument', + value: function _createDocument() { + var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + var schema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + var parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + + return new this.constructor(data, schema, parent); + } + + /* + * Creates a new field instance. This method is especially useful when + * extending this class. + */ + + }, { + key: '_createField', + value: function _createField(name) { + return new _fields.Field(this, name); + } + + /* + * Loops up on the tree and returns the first document in the tree. + */ + + }, { key: '_getRootDocument', value: function _getRootDocument() { var root = this; @@ -118,16 +145,6 @@ var Document = exports.Document = function () { })); } - /* - * Creates a new Field instance. - */ - - }, { - key: '_createField', - value: function _createField(name) { - return new _fields.Field(this, name); - } - /* * Creates a new validation error instance. */ @@ -375,7 +392,7 @@ var Document = exports.Document = function () { }, { key: 'clone', value: function clone() { - return new this.constructor(this, this.$schema, this.$parent); + return this._createDocument(this, this.$schema, this.$parent); } /* diff --git a/dist/fields.js b/dist/fields.js index 64c8df0..e17e45a 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -85,7 +85,7 @@ var Field = exports.Field = function () { Schema: function Schema(value) { if ((0, _typeable.isArray)(type)) type = type[0]; // in case of {type: [Schema]} - return new _this.$owner.constructor(value, type, _this.$owner); + return _this.$owner._createDocument(value, type, _this.$owner); } }); diff --git a/package.json b/package.json index 00239ee..0832bf2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "3.2.1", + "version": "3.3.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/documents.js b/src/documents.js index 9fb7a33..15c9d4e 100644 --- a/src/documents.js +++ b/src/documents.js @@ -1,18 +1,8 @@ -import { - isObject, - isArray, - isFunction, - isPresent, - isAbsent, - isUndefined -} from 'typeable'; +import {isObject, isArray} from 'typeable'; import {Validator} from 'validatable'; import {Schema} from './schemas'; import {Field} from './fields'; -import { - serialize, - isEqual -} from './utils'; +import {serialize, isEqual} from './utils'; /* * The core schema-based object class. @@ -24,12 +14,12 @@ export class Document { * Class constructor. */ - constructor (data, schema, parent) { + constructor (data, schema, parent = null) { Object.defineProperty(this, '$schema', { // schema instance - value: schema || new Schema({strict: false}) + value: schema }); Object.defineProperty(this, '$parent', { // parent document instance - value: parent || null + value: parent }); Object.defineProperty(this, '$root', { // root document instance get: () => this._getRootDocument() @@ -46,6 +36,24 @@ export class Document { this._populateFields(data); } + /* + * Creates a new document instance. This method is especially useful when + * extending this class. + */ + + _createDocument (data = null, schema = null, parent = null) { + return new this.constructor(data, schema, parent); + } + + /* + * Creates a new field instance. This method is especially useful when + * extending this class. + */ + + _createField (name) { + return new Field(this, name); + } + /* * Loops up on the tree and returns the first document in the tree. */ @@ -76,14 +84,6 @@ export class Document { ); } - /* - * Creates a new Field instance. - */ - - _createField (name) { - return new Field(this, name); - } - /* * Creates a new validation error instance. */ @@ -283,7 +283,7 @@ export class Document { */ clone () { - return new this.constructor(this, this.$schema, this.$parent); + return this._createDocument(this, this.$schema, this.$parent); } /* diff --git a/src/fields.js b/src/fields.js index db70a61..e7a40f4 100644 --- a/src/fields.js +++ b/src/fields.js @@ -1,13 +1,5 @@ -import { - cast, - isArray, - toArray, - isFunction -} from 'typeable'; -import { - serialize, - isEqual -} from './utils'; +import {cast, isArray, toArray, isFunction} from 'typeable'; +import {serialize, isEqual} from './utils'; import {Schema} from './schemas'; /* @@ -142,7 +134,7 @@ export class Field { Schema: (value) => { if (isArray(type)) type = type[0]; // in case of {type: [Schema]} - return new this.$owner.constructor(value, type, this.$owner); + return this.$owner._createDocument(value, type, this.$owner); } }); diff --git a/src/schemas.js b/src/schemas.js index a0a2420..52d3da4 100644 --- a/src/schemas.js +++ b/src/schemas.js @@ -1,8 +1,5 @@ import {isBoolean} from 'typeable'; -import { - retrieve, - merge -} from './utils'; +import {retrieve, merge} from './utils'; /* * A class for defining Document structure and properties. From dabeb8d320db55bbf97e5d68ba81f2c0552a1332 Mon Sep 17 00:00:00 2001 From: xpeper Date: Fri, 9 Dec 2016 12:25:16 +0100 Subject: [PATCH 116/219] adding `flatten()` method --- README.md | 4 ++ dist/documents.js | 113 +++++++++++++++++++++++++++++++-------------- package.json | 2 +- src/documents.js | 66 +++++++++++++++++++------- tests/documents.js | 72 +++++++++++++++++++++++++++++ 5 files changed, 206 insertions(+), 51 deletions(-) diff --git a/README.md b/README.md index 58aa024..670cb86 100644 --- a/README.md +++ b/README.md @@ -252,6 +252,10 @@ doc.applyErrors([ > Sets each document field to its fake value if a fake value generator is registered, otherwise the default value is used. +**Document.prototype.flatten()**: Array + +> Converts the document into an array of fields. + **Document.prototype.hasErrors()**: Boolean > Returns `true` when no errors exist (inverse of `isValid()`). Make sure that you call the `validate()` method first. diff --git a/dist/documents.js b/dist/documents.js index eae5fec..7084033 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -89,11 +89,28 @@ var Document = exports.Document = function () { } /* - * Creates a new document instance. This method is especially useful when - * extending this class. + * Loops up on the tree and returns the first document in the tree. */ (0, _createClass3.default)(Document, [{ + key: '_getRootDocument', + value: function _getRootDocument() { + var root = this; + do { + if (root.$parent) { + root = root.$parent; + } else { + return root; + } + } while (true); + } + + /* + * Creates a new document instance. This method is especially useful when + * extending this class. + */ + + }, { key: '_createDocument', value: function _createDocument() { var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; @@ -114,23 +131,6 @@ var Document = exports.Document = function () { return new _fields.Field(this, name); } - /* - * Loops up on the tree and returns the first document in the tree. - */ - - }, { - key: '_getRootDocument', - value: function _getRootDocument() { - var root = this; - do { - if (root.$parent) { - root = root.$parent; - } else { - return root; - } - } while (true); - } - /* * Returns a new instance of validator. */ @@ -229,6 +229,50 @@ var Document = exports.Document = function () { return this.getPath.apply(this, arguments) !== undefined; } + /* + * Scrolls through all set fields and returns an array of results. + */ + + }, { + key: 'flatten', + value: function flatten() { + var _this2 = this; + + var prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + + var fields = []; + + var _loop = function _loop(name) { + var type = _this2.$schema.fields[name].type; + + var field = _this2['$' + name]; + var path = (prefix || []).concat(name); + var value = field.value; + + fields.push({ path: path, field: field }); + + if (value === null) return 'continue'; + + if (type instanceof _schemas.Schema) { + fields = fields.concat(value.flatten(path)); + } else if ((0, _typeable.isArray)(type) && type[0] instanceof _schemas.Schema) { + fields = fields.concat(value.map(function (f, i) { + return f ? f.flatten(path.concat([i])) : null; + }).filter(function (f) { + return f !== null; + })[0]); + } + }; + + for (var name in this.$schema.fields) { + var _ret = _loop(name); + + if (_ret === 'continue') continue; + } + + return fields; + } + /* * Sets field values from the provided by data object. */ @@ -402,10 +446,10 @@ var Document = exports.Document = function () { }, { key: 'isChanged', value: function isChanged() { - var _this2 = this; + var _this3 = this; return (0, _keys2.default)(this.$schema.fields).some(function (name) { - return _this2['$' + name].isChanged(); + return _this3['$' + name].isChanged(); }); } @@ -420,7 +464,8 @@ var Document = exports.Document = function () { _ref$quiet = _ref.quiet, quiet = _ref$quiet === undefined ? false : _ref$quiet; - var fields, path, paths; + var fields, _path, paths; + return _regenerator2.default.async(function validate$(_context) { while (1) { switch (_context.prev = _context.next) { @@ -434,9 +479,9 @@ var Document = exports.Document = function () { break; } - path = _context.t1.value; + _path = _context.t1.value; _context.next = 6; - return _regenerator2.default.awrap(this['$' + path].validate()); + return _regenerator2.default.awrap(this['$' + _path].validate()); case 6: _context.next = 2; @@ -475,8 +520,8 @@ var Document = exports.Document = function () { var fields = this.$schema.fields; - for (var path in fields) { - this['$' + path].invalidate(); + for (var _path2 in fields) { + this['$' + _path2].invalidate(); } return this; @@ -509,14 +554,14 @@ var Document = exports.Document = function () { }, { key: 'collectErrors', value: function collectErrors() { - var _this3 = this; + var _this4 = this; var getErrors = function getErrors(doc) { var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; var errors = []; - var _loop = function _loop(name) { + var _loop2 = function _loop2(name) { var field = doc['$' + name]; if (field.errors.length > 0) { @@ -526,11 +571,11 @@ var Document = exports.Document = function () { }); } - if (field.value instanceof _this3.constructor) { + if (field.value instanceof _this4.constructor) { errors.push.apply(errors, (0, _toConsumableArray3.default)(getErrors(field.value, prefix.concat(field.name)))); } else if ((0, _typeable.isArray)(field.value)) { field.value.forEach(function (d, i) { - if (d instanceof _this3.constructor) { + if (d instanceof _this4.constructor) { errors.push.apply(errors, (0, _toConsumableArray3.default)(getErrors(d, prefix.concat([field.name, i])))); } }); @@ -538,7 +583,7 @@ var Document = exports.Document = function () { }; for (var name in doc.$schema.fields) { - _loop(name); + _loop2(name); } return errors; @@ -563,10 +608,10 @@ var Document = exports.Document = function () { for (var _iterator = (0, _getIterator3.default)(errors), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var error = _step.value; - var path = error.path.concat(); - path[path.length - 1] = '$' + path[path.length - 1]; + var _path3 = error.path.concat(); + _path3[_path3.length - 1] = '$' + _path3[_path3.length - 1]; - var _field = this.getPath(path); + var _field = this.getPath(_path3); if (_field) { _field.errors = error.errors; } diff --git a/package.json b/package.json index 0832bf2..d10d975 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "3.3.0", + "version": "3.4.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/documents.js b/src/documents.js index 15c9d4e..269073b 100644 --- a/src/documents.js +++ b/src/documents.js @@ -36,6 +36,22 @@ export class Document { this._populateFields(data); } + /* + * Loops up on the tree and returns the first document in the tree. + */ + + _getRootDocument () { + let root = this; + do { + if (root.$parent) { + root = root.$parent; + } + else { + return root; + } + } while (true); + } + /* * Creates a new document instance. This method is especially useful when * extending this class. @@ -54,22 +70,6 @@ export class Document { return new Field(this, name); } - /* - * Loops up on the tree and returns the first document in the tree. - */ - - _getRootDocument () { - let root = this; - do { - if (root.$parent) { - root = root.$parent; - } - else { - return root; - } - } while (true); - } - /* * Returns a new instance of validator. */ @@ -147,6 +147,40 @@ export class Document { return this.getPath(...keys) !== undefined; } + /* + * Scrolls through all set fields and returns an array of results. + */ + + flatten (prefix = []) { + let fields = []; + + for (let name in this.$schema.fields) { + let {type} = this.$schema.fields[name]; + let field = this[`$${name}`]; + let path = (prefix || []).concat(name); + let value = field.value; + + fields.push({path, field}); + + if (value === null) continue; + + if (type instanceof Schema) { + fields = fields.concat( + value.flatten(path) + ); + } + else if (isArray(type) && type[0] instanceof Schema) { + fields = fields.concat( + value + .map((f, i) => (f ? f.flatten(path.concat([i])) : null)) + .filter((f) => f !== null)[0] + ); + } + } + + return fields; + } + /* * Sets field values from the provided by data object. */ diff --git a/tests/documents.js b/tests/documents.js index 2f9488b..c85bd3d 100644 --- a/tests/documents.js +++ b/tests/documents.js @@ -440,6 +440,78 @@ test('method `hasPath` should check field existance at path', (t) => { t.is(user1.hasPath(['books', 0, 'title']), true); }); +test.only('method `flatten` should return an array of fields', async (t) => { + let styleSchema = new Schema({ + fields: { + kind: { + type: 'String' + } + } + }); + let bookSchema = new Schema({ + fields: { + title: { + type: 'String' + }, + style: { + type: styleSchema + } + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'String' + }, + newBook: { + type: bookSchema + }, + newBooks: { + type: [bookSchema] + }, + // oldBook: { + // type: bookSchema + // }, + // oldBooks: { + // type: [bookSchema] + // } + } + }); + let data = { + name: 'John Smith', + newBook: { + title: 100, + style: { + kind: 'foo' + } + }, + newBooks: [ + null, + { + title: 100, + style: [ + { + kind: 'foo' + } + ] + } + ] + }; + let user = new Document(data, userSchema); + + t.deepEqual(user.flatten().map((f) => f.path), [ + ['name'], + ['newBook'], + ['newBook', 'title'], + ['newBook', 'style'], + ['newBook', 'style', 'kind'], + ['newBooks'], + ['newBooks', 1, 'title'], + ['newBooks', 1, 'style'], + ['newBooks', 1, 'style', 'kind'] + ]); +}); + test('method `serialize` should convert a document into serialized data object', (t) => { let bookSchema = new Schema({ fields: { From 54e0c4142d9cf287254f86aef22018b8cbb51d76 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 10 Dec 2016 11:34:40 +0100 Subject: [PATCH 117/219] adding `isNested()`, collectErrors simplification, validation bug fix, additional tests --- README.md | 8 ++ dist/documents.js | 81 +++++++++----------- dist/fields.js | 32 +++++++- example/index.js | 5 -- package.json | 2 +- src/documents.js | 60 ++++++--------- src/fields.js | 27 ++++++- tests/documents.js | 180 ++++++++++++++++++++++++++++++++++++++------- 8 files changed, 279 insertions(+), 116 deletions(-) diff --git a/README.md b/README.md index 670cb86..dd8eb41 100644 --- a/README.md +++ b/README.md @@ -272,6 +272,10 @@ doc.applyErrors([ > Returns `true` if at least one document field has been changed. +**Document.prototype.isNested()**: Boolean + +> Returns `true` if nested fields exist. + **Document.prototype.isValid()**: Boolean > Returns `true` when all document fields are valid (inverse of `hasErrors()`). Make sure that you call the `validate()` method first. @@ -377,6 +381,10 @@ user.$name.isChanged(); // calling field instance method > Returns `true` if the field or at least one sub field have been changed. +**Field.prototype.isNested()**: Boolean + +> Returns `true` if the field is a nested document. + **Field.prototype.isValid()**: Boolean > Returns `true` if the field and all sub fields are valid (inverse of `hasErrors()`). Make sure that you call the `validate()` method first. diff --git a/dist/documents.js b/dist/documents.js index 7084033..41e5cf4 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -9,10 +9,6 @@ var _getIterator2 = require('babel-runtime/core-js/get-iterator'); var _getIterator3 = _interopRequireDefault(_getIterator2); -var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray'); - -var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); - var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); @@ -251,7 +247,7 @@ var Document = exports.Document = function () { fields.push({ path: path, field: field }); - if (value === null) return 'continue'; + if (!(0, _typeable.isPresent)(value)) return 'continue'; if (type instanceof _schemas.Schema) { fields = fields.concat(value.flatten(path)); @@ -259,8 +255,10 @@ var Document = exports.Document = function () { fields = fields.concat(value.map(function (f, i) { return f ? f.flatten(path.concat([i])) : null; }).filter(function (f) { - return f !== null; - })[0]); + return (0, _typeable.isArray)(f); + }).reduce(function (a, b) { + return a.concat(b); + })); } }; @@ -537,6 +535,20 @@ var Document = exports.Document = function () { return !this.hasErrors(); } + /* + * Returns `true` if nested fields exist. + */ + + }, { + key: 'isNested', + value: function isNested() { + var _this4 = this; + + return (0, _keys2.default)(this.$schema.fields).some(function (name) { + return _this4['$' + name].isNested(); + }); + } + /* * Returns `true` when errors exist (inverse of `isValid`). */ @@ -544,7 +556,11 @@ var Document = exports.Document = function () { }, { key: 'hasErrors', value: function hasErrors() { - return this.collectErrors().length > 0; + var _this5 = this; + + return (0, _keys2.default)(this.$schema.fields).some(function (name) { + return _this5['$' + name].hasErrors(); + }); } /* @@ -554,42 +570,17 @@ var Document = exports.Document = function () { }, { key: 'collectErrors', value: function collectErrors() { - var _this4 = this; - - var getErrors = function getErrors(doc) { - var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; - - var errors = []; - - var _loop2 = function _loop2(name) { - var field = doc['$' + name]; - - if (field.errors.length > 0) { - errors.push({ - path: prefix.concat([field.name]), - errors: field.errors - }); - } + return this.flatten().map(function (_ref2) { + var path = _ref2.path, + field = _ref2.field; - if (field.value instanceof _this4.constructor) { - errors.push.apply(errors, (0, _toConsumableArray3.default)(getErrors(field.value, prefix.concat(field.name)))); - } else if ((0, _typeable.isArray)(field.value)) { - field.value.forEach(function (d, i) { - if (d instanceof _this4.constructor) { - errors.push.apply(errors, (0, _toConsumableArray3.default)(getErrors(d, prefix.concat([field.name, i])))); - } - }); - } - }; - - for (var name in doc.$schema.fields) { - _loop2(name); - } + return { path: path, errors: field.errors }; + }).filter(function (_ref3) { + var path = _ref3.path, + errors = _ref3.errors; - return errors; - }; - - return getErrors(this); + return errors.length > 0; + }); } /* @@ -611,9 +602,9 @@ var Document = exports.Document = function () { var _path3 = error.path.concat(); _path3[_path3.length - 1] = '$' + _path3[_path3.length - 1]; - var _field = this.getPath(_path3); - if (_field) { - _field.errors = error.errors; + var field = this.getPath(_path3); + if (field) { + field.errors = error.errors; } } } catch (err) { diff --git a/dist/fields.js b/dist/fields.js index e17e45a..0545924 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -193,8 +193,28 @@ var Field = exports.Field = function () { return !this.equals(this.initialValue); } + /* + * Returns `true` if the field is a Document field. + */ + + }, { + key: 'isNested', + value: function isNested() { + var type = this.$owner.$schema.fields[this.name].type; + + if ((0, _typeable.isArray)(type)) type = type[0]; + + if (type.fields) { + return type instanceof _schemas.Schema; + } + return false; + } + /* * Validates the field by populating the `_errors` property. + * + * IMPORTANT: Array null values for nested objects are not treated as an object + * but as an empty item thus isValid() for [null] succeeds. */ }, { @@ -346,7 +366,17 @@ var Field = exports.Field = function () { }, { key: 'hasErrors', value: function hasErrors() { - return this.errors.length > 0; + if (this.errors.length > 0) { + return true; + } else if (!this.isNested()) { + return false; + } else { + return (0, _typeable.toArray)(this.value).filter(function (f) { + return !!f; + }).some(function (f) { + return f.hasErrors(); + }); + } } }, { key: 'value', diff --git a/example/index.js b/example/index.js index 10f5275..baad4f0 100644 --- a/example/index.js +++ b/example/index.js @@ -20,11 +20,6 @@ let schema = new Schema({ // root document let user = new Document({ // new model instance with data name: 'John Smith', - books: [ - { - title: 'True Detective' - } - ] }, schema); console.log('title:', user.name); // fields diff --git a/package.json b/package.json index d10d975..924ff10 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "3.4.0", + "version": "3.5.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/documents.js b/src/documents.js index 269073b..fde267a 100644 --- a/src/documents.js +++ b/src/documents.js @@ -1,4 +1,4 @@ -import {isObject, isArray} from 'typeable'; +import {isPresent, isObject, isArray} from 'typeable'; import {Validator} from 'validatable'; import {Schema} from './schemas'; import {Field} from './fields'; @@ -162,7 +162,7 @@ export class Document { fields.push({path, field}); - if (value === null) continue; + if (!isPresent(value)) continue; if (type instanceof Schema) { fields = fields.concat( @@ -173,7 +173,8 @@ export class Document { fields = fields.concat( value .map((f, i) => (f ? f.flatten(path.concat([i])) : null)) - .filter((f) => f !== null)[0] + .filter((f) => isArray(f)) + .reduce((a, b) => a.concat(b)) ); } } @@ -371,12 +372,24 @@ export class Document { return !this.hasErrors(); } + /* + * Returns `true` if nested fields exist. + */ + + isNested () { + return Object.keys(this.$schema.fields).some((name) => { + return this[`$${name}`].isNested(); + }); + } + /* * Returns `true` when errors exist (inverse of `isValid`). */ hasErrors () { - return this.collectErrors().length > 0; + return Object.keys(this.$schema.fields).some((name) => { + return this[`$${name}`].hasErrors(); + }); } /* @@ -384,40 +397,11 @@ export class Document { */ collectErrors () { - - let getErrors = (doc, prefix = []) => { - let errors = []; - - for (let name in doc.$schema.fields) { - let field = doc[`$${name}`]; - - if (field.errors.length > 0) { - errors.push({ - path: prefix.concat([field.name]), - errors: field.errors - }); - } - - if (field.value instanceof this.constructor) { - errors.push( - ...getErrors(field.value, prefix.concat(field.name)) - ); - } - else if (isArray(field.value)) { - field.value.forEach((d, i) => { - if (d instanceof this.constructor) { - errors.push( - ...getErrors(d, prefix.concat([field.name, i])) - ); - } - }); - } - } - - return errors; - } - - return getErrors(this); + return this.flatten().map(({path, field}) => { + return {path, errors: field.errors}; + }).filter(({path, errors}) => { + return errors.length > 0; + }); } /* diff --git a/src/fields.js b/src/fields.js index e7a40f4..7cbc4e4 100644 --- a/src/fields.js +++ b/src/fields.js @@ -225,8 +225,25 @@ export class Field { return !this.equals(this.initialValue); } + /* + * Returns `true` if the field is a Document field. + */ + + isNested () { + let {type} = this.$owner.$schema.fields[this.name]; + if (isArray(type)) type = type[0]; + + if (type.fields) { + return type instanceof Schema; + } + return false; + } + /* * Validates the field by populating the `_errors` property. + * + * IMPORTANT: Array null values for nested objects are not treated as an object + * but as an empty item thus isValid() for [null] succeeds. */ async validate () { @@ -279,7 +296,15 @@ export class Field { */ hasErrors () { - return this.errors.length > 0; + if (this.errors.length > 0) { + return true; + } + else if (!this.isNested()) { + return false; + } + else { + return toArray(this.value).filter((f) => !!f).some((f) => f.hasErrors()) + } } } diff --git a/tests/documents.js b/tests/documents.js index c85bd3d..b3f9b1b 100644 --- a/tests/documents.js +++ b/tests/documents.js @@ -440,7 +440,7 @@ test('method `hasPath` should check field existance at path', (t) => { t.is(user1.hasPath(['books', 0, 'title']), true); }); -test.only('method `flatten` should return an array of fields', async (t) => { +test('method `flatten` should return an array of fields', async (t) => { let styleSchema = new Schema({ fields: { kind: { @@ -469,12 +469,12 @@ test.only('method `flatten` should return an array of fields', async (t) => { newBooks: { type: [bookSchema] }, - // oldBook: { - // type: bookSchema - // }, - // oldBooks: { - // type: [bookSchema] - // } + oldBook: { + type: bookSchema + }, + oldBooks: { + type: [bookSchema] + } } }); let data = { @@ -489,13 +489,13 @@ test.only('method `flatten` should return an array of fields', async (t) => { null, { title: 100, - style: [ - { - kind: 'foo' - } - ] + style: { + kind: 'foo' + } } - ] + ], + oldBook: null, + oldBooks: [] }; let user = new Document(data, userSchema); @@ -508,7 +508,9 @@ test.only('method `flatten` should return an array of fields', async (t) => { ['newBooks'], ['newBooks', 1, 'title'], ['newBooks', 1, 'style'], - ['newBooks', 1, 'style', 'kind'] + ['newBooks', 1, 'style', 'kind'], + ['oldBook'], + ['oldBooks'] ]); }); @@ -892,6 +894,51 @@ test('method `isChanged` should return `true` if at least one field has been cha t.is(user.isChanged(), true); }); +test('method `isNested` should return `true` if nested fields exist', (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'String' + } + } + }); + let schema0 = new Schema({ + fields: { + name: { + type: 'String' + } + } + }); + let schema1 = new Schema({ + fields: { + name: { + type: 'String' + }, + book: { + type: bookSchema + } + } + }); + let schema2 = new Schema({ + fields: { + name: { + type: 'String' + }, + books: { + type: [bookSchema] + } + } + }); + + let doc0 = new Document(null, schema0); + let doc1 = new Document(null, schema1); + let doc2 = new Document(null, schema2); + + t.is(doc0.isNested(), false); + t.is(doc1.isNested(), true); + t.is(doc2.isNested(), true); +}); + test('method `equals` should return `true` when the passing object looks the same', (t) => { let authorSchema = new Schema({ fields: { @@ -1113,13 +1160,25 @@ test('methods `isValid` and `hasErrors` should tell if fields are valid', async {validator: 'presence', message: 'is required'} ] }, - book: { + newBook: { type: bookSchema, validate: [ {validator: 'presence', message: 'is required'} ] }, - books: { + newBooks: { + type: [bookSchema], + validate: [ + {validator: 'presence', message: 'is required'} + ] + }, + oldBook: { + type: bookSchema, + validate: [ + {validator: 'presence', message: 'is required'} + ] + }, + oldBooks: { type: [bookSchema], validate: [ {validator: 'presence', message: 'is required'} @@ -1130,26 +1189,32 @@ test('methods `isValid` and `hasErrors` should tell if fields are valid', async let data = { name: 'Foo', - book: { + newBook: { title: 'Bar' }, - books: [ + newBooks: [ + null, { title: 'Baz' } - ] + ], + oldBook: {}, + oldBooks: [null, {}] }; let user = new Document(data, userSchema); await user.validate({quiet: true}); t.is(user.$name.isValid(), true); t.is(user.$name.hasErrors(), false); - t.is(user.book.$title.isValid(), true); - t.is(user.book.$title.hasErrors(), false); - t.is(user.books[0].$title.isValid(), true); - t.is(user.books[0].$title.hasErrors(), false); - t.is(user.isValid(), true); - t.is(user.hasErrors(), false); + t.is(user.$newBook.isValid(), true); + t.is(user.newBook.$title.isValid(), true); + t.is(user.newBook.$title.hasErrors(), false); + t.is(user.$newBooks.hasErrors(), false); + t.is(user.newBooks[1].$title.hasErrors(), false); + t.is(user.$oldBook.isValid(), false); + t.is(user.oldBook.$title.isValid(), false); + t.is(user.$oldBooks.hasErrors(), true); + t.is(user.oldBooks[1].$title.hasErrors(), true); }); test('method `invalidate` should clear errors on all fields', async (t) => { @@ -1222,6 +1287,71 @@ test('method `invalidate` should clear errors on all fields', async (t) => { t.deepEqual(user.oldBooks[1].$title.errors, []); }); +test('method `collectErrors` should return an array of field errors', async (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'String', + validate: [ + {validator: 'presence', message: 'is required'} + ] + } + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'String', + validate: [ + {validator: 'presence', message: 'is required'} + ] + }, + age: { + type: 'Integer', + validate: [ + {validator: 'presence', message: 'is required'} + ] + }, + newBook: { + type: bookSchema, + validate: [ + {validator: 'presence', message: 'is required'} + ] + }, + newBooks: { + type: [bookSchema], + validate: [ + {validator: 'presence', message: 'is required'} + ] + } + } + }); + let data = {age: 30}; + let user = new Document(data, userSchema); + await user.validate({quiet: true}); + + t.deepEqual(user.collectErrors(), [ + { + path: ['name'], + errors: [ + {validator: 'presence', message: 'is required', code: 422} + ] + }, + { + path: ['newBook'], + errors: [ + {validator: 'presence', message: 'is required', code: 422} + ] + }, + { + path: ['newBooks'], + errors: [ + {validator: 'presence', message: 'is required', code: 422} + ] + } + ]); +}); + test('method `applyErrors` should set field `errors` property', async (t) => { let bookSchema = new Schema({ fields: { From fba0fe3aa1b42a6a0951650ed98b87886c90986a Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 10 Dec 2016 20:23:29 +0100 Subject: [PATCH 118/219] adding `filter()` method --- README.md | 8 +++++++ dist/documents.js | 25 ++++++++++++++++++++++ package.json | 2 +- src/documents.js | 20 ++++++++++++++++++ tests/documents.js | 52 ++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 106 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index dd8eb41..7be868b 100644 --- a/README.md +++ b/README.md @@ -252,6 +252,14 @@ doc.applyErrors([ > Sets each document field to its fake value if a fake value generator is registered, otherwise the default value is used. +**Document.prototype.filter(condition)**: Object + +> Converts a document into serialized data object with only the keys that pass the test. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| condition | Function | Yes | - | A function to test each key value. If the function returns `true` then the key is included in the returned object. + **Document.prototype.flatten()**: Array > Converts the document into an array of fields. diff --git a/dist/documents.js b/dist/documents.js index 41e5cf4..79e0214 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -330,6 +330,31 @@ var Document = exports.Document = function () { return (0, _utils.serialize)(this); } + /* + * Converts this class into serialized data object having only the keys that + * pass the `test`. + */ + + }, { + key: 'filter', + value: function filter(test) { + var data = (0, _utils.serialize)(this); + + this.flatten().sort(function (a, b) { + return a.path.length < b.path.length; + }).filter(function (field) { + return !test(field); + }).forEach(function (field) { + var names = field.path.concat(); + var lastName = names.pop(); + delete names.reduce(function (o, k) { + return o[k]; + }, data)[lastName]; + }); + + return data; + } + /* * Sets each document field to its default value. */ diff --git a/package.json b/package.json index 924ff10..b32abb4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "3.5.0", + "version": "3.6.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/documents.js b/src/documents.js index fde267a..2f6a873 100644 --- a/src/documents.js +++ b/src/documents.js @@ -230,6 +230,26 @@ export class Document { return serialize(this); } + /* + * Converts this class into serialized data object having only the keys that + * pass the `test`. + */ + + filter (test) { + let data = serialize(this); + + this.flatten() + .sort((a, b) => a.path.length < b.path.length) + .filter((field) => !test(field)) + .forEach((field) => { + let names = field.path.concat(); + let lastName = names.pop(); + delete names.reduce((o, k) => o[k], data)[lastName]; + }); + + return data; + } + /* * Sets each document field to its default value. */ diff --git a/tests/documents.js b/tests/documents.js index b3f9b1b..1a769c6 100644 --- a/tests/documents.js +++ b/tests/documents.js @@ -1287,6 +1287,58 @@ test('method `invalidate` should clear errors on all fields', async (t) => { t.deepEqual(user.oldBooks[1].$title.errors, []); }); +test('method `filter` should convert a document into serialized object with only keys that pass the test', (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'String' + }, + author: { + type: 'String' + } + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'String' + }, + book: { + type: bookSchema + }, + books: { + type: [bookSchema] + } + } + }); + let data = { + book: { + title: 'foo' + }, + books: [ + null, + { + title: 'bar' + } + ] + }; + let user = new Document(data, userSchema); + let validKeys = ['book', 'books', 'books.1', 'book.title', 'books.1.author']; + let filtered = user.filter(({path}) => validKeys.indexOf(path.join('.')) !== -1); + + t.deepEqual(filtered, { + book: { + title: 'foo' + }, + books: [ + null, + { + author: null + } + ] + }); +}); + test('method `collectErrors` should return an array of field errors', async (t) => { let bookSchema = new Schema({ fields: { From 01b2c7a6633493e7cdcb7b774eeea1fdd679688c Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 10 Dec 2016 20:45:00 +0100 Subject: [PATCH 119/219] adding `collect()` and `scroll()` methods --- README.md | 20 +++++++++++++-- dist/documents.js | 20 +++++++++++++++ package.json | 2 +- src/documents.js | 16 ++++++++++++ tests/documents.js | 62 ++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 117 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 7be868b..7fe5b9b 100644 --- a/README.md +++ b/README.md @@ -228,6 +228,14 @@ doc.applyErrors([ > Returns a new Document instance which is the exact copy of the original. +**Document.prototype.collect(handler)**: Array + +> Scrolls through document fields and collects results. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| handler | Function | Yes | - | A handler method which is executed for each document field. + **Document.prototype.collectErrors()**: Array > Returns a list of errors for all the fields ({path, errors}[]). @@ -252,13 +260,13 @@ doc.applyErrors([ > Sets each document field to its fake value if a fake value generator is registered, otherwise the default value is used. -**Document.prototype.filter(condition)**: Object +**Document.prototype.filter(handler)**: Object > Converts a document into serialized data object with only the keys that pass the test. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ -| condition | Function | Yes | - | A function to test each key value. If the function returns `true` then the key is included in the returned object. +| handler | Function | Yes | - | A function to test each key value. If the function returns `true` then the key is included in the returned object. **Document.prototype.flatten()**: Array @@ -308,6 +316,14 @@ doc.applyErrors([ > Sets each document field to its initial value (last committed value). This is how you can discharge document changes. +**Document.prototype.scroll(handler)**: Integer + +> Scrolls through document fields and executes a handler on each field. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| handler | Function | Yes | - | A handler method which is executed for each document field. + **Document.prototype.serialize()**: Object > Converts a document into serialized data object. diff --git a/dist/documents.js b/dist/documents.js index 79e0214..185e6d1 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -355,6 +355,26 @@ var Document = exports.Document = function () { return data; } + /* + * Scrolls through object fields and collects results. + */ + + }, { + key: 'collect', + value: function collect(handler) { + return this.flatten().map(handler); + } + + /* + * Scrolls through document fields and executes a handler on each field. + */ + + }, { + key: 'scroll', + value: function scroll(handler) { + return this.flatten().map(handler).length; + } + /* * Sets each document field to its default value. */ diff --git a/package.json b/package.json index b32abb4..7e2bb5e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "3.6.0", + "version": "3.7.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { diff --git a/src/documents.js b/src/documents.js index 2f6a873..04b3618 100644 --- a/src/documents.js +++ b/src/documents.js @@ -250,6 +250,22 @@ export class Document { return data; } + /* + * Scrolls through object fields and collects results. + */ + + collect (handler) { + return this.flatten().map(handler); + } + + /* + * Scrolls through document fields and executes a handler on each field. + */ + + scroll (handler) { + return this.flatten().map(handler).length; + } + /* * Sets each document field to its default value. */ diff --git a/tests/documents.js b/tests/documents.js index 1a769c6..231b0d3 100644 --- a/tests/documents.js +++ b/tests/documents.js @@ -1443,3 +1443,65 @@ test('method `applyErrors` should set field `errors` property', async (t) => { t.deepEqual(user.newBooks[0].$title.errors, []); t.deepEqual(user.newBooks[1].$title.errors, [validatorError]); }); + +test('method `collect` should return an array of results', (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'String' + } + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'String' + }, + book: { + type: bookSchema + } + } + }); + let data = { + book: { + title: 'foo' + } + }; + let user = new Document(data, userSchema); + let results = user.collect(({path, field}) => path); + + t.deepEqual(results, [ + ['name'], + ['book'], + ['book', 'title'] + ]); +}); + +test('method `collect` should return an array of results', (t) => { + let bookSchema = new Schema({ + fields: { + title: { + type: 'String' + } + } + }); + let userSchema = new Schema({ + fields: { + name: { + type: 'String' + }, + book: { + type: bookSchema + } + } + }); + let data = { + book: { + title: 'foo' + } + }; + let user = new Document(data, userSchema); + let count = user.scroll(({path, field}) => {}); + + t.deepEqual(count, 3); +}); From b6c617d46932c95b0614856431ca76d98e9b17e1 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 10 Dec 2016 20:46:25 +0100 Subject: [PATCH 120/219] readme --- README.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7fe5b9b..d08f08b 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ This is a light weight open source package for use on **server** or in **browser * Field value transformation with getter and setter * Strict and relaxed schemas * Schema mixins for extending schemas -* Document serialization +* Document serialization and filtering * Document nesting with support for self referencing * Change tracking, data commits and rollbacks * Advanced field validation diff --git a/package.json b/package.json index 7e2bb5e..af8cd5f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "3.7.0", + "version": "3.7.1", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { From 9edbc98b716f9e1f27f396dc6de71c34ccaaccf3 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 10 Dec 2016 21:21:52 +0100 Subject: [PATCH 121/219] readme --- README.md | 20 ++++++++++---------- package.json | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index d08f08b..6def713 100644 --- a/README.md +++ b/README.md @@ -234,7 +234,7 @@ doc.applyErrors([ | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ -| handler | Function | Yes | - | A handler method which is executed for each document field. +| handler | Function | Yes | - | A handler method which is executed for each field. **Document.prototype.collectErrors()**: Array @@ -248,14 +248,6 @@ doc.applyErrors([ > Returns `true` when the provided `value` represents an object with the same fields as the document itself. -**Document.prototype.getPath(...keys)**: Field - -> Returns a class instance of the field at path. - -| Option | Type | Required | Default | Description -|--------|------|----------|---------|------------ -| keys | Array | Yes | - | Path to a field (e.g. `['book', 0, 'title']`). - **Document.prototype.fake()**: Document > Sets each document field to its fake value if a fake value generator is registered, otherwise the default value is used. @@ -272,6 +264,14 @@ doc.applyErrors([ > Converts the document into an array of fields. +**Document.prototype.getPath(...keys)**: Field + +> Returns a class instance of the field at path. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| keys | Array | Yes | - | Path to a field (e.g. `['book', 0, 'title']`). + **Document.prototype.hasErrors()**: Boolean > Returns `true` when no errors exist (inverse of `isValid()`). Make sure that you call the `validate()` method first. @@ -322,7 +322,7 @@ doc.applyErrors([ | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ -| handler | Function | Yes | - | A handler method which is executed for each document field. +| handler | Function | Yes | - | A handler method which is executed for each field. **Document.prototype.serialize()**: Object diff --git a/package.json b/package.json index af8cd5f..b811f6c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "3.7.1", + "version": "3.7.2", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { From 676b94a788bb1e867203c59af4f54299bc814443 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 18 Dec 2016 13:30:06 +0100 Subject: [PATCH 122/219] dependencies --- package.json | 26 ++++++++++---------- yarn.lock | 67 +++++++++++++++++++++++++++++++++------------------- 2 files changed, 56 insertions(+), 37 deletions(-) diff --git a/package.json b/package.json index b811f6c..b746e47 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "3.7.2", + "version": "3.8.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "ava": { @@ -43,19 +43,19 @@ "author": "Kristijan Sedlak (Xpepermint)", "license": "MIT", "devDependencies": { - "ava": "0.17.x", - "babel-cli": "6.18.x", - "babel-plugin-syntax-async-functions": "6.13.x", - "babel-plugin-transform-object-assign": "6.8.x", - "babel-plugin-transform-regenerator": "6.16.x", - "babel-plugin-transform-runtime": "6.15.x", - "babel-preset-es2015": "6.18.x" + "ava": "^0.17.0", + "babel-cli": "^6.18.0", + "babel-plugin-syntax-async-functions": "^6.13.0", + "babel-plugin-transform-object-assign": "^6.8.0", + "babel-plugin-transform-regenerator": "^6.21.0", + "babel-plugin-transform-runtime": "^6.15.0", + "babel-preset-es2015": "^6.18.0" }, "dependencies": { - "babel-runtime": "6.18.x", - "lodash.isequal": "4.4.x", - "lodash.merge": "4.6.x", - "typeable": "0.20.x", - "validatable": "0.20.x" + "babel-runtime": "^6.20.0", + "lodash.isequal": "^4.4.0", + "lodash.merge": "^4.6.0", + "typeable": "^0.21.0", + "validatable": "^0.22.0" } } diff --git a/yarn.lock b/yarn.lock index 43a6bfe..9c571c4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -129,7 +129,7 @@ ava-init@^0.1.0: the-argv "^1.0.0" write-pkg "^1.0.0" -ava@0.17.x: +ava@^0.17.0: version "0.17.0" resolved "https://registry.yarnpkg.com/ava/-/ava-0.17.0.tgz#359e2a89616801ef03929c3cf10a9d4f8e451d02" dependencies: @@ -217,7 +217,7 @@ aws4@^1.2.1: version "1.5.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755" -babel-cli@6.18.x: +babel-cli@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.18.0.tgz#92117f341add9dead90f6fa7d0a97c0cc08ec186" dependencies: @@ -435,7 +435,7 @@ babel-plugin-espower@^2.3.1: espurify "^1.6.0" estraverse "^4.1.1" -babel-plugin-syntax-async-functions@6.13.x, babel-plugin-syntax-async-functions@^6.8.0: +babel-plugin-syntax-async-functions@^6.13.0, babel-plugin-syntax-async-functions@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" @@ -680,7 +680,7 @@ babel-plugin-transform-exponentiation-operator@^6.3.13: babel-plugin-syntax-exponentiation-operator "^6.8.0" babel-runtime "^6.0.0" -babel-plugin-transform-object-assign@6.8.x: +babel-plugin-transform-object-assign@^6.8.0: version "6.8.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-assign/-/babel-plugin-transform-object-assign-6.8.0.tgz#76e17f2dc0f36f14f548b9afd7aaef58d29ebb75" dependencies: @@ -693,15 +693,13 @@ babel-plugin-transform-object-rest-spread@^6.16.0: babel-plugin-syntax-object-rest-spread "^6.8.0" babel-runtime "^6.0.0" -babel-plugin-transform-regenerator@6.16.x, babel-plugin-transform-regenerator@^6.16.0: - version "6.16.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.16.1.tgz#a75de6b048a14154aae14b0122756c5bed392f59" +babel-plugin-transform-regenerator@^6.16.0, babel-plugin-transform-regenerator@^6.21.0: + version "6.21.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.21.0.tgz#75d0c7e7f84f379358f508451c68a2c5fa5a9703" dependencies: - babel-runtime "^6.9.0" - babel-types "^6.16.0" - private "~0.1.5" + regenerator-transform "0.9.8" -babel-plugin-transform-runtime@6.15.x, babel-plugin-transform-runtime@^6.15.0: +babel-plugin-transform-runtime@^6.15.0: version "6.15.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.15.0.tgz#3d75b4d949ad81af157570273846fb59aeb0d57c" dependencies: @@ -735,7 +733,7 @@ babel-preset-es2015-node4@^2.1.0: babel-plugin-transform-es2015-sticky-regex "^6.5.0" babel-plugin-transform-es2015-unicode-regex "^6.5.0" -babel-preset-es2015@6.18.x, babel-preset-es2015@^6.16.0: +babel-preset-es2015@^6.16.0, babel-preset-es2015@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.18.0.tgz#b8c70df84ec948c43dcf2bf770e988eb7da88312" dependencies: @@ -795,13 +793,20 @@ babel-register@^6.18.0: mkdirp "^0.5.1" source-map-support "^0.4.2" -babel-runtime@6.18.x, babel-runtime@^6.0.0, babel-runtime@^6.11.6, babel-runtime@^6.9.0, babel-runtime@^6.9.1: +babel-runtime@^6.0.0, babel-runtime@^6.11.6, babel-runtime@^6.9.0, babel-runtime@^6.9.1: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.18.0.tgz#0f4177ffd98492ef13b9f823e9994a02584c9078" dependencies: core-js "^2.4.0" regenerator-runtime "^0.9.5" +babel-runtime@^6.18.0, babel-runtime@^6.20.0: + version "6.20.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.20.0.tgz#87300bdcf4cd770f09bf0048c64204e17806d16f" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.10.0" + babel-template@^6.14.0, babel-template@^6.15.0, babel-template@^6.16.0, babel-template@^6.7.0, babel-template@^6.8.0: version "6.16.0" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.16.0.tgz#e149dd1a9f03a35f817ddbc4d0481988e7ebc8ca" @@ -1811,11 +1816,11 @@ lodash.flatten@^4.2.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" -lodash.isequal@4.4.x, lodash.isequal@^4.4.0: +lodash.isequal@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.4.0.tgz#6295768e98e14dc15ce8d362ef6340db82852031" -lodash.merge@4.6.x: +lodash.merge@4.6.0, lodash.merge@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" @@ -2246,7 +2251,7 @@ pretty-ms@^2.0.0: parse-ms "^1.0.0" plur "^1.0.0" -private@^0.1.6, private@~0.1.5: +private@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/private/-/private-0.1.6.tgz#55c6a976d0f9bafb9924851350fe47b9b5fbb7c1" @@ -2348,10 +2353,22 @@ regenerate@^1.2.1: version "1.3.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" +regenerator-runtime@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.1.tgz#257f41961ce44558b18f7814af48c17559f9faeb" + regenerator-runtime@^0.9.5: version "0.9.6" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz#d33eb95d0d2001a4be39659707c51b0cb71ce029" +regenerator-transform@0.9.8: + version "0.9.8" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.8.tgz#0f88bb2bc03932ddb7b6b7312e68078f01026d6c" + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + regex-cache@^0.4.2: version "0.4.3" resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" @@ -2689,9 +2706,11 @@ type-name@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/type-name/-/type-name-2.0.2.tgz#efe7d4123d8ac52afff7f40c7e4dec5266008fb4" -typeable@0.20.x: - version "0.20.0" - resolved "https://registry.yarnpkg.com/typeable/-/typeable-0.20.0.tgz#f979c91207b7b4921377b605ee21e9847672d6e0" +typeable@^0.21.0: + version "0.21.0" + resolved "https://registry.yarnpkg.com/typeable/-/typeable-0.21.0.tgz#25c9072e7af527086e6610b85444aa06468be09c" + dependencies: + lodash.merge "4.6.0" uid-number@~0.0.6: version "0.0.6" @@ -2754,12 +2773,12 @@ v8flags@^2.0.10: dependencies: user-home "^1.1.1" -validatable@0.20.x: - version "0.20.1" - resolved "https://registry.yarnpkg.com/validatable/-/validatable-0.20.1.tgz#990f6361781f0f069374e3b55bf6c2753d64f875" +validatable@^0.22.0: + version "0.22.0" + resolved "https://registry.yarnpkg.com/validatable/-/validatable-0.22.0.tgz#90fb79da614a71c4d76304905e89847bb198522a" dependencies: - babel-runtime "6.18.x" - typeable "0.20.x" + lodash.merge "^4.6.0" + typeable "^0.21.0" validate-npm-package-license@^3.0.1: version "3.0.1" From 7e185f9c1fcd87715e61b9261327393f2b85fc93 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 18 Dec 2016 19:18:27 +0100 Subject: [PATCH 123/219] replacing babel with typescript --- .babelrc | 11 - README.md | 2 + dist/documents.d.ts | 52 ++ dist/documents.js | 898 +++++++++++------------------ dist/fields.d.ts | 31 + dist/fields.js | 698 ++++++++-------------- dist/index.d.ts | 4 + dist/index.js | 27 +- dist/schemas.d.ts | 15 + dist/schemas.js | 128 ++-- dist/utils.d.ts | 6 + dist/utils.js | 55 +- nodemon.json | 3 +- package.json | 17 +- src/{documents.js => documents.ts} | 92 +-- src/{fields.js => fields.ts} | 107 ++-- src/{index.js => index.ts} | 0 src/{schemas.js => schemas.ts} | 12 + src/{utils.js => utils.ts} | 4 +- tsconfig.json | 11 + yarn.lock | 98 +--- 21 files changed, 901 insertions(+), 1370 deletions(-) delete mode 100644 .babelrc create mode 100644 dist/documents.d.ts create mode 100644 dist/fields.d.ts create mode 100644 dist/index.d.ts create mode 100644 dist/schemas.d.ts create mode 100644 dist/utils.d.ts rename src/{documents.js => documents.ts} (83%) rename src/{fields.js => fields.ts} (76%) rename src/{index.js => index.ts} (100%) rename src/{schemas.js => schemas.ts} (87%) rename src/{utils.js => utils.ts} (86%) create mode 100644 tsconfig.json diff --git a/.babelrc b/.babelrc deleted file mode 100644 index d801064..0000000 --- a/.babelrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "presets": [ - "es2015" - ], - "plugins": [ - "syntax-async-functions", - "transform-object-assign", - "transform-regenerator", - "transform-runtime" - ] -} diff --git a/README.md b/README.md index 6def713..fb6e360 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,8 @@ Run the command below to install the package. $ npm install --save objectschema ``` +This package uses promises thus you need to use [Promise polyfill](https://github.com/taylorhakes/promise-polyfill) when promises are not supported. + ## Example ```js diff --git a/dist/documents.d.ts b/dist/documents.d.ts new file mode 100644 index 0000000..cb2b199 --- /dev/null +++ b/dist/documents.d.ts @@ -0,0 +1,52 @@ +import { Validator } from 'validatable'; +import { Schema } from './schemas'; +import { Field } from './fields'; +export interface FieldRef { + path: string[]; + field: Field; +} +export interface FieldError extends Error { + path: string[]; + errors: any[]; +} +export declare class Document { + $schema: Schema; + $parent: Document; + $root: Document; + $validator: Validator; + constructor(data: any, schema: Schema, parent?: Document); + _getRootDocument(): any; + _createDocument(data?: any, schema?: any, parent?: any): any; + _createField(name: any): Field; + _createValidator(): Validator; + _createValidationError(paths: any): any; + _defineFields(): void; + _defineField(name: any): void; + getPath(...keys: any[]): Field; + hasPath(...keys: any[]): boolean; + flatten(prefix?: string[]): FieldRef[]; + populate(data?: {}): this; + _populateFields(data?: {}): this; + _populateField(name: any, value: any): void; + serialize(): {}; + filter(test: (field: FieldRef) => boolean): {}; + collect(handler: (field: FieldRef) => FieldRef): FieldRef[]; + scroll(handler: (field: FieldRef) => void): number; + reset(): this; + fake(): this; + clear(): this; + commit(): this; + rollback(): this; + equals(value: any): boolean; + clone(): this; + isChanged(): boolean; + validate({quiet}?: { + quiet?: boolean; + }): Promise; + invalidate(): this; + isValid(): boolean; + isNested(): boolean; + hasErrors(): boolean; + collectErrors(): FieldError[]; + applyErrors(errors?: FieldError[]): this; +} diff --git a/dist/documents.js b/dist/documents.js index 185e6d1..e3c80d2 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -1,674 +1,434 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.Document = undefined; - -var _getIterator2 = require('babel-runtime/core-js/get-iterator'); - -var _getIterator3 = _interopRequireDefault(_getIterator2); - -var _regenerator = require('babel-runtime/regenerator'); - -var _regenerator2 = _interopRequireDefault(_regenerator); - -var _keys = require('babel-runtime/core-js/object/keys'); - -var _keys2 = _interopRequireDefault(_keys); - -var _defineProperty = require('babel-runtime/core-js/object/define-property'); - -var _defineProperty2 = _interopRequireDefault(_defineProperty); - -var _extends2 = require('babel-runtime/helpers/extends'); - -var _extends3 = _interopRequireDefault(_extends2); - -var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _createClass2 = require('babel-runtime/helpers/createClass'); - -var _createClass3 = _interopRequireDefault(_createClass2); - -var _typeable = require('typeable'); - -var _validatable = require('validatable'); - -var _schemas = require('./schemas'); - -var _fields = require('./fields'); - -var _utils = require('./utils'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments)).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t; + return { next: verb(0), "throw": verb(1), "return": verb(2) }; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [0, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var typeable_1 = require("typeable"); +var validatable_1 = require("validatable"); +var schemas_1 = require("./schemas"); +var fields_1 = require("./fields"); +var utils_1 = require("./utils"); /* * The core schema-based object class. */ - -var Document = exports.Document = function () { - - /* - * Class constructor. - */ - - function Document(data, schema) { - var _this = this; - - var parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - (0, _classCallCheck3.default)(this, Document); - - Object.defineProperty(this, '$schema', { // schema instance - value: schema - }); - Object.defineProperty(this, '$parent', { // parent document instance - value: parent - }); - Object.defineProperty(this, '$root', { // root document instance - get: function get() { - return _this._getRootDocument(); - } - }); - Object.defineProperty(this, '$error', { // last document error instance - value: null, - writable: true - }); - Object.defineProperty(this, '$validator', { // validatable.js instance - value: this._createValidator() - }); - - this._defineFields(); - this._populateFields(data); - } - - /* - * Loops up on the tree and returns the first document in the tree. - */ - - (0, _createClass3.default)(Document, [{ - key: '_getRootDocument', - value: function _getRootDocument() { - var root = this; - do { - if (root.$parent) { - root = root.$parent; - } else { - return root; - } - } while (true); +var Document = (function () { + /* + * Class constructor. + */ + function Document(data, schema, parent) { + var _this = this; + Object.defineProperty(this, '$schema', { + value: schema + }); + Object.defineProperty(this, '$parent', { + value: parent || null + }); + Object.defineProperty(this, '$root', { + get: function () { return _this._getRootDocument(); } + }); + Object.defineProperty(this, '$validator', { + value: this._createValidator() + }); + this._defineFields(); + this._populateFields(data); } - + /* + * Loops up on the tree and returns the first document in the tree. + */ + Document.prototype._getRootDocument = function () { + var root = this; + do { + if (root.$parent) { + root = root.$parent; + } + else { + return root; + } + } while (true); + }; /* * Creates a new document instance. This method is especially useful when * extending this class. */ - - }, { - key: '_createDocument', - value: function _createDocument() { - var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - var schema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - var parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; - - return new this.constructor(data, schema, parent); - } - + Document.prototype._createDocument = function (data, schema, parent) { + if (data === void 0) { data = null; } + if (schema === void 0) { schema = null; } + if (parent === void 0) { parent = null; } + return new this.constructor(data, schema, parent); + }; /* * Creates a new field instance. This method is especially useful when * extending this class. */ - - }, { - key: '_createField', - value: function _createField(name) { - return new _fields.Field(this, name); - } - + Document.prototype._createField = function (name) { + return new fields_1.Field(this, name); + }; /* * Returns a new instance of validator. */ - - }, { - key: '_createValidator', - value: function _createValidator() { - return new _validatable.Validator((0, _extends3.default)({}, { - validators: this.$schema.validators, - firstErrorOnly: this.$schema.firstErrorOnly, - context: this - })); - } - + Document.prototype._createValidator = function () { + return new validatable_1.Validator(utils_1.merge({}, { + validators: this.$schema.validators, + firstErrorOnly: this.$schema.firstErrorOnly, + context: this + })); + }; /* * Creates a new validation error instance. */ - - }, { - key: '_createValidationError', - value: function _createValidationError(paths) { - var error = new Error('Validation failed'); - error.code = 422; - error.paths = paths; - - return error; - } - + Document.prototype._createValidationError = function (paths) { + var error = new Error('Validation failed'); + error.code = 422; + error.paths = paths; + return error; + }; /* * Defines class fields from schema. */ - - }, { - key: '_defineFields', - value: function _defineFields() { - var fields = this.$schema.fields; - - - for (var name in fields) { - this._defineField(name); - } - } - + Document.prototype._defineFields = function () { + var fields = this.$schema.fields; + for (var name in fields) { + this._defineField(name); + } + }; /* * Defines a schema field by name. */ - - }, { - key: '_defineField', - value: function _defineField(name) { - var field = this._createField(name); - - (0, _defineProperty2.default)(this, name, { // field definition - get: function get() { - return field.value; - }, - set: function set(v) { - return field.value = v; - }, - enumerable: true, - configurable: true - }); - - Object.defineProperty(this, '$' + name, { // field class instance definition - value: field - }); - } - + Document.prototype._defineField = function (name) { + var field = this._createField(name); + Object.defineProperty(this, name, { + get: function () { return field.value; }, + set: function (v) { return field.value = v; }, + enumerable: true, + configurable: true + }); + Object.defineProperty(this, "$" + name, { + value: field + }); + }; /* * Returns a value at path. */ - - }, { - key: 'getPath', - value: function getPath() { - for (var _len = arguments.length, keys = Array(_len), _key = 0; _key < _len; _key++) { - keys[_key] = arguments[_key]; - } - - if ((0, _typeable.isArray)(keys[0])) { - keys = keys[0]; - } - - return keys.reduce(function (a, b) { - return (a || {})[b]; - }, this); - } - + Document.prototype.getPath = function () { + var keys = []; + for (var _i = 0; _i < arguments.length; _i++) { + keys[_i] = arguments[_i]; + } + if (typeable_1.isArray(keys[0])) { + keys = keys[0]; + } + return keys.reduce(function (a, b) { return (a || {})[b]; }, this); + }; /* * Returns `true` if field at path exists. */ - - }, { - key: 'hasPath', - value: function hasPath() { - return this.getPath.apply(this, arguments) !== undefined; - } - + Document.prototype.hasPath = function () { + var keys = []; + for (var _i = 0; _i < arguments.length; _i++) { + keys[_i] = arguments[_i]; + } + return this.getPath.apply(this, keys) !== undefined; + }; /* * Scrolls through all set fields and returns an array of results. */ - - }, { - key: 'flatten', - value: function flatten() { - var _this2 = this; - - var prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; - - var fields = []; - - var _loop = function _loop(name) { - var type = _this2.$schema.fields[name].type; - - var field = _this2['$' + name]; - var path = (prefix || []).concat(name); - var value = field.value; - - fields.push({ path: path, field: field }); - - if (!(0, _typeable.isPresent)(value)) return 'continue'; - - if (type instanceof _schemas.Schema) { - fields = fields.concat(value.flatten(path)); - } else if ((0, _typeable.isArray)(type) && type[0] instanceof _schemas.Schema) { - fields = fields.concat(value.map(function (f, i) { - return f ? f.flatten(path.concat([i])) : null; - }).filter(function (f) { - return (0, _typeable.isArray)(f); - }).reduce(function (a, b) { - return a.concat(b); - })); + Document.prototype.flatten = function (prefix) { + if (prefix === void 0) { prefix = []; } + var fields = []; + var _loop_1 = function (name) { + var type = this_1.$schema.fields[name].type; + var field = this_1["$" + name]; + var path = (prefix || []).concat(name); + var value = field.value; + fields.push({ path: path, field: field }); + if (!typeable_1.isPresent(value)) + return "continue"; + if (type instanceof schemas_1.Schema) { + fields = fields.concat(value.flatten(path)); + } + else if (typeable_1.isArray(type) && type[0] instanceof schemas_1.Schema) { + fields = fields.concat(value + .map(function (f, i) { return (f ? f.flatten(path.concat([i])) : null); }) + .filter(function (f) { return typeable_1.isArray(f); }) + .reduce(function (a, b) { return a.concat(b); })); + } + }; + var this_1 = this; + for (var name in this.$schema.fields) { + _loop_1(name); } - }; - - for (var name in this.$schema.fields) { - var _ret = _loop(name); - - if (_ret === 'continue') continue; - } - - return fields; - } - + return fields; + }; /* * Sets field values from the provided by data object. */ - - }, { - key: 'populate', - value: function populate() { - var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - return this._populateFields(data); - } - + Document.prototype.populate = function (data) { + if (data === void 0) { data = {}; } + return this._populateFields(data); + }; /* * Sets field values from the provided by data object. */ - - }, { - key: '_populateFields', - value: function _populateFields() { - var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - data = (0, _utils.serialize)(data); - - for (var name in data) { - this._populateField(name, data[name]); - } - - return this; - } - + Document.prototype._populateFields = function (data) { + if (data === void 0) { data = {}; } + data = utils_1.serialize(data); + for (var name in data) { + this._populateField(name, data[name]); + } + return this; + }; /* * Sets a value of a field by name. */ - - }, { - key: '_populateField', - value: function _populateField(name, value) { - if (!this.$schema.strict) { - this[name] = value; - } else { - var names = (0, _keys2.default)(this.$schema.fields); - var exists = names.indexOf(name) > -1; - - if (exists) { - this[name] = value; + Document.prototype._populateField = function (name, value) { + if (!this.$schema.strict) { + this[name] = value; } - } - } - + else { + var names = Object.keys(this.$schema.fields); + var exists = names.indexOf(name) > -1; + if (exists) { + this[name] = value; + } + } + }; /* * Converts this class into serialized data object. */ - - }, { - key: 'serialize', - value: function serialize() { - return (0, _utils.serialize)(this); - } - + Document.prototype.serialize = function () { + return utils_1.serialize(this); + }; /* * Converts this class into serialized data object having only the keys that * pass the `test`. */ - - }, { - key: 'filter', - value: function filter(test) { - var data = (0, _utils.serialize)(this); - - this.flatten().sort(function (a, b) { - return a.path.length < b.path.length; - }).filter(function (field) { - return !test(field); - }).forEach(function (field) { - var names = field.path.concat(); - var lastName = names.pop(); - delete names.reduce(function (o, k) { - return o[k]; - }, data)[lastName]; - }); - - return data; - } - + Document.prototype.filter = function (test) { + var data = utils_1.serialize(this); + this.flatten() + .sort(function (a, b) { return b.path.length - a.path.length; }) + .filter(function (field) { return !test(field); }) + .forEach(function (field) { + var names = field.path.concat(); + var lastName = names.pop(); + delete names.reduce(function (o, k) { return o[k]; }, data)[lastName]; + }); + return data; + }; /* * Scrolls through object fields and collects results. */ - - }, { - key: 'collect', - value: function collect(handler) { - return this.flatten().map(handler); - } - + Document.prototype.collect = function (handler) { + return this.flatten().map(handler); + }; /* * Scrolls through document fields and executes a handler on each field. */ - - }, { - key: 'scroll', - value: function scroll(handler) { - return this.flatten().map(handler).length; - } - + Document.prototype.scroll = function (handler) { + return this.flatten().map(handler).length; + }; /* * Sets each document field to its default value. */ - - }, { - key: 'reset', - value: function reset() { - var fields = this.$schema.fields; - - - for (var name in fields) { - this['$' + name].reset(); - } - - return this; - } - + Document.prototype.reset = function () { + var fields = this.$schema.fields; + for (var name in fields) { + this["$" + name].reset(); + } + return this; + }; /* * Sets each document field to its fake value if a fake value generator * is registered, otherwise the default value is used. */ - - }, { - key: 'fake', - value: function fake() { - var fields = this.$schema.fields; - - - for (var name in fields) { - this['$' + name].fake(); - } - - return this; - } - + Document.prototype.fake = function () { + var fields = this.$schema.fields; + for (var name in fields) { + this["$" + name].fake(); + } + return this; + }; /* * Removes all fileds values by setting them to `null`. */ - - }, { - key: 'clear', - value: function clear() { - var fields = this.$schema.fields; - - - for (var name in fields) { - this['$' + name].clear(); - } - - return this; - } - + Document.prototype.clear = function () { + var fields = this.$schema.fields; + for (var name in fields) { + this["$" + name].clear(); + } + return this; + }; /* * Sets initial value of each document field to the current value of a field. */ - - }, { - key: 'commit', - value: function commit() { - var fields = this.$schema.fields; - - - for (var name in fields) { - this['$' + name].commit(); - } - - return this; - } - + Document.prototype.commit = function () { + var fields = this.$schema.fields; + for (var name in fields) { + this["$" + name].commit(); + } + return this; + }; /* * Sets each document field to its initial value (value before last commit). */ - - }, { - key: 'rollback', - value: function rollback() { - var fields = this.$schema.fields; - - - for (var name in fields) { - this['$' + name].rollback(); - } - - return this; - } - + Document.prototype.rollback = function () { + var fields = this.$schema.fields; + for (var name in fields) { + this["$" + name].rollback(); + } + return this; + }; /* * Returns `true` when the `value` represents an object with the * same field values as the original document. */ - - }, { - key: 'equals', - value: function equals(value) { - return (0, _utils.isEqual)((0, _utils.serialize)(this), (0, _utils.serialize)(value)); - } - + Document.prototype.equals = function (value) { + return utils_1.isEqual(utils_1.serialize(this), utils_1.serialize(value)); + }; /* * Returns a new Document instance which is the exact copy of the original. */ - - }, { - key: 'clone', - value: function clone() { - return this._createDocument(this, this.$schema, this.$parent); - } - + Document.prototype.clone = function () { + return this._createDocument(this, this.$schema, this.$parent); + }; /* * Returns a `true` if at least one field has been changed. */ - - }, { - key: 'isChanged', - value: function isChanged() { - var _this3 = this; - - return (0, _keys2.default)(this.$schema.fields).some(function (name) { - return _this3['$' + name].isChanged(); - }); - } - + Document.prototype.isChanged = function () { + var _this = this; + return Object.keys(this.$schema.fields).some(function (name) { + return _this["$" + name].isChanged(); + }); + }; /* * Validates fields and returns errors. */ - - }, { - key: 'validate', - value: function validate() { - var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - _ref$quiet = _ref.quiet, - quiet = _ref$quiet === undefined ? false : _ref$quiet; - - var fields, _path, paths; - - return _regenerator2.default.async(function validate$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - fields = this.$schema.fields; - _context.t0 = _regenerator2.default.keys(fields); - - case 2: - if ((_context.t1 = _context.t0()).done) { - _context.next = 8; - break; - } - - _path = _context.t1.value; - _context.next = 6; - return _regenerator2.default.awrap(this['$' + _path].validate()); - - case 6: - _context.next = 2; - break; - - case 8: - paths = this.collectErrors().map(function (e) { - return e.path; - }); - - if (!(!quiet && paths.length > 0)) { - _context.next = 11; - break; - } - - throw this._createValidationError(paths); - - case 11: - return _context.abrupt('return', this); - - case 12: - case 'end': - return _context.stop(); - } - } - }, null, this); - } - + Document.prototype.validate = function (_a) { + var _b = (_a === void 0 ? {} : _a).quiet, quiet = _b === void 0 ? false : _b; + return __awaiter(this, void 0, void 0, function () { + var fields, _a, _b, _i, path, paths; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: + fields = this.$schema.fields; + _a = []; + for (_b in fields) + _a.push(_b); + _i = 0; + _c.label = 1; + case 1: + if (!(_i < _a.length)) + return [3 /*break*/, 4]; + path = _a[_i]; + return [4 /*yield*/, this["$" + path].validate()]; + case 2: + _c.sent(); + _c.label = 3; + case 3: + _i++; + return [3 /*break*/, 1]; + case 4: + paths = this.collectErrors().map(function (e) { return e.path; }); + if (!quiet && paths.length > 0) { + throw this._createValidationError(paths); + } + return [2 /*return*/, this]; + } + }); + }); + }; /* * Validates fields and returns errors. */ - - }, { - key: 'invalidate', - value: function invalidate() { - var fields = this.$schema.fields; - - - for (var _path2 in fields) { - this['$' + _path2].invalidate(); - } - - return this; - } - + Document.prototype.invalidate = function () { + var fields = this.$schema.fields; + for (var path in fields) { + this["$" + path].invalidate(); + } + return this; + }; /* * Returns `true` when all document fields are valid (inverse of `hasErrors`). */ - - }, { - key: 'isValid', - value: function isValid() { - return !this.hasErrors(); - } - + Document.prototype.isValid = function () { + return !this.hasErrors(); + }; /* * Returns `true` if nested fields exist. */ - - }, { - key: 'isNested', - value: function isNested() { - var _this4 = this; - - return (0, _keys2.default)(this.$schema.fields).some(function (name) { - return _this4['$' + name].isNested(); - }); - } - + Document.prototype.isNested = function () { + var _this = this; + return Object.keys(this.$schema.fields).some(function (name) { + return _this["$" + name].isNested(); + }); + }; /* * Returns `true` when errors exist (inverse of `isValid`). */ - - }, { - key: 'hasErrors', - value: function hasErrors() { - var _this5 = this; - - return (0, _keys2.default)(this.$schema.fields).some(function (name) { - return _this5['$' + name].hasErrors(); - }); - } - + Document.prototype.hasErrors = function () { + var _this = this; + return Object.keys(this.$schema.fields).some(function (name) { + return _this["$" + name].hasErrors(); + }); + }; /* * Returns a list of all field-related errors, including those deeply nested. */ - - }, { - key: 'collectErrors', - value: function collectErrors() { - return this.flatten().map(function (_ref2) { - var path = _ref2.path, - field = _ref2.field; - - return { path: path, errors: field.errors }; - }).filter(function (_ref3) { - var path = _ref3.path, - errors = _ref3.errors; - - return errors.length > 0; - }); - } - + Document.prototype.collectErrors = function () { + return this.flatten().map(function (_a) { + var path = _a.path, field = _a.field; + return { path: path, errors: field.errors }; + }).filter(function (_a) { + var path = _a.path, errors = _a.errors; + return errors.length > 0; + }); + }; /* * Deeply populates fields with the provided `errors`. */ - - }, { - key: 'applyErrors', - value: function applyErrors() { - var errors = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = (0, _getIterator3.default)(errors), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var error = _step.value; - - var _path3 = error.path.concat(); - _path3[_path3.length - 1] = '$' + _path3[_path3.length - 1]; - - var field = this.getPath(_path3); - if (field) { - field.errors = error.errors; - } - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } + Document.prototype.applyErrors = function (errors) { + if (errors === void 0) { errors = []; } + for (var _i = 0, errors_1 = errors; _i < errors_1.length; _i++) { + var error = errors_1[_i]; + var path = error.path.concat(); + path[path.length - 1] = "$" + path[path.length - 1]; + var field = this.getPath(path); + if (field) { + field.errors = error.errors; + } } - } - - return this; - } - }]); - return Document; -}(); \ No newline at end of file + return this; + }; + return Document; +}()); +exports.Document = Document; diff --git a/dist/fields.d.ts b/dist/fields.d.ts new file mode 100644 index 0000000..0d47c27 --- /dev/null +++ b/dist/fields.d.ts @@ -0,0 +1,31 @@ +import { Document } from './documents'; +export declare class Field { + private _value; + private _initialValue; + $owner: Document; + name: string; + value: any; + defaultValue: any; + initialValue: any; + fakeValue: any; + errors: any[]; + constructor(owner: Document, name: any); + _getValue(): any; + _setValue(value: any): void; + _getDefaultValue(): any; + _getFakeValue(): any; + _cast(value: any, type: any): any; + reset(): this; + fake(): this; + clear(): this; + commit(): this; + _commitRelated(data: any): void; + rollback(): this; + equals(data: any): boolean; + isChanged(): boolean; + isNested(): boolean; + validate(): Promise; + invalidate(): this; + isValid(): boolean; + hasErrors(): boolean; +} diff --git a/dist/fields.js b/dist/fields.js index 0545924..fe184b3 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -1,494 +1,300 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.Field = undefined; - -var _regenerator = require('babel-runtime/regenerator'); - -var _regenerator2 = _interopRequireDefault(_regenerator); - -var _getIterator2 = require('babel-runtime/core-js/get-iterator'); - -var _getIterator3 = _interopRequireDefault(_getIterator2); - -var _extends2 = require('babel-runtime/helpers/extends'); - -var _extends3 = _interopRequireDefault(_extends2); - -var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _createClass2 = require('babel-runtime/helpers/createClass'); - -var _createClass3 = _interopRequireDefault(_createClass2); - -var _typeable = require('typeable'); - -var _utils = require('./utils'); - -var _schemas = require('./schemas'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments)).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t; + return { next: verb(0), "throw": verb(1), "return": verb(2) }; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [0, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var typeable_1 = require("typeable"); +var utils_1 = require("./utils"); +var schemas_1 = require("./schemas"); /* * Document field class. */ - -var Field = exports.Field = function () { - - /* - * Class constructor. - */ - - function Field(owner, name) { - (0, _classCallCheck3.default)(this, Field); - - Object.defineProperty(this, '$owner', { // reference to the Document instance which owns the field - value: owner - }); - Object.defineProperty(this, 'name', { // the name that a field has on the document - value: name - }); - Object.defineProperty(this, '_value', { // current field value - value: this.defaultValue, - writable: true - }); - Object.defineProperty(this, '_initialValue', { // last committed field value - value: this._value, - writable: true - }); - Object.defineProperty(this, '_errors', { // last action errors - value: [], - writable: true - }); - } - - /* - * Return field value. - */ - - (0, _createClass3.default)(Field, [{ - key: '_cast', - - +var Field = (function () { /* - * Converts the `value` into specified `type`. + * Class constructor. */ - - value: function _cast(value, type) { - var _this = this; - - var types = (0, _extends3.default)({}, this.$owner.$schema.types, { - Schema: function Schema(value) { - if ((0, _typeable.isArray)(type)) type = type[0]; // in case of {type: [Schema]} - - return _this.$owner._createDocument(value, type, _this.$owner); - } - }); - - return (0, _typeable.cast)(value, type, types); + function Field(owner, name) { + var _this = this; + Object.defineProperty(this, '$owner', { + value: owner + }); + Object.defineProperty(this, 'name', { + value: name + }); + Object.defineProperty(this, 'defaultValue', { + get: function () { return _this._getDefaultValue(); }, + enumerable: true + }); + Object.defineProperty(this, '_value', { + value: this.defaultValue, + writable: true + }); + Object.defineProperty(this, 'value', { + get: function () { return _this._getValue(); }, + set: function (v) { return _this._setValue(v); }, + enumerable: true + }); + Object.defineProperty(this, '_initialValue', { + value: this._value, + writable: true + }); + Object.defineProperty(this, 'initialValue', { + get: function () { return _this._initialValue; }, + enumerable: true + }); + Object.defineProperty(this, 'fakeValue', { + get: function () { return _this._getFakeValue(); }, + enumerable: true + }); + Object.defineProperty(this, 'errors', { + value: [], + writable: true + }); } - + /* + * Return field value. + */ + Field.prototype._getValue = function () { + var get = this.$owner.$schema.fields[this.name].get; + var value = this._value; + if (get) { + value = get.call(this.$owner, value); + } + return value; + }; + /* + * Sets field value. + */ + Field.prototype._setValue = function (value) { + var _a = this.$owner.$schema.fields[this.name], set = _a.set, type = _a.type; + value = this._cast(value, type); // value type casting + if (set) { + value = set.call(this.$owner, value); + } + this.invalidate(); // remove the last memorized error because the value has changed + this._value = value; + }; + /* + * Returns the default value of a field. + */ + Field.prototype._getDefaultValue = function () { + var _a = this.$owner.$schema.fields[this.name], type = _a.type, set = _a.set, defaultValue = _a.defaultValue; + var value = typeable_1.isFunction(defaultValue) + ? defaultValue.call(this) + : defaultValue; + value = this._cast(value, type); // value type casting + if (set) { + value = set.call(this.$owner, value); + } + return value; + }; + /* + * Returns a fake value of a field. + */ + Field.prototype._getFakeValue = function () { + var _a = this.$owner.$schema.fields[this.name], type = _a.type, set = _a.set, fakeValue = _a.fakeValue; + var value = typeable_1.isFunction(fakeValue) + ? fakeValue.call(this) + : fakeValue; + value = this._cast(value, type); // value type casting + if (set) { + value = set.call(this.$owner, value); + } + return value; + }; + /* + * Converts the `value` into specified `type`. + */ + Field.prototype._cast = function (value, type) { + var _this = this; + var types = utils_1.merge(this.$owner.$schema.types, { + Schema: function (value) { + if (typeable_1.isArray(type)) + type = type[0]; // in case of {type: [Schema]} + return _this.$owner._createDocument(value, type, _this.$owner); + } + }); + return typeable_1.cast(value, type, types); + }; /* * Sets field to the default value. */ - - }, { - key: 'reset', - value: function reset() { - this.value = this.defaultValue; - - return this; - } - + Field.prototype.reset = function () { + this.value = this.defaultValue; + return this; + }; /* * Sets field to a generated fake value. */ - - }, { - key: 'fake', - value: function fake() { - this.value = this.fakeValue || this.defaultValue; - - return this; - } - + Field.prototype.fake = function () { + this.value = this.fakeValue || this.defaultValue; + return this; + }; /* * Removes field's value by setting it to null. */ - - }, { - key: 'clear', - value: function clear() { - this.value = null; - - return this; - } - + Field.prototype.clear = function () { + this.value = null; + return this; + }; /* * Deeply set's the initial values to the current value of each field. */ - - }, { - key: 'commit', - value: function commit() { - this._commitRelated(this.value); - this._initialValue = (0, _utils.serialize)(this.value); - - return this; - } - + Field.prototype.commit = function () { + this._commitRelated(this.value); + this._initialValue = utils_1.serialize(this.value); + return this; + }; /* * Deeply set's the initial values of the related `data` object to the current * value of each field. */ - - }, { - key: '_commitRelated', - value: function _commitRelated(data) { - var _this2 = this; - - // commit sub fields - if (data && data.commit) { - data.commit(); - } else if (data && (0, _typeable.isArray)(data)) { - data.forEach(function (d) { - return _this2._commitRelated(d); - }); - } - } - + Field.prototype._commitRelated = function (data) { + var _this = this; + if (data && data.commit) { + data.commit(); + } + else if (data && typeable_1.isArray(data)) { + data.forEach(function (d) { return _this._commitRelated(d); }); + } + }; /* * Sets field's value before last commit. */ - - }, { - key: 'rollback', - value: function rollback() { - this.value = this.initialValue; - - return this; - } - + Field.prototype.rollback = function () { + this.value = this.initialValue; + return this; + }; /* * Returns `true` when the `data` equals to the current value. */ - - }, { - key: 'equals', - value: function equals(data) { - return (0, _utils.isEqual)((0, _utils.serialize)(this.value), (0, _utils.serialize)(data)); - } - + Field.prototype.equals = function (data) { + return utils_1.isEqual(utils_1.serialize(this.value), utils_1.serialize(data)); + }; /* * Returns `true` if the field or related sub-fields have been changed. */ - - }, { - key: 'isChanged', - value: function isChanged() { - return !this.equals(this.initialValue); - } - + Field.prototype.isChanged = function () { + return !this.equals(this.initialValue); + }; /* * Returns `true` if the field is a Document field. */ - - }, { - key: 'isNested', - value: function isNested() { - var type = this.$owner.$schema.fields[this.name].type; - - if ((0, _typeable.isArray)(type)) type = type[0]; - - if (type.fields) { - return type instanceof _schemas.Schema; - } - return false; - } - + Field.prototype.isNested = function () { + var type = this.$owner.$schema.fields[this.name].type; + if (typeable_1.isArray(type)) + type = type[0]; + if (type.fields) { + return type instanceof schemas_1.Schema; + } + return false; + }; /* - * Validates the field by populating the `_errors` property. + * Validates the field by populating the `errors` property. * * IMPORTANT: Array null values for nested objects are not treated as an object * but as an empty item thus isValid() for [null] succeeds. */ - - }, { - key: 'validate', - value: function validate() { - var relatives, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, relative, isDocument; - - return _regenerator2.default.async(function validate$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - relatives = (0, _typeable.toArray)(this.value) || []; // validate related documents - - _iteratorNormalCompletion = true; - _didIteratorError = false; - _iteratorError = undefined; - _context.prev = 4; - _iterator = (0, _getIterator3.default)(relatives); - - case 6: - if (_iteratorNormalCompletion = (_step = _iterator.next()).done) { - _context.next = 15; - break; - } - - relative = _step.value; - isDocument = relative instanceof this.$owner.constructor; - - if (!isDocument) { - _context.next = 12; - break; - } - - _context.next = 12; - return _regenerator2.default.awrap(relative.validate({ quiet: true })); - - case 12: - _iteratorNormalCompletion = true; - _context.next = 6; - break; - - case 15: - _context.next = 21; - break; - - case 17: - _context.prev = 17; - _context.t0 = _context['catch'](4); - _didIteratorError = true; - _iteratorError = _context.t0; - - case 21: - _context.prev = 21; - _context.prev = 22; - - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - - case 24: - _context.prev = 24; - - if (!_didIteratorError) { - _context.next = 27; - break; - } - - throw _iteratorError; - - case 27: - return _context.finish(24); - - case 28: - return _context.finish(21); - - case 29: - _context.next = 31; - return _regenerator2.default.awrap(this.$owner.$validator.validate( // validate this field - this.value, this.$owner.$schema.fields[this.name].validate)); - - case 31: - this._errors = _context.sent; - return _context.abrupt('return', this); - - case 33: - case 'end': - return _context.stop(); - } - } - }, null, this, [[4, 17, 21, 29], [22,, 24, 28]]); - } - + Field.prototype.validate = function () { + return __awaiter(this, void 0, void 0, function () { + var relatives, _i, relatives_1, relative, isDocument, _a; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + relatives = typeable_1.toArray(this.value) || []; + _i = 0, relatives_1 = relatives; + _b.label = 1; + case 1: + if (!(_i < relatives_1.length)) + return [3 /*break*/, 4]; + relative = relatives_1[_i]; + isDocument = relative instanceof this.$owner.constructor; + if (!isDocument) + return [3 /*break*/, 3]; + return [4 /*yield*/, relative.validate({ quiet: true })]; + case 2: + _b.sent(); // don't throw + _b.label = 3; + case 3: + _i++; + return [3 /*break*/, 1]; + case 4: + _a = this; + return [4 /*yield*/, this.$owner.$validator.validate(// validate this field + this.value, this.$owner.$schema.fields[this.name].validate)]; + case 5: + _a.errors = _b.sent(); + return [2 /*return*/, this]; + } + }); + }); + }; /* - * Validates the field by clearing the `_errors` property + * Validates the field by clearing the `errors` property */ - - }, { - key: 'invalidate', - value: function invalidate() { - var relatives = (0, _typeable.toArray)(this.value) || []; // validate related documents - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; - - try { - for (var _iterator2 = (0, _getIterator3.default)(relatives), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var relative = _step2.value; - - var isDocument = relative instanceof this.$owner.constructor; - - if (isDocument) { - relative.invalidate(); - } + Field.prototype.invalidate = function () { + var relatives = typeable_1.toArray(this.value) || []; // validate related documents + for (var _i = 0, relatives_2 = relatives; _i < relatives_2.length; _i++) { + var relative = relatives_2[_i]; + var isDocument = relative instanceof this.$owner.constructor; + if (isDocument) { + relative.invalidate(); + } } - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2.return) { - _iterator2.return(); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } - } - } - - this._errors = []; - - return this; - } - + this.errors = []; + return this; + }; /* * Returns `true` when the value is valid (inverse of `hasErrors`). */ - - }, { - key: 'isValid', - value: function isValid() { - return !this.hasErrors(); - } - + Field.prototype.isValid = function () { + return !this.hasErrors(); + }; /* * Returns `true` when errors exist (inverse of `isValid`). */ - - }, { - key: 'hasErrors', - value: function hasErrors() { - if (this.errors.length > 0) { - return true; - } else if (!this.isNested()) { - return false; - } else { - return (0, _typeable.toArray)(this.value).filter(function (f) { - return !!f; - }).some(function (f) { - return f.hasErrors(); - }); - } - } - }, { - key: 'value', - get: function get() { - var get = this.$owner.$schema.fields[this.name].get; - - - var value = this._value; - if (get) { - // transformation with custom getter - value = get.call(this.$owner, value); - } - return value; - } - - /* - * Sets field value. - */ - - , - set: function set(value) { - var _$owner$$schema$field = this.$owner.$schema.fields[this.name], - set = _$owner$$schema$field.set, - type = _$owner$$schema$field.type; - - - value = this._cast(value, type); // value type casting - if (set) { - // transformation with custom setter - value = set.call(this.$owner, value); - } - - this.invalidate(); // remove the last memorized error because the value has changed - this._value = value; - } - - /* - * Returns the default value of a field. - */ - - }, { - key: 'defaultValue', - get: function get() { - var _$owner$$schema$field2 = this.$owner.$schema.fields[this.name], - type = _$owner$$schema$field2.type, - set = _$owner$$schema$field2.set, - defaultValue = _$owner$$schema$field2.defaultValue; - - - var value = (0, _typeable.isFunction)(defaultValue) ? defaultValue.call(this) : defaultValue; - - value = this._cast(value, type); // value type casting - if (set) { - // custom setter - value = set.call(this.$owner, value); - } - - return value; - } - - /* - * Returns a fake value of a field. - */ - - }, { - key: 'fakeValue', - get: function get() { - var _$owner$$schema$field3 = this.$owner.$schema.fields[this.name], - type = _$owner$$schema$field3.type, - set = _$owner$$schema$field3.set, - fakeValue = _$owner$$schema$field3.fakeValue; - - - var value = (0, _typeable.isFunction)(fakeValue) ? fakeValue.call(this) : fakeValue; - - value = this._cast(value, type); // value type casting - if (set) { - // custom setter - value = set.call(this.$owner, value); - } - - return value; - } - - /* - * Returns the value of a field of the last commit. - */ - - }, { - key: 'initialValue', - get: function get() { - return this._initialValue; - } - - /* - * Returns the last error of the field. - */ - - }, { - key: 'errors', - get: function get() { - return this._errors; - } - - /* - * Returns the last error of the field. - */ - - , - set: function set(errors) { - this._errors = errors; - } - }]); - return Field; -}(); \ No newline at end of file + Field.prototype.hasErrors = function () { + if (this.errors.length > 0) { + return true; + } + else if (!this.isNested()) { + return false; + } + else { + return typeable_1.toArray(this.value).filter(function (f) { return !!f; }).some(function (f) { return f.hasErrors(); }); + } + }; + return Field; +}()); +exports.Field = Field; diff --git a/dist/index.d.ts b/dist/index.d.ts new file mode 100644 index 0000000..be3fcb5 --- /dev/null +++ b/dist/index.d.ts @@ -0,0 +1,4 @@ +import { Schema } from './schemas'; +import { Document } from './documents'; +import { Field } from './fields'; +export { Schema, Document, Field }; diff --git a/dist/index.js b/dist/index.js index 46999c0..ee7f388 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,20 +1,7 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.Field = exports.Document = exports.Schema = undefined; - -var _schemas = require('./schemas'); - -var _documents = require('./documents'); - -var _fields = require('./fields'); - -/* -* Exposing public classes. -*/ - -exports.Schema = _schemas.Schema; -exports.Document = _documents.Document; -exports.Field = _fields.Field; \ No newline at end of file +"use strict"; +var schemas_1 = require("./schemas"); +exports.Schema = schemas_1.Schema; +var documents_1 = require("./documents"); +exports.Document = documents_1.Document; +var fields_1 = require("./fields"); +exports.Field = fields_1.Field; diff --git a/dist/schemas.d.ts b/dist/schemas.d.ts new file mode 100644 index 0000000..b752dd9 --- /dev/null +++ b/dist/schemas.d.ts @@ -0,0 +1,15 @@ +export declare class Schema { + fields: {}; + strict: boolean; + validators: {}; + types: {}; + firstErrorOnly?: boolean; + constructor({mixins, fields, strict, validators, types, firstErrorOnly}?: { + mixins?: Schema[]; + fields?: {}; + strict?: boolean; + validators?: {}; + types?: {}; + firstErrorOnly?: boolean; + }); +} diff --git a/dist/schemas.js b/dist/schemas.js index 8a9d3ea..a94ffe3 100644 --- a/dist/schemas.js +++ b/dist/schemas.js @@ -1,96 +1,38 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.Schema = undefined; - -var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray'); - -var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); - -var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _typeable = require('typeable'); - -var _utils = require('./utils'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - +"use strict"; +var typeable_1 = require("typeable"); +var utils_1 = require("./utils"); /* * A class for defining Document structure and properties. */ - -var Schema = - -/* -* Class constructor. -*/ - -exports.Schema = function Schema() { - var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - _ref$mixins = _ref.mixins, - mixins = _ref$mixins === undefined ? [] : _ref$mixins, - _ref$fields = _ref.fields, - fields = _ref$fields === undefined ? {} : _ref$fields, - strict = _ref.strict, - _ref$validators = _ref.validators, - validators = _ref$validators === undefined ? {} : _ref$validators, - _ref$types = _ref.types, - types = _ref$types === undefined ? {} : _ref$types, - firstErrorOnly = _ref.firstErrorOnly; - - (0, _classCallCheck3.default)(this, Schema); - - - Object.defineProperty(this, 'fields', { // document fields - get: function get() { - return _utils.merge.apply(undefined, (0, _toConsumableArray3.default)(mixins.map(function (s) { - return (0, _utils.retrieve)(s.fields); - })).concat([(0, _utils.retrieve)(fields)])); - }, - enumerable: true // required for deep nesting - }); - - Object.defineProperty(this, 'strict', { // document schema mode - get: function get() { - return [true].concat(mixins.map(function (s) { - return s.strict; - }), strict).filter(function (s) { - return (0, _typeable.isBoolean)(s); - }).reverse()[0]; - }, - enumerable: true // required for deep nesting - }); - - Object.defineProperty(this, 'validators', { // validatable.js configuration option - get: function get() { - return _utils.merge.apply(undefined, (0, _toConsumableArray3.default)(mixins.map(function (v) { - return v.validators; - })).concat([validators])); - }, - enumerable: true // required for deep nesting - }); - - Object.defineProperty(this, 'types', { // typeable.js configuration option - get: function get() { - return _utils.merge.apply(undefined, (0, _toConsumableArray3.default)(mixins.map(function (v) { - return v.types; - })).concat([types])); - }, - enumerable: true // required for deep nesting - }); - - Object.defineProperty(this, 'firstErrorOnly', { // validatable.js configuration option - get: function get() { - return [false].concat(mixins.map(function (s) { - return s.firstErrorOnly; - }), firstErrorOnly).filter(function (s) { - return (0, _typeable.isBoolean)(s); - }).reverse()[0]; - }, - enumerable: true // required for deep nesting - }); -}; \ No newline at end of file +var Schema = (function () { + /* + * Class constructor. + */ + function Schema(_a) { + var _b = _a === void 0 ? {} : _a, _c = _b.mixins, mixins = _c === void 0 ? [] : _c, // not a property + _d = _b.fields, // not a property + fields = _d === void 0 ? {} : _d, strict = _b.strict, _e = _b.validators, validators = _e === void 0 ? {} : _e, _f = _b.types, types = _f === void 0 ? {} : _f, firstErrorOnly = _b.firstErrorOnly; + Object.defineProperty(this, 'fields', { + get: function () { return utils_1.merge.apply(void 0, mixins.map(function (s) { return utils_1.retrieve(s.fields); }).concat([utils_1.retrieve(fields)])); }, + enumerable: true // required for deep nesting + }); + Object.defineProperty(this, 'strict', { + get: function () { return ([true].concat(mixins.map(function (s) { return s.strict; }), strict).filter(function (s) { return typeable_1.isBoolean(s); }).reverse()[0]); }, + enumerable: true // required for deep nesting + }); + Object.defineProperty(this, 'validators', { + get: function () { return utils_1.merge.apply(void 0, mixins.map(function (v) { return v.validators; }).concat([validators])); }, + enumerable: true // required for deep nesting + }); + Object.defineProperty(this, 'types', { + get: function () { return utils_1.merge.apply(void 0, mixins.map(function (v) { return v.types; }).concat([types])); }, + enumerable: true // required for deep nesting + }); + Object.defineProperty(this, 'firstErrorOnly', { + get: function () { return ([false].concat(mixins.map(function (s) { return s.firstErrorOnly; }), firstErrorOnly).filter(function (s) { return typeable_1.isBoolean(s); }).reverse()[0]); }, + enumerable: true // required for deep nesting + }); + } + return Schema; +}()); +exports.Schema = Schema; diff --git a/dist/utils.d.ts b/dist/utils.d.ts new file mode 100644 index 0000000..2ceb234 --- /dev/null +++ b/dist/utils.d.ts @@ -0,0 +1,6 @@ +import * as merge from 'lodash.merge'; +import * as isEqual from 'lodash.isequal'; +export { merge }; +export { isEqual }; +export declare function serialize(data: any): any; +export declare function retrieve(input: any): any; diff --git a/dist/utils.js b/dist/utils.js index 3cf0bfd..611fdf1 100644 --- a/dist/utils.js +++ b/dist/utils.js @@ -1,54 +1,21 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.isEqual = exports.merge = undefined; - -var _stringify = require('babel-runtime/core-js/json/stringify'); - -var _stringify2 = _interopRequireDefault(_stringify); - -exports.serialize = serialize; -exports.retrieve = retrieve; - -var _typeable = require('typeable'); - -var _lodash = require('lodash.merge'); - -var _lodash2 = _interopRequireDefault(_lodash); - -var _lodash3 = require('lodash.isequal'); - -var _lodash4 = _interopRequireDefault(_lodash3); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/* -* Deeply combines multiple values. -*/ - -exports.merge = _lodash2.default; - -/* -* Deeply checks if two objects are equal. -*/ - -exports.isEqual = _lodash4.default; - +"use strict"; +var typeable_1 = require("typeable"); +var merge = require("lodash.merge"); +exports.merge = merge; +var isEqual = require("lodash.isequal"); +exports.isEqual = isEqual; /* * Returns a duplicated data object (useful to remove data bindings). */ - function serialize(data) { - return JSON.parse((0, _stringify2.default)(data)); + return JSON.parse(JSON.stringify(data)); } - +exports.serialize = serialize; /* * A helper method for retrieving a value from an input which can be * a value or a function. */ - function retrieve(input) { - return (0, _typeable.isFunction)(input) ? input() : input; -} \ No newline at end of file + return typeable_1.isFunction(input) ? input() : input; +} +exports.retrieve = retrieve; diff --git a/nodemon.json b/nodemon.json index a008194..82b8933 100644 --- a/nodemon.json +++ b/nodemon.json @@ -1,3 +1,4 @@ { - "ignore": ["dist/*"] + "ignore": ["dist/*"], + "ext": "js,ts" } diff --git a/package.json b/package.json index b746e47..c72a88f 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,9 @@ { "name": "objectschema", - "version": "3.8.0", + "version": "3.9.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", + "types": "./dist/index.d.ts", "ava": { "files": [ "./tests/*.js", @@ -13,11 +14,9 @@ }, "scripts": { "clean": "rm -Rf ./dist", - "prebuild": "npm run clean; mkdir -p ./dist", - "build": "babel ./src --out-dir ./dist --copy-files", + "build": "npm run clean; tsc", "prepublish": "npm run build", - "pretest": "npm run build", - "test": "ava", + "test": "npm run build && ava", "example": "node ./example" }, "repository": { @@ -44,15 +43,9 @@ "license": "MIT", "devDependencies": { "ava": "^0.17.0", - "babel-cli": "^6.18.0", - "babel-plugin-syntax-async-functions": "^6.13.0", - "babel-plugin-transform-object-assign": "^6.8.0", - "babel-plugin-transform-regenerator": "^6.21.0", - "babel-plugin-transform-runtime": "^6.15.0", - "babel-preset-es2015": "^6.18.0" + "typescript": "^2.1.4" }, "dependencies": { - "babel-runtime": "^6.20.0", "lodash.isequal": "^4.4.0", "lodash.merge": "^4.6.0", "typeable": "^0.21.0", diff --git a/src/documents.js b/src/documents.ts similarity index 83% rename from src/documents.js rename to src/documents.ts index 04b3618..c3b01f4 100644 --- a/src/documents.js +++ b/src/documents.ts @@ -2,32 +2,50 @@ import {isPresent, isObject, isArray} from 'typeable'; import {Validator} from 'validatable'; import {Schema} from './schemas'; import {Field} from './fields'; -import {serialize, isEqual} from './utils'; +import {serialize, isEqual, merge} from './utils'; + +/* +* Flattened field reference type definition. +*/ + +export interface FieldRef { + path: string[]; + field: Field; +} + +/* +* Field error type definition. +*/ + +export interface FieldError extends Error { + path: string[]; + errors: any[]; +} /* * The core schema-based object class. */ export class Document { + $schema: Schema; + $parent: Document; + $root: Document; + $validator: Validator; /* * Class constructor. */ - constructor (data, schema, parent = null) { + constructor (data, schema: Schema, parent?: Document) { Object.defineProperty(this, '$schema', { // schema instance value: schema }); Object.defineProperty(this, '$parent', { // parent document instance - value: parent + value: parent || null }); Object.defineProperty(this, '$root', { // root document instance get: () => this._getRootDocument() }); - Object.defineProperty(this, '$error', { // last document error instance - value: null, - writable: true - }); Object.defineProperty(this, '$validator', { // validatable.js instance value: this._createValidator() }); @@ -41,7 +59,7 @@ export class Document { */ _getRootDocument () { - let root = this; + let root: any = this; do { if (root.$parent) { root = root.$parent; @@ -58,7 +76,7 @@ export class Document { */ _createDocument (data = null, schema = null, parent = null) { - return new this.constructor(data, schema, parent); + return new (this.constructor as any)(data, schema, parent); } /* @@ -76,7 +94,7 @@ export class Document { _createValidator () { return new Validator( - Object.assign({}, { + merge({}, { validators: this.$schema.validators, firstErrorOnly: this.$schema.firstErrorOnly, context: this @@ -89,7 +107,7 @@ export class Document { */ _createValidationError (paths) { - let error = new Error('Validation failed'); + let error: any = new Error('Validation failed'); error.code = 422; error.paths = paths; @@ -131,7 +149,7 @@ export class Document { * Returns a value at path. */ - getPath (...keys) { + getPath (...keys): Field { if (isArray(keys[0])) { keys = keys[0]; } @@ -143,7 +161,7 @@ export class Document { * Returns `true` if field at path exists. */ - hasPath (...keys) { + hasPath (...keys): boolean { return this.getPath(...keys) !== undefined; } @@ -151,7 +169,7 @@ export class Document { * Scrolls through all set fields and returns an array of results. */ - flatten (prefix = []) { + flatten (prefix: string[] = []): FieldRef[] { let fields = []; for (let name in this.$schema.fields) { @@ -186,7 +204,7 @@ export class Document { * Sets field values from the provided by data object. */ - populate (data={}) { + populate (data = {}): this { return this._populateFields(data); } @@ -194,7 +212,7 @@ export class Document { * Sets field values from the provided by data object. */ - _populateFields (data={}) { + _populateFields (data = {}) { data = serialize(data); for (let name in data) { @@ -226,7 +244,7 @@ export class Document { * Converts this class into serialized data object. */ - serialize () { + serialize (): {} { return serialize(this); } @@ -235,11 +253,11 @@ export class Document { * pass the `test`. */ - filter (test) { + filter (test: (field: FieldRef) => boolean): {} { let data = serialize(this); this.flatten() - .sort((a, b) => a.path.length < b.path.length) + .sort((a, b) => b.path.length - a.path.length) .filter((field) => !test(field)) .forEach((field) => { let names = field.path.concat(); @@ -254,7 +272,7 @@ export class Document { * Scrolls through object fields and collects results. */ - collect (handler) { + collect (handler: (field: FieldRef) => FieldRef): FieldRef[] { return this.flatten().map(handler); } @@ -262,7 +280,7 @@ export class Document { * Scrolls through document fields and executes a handler on each field. */ - scroll (handler) { + scroll (handler: (field: FieldRef) => void): number { return this.flatten().map(handler).length; } @@ -270,7 +288,7 @@ export class Document { * Sets each document field to its default value. */ - reset () { + reset (): this { let {fields} = this.$schema; for (let name in fields) { @@ -285,7 +303,7 @@ export class Document { * is registered, otherwise the default value is used. */ - fake () { + fake (): this { let {fields} = this.$schema; for (let name in fields) { @@ -299,7 +317,7 @@ export class Document { * Removes all fileds values by setting them to `null`. */ - clear () { + clear (): this { let {fields} = this.$schema; for (let name in fields) { @@ -313,7 +331,7 @@ export class Document { * Sets initial value of each document field to the current value of a field. */ - commit () { + commit (): this { let {fields} = this.$schema; for (let name in fields) { @@ -327,7 +345,7 @@ export class Document { * Sets each document field to its initial value (value before last commit). */ - rollback () { + rollback (): this { let {fields} = this.$schema; for (let name in fields) { @@ -342,7 +360,7 @@ export class Document { * same field values as the original document. */ - equals (value) { + equals (value: any): boolean { return isEqual( serialize(this), serialize(value) @@ -353,7 +371,7 @@ export class Document { * Returns a new Document instance which is the exact copy of the original. */ - clone () { + clone (): this { return this._createDocument(this, this.$schema, this.$parent); } @@ -361,7 +379,7 @@ export class Document { * Returns a `true` if at least one field has been changed. */ - isChanged () { + isChanged (): boolean { return Object.keys(this.$schema.fields).some((name) => { return this[`$${name}`].isChanged(); }); @@ -371,7 +389,7 @@ export class Document { * Validates fields and returns errors. */ - async validate ({quiet = false} = {}) { + async validate ({quiet = false}: {quiet?: boolean} = {}): Promise { let {fields} = this.$schema; for (let path in fields) { @@ -390,7 +408,7 @@ export class Document { * Validates fields and returns errors. */ - invalidate () { + invalidate (): this { let {fields} = this.$schema; for (let path in fields) { @@ -404,7 +422,7 @@ export class Document { * Returns `true` when all document fields are valid (inverse of `hasErrors`). */ - isValid () { + isValid (): boolean { return !this.hasErrors(); } @@ -412,7 +430,7 @@ export class Document { * Returns `true` if nested fields exist. */ - isNested () { + isNested (): boolean { return Object.keys(this.$schema.fields).some((name) => { return this[`$${name}`].isNested(); }); @@ -422,7 +440,7 @@ export class Document { * Returns `true` when errors exist (inverse of `isValid`). */ - hasErrors () { + hasErrors (): boolean { return Object.keys(this.$schema.fields).some((name) => { return this[`$${name}`].hasErrors(); }); @@ -432,9 +450,9 @@ export class Document { * Returns a list of all field-related errors, including those deeply nested. */ - collectErrors () { + collectErrors (): FieldError[] { return this.flatten().map(({path, field}) => { - return {path, errors: field.errors}; + return {path, errors: field.errors} as FieldError; }).filter(({path, errors}) => { return errors.length > 0; }); @@ -444,7 +462,7 @@ export class Document { * Deeply populates fields with the provided `errors`. */ - applyErrors (errors = []) { + applyErrors (errors: FieldError[] = []): this { for (let error of errors) { let path = error.path.concat(); path[path.length - 1] = `$${path[path.length - 1]}`; diff --git a/src/fields.js b/src/fields.ts similarity index 76% rename from src/fields.js rename to src/fields.ts index 7cbc4e4..0a29bb5 100644 --- a/src/fields.js +++ b/src/fields.ts @@ -1,33 +1,66 @@ import {cast, isArray, toArray, isFunction} from 'typeable'; -import {serialize, isEqual} from './utils'; +import {serialize, isEqual, merge} from './utils'; import {Schema} from './schemas'; +import {Document} from './documents'; /* * Document field class. */ export class Field { + private _value: any; + private _initialValue: any; + $owner: Document; + name: string; + value: any; + defaultValue: any; + initialValue: any; + fakeValue: any; + errors: any[]; /* * Class constructor. */ - constructor (owner, name) { + constructor (owner: Document, name) { Object.defineProperty(this, '$owner', { // reference to the Document instance which owns the field value: owner }); - Object.defineProperty(this, 'name', { // the name that a field has on the document + + Object.defineProperty(this, 'name', { // field name value: name, }); + + Object.defineProperty(this, 'defaultValue', { // default field value + get: () => this._getDefaultValue(), + enumerable: true + }); + Object.defineProperty(this, '_value', { // current field value value: this.defaultValue, writable: true }); + Object.defineProperty(this, 'value', { + get: () => this._getValue(), + set: (v) => this._setValue(v), + enumerable: true + }); + Object.defineProperty(this, '_initialValue', { // last committed field value value: this._value, writable: true }); - Object.defineProperty(this, '_errors', { // last action errors + Object.defineProperty(this, 'initialValue', { + get: () => this._initialValue, + enumerable: true + }); + + Object.defineProperty(this, 'fakeValue', { + get: () => this._getFakeValue(), + enumerable: true + }); + + Object.defineProperty(this, 'errors', { // last action errors value: [], writable: true }); @@ -37,7 +70,7 @@ export class Field { * Return field value. */ - get value () { + _getValue () { let {get} = this.$owner.$schema.fields[this.name]; let value = this._value; @@ -51,7 +84,7 @@ export class Field { * Sets field value. */ - set value (value) { + _setValue (value) { let {set, type} = this.$owner.$schema.fields[this.name]; value = this._cast(value, type); // value type casting @@ -67,7 +100,7 @@ export class Field { * Returns the default value of a field. */ - get defaultValue () { + _getDefaultValue () { let {type, set, defaultValue} = this.$owner.$schema.fields[this.name]; let value = isFunction(defaultValue) @@ -86,7 +119,7 @@ export class Field { * Returns a fake value of a field. */ - get fakeValue () { + _getFakeValue () { let {type, set, fakeValue} = this.$owner.$schema.fields[this.name]; let value = isFunction(fakeValue) @@ -101,36 +134,12 @@ export class Field { return value; } - /* - * Returns the value of a field of the last commit. - */ - - get initialValue () { - return this._initialValue; - } - - /* - * Returns the last error of the field. - */ - - get errors () { - return this._errors; - } - - /* - * Returns the last error of the field. - */ - - set errors (errors) { - this._errors = errors; - } - /* * Converts the `value` into specified `type`. */ _cast (value, type) { - let types = Object.assign({}, this.$owner.$schema.types, { + let types = merge(this.$owner.$schema.types, { Schema: (value) => { if (isArray(type)) type = type[0]; // in case of {type: [Schema]} @@ -145,7 +154,7 @@ export class Field { * Sets field to the default value. */ - reset () { + reset (): this { this.value = this.defaultValue; return this; @@ -155,7 +164,7 @@ export class Field { * Sets field to a generated fake value. */ - fake () { + fake (): this { this.value = this.fakeValue || this.defaultValue; return this; @@ -165,7 +174,7 @@ export class Field { * Removes field's value by setting it to null. */ - clear () { + clear (): this { this.value = null; return this; @@ -175,7 +184,7 @@ export class Field { * Deeply set's the initial values to the current value of each field. */ - commit () { + commit (): this { this._commitRelated(this.value); this._initialValue = serialize(this.value); @@ -200,7 +209,7 @@ export class Field { * Sets field's value before last commit. */ - rollback () { + rollback (): this { this.value = this.initialValue; return this; @@ -210,7 +219,7 @@ export class Field { * Returns `true` when the `data` equals to the current value. */ - equals (data) { + equals (data): boolean { return isEqual( serialize(this.value), serialize(data) @@ -221,7 +230,7 @@ export class Field { * Returns `true` if the field or related sub-fields have been changed. */ - isChanged () { + isChanged (): boolean { return !this.equals(this.initialValue); } @@ -229,7 +238,7 @@ export class Field { * Returns `true` if the field is a Document field. */ - isNested () { + isNested (): boolean { let {type} = this.$owner.$schema.fields[this.name]; if (isArray(type)) type = type[0]; @@ -240,13 +249,13 @@ export class Field { } /* - * Validates the field by populating the `_errors` property. + * Validates the field by populating the `errors` property. * * IMPORTANT: Array null values for nested objects are not treated as an object * but as an empty item thus isValid() for [null] succeeds. */ - async validate () { + async validate (): Promise { let relatives = toArray(this.value) || []; // validate related documents for (let relative of relatives) { let isDocument = relative instanceof this.$owner.constructor; @@ -256,7 +265,7 @@ export class Field { } } - this._errors = await this.$owner.$validator.validate( // validate this field + this.errors = await this.$owner.$validator.validate( // validate this field this.value, this.$owner.$schema.fields[this.name].validate ); @@ -265,10 +274,10 @@ export class Field { } /* - * Validates the field by clearing the `_errors` property + * Validates the field by clearing the `errors` property */ - invalidate () { + invalidate (): this { let relatives = toArray(this.value) || []; // validate related documents for (let relative of relatives) { let isDocument = relative instanceof this.$owner.constructor; @@ -278,7 +287,7 @@ export class Field { } } - this._errors = []; + this.errors = []; return this; } @@ -287,7 +296,7 @@ export class Field { * Returns `true` when the value is valid (inverse of `hasErrors`). */ - isValid () { + isValid (): boolean { return !this.hasErrors(); } @@ -295,7 +304,7 @@ export class Field { * Returns `true` when errors exist (inverse of `isValid`). */ - hasErrors () { + hasErrors (): boolean { if (this.errors.length > 0) { return true; } diff --git a/src/index.js b/src/index.ts similarity index 100% rename from src/index.js rename to src/index.ts diff --git a/src/schemas.js b/src/schemas.ts similarity index 87% rename from src/schemas.js rename to src/schemas.ts index 52d3da4..be832eb 100644 --- a/src/schemas.js +++ b/src/schemas.ts @@ -6,6 +6,11 @@ import {retrieve, merge} from './utils'; */ export class Schema { + fields: {}; + strict: boolean; + validators: {}; + types: {}; + firstErrorOnly?: boolean; /* * Class constructor. @@ -18,6 +23,13 @@ export class Schema { validators = {}, types = {}, firstErrorOnly + }: { + mixins?: Schema[], + fields?: {}, + strict?: boolean, + validators?: {}, + types?: {}, + firstErrorOnly?: boolean } = {}) { Object.defineProperty(this, 'fields', { // document fields diff --git a/src/utils.js b/src/utils.ts similarity index 86% rename from src/utils.js rename to src/utils.ts index 3851119..9bde14e 100644 --- a/src/utils.js +++ b/src/utils.ts @@ -1,6 +1,6 @@ import {isFunction} from 'typeable'; -import merge from 'lodash.merge'; -import isEqual from 'lodash.isequal'; +import * as merge from 'lodash.merge'; +import * as isEqual from 'lodash.isequal'; /* * Deeply combines multiple values. diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..9f2313d --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es3", + "noImplicitAny": false, + "sourceMap": false, + "outDir": "dist", + "declaration": true, + "lib": ["es2015.promise", "es5"] + } +} diff --git a/yarn.lock b/yarn.lock index 9c571c4..0c3c3f6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -217,27 +217,6 @@ aws4@^1.2.1: version "1.5.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755" -babel-cli@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.18.0.tgz#92117f341add9dead90f6fa7d0a97c0cc08ec186" - dependencies: - babel-core "^6.18.0" - babel-polyfill "^6.16.0" - babel-register "^6.18.0" - babel-runtime "^6.9.0" - commander "^2.8.1" - convert-source-map "^1.1.0" - fs-readdir-recursive "^1.0.0" - glob "^5.0.5" - lodash "^4.2.0" - output-file-sync "^1.1.0" - path-is-absolute "^1.0.0" - slash "^1.0.0" - source-map "^0.5.0" - v8flags "^2.0.10" - optionalDependencies: - chokidar "^1.0.0" - babel-code-frame@^6.16.0: version "6.16.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.16.0.tgz#f90e60da0862909d3ce098733b5d3987c97cb8de" @@ -435,7 +414,7 @@ babel-plugin-espower@^2.3.1: espurify "^1.6.0" estraverse "^4.1.1" -babel-plugin-syntax-async-functions@^6.13.0, babel-plugin-syntax-async-functions@^6.8.0: +babel-plugin-syntax-async-functions@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" @@ -680,12 +659,6 @@ babel-plugin-transform-exponentiation-operator@^6.3.13: babel-plugin-syntax-exponentiation-operator "^6.8.0" babel-runtime "^6.0.0" -babel-plugin-transform-object-assign@^6.8.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-assign/-/babel-plugin-transform-object-assign-6.8.0.tgz#76e17f2dc0f36f14f548b9afd7aaef58d29ebb75" - dependencies: - babel-runtime "^6.0.0" - babel-plugin-transform-object-rest-spread@^6.16.0: version "6.19.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.19.0.tgz#f6ac428ee3cb4c6aa00943ed1422ce813603b34c" @@ -693,7 +666,7 @@ babel-plugin-transform-object-rest-spread@^6.16.0: babel-plugin-syntax-object-rest-spread "^6.8.0" babel-runtime "^6.0.0" -babel-plugin-transform-regenerator@^6.16.0, babel-plugin-transform-regenerator@^6.21.0: +babel-plugin-transform-regenerator@^6.16.0: version "6.21.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.21.0.tgz#75d0c7e7f84f379358f508451c68a2c5fa5a9703" dependencies: @@ -712,14 +685,6 @@ babel-plugin-transform-strict-mode@^6.18.0: babel-runtime "^6.0.0" babel-types "^6.18.0" -babel-polyfill@^6.16.0: - version "6.16.0" - resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.16.0.tgz#2d45021df87e26a374b6d4d1a9c65964d17f2422" - dependencies: - babel-runtime "^6.9.1" - core-js "^2.4.0" - regenerator-runtime "^0.9.5" - babel-preset-es2015-node4@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/babel-preset-es2015-node4/-/babel-preset-es2015-node4-2.1.0.tgz#9852f281e2332b57d49c189841ac25466a6ebe98" @@ -733,7 +698,7 @@ babel-preset-es2015-node4@^2.1.0: babel-plugin-transform-es2015-sticky-regex "^6.5.0" babel-plugin-transform-es2015-unicode-regex "^6.5.0" -babel-preset-es2015@^6.16.0, babel-preset-es2015@^6.18.0: +babel-preset-es2015@^6.16.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.18.0.tgz#b8c70df84ec948c43dcf2bf770e988eb7da88312" dependencies: @@ -793,20 +758,13 @@ babel-register@^6.18.0: mkdirp "^0.5.1" source-map-support "^0.4.2" -babel-runtime@^6.0.0, babel-runtime@^6.11.6, babel-runtime@^6.9.0, babel-runtime@^6.9.1: +babel-runtime@^6.0.0, babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.9.0, babel-runtime@^6.9.1: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.18.0.tgz#0f4177ffd98492ef13b9f823e9994a02584c9078" dependencies: core-js "^2.4.0" regenerator-runtime "^0.9.5" -babel-runtime@^6.18.0, babel-runtime@^6.20.0: - version "6.20.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.20.0.tgz#87300bdcf4cd770f09bf0048c64204e17806d16f" - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.10.0" - babel-template@^6.14.0, babel-template@^6.15.0, babel-template@^6.16.0, babel-template@^6.7.0, babel-template@^6.8.0: version "6.16.0" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.16.0.tgz#e149dd1a9f03a35f817ddbc4d0481988e7ebc8ca" @@ -973,7 +931,7 @@ chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1: strip-ansi "^3.0.0" supports-color "^2.0.0" -chokidar@^1.0.0, chokidar@^1.4.2: +chokidar@^1.4.2: version "1.6.1" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2" dependencies: @@ -1033,7 +991,7 @@ combined-stream@^1.0.5, combined-stream@~1.0.5: dependencies: delayed-stream "~1.0.0" -commander@^2.8.1, commander@^2.9.0: +commander@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" dependencies: @@ -1319,10 +1277,6 @@ form-data@~2.1.1: combined-stream "^1.0.5" mime-types "^2.1.12" -fs-readdir-recursive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -1404,16 +1358,6 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" -glob@^5.0.5: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - glob@^7.0.3, glob@^7.0.5: version "7.1.1" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" @@ -1459,7 +1403,7 @@ got@^5.0.0: unzip-response "^1.0.2" url-parse-lax "^1.0.0" -graceful-fs@^4.1.2, graceful-fs@^4.1.4: +graceful-fs@^4.1.2: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -1919,7 +1863,7 @@ mime-types@^2.1.12, mime-types@~2.1.7: dependencies: mime-db "~1.25.0" -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2: +minimatch@^3.0.0, minimatch@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" dependencies: @@ -2069,14 +2013,6 @@ osenv@^0.1.0: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -output-file-sync@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" - dependencies: - graceful-fs "^4.1.4" - mkdirp "^0.5.1" - object-assign "^4.1.0" - package-hash@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-1.2.0.tgz#003e56cd57b736a6ed6114cc2b81542672770e44" @@ -2353,10 +2289,6 @@ regenerate@^1.2.1: version "1.3.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" -regenerator-runtime@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.1.tgz#257f41961ce44558b18f7814af48c17559f9faeb" - regenerator-runtime@^0.9.5: version "0.9.6" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz#d33eb95d0d2001a4be39659707c51b0cb71ce029" @@ -2712,6 +2644,10 @@ typeable@^0.21.0: dependencies: lodash.merge "4.6.0" +typescript@2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.1.4.tgz#b53b69fb841126acb1dd4b397d21daba87572251" + uid-number@~0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" @@ -2751,10 +2687,6 @@ url-parse-lax@^1.0.0: dependencies: prepend-http "^1.0.1" -user-home@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" - util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -2767,12 +2699,6 @@ uuid@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" -v8flags@^2.0.10: - version "2.0.11" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881" - dependencies: - user-home "^1.1.1" - validatable@^0.22.0: version "0.22.0" resolved "https://registry.yarnpkg.com/validatable/-/validatable-0.22.0.tgz#90fb79da614a71c4d76304905e89847bb198522a" From 0870ac23accd98c34656fb1ebb62364e3864f4fd Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 18 Dec 2016 19:19:05 +0100 Subject: [PATCH 124/219] dependencies --- package.json | 2 +- yarn.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index c72a88f..bc92373 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "3.9.0", + "version": "3.9.1", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/yarn.lock b/yarn.lock index 0c3c3f6..7a56294 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2644,7 +2644,7 @@ typeable@^0.21.0: dependencies: lodash.merge "4.6.0" -typescript@2.1.4: +typescript@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.1.4.tgz#b53b69fb841126acb1dd4b397d21daba87572251" From ca69eb69c4cd7f42fb1dada32506bee6c1fcd1a3 Mon Sep 17 00:00:00 2001 From: xpeper Date: Mon, 19 Dec 2016 11:36:54 +0100 Subject: [PATCH 125/219] $varname self reference for easy injections --- dist/documents.js | 2 +- dist/fields.d.ts | 2 +- package.json | 2 +- src/documents.ts | 2 +- src/fields.ts | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/dist/documents.js b/dist/documents.js index e3c80d2..d80875e 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -49,7 +49,7 @@ var Document = (function () { function Document(data, schema, parent) { var _this = this; Object.defineProperty(this, '$schema', { - value: schema + value: schema || this.$schema }); Object.defineProperty(this, '$parent', { value: parent || null diff --git a/dist/fields.d.ts b/dist/fields.d.ts index 0d47c27..7cb951c 100644 --- a/dist/fields.d.ts +++ b/dist/fields.d.ts @@ -9,7 +9,7 @@ export declare class Field { initialValue: any; fakeValue: any; errors: any[]; - constructor(owner: Document, name: any); + constructor(owner: Document, name: string); _getValue(): any; _setValue(value: any): void; _getDefaultValue(): any; diff --git a/package.json b/package.json index bc92373..5577f06 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "3.9.1", + "version": "3.10.0", "description": "Advanced schema enforced JavaScript objects.", "main": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/src/documents.ts b/src/documents.ts index c3b01f4..a97a89e 100644 --- a/src/documents.ts +++ b/src/documents.ts @@ -38,7 +38,7 @@ export class Document { constructor (data, schema: Schema, parent?: Document) { Object.defineProperty(this, '$schema', { // schema instance - value: schema + value: schema || this.$schema }); Object.defineProperty(this, '$parent', { // parent document instance value: parent || null diff --git a/src/fields.ts b/src/fields.ts index 0a29bb5..8d38943 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -22,7 +22,7 @@ export class Field { * Class constructor. */ - constructor (owner: Document, name) { + constructor (owner: Document, name: string) { Object.defineProperty(this, '$owner', { // reference to the Document instance which owns the field value: owner }); From 1b21a90beaecc0178100d5aa333dcdad3ed24d06 Mon Sep 17 00:00:00 2001 From: xpeper Date: Fri, 23 Dec 2016 11:08:11 +0100 Subject: [PATCH 126/219] Field class refactoring (single level) --- .gitignore | 1 + README.md | 27 +- dist/documents.d.ts | 54 +- dist/documents.js | 909 ++++++------ dist/documents.js.map | 1 + dist/fields.d.ts | 52 +- dist/fields.js | 364 ++--- dist/fields.js.map | 1 + dist/index.d.ts | 3 +- dist/index.js | 7 +- dist/index.js.map | 1 + dist/schemas.d.ts | 15 - dist/schemas.js | 113 +- dist/schemas.js.map | 1 + dist/utils.js | 7 +- dist/utils.js.map | 1 + example/index.js | 131 +- package.json | 2 +- src/documents.ts | 932 +++++++------ src/fields.ts | 333 +++-- src/index.ts | 7 +- src/schemas.ts | 148 +- tests/documents.js | 3071 +++++++++++++++++++++-------------------- tests/fields.js | 159 +++ tests/index.js | 1 - tests/schemas.js | 78 -- tests/schemas.js- | 78 ++ tsconfig.json | 7 +- 28 files changed, 3464 insertions(+), 3040 deletions(-) create mode 100644 dist/documents.js.map create mode 100644 dist/fields.js.map create mode 100644 dist/index.js.map create mode 100644 dist/schemas.js.map create mode 100644 dist/utils.js.map create mode 100644 tests/fields.js delete mode 100644 tests/schemas.js create mode 100644 tests/schemas.js- diff --git a/.gitignore b/.gitignore index 9daa824..6423b8b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .DS_Store node_modules +.vscode diff --git a/README.md b/README.md index fb6e360..378c612 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,18 @@ +- nested documents +- nested type casting +- validator validate only if present + + + + + + + + + + + + ![Build Status](https://travis-ci.org/xpepermint/objectschemajs.svg?branch=master) [![NPM Version](https://badge.fury.io/js/objectschema.svg)](https://badge.fury.io/js/objectschema) [![Dependency Status](https://gemnasium.com/xpepermint/objectschemajs.svg)](https://gemnasium.com/xpepermint/objectschemajs) # objectschema.js @@ -8,17 +23,17 @@ This is a light weight open source package for use on **server** or in **browser ## Features -* Type casting -* Custom data types -* Field default value -* Field fake value +* Simple and intuitive API +* Field type casting +* Custom field data types +* Field dynamic default value +* Field dynamic fake value * Field value transformation with getter and setter -* Strict and relaxed schemas -* Schema mixins for extending schemas * Document serialization and filtering * Document nesting with support for self referencing * Change tracking, data commits and rollbacks * Advanced field validation +* Built-in and custom validators ## Related Projects diff --git a/dist/documents.d.ts b/dist/documents.d.ts index cb2b199..1e6da9b 100644 --- a/dist/documents.d.ts +++ b/dist/documents.d.ts @@ -1,52 +1,6 @@ -import { Validator } from 'validatable'; -import { Schema } from './schemas'; -import { Field } from './fields'; -export interface FieldRef { - path: string[]; - field: Field; -} -export interface FieldError extends Error { - path: string[]; - errors: any[]; -} +import { FieldRecipe } from './fields'; export declare class Document { - $schema: Schema; - $parent: Document; - $root: Document; - $validator: Validator; - constructor(data: any, schema: Schema, parent?: Document); - _getRootDocument(): any; - _createDocument(data?: any, schema?: any, parent?: any): any; - _createField(name: any): Field; - _createValidator(): Validator; - _createValidationError(paths: any): any; - _defineFields(): void; - _defineField(name: any): void; - getPath(...keys: any[]): Field; - hasPath(...keys: any[]): boolean; - flatten(prefix?: string[]): FieldRef[]; - populate(data?: {}): this; - _populateFields(data?: {}): this; - _populateField(name: any, value: any): void; - serialize(): {}; - filter(test: (field: FieldRef) => boolean): {}; - collect(handler: (field: FieldRef) => FieldRef): FieldRef[]; - scroll(handler: (field: FieldRef) => void): number; - reset(): this; - fake(): this; - clear(): this; - commit(): this; - rollback(): this; - equals(value: any): boolean; - clone(): this; - isChanged(): boolean; - validate({quiet}?: { - quiet?: boolean; - }): Promise; - invalidate(): this; - isValid(): boolean; - isNested(): boolean; - hasErrors(): boolean; - collectErrors(): FieldError[]; - applyErrors(errors?: FieldError[]): this; + private _fields; + constructor(); + defineField(name: string, recipe?: FieldRecipe): void; } diff --git a/dist/documents.js b/dist/documents.js index d80875e..0ad7df2 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -1,434 +1,505 @@ "use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments)).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t; - return { next: verb(0), "throw": verb(1), "return": verb(2) }; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [0, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -var typeable_1 = require("typeable"); -var validatable_1 = require("validatable"); -var schemas_1 = require("./schemas"); -var fields_1 = require("./fields"); -var utils_1 = require("./utils"); +const fields_1 = require("./fields"); /* -* The core schema-based object class. +* The core schema object class. */ -var Document = (function () { +class Document { + // private _types: {[key: string]: () => any} = {}; // custom types for typeable.js + // private _validators: {[key: string]: () => boolean | Promise} = {}; // custom validations for validatable.js /* * Class constructor. */ - function Document(data, schema, parent) { - var _this = this; - Object.defineProperty(this, '$schema', { - value: schema || this.$schema - }); - Object.defineProperty(this, '$parent', { - value: parent || null - }); - Object.defineProperty(this, '$root', { - get: function () { return _this._getRootDocument(); } + constructor() { + this._fields = {}; // + Object.defineProperty(null, '_fields', { + value: {}, + writable: true }); - Object.defineProperty(this, '$validator', { - value: this._createValidator() - }); - this._defineFields(); - this._populateFields(data); + // Object.defineProperty(this, '_types', { // custom types + // value: {}, + // enumerable: false + // }); + // Object.defineProperty(this, '_validators', { // custom validators + // value: {}, + // enumerable: false + // }); } /* - * Loops up on the tree and returns the first document in the tree. - */ - Document.prototype._getRootDocument = function () { - var root = this; - do { - if (root.$parent) { - root = root.$parent; - } - else { - return root; - } - } while (true); - }; - /* - * Creates a new document instance. This method is especially useful when - * extending this class. - */ - Document.prototype._createDocument = function (data, schema, parent) { - if (data === void 0) { data = null; } - if (schema === void 0) { schema = null; } - if (parent === void 0) { parent = null; } - return new this.constructor(data, schema, parent); - }; - /* - * Creates a new field instance. This method is especially useful when - * extending this class. - */ - Document.prototype._createField = function (name) { - return new fields_1.Field(this, name); - }; - /* - * Returns a new instance of validator. + * Defines a new field property. */ - Document.prototype._createValidator = function () { - return new validatable_1.Validator(utils_1.merge({}, { - validators: this.$schema.validators, - firstErrorOnly: this.$schema.firstErrorOnly, - context: this - })); - }; - /* - * Creates a new validation error instance. - */ - Document.prototype._createValidationError = function (paths) { - var error = new Error('Validation failed'); - error.code = 422; - error.paths = paths; - return error; - }; - /* - * Defines class fields from schema. - */ - Document.prototype._defineFields = function () { - var fields = this.$schema.fields; - for (var name in fields) { - this._defineField(name); - } - }; - /* - * Defines a schema field by name. - */ - Document.prototype._defineField = function (name) { - var field = this._createField(name); + defineField(name, recipe) { + let field = new fields_1.Field(null, recipe); Object.defineProperty(this, name, { - get: function () { return field.value; }, - set: function (v) { return field.value = v; }, + get: () => field.value, + set: (v) => field.value = v, enumerable: true, configurable: true }); - Object.defineProperty(this, "$" + name, { - value: field - }); - }; - /* - * Returns a value at path. - */ - Document.prototype.getPath = function () { - var keys = []; - for (var _i = 0; _i < arguments.length; _i++) { - keys[_i] = arguments[_i]; - } - if (typeable_1.isArray(keys[0])) { - keys = keys[0]; - } - return keys.reduce(function (a, b) { return (a || {})[b]; }, this); - }; - /* - * Returns `true` if field at path exists. - */ - Document.prototype.hasPath = function () { - var keys = []; - for (var _i = 0; _i < arguments.length; _i++) { - keys[_i] = arguments[_i]; - } - return this.getPath.apply(this, keys) !== undefined; - }; - /* - * Scrolls through all set fields and returns an array of results. - */ - Document.prototype.flatten = function (prefix) { - if (prefix === void 0) { prefix = []; } - var fields = []; - var _loop_1 = function (name) { - var type = this_1.$schema.fields[name].type; - var field = this_1["$" + name]; - var path = (prefix || []).concat(name); - var value = field.value; - fields.push({ path: path, field: field }); - if (!typeable_1.isPresent(value)) - return "continue"; - if (type instanceof schemas_1.Schema) { - fields = fields.concat(value.flatten(path)); - } - else if (typeable_1.isArray(type) && type[0] instanceof schemas_1.Schema) { - fields = fields.concat(value - .map(function (f, i) { return (f ? f.flatten(path.concat([i])) : null); }) - .filter(function (f) { return typeable_1.isArray(f); }) - .reduce(function (a, b) { return a.concat(b); })); - } - }; - var this_1 = this; - for (var name in this.$schema.fields) { - _loop_1(name); - } - return fields; - }; - /* - * Sets field values from the provided by data object. - */ - Document.prototype.populate = function (data) { - if (data === void 0) { data = {}; } - return this._populateFields(data); - }; - /* - * Sets field values from the provided by data object. - */ - Document.prototype._populateFields = function (data) { - if (data === void 0) { data = {}; } - data = utils_1.serialize(data); - for (var name in data) { - this._populateField(name, data[name]); - } - return this; - }; - /* - * Sets a value of a field by name. - */ - Document.prototype._populateField = function (name, value) { - if (!this.$schema.strict) { - this[name] = value; - } - else { - var names = Object.keys(this.$schema.fields); - var exists = names.indexOf(name) > -1; - if (exists) { - this[name] = value; - } - } - }; - /* - * Converts this class into serialized data object. - */ - Document.prototype.serialize = function () { - return utils_1.serialize(this); - }; - /* - * Converts this class into serialized data object having only the keys that - * pass the `test`. - */ - Document.prototype.filter = function (test) { - var data = utils_1.serialize(this); - this.flatten() - .sort(function (a, b) { return b.path.length - a.path.length; }) - .filter(function (field) { return !test(field); }) - .forEach(function (field) { - var names = field.path.concat(); - var lastName = names.pop(); - delete names.reduce(function (o, k) { return o[k]; }, data)[lastName]; - }); - return data; - }; - /* - * Scrolls through object fields and collects results. - */ - Document.prototype.collect = function (handler) { - return this.flatten().map(handler); - }; - /* - * Scrolls through document fields and executes a handler on each field. - */ - Document.prototype.scroll = function (handler) { - return this.flatten().map(handler).length; - }; - /* - * Sets each document field to its default value. - */ - Document.prototype.reset = function () { - var fields = this.$schema.fields; - for (var name in fields) { - this["$" + name].reset(); - } - return this; - }; - /* - * Sets each document field to its fake value if a fake value generator - * is registered, otherwise the default value is used. - */ - Document.prototype.fake = function () { - var fields = this.$schema.fields; - for (var name in fields) { - this["$" + name].fake(); - } - return this; - }; - /* - * Removes all fileds values by setting them to `null`. - */ - Document.prototype.clear = function () { - var fields = this.$schema.fields; - for (var name in fields) { - this["$" + name].clear(); - } - return this; - }; - /* - * Sets initial value of each document field to the current value of a field. - */ - Document.prototype.commit = function () { - var fields = this.$schema.fields; - for (var name in fields) { - this["$" + name].commit(); - } - return this; - }; - /* - * Sets each document field to its initial value (value before last commit). - */ - Document.prototype.rollback = function () { - var fields = this.$schema.fields; - for (var name in fields) { - this["$" + name].rollback(); - } - return this; - }; - /* - * Returns `true` when the `value` represents an object with the - * same field values as the original document. - */ - Document.prototype.equals = function (value) { - return utils_1.isEqual(utils_1.serialize(this), utils_1.serialize(value)); - }; - /* - * Returns a new Document instance which is the exact copy of the original. - */ - Document.prototype.clone = function () { - return this._createDocument(this, this.$schema, this.$parent); - }; - /* - * Returns a `true` if at least one field has been changed. - */ - Document.prototype.isChanged = function () { - var _this = this; - return Object.keys(this.$schema.fields).some(function (name) { - return _this["$" + name].isChanged(); - }); - }; - /* - * Validates fields and returns errors. - */ - Document.prototype.validate = function (_a) { - var _b = (_a === void 0 ? {} : _a).quiet, quiet = _b === void 0 ? false : _b; - return __awaiter(this, void 0, void 0, function () { - var fields, _a, _b, _i, path, paths; - return __generator(this, function (_c) { - switch (_c.label) { - case 0: - fields = this.$schema.fields; - _a = []; - for (_b in fields) - _a.push(_b); - _i = 0; - _c.label = 1; - case 1: - if (!(_i < _a.length)) - return [3 /*break*/, 4]; - path = _a[_i]; - return [4 /*yield*/, this["$" + path].validate()]; - case 2: - _c.sent(); - _c.label = 3; - case 3: - _i++; - return [3 /*break*/, 1]; - case 4: - paths = this.collectErrors().map(function (e) { return e.path; }); - if (!quiet && paths.length > 0) { - throw this._createValidationError(paths); - } - return [2 /*return*/, this]; - } - }); - }); - }; - /* - * Validates fields and returns errors. - */ - Document.prototype.invalidate = function () { - var fields = this.$schema.fields; - for (var path in fields) { - this["$" + path].invalidate(); - } - return this; - }; - /* - * Returns `true` when all document fields are valid (inverse of `hasErrors`). - */ - Document.prototype.isValid = function () { - return !this.hasErrors(); - }; - /* - * Returns `true` if nested fields exist. - */ - Document.prototype.isNested = function () { - var _this = this; - return Object.keys(this.$schema.fields).some(function (name) { - return _this["$" + name].isNested(); - }); - }; - /* - * Returns `true` when errors exist (inverse of `isValid`). - */ - Document.prototype.hasErrors = function () { - var _this = this; - return Object.keys(this.$schema.fields).some(function (name) { - return _this["$" + name].hasErrors(); - }); - }; - /* - * Returns a list of all field-related errors, including those deeply nested. - */ - Document.prototype.collectErrors = function () { - return this.flatten().map(function (_a) { - var path = _a.path, field = _a.field; - return { path: path, errors: field.errors }; - }).filter(function (_a) { - var path = _a.path, errors = _a.errors; - return errors.length > 0; - }); - }; - /* - * Deeply populates fields with the provided `errors`. - */ - Document.prototype.applyErrors = function (errors) { - if (errors === void 0) { errors = []; } - for (var _i = 0, errors_1 = errors; _i < errors_1.length; _i++) { - var error = errors_1[_i]; - var path = error.path.concat(); - path[path.length - 1] = "$" + path[path.length - 1]; - var field = this.getPath(path); - if (field) { - field.errors = error.errors; - } - } - return this; - }; - return Document; -}()); + this._fields[name] = field; + } +} exports.Document = Document; +// import {isPresent, isObject, isArray} from 'typeable'; +// import {Validator} from 'validatable'; +// import {Schema} from './schemas'; +// import {Field} from './fields'; +// import {serialize, isEqual, merge} from './utils'; +// +// /* +// * Flattened field reference type definition. +// */ +// +// export interface FieldRef { +// path: string[]; +// field: Field; +// } +// +// /* +// * Field error type definition. +// */ +// +// export interface FieldError extends Error { +// path: string[]; +// errors: any[]; +// } +// +// +// export class Document { +// $schema: Schema; +// $parent: Document; +// $root: Document; +// $validator: Validator; +// +// /* +// * Class constructor. +// */ +// +// constructor (data, schema: Schema, parent?: Document) { +// Object.defineProperty(this, '$schema', { // schema instance +// value: schema || this.$schema +// }); +// Object.defineProperty(this, '$parent', { // parent document instance +// value: parent || null +// }); +// Object.defineProperty(this, '$root', { // root document instance +// get: () => this._getRootDocument() +// }); +// Object.defineProperty(this, '$validator', { // validatable.js instance +// value: this._createValidator() +// }); +// +// this._defineFields(); +// this._populateFields(data); +// } +// +// /* +// * Loops up on the tree and returns the first document in the tree. +// */ +// +// _getRootDocument () { +// let root: any = this; +// do { +// if (root.$parent) { +// root = root.$parent; +// } +// else { +// return root; +// } +// } while (true); +// } +// +// /* +// * Creates a new document instance. This method is especially useful when +// * extending this class. +// */ +// +// _createDocument (data = null, schema = null, parent = null) { +// return new (this.constructor as any)(data, schema, parent); +// } +// +// /* +// * Creates a new field instance. This method is especially useful when +// * extending this class. +// */ +// +// _createField (name) { +// return new Field(this, name); +// } +// +// +// /* +// * Creates a new validation error instance. +// */ +// +// _createValidationError (paths) { +// let error: any = new Error('Validation failed'); +// error.code = 422; +// error.paths = paths; +// +// return error; +// } +// +// /* +// * Defines class fields from schema. +// */ +// +// _defineFields () { +// let {fields} = this.$schema; +// +// for (let name in fields) { +// this._defineField(name); +// } +// } +// +// /* +// * Defines a schema field by name. +// */ +// +// _defineField (name) { +// let field = this._createField(name); +// +// Object.defineProperty(this, name, { // field definition +// get: () => field.value, +// set: (v) => field.value = v, +// enumerable: true, +// configurable: true +// }); +// +// Object.defineProperty(this, `$${name}`, { // field class instance definition +// value: field +// }); +// } +// +// /* +// * Returns a value at path. +// */ +// +// getPath (...keys): Field { +// if (isArray(keys[0])) { +// keys = keys[0]; +// } +// +// return keys.reduce((a, b) => (a || {})[b], this); +// } +// +// /* +// * Returns `true` if field at path exists. +// */ +// +// hasPath (...keys): boolean { +// return this.getPath(...keys) !== undefined; +// } +// +// /* +// * Scrolls through all set fields and returns an array of results. +// */ +// +// flatten (prefix: string[] = []): FieldRef[] { +// let fields = []; +// +// for (let name in this.$schema.fields) { +// let {type} = this.$schema.fields[name]; +// let field = this[`$${name}`]; +// let path = (prefix || []).concat(name); +// let value = field.value; +// +// fields.push({path, field}); +// +// if (!isPresent(value)) continue; +// +// if (type instanceof Schema) { +// fields = fields.concat( +// value.flatten(path) +// ); +// } +// else if (isArray(type) && type[0] instanceof Schema) { +// fields = fields.concat( +// value +// .map((f, i) => (f ? f.flatten(path.concat([i])) : null)) +// .filter((f) => isArray(f)) +// .reduce((a, b) => a.concat(b)) +// ); +// } +// } +// +// return fields; +// } +// +// /* +// * Sets field values from the provided by data object. +// */ +// +// populate (data = {}): this { +// return this._populateFields(data); +// } +// +// /* +// * Sets field values from the provided by data object. +// */ +// +// _populateFields (data = {}) { +// data = serialize(data); +// +// for (let name in data) { +// this._populateField(name, data[name]); +// } +// +// return this; +// } +// +// /* +// * Sets a value of a field by name. +// */ +// +// _populateField (name, value) { +// if (!this.$schema.strict) { +// this[name] = value; +// } +// else { +// let names = Object.keys(this.$schema.fields); +// let exists = names.indexOf(name) > -1; +// +// if (exists) { +// this[name] = value; +// } +// } +// } +// +// /* +// * Converts this class into serialized data object. +// */ +// +// serialize (): {} { +// return serialize(this); +// } +// +// /* +// * Converts this class into serialized data object having only the keys that +// * pass the `test`. +// */ +// +// filter (test: (field: FieldRef) => boolean): {} { +// let data = serialize(this); +// +// this.flatten() +// .sort((a, b) => b.path.length - a.path.length) +// .filter((field) => !test(field)) +// .forEach((field) => { +// let names = field.path.concat(); +// let lastName = names.pop(); +// delete names.reduce((o, k) => o[k], data)[lastName]; +// }); +// +// return data; +// } +// +// /* +// * Scrolls through object fields and collects results. +// */ +// +// collect (handler: (field: FieldRef) => FieldRef): FieldRef[] { +// return this.flatten().map(handler); +// } +// +// /* +// * Scrolls through document fields and executes a handler on each field. +// */ +// +// scroll (handler: (field: FieldRef) => void): number { +// return this.flatten().map(handler).length; +// } +// +// /* +// * Sets each document field to its default value. +// */ +// +// reset (): this { +// let {fields} = this.$schema; +// +// for (let name in fields) { +// this[`$${name}`].reset(); +// } +// +// return this; +// } +// +// /* +// * Sets each document field to its fake value if a fake value generator +// * is registered, otherwise the default value is used. +// */ +// +// fake (): this { +// let {fields} = this.$schema; +// +// for (let name in fields) { +// this[`$${name}`].fake(); +// } +// +// return this; +// } +// +// /* +// * Removes all fileds values by setting them to `null`. +// */ +// +// clear (): this { +// let {fields} = this.$schema; +// +// for (let name in fields) { +// this[`$${name}`].clear(); +// } +// +// return this; +// } +// +// /* +// * Sets initial value of each document field to the current value of a field. +// */ +// +// commit (): this { +// let {fields} = this.$schema; +// +// for (let name in fields) { +// this[`$${name}`].commit(); +// } +// +// return this; +// } +// +// /* +// * Sets each document field to its initial value (value before last commit). +// */ +// +// rollback (): this { +// let {fields} = this.$schema; +// +// for (let name in fields) { +// this[`$${name}`].rollback(); +// } +// +// return this; +// } +// +// /* +// * Returns `true` when the `value` represents an object with the +// * same field values as the original document. +// */ +// +// equals (value: any): boolean { +// return isEqual( +// serialize(this), +// serialize(value) +// ); +// } +// +// /* +// * Returns a new Document instance which is the exact copy of the original. +// */ +// +// clone (): this { +// return this._createDocument(this, this.$schema, this.$parent); +// } +// +// /* +// * Returns a `true` if at least one field has been changed. +// */ +// +// isChanged (): boolean { +// return Object.keys(this.$schema.fields).some((name) => { +// return this[`$${name}`].isChanged(); +// }); +// } +// +// /* +// * Validates fields and returns errors. +// */ +// +// async validate ({quiet = false}: {quiet?: boolean} = {}): Promise { +// let {fields} = this.$schema; +// +// for (let path in fields) { +// await this[`$${path}`].validate(); +// } +// +// let paths = this.collectErrors().map((e) => e.path); +// if (!quiet && paths.length > 0) { +// throw this._createValidationError(paths); +// } +// +// return this; +// } +// +// /* +// * Validates fields and returns errors. +// */ +// +// invalidate (): this { +// let {fields} = this.$schema; +// +// for (let path in fields) { +// this[`$${path}`].invalidate(); +// } +// +// return this; +// } +// +// /* +// * Returns `true` when all document fields are valid (inverse of `hasErrors`). +// */ +// +// isValid (): boolean { +// return !this.hasErrors(); +// } +// +// /* +// * Returns `true` if nested fields exist. +// */ +// +// isNested (): boolean { +// return Object.keys(this.$schema.fields).some((name) => { +// return this[`$${name}`].isNested(); +// }); +// } +// +// /* +// * Returns `true` when errors exist (inverse of `isValid`). +// */ +// +// hasErrors (): boolean { +// return Object.keys(this.$schema.fields).some((name) => { +// return this[`$${name}`].hasErrors(); +// }); +// } +// +// /* +// * Returns a list of all field-related errors, including those deeply nested. +// */ +// +// collectErrors (): FieldError[] { +// return this.flatten().map(({path, field}) => { +// return {path, errors: field.errors} as FieldError; +// }).filter(({path, errors}) => { +// return errors.length > 0; +// }); +// } +// +// /* +// * Deeply populates fields with the provided `errors`. +// */ +// +// applyErrors (errors: FieldError[] = []): this { +// for (let error of errors) { +// let path = error.path.concat(); +// path[path.length - 1] = `$${path[path.length - 1]}`; +// +// let field = this.getPath(path); +// if (field) { +// field.errors = error.errors; +// } +// } +// +// return this; +// } +// +// } +//# sourceMappingURL=documents.js.map \ No newline at end of file diff --git a/dist/documents.js.map b/dist/documents.js.map new file mode 100644 index 0000000..13cdec2 --- /dev/null +++ b/dist/documents.js.map @@ -0,0 +1 @@ +{"version":3,"file":"documents.js","sourceRoot":"","sources":["../src/documents.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/fields.d.ts b/dist/fields.d.ts index 7cb951c..40668a6 100644 --- a/dist/fields.d.ts +++ b/dist/fields.d.ts @@ -1,31 +1,55 @@ -import { Document } from './documents'; +import { Validator } from 'validatable'; +export interface FieldOptions { + validators?: { + [name: string]: () => boolean | Promise; + }; + firstErrorOnly?: boolean; +} +export interface ValidationRecipe { + validator: string; + message: string; + [key: string]: any; +} +export interface FieldRecipe { + type?: any; + get?: (v: any) => any; + set?: (v: any) => void; + defaultValue?: any; + fakeValue?: any; + validate?: ValidationRecipe[]; +} +export interface FieldError { + message: string; + [key: string]: any; +} export declare class Field { - private _value; - private _initialValue; - $owner: Document; - name: string; + protected _data: any; + protected _initialData: any; + protected _validator: Validator; + readonly recipe: FieldRecipe; + readonly options: FieldOptions; + readonly defaultValue: any; + readonly fakeValue: any; + readonly initialValue: any; value: any; - defaultValue: any; - initialValue: any; - fakeValue: any; - errors: any[]; - constructor(owner: Document, name: string); + errors: FieldError[]; + constructor(recipe?: FieldRecipe, options?: FieldOptions); + _createValidator(): Validator; _getValue(): any; - _setValue(value: any): void; + _setValue(data: any): void; + _cast(data: any, type: any): any; _getDefaultValue(): any; _getFakeValue(): any; - _cast(value: any, type: any): any; reset(): this; fake(): this; clear(): this; commit(): this; - _commitRelated(data: any): void; rollback(): this; equals(data: any): boolean; isChanged(): boolean; isNested(): boolean; validate(): Promise; invalidate(): this; - isValid(): boolean; hasErrors(): boolean; + isValid(): boolean; } diff --git a/dist/fields.js b/dist/fields.js index fe184b3..630a85b 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -7,294 +7,236 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge step((generator = generator.apply(thisArg, _arguments)).next()); }); }; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t; - return { next: verb(0), "throw": verb(1), "return": verb(2) }; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [0, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -var typeable_1 = require("typeable"); -var utils_1 = require("./utils"); -var schemas_1 = require("./schemas"); +const typeable_1 = require("typeable"); +const utils_1 = require("./utils"); +const validatable_1 = require("validatable"); /* -* Document field class. +* Field class. */ -var Field = (function () { +class Field { /* * Class constructor. */ - function Field(owner, name) { - var _this = this; - Object.defineProperty(this, '$owner', { - value: owner - }); - Object.defineProperty(this, 'name', { - value: name - }); - Object.defineProperty(this, 'defaultValue', { - get: function () { return _this._getDefaultValue(); }, - enumerable: true + constructor(recipe = {}, options = {}) { + this.recipe = Object.freeze(recipe); + this.options = Object.freeze(options); + this.errors = []; + Object.defineProperty(this, '_data', { + value: this._getDefaultValue.bind(this), + writable: true }); - Object.defineProperty(this, '_value', { - value: this.defaultValue, + Object.defineProperty(this, '_initialData', { + value: this._getDefaultValue(), writable: true }); + Object.defineProperty(this, '_validator', { + value: this._createValidator() + }); Object.defineProperty(this, 'value', { - get: function () { return _this._getValue(); }, - set: function (v) { return _this._setValue(v); }, + get: () => this._getValue(), + set: (v) => this._setValue(v), enumerable: true }); - Object.defineProperty(this, '_initialValue', { - value: this._value, - writable: true - }); - Object.defineProperty(this, 'initialValue', { - get: function () { return _this._initialValue; }, + Object.defineProperty(this, 'defaultValue', { + get: () => this._getDefaultValue(), enumerable: true }); Object.defineProperty(this, 'fakeValue', { - get: function () { return _this._getFakeValue(); }, + get: () => this._getFakeValue(), enumerable: true }); - Object.defineProperty(this, 'errors', { - value: [], - writable: true + Object.defineProperty(this, 'initialValue', { + get: () => this._initialData, + enumerable: true }); } /* - * Return field value. + * Returns a new instance of validator. + */ + _createValidator() { + let { validators, firstErrorOnly } = this.options; + let context = this; + return new validatable_1.Validator({ validators, firstErrorOnly, context }); + } + /* + * Returns current field value. */ - Field.prototype._getValue = function () { - var get = this.$owner.$schema.fields[this.name].get; - var value = this._value; - if (get) { - value = get.call(this.$owner, value); + _getValue() { + let data = this._data; + if (typeable_1.isFunction(data)) { + data = data.call(this); + } + let { get } = this.recipe; + if (typeable_1.isFunction(get)) { + data = get.call(this, data); } - return value; - }; + let { type } = this.recipe; + data = this._cast(data, type); + return data; + } /* - * Sets field value. + * Sets current field value. */ - Field.prototype._setValue = function (value) { - var _a = this.$owner.$schema.fields[this.name], set = _a.set, type = _a.type; - value = this._cast(value, type); // value type casting - if (set) { - value = set.call(this.$owner, value); + _setValue(data) { + let { set } = this.recipe; + if (typeable_1.isFunction(set)) { + data = set.call(this, data); } - this.invalidate(); // remove the last memorized error because the value has changed - this._value = value; - }; + this.invalidate(); + this._data = data; + } /* - * Returns the default value of a field. + * Converts a `value` into specified `type`. */ - Field.prototype._getDefaultValue = function () { - var _a = this.$owner.$schema.fields[this.name], type = _a.type, set = _a.set, defaultValue = _a.defaultValue; - var value = typeable_1.isFunction(defaultValue) - ? defaultValue.call(this) - : defaultValue; - value = this._cast(value, type); // value type casting - if (set) { - value = set.call(this.$owner, value); + _cast(data, type) { + if (typeable_1.isUndefined(type)) { + return data; } - return value; - }; + return typeable_1.cast(data, type); + } /* - * Returns a fake value of a field. + * Returns the default value of a field. */ - Field.prototype._getFakeValue = function () { - var _a = this.$owner.$schema.fields[this.name], type = _a.type, set = _a.set, fakeValue = _a.fakeValue; - var value = typeable_1.isFunction(fakeValue) - ? fakeValue.call(this) - : fakeValue; - value = this._cast(value, type); // value type casting - if (set) { - value = set.call(this.$owner, value); + _getDefaultValue() { + let data = null; + let { defaultValue } = this.recipe; + if (typeable_1.isFunction(defaultValue)) { + data = defaultValue.call(this); } - return value; - }; + else if (!typeable_1.isUndefined(defaultValue)) { + data = defaultValue; + } + return data; + } /* - * Converts the `value` into specified `type`. + * Returns the fake value of a field. */ - Field.prototype._cast = function (value, type) { - var _this = this; - var types = utils_1.merge(this.$owner.$schema.types, { - Schema: function (value) { - if (typeable_1.isArray(type)) - type = type[0]; // in case of {type: [Schema]} - return _this.$owner._createDocument(value, type, _this.$owner); - } - }); - return typeable_1.cast(value, type, types); - }; + _getFakeValue() { + let data = null; + let { fakeValue } = this.recipe; + if (typeable_1.isFunction(fakeValue)) { + data = fakeValue.call(this); + } + else if (!typeable_1.isUndefined(fakeValue)) { + data = fakeValue; + } + return data; + } /* - * Sets field to the default value. + * Sets data to the default value. */ - Field.prototype.reset = function () { - this.value = this.defaultValue; + reset() { + this.value = this._getDefaultValue.bind(this); return this; - }; + } /* - * Sets field to a generated fake value. + * Sets data to the fake value. */ - Field.prototype.fake = function () { - this.value = this.fakeValue || this.defaultValue; + fake() { + this.value = this._getFakeValue.bind(this); return this; - }; + } /* - * Removes field's value by setting it to null. + * Sets data to `null`. */ - Field.prototype.clear = function () { + clear() { this.value = null; return this; - }; + } /* - * Deeply set's the initial values to the current value of each field. + * Set's the initial value to the current value. */ - Field.prototype.commit = function () { - this._commitRelated(this.value); - this._initialValue = utils_1.serialize(this.value); + commit() { + // this._commitRelated(this.value); + this._initialData = utils_1.serialize(this.value); return this; - }; - /* - * Deeply set's the initial values of the related `data` object to the current - * value of each field. - */ - Field.prototype._commitRelated = function (data) { - var _this = this; - if (data && data.commit) { - data.commit(); - } - else if (data && typeable_1.isArray(data)) { - data.forEach(function (d) { return _this._commitRelated(d); }); - } - }; + } /* - * Sets field's value before last commit. + * Sets value to the initial value. */ - Field.prototype.rollback = function () { + rollback() { this.value = this.initialValue; return this; - }; + } /* - * Returns `true` when the `data` equals to the current value. + * Returns `true` when `data` equals to the current value. */ - Field.prototype.equals = function (data) { - return utils_1.isEqual(utils_1.serialize(this.value), utils_1.serialize(data)); - }; + equals(data) { + let value = data instanceof Field ? data.value : data; + return utils_1.isEqual(utils_1.serialize(this.value), utils_1.serialize(value)); + } /* - * Returns `true` if the field or related sub-fields have been changed. + * Returns `true` if the value has been changed. */ - Field.prototype.isChanged = function () { + isChanged() { return !this.equals(this.initialValue); - }; + } /* - * Returns `true` if the field is a Document field. + * Returns `true` if the data is a Document. */ - Field.prototype.isNested = function () { - var type = this.$owner.$schema.fields[this.name].type; + isNested() { + let { type } = this.recipe; if (typeable_1.isArray(type)) type = type[0]; - if (type.fields) { - return type instanceof schemas_1.Schema; - } + // TODO !!!!! + // if (type instanceof this.constructor.owner) { + // return true; + // } return false; - }; + } /* * Validates the field by populating the `errors` property. * * IMPORTANT: Array null values for nested objects are not treated as an object * but as an empty item thus isValid() for [null] succeeds. */ - Field.prototype.validate = function () { - return __awaiter(this, void 0, void 0, function () { - var relatives, _i, relatives_1, relative, isDocument, _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - relatives = typeable_1.toArray(this.value) || []; - _i = 0, relatives_1 = relatives; - _b.label = 1; - case 1: - if (!(_i < relatives_1.length)) - return [3 /*break*/, 4]; - relative = relatives_1[_i]; - isDocument = relative instanceof this.$owner.constructor; - if (!isDocument) - return [3 /*break*/, 3]; - return [4 /*yield*/, relative.validate({ quiet: true })]; - case 2: - _b.sent(); // don't throw - _b.label = 3; - case 3: - _i++; - return [3 /*break*/, 1]; - case 4: - _a = this; - return [4 /*yield*/, this.$owner.$validator.validate(// validate this field - this.value, this.$owner.$schema.fields[this.name].validate)]; - case 5: - _a.errors = _b.sent(); - return [2 /*return*/, this]; - } - }); + validate() { + return __awaiter(this, void 0, void 0, function* () { + // let relatives = toArray(this.value) || []; // validate related documents + // for (let relative of relatives) { + // let isDocument = relative instanceof this.$owner.constructor; + // if (isDocument) { + // await relative.validate({quiet: true}); // don't throw + // } + // } + this.errors = yield this._validator.validate(this.value, this.recipe.validate); + return this; }); - }; + } /* - * Validates the field by clearing the `errors` property + * Clears errors. */ - Field.prototype.invalidate = function () { - var relatives = typeable_1.toArray(this.value) || []; // validate related documents - for (var _i = 0, relatives_2 = relatives; _i < relatives_2.length; _i++) { - var relative = relatives_2[_i]; - var isDocument = relative instanceof this.$owner.constructor; - if (isDocument) { - relative.invalidate(); - } - } + invalidate() { + // let relatives = toArray(this.value) || []; // validate related documents + // for (let relative of relatives) { + // let isDocument = relative instanceof this.$owner.constructor; + // if (isDocument) { + // relative.invalidate(); + // } + // } this.errors = []; return this; - }; - /* - * Returns `true` when the value is valid (inverse of `hasErrors`). - */ - Field.prototype.isValid = function () { - return !this.hasErrors(); - }; + } /* * Returns `true` when errors exist (inverse of `isValid`). */ - Field.prototype.hasErrors = function () { + hasErrors() { if (this.errors.length > 0) { return true; } else if (!this.isNested()) { return false; } - else { - return typeable_1.toArray(this.value).filter(function (f) { return !!f; }).some(function (f) { return f.hasErrors(); }); - } - }; - return Field; -}()); + // else { + // return toArray(this.value).filter((f) => !!f).some((f) => f.hasErrors()) + // } + } + /* + * Returns `true` when the value is valid (inverse of `hasErrors`). + */ + isValid() { + return !this.hasErrors(); + } +} exports.Field = Field; +//# sourceMappingURL=fields.js.map \ No newline at end of file diff --git a/dist/fields.js.map b/dist/fields.js.map new file mode 100644 index 0000000..e4a044b --- /dev/null +++ b/dist/fields.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts index be3fcb5..014349a 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -1,4 +1,3 @@ -import { Schema } from './schemas'; import { Document } from './documents'; import { Field } from './fields'; -export { Schema, Document, Field }; +export { Document, Field }; diff --git a/dist/index.js b/dist/index.js index ee7f388..8da159d 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,7 +1,6 @@ "use strict"; -var schemas_1 = require("./schemas"); -exports.Schema = schemas_1.Schema; -var documents_1 = require("./documents"); +const documents_1 = require("./documents"); exports.Document = documents_1.Document; -var fields_1 = require("./fields"); +const fields_1 = require("./fields"); exports.Field = fields_1.Field; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map new file mode 100644 index 0000000..2b794de --- /dev/null +++ b/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,2CAAqC;AAO7B,wCAAQ;AANhB,qCAA+B;AAMb,+BAAK"} \ No newline at end of file diff --git a/dist/schemas.d.ts b/dist/schemas.d.ts index b752dd9..e69de29 100644 --- a/dist/schemas.d.ts +++ b/dist/schemas.d.ts @@ -1,15 +0,0 @@ -export declare class Schema { - fields: {}; - strict: boolean; - validators: {}; - types: {}; - firstErrorOnly?: boolean; - constructor({mixins, fields, strict, validators, types, firstErrorOnly}?: { - mixins?: Schema[]; - fields?: {}; - strict?: boolean; - validators?: {}; - types?: {}; - firstErrorOnly?: boolean; - }); -} diff --git a/dist/schemas.js b/dist/schemas.js index a94ffe3..2edb987 100644 --- a/dist/schemas.js +++ b/dist/schemas.js @@ -1,38 +1,75 @@ -"use strict"; -var typeable_1 = require("typeable"); -var utils_1 = require("./utils"); -/* -* A class for defining Document structure and properties. -*/ -var Schema = (function () { - /* - * Class constructor. - */ - function Schema(_a) { - var _b = _a === void 0 ? {} : _a, _c = _b.mixins, mixins = _c === void 0 ? [] : _c, // not a property - _d = _b.fields, // not a property - fields = _d === void 0 ? {} : _d, strict = _b.strict, _e = _b.validators, validators = _e === void 0 ? {} : _e, _f = _b.types, types = _f === void 0 ? {} : _f, firstErrorOnly = _b.firstErrorOnly; - Object.defineProperty(this, 'fields', { - get: function () { return utils_1.merge.apply(void 0, mixins.map(function (s) { return utils_1.retrieve(s.fields); }).concat([utils_1.retrieve(fields)])); }, - enumerable: true // required for deep nesting - }); - Object.defineProperty(this, 'strict', { - get: function () { return ([true].concat(mixins.map(function (s) { return s.strict; }), strict).filter(function (s) { return typeable_1.isBoolean(s); }).reverse()[0]); }, - enumerable: true // required for deep nesting - }); - Object.defineProperty(this, 'validators', { - get: function () { return utils_1.merge.apply(void 0, mixins.map(function (v) { return v.validators; }).concat([validators])); }, - enumerable: true // required for deep nesting - }); - Object.defineProperty(this, 'types', { - get: function () { return utils_1.merge.apply(void 0, mixins.map(function (v) { return v.types; }).concat([types])); }, - enumerable: true // required for deep nesting - }); - Object.defineProperty(this, 'firstErrorOnly', { - get: function () { return ([false].concat(mixins.map(function (s) { return s.firstErrorOnly; }), firstErrorOnly).filter(function (s) { return typeable_1.isBoolean(s); }).reverse()[0]); }, - enumerable: true // required for deep nesting - }); - } - return Schema; -}()); -exports.Schema = Schema; +// import {isBoolean} from 'typeable'; +// import {retrieve, merge} from './utils'; +// +// /* +// * A class for defining Document structure and properties. +// */ +// +// export class Schema { +// fields: {}; +// strict: boolean; +// validators: {}; +// types: {}; +// firstErrorOnly?: boolean; +// +// /* +// * Class constructor. +// */ +// +// constructor ({ +// mixins = [], // not a property +// fields = {}, +// strict, +// validators = {}, +// types = {}, +// firstErrorOnly +// }: { +// mixins?: Schema[], +// fields?: {}, +// strict?: boolean, +// validators?: {}, +// types?: {}, +// firstErrorOnly?: boolean +// } = {}) { +// +// Object.defineProperty(this, 'fields', { // document fields +// get: () => merge( +// ...mixins.map((s) => retrieve(s.fields)), +// retrieve(fields) +// ), +// enumerable: true // required for deep nesting +// }); +// +// Object.defineProperty(this, 'strict', { // document schema mode +// get: () => ( +// [true].concat(mixins.map((s) => s.strict), strict).filter((s) => isBoolean(s)).reverse()[0] +// ), +// enumerable: true // required for deep nesting +// }); +// +// Object.defineProperty(this, 'validators', { // validatable.js configuration option +// get: () => merge( +// ...mixins.map((v) => v.validators), +// validators +// ), +// enumerable: true // required for deep nesting +// }); +// +// Object.defineProperty(this, 'types', { // typeable.js configuration option +// get: () => merge( +// ...mixins.map((v) => v.types), +// types +// ), +// enumerable: true // required for deep nesting +// }); +// +// Object.defineProperty(this, 'firstErrorOnly', { // validatable.js configuration option +// get: () => ( +// [false].concat(mixins.map((s) => s.firstErrorOnly), firstErrorOnly).filter((s) => isBoolean(s)).reverse()[0] +// ), +// enumerable: true // required for deep nesting +// }); +// } +// +// } +//# sourceMappingURL=schemas.js.map \ No newline at end of file diff --git a/dist/schemas.js.map b/dist/schemas.js.map new file mode 100644 index 0000000..a5f3861 --- /dev/null +++ b/dist/schemas.js.map @@ -0,0 +1 @@ +{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,2CAA2C;AAC3C,EAAE;AACF,KAAK;AACL,4DAA4D;AAC5D,KAAK;AACL,EAAE;AACF,wBAAwB;AACxB,gBAAgB;AAChB,qBAAqB;AACrB,oBAAoB;AACpB,eAAe;AACf,8BAA8B;AAC9B,EAAE;AACF,OAAO;AACP,yBAAyB;AACzB,OAAO;AACP,EAAE;AACF,mBAAmB;AACnB,qCAAqC;AACrC,mBAAmB;AACnB,cAAc;AACd,uBAAuB;AACvB,kBAAkB;AAClB,qBAAqB;AACrB,SAAS;AACT,yBAAyB;AACzB,mBAAmB;AACnB,wBAAwB;AACxB,uBAAuB;AACvB,kBAAkB;AAClB,+BAA+B;AAC/B,cAAc;AACd,EAAE;AACF,iEAAiE;AACjE,0BAA0B;AAC1B,oDAAoD;AACpD,2BAA2B;AAC3B,WAAW;AACX,sDAAsD;AACtD,UAAU;AACV,EAAE;AACF,sEAAsE;AACtE,qBAAqB;AACrB,sGAAsG;AACtG,WAAW;AACX,sDAAsD;AACtD,UAAU;AACV,EAAE;AACF,yFAAyF;AACzF,0BAA0B;AAC1B,8CAA8C;AAC9C,qBAAqB;AACrB,WAAW;AACX,sDAAsD;AACtD,UAAU;AACV,EAAE;AACF,iFAAiF;AACjF,0BAA0B;AAC1B,yCAAyC;AACzC,gBAAgB;AAChB,WAAW;AACX,sDAAsD;AACtD,UAAU;AACV,EAAE;AACF,6FAA6F;AAC7F,qBAAqB;AACrB,uHAAuH;AACvH,WAAW;AACX,sDAAsD;AACtD,UAAU;AACV,MAAM;AACN,EAAE;AACF,IAAI"} \ No newline at end of file diff --git a/dist/utils.js b/dist/utils.js index 611fdf1..a2c95fa 100644 --- a/dist/utils.js +++ b/dist/utils.js @@ -1,8 +1,8 @@ "use strict"; -var typeable_1 = require("typeable"); -var merge = require("lodash.merge"); +const typeable_1 = require("typeable"); +const merge = require("lodash.merge"); exports.merge = merge; -var isEqual = require("lodash.isequal"); +const isEqual = require("lodash.isequal"); exports.isEqual = isEqual; /* * Returns a duplicated data object (useful to remove data bindings). @@ -19,3 +19,4 @@ function retrieve(input) { return typeable_1.isFunction(input) ? input() : input; } exports.retrieve = retrieve; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/dist/utils.js.map b/dist/utils.js.map new file mode 100644 index 0000000..ff82539 --- /dev/null +++ b/dist/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";AAAA,uCAAoC;AACpC,sCAAsC;AAO9B,sBAAK;AANb,0CAA0C;AAYlC,0BAAO;AAEf;;EAEE;AAEF,mBAA2B,IAAI;IAC7B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC;AAFD,8BAEC;AAED;;;EAGE;AAEF,kBAA0B,KAAK;IAC7B,MAAM,CAAC,qBAAU,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;AAC7C,CAAC;AAFD,4BAEC"} \ No newline at end of file diff --git a/example/index.js b/example/index.js index baad4f0..53a2ede 100644 --- a/example/index.js +++ b/example/index.js @@ -1,30 +1,111 @@ -const {Schema, Document} = require('../dist'); - -/* Model definition ***********************************************************/ - -let schema = new Schema({ // root document - fields: { // document fields - name: { // field name - type: 'String', // field type (string) - validate: [ // field validators - { - validator: 'presence', // validator name - message: 'is required' // validator error message - } - ] - } +/* FRAMEWORK ******************************************************************/ + +class Field { + _value: any; + value: any; + + constructor (...args) { + this._value = null; + Object.defineProperty(this, 'value', { + get: () => this._value, + set: (v) => this._value = v, + enumerable: true + }); + } +} + +class Document { + context: any; + static context: any; + + constructor (...args) {} + + setValidator (...args) {} + + setHandler (...args) {} + + defineField (name, options?) { + let field = new Field(); + + Object.defineProperty(this, name, { + get: () => field.value, + set: (v) => field.value = v, + enumerable: true, + configurable: true + }); + } + + populate (data?) {} +} + +class Context { + constructor (...args) {} + + defineProperty(name: string, descriptor: any) { + return Object.defineProperty(this, name, descriptor); + } + + defineModel(Model: Function): any { + let name: string = (Model.prototype.constructor as any).name; + + let Klass = eval(`class ${name} extends Model {}`); + Klass.prototype.context = this; + Klass.context = this; + + return this.defineProperty(name, { + get: () => Klass + }); + } + +} + +/* MODELS *********************************************************************/ + +class Book extends Document { + public title: string; + + constructor (data?) { + super(); + this.defineField('title', {type: 'String'}); + this.populate(data); } -}); +} -/* Usage example **************************************************************/ +class User extends Document { + public name: string; + public books: Book[]; + + constructor (data?) { + super(); + this.setValidator('isCool', () => true); + this.setHandler('404', () => false); + this.defineField('name', {type: 'String'}); + this.defineField('book', {type: [Book]}); + this.populate(data); + } +} + +/* CONTEXT ********************************************************************/ + +class App extends Context { + public mongo: any; + public userId: number; + + constructor (userId: number) { + super(); + this.defineProperty('mongo', () => null); + this.defineProperty('userId', () => userId); + this.defineModel(User); + this.defineModel(Book); + } +} -let user = new Document({ // new model instance with data - name: 'John Smith', -}, schema); +/* USAGE **********************************************************************/ -console.log('title:', user.name); // fields -console.log('$title:', user.$name.value); +function echo () { + let m = new User(); + m.name; + m.context -user.validate({quiet: true}).then(() => { // built-in methods - console.log('isValid:', user.isValid()); -}); +} +echo(); diff --git a/package.json b/package.json index 5577f06..fe873ae 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "build": "npm run clean; tsc", "prepublish": "npm run build", "test": "npm run build && ava", - "example": "node ./example" + "example": "tsc example/index.ts && node example/index.js" }, "repository": { "type": "git", diff --git a/src/documents.ts b/src/documents.ts index a97a89e..94a446c 100644 --- a/src/documents.ts +++ b/src/documents.ts @@ -1,479 +1,519 @@ -import {isPresent, isObject, isArray} from 'typeable'; -import {Validator} from 'validatable'; -import {Schema} from './schemas'; -import {Field} from './fields'; -import {serialize, isEqual, merge} from './utils'; +import {Field, FieldRecipe} from './fields'; /* -* Flattened field reference type definition. -*/ - -export interface FieldRef { - path: string[]; - field: Field; -} - -/* -* Field error type definition. -*/ - -export interface FieldError extends Error { - path: string[]; - errors: any[]; -} - -/* -* The core schema-based object class. +* The core schema object class. */ export class Document { - $schema: Schema; - $parent: Document; - $root: Document; - $validator: Validator; + private _fields: {[name: string]: Field}= {}; // + // private _types: {[key: string]: () => any} = {}; // custom types for typeable.js + // private _validators: {[key: string]: () => boolean | Promise} = {}; // custom validations for validatable.js /* * Class constructor. */ - constructor (data, schema: Schema, parent?: Document) { - Object.defineProperty(this, '$schema', { // schema instance - value: schema || this.$schema - }); - Object.defineProperty(this, '$parent', { // parent document instance - value: parent || null - }); - Object.defineProperty(this, '$root', { // root document instance - get: () => this._getRootDocument() - }); - Object.defineProperty(this, '$validator', { // validatable.js instance - value: this._createValidator() + constructor () { + Object.defineProperty(null, '_fields', { // document fields + value: {}, + writable: true }); - - this._defineFields(); - this._populateFields(data); - } - - /* - * Loops up on the tree and returns the first document in the tree. - */ - - _getRootDocument () { - let root: any = this; - do { - if (root.$parent) { - root = root.$parent; - } - else { - return root; - } - } while (true); - } - - /* - * Creates a new document instance. This method is especially useful when - * extending this class. - */ - - _createDocument (data = null, schema = null, parent = null) { - return new (this.constructor as any)(data, schema, parent); - } - - /* - * Creates a new field instance. This method is especially useful when - * extending this class. - */ - - _createField (name) { - return new Field(this, name); + // Object.defineProperty(this, '_types', { // custom types + // value: {}, + // enumerable: false + // }); + // Object.defineProperty(this, '_validators', { // custom validators + // value: {}, + // enumerable: false + // }); } /* - * Returns a new instance of validator. + * Defines a new field property. */ - _createValidator () { - return new Validator( - merge({}, { - validators: this.$schema.validators, - firstErrorOnly: this.$schema.firstErrorOnly, - context: this - }) - ); - } + defineField (name: string, recipe?: FieldRecipe) { + let field = new Field(null, recipe); - /* - * Creates a new validation error instance. - */ - - _createValidationError (paths) { - let error: any = new Error('Validation failed'); - error.code = 422; - error.paths = paths; - - return error; - } - - /* - * Defines class fields from schema. - */ - - _defineFields () { - let {fields} = this.$schema; - - for (let name in fields) { - this._defineField(name); - } - } - - /* - * Defines a schema field by name. - */ - - _defineField (name) { - let field = this._createField(name); - - Object.defineProperty(this, name, { // field definition + Object.defineProperty(this, name, { get: () => field.value, set: (v) => field.value = v, enumerable: true, configurable: true }); - Object.defineProperty(this, `$${name}`, { // field class instance definition - value: field - }); - } - - /* - * Returns a value at path. - */ - - getPath (...keys): Field { - if (isArray(keys[0])) { - keys = keys[0]; - } - - return keys.reduce((a, b) => (a || {})[b], this); - } - - /* - * Returns `true` if field at path exists. - */ - - hasPath (...keys): boolean { - return this.getPath(...keys) !== undefined; - } - - /* - * Scrolls through all set fields and returns an array of results. - */ - - flatten (prefix: string[] = []): FieldRef[] { - let fields = []; - - for (let name in this.$schema.fields) { - let {type} = this.$schema.fields[name]; - let field = this[`$${name}`]; - let path = (prefix || []).concat(name); - let value = field.value; - - fields.push({path, field}); - - if (!isPresent(value)) continue; - - if (type instanceof Schema) { - fields = fields.concat( - value.flatten(path) - ); - } - else if (isArray(type) && type[0] instanceof Schema) { - fields = fields.concat( - value - .map((f, i) => (f ? f.flatten(path.concat([i])) : null)) - .filter((f) => isArray(f)) - .reduce((a, b) => a.concat(b)) - ); - } - } - - return fields; - } - - /* - * Sets field values from the provided by data object. - */ - - populate (data = {}): this { - return this._populateFields(data); - } - - /* - * Sets field values from the provided by data object. - */ - - _populateFields (data = {}) { - data = serialize(data); - - for (let name in data) { - this._populateField(name, data[name]); - } - - return this; - } - - /* - * Sets a value of a field by name. - */ - - _populateField (name, value) { - if (!this.$schema.strict) { - this[name] = value; - } - else { - let names = Object.keys(this.$schema.fields); - let exists = names.indexOf(name) > -1; - - if (exists) { - this[name] = value; - } - } - } - - /* - * Converts this class into serialized data object. - */ - - serialize (): {} { - return serialize(this); - } - - /* - * Converts this class into serialized data object having only the keys that - * pass the `test`. - */ - - filter (test: (field: FieldRef) => boolean): {} { - let data = serialize(this); - - this.flatten() - .sort((a, b) => b.path.length - a.path.length) - .filter((field) => !test(field)) - .forEach((field) => { - let names = field.path.concat(); - let lastName = names.pop(); - delete names.reduce((o, k) => o[k], data)[lastName]; - }); - - return data; + this._fields[name] = field; } - /* - * Scrolls through object fields and collects results. - */ - - collect (handler: (field: FieldRef) => FieldRef): FieldRef[] { - return this.flatten().map(handler); - } - - /* - * Scrolls through document fields and executes a handler on each field. - */ - - scroll (handler: (field: FieldRef) => void): number { - return this.flatten().map(handler).length; - } - - /* - * Sets each document field to its default value. - */ - - reset (): this { - let {fields} = this.$schema; - - for (let name in fields) { - this[`$${name}`].reset(); - } - - return this; - } - - /* - * Sets each document field to its fake value if a fake value generator - * is registered, otherwise the default value is used. - */ - - fake (): this { - let {fields} = this.$schema; - - for (let name in fields) { - this[`$${name}`].fake(); - } - - return this; - } - - /* - * Removes all fileds values by setting them to `null`. - */ - - clear (): this { - let {fields} = this.$schema; - - for (let name in fields) { - this[`$${name}`].clear(); - } - - return this; - } - - /* - * Sets initial value of each document field to the current value of a field. - */ - - commit (): this { - let {fields} = this.$schema; - - for (let name in fields) { - this[`$${name}`].commit(); - } - - return this; - } - - /* - * Sets each document field to its initial value (value before last commit). - */ - - rollback (): this { - let {fields} = this.$schema; - - for (let name in fields) { - this[`$${name}`].rollback(); - } - - return this; - } - - /* - * Returns `true` when the `value` represents an object with the - * same field values as the original document. - */ - - equals (value: any): boolean { - return isEqual( - serialize(this), - serialize(value) - ); - } - - /* - * Returns a new Document instance which is the exact copy of the original. - */ - - clone (): this { - return this._createDocument(this, this.$schema, this.$parent); - } - - /* - * Returns a `true` if at least one field has been changed. - */ - - isChanged (): boolean { - return Object.keys(this.$schema.fields).some((name) => { - return this[`$${name}`].isChanged(); - }); - } - - /* - * Validates fields and returns errors. - */ - - async validate ({quiet = false}: {quiet?: boolean} = {}): Promise { - let {fields} = this.$schema; - - for (let path in fields) { - await this[`$${path}`].validate(); - } - - let paths = this.collectErrors().map((e) => e.path); - if (!quiet && paths.length > 0) { - throw this._createValidationError(paths); - } - - return this; - } - - /* - * Validates fields and returns errors. - */ - - invalidate (): this { - let {fields} = this.$schema; - - for (let path in fields) { - this[`$${path}`].invalidate(); - } - - return this; - } - - /* - * Returns `true` when all document fields are valid (inverse of `hasErrors`). - */ - - isValid (): boolean { - return !this.hasErrors(); - } - - /* - * Returns `true` if nested fields exist. - */ - - isNested (): boolean { - return Object.keys(this.$schema.fields).some((name) => { - return this[`$${name}`].isNested(); - }); - } - - /* - * Returns `true` when errors exist (inverse of `isValid`). - */ +} - hasErrors (): boolean { - return Object.keys(this.$schema.fields).some((name) => { - return this[`$${name}`].hasErrors(); - }); - } - /* - * Returns a list of all field-related errors, including those deeply nested. - */ - collectErrors (): FieldError[] { - return this.flatten().map(({path, field}) => { - return {path, errors: field.errors} as FieldError; - }).filter(({path, errors}) => { - return errors.length > 0; - }); - } - /* - * Deeply populates fields with the provided `errors`. - */ - applyErrors (errors: FieldError[] = []): this { - for (let error of errors) { - let path = error.path.concat(); - path[path.length - 1] = `$${path[path.length - 1]}`; - let field = this.getPath(path); - if (field) { - field.errors = error.errors; - } - } - return this; - } -} +// import {isPresent, isObject, isArray} from 'typeable'; +// import {Validator} from 'validatable'; +// import {Schema} from './schemas'; +// import {Field} from './fields'; +// import {serialize, isEqual, merge} from './utils'; +// +// /* +// * Flattened field reference type definition. +// */ +// +// export interface FieldRef { +// path: string[]; +// field: Field; +// } +// +// /* +// * Field error type definition. +// */ +// +// export interface FieldError extends Error { +// path: string[]; +// errors: any[]; +// } +// +// +// export class Document { +// $schema: Schema; +// $parent: Document; +// $root: Document; +// $validator: Validator; +// +// /* +// * Class constructor. +// */ +// +// constructor (data, schema: Schema, parent?: Document) { +// Object.defineProperty(this, '$schema', { // schema instance +// value: schema || this.$schema +// }); +// Object.defineProperty(this, '$parent', { // parent document instance +// value: parent || null +// }); +// Object.defineProperty(this, '$root', { // root document instance +// get: () => this._getRootDocument() +// }); +// Object.defineProperty(this, '$validator', { // validatable.js instance +// value: this._createValidator() +// }); +// +// this._defineFields(); +// this._populateFields(data); +// } +// +// /* +// * Loops up on the tree and returns the first document in the tree. +// */ +// +// _getRootDocument () { +// let root: any = this; +// do { +// if (root.$parent) { +// root = root.$parent; +// } +// else { +// return root; +// } +// } while (true); +// } +// +// /* +// * Creates a new document instance. This method is especially useful when +// * extending this class. +// */ +// +// _createDocument (data = null, schema = null, parent = null) { +// return new (this.constructor as any)(data, schema, parent); +// } +// +// /* +// * Creates a new field instance. This method is especially useful when +// * extending this class. +// */ +// +// _createField (name) { +// return new Field(this, name); +// } +// +// +// /* +// * Creates a new validation error instance. +// */ +// +// _createValidationError (paths) { +// let error: any = new Error('Validation failed'); +// error.code = 422; +// error.paths = paths; +// +// return error; +// } +// +// /* +// * Defines class fields from schema. +// */ +// +// _defineFields () { +// let {fields} = this.$schema; +// +// for (let name in fields) { +// this._defineField(name); +// } +// } +// +// /* +// * Defines a schema field by name. +// */ +// +// _defineField (name) { +// let field = this._createField(name); +// +// Object.defineProperty(this, name, { // field definition +// get: () => field.value, +// set: (v) => field.value = v, +// enumerable: true, +// configurable: true +// }); +// +// Object.defineProperty(this, `$${name}`, { // field class instance definition +// value: field +// }); +// } +// +// /* +// * Returns a value at path. +// */ +// +// getPath (...keys): Field { +// if (isArray(keys[0])) { +// keys = keys[0]; +// } +// +// return keys.reduce((a, b) => (a || {})[b], this); +// } +// +// /* +// * Returns `true` if field at path exists. +// */ +// +// hasPath (...keys): boolean { +// return this.getPath(...keys) !== undefined; +// } +// +// /* +// * Scrolls through all set fields and returns an array of results. +// */ +// +// flatten (prefix: string[] = []): FieldRef[] { +// let fields = []; +// +// for (let name in this.$schema.fields) { +// let {type} = this.$schema.fields[name]; +// let field = this[`$${name}`]; +// let path = (prefix || []).concat(name); +// let value = field.value; +// +// fields.push({path, field}); +// +// if (!isPresent(value)) continue; +// +// if (type instanceof Schema) { +// fields = fields.concat( +// value.flatten(path) +// ); +// } +// else if (isArray(type) && type[0] instanceof Schema) { +// fields = fields.concat( +// value +// .map((f, i) => (f ? f.flatten(path.concat([i])) : null)) +// .filter((f) => isArray(f)) +// .reduce((a, b) => a.concat(b)) +// ); +// } +// } +// +// return fields; +// } +// +// /* +// * Sets field values from the provided by data object. +// */ +// +// populate (data = {}): this { +// return this._populateFields(data); +// } +// +// /* +// * Sets field values from the provided by data object. +// */ +// +// _populateFields (data = {}) { +// data = serialize(data); +// +// for (let name in data) { +// this._populateField(name, data[name]); +// } +// +// return this; +// } +// +// /* +// * Sets a value of a field by name. +// */ +// +// _populateField (name, value) { +// if (!this.$schema.strict) { +// this[name] = value; +// } +// else { +// let names = Object.keys(this.$schema.fields); +// let exists = names.indexOf(name) > -1; +// +// if (exists) { +// this[name] = value; +// } +// } +// } +// +// /* +// * Converts this class into serialized data object. +// */ +// +// serialize (): {} { +// return serialize(this); +// } +// +// /* +// * Converts this class into serialized data object having only the keys that +// * pass the `test`. +// */ +// +// filter (test: (field: FieldRef) => boolean): {} { +// let data = serialize(this); +// +// this.flatten() +// .sort((a, b) => b.path.length - a.path.length) +// .filter((field) => !test(field)) +// .forEach((field) => { +// let names = field.path.concat(); +// let lastName = names.pop(); +// delete names.reduce((o, k) => o[k], data)[lastName]; +// }); +// +// return data; +// } +// +// /* +// * Scrolls through object fields and collects results. +// */ +// +// collect (handler: (field: FieldRef) => FieldRef): FieldRef[] { +// return this.flatten().map(handler); +// } +// +// /* +// * Scrolls through document fields and executes a handler on each field. +// */ +// +// scroll (handler: (field: FieldRef) => void): number { +// return this.flatten().map(handler).length; +// } +// +// /* +// * Sets each document field to its default value. +// */ +// +// reset (): this { +// let {fields} = this.$schema; +// +// for (let name in fields) { +// this[`$${name}`].reset(); +// } +// +// return this; +// } +// +// /* +// * Sets each document field to its fake value if a fake value generator +// * is registered, otherwise the default value is used. +// */ +// +// fake (): this { +// let {fields} = this.$schema; +// +// for (let name in fields) { +// this[`$${name}`].fake(); +// } +// +// return this; +// } +// +// /* +// * Removes all fileds values by setting them to `null`. +// */ +// +// clear (): this { +// let {fields} = this.$schema; +// +// for (let name in fields) { +// this[`$${name}`].clear(); +// } +// +// return this; +// } +// +// /* +// * Sets initial value of each document field to the current value of a field. +// */ +// +// commit (): this { +// let {fields} = this.$schema; +// +// for (let name in fields) { +// this[`$${name}`].commit(); +// } +// +// return this; +// } +// +// /* +// * Sets each document field to its initial value (value before last commit). +// */ +// +// rollback (): this { +// let {fields} = this.$schema; +// +// for (let name in fields) { +// this[`$${name}`].rollback(); +// } +// +// return this; +// } +// +// /* +// * Returns `true` when the `value` represents an object with the +// * same field values as the original document. +// */ +// +// equals (value: any): boolean { +// return isEqual( +// serialize(this), +// serialize(value) +// ); +// } +// +// /* +// * Returns a new Document instance which is the exact copy of the original. +// */ +// +// clone (): this { +// return this._createDocument(this, this.$schema, this.$parent); +// } +// +// /* +// * Returns a `true` if at least one field has been changed. +// */ +// +// isChanged (): boolean { +// return Object.keys(this.$schema.fields).some((name) => { +// return this[`$${name}`].isChanged(); +// }); +// } +// +// /* +// * Validates fields and returns errors. +// */ +// +// async validate ({quiet = false}: {quiet?: boolean} = {}): Promise { +// let {fields} = this.$schema; +// +// for (let path in fields) { +// await this[`$${path}`].validate(); +// } +// +// let paths = this.collectErrors().map((e) => e.path); +// if (!quiet && paths.length > 0) { +// throw this._createValidationError(paths); +// } +// +// return this; +// } +// +// /* +// * Validates fields and returns errors. +// */ +// +// invalidate (): this { +// let {fields} = this.$schema; +// +// for (let path in fields) { +// this[`$${path}`].invalidate(); +// } +// +// return this; +// } +// +// /* +// * Returns `true` when all document fields are valid (inverse of `hasErrors`). +// */ +// +// isValid (): boolean { +// return !this.hasErrors(); +// } +// +// /* +// * Returns `true` if nested fields exist. +// */ +// +// isNested (): boolean { +// return Object.keys(this.$schema.fields).some((name) => { +// return this[`$${name}`].isNested(); +// }); +// } +// +// /* +// * Returns `true` when errors exist (inverse of `isValid`). +// */ +// +// hasErrors (): boolean { +// return Object.keys(this.$schema.fields).some((name) => { +// return this[`$${name}`].hasErrors(); +// }); +// } +// +// /* +// * Returns a list of all field-related errors, including those deeply nested. +// */ +// +// collectErrors (): FieldError[] { +// return this.flatten().map(({path, field}) => { +// return {path, errors: field.errors} as FieldError; +// }).filter(({path, errors}) => { +// return errors.length > 0; +// }); +// } +// +// /* +// * Deeply populates fields with the provided `errors`. +// */ +// +// applyErrors (errors: FieldError[] = []): this { +// for (let error of errors) { +// let path = error.path.concat(); +// path[path.length - 1] = `$${path[path.length - 1]}`; +// +// let field = this.getPath(path); +// if (field) { +// field.errors = error.errors; +// } +// } +// +// return this; +// } +// +// } diff --git a/src/fields.ts b/src/fields.ts index 8d38943..1778c65 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -1,177 +1,221 @@ -import {cast, isArray, toArray, isFunction} from 'typeable'; -import {serialize, isEqual, merge} from './utils'; -import {Schema} from './schemas'; -import {Document} from './documents'; +import {isFunction, isUndefined, isArray, cast} from 'typeable'; +import {serialize, isEqual} from './utils'; +import {Validator, ValidatorRecipe} from 'validatable'; /* -* Document field class. +* Field context definition interface. +*/ + +export interface FieldOptions { + // owner: any; + validators?: {[name: string]: () => boolean | Promise}; + firstErrorOnly?: boolean; +} + +/* +* Field validation definition interface. +*/ + +export interface ValidationRecipe { + validator: string; + message: string; + [key: string]: any; +} + +/* +* Field definition interface. +*/ + +export interface FieldRecipe { + type?: any; + get?: (v: any) => any; + set?: (v: any) => void; + defaultValue?: any; + fakeValue?: any; + validate?: ValidationRecipe[]; +} + +/* +* Field error interface. +*/ + +export interface FieldError { + message: string; + [key: string]: any; +} + +/* +* Field class. */ export class Field { - private _value: any; - private _initialValue: any; - $owner: Document; - name: string; - value: any; - defaultValue: any; - initialValue: any; - fakeValue: any; - errors: any[]; + protected _data: any; + protected _initialData: any; + protected _validator: Validator; + readonly recipe: FieldRecipe; + readonly options: FieldOptions; + readonly defaultValue: any; + readonly fakeValue: any; + readonly initialValue: any; + public value: any; + public errors: FieldError[]; /* * Class constructor. */ - constructor (owner: Document, name: string) { - Object.defineProperty(this, '$owner', { // reference to the Document instance which owns the field - value: owner - }); - - Object.defineProperty(this, 'name', { // field name - value: name, - }); + constructor (recipe: FieldRecipe = {}, options: FieldOptions = {}) { + this.recipe = Object.freeze(recipe); + this.options = Object.freeze(options); + this.errors = []; - Object.defineProperty(this, 'defaultValue', { // default field value - get: () => this._getDefaultValue(), - enumerable: true + Object.defineProperty(this, '_data', { // current value + value: this._getDefaultValue.bind(this), + writable: true }); - - Object.defineProperty(this, '_value', { // current field value - value: this.defaultValue, + Object.defineProperty(this, '_initialData', { // last commited value + value: this._getDefaultValue(), writable: true }); + Object.defineProperty(this, '_validator', { // validatable.js instance + value: this._createValidator() + }); + Object.defineProperty(this, 'value', { get: () => this._getValue(), set: (v) => this._setValue(v), enumerable: true }); - - Object.defineProperty(this, '_initialValue', { // last committed field value - value: this._value, - writable: true - }); - Object.defineProperty(this, 'initialValue', { - get: () => this._initialValue, + Object.defineProperty(this, 'defaultValue', { + get: () => this._getDefaultValue(), enumerable: true }); - - Object.defineProperty(this, 'fakeValue', { + Object.defineProperty(this, 'fakeValue', { get: () => this._getFakeValue(), enumerable: true }); - - Object.defineProperty(this, 'errors', { // last action errors - value: [], - writable: true + Object.defineProperty(this, 'initialValue', { + get: () => this._initialData, + enumerable: true }); } - /* - * Return field value. +/* + * Returns a new instance of validator. */ - _getValue () { - let {get} = this.$owner.$schema.fields[this.name]; + _createValidator () { + let {validators, firstErrorOnly} = this.options; + let context = this; - let value = this._value; - if (get) { // transformation with custom getter - value = get.call(this.$owner, value); - } - return value; + return new Validator({validators, firstErrorOnly, context}); } /* - * Sets field value. + * Returns current field value. */ - _setValue (value) { - let {set, type} = this.$owner.$schema.fields[this.name]; - - value = this._cast(value, type); // value type casting - if (set) { // transformation with custom setter - value = set.call(this.$owner, value); + _getValue () { + let data = this._data; + if (isFunction(data)) { + data = data.call(this); + } + + let {get} = this.recipe; + if (isFunction(get)) { + data = get.call(this, data); } - this.invalidate(); // remove the last memorized error because the value has changed - this._value = value; + let {type} = this.recipe; + data = this._cast(data, type); + + return data; } /* - * Returns the default value of a field. + * Sets current field value. */ - _getDefaultValue () { - let {type, set, defaultValue} = this.$owner.$schema.fields[this.name]; - - let value = isFunction(defaultValue) - ? defaultValue.call(this) - : defaultValue; - - value = this._cast(value, type); // value type casting - if (set) { // custom setter - value = set.call(this.$owner, value); + _setValue (data) { + let {set} = this.recipe; + if (isFunction(set)) { + data = set.call(this, data); } - return value; + this.invalidate(); + + this._data = data; } /* - * Returns a fake value of a field. + * Converts a `value` into specified `type`. */ - _getFakeValue () { - let {type, set, fakeValue} = this.$owner.$schema.fields[this.name]; + _cast (data, type) { + if (isUndefined(type)) { + return data; + } + return cast(data, type); + } - let value = isFunction(fakeValue) - ? fakeValue.call(this) - : fakeValue; + /* + * Returns the default value of a field. + */ - value = this._cast(value, type); // value type casting - if (set) { // custom setter - value = set.call(this.$owner, value); + _getDefaultValue () { + let data = null; + + let {defaultValue} = this.recipe; + if (isFunction(defaultValue)) { + data = defaultValue.call(this); + } + else if (!isUndefined(defaultValue)) { + data = defaultValue; } - return value; + return data; } /* - * Converts the `value` into specified `type`. + * Returns the fake value of a field. */ - _cast (value, type) { - let types = merge(this.$owner.$schema.types, { - Schema: (value) => { - if (isArray(type)) type = type[0]; // in case of {type: [Schema]} - - return this.$owner._createDocument(value, type, this.$owner); - } - }); + _getFakeValue () { + let data = null; + + let {fakeValue} = this.recipe; + if (isFunction(fakeValue)) { + data = fakeValue.call(this); + } + else if (!isUndefined(fakeValue)) { + data = fakeValue; + } - return cast(value, type, types); + return data; } /* - * Sets field to the default value. + * Sets data to the default value. */ reset (): this { - this.value = this.defaultValue; + this.value = this._getDefaultValue.bind(this); return this; } /* - * Sets field to a generated fake value. + * Sets data to the fake value. */ fake (): this { - this.value = this.fakeValue || this.defaultValue; + this.value = this._getFakeValue.bind(this); return this; } /* - * Removes field's value by setting it to null. + * Sets data to `null`. */ clear (): this { @@ -181,32 +225,18 @@ export class Field { } /* - * Deeply set's the initial values to the current value of each field. + * Set's the initial value to the current value. */ commit (): this { - this._commitRelated(this.value); - this._initialValue = serialize(this.value); + // this._commitRelated(this.value); + this._initialData = serialize(this.value); return this; } /* - * Deeply set's the initial values of the related `data` object to the current - * value of each field. - */ - - _commitRelated (data) { // commit sub fields - if (data && data.commit) { - data.commit(); - } - else if (data && isArray(data)) { - data.forEach((d) => this._commitRelated(d)); - } - } - - /* - * Sets field's value before last commit. + * Sets value to the initial value. */ rollback (): this { @@ -216,18 +246,20 @@ export class Field { } /* - * Returns `true` when the `data` equals to the current value. + * Returns `true` when `data` equals to the current value. */ equals (data): boolean { + let value = data instanceof Field ? data.value : data; + return isEqual( serialize(this.value), - serialize(data) + serialize(value) ); } /* - * Returns `true` if the field or related sub-fields have been changed. + * Returns `true` if the value has been changed. */ isChanged (): boolean { @@ -235,16 +267,17 @@ export class Field { } /* - * Returns `true` if the field is a Document field. + * Returns `true` if the data is a Document. */ isNested (): boolean { - let {type} = this.$owner.$schema.fields[this.name]; + let {type} = this.recipe; if (isArray(type)) type = type[0]; - if (type.fields) { - return type instanceof Schema; - } + // TODO !!!!! + // if (type instanceof this.constructor.owner) { + // return true; + // } return false; } @@ -256,50 +289,42 @@ export class Field { */ async validate (): Promise { - let relatives = toArray(this.value) || []; // validate related documents - for (let relative of relatives) { - let isDocument = relative instanceof this.$owner.constructor; + // let relatives = toArray(this.value) || []; // validate related documents + // for (let relative of relatives) { + // let isDocument = relative instanceof this.$owner.constructor; - if (isDocument) { - await relative.validate({quiet: true}); // don't throw - } - } + // if (isDocument) { + // await relative.validate({quiet: true}); // don't throw + // } + // } - this.errors = await this.$owner.$validator.validate( // validate this field + this.errors = await this._validator.validate( this.value, - this.$owner.$schema.fields[this.name].validate + this.recipe.validate ); return this; } /* - * Validates the field by clearing the `errors` property + * Clears errors. */ invalidate (): this { - let relatives = toArray(this.value) || []; // validate related documents - for (let relative of relatives) { - let isDocument = relative instanceof this.$owner.constructor; + // let relatives = toArray(this.value) || []; // validate related documents + // for (let relative of relatives) { + // let isDocument = relative instanceof this.$owner.constructor; - if (isDocument) { - relative.invalidate(); - } - } + // if (isDocument) { + // relative.invalidate(); + // } + // } this.errors = []; return this; } - /* - * Returns `true` when the value is valid (inverse of `hasErrors`). - */ - - isValid (): boolean { - return !this.hasErrors(); - } - /* * Returns `true` when errors exist (inverse of `isValid`). */ @@ -311,9 +336,17 @@ export class Field { else if (!this.isNested()) { return false; } - else { - return toArray(this.value).filter((f) => !!f).some((f) => f.hasErrors()) - } + // else { + // return toArray(this.value).filter((f) => !!f).some((f) => f.hasErrors()) + // } } + /* + * Returns `true` when the value is valid (inverse of `hasErrors`). + */ + + isValid (): boolean { + return !this.hasErrors(); + } + } diff --git a/src/index.ts b/src/index.ts index 8c0f823..07ee950 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,3 @@ -import {Schema} from './schemas'; import {Document} from './documents'; import {Field} from './fields'; @@ -6,8 +5,4 @@ import {Field} from './fields'; * Exposing public classes. */ -export { - Schema, - Document, - Field -}; +export {Document, Field}; diff --git a/src/schemas.ts b/src/schemas.ts index be832eb..48c7b8e 100644 --- a/src/schemas.ts +++ b/src/schemas.ts @@ -1,74 +1,74 @@ -import {isBoolean} from 'typeable'; -import {retrieve, merge} from './utils'; - -/* -* A class for defining Document structure and properties. -*/ - -export class Schema { - fields: {}; - strict: boolean; - validators: {}; - types: {}; - firstErrorOnly?: boolean; - - /* - * Class constructor. - */ - - constructor ({ - mixins = [], // not a property - fields = {}, - strict, - validators = {}, - types = {}, - firstErrorOnly - }: { - mixins?: Schema[], - fields?: {}, - strict?: boolean, - validators?: {}, - types?: {}, - firstErrorOnly?: boolean - } = {}) { - - Object.defineProperty(this, 'fields', { // document fields - get: () => merge( - ...mixins.map((s) => retrieve(s.fields)), - retrieve(fields) - ), - enumerable: true // required for deep nesting - }); - - Object.defineProperty(this, 'strict', { // document schema mode - get: () => ( - [true].concat(mixins.map((s) => s.strict), strict).filter((s) => isBoolean(s)).reverse()[0] - ), - enumerable: true // required for deep nesting - }); - - Object.defineProperty(this, 'validators', { // validatable.js configuration option - get: () => merge( - ...mixins.map((v) => v.validators), - validators - ), - enumerable: true // required for deep nesting - }); - - Object.defineProperty(this, 'types', { // typeable.js configuration option - get: () => merge( - ...mixins.map((v) => v.types), - types - ), - enumerable: true // required for deep nesting - }); - - Object.defineProperty(this, 'firstErrorOnly', { // validatable.js configuration option - get: () => ( - [false].concat(mixins.map((s) => s.firstErrorOnly), firstErrorOnly).filter((s) => isBoolean(s)).reverse()[0] - ), - enumerable: true // required for deep nesting - }); - } - -} +// import {isBoolean} from 'typeable'; +// import {retrieve, merge} from './utils'; +// +// /* +// * A class for defining Document structure and properties. +// */ +// +// export class Schema { +// fields: {}; +// strict: boolean; +// validators: {}; +// types: {}; +// firstErrorOnly?: boolean; +// +// /* +// * Class constructor. +// */ +// +// constructor ({ +// mixins = [], // not a property +// fields = {}, +// strict, +// validators = {}, +// types = {}, +// firstErrorOnly +// }: { +// mixins?: Schema[], +// fields?: {}, +// strict?: boolean, +// validators?: {}, +// types?: {}, +// firstErrorOnly?: boolean +// } = {}) { +// +// Object.defineProperty(this, 'fields', { // document fields +// get: () => merge( +// ...mixins.map((s) => retrieve(s.fields)), +// retrieve(fields) +// ), +// enumerable: true // required for deep nesting +// }); +// +// Object.defineProperty(this, 'strict', { // document schema mode +// get: () => ( +// [true].concat(mixins.map((s) => s.strict), strict).filter((s) => isBoolean(s)).reverse()[0] +// ), +// enumerable: true // required for deep nesting +// }); +// +// Object.defineProperty(this, 'validators', { // validatable.js configuration option +// get: () => merge( +// ...mixins.map((v) => v.validators), +// validators +// ), +// enumerable: true // required for deep nesting +// }); +// +// Object.defineProperty(this, 'types', { // typeable.js configuration option +// get: () => merge( +// ...mixins.map((v) => v.types), +// types +// ), +// enumerable: true // required for deep nesting +// }); +// +// Object.defineProperty(this, 'firstErrorOnly', { // validatable.js configuration option +// get: () => ( +// [false].concat(mixins.map((s) => s.firstErrorOnly), firstErrorOnly).filter((s) => isBoolean(s)).reverse()[0] +// ), +// enumerable: true // required for deep nesting +// }); +// } +// +// } diff --git a/tests/documents.js b/tests/documents.js index 231b0d3..215b07a 100644 --- a/tests/documents.js +++ b/tests/documents.js @@ -1,1507 +1,1592 @@ import test from 'ava'; -import { - Document, - Schema, - Field -} from '../dist'; - -test('field value should be converted to the specified type', (t) => { - let bookSchema = new Schema({ - fields: () => ({ - title: { - type: 'String' - }, - year: { - type: 'Integer' - }, - book: { - type: bookSchema - } - }) - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String' - }, - age: { - type: 'Integer' - }, - enabled: { - type: 'Boolean' - }, - book: { - type: bookSchema - }, - books: { - type: [bookSchema] - }, - tags: { - type: ['String'] - }, - keywords: { - type: [] - } - } - }); - let data = { - name: 100, - age: '35', - enabled: 'true', - book: { - title: 100, - book: { - title: 200 - } - }, - books: [ - { - title: 100 - } - ], - tags: ['foo', 'bar', 100, null], - keywords: ['foo', 'bar', 100, null] - }; - let user = new Document(data, userSchema); - - t.is(user.name, '100'); - t.is(user.age, 35); - t.is(user.enabled, true); - t.is(user.book.title, '100'); - t.is(user.book.year, null); - t.is(user.book.book.title, '200'); - t.is(user.books[0].title, '100'); - t.is(user.books[0].year, null); - t.deepEqual(user.tags, ['foo', 'bar', '100', null]); - t.deepEqual(user.keywords, ['foo', 'bar', 100, null]); -}); - -test('field can be of a custom type', (t) => { - let schema = new Schema({ - fields: { - name: { - type: 'cool' - } - }, - types: { - cool: (v) => `${v}-cool` - } - }); - let data = { - name: 100 - }; - let user = new Document(data, schema); - - t.is(user.name, '100-cool'); -}); - -test('field can have a default value', (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String', - defaultValue: () => 100 - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String', - defaultValue () { return this instanceof Field ? 'yes' : 'no' } // Field context - }, - age: { - type: 'Integer', - defaultValue: '35' - }, - enabled: { - type: 'Boolean', - defaultValue: () => true - }, - book: { - type: bookSchema - }, - books: { - type: [bookSchema] - }, - papers: { - type: [bookSchema], - defaultValue: [ - { - title: 'Foo' - } - ] - } - } - }); - let data = { - books: [ - null, - { - title: 100 - } - ] - }; - let user0 = new Document(null, userSchema); - let user1 = new Document(data, userSchema); - let book0 = new Document(null, bookSchema); - let book1 = new Document(data.books[1], bookSchema); - - t.is(user0.name, 'yes'); - t.is(user0.$name.defaultValue, 'yes'); - t.is(user0.age, 35); - t.is(user0.enabled, true); - t.is(user0.book, null); - - t.deepEqual(user0.papers[0].title, 'Foo'); - t.deepEqual(user1.books, [null, book1]); - t.is(user1.books[0], null); - t.is(user1.books[1].title, '100'); -}); - -test('field can have a fake value', (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String', - fakeValue: () => 100 - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String', - fakeValue () { return this instanceof Field ? 'yes' : 'no' } // Field context - }, - age: { - type: 'Integer', - defaultValue: '35' - }, - enabled: { - type: 'Boolean', - fakeValue: () => true - }, - papers: { - type: [bookSchema], - defaultValue: [ - { - title: 'Foo' - } - ] - } - } - }); - let user0 = new Document(null, userSchema); - let user1 = new Document(null, userSchema); - - t.is(user0.$name.fakeValue, 'yes'); - t.is(user0.$age.fakeValue, null); - t.is(user0.$enabled.fakeValue, true); - - t.is(user0.$name.value, null); - user0.$name.fake(); - t.is(user0.$name.value, 'yes'); - - user0.$age.clear(); - t.is(user0.$age.value, null); - user0.$age.fake(); - t.is(user0.$age.value, 35); - - user0.$papers.clear(); - t.is(user0.papers, null); - user0.$papers.fake(); - t.is(user0.papers.length, 1); - - t.is(user1.$name.value, null); - user1.fake(); - t.is(user1.$name.value, 'yes'); -}); - -test('field can be transformed through custom setter and getter', (t) => { - let userSchema = new Schema({ - fields: { - name: { - type: 'String', - defaultValue: 100, - get: (value) => `${value}-get`, - set: (value) => `${value}-set` - } - } - }); - let user = new Document(null, userSchema); - - t.is(user.name, '100-set-get'); -}); - -test('method `populate` should not set custom fields when schema strict=true', (t) => { - let userSchema = new Schema({ - strict: true, - fields: { - name: { - type: 'String' - } - } - }); - let data = { - name: 'John', - age: 35.5 - }; - let user = new Document(null, userSchema); - user.populate(data); - - t.is(user.name, 'John'); - t.is(user.age, undefined); -}); +import {Document, Field} from '../dist'; -test('method `populate` should set custom fields when schema strict=false', (t) => { - let userSchema = new Schema({ - strict: false, - fields: { - name: { - type: 'String', - defaultValue: 100 - } +test('method `defineField` should define an enumerable property', (t) => { + let user = new class User extends Document { + constructor () { + super(); + this.defineField('name'); } - }); - let data = { - name: 'John', - age: 35.5 - }; - let user = new Document(null, userSchema); - user.populate(data); - - t.is(user.name, 'John'); - t.is(user.age, 35.5); -}); - -test('variable `$parent` should return the parent document', (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String' - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String' - }, - book: { - type: bookSchema - }, - books: { - type: [bookSchema] - } - } - }); - let data = { - book: { - title: null - }, - books: [ - { - title: null - } - ] - }; - let user = new Document(data, userSchema); - - t.is(user.$parent, null); - t.is(user.book.$parent, user); - t.is(user.books[0].$parent, user); -}); - -test('variable `$root` should return the first document in a tree of nested documents', (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String' - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String' - }, - book: { - type: bookSchema - }, - books: { - type: [bookSchema] - } - } - }); - let data = { - book: { - title: null - }, - books: [ - { - title: null - } - ] - }; - let user = new Document(data, userSchema); - - t.is(user.$root, user); - t.is(user.book.$root, user); - t.is(user.books[0].$root, user); -}); - -test('method `getPath` should return an instance of a field at path', (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String' - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String' - }, - book: { - type: bookSchema - }, - books: { - type: [bookSchema] - } - } - }); - let data = { - name: 'Foo', - book: { - title: 'Bar' - }, - books: [ - { - title: 'Baz' - } - ] - }; - let user0 = new Document(null, userSchema); - let user1 = new Document(data, userSchema); - - t.is(user0.getPath('name'), null); - t.is(user1.getPath('name'), 'Foo'); - t.is(user1.getPath('$name').value, 'Foo'); - t.is(user0.getPath('book', 'title'), undefined); - t.is(user1.getPath('book', 'title'), 'Bar'); - t.is(user0.getPath('books', 0, 'title'), undefined); - t.is(user1.getPath('books', 0, '$title').value, 'Baz'); -}); - -test('method `hasPath` should check field existance at path', (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String' - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String' - }, - book: { - type: bookSchema - }, - books: { - type: [bookSchema] - } - } - }); - let data = { - name: 100, - book: { - title: 100 - }, - books: [ - { - title: 100 - } - ] - }; - let user0 = new Document(null, userSchema); - let user1 = new Document(data, userSchema); - - t.is(user0.hasPath('name'), true); - t.is(user0.hasPath('book', 'title'), false); - t.is(user0.hasPath('books', 0, 'title'), false); - t.is(user0.hasPath(['books', 0, 'title']), false); - t.is(user1.hasPath('name'), true); - t.is(user1.hasPath('book', 'title'), true); - t.is(user1.hasPath('books', 0, 'title'), true); - t.is(user1.hasPath(['books', 0, 'title']), true); -}); - -test('method `flatten` should return an array of fields', async (t) => { - let styleSchema = new Schema({ - fields: { - kind: { - type: 'String' - } - } - }); - let bookSchema = new Schema({ - fields: { - title: { - type: 'String' - }, - style: { - type: styleSchema - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String' - }, - newBook: { - type: bookSchema - }, - newBooks: { - type: [bookSchema] - }, - oldBook: { - type: bookSchema - }, - oldBooks: { - type: [bookSchema] - } - } - }); - let data = { - name: 'John Smith', - newBook: { - title: 100, - style: { - kind: 'foo' - } - }, - newBooks: [ - null, - { - title: 100, - style: { - kind: 'foo' - } - } - ], - oldBook: null, - oldBooks: [] - }; - let user = new Document(data, userSchema); - - t.deepEqual(user.flatten().map((f) => f.path), [ - ['name'], - ['newBook'], - ['newBook', 'title'], - ['newBook', 'style'], - ['newBook', 'style', 'kind'], - ['newBooks'], - ['newBooks', 1, 'title'], - ['newBooks', 1, 'style'], - ['newBooks', 1, 'style', 'kind'], - ['oldBook'], - ['oldBooks'] - ]); -}); - -test('method `serialize` should convert a document into serialized data object', (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String', - defaultValue: 100 - }, - year: { - type: 'Integer' - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String' - }, - age: { - type: 'float' - }, - enabled: { - type: 'Boolean' - }, - newBook: { - type: bookSchema - }, - newBooks: { - type: [bookSchema] - }, - oldBook: { - type: bookSchema - }, - oldBooks: { - type: [bookSchema] - } - } - }); - let data = { - name: 'John Smith', - newBook: { - title: 100 - }, - newBooks: [ - null, - { - title: 100 - } - ] - }; - let user = new Document(data, userSchema); - - t.deepEqual(user.serialize(), { - name: 'John Smith', - age: null, - enabled: null, - newBook: { - title: '100', - year: null - }, - newBooks: [ - null, - { - title: '100', - year: null - } - ], - oldBook: null, - oldBooks: null - }); -}); - -test('method `reset` should deeply set fields to their default values and invalidate the errors', (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String', - defaultValue: 'Foo' - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String', - defaultValue: 'Bar' - }, - book: { - type: bookSchema, - defaultValue: { - title: 'Baz' - } - }, - books: { - type: [bookSchema], - defaultValue: [ - { - title: 'Qux' - } - ] - } - } - }); - let data = { - name: 100, - book: { - title: 'Quux' - }, - books: [ - { - title: 'Corge' - }, - { - title: 'Grault' - } - ] - }; - let user = new Document(null, userSchema); - user.populate(data); - user.$name._errors = ['foo']; - - user.reset(); - - t.deepEqual(user.$name.errors, []); - t.deepEqual(user.serialize(), { - name: 'Bar', - book: { - title: 'Baz' - }, - books: [ - { - title: 'Qux' - } - ] - }); -}); - -test('method `clear` should deeply clear fields', (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String', - defaultValue: 'Foo' - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String', - defaultValue: 'Bar' - }, - book: { - type: bookSchema, - defaultValue: { - title: 'Baz' - } - }, - books: { - type: [bookSchema], - defaultValue: [ - { - title: 'Qux' - } - ] - } - } - }); - let user = new Document(null, userSchema); - user.clear(); - - t.deepEqual(user.serialize(), { - name: null, - book: null, - books: null - }); -}); - -test('method `clear` should deeply clear fields', (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String', - defaultValue: 'Foo' - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String', - defaultValue: 'Bar' - }, - book: { - type: bookSchema, - defaultValue: { - title: 'Baz' - } - }, - books: { - type: [bookSchema], - defaultValue: [ - { - title: 'Qux' - } - ] - } - } - }); - let user = new Document(null, userSchema); - user.clear(); - - t.deepEqual(user.serialize(), { - name: null, - book: null, - books: null - }); -}); - -test('method `commit` should deeply reset information about changed fields.', (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String', - defaultValue: 'Foo' - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String', - defaultValue: 'Bar' - }, - book: { - type: bookSchema, - defaultValue: { - title: 'Baz' - } - }, - books: { - type: [bookSchema], - defaultValue: [ - { - title: 'Qux' - } - ] - } - } - }); - let data = { - name: 100, - book: { - title: 'Quux' - }, - books: [ - { - title: 'Corge' - }, - { - title: 'Grault' - } - ] - }; - let user = new Document(data, userSchema); - - t.is(user.$name.initialValue, 'Bar'); - user.commit(); - t.is(user.$name.initialValue, '100'); - t.is(user.book.$title.initialValue, 'Quux'); - t.is(user.books[0].$title.initialValue, 'Corge'); - t.is(user.books[1].$title.initialValue, 'Grault'); -}); - -test('method `rollback` should deeply reset fields to their initial values', (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String' - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String', - defaultValue: 'Bar' - }, - book: { - type: bookSchema, - defaultValue: { - title: 'Baz' - } - }, - books: { - type: [bookSchema], - defaultValue: [ - { - title: 'Qux' - } - ] - } - } - }); - let data = { - name: 100, - book: { - title: 'Quux' - }, - books: [ - { - title: 'Corge' - }, - { - title: 'Grault' - } - ] - }; - let user = new Document(null, userSchema); - user.populate(data); - user.rollback(); - - t.deepEqual(user.serialize(), { - name: 'Bar', - book: { - title: 'Baz' - }, - books: [ - { - title: 'Qux' - } - ] - }); -}); - -test('method `isChanged` should return `true` if at least one field has been changed', (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String' - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String' - }, - book: { - type: bookSchema - }, - books: { - type: [bookSchema] - } - } - }); - - let user = new Document(null, userSchema); - t.is(user.isChanged(), false); - user.name = 'Foo'; - t.is(user.$name.isChanged(), true); - t.is(user.isChanged(), true); - user.commit(); - user.book = {title: 'Foo'}; - t.is(user.$book.isChanged(), true); - t.is(user.book.isChanged(), true); - t.is(user.isChanged(), true); - user.commit(); - user.book.title = {title: 'Bar'}; - t.is(user.book.$title.isChanged(), true); - t.is(user.isChanged(), true); - user.commit(); - user.books = [{title: 'Foo'}]; - t.is(user.$books.isChanged(), true); - t.is(user.isChanged(), true); - user.commit(); - user.books[0].title = [{title: 'Bar'}]; - t.is(user.books[0].$title.isChanged(), true); - t.is(user.isChanged(), true); -}); - -test('method `isNested` should return `true` if nested fields exist', (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String' - } - } - }); - let schema0 = new Schema({ - fields: { - name: { - type: 'String' - } - } - }); - let schema1 = new Schema({ - fields: { - name: { - type: 'String' - }, - book: { - type: bookSchema - } - } - }); - let schema2 = new Schema({ - fields: { - name: { - type: 'String' - }, - books: { - type: [bookSchema] - } - } - }); - - let doc0 = new Document(null, schema0); - let doc1 = new Document(null, schema1); - let doc2 = new Document(null, schema2); - - t.is(doc0.isNested(), false); - t.is(doc1.isNested(), true); - t.is(doc2.isNested(), true); -}); - -test('method `equals` should return `true` when the passing object looks the same', (t) => { - let authorSchema = new Schema({ - fields: { - name: { - type: 'String' - } - } - }); - let bookSchema = new Schema({ - fields: { - title: { - type: 'String' - }, - author: { - type: authorSchema - } - } - }); - let userSchema = { - fields: { - name: { - type: 'String', - defaultValue: 'John' - }, - book: { - type: bookSchema - }, - books: { - type: [bookSchema] - } - } - }; - let data0 = { - name: null, - book: { - title: 'Foo', - author: { - name: 'Bar' - } - }, - books: [ - { - title: 'Bar' - } - ] - }; - let data1 = { - name: 'Mandy' - }; - let user0 = new Document(null, new Schema(userSchema)); - let user1 = new Document(null, new Schema(userSchema)); - let user2 = new Document(data0, new Schema(userSchema)); - let user3 = new Document(data1, new Schema(userSchema)); - - t.is(user0.equals(user1), true); - t.is(user0.equals(user2), false); - t.is(user0.equals(user3), false); - t.is(user2.equals(user3), false); - t.is(user0.$name.equals('John'), true); - t.is(user2.$book.equals({ - title: 'Foo', - author: { - name: 'Bar' - } - }), true); - t.is(user2.$books.equals([ - { - title: 'Bar', - author: null - } - ]), true); -}); + } -test('method `clone` should return an exact copy of the original', (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String', - defaultValue: 100 - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String' - }, - book: { - type: bookSchema - }, - books: { - type: [bookSchema] - } - } - }); - let data = { - name: 'John Smith', - books: [ - null, - { - title: 100 - } - ] - }; - - let user = new Document(data, userSchema); - - t.is(user.clone() === user, false); - t.deepEqual(user.clone(), user); -}); + let descriptor = Object.getOwnPropertyDescriptor(user, 'name'); + t.is(typeof descriptor.get === 'function', true); + t.is(typeof descriptor.set === 'function', true); + t.is(descriptor.enumerable, true); + t.is(descriptor.configurable, true); -test('method `validate` should validate all fields and throw an error', async (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String', - validate: [ - {validator: 'presence', message: 'is required'} - ] - }, - year: { - type: 'Integer' - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String', - validate: [ - {validator: 'presence', message: 'is required'} - ] - }, - newBook: { - type: bookSchema, - validate: [ - {validator: 'presence', message: 'is required'} - ] - }, - newBooks: { - type: [bookSchema], - validate: [ - {validator: 'presence', message: 'is required'} - ] - }, - oldBook: { - type: bookSchema, - validate: [ - {validator: 'presence', message: 'is required'} - ] - }, - oldBooks: { - type: [bookSchema], - validate: [ - {validator: 'presence', message: 'is required'}, - {validator: 'arrayLength', message: 'is too short', min: 10} - ] - }, - prevBooks: { - type: [bookSchema] - } - } - }); - let data = { - oldBook: {}, - oldBooks: [null, {}] - }; - let user = new Document(data, userSchema); - let validatorError0 = {validator: 'presence', message: 'is required', code: 422}; - let validatorError1 = {validator: 'arrayLength', message: 'is too short', code: 422}; - - // throws an error - t.throws(user.validate()); - let error = null; - try { - await user.validate(); - } catch (e) { - error = e; - } - t.is(error.code, 422); - t.deepEqual(error.paths, [ - ['name'], - ['newBook'], - ['newBooks'], - ['oldBook', 'title'], - ['oldBooks'], - ['oldBooks', 1, 'title'] - ]); - // errors are populated - t.deepEqual(user.$name.errors[0], validatorError0); - t.deepEqual(user.$newBook.errors[0], validatorError0); - t.deepEqual(user.$newBooks.errors[0], validatorError0); - t.deepEqual(user.$oldBook.errors.length, 0); - t.deepEqual(user.oldBook.$title.errors[0], validatorError0); - t.deepEqual(user.oldBook.$year.errors.length, 0); - t.deepEqual(user.$oldBooks.errors[0], validatorError1); - t.deepEqual(user.oldBooks[0], null); - t.deepEqual(user.oldBooks[1].$title.errors[0], validatorError0); - t.deepEqual(user.oldBooks[1].$year.errors.length, 0); - t.deepEqual(user.$prevBooks.errors.length, 0); + t.is(user.name, null); }); -test('methods `isValid` and `hasErrors` should tell if fields are valid', async (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String', - validate: [ - {validator: 'presence', message: 'is required'} - ] - }, - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String', - validate: [ - {validator: 'presence', message: 'is required'} - ] - }, - newBook: { - type: bookSchema, - validate: [ - {validator: 'presence', message: 'is required'} - ] - }, - newBooks: { - type: [bookSchema], - validate: [ - {validator: 'presence', message: 'is required'} - ] - }, - oldBook: { - type: bookSchema, - validate: [ - {validator: 'presence', message: 'is required'} - ] - }, - oldBooks: { - type: [bookSchema], - validate: [ - {validator: 'presence', message: 'is required'} - ] - } - } - }); - - let data = { - name: 'Foo', - newBook: { - title: 'Bar' - }, - newBooks: [ - null, - { - title: 'Baz' - } - ], - oldBook: {}, - oldBooks: [null, {}] - }; - let user = new Document(data, userSchema); - await user.validate({quiet: true}); - - t.is(user.$name.isValid(), true); - t.is(user.$name.hasErrors(), false); - t.is(user.$newBook.isValid(), true); - t.is(user.newBook.$title.isValid(), true); - t.is(user.newBook.$title.hasErrors(), false); - t.is(user.$newBooks.hasErrors(), false); - t.is(user.newBooks[1].$title.hasErrors(), false); - t.is(user.$oldBook.isValid(), false); - t.is(user.oldBook.$title.isValid(), false); - t.is(user.$oldBooks.hasErrors(), true); - t.is(user.oldBooks[1].$title.hasErrors(), true); -}); -test('method `invalidate` should clear errors on all fields', async (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String', - validate: [ - {validator: 'presence', message: 'is required'} - ] - }, - year: { - type: 'Integer' - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String', - validate: [ - {validator: 'presence', message: 'is required'} - ] - }, - newBook: { - type: bookSchema, - validate: [ - {validator: 'presence', message: 'is required'} - ] - }, - newBooks: { - type: [bookSchema], - validate: [ - {validator: 'presence', message: 'is required'} - ] - }, - oldBook: { - type: bookSchema, - validate: [ - {validator: 'presence', message: 'is required'} - ] - }, - oldBooks: { - type: [bookSchema], - validate: [ - {validator: 'presence', message: 'is required'} - ] - }, - prevBooks: { - type: [bookSchema] - } - } - }); - let data = { - oldBook: {}, - oldBooks: [null, {}] - }; - let user = new Document(data, userSchema); - - await user.validate({quiet: true}); - // invalidate is triggered when a field changes - user.name = 'foo'; - t.deepEqual(user.$name.errors, []); - // errors are populated - user.invalidate(); - t.deepEqual(user.$newBook.errors, []); - t.deepEqual(user.$newBooks.errors, []); - t.deepEqual(user.oldBook.$title.errors, []); - t.deepEqual(user.oldBooks[0], null); - t.deepEqual(user.oldBooks[1].$title.errors, []); -}); -test('method `filter` should convert a document into serialized object with only keys that pass the test', (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String' - }, - author: { - type: 'String' - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String' - }, - book: { - type: bookSchema - }, - books: { - type: [bookSchema] - } - } - }); - let data = { - book: { - title: 'foo' - }, - books: [ - null, - { - title: 'bar' - } - ] - }; - let user = new Document(data, userSchema); - let validKeys = ['book', 'books', 'books.1', 'book.title', 'books.1.author']; - let filtered = user.filter(({path}) => validKeys.indexOf(path.join('.')) !== -1); - - t.deepEqual(filtered, { - book: { - title: 'foo' - }, - books: [ - null, - { - author: null - } - ] - }); -}); -test('method `collectErrors` should return an array of field errors', async (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String', - validate: [ - {validator: 'presence', message: 'is required'} - ] - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String', - validate: [ - {validator: 'presence', message: 'is required'} - ] - }, - age: { - type: 'Integer', - validate: [ - {validator: 'presence', message: 'is required'} - ] - }, - newBook: { - type: bookSchema, - validate: [ - {validator: 'presence', message: 'is required'} - ] - }, - newBooks: { - type: [bookSchema], - validate: [ - {validator: 'presence', message: 'is required'} - ] - } - } - }); - let data = {age: 30}; - let user = new Document(data, userSchema); - await user.validate({quiet: true}); - - t.deepEqual(user.collectErrors(), [ - { - path: ['name'], - errors: [ - {validator: 'presence', message: 'is required', code: 422} - ] - }, - { - path: ['newBook'], - errors: [ - {validator: 'presence', message: 'is required', code: 422} - ] - }, - { - path: ['newBooks'], - errors: [ - {validator: 'presence', message: 'is required', code: 422} - ] - } - ]); -}); -test('method `applyErrors` should set field `errors` property', async (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String' - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String' - }, - newBook: { - type: bookSchema - }, - newBooks: { - type: [bookSchema] - } - } - }); - let data = { - newBook: {}, - newBooks: [{}, {}] - }; - let user = new Document(data, userSchema); - let validatorError = {validator: 'presence', message: 'is required', code: 422}; - - user.applyErrors([ - {path: ['name'], errors: [validatorError]}, - {path: ['newBook', 'title'], errors: [validatorError]}, - {path: ['newBooks', 1, 'title'], errors: [validatorError]} - ]); - - t.deepEqual(user.$name.errors, [validatorError]); - t.deepEqual(user.newBook.$title.errors, [validatorError]); - t.deepEqual(user.newBooks[0].$title.errors, []); - t.deepEqual(user.newBooks[1].$title.errors, [validatorError]); -}); -test('method `collect` should return an array of results', (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String' - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String' - }, - book: { - type: bookSchema - } - } - }); - let data = { - book: { - title: 'foo' - } - }; - let user = new Document(data, userSchema); - let results = user.collect(({path, field}) => path); - - t.deepEqual(results, [ - ['name'], - ['book'], - ['book', 'title'] - ]); -}); -test('method `collect` should return an array of results', (t) => { - let bookSchema = new Schema({ - fields: { - title: { - type: 'String' - } - } - }); - let userSchema = new Schema({ - fields: { - name: { - type: 'String' - }, - book: { - type: bookSchema - } - } - }); - let data = { - book: { - title: 'foo' - } - }; - let user = new Document(data, userSchema); - let count = user.scroll(({path, field}) => {}); - t.deepEqual(count, 3); -}); +// test('field value should be converted to the specified type', (t) => { +// test('field can be of a custom type', (t) => { +// test('field can have a fake value', (t) => { +// test('field can be transformed through custom setter and getter', (t) => { +// test('method `populate` should not set custom fields when schema strict=true', (t) => { +// test('method `populate` should set custom fields when schema strict=false', (t) => { +// test('variable `$parent` should return the parent document', (t) => { +// test('variable `$root` should return the first document in a tree of nested documents', (t) => { +// test('method `getPath` should return an instance of a field at path', (t) => { +// test('method `hasPath` should check field existance at path', (t) => { +// test('method `flatten` should return an array of fields', async (t) => { +// test('method `serialize` should convert a document into serialized data object', (t) => { +// test('method `reset` should deeply set fields to their default values and invalidate the errors', (t) => { +// test('method `clear` should deeply clear fields', (t) => { +// test('method `clear` should deeply clear fields', (t) => { +// test('method `commit` should deeply reset information about changed fields.', (t) => { +// test('method `rollback` should deeply reset fields to their initial values', (t) => { +// test('method `isChanged` should return `true` if at least one field has been changed', (t) => { +// test('method `isNested` should return `true` if nested fields exist', (t) => { +// test('method `equals` should return `true` when the passing object looks the same', (t) => { +// test('method `clone` should return an exact copy of the original', (t) => { +// test('method `validate` should validate all fields and throw an error', async (t) => { +// test('methods `isValid` and `hasErrors` should tell if fields are valid', async (t) => { +// test('method `invalidate` should clear errors on all fields', async (t) => { +// test('method `filter` should convert a document into serialized object with only keys that pass the test', (t) => { +// test('method `collectErrors` should return an array of field errors', async (t) => { +// test('method `applyErrors` should set field `errors` property', async (t) => { +// test('method `collect` should return an array of results', (t) => { +// test('method `collect` should return an array of results', (t) => { + + + + + + + + + + +// test('field value should be converted to the specified type', (t) => { + +// class Book extends Document { +// public title: string; +// constructor () { +// super(); +// this.defineField('title', {type: 'String'}); +// } +// } + +// class User extends Document { +// public name: string; +// public book: Book; +// public books: Book[]; +// constructor () { +// super(); +// this.defineField('name', {type: 'String'}); +// this.defineField('book', {type: [Book]}); +// } +// } + +// let user = new User(); + +// }); + + +// test('field value should be converted to the specified type', (t) => { +// let bookSchema = new Schema({ +// fields: () => ({ +// title: { +// type: 'String' +// }, +// year: { +// type: 'Integer' +// }, +// book: { +// type: bookSchema +// } +// }) +// }); +// let userSchema = new Schema({ +// fields: { +// name: { +// type: 'String' +// }, +// age: { +// type: 'Integer' +// }, +// enabled: { +// type: 'Boolean' +// }, +// book: { +// type: bookSchema +// }, +// books: { +// type: [bookSchema] +// }, +// tags: { +// type: ['String'] +// }, +// keywords: { +// type: [] +// } +// } +// }); +// let data = { +// name: 100, +// age: '35', +// enabled: 'true', +// book: { +// title: 100, +// book: { +// title: 200 +// } +// }, +// books: [ +// { +// title: 100 +// } +// ], +// tags: ['foo', 'bar', 100, null], +// keywords: ['foo', 'bar', 100, null] +// }; +// let user = new Document(data, userSchema); + +// t.is(user.name, '100'); +// t.is(user.age, 35); +// t.is(user.enabled, true); +// t.is(user.book.title, '100'); +// t.is(user.book.year, null); +// t.is(user.book.book.title, '200'); +// t.is(user.books[0].title, '100'); +// t.is(user.books[0].year, null); +// t.deepEqual(user.tags, ['foo', 'bar', '100', null]); +// t.deepEqual(user.keywords, ['foo', 'bar', 100, null]); +// }); + +// test('field can be of a custom type', (t) => { +// let schema = new Schema({ +// fields: { +// name: { +// type: 'cool' +// } +// }, +// types: { +// cool: (v) => `${v}-cool` +// } +// }); +// let data = { +// name: 100 +// }; +// let user = new Document(data, schema); + +// t.is(user.name, '100-cool'); +// }); + +// test('field can have a default value', (t) => { +// let bookSchema = new Schema({ +// fields: { +// title: { +// type: 'String', +// defaultValue: () => 100 +// } +// } +// }); +// let userSchema = new Schema({ +// fields: { +// name: { +// type: 'String', +// defaultValue () { return this instanceof Field ? 'yes' : 'no' } // Field context +// }, +// age: { +// type: 'Integer', +// defaultValue: '35' +// }, +// enabled: { +// type: 'Boolean', +// defaultValue: () => true +// }, +// book: { +// type: bookSchema +// }, +// books: { +// type: [bookSchema] +// }, +// papers: { +// type: [bookSchema], +// defaultValue: [ +// { +// title: 'Foo' +// } +// ] +// } +// } +// }); +// let data = { +// books: [ +// null, +// { +// title: 100 +// } +// ] +// }; +// let user0 = new Document(null, userSchema); +// let user1 = new Document(data, userSchema); +// let book0 = new Document(null, bookSchema); +// let book1 = new Document(data.books[1], bookSchema); + +// t.is(user0.name, 'yes'); +// t.is(user0.$name.defaultValue, 'yes'); +// t.is(user0.age, 35); +// t.is(user0.enabled, true); +// t.is(user0.book, null); + +// t.deepEqual(user0.papers[0].title, 'Foo'); +// t.deepEqual(user1.books, [null, book1]); +// t.is(user1.books[0], null); +// t.is(user1.books[1].title, '100'); +// }); + +// test('field can have a fake value', (t) => { +// let bookSchema = new Schema({ +// fields: { +// title: { +// type: 'String', +// fakeValue: () => 100 +// } +// } +// }); +// let userSchema = new Schema({ +// fields: { +// name: { +// type: 'String', +// fakeValue () { return this instanceof Field ? 'yes' : 'no' } // Field context +// }, +// age: { +// type: 'Integer', +// defaultValue: '35' +// }, +// enabled: { +// type: 'Boolean', +// fakeValue: () => true +// }, +// papers: { +// type: [bookSchema], +// defaultValue: [ +// { +// title: 'Foo' +// } +// ] +// } +// } +// }); +// let user0 = new Document(null, userSchema); +// let user1 = new Document(null, userSchema); + +// t.is(user0.$name.fakeValue, 'yes'); +// t.is(user0.$age.fakeValue, null); +// t.is(user0.$enabled.fakeValue, true); + +// t.is(user0.$name.value, null); +// user0.$name.fake(); +// t.is(user0.$name.value, 'yes'); + +// user0.$age.clear(); +// t.is(user0.$age.value, null); +// user0.$age.fake(); +// t.is(user0.$age.value, 35); + +// user0.$papers.clear(); +// t.is(user0.papers, null); +// user0.$papers.fake(); +// t.is(user0.papers.length, 1); + +// t.is(user1.$name.value, null); +// user1.fake(); +// t.is(user1.$name.value, 'yes'); +// }); + +// test('field can be transformed through custom setter and getter', (t) => { +// let userSchema = new Schema({ +// fields: { +// name: { +// type: 'String', +// defaultValue: 100, +// get: (value) => `${value}-get`, +// set: (value) => `${value}-set` +// } +// } +// }); +// let user = new Document(null, userSchema); + +// t.is(user.name, '100-set-get'); +// }); + +// test('method `populate` should not set custom fields when schema strict=true', (t) => { +// let userSchema = new Schema({ +// strict: true, +// fields: { +// name: { +// type: 'String' +// } +// } +// }); +// let data = { +// name: 'John', +// age: 35.5 +// }; +// let user = new Document(null, userSchema); +// user.populate(data); + +// t.is(user.name, 'John'); +// t.is(user.age, undefined); +// }); + +// test('method `populate` should set custom fields when schema strict=false', (t) => { +// let userSchema = new Schema({ +// strict: false, +// fields: { +// name: { +// type: 'String', +// defaultValue: 100 +// } +// } +// }); +// let data = { +// name: 'John', +// age: 35.5 +// }; +// let user = new Document(null, userSchema); +// user.populate(data); + +// t.is(user.name, 'John'); +// t.is(user.age, 35.5); +// }); + +// test('variable `$parent` should return the parent document', (t) => { +// let bookSchema = new Schema({ +// fields: { +// title: { +// type: 'String' +// } +// } +// }); +// let userSchema = new Schema({ +// fields: { +// name: { +// type: 'String' +// }, +// book: { +// type: bookSchema +// }, +// books: { +// type: [bookSchema] +// } +// } +// }); +// let data = { +// book: { +// title: null +// }, +// books: [ +// { +// title: null +// } +// ] +// }; +// let user = new Document(data, userSchema); + +// t.is(user.$parent, null); +// t.is(user.book.$parent, user); +// t.is(user.books[0].$parent, user); +// }); + +// test('variable `$root` should return the first document in a tree of nested documents', (t) => { +// let bookSchema = new Schema({ +// fields: { +// title: { +// type: 'String' +// } +// } +// }); +// let userSchema = new Schema({ +// fields: { +// name: { +// type: 'String' +// }, +// book: { +// type: bookSchema +// }, +// books: { +// type: [bookSchema] +// } +// } +// }); +// let data = { +// book: { +// title: null +// }, +// books: [ +// { +// title: null +// } +// ] +// }; +// let user = new Document(data, userSchema); + +// t.is(user.$root, user); +// t.is(user.book.$root, user); +// t.is(user.books[0].$root, user); +// }); + +// test('method `getPath` should return an instance of a field at path', (t) => { +// let bookSchema = new Schema({ +// fields: { +// title: { +// type: 'String' +// } +// } +// }); +// let userSchema = new Schema({ +// fields: { +// name: { +// type: 'String' +// }, +// book: { +// type: bookSchema +// }, +// books: { +// type: [bookSchema] +// } +// } +// }); +// let data = { +// name: 'Foo', +// book: { +// title: 'Bar' +// }, +// books: [ +// { +// title: 'Baz' +// } +// ] +// }; +// let user0 = new Document(null, userSchema); +// let user1 = new Document(data, userSchema); + +// t.is(user0.getPath('name'), null); +// t.is(user1.getPath('name'), 'Foo'); +// t.is(user1.getPath('$name').value, 'Foo'); +// t.is(user0.getPath('book', 'title'), undefined); +// t.is(user1.getPath('book', 'title'), 'Bar'); +// t.is(user0.getPath('books', 0, 'title'), undefined); +// t.is(user1.getPath('books', 0, '$title').value, 'Baz'); +// }); + +// test('method `hasPath` should check field existance at path', (t) => { +// let bookSchema = new Schema({ +// fields: { +// title: { +// type: 'String' +// } +// } +// }); +// let userSchema = new Schema({ +// fields: { +// name: { +// type: 'String' +// }, +// book: { +// type: bookSchema +// }, +// books: { +// type: [bookSchema] +// } +// } +// }); +// let data = { +// name: 100, +// book: { +// title: 100 +// }, +// books: [ +// { +// title: 100 +// } +// ] +// }; +// let user0 = new Document(null, userSchema); +// let user1 = new Document(data, userSchema); + +// t.is(user0.hasPath('name'), true); +// t.is(user0.hasPath('book', 'title'), false); +// t.is(user0.hasPath('books', 0, 'title'), false); +// t.is(user0.hasPath(['books', 0, 'title']), false); +// t.is(user1.hasPath('name'), true); +// t.is(user1.hasPath('book', 'title'), true); +// t.is(user1.hasPath('books', 0, 'title'), true); +// t.is(user1.hasPath(['books', 0, 'title']), true); +// }); + +// test('method `flatten` should return an array of fields', async (t) => { +// let styleSchema = new Schema({ +// fields: { +// kind: { +// type: 'String' +// } +// } +// }); +// let bookSchema = new Schema({ +// fields: { +// title: { +// type: 'String' +// }, +// style: { +// type: styleSchema +// } +// } +// }); +// let userSchema = new Schema({ +// fields: { +// name: { +// type: 'String' +// }, +// newBook: { +// type: bookSchema +// }, +// newBooks: { +// type: [bookSchema] +// }, +// oldBook: { +// type: bookSchema +// }, +// oldBooks: { +// type: [bookSchema] +// } +// } +// }); +// let data = { +// name: 'John Smith', +// newBook: { +// title: 100, +// style: { +// kind: 'foo' +// } +// }, +// newBooks: [ +// null, +// { +// title: 100, +// style: { +// kind: 'foo' +// } +// } +// ], +// oldBook: null, +// oldBooks: [] +// }; +// let user = new Document(data, userSchema); + +// t.deepEqual(user.flatten().map((f) => f.path), [ +// ['name'], +// ['newBook'], +// ['newBook', 'title'], +// ['newBook', 'style'], +// ['newBook', 'style', 'kind'], +// ['newBooks'], +// ['newBooks', 1, 'title'], +// ['newBooks', 1, 'style'], +// ['newBooks', 1, 'style', 'kind'], +// ['oldBook'], +// ['oldBooks'] +// ]); +// }); + +// test('method `serialize` should convert a document into serialized data object', (t) => { +// let bookSchema = new Schema({ +// fields: { +// title: { +// type: 'String', +// defaultValue: 100 +// }, +// year: { +// type: 'Integer' +// } +// } +// }); +// let userSchema = new Schema({ +// fields: { +// name: { +// type: 'String' +// }, +// age: { +// type: 'float' +// }, +// enabled: { +// type: 'Boolean' +// }, +// newBook: { +// type: bookSchema +// }, +// newBooks: { +// type: [bookSchema] +// }, +// oldBook: { +// type: bookSchema +// }, +// oldBooks: { +// type: [bookSchema] +// } +// } +// }); +// let data = { +// name: 'John Smith', +// newBook: { +// title: 100 +// }, +// newBooks: [ +// null, +// { +// title: 100 +// } +// ] +// }; +// let user = new Document(data, userSchema); + +// t.deepEqual(user.serialize(), { +// name: 'John Smith', +// age: null, +// enabled: null, +// newBook: { +// title: '100', +// year: null +// }, +// newBooks: [ +// null, +// { +// title: '100', +// year: null +// } +// ], +// oldBook: null, +// oldBooks: null +// }); +// }); + +// test('method `reset` should deeply set fields to their default values and invalidate the errors', (t) => { +// let bookSchema = new Schema({ +// fields: { +// title: { +// type: 'String', +// defaultValue: 'Foo' +// } +// } +// }); +// let userSchema = new Schema({ +// fields: { +// name: { +// type: 'String', +// defaultValue: 'Bar' +// }, +// book: { +// type: bookSchema, +// defaultValue: { +// title: 'Baz' +// } +// }, +// books: { +// type: [bookSchema], +// defaultValue: [ +// { +// title: 'Qux' +// } +// ] +// } +// } +// }); +// let data = { +// name: 100, +// book: { +// title: 'Quux' +// }, +// books: [ +// { +// title: 'Corge' +// }, +// { +// title: 'Grault' +// } +// ] +// }; +// let user = new Document(null, userSchema); +// user.populate(data); +// user.$name._errors = ['foo']; + +// user.reset(); + +// t.deepEqual(user.$name.errors, []); +// t.deepEqual(user.serialize(), { +// name: 'Bar', +// book: { +// title: 'Baz' +// }, +// books: [ +// { +// title: 'Qux' +// } +// ] +// }); +// }); + +// test('method `clear` should deeply clear fields', (t) => { +// let bookSchema = new Schema({ +// fields: { +// title: { +// type: 'String', +// defaultValue: 'Foo' +// } +// } +// }); +// let userSchema = new Schema({ +// fields: { +// name: { +// type: 'String', +// defaultValue: 'Bar' +// }, +// book: { +// type: bookSchema, +// defaultValue: { +// title: 'Baz' +// } +// }, +// books: { +// type: [bookSchema], +// defaultValue: [ +// { +// title: 'Qux' +// } +// ] +// } +// } +// }); +// let user = new Document(null, userSchema); +// user.clear(); + +// t.deepEqual(user.serialize(), { +// name: null, +// book: null, +// books: null +// }); +// }); + +// test('method `clear` should deeply clear fields', (t) => { +// let bookSchema = new Schema({ +// fields: { +// title: { +// type: 'String', +// defaultValue: 'Foo' +// } +// } +// }); +// let userSchema = new Schema({ +// fields: { +// name: { +// type: 'String', +// defaultValue: 'Bar' +// }, +// book: { +// type: bookSchema, +// defaultValue: { +// title: 'Baz' +// } +// }, +// books: { +// type: [bookSchema], +// defaultValue: [ +// { +// title: 'Qux' +// } +// ] +// } +// } +// }); +// let user = new Document(null, userSchema); +// user.clear(); + +// t.deepEqual(user.serialize(), { +// name: null, +// book: null, +// books: null +// }); +// }); + +// test('method `commit` should deeply reset information about changed fields.', (t) => { +// let bookSchema = new Schema({ +// fields: { +// title: { +// type: 'String', +// defaultValue: 'Foo' +// } +// } +// }); +// let userSchema = new Schema({ +// fields: { +// name: { +// type: 'String', +// defaultValue: 'Bar' +// }, +// book: { +// type: bookSchema, +// defaultValue: { +// title: 'Baz' +// } +// }, +// books: { +// type: [bookSchema], +// defaultValue: [ +// { +// title: 'Qux' +// } +// ] +// } +// } +// }); +// let data = { +// name: 100, +// book: { +// title: 'Quux' +// }, +// books: [ +// { +// title: 'Corge' +// }, +// { +// title: 'Grault' +// } +// ] +// }; +// let user = new Document(data, userSchema); + +// t.is(user.$name.initialValue, 'Bar'); +// user.commit(); +// t.is(user.$name.initialValue, '100'); +// t.is(user.book.$title.initialValue, 'Quux'); +// t.is(user.books[0].$title.initialValue, 'Corge'); +// t.is(user.books[1].$title.initialValue, 'Grault'); +// }); + +// test('method `rollback` should deeply reset fields to their initial values', (t) => { +// let bookSchema = new Schema({ +// fields: { +// title: { +// type: 'String' +// } +// } +// }); +// let userSchema = new Schema({ +// fields: { +// name: { +// type: 'String', +// defaultValue: 'Bar' +// }, +// book: { +// type: bookSchema, +// defaultValue: { +// title: 'Baz' +// } +// }, +// books: { +// type: [bookSchema], +// defaultValue: [ +// { +// title: 'Qux' +// } +// ] +// } +// } +// }); +// let data = { +// name: 100, +// book: { +// title: 'Quux' +// }, +// books: [ +// { +// title: 'Corge' +// }, +// { +// title: 'Grault' +// } +// ] +// }; +// let user = new Document(null, userSchema); +// user.populate(data); +// user.rollback(); + +// t.deepEqual(user.serialize(), { +// name: 'Bar', +// book: { +// title: 'Baz' +// }, +// books: [ +// { +// title: 'Qux' +// } +// ] +// }); +// }); + +// test('method `isChanged` should return `true` if at least one field has been changed', (t) => { +// let bookSchema = new Schema({ +// fields: { +// title: { +// type: 'String' +// } +// } +// }); +// let userSchema = new Schema({ +// fields: { +// name: { +// type: 'String' +// }, +// book: { +// type: bookSchema +// }, +// books: { +// type: [bookSchema] +// } +// } +// }); + +// let user = new Document(null, userSchema); +// t.is(user.isChanged(), false); +// user.name = 'Foo'; +// t.is(user.$name.isChanged(), true); +// t.is(user.isChanged(), true); +// user.commit(); +// user.book = {title: 'Foo'}; +// t.is(user.$book.isChanged(), true); +// t.is(user.book.isChanged(), true); +// t.is(user.isChanged(), true); +// user.commit(); +// user.book.title = {title: 'Bar'}; +// t.is(user.book.$title.isChanged(), true); +// t.is(user.isChanged(), true); +// user.commit(); +// user.books = [{title: 'Foo'}]; +// t.is(user.$books.isChanged(), true); +// t.is(user.isChanged(), true); +// user.commit(); +// user.books[0].title = [{title: 'Bar'}]; +// t.is(user.books[0].$title.isChanged(), true); +// t.is(user.isChanged(), true); +// }); + +// test('method `isNested` should return `true` if nested fields exist', (t) => { +// let bookSchema = new Schema({ +// fields: { +// title: { +// type: 'String' +// } +// } +// }); +// let schema0 = new Schema({ +// fields: { +// name: { +// type: 'String' +// } +// } +// }); +// let schema1 = new Schema({ +// fields: { +// name: { +// type: 'String' +// }, +// book: { +// type: bookSchema +// } +// } +// }); +// let schema2 = new Schema({ +// fields: { +// name: { +// type: 'String' +// }, +// books: { +// type: [bookSchema] +// } +// } +// }); + +// let doc0 = new Document(null, schema0); +// let doc1 = new Document(null, schema1); +// let doc2 = new Document(null, schema2); + +// t.is(doc0.isNested(), false); +// t.is(doc1.isNested(), true); +// t.is(doc2.isNested(), true); +// }); + +// test('method `equals` should return `true` when the passing object looks the same', (t) => { +// let authorSchema = new Schema({ +// fields: { +// name: { +// type: 'String' +// } +// } +// }); +// let bookSchema = new Schema({ +// fields: { +// title: { +// type: 'String' +// }, +// author: { +// type: authorSchema +// } +// } +// }); +// let userSchema = { +// fields: { +// name: { +// type: 'String', +// defaultValue: 'John' +// }, +// book: { +// type: bookSchema +// }, +// books: { +// type: [bookSchema] +// } +// } +// }; +// let data0 = { +// name: null, +// book: { +// title: 'Foo', +// author: { +// name: 'Bar' +// } +// }, +// books: [ +// { +// title: 'Bar' +// } +// ] +// }; +// let data1 = { +// name: 'Mandy' +// }; +// let user0 = new Document(null, new Schema(userSchema)); +// let user1 = new Document(null, new Schema(userSchema)); +// let user2 = new Document(data0, new Schema(userSchema)); +// let user3 = new Document(data1, new Schema(userSchema)); + +// t.is(user0.equals(user1), true); +// t.is(user0.equals(user2), false); +// t.is(user0.equals(user3), false); +// t.is(user2.equals(user3), false); +// t.is(user0.$name.equals('John'), true); +// t.is(user2.$book.equals({ +// title: 'Foo', +// author: { +// name: 'Bar' +// } +// }), true); +// t.is(user2.$books.equals([ +// { +// title: 'Bar', +// author: null +// } +// ]), true); +// }); + +// test('method `clone` should return an exact copy of the original', (t) => { +// let bookSchema = new Schema({ +// fields: { +// title: { +// type: 'String', +// defaultValue: 100 +// } +// } +// }); +// let userSchema = new Schema({ +// fields: { +// name: { +// type: 'String' +// }, +// book: { +// type: bookSchema +// }, +// books: { +// type: [bookSchema] +// } +// } +// }); +// let data = { +// name: 'John Smith', +// books: [ +// null, +// { +// title: 100 +// } +// ] +// }; + +// let user = new Document(data, userSchema); + +// t.is(user.clone() === user, false); +// t.deepEqual(user.clone(), user); +// }); + +// test('method `validate` should validate all fields and throw an error', async (t) => { +// let bookSchema = new Schema({ +// fields: { +// title: { +// type: 'String', +// validate: [ +// {validator: 'presence', message: 'is required'} +// ] +// }, +// year: { +// type: 'Integer' +// } +// } +// }); +// let userSchema = new Schema({ +// fields: { +// name: { +// type: 'String', +// validate: [ +// {validator: 'presence', message: 'is required'} +// ] +// }, +// newBook: { +// type: bookSchema, +// validate: [ +// {validator: 'presence', message: 'is required'} +// ] +// }, +// newBooks: { +// type: [bookSchema], +// validate: [ +// {validator: 'presence', message: 'is required'} +// ] +// }, +// oldBook: { +// type: bookSchema, +// validate: [ +// {validator: 'presence', message: 'is required'} +// ] +// }, +// oldBooks: { +// type: [bookSchema], +// validate: [ +// {validator: 'presence', message: 'is required'}, +// {validator: 'arrayLength', message: 'is too short', min: 10} +// ] +// }, +// prevBooks: { +// type: [bookSchema] +// } +// } +// }); +// let data = { +// oldBook: {}, +// oldBooks: [null, {}] +// }; +// let user = new Document(data, userSchema); +// let validatorError0 = {validator: 'presence', message: 'is required', code: 422}; +// let validatorError1 = {validator: 'arrayLength', message: 'is too short', code: 422}; + +// // throws an error +// t.throws(user.validate()); +// let error = null; +// try { +// await user.validate(); +// } catch (e) { +// error = e; +// } +// t.is(error.code, 422); +// t.deepEqual(error.paths, [ +// ['name'], +// ['newBook'], +// ['newBooks'], +// ['oldBook', 'title'], +// ['oldBooks'], +// ['oldBooks', 1, 'title'] +// ]); +// // errors are populated +// t.deepEqual(user.$name.errors[0], validatorError0); +// t.deepEqual(user.$newBook.errors[0], validatorError0); +// t.deepEqual(user.$newBooks.errors[0], validatorError0); +// t.deepEqual(user.$oldBook.errors.length, 0); +// t.deepEqual(user.oldBook.$title.errors[0], validatorError0); +// t.deepEqual(user.oldBook.$year.errors.length, 0); +// t.deepEqual(user.$oldBooks.errors[0], validatorError1); +// t.deepEqual(user.oldBooks[0], null); +// t.deepEqual(user.oldBooks[1].$title.errors[0], validatorError0); +// t.deepEqual(user.oldBooks[1].$year.errors.length, 0); +// t.deepEqual(user.$prevBooks.errors.length, 0); +// }); + +// test('methods `isValid` and `hasErrors` should tell if fields are valid', async (t) => { +// let bookSchema = new Schema({ +// fields: { +// title: { +// type: 'String', +// validate: [ +// {validator: 'presence', message: 'is required'} +// ] +// }, +// } +// }); +// let userSchema = new Schema({ +// fields: { +// name: { +// type: 'String', +// validate: [ +// {validator: 'presence', message: 'is required'} +// ] +// }, +// newBook: { +// type: bookSchema, +// validate: [ +// {validator: 'presence', message: 'is required'} +// ] +// }, +// newBooks: { +// type: [bookSchema], +// validate: [ +// {validator: 'presence', message: 'is required'} +// ] +// }, +// oldBook: { +// type: bookSchema, +// validate: [ +// {validator: 'presence', message: 'is required'} +// ] +// }, +// oldBooks: { +// type: [bookSchema], +// validate: [ +// {validator: 'presence', message: 'is required'} +// ] +// } +// } +// }); + +// let data = { +// name: 'Foo', +// newBook: { +// title: 'Bar' +// }, +// newBooks: [ +// null, +// { +// title: 'Baz' +// } +// ], +// oldBook: {}, +// oldBooks: [null, {}] +// }; +// let user = new Document(data, userSchema); +// await user.validate({quiet: true}); + +// t.is(user.$name.isValid(), true); +// t.is(user.$name.hasErrors(), false); +// t.is(user.$newBook.isValid(), true); +// t.is(user.newBook.$title.isValid(), true); +// t.is(user.newBook.$title.hasErrors(), false); +// t.is(user.$newBooks.hasErrors(), false); +// t.is(user.newBooks[1].$title.hasErrors(), false); +// t.is(user.$oldBook.isValid(), false); +// t.is(user.oldBook.$title.isValid(), false); +// t.is(user.$oldBooks.hasErrors(), true); +// t.is(user.oldBooks[1].$title.hasErrors(), true); +// }); + +// test('method `invalidate` should clear errors on all fields', async (t) => { +// let bookSchema = new Schema({ +// fields: { +// title: { +// type: 'String', +// validate: [ +// {validator: 'presence', message: 'is required'} +// ] +// }, +// year: { +// type: 'Integer' +// } +// } +// }); +// let userSchema = new Schema({ +// fields: { +// name: { +// type: 'String', +// validate: [ +// {validator: 'presence', message: 'is required'} +// ] +// }, +// newBook: { +// type: bookSchema, +// validate: [ +// {validator: 'presence', message: 'is required'} +// ] +// }, +// newBooks: { +// type: [bookSchema], +// validate: [ +// {validator: 'presence', message: 'is required'} +// ] +// }, +// oldBook: { +// type: bookSchema, +// validate: [ +// {validator: 'presence', message: 'is required'} +// ] +// }, +// oldBooks: { +// type: [bookSchema], +// validate: [ +// {validator: 'presence', message: 'is required'} +// ] +// }, +// prevBooks: { +// type: [bookSchema] +// } +// } +// }); +// let data = { +// oldBook: {}, +// oldBooks: [null, {}] +// }; +// let user = new Document(data, userSchema); + +// await user.validate({quiet: true}); +// // invalidate is triggered when a field changes +// user.name = 'foo'; +// t.deepEqual(user.$name.errors, []); +// // errors are populated +// user.invalidate(); +// t.deepEqual(user.$newBook.errors, []); +// t.deepEqual(user.$newBooks.errors, []); +// t.deepEqual(user.oldBook.$title.errors, []); +// t.deepEqual(user.oldBooks[0], null); +// t.deepEqual(user.oldBooks[1].$title.errors, []); +// }); + +// test('method `filter` should convert a document into serialized object with only keys that pass the test', (t) => { +// let bookSchema = new Schema({ +// fields: { +// title: { +// type: 'String' +// }, +// author: { +// type: 'String' +// } +// } +// }); +// let userSchema = new Schema({ +// fields: { +// name: { +// type: 'String' +// }, +// book: { +// type: bookSchema +// }, +// books: { +// type: [bookSchema] +// } +// } +// }); +// let data = { +// book: { +// title: 'foo' +// }, +// books: [ +// null, +// { +// title: 'bar' +// } +// ] +// }; +// let user = new Document(data, userSchema); +// let validKeys = ['book', 'books', 'books.1', 'book.title', 'books.1.author']; +// let filtered = user.filter(({path}) => validKeys.indexOf(path.join('.')) !== -1); + +// t.deepEqual(filtered, { +// book: { +// title: 'foo' +// }, +// books: [ +// null, +// { +// author: null +// } +// ] +// }); +// }); + +// test('method `collectErrors` should return an array of field errors', async (t) => { +// let bookSchema = new Schema({ +// fields: { +// title: { +// type: 'String', +// validate: [ +// {validator: 'presence', message: 'is required'} +// ] +// } +// } +// }); +// let userSchema = new Schema({ +// fields: { +// name: { +// type: 'String', +// validate: [ +// {validator: 'presence', message: 'is required'} +// ] +// }, +// age: { +// type: 'Integer', +// validate: [ +// {validator: 'presence', message: 'is required'} +// ] +// }, +// newBook: { +// type: bookSchema, +// validate: [ +// {validator: 'presence', message: 'is required'} +// ] +// }, +// newBooks: { +// type: [bookSchema], +// validate: [ +// {validator: 'presence', message: 'is required'} +// ] +// } +// } +// }); +// let data = {age: 30}; +// let user = new Document(data, userSchema); +// await user.validate({quiet: true}); + +// t.deepEqual(user.collectErrors(), [ +// { +// path: ['name'], +// errors: [ +// {validator: 'presence', message: 'is required', code: 422} +// ] +// }, +// { +// path: ['newBook'], +// errors: [ +// {validator: 'presence', message: 'is required', code: 422} +// ] +// }, +// { +// path: ['newBooks'], +// errors: [ +// {validator: 'presence', message: 'is required', code: 422} +// ] +// } +// ]); +// }); + +// test('method `applyErrors` should set field `errors` property', async (t) => { +// let bookSchema = new Schema({ +// fields: { +// title: { +// type: 'String' +// } +// } +// }); +// let userSchema = new Schema({ +// fields: { +// name: { +// type: 'String' +// }, +// newBook: { +// type: bookSchema +// }, +// newBooks: { +// type: [bookSchema] +// } +// } +// }); +// let data = { +// newBook: {}, +// newBooks: [{}, {}] +// }; +// let user = new Document(data, userSchema); +// let validatorError = {validator: 'presence', message: 'is required', code: 422}; + +// user.applyErrors([ +// {path: ['name'], errors: [validatorError]}, +// {path: ['newBook', 'title'], errors: [validatorError]}, +// {path: ['newBooks', 1, 'title'], errors: [validatorError]} +// ]); + +// t.deepEqual(user.$name.errors, [validatorError]); +// t.deepEqual(user.newBook.$title.errors, [validatorError]); +// t.deepEqual(user.newBooks[0].$title.errors, []); +// t.deepEqual(user.newBooks[1].$title.errors, [validatorError]); +// }); + +// test('method `collect` should return an array of results', (t) => { +// let bookSchema = new Schema({ +// fields: { +// title: { +// type: 'String' +// } +// } +// }); +// let userSchema = new Schema({ +// fields: { +// name: { +// type: 'String' +// }, +// book: { +// type: bookSchema +// } +// } +// }); +// let data = { +// book: { +// title: 'foo' +// } +// }; +// let user = new Document(data, userSchema); +// let results = user.collect(({path, field}) => path); + +// t.deepEqual(results, [ +// ['name'], +// ['book'], +// ['book', 'title'] +// ]); +// }); + +// test('method `collect` should return an array of results', (t) => { +// let bookSchema = new Schema({ +// fields: { +// title: { +// type: 'String' +// } +// } +// }); +// let userSchema = new Schema({ +// fields: { +// name: { +// type: 'String' +// }, +// book: { +// type: bookSchema +// } +// } +// }); +// let data = { +// book: { +// title: 'foo' +// } +// }; +// let user = new Document(data, userSchema); +// let count = user.scroll(({path, field}) => {}); + +// t.deepEqual(count, 3); +// }); diff --git a/tests/fields.js b/tests/fields.js new file mode 100644 index 0000000..a8818bc --- /dev/null +++ b/tests/fields.js @@ -0,0 +1,159 @@ +import test from 'ava'; +import {Field} from '../dist'; +import {Validator} from 'validatable'; + +test('nullifies a value by default', (t) => { + let f = new Field(); + t.is(f.value, null); +}); + +test('provides getter and setter for the current value', (t) => { + let f = new Field(); + f.value = 'foo'; + t.is(f.value, 'foo'); +}); + +test('supports custom getter and setter for the current value', (t) => { + let f0 = new Field({get (v) { return `${v}-${this.constructor.name}` }}); + let f1 = new Field({set (v) { return `${v}-${this.constructor.name}` }}); + f0.value = 'foo'; + f1.value = 'foo'; + t.is(f0.value, 'foo-Field'); + t.is(f1.value, 'foo-Field'); +}); + +test('can automatically cast a value to a specific data type', (t) => { + let f = new Field({type: ['String']}); + f.value = 100; + t.deepEqual(f.value, ['100']); + // TODO for custom types !!!!! +}); + +test('can have a default value', (t) => { + let f0 = new Field({defaultValue: 'foo'}); + let f1 = new Field({defaultValue () { return this.constructor.name } }); + let f2 = new Field({defaultValue () { return Math.random() }}); + t.is(f0.value, 'foo'); + t.is(f1.value, 'Field'); + t.is(f0.defaultValue, 'foo'); + t.is(f1.defaultValue, 'Field'); + t.is(f2.defaultValue != f2.defaultValue, true); // dynamic values +}); + +test('can have a fake value', (t) => { + let f0 = new Field({fakeValue: 'foo'}); + let f1 = new Field({fakeValue () { return this.constructor.name }}); + let f2 = new Field({fakeValue () { return Math.random() }}); + t.is(f0.fakeValue, 'foo'); + t.is(f1.fakeValue, 'Field'); + t.is(f2.fakeValue != f2.fakeValue, true); // dynamic values +}); + +test('method `reset()` sets value to the default value', (t) => { + let f0 = new Field({defaultValue: 'foo'}); + let f1 = new Field({defaultValue () { return Math.random() }}); + f0.value = 'bar'; + f0.reset(); + t.is(f0.value, 'foo'); + f1.reset(); + t.is(f1.value != f1.value, true); // dynamic values +}); + +test('method `fake()` sets value to the fake value', (t) => { + let f0 = new Field({fakeValue: 'foo'}); + let f1 = new Field({fakeValue () { return Math.random() }}); + f0.value = 'bar'; + f0.fake(); + t.is(f0.value, 'foo'); + f1.value = 'foo'; + f1.fake(); + t.is(f1.value != f1.value, true); // dynamic values +}); + +test('method `clear()` sets value to `null`', (t) => { + let f = new Field(); + f.value = 'foo'; + f.clear(); + t.is(f.value, null); +}); + +test('methods `commit()` and `rollback()` manage committed value state', (t) => { + let f = new Field(); + f.value = 'foo'; + t.is(f.initialValue, null); + f.commit(); + t.is(f.initialValue, 'foo'); + f.value = 'bar'; + f.rollback(); + t.is(f.value, 'foo'); +}); + +test('method `equals()` returns `true` when the provided `data` equals to the current value', (t) => { + let f0 = new Field(); + let f1 = new Field(); + f0.value = 'foo'; + f1.value = 'foo'; + t.is(f0.equals(f1), true); + t.is(f0.equals(f1.value), true); +}); + +test('method `isChanged()` returns `true` if the value have been changed', (t) => { + let f = new Field(); + t.is(f.isChanged(), false); + f.value = 'foo'; + t.is(f.isChanged(), true); +}); + +test('method `isNested()` returns `true` if the field type is un instance of a Document', (t) => { + let f = new Field(); + t.is(f.isNested(), false); + f.value = 'foo'; + t.is(f.isNested(), false); + // TODO !!!!! +}); + +test('method `validate()` validates the value and populates the `errors` property', async (t) => { + let f = new Field({ + validate: [ + {validator: 'presence', message: 'foo'}, + {validator: 'coolness', message: 'is not cool'} + ] + }, { + validators: { + coolness () { return this.value === 'cool' } // custom validators + } + }); + await f.validate(); + t.deepEqual(f.errors, [ + {validator: 'presence', message: 'foo', code: 422}, + {validator: 'coolness', message: 'is not cool', code: 422} + ]); +}); + +test('method `invalidate()` clears the `errors` property', (t) => { + let f = new Field(); + f.errors.push({message: 'foo'}); + f.invalidate(); + t.deepEqual(f.errors, []); +}); + +test('invalidates when the value changes', (t) => { + let f = new Field(); + f.errors.push({message: 'foo'}); + f.value = 'foo'; + t.deepEqual(f.errors, []); +}); + +test('method `hasErrors()` returns `true` when errors exist', (t) => { + let f = new Field(); + t.is(f.hasErrors(), false); + f.errors.push({message: 'foo'}); + t.is(f.hasErrors(), true); +}); + +test('method `isValid()` returns `true` when no errors exist', (t) => { + let f = new Field(); + t.is(f.isValid(), true); + f.errors.push({message: 'foo'}); + t.is(f.isValid(), false); +}); diff --git a/tests/index.js b/tests/index.js index cfaf8d5..8217a3a 100644 --- a/tests/index.js +++ b/tests/index.js @@ -2,7 +2,6 @@ import test from 'ava'; import * as objectschema from '../dist'; test('exposed content', (t) => { - t.is(!!objectschema.Schema, true); t.is(!!objectschema.Document, true); t.is(!!objectschema.Field, true); }); diff --git a/tests/schemas.js b/tests/schemas.js deleted file mode 100644 index 046d7cd..0000000 --- a/tests/schemas.js +++ /dev/null @@ -1,78 +0,0 @@ -import test from 'ava'; -import {Schema} from '../dist/index'; - -test('can be extended through mixins', async (t) => { - let animalSchema = new Schema({ - fields: () => ({ - kind: { - type: 'String' - }, - relatives: { - type: [animalSchema] - } - }), - strict: true, - validators: { - foo: 'foo' - }, - types: { - foo: 'foo' - }, - firstErrorOnly: true - }); - let dogSchema = new Schema({ - mixins: [ - animalSchema - ], - fields: () => ({ - name: { - type: 'String' - } - }), - strict: false, - validators: { - bar: 'bar' - }, - types: { - bar: 'bar' - }, - firstErrorOnly: false - }); - let catSchema = new Schema({ - mixins: [ - dogSchema - ], - fields: () => ({ - dislikes: { - type: [dogSchema] - } - }), - validators: { - baz: 'baz' - }, - types: { - baz: 'baz' - } - }); - - let keys = []; - // fields - keys = Object.keys(catSchema.fields) // cats - t.deepEqual(keys, ['kind', 'relatives', 'name', 'dislikes']); - keys = Object.keys(catSchema.fields.dislikes.type[0].fields) - t.deepEqual(keys, ['kind', 'relatives', 'name']); // dogs - keys = Object.keys(catSchema.fields.dislikes.type[0].fields.relatives.type[0].fields) - t.deepEqual(keys, ['kind', 'relatives']); // animals - // strict - t.is(dogSchema.strict, false); - t.is(catSchema.strict, false); - // validators - keys = Object.keys(catSchema.validators) - t.deepEqual(keys, ['foo', 'bar', 'baz']); - // types - keys = Object.keys(catSchema.types) - t.deepEqual(keys, ['foo', 'bar', 'baz']); - // firstErrorOnly - t.is(dogSchema.firstErrorOnly, false); - t.is(catSchema.firstErrorOnly, false); -}); diff --git a/tests/schemas.js- b/tests/schemas.js- new file mode 100644 index 0000000..5f69a75 --- /dev/null +++ b/tests/schemas.js- @@ -0,0 +1,78 @@ +// import test from 'ava'; +// import {Schema} from '../dist/index'; + +// test('can be extended through mixins', async (t) => { +// let animalSchema = new Schema({ +// fields: () => ({ +// kind: { +// type: 'String' +// }, +// relatives: { +// type: [animalSchema] +// } +// }), +// strict: true, +// validators: { +// foo: 'foo' +// }, +// types: { +// foo: 'foo' +// }, +// firstErrorOnly: true +// }); +// let dogSchema = new Schema({ +// mixins: [ +// animalSchema +// ], +// fields: () => ({ +// name: { +// type: 'String' +// } +// }), +// strict: false, +// validators: { +// bar: 'bar' +// }, +// types: { +// bar: 'bar' +// }, +// firstErrorOnly: false +// }); +// let catSchema = new Schema({ +// mixins: [ +// dogSchema +// ], +// fields: () => ({ +// dislikes: { +// type: [dogSchema] +// } +// }), +// validators: { +// baz: 'baz' +// }, +// types: { +// baz: 'baz' +// } +// }); + +// let keys = []; +// // fields +// keys = Object.keys(catSchema.fields) // cats +// t.deepEqual(keys, ['kind', 'relatives', 'name', 'dislikes']); +// keys = Object.keys(catSchema.fields.dislikes.type[0].fields) +// t.deepEqual(keys, ['kind', 'relatives', 'name']); // dogs +// keys = Object.keys(catSchema.fields.dislikes.type[0].fields.relatives.type[0].fields) +// t.deepEqual(keys, ['kind', 'relatives']); // animals +// // strict +// t.is(dogSchema.strict, false); +// t.is(catSchema.strict, false); +// // validators +// keys = Object.keys(catSchema.validators) +// t.deepEqual(keys, ['foo', 'bar', 'baz']); +// // types +// keys = Object.keys(catSchema.types) +// t.deepEqual(keys, ['foo', 'bar', 'baz']); +// // firstErrorOnly +// t.is(dogSchema.firstErrorOnly, false); +// t.is(catSchema.firstErrorOnly, false); +// }); diff --git a/tsconfig.json b/tsconfig.json index 9f2313d..2ef7861 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,11 +1,10 @@ { "compilerOptions": { "module": "commonjs", - "target": "es3", + "target": "es6", "noImplicitAny": false, - "sourceMap": false, + "sourceMap": true, "outDir": "dist", - "declaration": true, - "lib": ["es2015.promise", "es5"] + "declaration": true } } From 626288357a3d3d6d5379a060ff8a71945ca712e5 Mon Sep 17 00:00:00 2001 From: xpeper Date: Fri, 23 Dec 2016 23:34:51 +0100 Subject: [PATCH 127/219] document fields, populate, parent, root, path, flatten and serialize --- dist/documents.d.ts | 23 +++- dist/documents.js | 228 ++++++++++++++-------------------- dist/documents.js.map | 2 +- dist/fields.d.ts | 4 + dist/fields.js | 46 ++++--- dist/fields.js.map | 2 +- package.json | 2 +- src/documents.ts | 276 +++++++++++++++++++++--------------------- src/fields.ts | 67 ++++++---- tests/documents.js | 238 +++++++++++++++++++++++++++++++++--- tests/fields.js | 28 +++-- 11 files changed, 578 insertions(+), 338 deletions(-) diff --git a/dist/documents.d.ts b/dist/documents.d.ts index 1e6da9b..4ea7830 100644 --- a/dist/documents.d.ts +++ b/dist/documents.d.ts @@ -1,6 +1,23 @@ -import { FieldRecipe } from './fields'; +import { Field, FieldRecipe } from './fields'; +export interface FieldRef { + path: string[]; + field: Field; +} +export interface DocumentOptions { + parent?: Document; +} export declare class Document { - private _fields; - constructor(); + protected _fields: { + [name: string]: Field; + }; + readonly options: DocumentOptions; + readonly parent: Document; + constructor(data?: any, options?: DocumentOptions); + _getRootDocument(): Document; defineField(name: string, recipe?: FieldRecipe): void; + getPath(...keys: any[]): Field; + hasPath(...keys: any[]): boolean; + populate(data?: {}): this; + flatten(prefix?: string[]): FieldRef[]; + serialize(): {}; } diff --git a/dist/documents.js b/dist/documents.js index 0ad7df2..8cc9fce 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -1,5 +1,7 @@ "use strict"; +const typeable_1 = require("typeable"); const fields_1 = require("./fields"); +const utils_1 = require("./utils"); /* * The core schema object class. */ @@ -9,26 +11,43 @@ class Document { /* * Class constructor. */ - constructor() { - this._fields = {}; // - Object.defineProperty(null, '_fields', { + constructor(data, options) { + Object.defineProperty(this, 'options', { + value: Object.freeze(options || {}) + }); + Object.defineProperty(this, 'parent', { + value: this.options.parent || null + }); + Object.defineProperty(this, 'root', { + get: () => this._getRootDocument() + }); + Object.defineProperty(this, '_fields', { value: {}, writable: true }); - // Object.defineProperty(this, '_types', { // custom types - // value: {}, - // enumerable: false - // }); - // Object.defineProperty(this, '_validators', { // custom validators - // value: {}, - // enumerable: false - // }); + this.populate(data); + } + /* + * Loops up on the tree and returns the first document in the tree. + */ + _getRootDocument() { + let root = this; + do { + if (root.parent) { + root = root.parent; + } + else { + return root; + } + } while (true); } /* * Defines a new field property. */ defineField(name, recipe) { - let field = new fields_1.Field(null, recipe); + let field = new fields_1.Field(recipe, { + owner: this + }); Object.defineProperty(this, name, { get: () => field.value, set: (v) => field.value = v, @@ -37,6 +56,68 @@ class Document { }); this._fields[name] = field; } + /* + * Returns a value at path. + */ + getPath(...keys) { + keys = [].concat(typeable_1.isArray(keys[0]) ? keys[0] : keys); + let lastKey = keys.pop(); + if (keys.length === 0) { + return this._fields[lastKey]; + } + let field = keys.reduce((a, c) => (a[c] || {}), this); + return field instanceof Document ? field.getPath(lastKey) : undefined; + } + /* + * Returns `true` if the field exists. + */ + hasPath(...keys) { + return !typeable_1.isUndefined(this.getPath(...keys)); + } + /* + * Deeply applies data to the fields. + */ + populate(data = {}) { + data = utils_1.serialize(data); + Object.keys(data).forEach((name) => { + if (this._fields[name]) { + this[name] = data[name]; + } + }); + return this; + } + /* + * Scrolls through the document and returns an array of fields. + */ + flatten(prefix = []) { + let fields = []; + Object.keys(this._fields).forEach((name) => { + let field = this._fields[name]; + let type = field.type; + let path = (prefix || []).concat(name); + let value = field.value; + fields.push({ path, field }); + if (typeable_1.isPresent(value) && typeable_1.isPresent(type)) { + if (type.prototype instanceof Document) { + fields = fields.concat(value.flatten(path)); + } + else if (typeable_1.isArray(type) && type[0].prototype instanceof Document) { + fields = fields.concat(value + .map((f, i) => (f ? f.flatten(path.concat([i])) : null)) + .filter((f) => typeable_1.isArray(f)) + .reduce((a, b) => a.concat(b))); + } + } + }); + return fields; + } + /* + * Converts this class into serialized data object. + */ + serialize() { + console.log(Object.keys(this)); + return utils_1.serialize(this); + } } exports.Document = Document; // import {isPresent, isObject, isArray} from 'typeable'; @@ -45,14 +126,6 @@ exports.Document = Document; // import {Field} from './fields'; // import {serialize, isEqual, merge} from './utils'; // -// /* -// * Flattened field reference type definition. -// */ -// -// export interface FieldRef { -// path: string[]; -// field: Field; -// } // // /* // * Field error type definition. @@ -92,21 +165,6 @@ exports.Document = Document; // this._populateFields(data); // } // -// /* -// * Loops up on the tree and returns the first document in the tree. -// */ -// -// _getRootDocument () { -// let root: any = this; -// do { -// if (root.$parent) { -// root = root.$parent; -// } -// else { -// return root; -// } -// } while (true); -// } // // /* // * Creates a new document instance. This method is especially useful when @@ -170,108 +228,8 @@ exports.Document = Document; // }); // } // -// /* -// * Returns a value at path. -// */ -// -// getPath (...keys): Field { -// if (isArray(keys[0])) { -// keys = keys[0]; -// } -// -// return keys.reduce((a, b) => (a || {})[b], this); -// } // -// /* -// * Returns `true` if field at path exists. -// */ // -// hasPath (...keys): boolean { -// return this.getPath(...keys) !== undefined; -// } -// -// /* -// * Scrolls through all set fields and returns an array of results. -// */ -// -// flatten (prefix: string[] = []): FieldRef[] { -// let fields = []; -// -// for (let name in this.$schema.fields) { -// let {type} = this.$schema.fields[name]; -// let field = this[`$${name}`]; -// let path = (prefix || []).concat(name); -// let value = field.value; -// -// fields.push({path, field}); -// -// if (!isPresent(value)) continue; -// -// if (type instanceof Schema) { -// fields = fields.concat( -// value.flatten(path) -// ); -// } -// else if (isArray(type) && type[0] instanceof Schema) { -// fields = fields.concat( -// value -// .map((f, i) => (f ? f.flatten(path.concat([i])) : null)) -// .filter((f) => isArray(f)) -// .reduce((a, b) => a.concat(b)) -// ); -// } -// } -// -// return fields; -// } -// -// /* -// * Sets field values from the provided by data object. -// */ -// -// populate (data = {}): this { -// return this._populateFields(data); -// } -// -// /* -// * Sets field values from the provided by data object. -// */ -// -// _populateFields (data = {}) { -// data = serialize(data); -// -// for (let name in data) { -// this._populateField(name, data[name]); -// } -// -// return this; -// } -// -// /* -// * Sets a value of a field by name. -// */ -// -// _populateField (name, value) { -// if (!this.$schema.strict) { -// this[name] = value; -// } -// else { -// let names = Object.keys(this.$schema.fields); -// let exists = names.indexOf(name) > -1; -// -// if (exists) { -// this[name] = value; -// } -// } -// } -// -// /* -// * Converts this class into serialized data object. -// */ -// -// serialize (): {} { -// return serialize(this); -// } // // /* // * Converts this class into serialized data object having only the keys that diff --git a/dist/documents.js.map b/dist/documents.js.map index 13cdec2..de4333b 100644 --- a/dist/documents.js.map +++ b/dist/documents.js.map @@ -1 +1 @@ -{"version":3,"file":"documents.js","sourceRoot":"","sources":["../src/documents.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"documents.js","sourceRoot":"","sources":["../src/documents.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/fields.d.ts b/dist/fields.d.ts index 40668a6..2abb338 100644 --- a/dist/fields.d.ts +++ b/dist/fields.d.ts @@ -1,5 +1,7 @@ import { Validator } from 'validatable'; +import { Document } from './documents'; export interface FieldOptions { + owner?: Document; validators?: { [name: string]: () => boolean | Promise; }; @@ -31,6 +33,8 @@ export declare class Field { readonly defaultValue: any; readonly fakeValue: any; readonly initialValue: any; + readonly owner: Document; + readonly type: any; value: any; errors: FieldError[]; constructor(recipe?: FieldRecipe, options?: FieldOptions); diff --git a/dist/fields.js b/dist/fields.js index 630a85b..67ecbc4 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -10,6 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge const typeable_1 = require("typeable"); const utils_1 = require("./utils"); const validatable_1 = require("validatable"); +const documents_1 = require("./documents"); /* * Field class. */ @@ -17,10 +18,14 @@ class Field { /* * Class constructor. */ - constructor(recipe = {}, options = {}) { - this.recipe = Object.freeze(recipe); - this.options = Object.freeze(options); + constructor(recipe, options) { this.errors = []; + Object.defineProperty(this, 'recipe', { + value: Object.freeze(recipe || {}) + }); + Object.defineProperty(this, 'options', { + value: Object.freeze(options || {}) + }); Object.defineProperty(this, '_data', { value: this._getDefaultValue.bind(this), writable: true @@ -49,6 +54,14 @@ class Field { get: () => this._initialData, enumerable: true }); + Object.defineProperty(this, 'type', { + get: () => this.recipe.type || null, + enumerable: true + }); + Object.defineProperty(this, 'owner', { + get: () => this.options.owner || null, + enumerable: true + }); } /* * Returns a new instance of validator. @@ -70,9 +83,7 @@ class Field { if (typeable_1.isFunction(get)) { data = get.call(this, data); } - let { type } = this.recipe; - data = this._cast(data, type); - return data; + return this._cast(data, this.type); } /* * Sets current field value. @@ -89,10 +100,16 @@ class Field { * Converts a `value` into specified `type`. */ _cast(data, type) { - if (typeable_1.isUndefined(type)) { - return data; + let converter = type; + if (typeable_1.isPresent(data)) { + let Klass = (typeable_1.isArray(type) ? type[0] : type); + if (Klass && Klass.prototype instanceof documents_1.Document) { + let options = utils_1.merge({}, this.owner.options, { parent: this.owner }); + let toDocument = (d) => new Klass(d, options); + converter = typeable_1.isArray(type) ? [toDocument] : toDocument; + } } - return typeable_1.cast(data, type); + return typeable_1.cast(data, converter); } /* * Returns the default value of a field. @@ -175,14 +192,13 @@ class Field { * Returns `true` if the data is a Document. */ isNested() { - let { type } = this.recipe; + let type = this.type; if (typeable_1.isArray(type)) type = type[0]; - // TODO !!!!! - // if (type instanceof this.constructor.owner) { - // return true; - // } - return false; + return (typeable_1.isPresent(type) + && typeable_1.isPresent(type.prototype) + && (type.prototype instanceof documents_1.Document + || type.prototype.constructor === documents_1.Document)); } /* * Validates the field by populating the `errors` property. diff --git a/dist/fields.js.map b/dist/fields.js.map index e4a044b..94028ab 100644 --- a/dist/fields.js.map +++ b/dist/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index fe873ae..2e0542b 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "dependencies": { "lodash.isequal": "^4.4.0", "lodash.merge": "^4.6.0", - "typeable": "^0.21.0", + "typeable": "2.0.0", "validatable": "^0.22.0" } } diff --git a/src/documents.ts b/src/documents.ts index 94a446c..7bc82af 100644 --- a/src/documents.ts +++ b/src/documents.ts @@ -1,11 +1,33 @@ +import {isArray, isUndefined, isPresent} from 'typeable'; import {Field, FieldRecipe} from './fields'; +import {serialize} from './utils'; + +/* +* Flattened field reference type definition. +*/ + +export interface FieldRef { + path: string[]; + field: Field; +} + +/* +* Document options interface. +*/ + +export interface DocumentOptions { + parent?: Document; +} /* * The core schema object class. */ export class Document { - private _fields: {[name: string]: Field}= {}; // + protected _fields: {[name: string]: Field}; + readonly options: DocumentOptions; + readonly parent: Document; + // private _types: {[key: string]: () => any} = {}; // custom types for typeable.js // private _validators: {[key: string]: () => boolean | Promise} = {}; // custom validations for validatable.js @@ -13,19 +35,39 @@ export class Document { * Class constructor. */ - constructor () { - Object.defineProperty(null, '_fields', { // document fields + constructor (data?, options?: DocumentOptions) { + Object.defineProperty(this, 'options', { + value: Object.freeze(options || {}) + }); + Object.defineProperty(this, 'parent', { + value: this.options.parent || null + }); + Object.defineProperty(this, 'root', { + get: () => this._getRootDocument() + }); + + Object.defineProperty(this, '_fields', { value: {}, writable: true }); - // Object.defineProperty(this, '_types', { // custom types - // value: {}, - // enumerable: false - // }); - // Object.defineProperty(this, '_validators', { // custom validators - // value: {}, - // enumerable: false - // }); + + this.populate(data); + } + + /* + * Loops up on the tree and returns the first document in the tree. + */ + + _getRootDocument () { + let root: Document = this; + do { + if (root.parent) { + root = root.parent; + } + else { + return root; + } + } while (true); } /* @@ -33,7 +75,9 @@ export class Document { */ defineField (name: string, recipe?: FieldRecipe) { - let field = new Field(null, recipe); + let field = new Field(recipe, { + owner: this + }); Object.defineProperty(this, name, { get: () => field.value, @@ -45,6 +89,91 @@ export class Document { this._fields[name] = field; } + /* + * Returns a value at path. + */ + + getPath (...keys): Field { + keys = [].concat(isArray(keys[0]) ? keys[0] : keys); + + let lastKey = keys.pop(); + if (keys.length === 0) { + return this._fields[lastKey]; + } + + let field = keys.reduce((a, c) => (a[c] || {}), this); + return field instanceof Document ? field.getPath(lastKey) : undefined; + } + + /* + * Returns `true` if the field exists. + */ + + hasPath (...keys): boolean { + return !isUndefined(this.getPath(...keys)); + } + + /* + * Deeply applies data to the fields. + */ + + populate (data = {}): this { + data = serialize(data); + + Object.keys(data).forEach((name) => { + if (this._fields[name]) { + this[name] = data[name]; + } + }); + + return this; + } + + /* + * Scrolls through the document and returns an array of fields. + */ + + flatten (prefix: string[] = []): FieldRef[] { + let fields = []; + + Object.keys(this._fields).forEach((name) => { + let field = this._fields[name]; + let type = field.type; + let path = (prefix || []).concat(name); + let value = field.value; + + fields.push({path, field}); + + if (isPresent(value) && isPresent(type)) { + if (type.prototype instanceof Document) { + fields = fields.concat( + value.flatten(path) + ); + } + else if (isArray(type) && type[0].prototype instanceof Document) { + fields = fields.concat( + value + .map((f, i) => (f ? f.flatten(path.concat([i])) : null)) + .filter((f) => isArray(f)) + .reduce((a, b) => a.concat(b)) + ); + } + } + }); + + return fields; + } + + /* + * Converts this class into serialized data object. + */ + + serialize (): {} { + console.log(Object.keys(this)); + + return serialize(this); + } + } @@ -60,14 +189,6 @@ export class Document { // import {Field} from './fields'; // import {serialize, isEqual, merge} from './utils'; // -// /* -// * Flattened field reference type definition. -// */ -// -// export interface FieldRef { -// path: string[]; -// field: Field; -// } // // /* // * Field error type definition. @@ -107,21 +228,6 @@ export class Document { // this._populateFields(data); // } // -// /* -// * Loops up on the tree and returns the first document in the tree. -// */ -// -// _getRootDocument () { -// let root: any = this; -// do { -// if (root.$parent) { -// root = root.$parent; -// } -// else { -// return root; -// } -// } while (true); -// } // // /* // * Creates a new document instance. This method is especially useful when @@ -185,108 +291,8 @@ export class Document { // }); // } // -// /* -// * Returns a value at path. -// */ -// -// getPath (...keys): Field { -// if (isArray(keys[0])) { -// keys = keys[0]; -// } -// -// return keys.reduce((a, b) => (a || {})[b], this); -// } -// -// /* -// * Returns `true` if field at path exists. -// */ -// -// hasPath (...keys): boolean { -// return this.getPath(...keys) !== undefined; -// } -// -// /* -// * Scrolls through all set fields and returns an array of results. -// */ -// -// flatten (prefix: string[] = []): FieldRef[] { -// let fields = []; -// -// for (let name in this.$schema.fields) { -// let {type} = this.$schema.fields[name]; -// let field = this[`$${name}`]; -// let path = (prefix || []).concat(name); -// let value = field.value; -// -// fields.push({path, field}); -// -// if (!isPresent(value)) continue; -// -// if (type instanceof Schema) { -// fields = fields.concat( -// value.flatten(path) -// ); -// } -// else if (isArray(type) && type[0] instanceof Schema) { -// fields = fields.concat( -// value -// .map((f, i) => (f ? f.flatten(path.concat([i])) : null)) -// .filter((f) => isArray(f)) -// .reduce((a, b) => a.concat(b)) -// ); -// } -// } -// -// return fields; -// } -// -// /* -// * Sets field values from the provided by data object. -// */ // -// populate (data = {}): this { -// return this._populateFields(data); -// } // -// /* -// * Sets field values from the provided by data object. -// */ -// -// _populateFields (data = {}) { -// data = serialize(data); -// -// for (let name in data) { -// this._populateField(name, data[name]); -// } -// -// return this; -// } -// -// /* -// * Sets a value of a field by name. -// */ -// -// _populateField (name, value) { -// if (!this.$schema.strict) { -// this[name] = value; -// } -// else { -// let names = Object.keys(this.$schema.fields); -// let exists = names.indexOf(name) > -1; -// -// if (exists) { -// this[name] = value; -// } -// } -// } -// -// /* -// * Converts this class into serialized data object. -// */ -// -// serialize (): {} { -// return serialize(this); -// } // // /* // * Converts this class into serialized data object having only the keys that diff --git a/src/fields.ts b/src/fields.ts index 1778c65..ab113a2 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -1,13 +1,14 @@ -import {isFunction, isUndefined, isArray, cast} from 'typeable'; -import {serialize, isEqual} from './utils'; +import {isFunction, isUndefined, isPresent, isArray, cast} from 'typeable'; +import {serialize, isEqual, merge} from './utils'; import {Validator, ValidatorRecipe} from 'validatable'; +import {Document} from './documents'; /* * Field context definition interface. */ export interface FieldOptions { - // owner: any; + owner?: Document; validators?: {[name: string]: () => boolean | Promise}; firstErrorOnly?: boolean; } @@ -41,7 +42,7 @@ export interface FieldRecipe { export interface FieldError { message: string; - [key: string]: any; + [key: string]: any; } /* @@ -57,6 +58,8 @@ export class Field { readonly defaultValue: any; readonly fakeValue: any; readonly initialValue: any; + readonly owner: Document; + readonly type: any; public value: any; public errors: FieldError[]; @@ -64,11 +67,16 @@ export class Field { * Class constructor. */ - constructor (recipe: FieldRecipe = {}, options: FieldOptions = {}) { - this.recipe = Object.freeze(recipe); - this.options = Object.freeze(options); + constructor (recipe?: FieldRecipe, options?: FieldOptions) { this.errors = []; + Object.defineProperty(this, 'recipe', { + value: Object.freeze(recipe || {}) + }); + Object.defineProperty(this, 'options', { + value: Object.freeze(options || {}) + }); + Object.defineProperty(this, '_data', { // current value value: this._getDefaultValue.bind(this), writable: true @@ -98,6 +106,15 @@ export class Field { get: () => this._initialData, enumerable: true }); + + Object.defineProperty(this, 'type', { + get: () => this.recipe.type || null, + enumerable: true + }); + Object.defineProperty(this, 'owner', { + get: () => this.options.owner || null, + enumerable: true + }); } /* @@ -126,10 +143,7 @@ export class Field { data = get.call(this, data); } - let {type} = this.recipe; - data = this._cast(data, type); - - return data; + return this._cast(data, this.type); } /* @@ -152,11 +166,19 @@ export class Field { */ _cast (data, type) { - if (isUndefined(type)) { - return data; + let converter = type; + + if (isPresent(data)) { // cast to Document + let Klass = (isArray(type) ? type[0] : type); + if (Klass && Klass.prototype instanceof Document) { + let options = merge({}, this.owner.options, {parent: this.owner}); + let toDocument = (d) => new Klass(d, options); + converter = isArray(type) ? [toDocument] : toDocument; + } } - return cast(data, type); - } + + return cast(data, converter); + } /* * Returns the default value of a field. @@ -271,14 +293,17 @@ export class Field { */ isNested (): boolean { - let {type} = this.recipe; + let type = this.type; if (isArray(type)) type = type[0]; - // TODO !!!!! - // if (type instanceof this.constructor.owner) { - // return true; - // } - return false; + return ( + isPresent(type) + && isPresent(type.prototype) + && ( + type.prototype instanceof Document + || type.prototype.constructor === Document + ) + ); } /* diff --git a/tests/documents.js b/tests/documents.js index 215b07a..4f78e4c 100644 --- a/tests/documents.js +++ b/tests/documents.js @@ -1,42 +1,248 @@ import test from 'ava'; import {Document, Field} from '../dist'; -test('method `defineField` should define an enumerable property', (t) => { +test('method `defineField` initializes nullified enumerable property', (t) => { let user = new class User extends Document { constructor () { super(); this.defineField('name'); } } - let descriptor = Object.getOwnPropertyDescriptor(user, 'name'); - t.is(typeof descriptor.get === 'function', true); - t.is(typeof descriptor.set === 'function', true); + t.is(typeof descriptor.get, 'function'); + t.is(typeof descriptor.set, 'function'); t.is(descriptor.enumerable, true); t.is(descriptor.configurable, true); - t.is(user.name, null); }); +test('method `populate` deeply populates fields', (t) => { + class Book extends Document { + constructor (data, options) { + super(data, options); + this.defineField('title', {type: 'String'}); + this.populate(data); + } + } + class User extends Document { + constructor (data, options) { + super(data, options); + this.defineField('name', {type: 'String'}); + this.defineField('book', {type: Book}); + this.defineField('books', {type: [Book]}); + this.populate(data); + } + } + let user = new User({ + name: 100, + book: { + title: 200 + }, + books: [ + undefined, + { + title: 300 + } + ] + }); + t.is(user.name, '100'); + t.is(user.book.title, '200'); + t.is(user.books[0], null); + t.is(user.books[1].title, '300'); +}); +test('property `parent` holds an instance of a parent document', (t) => { + class Book extends Document { + constructor (data, options) { + super(data, options); + this.defineField('title', {type: 'String'}); + this.populate(data); + } + } + class User extends Document { + constructor (data, options) { + super(data, options); + this.defineField('name', {type: 'String'}); + this.defineField('book', {type: Book}); + this.defineField('books', {type: [Book]}); + this.populate(data); + } + } + let user = new User({ + book: { + title: 200 + }, + books: [ + undefined, + { + title: 300 + } + ] + }); + t.is(user.parent, null); + t.is(user.book.parent, user); + t.is(user.books[1].parent, user); +}); +test('property `root` return the first document in a tree of nested documents', (t) => { + class Book extends Document { + constructor (data, options) { + super(data, options); + this.defineField('title'); + this.populate(data); + } + } + class User extends Document { + constructor (data, options) { + super(data, options); + this.defineField('book', {type: Book}); + this.populate(data); + } + } + let user = new User({ + book: { + title: 200 + } + }); + t.is(user.root, user); + t.is(user.book.root, user); +}); +test('method `getPath` returns an instance of a field at path', (t) => { + class Book extends Document { + constructor (data, options) { + super(data, options); + this.defineField('title', {type: 'String'}); + this.populate(data); + } + } + class User extends Document { + constructor (data, options) { + super(data, options); + this.defineField('name', {type: 'String'}); + this.defineField('book', {type: Book}); + this.defineField('books', {type: [Book]}); + this.populate(data); + } + } + let user = new User({ + name: 'foo', + book: { + title: 'bar' + }, + books: [ + undefined, + { + title: 'baz' + } + ] + }); + t.is(user.getPath(['name']).value, 'foo'); + t.is(user.getPath(['book', 'title']).value, 'bar'); + t.is(user.getPath(['books', 1, 'title']).value, 'baz'); + t.is(user.getPath(['fake']), undefined); + t.is(user.getPath(['fake', 10, 'title']), undefined); + t.is(user.getPath(), undefined); +}); +test('method `hasPath` returns `true` if the field exists', (t) => { + class User extends Document { + constructor (data, options) { + super(data, options); + this.defineField('name', {type: 'String'}); + this.populate(data); + } + } + let user = new User(); + t.is(user.hasPath(['name']), true); + t.is(user.hasPath(['book', 'title']), false); +}); +test('method `flatten` returns an array of fields', async (t) => { + class Book extends Document { + constructor (data, options) { + super(data, options); + this.defineField('title', {type: 'String'}); + this.populate(data); + } + } + class User extends Document { + constructor (data, options) { + super(data, options); + this.defineField('name', {type: 'String'}); + this.defineField('book', {type: Book}); + this.defineField('books', {type: [Book]}); + this.populate(data); + } + } + let user = new User({ + name: 'foo', + book: { + title: 'bar' + }, + books: [ + undefined, + { + title: 'baz' + } + ] + }); + t.deepEqual(user.flatten().map((f) => f.path), [ + ['name'], + ['book'], + ['book', 'title'], + ['books'], + ['books', 1, 'title'] + ]); + t.deepEqual(Object.keys(user.flatten()[0]), ['path', 'field']); + t.deepEqual(user.flatten()[0].path, ['name']); + t.is(user.flatten()[0].field.value, 'foo'); +}); +test('method `serialize` converts document into a serialized data object', (t) => { + class Book extends Document { + constructor (data, options) { + super(data, options); + this.defineField('title', {type: 'String'}); + this.populate(data); + } + } + class User extends Document { + constructor (data, options) { + super(data, options); + this.defineField('name', {type: 'String'}); + this.defineField('book', {type: Book}); + this.defineField('books', {type: [Book]}); + this.populate(data); + } + } + let user = new User({ + name: 'foo', + book: { + title: 'bar' + }, + books: [ + undefined, + { + title: 'baz' + } + ] + }); + t.deepEqual(user.serialize(), { + name: 'foo', + book: { + title: 'bar' + }, + books: [ + null, + { + title: 'baz' + } + ] + }); +}); -// test('field value should be converted to the specified type', (t) => { -// test('field can be of a custom type', (t) => { // test('field can have a fake value', (t) => { -// test('field can be transformed through custom setter and getter', (t) => { -// test('method `populate` should not set custom fields when schema strict=true', (t) => { -// test('method `populate` should set custom fields when schema strict=false', (t) => { -// test('variable `$parent` should return the parent document', (t) => { -// test('variable `$root` should return the first document in a tree of nested documents', (t) => { -// test('method `getPath` should return an instance of a field at path', (t) => { -// test('method `hasPath` should check field existance at path', (t) => { -// test('method `flatten` should return an array of fields', async (t) => { -// test('method `serialize` should convert a document into serialized data object', (t) => { // test('method `reset` should deeply set fields to their default values and invalidate the errors', (t) => { // test('method `clear` should deeply clear fields', (t) => { // test('method `clear` should deeply clear fields', (t) => { diff --git a/tests/fields.js b/tests/fields.js index a8818bc..0cac69a 100644 --- a/tests/fields.js +++ b/tests/fields.js @@ -1,5 +1,5 @@ import test from 'ava'; -import {Field} from '../dist'; +import {Field, Document} from '../dist'; import {Validator} from 'validatable'; test('nullifies a value by default', (t) => { @@ -23,10 +23,12 @@ test('supports custom getter and setter for the current value', (t) => { }); test('can automatically cast a value to a specific data type', (t) => { - let f = new Field({type: ['String']}); - f.value = 100; - t.deepEqual(f.value, ['100']); - // TODO for custom types !!!!! + let f0 = new Field({type: ['String']}); + let f1 = new Field({type: (v) => `${v}-foo`}); // custom type + f0.value = 100; + f1.value = 100; + t.deepEqual(f0.value, ['100']); + t.deepEqual(f1.value, '100-foo'); }); test('can have a default value', (t) => { @@ -105,11 +107,12 @@ test('method `isChanged()` returns `true` if the value have been changed', (t) = }); test('method `isNested()` returns `true` if the field type is un instance of a Document', (t) => { - let f = new Field(); - t.is(f.isNested(), false); - f.value = 'foo'; - t.is(f.isNested(), false); - // TODO !!!!! + let f0 = new Field(); + let f1 = new Field({type: [Document]}); + let f2 = new Field({type: [class Model extends Document {}]}); + t.is(f0.isNested(), false); + t.is(f1.isNested(), true); + t.is(f2.isNested(), true); }); test('method `validate()` validates the value and populates the `errors` property', async (t) => { @@ -157,3 +160,8 @@ test('method `isValid()` returns `true` when no errors exist', (t) => { f.errors.push({message: 'foo'}); t.is(f.isValid(), false); }); + +test('has enumeratable properties', (t) => { + let f = new Field(); + t.deepEqual(Object.keys(f), ['errors', 'value', 'defaultValue', 'fakeValue', 'initialValue', 'type', 'owner']); +}); From 23bcc51ba95233e503860457040036015e0ff9f4 Mon Sep 17 00:00:00 2001 From: xpeper Date: Fri, 23 Dec 2016 23:56:26 +0100 Subject: [PATCH 128/219] flatten, collect and scroll methods --- dist/documents.d.ts | 4 +- dist/documents.js | 35 +++++----- dist/documents.js.map | 2 +- src/documents.ts | 39 ++++++----- tests/documents.js | 159 +++++++++++++++++++++--------------------- 5 files changed, 119 insertions(+), 120 deletions(-) diff --git a/dist/documents.d.ts b/dist/documents.d.ts index 4ea7830..89ef1c1 100644 --- a/dist/documents.d.ts +++ b/dist/documents.d.ts @@ -18,6 +18,8 @@ export declare class Document { getPath(...keys: any[]): Field; hasPath(...keys: any[]): boolean; populate(data?: {}): this; - flatten(prefix?: string[]): FieldRef[]; serialize(): {}; + flatten(prefix?: string[]): FieldRef[]; + collect(handler: (field: FieldRef) => any): any[]; + scroll(handler: (field: FieldRef) => void): number; } diff --git a/dist/documents.js b/dist/documents.js index 8cc9fce..0eeb498 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -87,6 +87,13 @@ class Document { return this; } /* + * Converts this class into serialized data object. + */ + serialize() { + console.log(Object.keys(this)); + return utils_1.serialize(this); + } + /* * Scrolls through the document and returns an array of fields. */ flatten(prefix = []) { @@ -112,11 +119,16 @@ class Document { return fields; } /* - * Converts this class into serialized data object. + * Scrolls through object fields and collects results. */ - serialize() { - console.log(Object.keys(this)); - return utils_1.serialize(this); + collect(handler) { + return this.flatten().map(handler); + } + /* + * Scrolls through document fields and executes a handler on each field. + */ + scroll(handler) { + return this.flatten().map(handler).length; } } exports.Document = Document; @@ -251,21 +263,6 @@ exports.Document = Document; // return data; // } // -// /* -// * Scrolls through object fields and collects results. -// */ -// -// collect (handler: (field: FieldRef) => FieldRef): FieldRef[] { -// return this.flatten().map(handler); -// } -// -// /* -// * Scrolls through document fields and executes a handler on each field. -// */ -// -// scroll (handler: (field: FieldRef) => void): number { -// return this.flatten().map(handler).length; -// } // // /* // * Sets each document field to its default value. diff --git a/dist/documents.js.map b/dist/documents.js.map index de4333b..f573766 100644 --- a/dist/documents.js.map +++ b/dist/documents.js.map @@ -1 +1 @@ -{"version":3,"file":"documents.js","sourceRoot":"","sources":["../src/documents.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"documents.js","sourceRoot":"","sources":["../src/documents.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/documents.ts b/src/documents.ts index 7bc82af..9d61018 100644 --- a/src/documents.ts +++ b/src/documents.ts @@ -129,6 +129,16 @@ export class Document { return this; } + /* + * Converts this class into serialized data object. + */ + + serialize (): {} { + console.log(Object.keys(this)); + + return serialize(this); + } + /* * Scrolls through the document and returns an array of fields. */ @@ -165,13 +175,19 @@ export class Document { } /* - * Converts this class into serialized data object. + * Scrolls through object fields and collects results. */ - serialize (): {} { - console.log(Object.keys(this)); + collect (handler: (field: FieldRef) => any): any[] { + return this.flatten().map(handler); + } - return serialize(this); + /* + * Scrolls through document fields and executes a handler on each field. + */ + + scroll (handler: (field: FieldRef) => void): number { + return this.flatten().map(handler).length; } } @@ -314,21 +330,6 @@ export class Document { // return data; // } // -// /* -// * Scrolls through object fields and collects results. -// */ -// -// collect (handler: (field: FieldRef) => FieldRef): FieldRef[] { -// return this.flatten().map(handler); -// } -// -// /* -// * Scrolls through document fields and executes a handler on each field. -// */ -// -// scroll (handler: (field: FieldRef) => void): number { -// return this.flatten().map(handler).length; -// } // // /* // * Sets each document field to its default value. diff --git a/tests/documents.js b/tests/documents.js index 4f78e4c..a7378e2 100644 --- a/tests/documents.js +++ b/tests/documents.js @@ -158,6 +158,49 @@ test('method `hasPath` returns `true` if the field exists', (t) => { t.is(user.hasPath(['book', 'title']), false); }); +test('method `serialize` converts document into a serialized data object', (t) => { + class Book extends Document { + constructor (data, options) { + super(data, options); + this.defineField('title', {type: 'String'}); + this.populate(data); + } + } + class User extends Document { + constructor (data, options) { + super(data, options); + this.defineField('name', {type: 'String'}); + this.defineField('book', {type: Book}); + this.defineField('books', {type: [Book]}); + this.populate(data); + } + } + let user = new User({ + name: 'foo', + book: { + title: 'bar' + }, + books: [ + undefined, + { + title: 'baz' + } + ] + }); + t.deepEqual(user.serialize(), { + name: 'foo', + book: { + title: 'bar' + }, + books: [ + null, + { + title: 'baz' + } + ] + }); +}); + test('method `flatten` returns an array of fields', async (t) => { class Book extends Document { constructor (data, options) { @@ -199,7 +242,7 @@ test('method `flatten` returns an array of fields', async (t) => { t.is(user.flatten()[0].field.value, 'foo'); }); -test('method `serialize` converts document into a serialized data object', (t) => { +test('method `collect` returns an array of results', (t) => { class Book extends Document { constructor (data, options) { super(data, options); @@ -212,7 +255,6 @@ test('method `serialize` converts document into a serialized data object', (t) = super(data, options); this.defineField('name', {type: 'String'}); this.defineField('book', {type: Book}); - this.defineField('books', {type: [Book]}); this.populate(data); } } @@ -220,30 +262,48 @@ test('method `serialize` converts document into a serialized data object', (t) = name: 'foo', book: { title: 'bar' - }, - books: [ - undefined, - { - title: 'baz' - } - ] + } }); - t.deepEqual(user.serialize(), { + let results = user.collect(({path}) => path); + t.deepEqual(results, [ + ['name'], + ['book'], + ['book', 'title'] + ]); +}); + +test('method `scroll` runs the provided handler on each field', (t) => { + class Book extends Document { + constructor (data, options) { + super(data, options); + this.defineField('title', {type: 'String'}); + this.populate(data); + } + } + class User extends Document { + constructor (data, options) { + super(data, options); + this.defineField('name', {type: 'String'}); + this.defineField('book', {type: Book}); + this.populate(data); + } + } + let user = new User({ name: 'foo', book: { title: 'bar' - }, - books: [ - null, - { - title: 'baz' - } - ] - }); + } + }); + let count = user.scroll(({path}) => null); + t.deepEqual(count, 3); }); + +// test('method `reset` deeply set fields to their default values', (t) => { + +// }); + // test('field can have a fake value', (t) => { -// test('method `reset` should deeply set fields to their default values and invalidate the errors', (t) => { // test('method `clear` should deeply clear fields', (t) => { // test('method `clear` should deeply clear fields', (t) => { // test('method `commit` should deeply reset information about changed fields.', (t) => { @@ -258,8 +318,6 @@ test('method `serialize` converts document into a serialized data object', (t) = // test('method `filter` should convert a document into serialized object with only keys that pass the test', (t) => { // test('method `collectErrors` should return an array of field errors', async (t) => { // test('method `applyErrors` should set field `errors` property', async (t) => { -// test('method `collect` should return an array of results', (t) => { -// test('method `collect` should return an array of results', (t) => { @@ -1735,64 +1793,5 @@ test('method `serialize` converts document into a serialized data object', (t) = // t.deepEqual(user.newBooks[1].$title.errors, [validatorError]); // }); -// test('method `collect` should return an array of results', (t) => { -// let bookSchema = new Schema({ -// fields: { -// title: { -// type: 'String' -// } -// } -// }); -// let userSchema = new Schema({ -// fields: { -// name: { -// type: 'String' -// }, -// book: { -// type: bookSchema -// } -// } -// }); -// let data = { -// book: { -// title: 'foo' -// } -// }; -// let user = new Document(data, userSchema); -// let results = user.collect(({path, field}) => path); - -// t.deepEqual(results, [ -// ['name'], -// ['book'], -// ['book', 'title'] -// ]); -// }); -// test('method `collect` should return an array of results', (t) => { -// let bookSchema = new Schema({ -// fields: { -// title: { -// type: 'String' -// } -// } -// }); -// let userSchema = new Schema({ -// fields: { -// name: { -// type: 'String' -// }, -// book: { -// type: bookSchema -// } -// } -// }); -// let data = { -// book: { -// title: 'foo' -// } -// }; -// let user = new Document(data, userSchema); -// let count = user.scroll(({path, field}) => {}); -// t.deepEqual(count, 3); -// }); From fa4e44cc0d1d498ed9fe642b0a7d389a95247fac Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 24 Dec 2016 00:06:50 +0100 Subject: [PATCH 129/219] filter method --- dist/documents.d.ts | 1 + dist/documents.js | 36 ++++++++-------- dist/documents.js.map | 2 +- src/documents.ts | 41 +++++++++---------- tests/documents.js | 95 ++++++++++++++++++++----------------------- 5 files changed, 81 insertions(+), 94 deletions(-) diff --git a/dist/documents.d.ts b/dist/documents.d.ts index 89ef1c1..97a8ac1 100644 --- a/dist/documents.d.ts +++ b/dist/documents.d.ts @@ -22,4 +22,5 @@ export declare class Document { flatten(prefix?: string[]): FieldRef[]; collect(handler: (field: FieldRef) => any): any[]; scroll(handler: (field: FieldRef) => void): number; + filter(test: (field: FieldRef) => boolean): {}; } diff --git a/dist/documents.js b/dist/documents.js index 0eeb498..da872f9 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -90,7 +90,6 @@ class Document { * Converts this class into serialized data object. */ serialize() { - console.log(Object.keys(this)); return utils_1.serialize(this); } /* @@ -130,6 +129,22 @@ class Document { scroll(handler) { return this.flatten().map(handler).length; } + /* + * Converts this class into serialized data object with only the keys that + * pass the provided `test`. + */ + filter(test) { + let data = utils_1.serialize(this); + this.flatten() + .sort((a, b) => b.path.length - a.path.length) + .filter((field) => !test(field)) + .forEach((field) => { + let names = field.path.concat(); + let lastName = names.pop(); + delete names.reduce((o, k) => o[k], data)[lastName]; + }); + return data; + } } exports.Document = Document; // import {isPresent, isObject, isArray} from 'typeable'; @@ -243,25 +258,6 @@ exports.Document = Document; // // // -// /* -// * Converts this class into serialized data object having only the keys that -// * pass the `test`. -// */ -// -// filter (test: (field: FieldRef) => boolean): {} { -// let data = serialize(this); -// -// this.flatten() -// .sort((a, b) => b.path.length - a.path.length) -// .filter((field) => !test(field)) -// .forEach((field) => { -// let names = field.path.concat(); -// let lastName = names.pop(); -// delete names.reduce((o, k) => o[k], data)[lastName]; -// }); -// -// return data; -// } // // // /* diff --git a/dist/documents.js.map b/dist/documents.js.map index f573766..f307edd 100644 --- a/dist/documents.js.map +++ b/dist/documents.js.map @@ -1 +1 @@ -{"version":3,"file":"documents.js","sourceRoot":"","sources":["../src/documents.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"documents.js","sourceRoot":"","sources":["../src/documents.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/documents.ts b/src/documents.ts index 9d61018..37af35d 100644 --- a/src/documents.ts +++ b/src/documents.ts @@ -134,8 +134,6 @@ export class Document { */ serialize (): {} { - console.log(Object.keys(this)); - return serialize(this); } @@ -190,6 +188,26 @@ export class Document { return this.flatten().map(handler).length; } + /* + * Converts this class into serialized data object with only the keys that + * pass the provided `test`. + */ + + filter (test: (field: FieldRef) => boolean): {} { + let data = serialize(this); + + this.flatten() + .sort((a, b) => b.path.length - a.path.length) + .filter((field) => !test(field)) + .forEach((field) => { + let names = field.path.concat(); + let lastName = names.pop(); + delete names.reduce((o, k) => o[k], data)[lastName]; + }); + + return data; + } + } @@ -310,25 +328,6 @@ export class Document { // // // -// /* -// * Converts this class into serialized data object having only the keys that -// * pass the `test`. -// */ -// -// filter (test: (field: FieldRef) => boolean): {} { -// let data = serialize(this); -// -// this.flatten() -// .sort((a, b) => b.path.length - a.path.length) -// .filter((field) => !test(field)) -// .forEach((field) => { -// let names = field.path.concat(); -// let lastName = names.pop(); -// delete names.reduce((o, k) => o[k], data)[lastName]; -// }); -// -// return data; -// } // // // /* diff --git a/tests/documents.js b/tests/documents.js index a7378e2..ffbc904 100644 --- a/tests/documents.js +++ b/tests/documents.js @@ -298,6 +298,49 @@ test('method `scroll` runs the provided handler on each field', (t) => { t.deepEqual(count, 3); }); +test('method `filter` converts a document into serialized object with only keys that pass the test', (t) => { + class Book extends Document { + constructor (data, options) { + super(data, options); + this.defineField('title', {type: 'String'}); + this.populate(data); + } + } + class User extends Document { + constructor (data, options) { + super(data, options); + this.defineField('name', {type: 'String'}); + this.defineField('book', {type: Book}); + this.defineField('books', {type: [Book]}); + this.populate(data); + } + } + let user = new User({ + name: 'foo', + book: { + title: 'bar' + }, + books: [ + undefined, + { + title: 'bar' + } + ] + }); + let result = user.filter(({path, field}) => field.value !== 'foo'); + t.deepEqual(result, { + book: { + title: 'bar' + }, + books: [ + null, + { + title: 'bar' + } + ] + }); +}); + // test('method `reset` deeply set fields to their default values', (t) => { @@ -315,7 +358,6 @@ test('method `scroll` runs the provided handler on each field', (t) => { // test('method `validate` should validate all fields and throw an error', async (t) => { // test('methods `isValid` and `hasErrors` should tell if fields are valid', async (t) => { // test('method `invalidate` should clear errors on all fields', async (t) => { -// test('method `filter` should convert a document into serialized object with only keys that pass the test', (t) => { // test('method `collectErrors` should return an array of field errors', async (t) => { // test('method `applyErrors` should set field `errors` property', async (t) => { @@ -1636,57 +1678,6 @@ test('method `scroll` runs the provided handler on each field', (t) => { // t.deepEqual(user.oldBooks[1].$title.errors, []); // }); -// test('method `filter` should convert a document into serialized object with only keys that pass the test', (t) => { -// let bookSchema = new Schema({ -// fields: { -// title: { -// type: 'String' -// }, -// author: { -// type: 'String' -// } -// } -// }); -// let userSchema = new Schema({ -// fields: { -// name: { -// type: 'String' -// }, -// book: { -// type: bookSchema -// }, -// books: { -// type: [bookSchema] -// } -// } -// }); -// let data = { -// book: { -// title: 'foo' -// }, -// books: [ -// null, -// { -// title: 'bar' -// } -// ] -// }; -// let user = new Document(data, userSchema); -// let validKeys = ['book', 'books', 'books.1', 'book.title', 'books.1.author']; -// let filtered = user.filter(({path}) => validKeys.indexOf(path.join('.')) !== -1); - -// t.deepEqual(filtered, { -// book: { -// title: 'foo' -// }, -// books: [ -// null, -// { -// author: null -// } -// ] -// }); -// }); // test('method `collectErrors` should return an array of field errors', async (t) => { // let bookSchema = new Schema({ From 268ce09957237b795a78396dd89fdeb6a1dce46e Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 24 Dec 2016 00:15:19 +0100 Subject: [PATCH 130/219] cleanup, setting public/private methods --- dist/documents.d.ts | 3 +- dist/documents.js | 64 ++++++--------------------------- dist/documents.js.map | 2 +- dist/fields.d.ts | 12 +++---- dist/fields.js | 4 +-- dist/fields.js.map | 2 +- dist/schemas.d.ts | 0 dist/schemas.js | 75 -------------------------------------- dist/schemas.js.map | 1 - src/documents.ts | 84 +++++++++++-------------------------------- src/fields.ts | 38 ++++++++++---------- src/schemas.ts | 74 -------------------------------------- 12 files changed, 62 insertions(+), 297 deletions(-) delete mode 100644 dist/schemas.d.ts delete mode 100644 dist/schemas.js delete mode 100644 dist/schemas.js.map delete mode 100644 src/schemas.ts diff --git a/dist/documents.d.ts b/dist/documents.d.ts index 97a8ac1..c6ab27f 100644 --- a/dist/documents.d.ts +++ b/dist/documents.d.ts @@ -13,7 +13,8 @@ export declare class Document { readonly options: DocumentOptions; readonly parent: Document; constructor(data?: any, options?: DocumentOptions); - _getRootDocument(): Document; + protected _getRootDocument(): Document; + protected _createField(recipe?: FieldRecipe): Field; defineField(name: string, recipe?: FieldRecipe): void; getPath(...keys: any[]): Field; hasPath(...keys: any[]): boolean; diff --git a/dist/documents.js b/dist/documents.js index da872f9..fa34336 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -42,12 +42,19 @@ class Document { } while (true); } /* - * Defines a new field property. + * Creates a new field instance. This method is especially useful when + * extending this class. */ - defineField(name, recipe) { - let field = new fields_1.Field(recipe, { + _createField(recipe) { + return new fields_1.Field(recipe, { owner: this }); + } + /* + * Defines a new field property. + */ + defineField(name, recipe) { + let field = this._createField(recipe); Object.defineProperty(this, name, { get: () => field.value, set: (v) => field.value = v, @@ -147,13 +154,6 @@ class Document { } } exports.Document = Document; -// import {isPresent, isObject, isArray} from 'typeable'; -// import {Validator} from 'validatable'; -// import {Schema} from './schemas'; -// import {Field} from './fields'; -// import {serialize, isEqual, merge} from './utils'; -// -// // /* // * Field error type definition. // */ @@ -202,14 +202,6 @@ exports.Document = Document; // return new (this.constructor as any)(data, schema, parent); // } // -// /* -// * Creates a new field instance. This method is especially useful when -// * extending this class. -// */ -// -// _createField (name) { -// return new Field(this, name); -// } // // // /* @@ -225,42 +217,6 @@ exports.Document = Document; // } // // /* -// * Defines class fields from schema. -// */ -// -// _defineFields () { -// let {fields} = this.$schema; -// -// for (let name in fields) { -// this._defineField(name); -// } -// } -// -// /* -// * Defines a schema field by name. -// */ -// -// _defineField (name) { -// let field = this._createField(name); -// -// Object.defineProperty(this, name, { // field definition -// get: () => field.value, -// set: (v) => field.value = v, -// enumerable: true, -// configurable: true -// }); -// -// Object.defineProperty(this, `$${name}`, { // field class instance definition -// value: field -// }); -// } -// -// -// -// -// -// -// /* // * Sets each document field to its default value. // */ // diff --git a/dist/documents.js.map b/dist/documents.js.map index f307edd..dd6b799 100644 --- a/dist/documents.js.map +++ b/dist/documents.js.map @@ -1 +1 @@ -{"version":3,"file":"documents.js","sourceRoot":"","sources":["../src/documents.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"documents.js","sourceRoot":"","sources":["../src/documents.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/fields.d.ts b/dist/fields.d.ts index 2abb338..0576e4a 100644 --- a/dist/fields.d.ts +++ b/dist/fields.d.ts @@ -38,12 +38,12 @@ export declare class Field { value: any; errors: FieldError[]; constructor(recipe?: FieldRecipe, options?: FieldOptions); - _createValidator(): Validator; - _getValue(): any; - _setValue(data: any): void; - _cast(data: any, type: any): any; - _getDefaultValue(): any; - _getFakeValue(): any; + protected _createValidator(): Validator; + protected _getValue(): any; + protected _setValue(data: any): void; + protected _cast(data: any, type: any): any; + protected _getDefaultValue(): any; + protected _getFakeValue(): any; reset(): this; fake(): this; clear(): this; diff --git a/dist/fields.js b/dist/fields.js index 67ecbc4..77672c7 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -64,8 +64,8 @@ class Field { }); } /* - * Returns a new instance of validator. - */ + * Returns a new instance of validator. + */ _createValidator() { let { validators, firstErrorOnly } = this.options; let context = this; diff --git a/dist/fields.js.map b/dist/fields.js.map index 94028ab..87c81a9 100644 --- a/dist/fields.js.map +++ b/dist/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":";;;;;;;;;AAAA,uCAA2E;AAC3E,mCAAkD;AAClD,6CAAuD;AACvD,2CAAqC;AA4CrC;;EAEE;AAEF;IAcE;;MAEE;IAEF,YAAa,MAAoB,EAAE,OAAsB;QACvD,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAEjB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;YACpC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;SACnC,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;YACrC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;SACpC,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;YACnC,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YACvC,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE;YAC1C,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE;YAC9B,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE;YACxC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE;SAC/B,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;YACnC,GAAG,EAAE,MAAM,IAAI,CAAC,SAAS,EAAE;YAC3B,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YAC7B,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE;YAC1C,GAAG,EAAE,MAAM,IAAI,CAAC,gBAAgB,EAAE;YAClC,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE;YACvC,GAAG,EAAE,MAAM,IAAI,CAAC,aAAa,EAAE;YAC/B,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE;YAC1C,GAAG,EAAE,MAAM,IAAI,CAAC,YAAY;YAC5B,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;YAClC,GAAG,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI;YACnC,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;YACnC,GAAG,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI;YACrC,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;IAEH;;QAEI;IAEF,gBAAgB;QACd,IAAI,EAAC,UAAU,EAAE,cAAc,EAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QAChD,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,MAAM,CAAC,IAAI,uBAAS,CAAC,EAAC,UAAU,EAAE,cAAc,EAAE,OAAO,EAAC,CAAC,CAAC;IAC9D,CAAC;IAED;;MAEE;IAEF,SAAS;QACP,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACtB,EAAE,CAAC,CAAC,qBAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,EAAC,GAAG,EAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACxB,EAAE,CAAC,CAAC,qBAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED;;MAEE;IAEF,SAAS,CAAE,IAAI;QACb,IAAI,EAAC,GAAG,EAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACxB,EAAE,CAAC,CAAC,qBAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED;;MAEE;IAEF,KAAK,CAAE,IAAI,EAAE,IAAI;QACf,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,EAAE,CAAC,CAAC,oBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,KAAK,GAAG,CAAC,kBAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAC7C,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,YAAY,oBAAQ,CAAC,CAAC,CAAC;gBACjD,IAAI,OAAO,GAAG,aAAK,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAC,CAAC,CAAC;gBAClE,IAAI,UAAU,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAC9C,SAAS,GAAG,kBAAO,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;YACxD,CAAC;QACH,CAAC;QAED,MAAM,CAAC,eAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED;;MAEE;IAEF,gBAAgB;QACd,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,IAAI,EAAC,YAAY,EAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACjC,EAAE,CAAC,CAAC,qBAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,GAAG,YAAY,CAAC;QACtB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAED;;MAEE;IAEF,aAAa;QACX,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,IAAI,EAAC,SAAS,EAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QAC9B,EAAE,CAAC,CAAC,qBAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,GAAG,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAED;;MAEE;IAEF,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE9C,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAED;;MAEE;IAEF,IAAI;QACF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3C,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAED;;MAEE;IAEF,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAED;;MAEE;IAEF,MAAM;QACJ,mCAAmC;QACnC,IAAI,CAAC,YAAY,GAAG,iBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE1C,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAED;;MAEE;IAEF,QAAQ;QACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAE/B,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAED;;MAEE;IAEF,MAAM,CAAE,IAAI;QACV,IAAI,KAAK,GAAG,IAAI,YAAY,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAEtD,MAAM,CAAC,eAAO,CACZ,iBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EACrB,iBAAS,CAAC,KAAK,CAAC,CACjB,CAAC;IACJ,CAAC;IAED;;MAEE;IAEF,SAAS;QACP,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAED;;MAEE;IAEF,QAAQ;QACN,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,EAAE,CAAC,CAAC,kBAAO,CAAC,IAAI,CAAC,CAAC;YAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAElC,MAAM,CAAC,CACL,oBAAS,CAAC,IAAI,CAAC;eACZ,oBAAS,CAAC,IAAI,CAAC,SAAS,CAAC;eACzB,CACD,IAAI,CAAC,SAAS,YAAY,oBAAQ;mBAC/B,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,oBAAQ,CAC3C,CACF,CAAC;IACJ,CAAC;IAED;;;;;MAKE;IAEI,QAAQ;;YACZ,2EAA2E;YAC3E,oCAAoC;YACpC,kEAAkE;YAElE,sBAAsB;YACtB,6DAA6D;YAC7D,MAAM;YACN,IAAI;YAEJ,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAC1C,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,MAAM,CAAC,QAAQ,CACrB,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC;QACd,CAAC;KAAA;IAED;;MAEE;IAEF,UAAU;QACR,2EAA2E;QAC3E,oCAAoC;QACpC,kEAAkE;QAElE,sBAAsB;QACtB,6BAA6B;QAC7B,MAAM;QACN,IAAI;QAEJ,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAEjB,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAED;;MAEE;IAEF,SAAS;QACP,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC;QACf,CAAC;QACD,SAAS;QACT,6EAA6E;QAC7E,IAAI;IACN,CAAC;IAED;;MAEE;IAEF,OAAO;QACL,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC;CAEF;AArUD,sBAqUC"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/schemas.d.ts b/dist/schemas.d.ts deleted file mode 100644 index e69de29..0000000 diff --git a/dist/schemas.js b/dist/schemas.js deleted file mode 100644 index 2edb987..0000000 --- a/dist/schemas.js +++ /dev/null @@ -1,75 +0,0 @@ -// import {isBoolean} from 'typeable'; -// import {retrieve, merge} from './utils'; -// -// /* -// * A class for defining Document structure and properties. -// */ -// -// export class Schema { -// fields: {}; -// strict: boolean; -// validators: {}; -// types: {}; -// firstErrorOnly?: boolean; -// -// /* -// * Class constructor. -// */ -// -// constructor ({ -// mixins = [], // not a property -// fields = {}, -// strict, -// validators = {}, -// types = {}, -// firstErrorOnly -// }: { -// mixins?: Schema[], -// fields?: {}, -// strict?: boolean, -// validators?: {}, -// types?: {}, -// firstErrorOnly?: boolean -// } = {}) { -// -// Object.defineProperty(this, 'fields', { // document fields -// get: () => merge( -// ...mixins.map((s) => retrieve(s.fields)), -// retrieve(fields) -// ), -// enumerable: true // required for deep nesting -// }); -// -// Object.defineProperty(this, 'strict', { // document schema mode -// get: () => ( -// [true].concat(mixins.map((s) => s.strict), strict).filter((s) => isBoolean(s)).reverse()[0] -// ), -// enumerable: true // required for deep nesting -// }); -// -// Object.defineProperty(this, 'validators', { // validatable.js configuration option -// get: () => merge( -// ...mixins.map((v) => v.validators), -// validators -// ), -// enumerable: true // required for deep nesting -// }); -// -// Object.defineProperty(this, 'types', { // typeable.js configuration option -// get: () => merge( -// ...mixins.map((v) => v.types), -// types -// ), -// enumerable: true // required for deep nesting -// }); -// -// Object.defineProperty(this, 'firstErrorOnly', { // validatable.js configuration option -// get: () => ( -// [false].concat(mixins.map((s) => s.firstErrorOnly), firstErrorOnly).filter((s) => isBoolean(s)).reverse()[0] -// ), -// enumerable: true // required for deep nesting -// }); -// } -// -// } -//# sourceMappingURL=schemas.js.map \ No newline at end of file diff --git a/dist/schemas.js.map b/dist/schemas.js.map deleted file mode 100644 index a5f3861..0000000 --- a/dist/schemas.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,2CAA2C;AAC3C,EAAE;AACF,KAAK;AACL,4DAA4D;AAC5D,KAAK;AACL,EAAE;AACF,wBAAwB;AACxB,gBAAgB;AAChB,qBAAqB;AACrB,oBAAoB;AACpB,eAAe;AACf,8BAA8B;AAC9B,EAAE;AACF,OAAO;AACP,yBAAyB;AACzB,OAAO;AACP,EAAE;AACF,mBAAmB;AACnB,qCAAqC;AACrC,mBAAmB;AACnB,cAAc;AACd,uBAAuB;AACvB,kBAAkB;AAClB,qBAAqB;AACrB,SAAS;AACT,yBAAyB;AACzB,mBAAmB;AACnB,wBAAwB;AACxB,uBAAuB;AACvB,kBAAkB;AAClB,+BAA+B;AAC/B,cAAc;AACd,EAAE;AACF,iEAAiE;AACjE,0BAA0B;AAC1B,oDAAoD;AACpD,2BAA2B;AAC3B,WAAW;AACX,sDAAsD;AACtD,UAAU;AACV,EAAE;AACF,sEAAsE;AACtE,qBAAqB;AACrB,sGAAsG;AACtG,WAAW;AACX,sDAAsD;AACtD,UAAU;AACV,EAAE;AACF,yFAAyF;AACzF,0BAA0B;AAC1B,8CAA8C;AAC9C,qBAAqB;AACrB,WAAW;AACX,sDAAsD;AACtD,UAAU;AACV,EAAE;AACF,iFAAiF;AACjF,0BAA0B;AAC1B,yCAAyC;AACzC,gBAAgB;AAChB,WAAW;AACX,sDAAsD;AACtD,UAAU;AACV,EAAE;AACF,6FAA6F;AAC7F,qBAAqB;AACrB,uHAAuH;AACvH,WAAW;AACX,sDAAsD;AACtD,UAAU;AACV,MAAM;AACN,EAAE;AACF,IAAI"} \ No newline at end of file diff --git a/src/documents.ts b/src/documents.ts index 37af35d..fc62d98 100644 --- a/src/documents.ts +++ b/src/documents.ts @@ -58,7 +58,7 @@ export class Document { * Loops up on the tree and returns the first document in the tree. */ - _getRootDocument () { + protected _getRootDocument () { let root: Document = this; do { if (root.parent) { @@ -71,13 +71,22 @@ export class Document { } /* - * Defines a new field property. + * Creates a new field instance. This method is especially useful when + * extending this class. */ - defineField (name: string, recipe?: FieldRecipe) { - let field = new Field(recipe, { + protected _createField (recipe?: FieldRecipe) { + return new Field(recipe, { owner: this }); + } + + /* + * Defines a new field property. + */ + + public defineField (name: string, recipe?: FieldRecipe) { + let field = this._createField(recipe); Object.defineProperty(this, name, { get: () => field.value, @@ -93,7 +102,7 @@ export class Document { * Returns a value at path. */ - getPath (...keys): Field { + public getPath (...keys): Field { keys = [].concat(isArray(keys[0]) ? keys[0] : keys); let lastKey = keys.pop(); @@ -109,7 +118,7 @@ export class Document { * Returns `true` if the field exists. */ - hasPath (...keys): boolean { + public hasPath (...keys): boolean { return !isUndefined(this.getPath(...keys)); } @@ -117,7 +126,7 @@ export class Document { * Deeply applies data to the fields. */ - populate (data = {}): this { + public populate (data = {}): this { data = serialize(data); Object.keys(data).forEach((name) => { @@ -133,7 +142,7 @@ export class Document { * Converts this class into serialized data object. */ - serialize (): {} { + public serialize (): {} { return serialize(this); } @@ -141,7 +150,7 @@ export class Document { * Scrolls through the document and returns an array of fields. */ - flatten (prefix: string[] = []): FieldRef[] { + public flatten (prefix: string[] = []): FieldRef[] { let fields = []; Object.keys(this._fields).forEach((name) => { @@ -176,7 +185,7 @@ export class Document { * Scrolls through object fields and collects results. */ - collect (handler: (field: FieldRef) => any): any[] { + public collect (handler: (field: FieldRef) => any): any[] { return this.flatten().map(handler); } @@ -184,7 +193,7 @@ export class Document { * Scrolls through document fields and executes a handler on each field. */ - scroll (handler: (field: FieldRef) => void): number { + public scroll (handler: (field: FieldRef) => void): number { return this.flatten().map(handler).length; } @@ -193,7 +202,7 @@ export class Document { * pass the provided `test`. */ - filter (test: (field: FieldRef) => boolean): {} { + public filter (test: (field: FieldRef) => boolean): {} { let data = serialize(this); this.flatten() @@ -217,13 +226,6 @@ export class Document { -// import {isPresent, isObject, isArray} from 'typeable'; -// import {Validator} from 'validatable'; -// import {Schema} from './schemas'; -// import {Field} from './fields'; -// import {serialize, isEqual, merge} from './utils'; -// -// // /* // * Field error type definition. // */ @@ -272,14 +274,6 @@ export class Document { // return new (this.constructor as any)(data, schema, parent); // } // -// /* -// * Creates a new field instance. This method is especially useful when -// * extending this class. -// */ -// -// _createField (name) { -// return new Field(this, name); -// } // // // /* @@ -295,42 +289,6 @@ export class Document { // } // // /* -// * Defines class fields from schema. -// */ -// -// _defineFields () { -// let {fields} = this.$schema; -// -// for (let name in fields) { -// this._defineField(name); -// } -// } -// -// /* -// * Defines a schema field by name. -// */ -// -// _defineField (name) { -// let field = this._createField(name); -// -// Object.defineProperty(this, name, { // field definition -// get: () => field.value, -// set: (v) => field.value = v, -// enumerable: true, -// configurable: true -// }); -// -// Object.defineProperty(this, `$${name}`, { // field class instance definition -// value: field -// }); -// } -// -// -// -// -// -// -// /* // * Sets each document field to its default value. // */ // diff --git a/src/fields.ts b/src/fields.ts index ab113a2..fc55b4c 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -117,11 +117,11 @@ export class Field { }); } -/* + /* * Returns a new instance of validator. */ - _createValidator () { + protected _createValidator () { let {validators, firstErrorOnly} = this.options; let context = this; @@ -132,7 +132,7 @@ export class Field { * Returns current field value. */ - _getValue () { + protected _getValue () { let data = this._data; if (isFunction(data)) { data = data.call(this); @@ -150,7 +150,7 @@ export class Field { * Sets current field value. */ - _setValue (data) { + protected _setValue (data) { let {set} = this.recipe; if (isFunction(set)) { data = set.call(this, data); @@ -165,7 +165,7 @@ export class Field { * Converts a `value` into specified `type`. */ - _cast (data, type) { + protected _cast (data, type) { let converter = type; if (isPresent(data)) { // cast to Document @@ -184,7 +184,7 @@ export class Field { * Returns the default value of a field. */ - _getDefaultValue () { + protected _getDefaultValue () { let data = null; let {defaultValue} = this.recipe; @@ -202,7 +202,7 @@ export class Field { * Returns the fake value of a field. */ - _getFakeValue () { + protected _getFakeValue () { let data = null; let {fakeValue} = this.recipe; @@ -220,7 +220,7 @@ export class Field { * Sets data to the default value. */ - reset (): this { + public reset (): this { this.value = this._getDefaultValue.bind(this); return this; @@ -230,7 +230,7 @@ export class Field { * Sets data to the fake value. */ - fake (): this { + public fake (): this { this.value = this._getFakeValue.bind(this); return this; @@ -240,7 +240,7 @@ export class Field { * Sets data to `null`. */ - clear (): this { + public clear (): this { this.value = null; return this; @@ -250,7 +250,7 @@ export class Field { * Set's the initial value to the current value. */ - commit (): this { + public commit (): this { // this._commitRelated(this.value); this._initialData = serialize(this.value); @@ -261,7 +261,7 @@ export class Field { * Sets value to the initial value. */ - rollback (): this { + public rollback (): this { this.value = this.initialValue; return this; @@ -271,7 +271,7 @@ export class Field { * Returns `true` when `data` equals to the current value. */ - equals (data): boolean { + public equals (data): boolean { let value = data instanceof Field ? data.value : data; return isEqual( @@ -284,7 +284,7 @@ export class Field { * Returns `true` if the value has been changed. */ - isChanged (): boolean { + public isChanged (): boolean { return !this.equals(this.initialValue); } @@ -292,7 +292,7 @@ export class Field { * Returns `true` if the data is a Document. */ - isNested (): boolean { + public isNested (): boolean { let type = this.type; if (isArray(type)) type = type[0]; @@ -313,7 +313,7 @@ export class Field { * but as an empty item thus isValid() for [null] succeeds. */ - async validate (): Promise { + public async validate (): Promise { // let relatives = toArray(this.value) || []; // validate related documents // for (let relative of relatives) { // let isDocument = relative instanceof this.$owner.constructor; @@ -335,7 +335,7 @@ export class Field { * Clears errors. */ - invalidate (): this { + public invalidate (): this { // let relatives = toArray(this.value) || []; // validate related documents // for (let relative of relatives) { // let isDocument = relative instanceof this.$owner.constructor; @@ -354,7 +354,7 @@ export class Field { * Returns `true` when errors exist (inverse of `isValid`). */ - hasErrors (): boolean { + public hasErrors (): boolean { if (this.errors.length > 0) { return true; } @@ -370,7 +370,7 @@ export class Field { * Returns `true` when the value is valid (inverse of `hasErrors`). */ - isValid (): boolean { + public isValid (): boolean { return !this.hasErrors(); } diff --git a/src/schemas.ts b/src/schemas.ts deleted file mode 100644 index 48c7b8e..0000000 --- a/src/schemas.ts +++ /dev/null @@ -1,74 +0,0 @@ -// import {isBoolean} from 'typeable'; -// import {retrieve, merge} from './utils'; -// -// /* -// * A class for defining Document structure and properties. -// */ -// -// export class Schema { -// fields: {}; -// strict: boolean; -// validators: {}; -// types: {}; -// firstErrorOnly?: boolean; -// -// /* -// * Class constructor. -// */ -// -// constructor ({ -// mixins = [], // not a property -// fields = {}, -// strict, -// validators = {}, -// types = {}, -// firstErrorOnly -// }: { -// mixins?: Schema[], -// fields?: {}, -// strict?: boolean, -// validators?: {}, -// types?: {}, -// firstErrorOnly?: boolean -// } = {}) { -// -// Object.defineProperty(this, 'fields', { // document fields -// get: () => merge( -// ...mixins.map((s) => retrieve(s.fields)), -// retrieve(fields) -// ), -// enumerable: true // required for deep nesting -// }); -// -// Object.defineProperty(this, 'strict', { // document schema mode -// get: () => ( -// [true].concat(mixins.map((s) => s.strict), strict).filter((s) => isBoolean(s)).reverse()[0] -// ), -// enumerable: true // required for deep nesting -// }); -// -// Object.defineProperty(this, 'validators', { // validatable.js configuration option -// get: () => merge( -// ...mixins.map((v) => v.validators), -// validators -// ), -// enumerable: true // required for deep nesting -// }); -// -// Object.defineProperty(this, 'types', { // typeable.js configuration option -// get: () => merge( -// ...mixins.map((v) => v.types), -// types -// ), -// enumerable: true // required for deep nesting -// }); -// -// Object.defineProperty(this, 'firstErrorOnly', { // validatable.js configuration option -// get: () => ( -// [false].concat(mixins.map((s) => s.firstErrorOnly), firstErrorOnly).filter((s) => isBoolean(s)).reverse()[0] -// ), -// enumerable: true // required for deep nesting -// }); -// } -// -// } From 43053983b1788c1a266bbd181bcc260c621ae5a8 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 24 Dec 2016 00:42:34 +0100 Subject: [PATCH 131/219] reset and clear document methods --- dist/documents.d.ts | 2 ++ dist/documents.js | 44 ++++++++++------------- dist/documents.js.map | 2 +- dist/fields.js | 15 ++++---- dist/fields.js.map | 2 +- src/documents.ts | 50 +++++++++++++------------- src/fields.ts | 18 +++++----- tests/documents.js | 83 ++++++++++++++++++++++++++++++++++++++++--- tests/schemas.js- | 78 ---------------------------------------- 9 files changed, 143 insertions(+), 151 deletions(-) delete mode 100644 tests/schemas.js- diff --git a/dist/documents.d.ts b/dist/documents.d.ts index c6ab27f..0143714 100644 --- a/dist/documents.d.ts +++ b/dist/documents.d.ts @@ -24,4 +24,6 @@ export declare class Document { collect(handler: (field: FieldRef) => any): any[]; scroll(handler: (field: FieldRef) => void): number; filter(test: (field: FieldRef) => boolean): {}; + reset(): this; + clear(): this; } diff --git a/dist/documents.js b/dist/documents.js index fa34336..b0ee577 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -152,6 +152,24 @@ class Document { }); return data; } + /* + * Sets each document field to its default value. + */ + reset() { + Object.keys(this._fields).forEach((name) => { + this._fields[name].reset(); + }); + return this; + } + /* + * Sets all fileds to `null`. + */ + clear() { + Object.keys(this._fields).forEach((name) => { + this._fields[name].clear(); + }); + return this; + } } exports.Document = Document; // /* @@ -216,19 +234,6 @@ exports.Document = Document; // return error; // } // -// /* -// * Sets each document field to its default value. -// */ -// -// reset (): this { -// let {fields} = this.$schema; -// -// for (let name in fields) { -// this[`$${name}`].reset(); -// } -// -// return this; -// } // // /* // * Sets each document field to its fake value if a fake value generator @@ -245,19 +250,6 @@ exports.Document = Document; // return this; // } // -// /* -// * Removes all fileds values by setting them to `null`. -// */ -// -// clear (): this { -// let {fields} = this.$schema; -// -// for (let name in fields) { -// this[`$${name}`].clear(); -// } -// -// return this; -// } // // /* // * Sets initial value of each document field to the current value of a field. diff --git a/dist/documents.js.map b/dist/documents.js.map index dd6b799..fbf5993 100644 --- a/dist/documents.js.map +++ b/dist/documents.js.map @@ -1 +1 @@ -{"version":3,"file":"documents.js","sourceRoot":"","sources":["../src/documents.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"documents.js","sourceRoot":"","sources":["../src/documents.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/fields.js b/dist/fields.js index 77672c7..0bc1503 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -101,13 +101,14 @@ class Field { */ _cast(data, type) { let converter = type; - if (typeable_1.isPresent(data)) { - let Klass = (typeable_1.isArray(type) ? type[0] : type); - if (Klass && Klass.prototype instanceof documents_1.Document) { - let options = utils_1.merge({}, this.owner.options, { parent: this.owner }); - let toDocument = (d) => new Klass(d, options); - converter = typeable_1.isArray(type) ? [toDocument] : toDocument; - } + if (!typeable_1.isValue(data)) { + return null; + } + let Klass = (typeable_1.isArray(type) ? type[0] : type); + if (Klass && Klass.prototype instanceof documents_1.Document) { + let options = utils_1.merge({}, this.owner.options, { parent: this.owner }); + let toDocument = (d) => new Klass(d, options); + converter = typeable_1.isArray(type) ? [toDocument] : toDocument; } return typeable_1.cast(data, converter); } diff --git a/dist/fields.js.map b/dist/fields.js.map index 87c81a9..3c23022 100644 --- a/dist/fields.js.map +++ b/dist/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/documents.ts b/src/documents.ts index fc62d98..70989de 100644 --- a/src/documents.ts +++ b/src/documents.ts @@ -217,6 +217,30 @@ export class Document { return data; } + /* + * Sets each document field to its default value. + */ + + reset (): this { + Object.keys(this._fields).forEach((name) => { + this._fields[name].reset(); + }); + + return this; + } + + /* + * Sets all fileds to `null`. + */ + + clear (): this { + Object.keys(this._fields).forEach((name) => { + this._fields[name].clear(); + }); + + return this; + } + } @@ -288,19 +312,6 @@ export class Document { // return error; // } // -// /* -// * Sets each document field to its default value. -// */ -// -// reset (): this { -// let {fields} = this.$schema; -// -// for (let name in fields) { -// this[`$${name}`].reset(); -// } -// -// return this; -// } // // /* // * Sets each document field to its fake value if a fake value generator @@ -317,19 +328,6 @@ export class Document { // return this; // } // -// /* -// * Removes all fileds values by setting them to `null`. -// */ -// -// clear (): this { -// let {fields} = this.$schema; -// -// for (let name in fields) { -// this[`$${name}`].clear(); -// } -// -// return this; -// } // // /* // * Sets initial value of each document field to the current value of a field. diff --git a/src/fields.ts b/src/fields.ts index fc55b4c..6fedc27 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -1,4 +1,4 @@ -import {isFunction, isUndefined, isPresent, isArray, cast} from 'typeable'; +import {isFunction, isUndefined, isPresent, isArray, isValue, cast} from 'typeable'; import {serialize, isEqual, merge} from './utils'; import {Validator, ValidatorRecipe} from 'validatable'; import {Document} from './documents'; @@ -168,13 +168,15 @@ export class Field { protected _cast (data, type) { let converter = type; - if (isPresent(data)) { // cast to Document - let Klass = (isArray(type) ? type[0] : type); - if (Klass && Klass.prototype instanceof Document) { - let options = merge({}, this.owner.options, {parent: this.owner}); - let toDocument = (d) => new Klass(d, options); - converter = isArray(type) ? [toDocument] : toDocument; - } + if (!isValue(data)) { + return null; + } + + let Klass = (isArray(type) ? type[0] : type); + if (Klass && Klass.prototype instanceof Document) { + let options = merge({}, this.owner.options, {parent: this.owner}); + let toDocument = (d) => new Klass(d, options); + converter = isArray(type) ? [toDocument] : toDocument; } return cast(data, converter); diff --git a/tests/documents.js b/tests/documents.js index ffbc904..334ea45 100644 --- a/tests/documents.js +++ b/tests/documents.js @@ -341,14 +341,89 @@ test('method `filter` converts a document into serialized object with only keys }); }); +test('method `reset` sets fields to their default values', (t) => { + class Book extends Document { + constructor (data, options) { + super(data, options); + this.defineField('title', {defaultValue: 'foo'}); + this.populate(data); + } + } + class User extends Document { + constructor (data, options) { + super(data, options); + this.defineField('name', {defaultValue: 'bar'}); + this.defineField('book', {type: Book, defaultValue: {}}); + this.defineField('books', {type: [Book], defaultValue: [null, {}]}); + this.populate(data); + } + } + let user = new User({ + name: 'fake', + book: { + title: 'fake' + }, + books: [ + { + title: 'fake' + } + ] + }); + user.reset(); + t.deepEqual(user.serialize(), { + name: 'bar', + book: { + title: 'foo' + }, + books: [ + null, + { + title: 'foo' + } + ] + }); +}); + +test('method `clear` sets fields to `null`', (t) => { + class Book extends Document { + constructor (data, options) { + super(data, options); + this.defineField('title', {defaultValue: 'foo'}); + this.populate(data); + } + } + class User extends Document { + constructor (data, options) { + super(data, options); + this.defineField('name', {defaultValue: 'bar'}); + this.defineField('book', {type: Book, defaultValue: {}}); + this.defineField('books', {type: [Book], defaultValue: [null, {}]}); + this.populate(data); + } + } + let user = new User({ + name: 'fake', + book: { + title: 'fake' + }, + books: [ + { + title: 'fake' + } + ] + }); + user.clear(); + t.deepEqual(user.serialize(), { + name: null, + book: null, + books: null + }); +}); + -// test('method `reset` deeply set fields to their default values', (t) => { -// }); // test('field can have a fake value', (t) => { -// test('method `clear` should deeply clear fields', (t) => { -// test('method `clear` should deeply clear fields', (t) => { // test('method `commit` should deeply reset information about changed fields.', (t) => { // test('method `rollback` should deeply reset fields to their initial values', (t) => { // test('method `isChanged` should return `true` if at least one field has been changed', (t) => { diff --git a/tests/schemas.js- b/tests/schemas.js- deleted file mode 100644 index 5f69a75..0000000 --- a/tests/schemas.js- +++ /dev/null @@ -1,78 +0,0 @@ -// import test from 'ava'; -// import {Schema} from '../dist/index'; - -// test('can be extended through mixins', async (t) => { -// let animalSchema = new Schema({ -// fields: () => ({ -// kind: { -// type: 'String' -// }, -// relatives: { -// type: [animalSchema] -// } -// }), -// strict: true, -// validators: { -// foo: 'foo' -// }, -// types: { -// foo: 'foo' -// }, -// firstErrorOnly: true -// }); -// let dogSchema = new Schema({ -// mixins: [ -// animalSchema -// ], -// fields: () => ({ -// name: { -// type: 'String' -// } -// }), -// strict: false, -// validators: { -// bar: 'bar' -// }, -// types: { -// bar: 'bar' -// }, -// firstErrorOnly: false -// }); -// let catSchema = new Schema({ -// mixins: [ -// dogSchema -// ], -// fields: () => ({ -// dislikes: { -// type: [dogSchema] -// } -// }), -// validators: { -// baz: 'baz' -// }, -// types: { -// baz: 'baz' -// } -// }); - -// let keys = []; -// // fields -// keys = Object.keys(catSchema.fields) // cats -// t.deepEqual(keys, ['kind', 'relatives', 'name', 'dislikes']); -// keys = Object.keys(catSchema.fields.dislikes.type[0].fields) -// t.deepEqual(keys, ['kind', 'relatives', 'name']); // dogs -// keys = Object.keys(catSchema.fields.dislikes.type[0].fields.relatives.type[0].fields) -// t.deepEqual(keys, ['kind', 'relatives']); // animals -// // strict -// t.is(dogSchema.strict, false); -// t.is(catSchema.strict, false); -// // validators -// keys = Object.keys(catSchema.validators) -// t.deepEqual(keys, ['foo', 'bar', 'baz']); -// // types -// keys = Object.keys(catSchema.types) -// t.deepEqual(keys, ['foo', 'bar', 'baz']); -// // firstErrorOnly -// t.is(dogSchema.firstErrorOnly, false); -// t.is(catSchema.firstErrorOnly, false); -// }); From 92a38403d53e1ff59118834bf6dc0c60cd723aaf Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 24 Dec 2016 16:16:31 +0100 Subject: [PATCH 132/219] validation related logic, refactoring --- dist/documents.d.ts | 23 +- dist/documents.js | 374 +++------ dist/documents.js.map | 2 +- dist/fields.d.ts | 2 + dist/fields.js | 62 +- dist/fields.js.map | 2 +- src/documents.ts | 439 +++++----- src/fields.ts | 78 +- tests/documents.js | 1803 +++++++++-------------------------------- tests/fields.js | 30 +- 10 files changed, 816 insertions(+), 1999 deletions(-) diff --git a/dist/documents.d.ts b/dist/documents.d.ts index 0143714..a54b95f 100644 --- a/dist/documents.d.ts +++ b/dist/documents.d.ts @@ -1,8 +1,12 @@ -import { Field, FieldRecipe } from './fields'; +import { Field, FieldRecipe, FieldError } from './fields'; export interface FieldRef { path: string[]; field: Field; } +export interface FieldErrorRef extends Error { + path: string[]; + errors: FieldError[]; +} export interface DocumentOptions { parent?: Document; } @@ -15,6 +19,8 @@ export declare class Document { constructor(data?: any, options?: DocumentOptions); protected _getRootDocument(): Document; protected _createField(recipe?: FieldRecipe): Field; + protected _createValidationError(message?: string, code?: number): FieldError; + protected _createDocument(data?: any, options?: DocumentOptions): any; defineField(name: string, recipe?: FieldRecipe): void; getPath(...keys: any[]): Field; hasPath(...keys: any[]): boolean; @@ -25,5 +31,20 @@ export declare class Document { scroll(handler: (field: FieldRef) => void): number; filter(test: (field: FieldRef) => boolean): {}; reset(): this; + fake(): this; clear(): this; + commit(): this; + rollback(): this; + equals(value: any): boolean; + isChanged(): boolean; + isNested(): boolean; + validate({quiet}?: { + quiet?: boolean; + }): Promise; + collectErrors(): FieldErrorRef[]; + applyErrors(errors?: FieldErrorRef[]): this; + hasErrors(): boolean; + isValid(): boolean; + invalidate(): this; + clone(): this; } diff --git a/dist/documents.js b/dist/documents.js index b0ee577..1e2428f 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -1,4 +1,12 @@ "use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments)).next()); + }); +}; const typeable_1 = require("typeable"); const fields_1 = require("./fields"); const utils_1 = require("./utils"); @@ -51,6 +59,21 @@ class Document { }); } /* + * Creates a new validation error instance. + */ + _createValidationError(message = 'Validation failed', code = 422) { + let error = new Error(message); + error.code = code; + return error; + } + /* + * Creates a new document instance. This method is especially useful when + * extending this class. + */ + _createDocument(data, options) { + return new this.constructor(data, options); + } + /* * Defines a new field property. */ defineField(name, recipe) { @@ -86,11 +109,9 @@ class Document { */ populate(data = {}) { data = utils_1.serialize(data); - Object.keys(data).forEach((name) => { - if (this._fields[name]) { - this[name] = data[name]; - } - }); + Object.keys(data) + .filter((n) => !!this._fields[n]) + .forEach((name) => this[name] = data[name]); return this; } /* @@ -156,249 +177,124 @@ class Document { * Sets each document field to its default value. */ reset() { - Object.keys(this._fields).forEach((name) => { - this._fields[name].reset(); - }); + Object.keys(this._fields) + .forEach((name) => this._fields[name].reset()); + return this; + } + /* + * Resets fields then sets fields to their fake values. + */ + fake() { + Object.keys(this._fields) + .forEach((name) => this._fields[name].fake()); return this; } /* * Sets all fileds to `null`. */ clear() { - Object.keys(this._fields).forEach((name) => { - this._fields[name].clear(); + Object.keys(this._fields) + .forEach((name) => this._fields[name].clear()); + return this; + } + /* + * Resets information about changed fields by setting initial value of each field. + */ + commit() { + Object.keys(this._fields) + .forEach((name) => this._fields[name].commit()); + return this; + } + /* + * Sets each field to its initial value (value before last commit). + */ + rollback() { + Object.keys(this._fields) + .forEach((name) => this._fields[name].rollback()); + return this; + } + /* + * Returns `true` when the `value` represents an object with the + * same field values as the original document. + */ + equals(value) { + return utils_1.isEqual(utils_1.serialize(this), utils_1.serialize(value)); + } + /* + * Returns `true` if at least one field has been changed. + */ + isChanged() { + return Object.keys(this._fields) + .some((name) => this._fields[name].isChanged()); + } + /* + * Returns `true` if nested fields exist. + */ + isNested() { + return Object.keys(this._fields) + .some((name) => this._fields[name].isNested()); + } + /* + * Validates fields and throws an error. + */ + validate({ quiet = false } = {}) { + return __awaiter(this, void 0, void 0, function* () { + let fields = this._fields; + yield Promise.all(Object.keys(fields) + .map((n) => fields[n].validate())); + if (!quiet && this.hasErrors()) { + throw this._createValidationError(); + } + return this; }); + } + /* + * Returns a list of all fields with errors. + */ + collectErrors() { + return this.flatten() + .map(({ path, field }) => ({ path, errors: field.errors })) + .filter(({ path, errors }) => errors.length > 0); + } + /* + * Sets fields errors. + */ + applyErrors(errors = []) { + errors.forEach((error) => { + let field = this.getPath(...error.path); + if (field) { + field.errors = error.errors; + } + }); + return this; + } + /* + * Returns `true` when errors exist (inverse of `isValid`). + */ + hasErrors() { + return Object.keys(this._fields) + .some((name) => this._fields[name].hasErrors()); + } + /* + * Returns `true` when no errors exist (inverse of `hasErrors`). + */ + isValid() { + return !this.hasErrors(); + } + /* + * Removes fields errors. + */ + invalidate() { + Object.keys(this._fields) + .forEach((name) => this._fields[name].invalidate()); return this; } + /* + * Returns a new Document instance which is the exact copy of the original. + */ + clone() { + return this._createDocument(this, this.options); + } } exports.Document = Document; -// /* -// * Field error type definition. -// */ -// -// export interface FieldError extends Error { -// path: string[]; -// errors: any[]; -// } -// -// -// export class Document { -// $schema: Schema; -// $parent: Document; -// $root: Document; -// $validator: Validator; -// -// /* -// * Class constructor. -// */ -// -// constructor (data, schema: Schema, parent?: Document) { -// Object.defineProperty(this, '$schema', { // schema instance -// value: schema || this.$schema -// }); -// Object.defineProperty(this, '$parent', { // parent document instance -// value: parent || null -// }); -// Object.defineProperty(this, '$root', { // root document instance -// get: () => this._getRootDocument() -// }); -// Object.defineProperty(this, '$validator', { // validatable.js instance -// value: this._createValidator() -// }); -// -// this._defineFields(); -// this._populateFields(data); -// } -// -// -// /* -// * Creates a new document instance. This method is especially useful when -// * extending this class. -// */ -// -// _createDocument (data = null, schema = null, parent = null) { -// return new (this.constructor as any)(data, schema, parent); -// } -// -// -// -// /* -// * Creates a new validation error instance. -// */ -// -// _createValidationError (paths) { -// let error: any = new Error('Validation failed'); -// error.code = 422; -// error.paths = paths; -// -// return error; -// } -// -// -// /* -// * Sets each document field to its fake value if a fake value generator -// * is registered, otherwise the default value is used. -// */ -// -// fake (): this { -// let {fields} = this.$schema; -// -// for (let name in fields) { -// this[`$${name}`].fake(); -// } -// -// return this; -// } -// -// -// /* -// * Sets initial value of each document field to the current value of a field. -// */ -// -// commit (): this { -// let {fields} = this.$schema; -// -// for (let name in fields) { -// this[`$${name}`].commit(); -// } -// -// return this; -// } -// -// /* -// * Sets each document field to its initial value (value before last commit). -// */ -// -// rollback (): this { -// let {fields} = this.$schema; -// -// for (let name in fields) { -// this[`$${name}`].rollback(); -// } -// -// return this; -// } -// -// /* -// * Returns `true` when the `value` represents an object with the -// * same field values as the original document. -// */ -// -// equals (value: any): boolean { -// return isEqual( -// serialize(this), -// serialize(value) -// ); -// } -// -// /* -// * Returns a new Document instance which is the exact copy of the original. -// */ -// -// clone (): this { -// return this._createDocument(this, this.$schema, this.$parent); -// } -// -// /* -// * Returns a `true` if at least one field has been changed. -// */ -// -// isChanged (): boolean { -// return Object.keys(this.$schema.fields).some((name) => { -// return this[`$${name}`].isChanged(); -// }); -// } -// -// /* -// * Validates fields and returns errors. -// */ -// -// async validate ({quiet = false}: {quiet?: boolean} = {}): Promise { -// let {fields} = this.$schema; -// -// for (let path in fields) { -// await this[`$${path}`].validate(); -// } -// -// let paths = this.collectErrors().map((e) => e.path); -// if (!quiet && paths.length > 0) { -// throw this._createValidationError(paths); -// } -// -// return this; -// } -// -// /* -// * Validates fields and returns errors. -// */ -// -// invalidate (): this { -// let {fields} = this.$schema; -// -// for (let path in fields) { -// this[`$${path}`].invalidate(); -// } -// -// return this; -// } -// -// /* -// * Returns `true` when all document fields are valid (inverse of `hasErrors`). -// */ -// -// isValid (): boolean { -// return !this.hasErrors(); -// } -// -// /* -// * Returns `true` if nested fields exist. -// */ -// -// isNested (): boolean { -// return Object.keys(this.$schema.fields).some((name) => { -// return this[`$${name}`].isNested(); -// }); -// } -// -// /* -// * Returns `true` when errors exist (inverse of `isValid`). -// */ -// -// hasErrors (): boolean { -// return Object.keys(this.$schema.fields).some((name) => { -// return this[`$${name}`].hasErrors(); -// }); -// } -// -// /* -// * Returns a list of all field-related errors, including those deeply nested. -// */ -// -// collectErrors (): FieldError[] { -// return this.flatten().map(({path, field}) => { -// return {path, errors: field.errors} as FieldError; -// }).filter(({path, errors}) => { -// return errors.length > 0; -// }); -// } -// -// /* -// * Deeply populates fields with the provided `errors`. -// */ -// -// applyErrors (errors: FieldError[] = []): this { -// for (let error of errors) { -// let path = error.path.concat(); -// path[path.length - 1] = `$${path[path.length - 1]}`; -// -// let field = this.getPath(path); -// if (field) { -// field.errors = error.errors; -// } -// } -// -// return this; -// } -// -// } //# sourceMappingURL=documents.js.map \ No newline at end of file diff --git a/dist/documents.js.map b/dist/documents.js.map index fbf5993..356cc25 100644 --- a/dist/documents.js.map +++ b/dist/documents.js.map @@ -1 +1 @@ -{"version":3,"file":"documents.js","sourceRoot":"","sources":["../src/documents.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"documents.js","sourceRoot":"","sources":["../src/documents.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/fields.d.ts b/dist/fields.d.ts index 0576e4a..2efc35f 100644 --- a/dist/fields.d.ts +++ b/dist/fields.d.ts @@ -22,6 +22,8 @@ export interface FieldRecipe { } export interface FieldError { message: string; + name?: string; + code?: number; [key: string]: any; } export declare class Field { diff --git a/dist/fields.js b/dist/fields.js index 0bc1503..65e57d5 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -27,7 +27,7 @@ class Field { value: Object.freeze(options || {}) }); Object.defineProperty(this, '_data', { - value: this._getDefaultValue.bind(this), + value: this._getDefaultValue(), writable: true }); Object.defineProperty(this, '_initialData', { @@ -76,23 +76,24 @@ class Field { */ _getValue() { let data = this._data; - if (typeable_1.isFunction(data)) { - data = data.call(this); - } let { get } = this.recipe; if (typeable_1.isFunction(get)) { data = get.call(this, data); } - return this._cast(data, this.type); + return data; } /* * Sets current field value. */ _setValue(data) { + if (typeable_1.isFunction(data)) { + data = data.call(this); + } let { set } = this.recipe; if (typeable_1.isFunction(set)) { data = set.call(this, data); } + data = this._cast(data, this.type); this.invalidate(); this._data = data; } @@ -104,8 +105,8 @@ class Field { if (!typeable_1.isValue(data)) { return null; } - let Klass = (typeable_1.isArray(type) ? type[0] : type); - if (Klass && Klass.prototype instanceof documents_1.Document) { + if (this.isNested()) { + let Klass = typeable_1.isArray(type) ? type[0] : type; let options = utils_1.merge({}, this.owner.options, { parent: this.owner }); let toDocument = (d) => new Klass(d, options); converter = typeable_1.isArray(type) ? [toDocument] : toDocument; @@ -144,14 +145,20 @@ class Field { * Sets data to the default value. */ reset() { - this.value = this._getDefaultValue.bind(this); + this.value = this._getDefaultValue(); return this; } /* - * Sets data to the fake value. + * Resets the value then sets data to the fake value. */ fake() { - this.value = this._getFakeValue.bind(this); + this.reset(); + if (this.fakeValue) { + this.value = this.fakeValue; + } + (typeable_1.toArray(this.value) || []) // related fake values + .filter((doc) => doc instanceof documents_1.Document) + .map((doc) => doc.fake()); return this; } /* @@ -165,7 +172,11 @@ class Field { * Set's the initial value to the current value. */ commit() { - // this._commitRelated(this.value); + if (typeable_1.isValue(this.value)) { + typeable_1.toArray(this.value) + .filter((v) => v && v.commit) + .forEach((v) => v.commit()); + } this._initialData = utils_1.serialize(this.value); return this; } @@ -209,13 +220,10 @@ class Field { */ validate() { return __awaiter(this, void 0, void 0, function* () { - // let relatives = toArray(this.value) || []; // validate related documents - // for (let relative of relatives) { - // let isDocument = relative instanceof this.$owner.constructor; - // if (isDocument) { - // await relative.validate({quiet: true}); // don't throw - // } - // } + yield Promise.all(// invalidate related documents + (typeable_1.toArray(this.value) || []) + .filter((doc) => doc instanceof documents_1.Document) + .map((doc) => doc.validate({ quiet: true }))); this.errors = yield this._validator.validate(this.value, this.recipe.validate); return this; }); @@ -224,13 +232,9 @@ class Field { * Clears errors. */ invalidate() { - // let relatives = toArray(this.value) || []; // validate related documents - // for (let relative of relatives) { - // let isDocument = relative instanceof this.$owner.constructor; - // if (isDocument) { - // relative.invalidate(); - // } - // } + (typeable_1.toArray(this.value) || []) // invalidate related documents + .filter((doc) => doc instanceof documents_1.Document) + .forEach((doc) => doc.invalidate()); this.errors = []; return this; } @@ -244,9 +248,11 @@ class Field { else if (!this.isNested()) { return false; } - // else { - // return toArray(this.value).filter((f) => !!f).some((f) => f.hasErrors()) - // } + else { + return typeable_1.toArray(this.value) + .filter((f) => !!f) + .some((f) => f.hasErrors()); + } } /* * Returns `true` when the value is valid (inverse of `hasErrors`). diff --git a/dist/fields.js.map b/dist/fields.js.map index 3c23022..6fb92d6 100644 --- a/dist/fields.js.map +++ b/dist/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/documents.ts b/src/documents.ts index 70989de..5992e5e 100644 --- a/src/documents.ts +++ b/src/documents.ts @@ -1,6 +1,6 @@ import {isArray, isUndefined, isPresent} from 'typeable'; -import {Field, FieldRecipe} from './fields'; -import {serialize} from './utils'; +import {Field, FieldRecipe, FieldError} from './fields'; +import {serialize, isEqual} from './utils'; /* * Flattened field reference type definition. @@ -11,6 +11,15 @@ export interface FieldRef { field: Field; } +/* +* Field error type definition. +*/ + +export interface FieldErrorRef extends Error { + path: string[]; + errors: FieldError[]; +} + /* * Document options interface. */ @@ -81,6 +90,26 @@ export class Document { }); } + /* + * Creates a new validation error instance. + */ + + protected _createValidationError (message = 'Validation failed', code = 422): FieldError { + let error: FieldError = new Error(message); + error.code = code; + + return error; + } + + /* + * Creates a new document instance. This method is especially useful when + * extending this class. + */ + + protected _createDocument (data?, options?: DocumentOptions) { + return new (this.constructor as any)(data, options); + } + /* * Defines a new field property. */ @@ -129,11 +158,9 @@ export class Document { public populate (data = {}): this { data = serialize(data); - Object.keys(data).forEach((name) => { - if (this._fields[name]) { - this[name] = data[name]; - } - }); + Object.keys(data) + .filter((n) => !!this._fields[n]) + .forEach((name) => this[name] = data[name]); return this; } @@ -170,9 +197,9 @@ export class Document { else if (isArray(type) && type[0].prototype instanceof Document) { fields = fields.concat( value - .map((f, i) => (f ? f.flatten(path.concat([i])) : null)) - .filter((f) => isArray(f)) - .reduce((a, b) => a.concat(b)) + .map((f, i) => (f ? f.flatten(path.concat([i])) : null)) + .filter((f) => isArray(f)) + .reduce((a, b) => a.concat(b)) ); } } @@ -206,13 +233,13 @@ export class Document { let data = serialize(this); this.flatten() - .sort((a, b) => b.path.length - a.path.length) - .filter((field) => !test(field)) - .forEach((field) => { - let names = field.path.concat(); - let lastName = names.pop(); - delete names.reduce((o, k) => o[k], data)[lastName]; - }); + .sort((a, b) => b.path.length - a.path.length) + .filter((field) => !test(field)) + .forEach((field) => { + let names = field.path.concat(); + let lastName = names.pop(); + delete names.reduce((o, k) => o[k], data)[lastName]; + }); return data; } @@ -222,9 +249,19 @@ export class Document { */ reset (): this { - Object.keys(this._fields).forEach((name) => { - this._fields[name].reset(); - }); + Object.keys(this._fields) + .forEach((name) => this._fields[name].reset()); + + return this; + } + + /* + * Resets fields then sets fields to their fake values. + */ + + fake (): this { + Object.keys(this._fields) + .forEach((name) => this._fields[name].fake()); return this; } @@ -234,248 +271,146 @@ export class Document { */ clear (): this { - Object.keys(this._fields).forEach((name) => { - this._fields[name].clear(); + Object.keys(this._fields) + .forEach((name) => this._fields[name].clear()); + + return this; + } + + /* + * Resets information about changed fields by setting initial value of each field. + */ + + commit (): this { + Object.keys(this._fields) + .forEach((name) => this._fields[name].commit()); + + return this; + } + + /* + * Sets each field to its initial value (value before last commit). + */ + + rollback (): this { + Object.keys(this._fields) + .forEach((name) => this._fields[name].rollback()); + + return this; + } + + /* + * Returns `true` when the `value` represents an object with the + * same field values as the original document. + */ + + equals (value: any): boolean { + return isEqual( + serialize(this), + serialize(value) + ); + } + + /* + * Returns `true` if at least one field has been changed. + */ + + isChanged (): boolean { + return Object.keys(this._fields) + .some((name) => this._fields[name].isChanged()); + } + + /* + * Returns `true` if nested fields exist. + */ + + isNested (): boolean { + return Object.keys(this._fields) + .some((name) => this._fields[name].isNested()); + } + + /* + * Validates fields and throws an error. + */ + + async validate ({ + quiet = false + }: { + quiet?: boolean + } = {}): Promise { + let fields = this._fields; + + await Promise.all( + Object.keys(fields) + .map((n) => fields[n].validate()) + ); + + if (!quiet && this.hasErrors()) { + throw this._createValidationError(); + } + + return this; + } + + /* + * Returns a list of all fields with errors. + */ + + collectErrors (): FieldErrorRef[] { + return this.flatten() + .map(({path, field}) => ({path, errors: field.errors} as FieldErrorRef)) + .filter(({path, errors}) => errors.length > 0); + } + + /* + * Sets fields errors. + */ + + applyErrors (errors: FieldErrorRef[] = []): this { + errors.forEach((error) => { + let field = this.getPath(...error.path); + if (field) { + field.errors = error.errors; + } }); return this; } -} + /* + * Returns `true` when errors exist (inverse of `isValid`). + */ + + hasErrors (): boolean { + return Object.keys(this._fields) + .some((name) => this._fields[name].hasErrors()); + } + /* + * Returns `true` when no errors exist (inverse of `hasErrors`). + */ + isValid (): boolean { + return !this.hasErrors(); + } + /* + * Removes fields errors. + */ + invalidate (): this { + Object.keys(this._fields) + .forEach((name) => this._fields[name].invalidate()); + return this; + } + /* + * Returns a new Document instance which is the exact copy of the original. + */ + clone (): this { + return this._createDocument(this, this.options); + } -// /* -// * Field error type definition. -// */ -// -// export interface FieldError extends Error { -// path: string[]; -// errors: any[]; -// } -// -// -// export class Document { -// $schema: Schema; -// $parent: Document; -// $root: Document; -// $validator: Validator; -// -// /* -// * Class constructor. -// */ -// -// constructor (data, schema: Schema, parent?: Document) { -// Object.defineProperty(this, '$schema', { // schema instance -// value: schema || this.$schema -// }); -// Object.defineProperty(this, '$parent', { // parent document instance -// value: parent || null -// }); -// Object.defineProperty(this, '$root', { // root document instance -// get: () => this._getRootDocument() -// }); -// Object.defineProperty(this, '$validator', { // validatable.js instance -// value: this._createValidator() -// }); -// -// this._defineFields(); -// this._populateFields(data); -// } -// -// -// /* -// * Creates a new document instance. This method is especially useful when -// * extending this class. -// */ -// -// _createDocument (data = null, schema = null, parent = null) { -// return new (this.constructor as any)(data, schema, parent); -// } -// -// -// -// /* -// * Creates a new validation error instance. -// */ -// -// _createValidationError (paths) { -// let error: any = new Error('Validation failed'); -// error.code = 422; -// error.paths = paths; -// -// return error; -// } -// -// -// /* -// * Sets each document field to its fake value if a fake value generator -// * is registered, otherwise the default value is used. -// */ -// -// fake (): this { -// let {fields} = this.$schema; -// -// for (let name in fields) { -// this[`$${name}`].fake(); -// } -// -// return this; -// } -// -// -// /* -// * Sets initial value of each document field to the current value of a field. -// */ -// -// commit (): this { -// let {fields} = this.$schema; -// -// for (let name in fields) { -// this[`$${name}`].commit(); -// } -// -// return this; -// } -// -// /* -// * Sets each document field to its initial value (value before last commit). -// */ -// -// rollback (): this { -// let {fields} = this.$schema; -// -// for (let name in fields) { -// this[`$${name}`].rollback(); -// } -// -// return this; -// } -// -// /* -// * Returns `true` when the `value` represents an object with the -// * same field values as the original document. -// */ -// -// equals (value: any): boolean { -// return isEqual( -// serialize(this), -// serialize(value) -// ); -// } -// -// /* -// * Returns a new Document instance which is the exact copy of the original. -// */ -// -// clone (): this { -// return this._createDocument(this, this.$schema, this.$parent); -// } -// -// /* -// * Returns a `true` if at least one field has been changed. -// */ -// -// isChanged (): boolean { -// return Object.keys(this.$schema.fields).some((name) => { -// return this[`$${name}`].isChanged(); -// }); -// } -// -// /* -// * Validates fields and returns errors. -// */ -// -// async validate ({quiet = false}: {quiet?: boolean} = {}): Promise { -// let {fields} = this.$schema; -// -// for (let path in fields) { -// await this[`$${path}`].validate(); -// } -// -// let paths = this.collectErrors().map((e) => e.path); -// if (!quiet && paths.length > 0) { -// throw this._createValidationError(paths); -// } -// -// return this; -// } -// -// /* -// * Validates fields and returns errors. -// */ -// -// invalidate (): this { -// let {fields} = this.$schema; -// -// for (let path in fields) { -// this[`$${path}`].invalidate(); -// } -// -// return this; -// } -// -// /* -// * Returns `true` when all document fields are valid (inverse of `hasErrors`). -// */ -// -// isValid (): boolean { -// return !this.hasErrors(); -// } -// -// /* -// * Returns `true` if nested fields exist. -// */ -// -// isNested (): boolean { -// return Object.keys(this.$schema.fields).some((name) => { -// return this[`$${name}`].isNested(); -// }); -// } -// -// /* -// * Returns `true` when errors exist (inverse of `isValid`). -// */ -// -// hasErrors (): boolean { -// return Object.keys(this.$schema.fields).some((name) => { -// return this[`$${name}`].hasErrors(); -// }); -// } -// -// /* -// * Returns a list of all field-related errors, including those deeply nested. -// */ -// -// collectErrors (): FieldError[] { -// return this.flatten().map(({path, field}) => { -// return {path, errors: field.errors} as FieldError; -// }).filter(({path, errors}) => { -// return errors.length > 0; -// }); -// } -// -// /* -// * Deeply populates fields with the provided `errors`. -// */ -// -// applyErrors (errors: FieldError[] = []): this { -// for (let error of errors) { -// let path = error.path.concat(); -// path[path.length - 1] = `$${path[path.length - 1]}`; -// -// let field = this.getPath(path); -// if (field) { -// field.errors = error.errors; -// } -// } -// -// return this; -// } -// -// } +} diff --git a/src/fields.ts b/src/fields.ts index 6fedc27..44963c5 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -1,4 +1,4 @@ -import {isFunction, isUndefined, isPresent, isArray, isValue, cast} from 'typeable'; +import {isFunction, isUndefined, isPresent, isArray, toArray, isValue, cast} from 'typeable'; import {serialize, isEqual, merge} from './utils'; import {Validator, ValidatorRecipe} from 'validatable'; import {Document} from './documents'; @@ -42,6 +42,8 @@ export interface FieldRecipe { export interface FieldError { message: string; + name?: string; + code?: number; [key: string]: any; } @@ -78,7 +80,7 @@ export class Field { }); Object.defineProperty(this, '_data', { // current value - value: this._getDefaultValue.bind(this), + value: this._getDefaultValue(), writable: true }); Object.defineProperty(this, '_initialData', { // last commited value @@ -134,16 +136,13 @@ export class Field { protected _getValue () { let data = this._data; - if (isFunction(data)) { - data = data.call(this); - } let {get} = this.recipe; if (isFunction(get)) { data = get.call(this, data); } - - return this._cast(data, this.type); + + return data; } /* @@ -151,11 +150,17 @@ export class Field { */ protected _setValue (data) { + if (isFunction(data)) { + data = data.call(this); + } + let {set} = this.recipe; if (isFunction(set)) { data = set.call(this, data); } + data = this._cast(data, this.type); + this.invalidate(); this._data = data; @@ -172,8 +177,8 @@ export class Field { return null; } - let Klass = (isArray(type) ? type[0] : type); - if (Klass && Klass.prototype instanceof Document) { + if (this.isNested()) { + let Klass = isArray(type) ? type[0] : type; let options = merge({}, this.owner.options, {parent: this.owner}); let toDocument = (d) => new Klass(d, options); converter = isArray(type) ? [toDocument] : toDocument; @@ -206,7 +211,7 @@ export class Field { protected _getFakeValue () { let data = null; - + let {fakeValue} = this.recipe; if (isFunction(fakeValue)) { data = fakeValue.call(this); @@ -223,17 +228,25 @@ export class Field { */ public reset (): this { - this.value = this._getDefaultValue.bind(this); + this.value = this._getDefaultValue(); return this; } /* - * Sets data to the fake value. + * Resets the value then sets data to the fake value. */ public fake (): this { - this.value = this._getFakeValue.bind(this); + this.reset(); + + if (this.fakeValue) { + this.value = this.fakeValue; + } + + (toArray(this.value) || []) // related fake values + .filter((doc) => doc instanceof Document) + .map((doc) => doc.fake()); return this; } @@ -253,7 +266,12 @@ export class Field { */ public commit (): this { - // this._commitRelated(this.value); + if (isValue(this.value)) { + toArray(this.value) + .filter((v) => v && v.commit) + .forEach((v) => v.commit()); + } + this._initialData = serialize(this.value); return this; @@ -316,14 +334,11 @@ export class Field { */ public async validate (): Promise { - // let relatives = toArray(this.value) || []; // validate related documents - // for (let relative of relatives) { - // let isDocument = relative instanceof this.$owner.constructor; - - // if (isDocument) { - // await relative.validate({quiet: true}); // don't throw - // } - // } + await Promise.all( // invalidate related documents + (toArray(this.value) || []) + .filter((doc) => doc instanceof Document) + .map((doc) => doc.validate({quiet: true})) + ); this.errors = await this._validator.validate( this.value, @@ -338,14 +353,9 @@ export class Field { */ public invalidate (): this { - // let relatives = toArray(this.value) || []; // validate related documents - // for (let relative of relatives) { - // let isDocument = relative instanceof this.$owner.constructor; - - // if (isDocument) { - // relative.invalidate(); - // } - // } + (toArray(this.value) || []) // invalidate related documents + .filter((doc) => doc instanceof Document) + .forEach((doc) => doc.invalidate()); this.errors = []; @@ -363,9 +373,11 @@ export class Field { else if (!this.isNested()) { return false; } - // else { - // return toArray(this.value).filter((f) => !!f).some((f) => f.hasErrors()) - // } + else { + return toArray(this.value) + .filter((f) => !!f) + .some((f) => f.hasErrors()); + } } /* diff --git a/tests/documents.js b/tests/documents.js index 334ea45..4bffacb 100644 --- a/tests/documents.js +++ b/tests/documents.js @@ -138,8 +138,11 @@ test('method `getPath` returns an instance of a field at path', (t) => { ] }); t.is(user.getPath(['name']).value, 'foo'); + t.is(user.getPath('name').value, 'foo'); t.is(user.getPath(['book', 'title']).value, 'bar'); + t.is(user.getPath('book', 'title').value, 'bar'); t.is(user.getPath(['books', 1, 'title']).value, 'baz'); + t.is(user.getPath('books', 1, 'title').value, 'baz'); t.is(user.getPath(['fake']), undefined); t.is(user.getPath(['fake', 10, 'title']), undefined); t.is(user.getPath(), undefined); @@ -384,6 +387,39 @@ test('method `reset` sets fields to their default values', (t) => { }); }); +test('method `fake` sets fields to their fake values', (t) => { + class Book extends Document { + constructor (data, options) { + super(data, options); + this.defineField('title', {fakeValue: 'foo'}); + this.populate(data); + } + } + class User extends Document { + constructor (data, options) { + super(data, options); + this.defineField('name', {fakeValue: 'bar'}); + this.defineField('book', {type: Book, defaultValue: {}}); + this.defineField('books', {type: [Book], defaultValue: [null, {}]}); + this.populate(data); + } + } + let user = new User(); + user.fake(); + t.deepEqual(user.serialize(), { + name: 'bar', + book: { + title: 'foo' + }, + books: [ + null, + { + title: 'foo' + } + ] + }); +}); + test('method `clear` sets fields to `null`', (t) => { class Book extends Document { constructor (data, options) { @@ -420,1444 +456,347 @@ test('method `clear` sets fields to `null`', (t) => { }); }); +test('methods `commit()` and `rollback()` manage committed states', (t) => { + class Book extends Document { + constructor (data, options) { + super(data, options); + this.defineField('title'); + this.populate(data); + } + } + class User extends Document { + constructor (data, options) { + super(data, options); + this.defineField('name'); + this.defineField('book', {type: Book}); + this.defineField('books', {type: [Book]}); + this.populate(data); + } + } + let user = new User({ + name: 'foo', + book: { + title: 'bar' + }, + books: [ + { + title: 'baz' + } + ] + }); + user.commit(); + t.is(user.getPath('name').initialValue, 'foo'); + t.is(user.getPath('book', 'title').initialValue, 'bar'); + t.is(user.getPath('books', 0, 'title').initialValue, 'baz'); + user.populate({ + name: 'foo-new', + book: { + title: 'bar-new' + }, + books: [ + { + title: 'baz-new' + } + ] + }); + user.rollback(); + t.is(user.getPath('name').value, 'foo'); + t.is(user.getPath('book', 'title').value, 'bar'); + t.is(user.getPath('books', 0, 'title').value, 'baz'); +}); +test('method `equals` returns `true` when the passing object looks the same', (t) => { + class Book extends Document { + constructor (data, options) { + super(data, options); + this.defineField('title'); + this.populate(data); + } + } + class User extends Document { + constructor (data, options) { + super(data, options); + this.defineField('name'); + this.defineField('book', {type: Book}); + this.defineField('books', {type: [Book]}); + this.populate(data); + } + } + let data = { + name: 'foo', + book: { + title: 'bar' + }, + books: [ + null, + { + title: 'baz' + } + ] + }; + t.is(new User(data).equals(new User(data)), true); +}); +test('method `isChanged` returns `true` if at least one field has been changed', (t) => { + class Book extends Document { + constructor (data, options) { + super(data, options); + this.defineField('title'); + this.populate(data); + this.commit(); + } + } + class User extends Document { + constructor (data, options) { + super(data, options); + this.defineField('name'); + this.defineField('book', {type: Book}); + this.defineField('books', {type: [Book]}); + this.populate(data); + this.commit(); + } + } + let data = { + name: 'foo', + book: { + title: 'bar' + }, + books: [ + null, + { + title: 'baz' + } + ] + }; + let user0 = new User(data); + let user1 = new User(data); + let user2 = new User(data); + let user3 = new User(data); + t.is(user0.isChanged(), false); + user0.name = 'foo-new'; + user1.book.title = 'bar-new'; + user2.books[0] = {title: 'baz-new'}; + user3.books[1].title = 'baz-new'; + t.is(user0.isChanged(), true); + t.is(user1.isChanged(), true); + t.is(user2.isChanged(), true); + t.is(user3.isChanged(), true); +}); -// test('field can have a fake value', (t) => { -// test('method `commit` should deeply reset information about changed fields.', (t) => { -// test('method `rollback` should deeply reset fields to their initial values', (t) => { -// test('method `isChanged` should return `true` if at least one field has been changed', (t) => { -// test('method `isNested` should return `true` if nested fields exist', (t) => { -// test('method `equals` should return `true` when the passing object looks the same', (t) => { -// test('method `clone` should return an exact copy of the original', (t) => { -// test('method `validate` should validate all fields and throw an error', async (t) => { -// test('methods `isValid` and `hasErrors` should tell if fields are valid', async (t) => { -// test('method `invalidate` should clear errors on all fields', async (t) => { -// test('method `collectErrors` should return an array of field errors', async (t) => { -// test('method `applyErrors` should set field `errors` property', async (t) => { - - - - - - - - - - -// test('field value should be converted to the specified type', (t) => { - -// class Book extends Document { -// public title: string; -// constructor () { -// super(); -// this.defineField('title', {type: 'String'}); -// } -// } - -// class User extends Document { -// public name: string; -// public book: Book; -// public books: Book[]; -// constructor () { -// super(); -// this.defineField('name', {type: 'String'}); -// this.defineField('book', {type: [Book]}); -// } -// } - -// let user = new User(); - -// }); - - -// test('field value should be converted to the specified type', (t) => { -// let bookSchema = new Schema({ -// fields: () => ({ -// title: { -// type: 'String' -// }, -// year: { -// type: 'Integer' -// }, -// book: { -// type: bookSchema -// } -// }) -// }); -// let userSchema = new Schema({ -// fields: { -// name: { -// type: 'String' -// }, -// age: { -// type: 'Integer' -// }, -// enabled: { -// type: 'Boolean' -// }, -// book: { -// type: bookSchema -// }, -// books: { -// type: [bookSchema] -// }, -// tags: { -// type: ['String'] -// }, -// keywords: { -// type: [] -// } -// } -// }); -// let data = { -// name: 100, -// age: '35', -// enabled: 'true', -// book: { -// title: 100, -// book: { -// title: 200 -// } -// }, -// books: [ -// { -// title: 100 -// } -// ], -// tags: ['foo', 'bar', 100, null], -// keywords: ['foo', 'bar', 100, null] -// }; -// let user = new Document(data, userSchema); - -// t.is(user.name, '100'); -// t.is(user.age, 35); -// t.is(user.enabled, true); -// t.is(user.book.title, '100'); -// t.is(user.book.year, null); -// t.is(user.book.book.title, '200'); -// t.is(user.books[0].title, '100'); -// t.is(user.books[0].year, null); -// t.deepEqual(user.tags, ['foo', 'bar', '100', null]); -// t.deepEqual(user.keywords, ['foo', 'bar', 100, null]); -// }); - -// test('field can be of a custom type', (t) => { -// let schema = new Schema({ -// fields: { -// name: { -// type: 'cool' -// } -// }, -// types: { -// cool: (v) => `${v}-cool` -// } -// }); -// let data = { -// name: 100 -// }; -// let user = new Document(data, schema); - -// t.is(user.name, '100-cool'); -// }); - -// test('field can have a default value', (t) => { -// let bookSchema = new Schema({ -// fields: { -// title: { -// type: 'String', -// defaultValue: () => 100 -// } -// } -// }); -// let userSchema = new Schema({ -// fields: { -// name: { -// type: 'String', -// defaultValue () { return this instanceof Field ? 'yes' : 'no' } // Field context -// }, -// age: { -// type: 'Integer', -// defaultValue: '35' -// }, -// enabled: { -// type: 'Boolean', -// defaultValue: () => true -// }, -// book: { -// type: bookSchema -// }, -// books: { -// type: [bookSchema] -// }, -// papers: { -// type: [bookSchema], -// defaultValue: [ -// { -// title: 'Foo' -// } -// ] -// } -// } -// }); -// let data = { -// books: [ -// null, -// { -// title: 100 -// } -// ] -// }; -// let user0 = new Document(null, userSchema); -// let user1 = new Document(data, userSchema); -// let book0 = new Document(null, bookSchema); -// let book1 = new Document(data.books[1], bookSchema); - -// t.is(user0.name, 'yes'); -// t.is(user0.$name.defaultValue, 'yes'); -// t.is(user0.age, 35); -// t.is(user0.enabled, true); -// t.is(user0.book, null); - -// t.deepEqual(user0.papers[0].title, 'Foo'); -// t.deepEqual(user1.books, [null, book1]); -// t.is(user1.books[0], null); -// t.is(user1.books[1].title, '100'); -// }); - -// test('field can have a fake value', (t) => { -// let bookSchema = new Schema({ -// fields: { -// title: { -// type: 'String', -// fakeValue: () => 100 -// } -// } -// }); -// let userSchema = new Schema({ -// fields: { -// name: { -// type: 'String', -// fakeValue () { return this instanceof Field ? 'yes' : 'no' } // Field context -// }, -// age: { -// type: 'Integer', -// defaultValue: '35' -// }, -// enabled: { -// type: 'Boolean', -// fakeValue: () => true -// }, -// papers: { -// type: [bookSchema], -// defaultValue: [ -// { -// title: 'Foo' -// } -// ] -// } -// } -// }); -// let user0 = new Document(null, userSchema); -// let user1 = new Document(null, userSchema); - -// t.is(user0.$name.fakeValue, 'yes'); -// t.is(user0.$age.fakeValue, null); -// t.is(user0.$enabled.fakeValue, true); - -// t.is(user0.$name.value, null); -// user0.$name.fake(); -// t.is(user0.$name.value, 'yes'); - -// user0.$age.clear(); -// t.is(user0.$age.value, null); -// user0.$age.fake(); -// t.is(user0.$age.value, 35); - -// user0.$papers.clear(); -// t.is(user0.papers, null); -// user0.$papers.fake(); -// t.is(user0.papers.length, 1); - -// t.is(user1.$name.value, null); -// user1.fake(); -// t.is(user1.$name.value, 'yes'); -// }); - -// test('field can be transformed through custom setter and getter', (t) => { -// let userSchema = new Schema({ -// fields: { -// name: { -// type: 'String', -// defaultValue: 100, -// get: (value) => `${value}-get`, -// set: (value) => `${value}-set` -// } -// } -// }); -// let user = new Document(null, userSchema); - -// t.is(user.name, '100-set-get'); -// }); - -// test('method `populate` should not set custom fields when schema strict=true', (t) => { -// let userSchema = new Schema({ -// strict: true, -// fields: { -// name: { -// type: 'String' -// } -// } -// }); -// let data = { -// name: 'John', -// age: 35.5 -// }; -// let user = new Document(null, userSchema); -// user.populate(data); - -// t.is(user.name, 'John'); -// t.is(user.age, undefined); -// }); - -// test('method `populate` should set custom fields when schema strict=false', (t) => { -// let userSchema = new Schema({ -// strict: false, -// fields: { -// name: { -// type: 'String', -// defaultValue: 100 -// } -// } -// }); -// let data = { -// name: 'John', -// age: 35.5 -// }; -// let user = new Document(null, userSchema); -// user.populate(data); - -// t.is(user.name, 'John'); -// t.is(user.age, 35.5); -// }); - -// test('variable `$parent` should return the parent document', (t) => { -// let bookSchema = new Schema({ -// fields: { -// title: { -// type: 'String' -// } -// } -// }); -// let userSchema = new Schema({ -// fields: { -// name: { -// type: 'String' -// }, -// book: { -// type: bookSchema -// }, -// books: { -// type: [bookSchema] -// } -// } -// }); -// let data = { -// book: { -// title: null -// }, -// books: [ -// { -// title: null -// } -// ] -// }; -// let user = new Document(data, userSchema); - -// t.is(user.$parent, null); -// t.is(user.book.$parent, user); -// t.is(user.books[0].$parent, user); -// }); - -// test('variable `$root` should return the first document in a tree of nested documents', (t) => { -// let bookSchema = new Schema({ -// fields: { -// title: { -// type: 'String' -// } -// } -// }); -// let userSchema = new Schema({ -// fields: { -// name: { -// type: 'String' -// }, -// book: { -// type: bookSchema -// }, -// books: { -// type: [bookSchema] -// } -// } -// }); -// let data = { -// book: { -// title: null -// }, -// books: [ -// { -// title: null -// } -// ] -// }; -// let user = new Document(data, userSchema); - -// t.is(user.$root, user); -// t.is(user.book.$root, user); -// t.is(user.books[0].$root, user); -// }); - -// test('method `getPath` should return an instance of a field at path', (t) => { -// let bookSchema = new Schema({ -// fields: { -// title: { -// type: 'String' -// } -// } -// }); -// let userSchema = new Schema({ -// fields: { -// name: { -// type: 'String' -// }, -// book: { -// type: bookSchema -// }, -// books: { -// type: [bookSchema] -// } -// } -// }); -// let data = { -// name: 'Foo', -// book: { -// title: 'Bar' -// }, -// books: [ -// { -// title: 'Baz' -// } -// ] -// }; -// let user0 = new Document(null, userSchema); -// let user1 = new Document(data, userSchema); - -// t.is(user0.getPath('name'), null); -// t.is(user1.getPath('name'), 'Foo'); -// t.is(user1.getPath('$name').value, 'Foo'); -// t.is(user0.getPath('book', 'title'), undefined); -// t.is(user1.getPath('book', 'title'), 'Bar'); -// t.is(user0.getPath('books', 0, 'title'), undefined); -// t.is(user1.getPath('books', 0, '$title').value, 'Baz'); -// }); - -// test('method `hasPath` should check field existance at path', (t) => { -// let bookSchema = new Schema({ -// fields: { -// title: { -// type: 'String' -// } -// } -// }); -// let userSchema = new Schema({ -// fields: { -// name: { -// type: 'String' -// }, -// book: { -// type: bookSchema -// }, -// books: { -// type: [bookSchema] -// } -// } -// }); -// let data = { -// name: 100, -// book: { -// title: 100 -// }, -// books: [ -// { -// title: 100 -// } -// ] -// }; -// let user0 = new Document(null, userSchema); -// let user1 = new Document(data, userSchema); - -// t.is(user0.hasPath('name'), true); -// t.is(user0.hasPath('book', 'title'), false); -// t.is(user0.hasPath('books', 0, 'title'), false); -// t.is(user0.hasPath(['books', 0, 'title']), false); -// t.is(user1.hasPath('name'), true); -// t.is(user1.hasPath('book', 'title'), true); -// t.is(user1.hasPath('books', 0, 'title'), true); -// t.is(user1.hasPath(['books', 0, 'title']), true); -// }); - -// test('method `flatten` should return an array of fields', async (t) => { -// let styleSchema = new Schema({ -// fields: { -// kind: { -// type: 'String' -// } -// } -// }); -// let bookSchema = new Schema({ -// fields: { -// title: { -// type: 'String' -// }, -// style: { -// type: styleSchema -// } -// } -// }); -// let userSchema = new Schema({ -// fields: { -// name: { -// type: 'String' -// }, -// newBook: { -// type: bookSchema -// }, -// newBooks: { -// type: [bookSchema] -// }, -// oldBook: { -// type: bookSchema -// }, -// oldBooks: { -// type: [bookSchema] -// } -// } -// }); -// let data = { -// name: 'John Smith', -// newBook: { -// title: 100, -// style: { -// kind: 'foo' -// } -// }, -// newBooks: [ -// null, -// { -// title: 100, -// style: { -// kind: 'foo' -// } -// } -// ], -// oldBook: null, -// oldBooks: [] -// }; -// let user = new Document(data, userSchema); - -// t.deepEqual(user.flatten().map((f) => f.path), [ -// ['name'], -// ['newBook'], -// ['newBook', 'title'], -// ['newBook', 'style'], -// ['newBook', 'style', 'kind'], -// ['newBooks'], -// ['newBooks', 1, 'title'], -// ['newBooks', 1, 'style'], -// ['newBooks', 1, 'style', 'kind'], -// ['oldBook'], -// ['oldBooks'] -// ]); -// }); - -// test('method `serialize` should convert a document into serialized data object', (t) => { -// let bookSchema = new Schema({ -// fields: { -// title: { -// type: 'String', -// defaultValue: 100 -// }, -// year: { -// type: 'Integer' -// } -// } -// }); -// let userSchema = new Schema({ -// fields: { -// name: { -// type: 'String' -// }, -// age: { -// type: 'float' -// }, -// enabled: { -// type: 'Boolean' -// }, -// newBook: { -// type: bookSchema -// }, -// newBooks: { -// type: [bookSchema] -// }, -// oldBook: { -// type: bookSchema -// }, -// oldBooks: { -// type: [bookSchema] -// } -// } -// }); -// let data = { -// name: 'John Smith', -// newBook: { -// title: 100 -// }, -// newBooks: [ -// null, -// { -// title: 100 -// } -// ] -// }; -// let user = new Document(data, userSchema); - -// t.deepEqual(user.serialize(), { -// name: 'John Smith', -// age: null, -// enabled: null, -// newBook: { -// title: '100', -// year: null -// }, -// newBooks: [ -// null, -// { -// title: '100', -// year: null -// } -// ], -// oldBook: null, -// oldBooks: null -// }); -// }); - -// test('method `reset` should deeply set fields to their default values and invalidate the errors', (t) => { -// let bookSchema = new Schema({ -// fields: { -// title: { -// type: 'String', -// defaultValue: 'Foo' -// } -// } -// }); -// let userSchema = new Schema({ -// fields: { -// name: { -// type: 'String', -// defaultValue: 'Bar' -// }, -// book: { -// type: bookSchema, -// defaultValue: { -// title: 'Baz' -// } -// }, -// books: { -// type: [bookSchema], -// defaultValue: [ -// { -// title: 'Qux' -// } -// ] -// } -// } -// }); -// let data = { -// name: 100, -// book: { -// title: 'Quux' -// }, -// books: [ -// { -// title: 'Corge' -// }, -// { -// title: 'Grault' -// } -// ] -// }; -// let user = new Document(null, userSchema); -// user.populate(data); -// user.$name._errors = ['foo']; - -// user.reset(); - -// t.deepEqual(user.$name.errors, []); -// t.deepEqual(user.serialize(), { -// name: 'Bar', -// book: { -// title: 'Baz' -// }, -// books: [ -// { -// title: 'Qux' -// } -// ] -// }); -// }); - -// test('method `clear` should deeply clear fields', (t) => { -// let bookSchema = new Schema({ -// fields: { -// title: { -// type: 'String', -// defaultValue: 'Foo' -// } -// } -// }); -// let userSchema = new Schema({ -// fields: { -// name: { -// type: 'String', -// defaultValue: 'Bar' -// }, -// book: { -// type: bookSchema, -// defaultValue: { -// title: 'Baz' -// } -// }, -// books: { -// type: [bookSchema], -// defaultValue: [ -// { -// title: 'Qux' -// } -// ] -// } -// } -// }); -// let user = new Document(null, userSchema); -// user.clear(); - -// t.deepEqual(user.serialize(), { -// name: null, -// book: null, -// books: null -// }); -// }); - -// test('method `clear` should deeply clear fields', (t) => { -// let bookSchema = new Schema({ -// fields: { -// title: { -// type: 'String', -// defaultValue: 'Foo' -// } -// } -// }); -// let userSchema = new Schema({ -// fields: { -// name: { -// type: 'String', -// defaultValue: 'Bar' -// }, -// book: { -// type: bookSchema, -// defaultValue: { -// title: 'Baz' -// } -// }, -// books: { -// type: [bookSchema], -// defaultValue: [ -// { -// title: 'Qux' -// } -// ] -// } -// } -// }); -// let user = new Document(null, userSchema); -// user.clear(); - -// t.deepEqual(user.serialize(), { -// name: null, -// book: null, -// books: null -// }); -// }); - -// test('method `commit` should deeply reset information about changed fields.', (t) => { -// let bookSchema = new Schema({ -// fields: { -// title: { -// type: 'String', -// defaultValue: 'Foo' -// } -// } -// }); -// let userSchema = new Schema({ -// fields: { -// name: { -// type: 'String', -// defaultValue: 'Bar' -// }, -// book: { -// type: bookSchema, -// defaultValue: { -// title: 'Baz' -// } -// }, -// books: { -// type: [bookSchema], -// defaultValue: [ -// { -// title: 'Qux' -// } -// ] -// } -// } -// }); -// let data = { -// name: 100, -// book: { -// title: 'Quux' -// }, -// books: [ -// { -// title: 'Corge' -// }, -// { -// title: 'Grault' -// } -// ] -// }; -// let user = new Document(data, userSchema); - -// t.is(user.$name.initialValue, 'Bar'); -// user.commit(); -// t.is(user.$name.initialValue, '100'); -// t.is(user.book.$title.initialValue, 'Quux'); -// t.is(user.books[0].$title.initialValue, 'Corge'); -// t.is(user.books[1].$title.initialValue, 'Grault'); -// }); - -// test('method `rollback` should deeply reset fields to their initial values', (t) => { -// let bookSchema = new Schema({ -// fields: { -// title: { -// type: 'String' -// } -// } -// }); -// let userSchema = new Schema({ -// fields: { -// name: { -// type: 'String', -// defaultValue: 'Bar' -// }, -// book: { -// type: bookSchema, -// defaultValue: { -// title: 'Baz' -// } -// }, -// books: { -// type: [bookSchema], -// defaultValue: [ -// { -// title: 'Qux' -// } -// ] -// } -// } -// }); -// let data = { -// name: 100, -// book: { -// title: 'Quux' -// }, -// books: [ -// { -// title: 'Corge' -// }, -// { -// title: 'Grault' -// } -// ] -// }; -// let user = new Document(null, userSchema); -// user.populate(data); -// user.rollback(); - -// t.deepEqual(user.serialize(), { -// name: 'Bar', -// book: { -// title: 'Baz' -// }, -// books: [ -// { -// title: 'Qux' -// } -// ] -// }); -// }); - -// test('method `isChanged` should return `true` if at least one field has been changed', (t) => { -// let bookSchema = new Schema({ -// fields: { -// title: { -// type: 'String' -// } -// } -// }); -// let userSchema = new Schema({ -// fields: { -// name: { -// type: 'String' -// }, -// book: { -// type: bookSchema -// }, -// books: { -// type: [bookSchema] -// } -// } -// }); - -// let user = new Document(null, userSchema); -// t.is(user.isChanged(), false); -// user.name = 'Foo'; -// t.is(user.$name.isChanged(), true); -// t.is(user.isChanged(), true); -// user.commit(); -// user.book = {title: 'Foo'}; -// t.is(user.$book.isChanged(), true); -// t.is(user.book.isChanged(), true); -// t.is(user.isChanged(), true); -// user.commit(); -// user.book.title = {title: 'Bar'}; -// t.is(user.book.$title.isChanged(), true); -// t.is(user.isChanged(), true); -// user.commit(); -// user.books = [{title: 'Foo'}]; -// t.is(user.$books.isChanged(), true); -// t.is(user.isChanged(), true); -// user.commit(); -// user.books[0].title = [{title: 'Bar'}]; -// t.is(user.books[0].$title.isChanged(), true); -// t.is(user.isChanged(), true); -// }); - -// test('method `isNested` should return `true` if nested fields exist', (t) => { -// let bookSchema = new Schema({ -// fields: { -// title: { -// type: 'String' -// } -// } -// }); -// let schema0 = new Schema({ -// fields: { -// name: { -// type: 'String' -// } -// } -// }); -// let schema1 = new Schema({ -// fields: { -// name: { -// type: 'String' -// }, -// book: { -// type: bookSchema -// } -// } -// }); -// let schema2 = new Schema({ -// fields: { -// name: { -// type: 'String' -// }, -// books: { -// type: [bookSchema] -// } -// } -// }); - -// let doc0 = new Document(null, schema0); -// let doc1 = new Document(null, schema1); -// let doc2 = new Document(null, schema2); - -// t.is(doc0.isNested(), false); -// t.is(doc1.isNested(), true); -// t.is(doc2.isNested(), true); -// }); - -// test('method `equals` should return `true` when the passing object looks the same', (t) => { -// let authorSchema = new Schema({ -// fields: { -// name: { -// type: 'String' -// } -// } -// }); -// let bookSchema = new Schema({ -// fields: { -// title: { -// type: 'String' -// }, -// author: { -// type: authorSchema -// } -// } -// }); -// let userSchema = { -// fields: { -// name: { -// type: 'String', -// defaultValue: 'John' -// }, -// book: { -// type: bookSchema -// }, -// books: { -// type: [bookSchema] -// } -// } -// }; -// let data0 = { -// name: null, -// book: { -// title: 'Foo', -// author: { -// name: 'Bar' -// } -// }, -// books: [ -// { -// title: 'Bar' -// } -// ] -// }; -// let data1 = { -// name: 'Mandy' -// }; -// let user0 = new Document(null, new Schema(userSchema)); -// let user1 = new Document(null, new Schema(userSchema)); -// let user2 = new Document(data0, new Schema(userSchema)); -// let user3 = new Document(data1, new Schema(userSchema)); - -// t.is(user0.equals(user1), true); -// t.is(user0.equals(user2), false); -// t.is(user0.equals(user3), false); -// t.is(user2.equals(user3), false); -// t.is(user0.$name.equals('John'), true); -// t.is(user2.$book.equals({ -// title: 'Foo', -// author: { -// name: 'Bar' -// } -// }), true); -// t.is(user2.$books.equals([ -// { -// title: 'Bar', -// author: null -// } -// ]), true); -// }); - -// test('method `clone` should return an exact copy of the original', (t) => { -// let bookSchema = new Schema({ -// fields: { -// title: { -// type: 'String', -// defaultValue: 100 -// } -// } -// }); -// let userSchema = new Schema({ -// fields: { -// name: { -// type: 'String' -// }, -// book: { -// type: bookSchema -// }, -// books: { -// type: [bookSchema] -// } -// } -// }); -// let data = { -// name: 'John Smith', -// books: [ -// null, -// { -// title: 100 -// } -// ] -// }; - -// let user = new Document(data, userSchema); - -// t.is(user.clone() === user, false); -// t.deepEqual(user.clone(), user); -// }); - -// test('method `validate` should validate all fields and throw an error', async (t) => { -// let bookSchema = new Schema({ -// fields: { -// title: { -// type: 'String', -// validate: [ -// {validator: 'presence', message: 'is required'} -// ] -// }, -// year: { -// type: 'Integer' -// } -// } -// }); -// let userSchema = new Schema({ -// fields: { -// name: { -// type: 'String', -// validate: [ -// {validator: 'presence', message: 'is required'} -// ] -// }, -// newBook: { -// type: bookSchema, -// validate: [ -// {validator: 'presence', message: 'is required'} -// ] -// }, -// newBooks: { -// type: [bookSchema], -// validate: [ -// {validator: 'presence', message: 'is required'} -// ] -// }, -// oldBook: { -// type: bookSchema, -// validate: [ -// {validator: 'presence', message: 'is required'} -// ] -// }, -// oldBooks: { -// type: [bookSchema], -// validate: [ -// {validator: 'presence', message: 'is required'}, -// {validator: 'arrayLength', message: 'is too short', min: 10} -// ] -// }, -// prevBooks: { -// type: [bookSchema] -// } -// } -// }); -// let data = { -// oldBook: {}, -// oldBooks: [null, {}] -// }; -// let user = new Document(data, userSchema); -// let validatorError0 = {validator: 'presence', message: 'is required', code: 422}; -// let validatorError1 = {validator: 'arrayLength', message: 'is too short', code: 422}; - -// // throws an error -// t.throws(user.validate()); -// let error = null; -// try { -// await user.validate(); -// } catch (e) { -// error = e; -// } -// t.is(error.code, 422); -// t.deepEqual(error.paths, [ -// ['name'], -// ['newBook'], -// ['newBooks'], -// ['oldBook', 'title'], -// ['oldBooks'], -// ['oldBooks', 1, 'title'] -// ]); -// // errors are populated -// t.deepEqual(user.$name.errors[0], validatorError0); -// t.deepEqual(user.$newBook.errors[0], validatorError0); -// t.deepEqual(user.$newBooks.errors[0], validatorError0); -// t.deepEqual(user.$oldBook.errors.length, 0); -// t.deepEqual(user.oldBook.$title.errors[0], validatorError0); -// t.deepEqual(user.oldBook.$year.errors.length, 0); -// t.deepEqual(user.$oldBooks.errors[0], validatorError1); -// t.deepEqual(user.oldBooks[0], null); -// t.deepEqual(user.oldBooks[1].$title.errors[0], validatorError0); -// t.deepEqual(user.oldBooks[1].$year.errors.length, 0); -// t.deepEqual(user.$prevBooks.errors.length, 0); -// }); - -// test('methods `isValid` and `hasErrors` should tell if fields are valid', async (t) => { -// let bookSchema = new Schema({ -// fields: { -// title: { -// type: 'String', -// validate: [ -// {validator: 'presence', message: 'is required'} -// ] -// }, -// } -// }); -// let userSchema = new Schema({ -// fields: { -// name: { -// type: 'String', -// validate: [ -// {validator: 'presence', message: 'is required'} -// ] -// }, -// newBook: { -// type: bookSchema, -// validate: [ -// {validator: 'presence', message: 'is required'} -// ] -// }, -// newBooks: { -// type: [bookSchema], -// validate: [ -// {validator: 'presence', message: 'is required'} -// ] -// }, -// oldBook: { -// type: bookSchema, -// validate: [ -// {validator: 'presence', message: 'is required'} -// ] -// }, -// oldBooks: { -// type: [bookSchema], -// validate: [ -// {validator: 'presence', message: 'is required'} -// ] -// } -// } -// }); - -// let data = { -// name: 'Foo', -// newBook: { -// title: 'Bar' -// }, -// newBooks: [ -// null, -// { -// title: 'Baz' -// } -// ], -// oldBook: {}, -// oldBooks: [null, {}] -// }; -// let user = new Document(data, userSchema); -// await user.validate({quiet: true}); - -// t.is(user.$name.isValid(), true); -// t.is(user.$name.hasErrors(), false); -// t.is(user.$newBook.isValid(), true); -// t.is(user.newBook.$title.isValid(), true); -// t.is(user.newBook.$title.hasErrors(), false); -// t.is(user.$newBooks.hasErrors(), false); -// t.is(user.newBooks[1].$title.hasErrors(), false); -// t.is(user.$oldBook.isValid(), false); -// t.is(user.oldBook.$title.isValid(), false); -// t.is(user.$oldBooks.hasErrors(), true); -// t.is(user.oldBooks[1].$title.hasErrors(), true); -// }); - -// test('method `invalidate` should clear errors on all fields', async (t) => { -// let bookSchema = new Schema({ -// fields: { -// title: { -// type: 'String', -// validate: [ -// {validator: 'presence', message: 'is required'} -// ] -// }, -// year: { -// type: 'Integer' -// } -// } -// }); -// let userSchema = new Schema({ -// fields: { -// name: { -// type: 'String', -// validate: [ -// {validator: 'presence', message: 'is required'} -// ] -// }, -// newBook: { -// type: bookSchema, -// validate: [ -// {validator: 'presence', message: 'is required'} -// ] -// }, -// newBooks: { -// type: [bookSchema], -// validate: [ -// {validator: 'presence', message: 'is required'} -// ] -// }, -// oldBook: { -// type: bookSchema, -// validate: [ -// {validator: 'presence', message: 'is required'} -// ] -// }, -// oldBooks: { -// type: [bookSchema], -// validate: [ -// {validator: 'presence', message: 'is required'} -// ] -// }, -// prevBooks: { -// type: [bookSchema] -// } -// } -// }); -// let data = { -// oldBook: {}, -// oldBooks: [null, {}] -// }; -// let user = new Document(data, userSchema); - -// await user.validate({quiet: true}); -// // invalidate is triggered when a field changes -// user.name = 'foo'; -// t.deepEqual(user.$name.errors, []); -// // errors are populated -// user.invalidate(); -// t.deepEqual(user.$newBook.errors, []); -// t.deepEqual(user.$newBooks.errors, []); -// t.deepEqual(user.oldBook.$title.errors, []); -// t.deepEqual(user.oldBooks[0], null); -// t.deepEqual(user.oldBooks[1].$title.errors, []); -// }); - - -// test('method `collectErrors` should return an array of field errors', async (t) => { -// let bookSchema = new Schema({ -// fields: { -// title: { -// type: 'String', -// validate: [ -// {validator: 'presence', message: 'is required'} -// ] -// } -// } -// }); -// let userSchema = new Schema({ -// fields: { -// name: { -// type: 'String', -// validate: [ -// {validator: 'presence', message: 'is required'} -// ] -// }, -// age: { -// type: 'Integer', -// validate: [ -// {validator: 'presence', message: 'is required'} -// ] -// }, -// newBook: { -// type: bookSchema, -// validate: [ -// {validator: 'presence', message: 'is required'} -// ] -// }, -// newBooks: { -// type: [bookSchema], -// validate: [ -// {validator: 'presence', message: 'is required'} -// ] -// } -// } -// }); -// let data = {age: 30}; -// let user = new Document(data, userSchema); -// await user.validate({quiet: true}); - -// t.deepEqual(user.collectErrors(), [ -// { -// path: ['name'], -// errors: [ -// {validator: 'presence', message: 'is required', code: 422} -// ] -// }, -// { -// path: ['newBook'], -// errors: [ -// {validator: 'presence', message: 'is required', code: 422} -// ] -// }, -// { -// path: ['newBooks'], -// errors: [ -// {validator: 'presence', message: 'is required', code: 422} -// ] -// } -// ]); -// }); +test('method `isNested` returns `true` if nested fields exist', (t) => { + class Book extends Document { + constructor (data, options) { + super(data, options); + this.defineField('title'); + this.populate(data); + } + } + class User extends Document { + constructor (data, options) { + super(data, options); + this.defineField('name'); + this.defineField('books', {type: [Book]}); + this.populate(data); + } + } + let user = new User(); + t.is(user.isNested(), true); +}); -// test('method `applyErrors` should set field `errors` property', async (t) => { -// let bookSchema = new Schema({ -// fields: { -// title: { -// type: 'String' -// } -// } -// }); -// let userSchema = new Schema({ -// fields: { -// name: { -// type: 'String' -// }, -// newBook: { -// type: bookSchema -// }, -// newBooks: { -// type: [bookSchema] -// } -// } -// }); -// let data = { -// newBook: {}, -// newBooks: [{}, {}] -// }; -// let user = new Document(data, userSchema); -// let validatorError = {validator: 'presence', message: 'is required', code: 422}; +test('method `collectErrors` returns an array of field errors', (t) => { + class Book extends Document { + constructor (data, options) { + super(data, options); + this.defineField('title'); + this.populate(data); + } + } + class User extends Document { + constructor (data, options) { + super(data, options); + this.defineField('name'); + this.defineField('book', {type: Book}); + this.defineField('books', {type: [Book]}); + this.populate(data); + } + } + let user = new User({ + book: {}, + books: [{}] + }); + user.getPath('name').errors = [{message: 'foo'}]; + user.getPath('book', 'title').errors = [{message: 'bar'}]; + user.getPath('books', 0, 'title').errors = [{message: 'baz'}]; + t.deepEqual(user.collectErrors(), [ + {path: ['name'], errors: [{message: 'foo'}]}, + {path: ['book', 'title'], errors: [{message: 'bar'}]}, + {path: ['books', 0, 'title'], errors: [{message: 'baz'}]} + ]); +}); -// user.applyErrors([ -// {path: ['name'], errors: [validatorError]}, -// {path: ['newBook', 'title'], errors: [validatorError]}, -// {path: ['newBooks', 1, 'title'], errors: [validatorError]} -// ]); +test('method `applyErrors` sets fields errors', (t) => { + class Book extends Document { + constructor (data, options) { + super(data, options); + this.defineField('title'); + this.populate(data); + } + } + class User extends Document { + constructor (data, options) { + super(data, options); + this.defineField('name'); + this.defineField('book', {type: Book}); + this.defineField('books', {type: [Book]}); + this.populate(data); + } + } + let user = new User({ + book: {}, + books: [null, {}] + }); + user.applyErrors([ + {path: ['name'], errors: [{message: 'foo'}]}, + {path: ['book', 'title'], errors: [{message: 'bar'}]}, + {path: ['books', 1, 'title'], errors: [{message: 'baz'}]} + ]); + t.deepEqual(user.getPath('name').errors, [{message: 'foo'}]); + t.deepEqual(user.getPath('book', 'title').errors, [{message: 'bar'}]); + t.deepEqual(user.getPath('books', 1, 'title').errors, [{message: 'baz'}]); +}); -// t.deepEqual(user.$name.errors, [validatorError]); -// t.deepEqual(user.newBook.$title.errors, [validatorError]); -// t.deepEqual(user.newBooks[0].$title.errors, []); -// t.deepEqual(user.newBooks[1].$title.errors, [validatorError]); -// }); +test('methods `isValid` and `hasErrors` tell if errors exist', async (t) => { + class Book extends Document { + constructor (data, options) { + super(data, options); + this.defineField('title'); + this.populate(data); + } + } + class User extends Document { + constructor (data, options) { + super(data, options); + this.defineField('name'); + this.defineField('book', {type: Book}); + this.defineField('books', {type: [Book]}); + this.populate(data); + } + } + let user = new User({ + book: {}, + books: [null, {}] + }); + t.is(user.hasErrors(), false); + t.is(user.isValid(), true); + user.applyErrors([ + {path: ['books', 1, 'title'], errors: [{message: 'baz'}]} + ]); + t.is(user.hasErrors(), true); + t.is(user.isValid(), false); +}); +test('method `validate` validates fields and throws an error', async (t) => { + let validate = [{ + validator: 'presence', + message: 'foo' + }]; + class Book extends Document { + constructor (data, options) { + super(data, options); + this.defineField('title', {validate}); + this.populate(data); + } + } + class User extends Document { + constructor (data, options) { + super(data, options); + this.defineField('name', {validate}); + this.defineField('book0', {type: Book, validate}); + this.defineField('books0', {type: [Book], validate}); + this.defineField('book1', {type: Book, validate}); + this.defineField('books1', {type: [Book], validate}); + this.populate(data); + } + } + let user = new User({ + book1: {}, + books1: [{}] + }); + let errors = [{validator: 'presence', message: 'foo', code: 422}]; + await user.validate({quiet: true}); + t.throws(user.validate()); + t.deepEqual(user.collectErrors(), [ + {path: ['name'], errors}, + {path: ['book0'], errors}, + {path: ['books0'], errors}, + {path: ['book1', 'title'], errors}, + {path: ['books1', 0, 'title'], errors}, + ]); +}); +test('method `invalidate` clears fields errors', async (t) => { + class Book extends Document { + constructor (data, options) { + super(data, options); + this.defineField('title'); + this.populate(data); + } + } + class User extends Document { + constructor (data, options) { + super(data, options); + this.defineField('name'); + this.defineField('book', {type: Book}); + this.defineField('books', {type: [Book]}); + this.populate(data); + } + } + let user = new User({ + book: {}, + books: [null, {}] + }); + user.applyErrors([ + {path: ['name'], errors: [{message: 'foo'}]}, + {path: ['book', 'title'], errors: [{message: 'bar'}]}, + {path: ['books', 1, 'title'], errors: [{message: 'baz'}]} + ]); + user.invalidate(); + t.deepEqual(user.getPath('name').errors, []); + t.deepEqual(user.getPath('book', 'title').errors, []); + t.deepEqual(user.getPath('books', 1, 'title').errors, []); +}); +test('method `clone` returns an exact copy of the original', (t) => { + class Book extends Document { + constructor (data, options) { + super(data, options); + this.defineField('title'); + this.populate(data); + this.commit(); + } + } + class User extends Document { + constructor (data, options) { + super(data, options); + this.defineField('name'); + this.defineField('book', {type: Book}); + this.defineField('books', {type: [Book]}); + this.populate(data); + this.commit(); + } + } + let user = new User({ + name: 'foo', + book: { + title: 'bar' + }, + books: [ + null, + { + title: 'baz' + } + ] + }); + t.is(user.clone() !== user, true); + t.is(user.equals(user), true); +}); diff --git a/tests/fields.js b/tests/fields.js index 0cac69a..8befac7 100644 --- a/tests/fields.js +++ b/tests/fields.js @@ -52,24 +52,30 @@ test('can have a fake value', (t) => { }); test('method `reset()` sets value to the default value', (t) => { - let f0 = new Field({defaultValue: 'foo'}); - let f1 = new Field({defaultValue () { return Math.random() }}); - f0.value = 'bar'; - f0.reset(); - t.is(f0.value, 'foo'); + let f0 = new Field(); + let f1 = new Field({defaultValue: 'foo'}); + let f2 = new Field({defaultValue () { return Math.random() }}); + t.is(f0.value, null); + f1.value = 'bar'; f1.reset(); - t.is(f1.value != f1.value, true); // dynamic values + t.is(f1.value, 'foo'); + f2.reset(); + t.is(f1.value != f2.value, true); // dynamic values }); test('method `fake()` sets value to the fake value', (t) => { - let f0 = new Field({fakeValue: 'foo'}); - let f1 = new Field({fakeValue () { return Math.random() }}); - f0.value = 'bar'; + let f0 = new Field(); + let f1 = new Field({fakeValue: 'foo'}); + let f2 = new Field({fakeValue () { return Math.random() }}); + f0.value = 'foo'; f0.fake(); - t.is(f0.value, 'foo'); - f1.value = 'foo'; + t.is(f0.value, null); + f1.value = 'bar'; f1.fake(); - t.is(f1.value != f1.value, true); // dynamic values + t.is(f1.value, 'foo'); + f2.value = 'foo'; + f2.fake(); + t.is(f2.value != f1.value, true); // dynamic values }); test('method `clear()` sets value to `null`', (t) => { From dfc0f878c11051de2abf06e114f27634e905885e Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 24 Dec 2016 21:33:35 +0100 Subject: [PATCH 133/219] validatable v0.24, custom types, custom validators, failFast method, renaming getPath to getField, renaming hasPath to hasField --- README.md | 4 +- dist/documents.d.ts | 17 +++++- dist/documents.js | 53 ++++++++++++---- dist/documents.js.map | 2 +- dist/fields.d.ts | 6 +- dist/fields.js | 4 +- dist/fields.js.map | 2 +- package.json | 4 +- src/documents.ts | 74 ++++++++++++++++++----- src/fields.ts | 8 +-- tests/documents.js | 136 +++++++++++++++++++++++++++++++++--------- 11 files changed, 238 insertions(+), 72 deletions(-) diff --git a/README.md b/README.md index 378c612..6472c1a 100644 --- a/README.md +++ b/README.md @@ -281,7 +281,7 @@ doc.applyErrors([ > Converts the document into an array of fields. -**Document.prototype.getPath(...keys)**: Field +**Document.prototype.getField(...keys)**: Field > Returns a class instance of the field at path. @@ -293,7 +293,7 @@ doc.applyErrors([ > Returns `true` when no errors exist (inverse of `isValid()`). Make sure that you call the `validate()` method first. -**Document.prototype.hasPath(...keys)**: Boolean +**Document.prototype.hasField(...keys)**: Boolean > Returns `true` when a field path exists. diff --git a/dist/documents.d.ts b/dist/documents.d.ts index a54b95f..7693411 100644 --- a/dist/documents.d.ts +++ b/dist/documents.d.ts @@ -1,3 +1,4 @@ +import { ValidatorRecipe } from 'validatable'; import { Field, FieldRecipe, FieldError } from './fields'; export interface FieldRef { path: string[]; @@ -14,16 +15,26 @@ export declare class Document { protected _fields: { [name: string]: Field; }; + protected _types: { + [key: string]: (v?) => any; + }; + protected _validators: { + [key: string]: (v?, r?: ValidatorRecipe) => boolean | Promise; + }; + protected _failFast: boolean; readonly options: DocumentOptions; readonly parent: Document; constructor(data?: any, options?: DocumentOptions); protected _getRootDocument(): Document; protected _createField(recipe?: FieldRecipe): Field; protected _createValidationError(message?: string, code?: number): FieldError; - protected _createDocument(data?: any, options?: DocumentOptions): any; + protected _createDocument(data?: {}, options?: DocumentOptions): any; + failFast(fail?: boolean): void; defineField(name: string, recipe?: FieldRecipe): void; - getPath(...keys: any[]): Field; - hasPath(...keys: any[]): boolean; + defineType(name: string, converter: (v?) => any): void; + defineValidator(name: string, handler: (v?, r?: ValidatorRecipe) => boolean | Promise): void; + getField(...keys: any[]): Field; + hasField(...keys: any[]): boolean; populate(data?: {}): this; serialize(): {}; flatten(prefix?: string[]): FieldRef[]; diff --git a/dist/documents.js b/dist/documents.js index 1e2428f..93de7cf 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -14,8 +14,6 @@ const utils_1 = require("./utils"); * The core schema object class. */ class Document { - // private _types: {[key: string]: () => any} = {}; // custom types for typeable.js - // private _validators: {[key: string]: () => boolean | Promise} = {}; // custom validations for validatable.js /* * Class constructor. */ @@ -33,6 +31,18 @@ class Document { value: {}, writable: true }); + Object.defineProperty(this, '_types', { + value: {}, + writable: true + }); + Object.defineProperty(this, '_validators', { + value: {}, + writable: true + }); + Object.defineProperty(this, '_failFast', { + value: false, + writable: true + }); this.populate(data); } /* @@ -53,9 +63,12 @@ class Document { * Creates a new field instance. This method is especially useful when * extending this class. */ - _createField(recipe) { - return new fields_1.Field(recipe, { - owner: this + _createField(recipe = {}) { + let { type } = recipe; + return new fields_1.Field(utils_1.merge(recipe, { type: this._types[type] || type }), { + owner: this, + validators: this._validators, + failFast: this._failFast }); } /* @@ -70,10 +83,16 @@ class Document { * Creates a new document instance. This method is especially useful when * extending this class. */ - _createDocument(data, options) { + _createDocument(data = {}, options = {}) { return new this.constructor(data, options); } /* + * Configures validator to stop validating field on the first error. + */ + failFast(fail = true) { + this._failFast = typeable_1.toBoolean(fail); + } + /* * Defines a new field property. */ defineField(name, recipe) { @@ -87,22 +106,34 @@ class Document { this._fields[name] = field; } /* + * Defines a new custom data type. + */ + defineType(name, converter) { + this._types[name] = converter; + } + /* + * Defines a new custom validator. + */ + defineValidator(name, handler) { + this._validators[name] = handler; + } + /* * Returns a value at path. */ - getPath(...keys) { + getField(...keys) { keys = [].concat(typeable_1.isArray(keys[0]) ? keys[0] : keys); let lastKey = keys.pop(); if (keys.length === 0) { return this._fields[lastKey]; } let field = keys.reduce((a, c) => (a[c] || {}), this); - return field instanceof Document ? field.getPath(lastKey) : undefined; + return field instanceof Document ? field.getField(lastKey) : undefined; } /* * Returns `true` if the field exists. */ - hasPath(...keys) { - return !typeable_1.isUndefined(this.getPath(...keys)); + hasField(...keys) { + return !typeable_1.isUndefined(this.getField(...keys)); } /* * Deeply applies data to the fields. @@ -261,7 +292,7 @@ class Document { */ applyErrors(errors = []) { errors.forEach((error) => { - let field = this.getPath(...error.path); + let field = this.getField(...error.path); if (field) { field.errors = error.errors; } diff --git a/dist/documents.js.map b/dist/documents.js.map index 356cc25..97285ce 100644 --- a/dist/documents.js.map +++ b/dist/documents.js.map @@ -1 +1 @@ -{"version":3,"file":"documents.js","sourceRoot":"","sources":["../src/documents.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"documents.js","sourceRoot":"","sources":["../src/documents.ts"],"names":[],"mappings":";;;;;;;;;AAAA,uCAAoE;AAEpE,qCAAwD;AACxD,mCAAkD;AA4BlD;;EAEE;AAEF;IAQE;;MAEE;IAEF,YAAa,IAAK,EAAE,OAAyB;QAC3C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;YACrC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;SACpC,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;YACpC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI;SACnC,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;YAClC,GAAG,EAAE,MAAM,IAAI,CAAC,gBAAgB,EAAE;SACnC,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;YACrC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;YACpC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE;YACzC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE;YACvC,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED;;MAEE;IAEQ,gBAAgB;QACxB,IAAI,IAAI,GAAa,IAAI,CAAC;QAC1B,GAAG,CAAC;YACF,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAChB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;YACrB,CAAC;YACD,IAAI,CAAC,CAAC;gBACJ,MAAM,CAAC,IAAI,CAAC;YACd,CAAC;QACH,CAAC,QAAQ,IAAI,EAAE;IACjB,CAAC;IAED;;;MAGE;IAEQ,YAAY,CAAE,SAAsB,EAAE;QAC9C,IAAI,EAAC,IAAI,EAAC,GAAG,MAAM,CAAC;QAEpB,MAAM,CAAC,IAAI,cAAK,CAAC,aAAK,CACpB,MAAM,EACN,EAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAC,CAClC,EAAE;YACD,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,QAAQ,EAAE,IAAI,CAAC,SAAS;SACzB,CAAC,CAAC;IACL,CAAC;IAED;;MAEE;IAEQ,sBAAsB,CAAE,OAAO,GAAG,mBAAmB,EAAE,IAAI,GAAG,GAAG;QACzE,IAAI,KAAK,GAAe,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QAElB,MAAM,CAAC,KAAK,CAAC;IACf,CAAC;IAED;;;MAGE;IAEQ,eAAe,CAAE,IAAI,GAAG,EAAE,EAAE,UAA2B,EAAE;QACjE,MAAM,CAAC,IAAK,IAAI,CAAC,WAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED;;MAEE;IAEK,QAAQ,CAAE,OAAgB,IAAI;QACnC,IAAI,CAAC,SAAS,GAAG,oBAAS,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED;;MAEE;IAEK,WAAW,CAAE,IAAY,EAAE,MAAoB;QACpD,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAEtC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE;YAChC,GAAG,EAAE,MAAM,KAAK,CAAC,KAAK;YACtB,GAAG,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,GAAG,CAAC;YAC3B,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED;;MAEE;IAEK,UAAU,CAAE,IAAY,EAAE,SAAsB;QACrD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IAChC,CAAC;IAED;;MAEE;IAEK,eAAe,CAAE,IAAY,EAAE,OAAgE;QACpG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACnC,CAAC;IAED;;MAEE;IAEK,QAAQ,CAAE,GAAG,IAAI;QACtB,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAEpD,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACtD,MAAM,CAAC,KAAK,YAAY,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IACzE,CAAC;IAED;;MAEE;IAEK,QAAQ,CAAE,GAAG,IAAI;QACtB,MAAM,CAAC,CAAC,sBAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED;;MAEE;IAEK,QAAQ,CAAE,IAAI,GAAG,EAAE;QACxB,IAAI,GAAG,iBAAS,CAAC,IAAI,CAAC,CAAC;QAEvB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;aACd,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;aAChC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE9C,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAED;;MAEE;IAEK,SAAS;QACd,MAAM,CAAC,iBAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED;;MAEE;IAEK,OAAO,CAAE,SAAmB,EAAE;QACnC,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI;YACrC,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YACtB,IAAI,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAExB,MAAM,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC,CAAC;YAE3B,EAAE,CAAC,CAAC,oBAAS,CAAC,KAAK,CAAC,IAAI,oBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACxC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,YAAY,QAAQ,CAAC,CAAC,CAAC;oBACvC,MAAM,GAAG,MAAM,CAAC,MAAM,CACpB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CACpB,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC,CAAC,kBAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,YAAY,QAAQ,CAAC,CAAC,CAAC;oBAChE,MAAM,GAAG,MAAM,CAAC,MAAM,CACpB,KAAK;yBACF,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;yBACvD,MAAM,CAAC,CAAC,CAAC,KAAK,kBAAO,CAAC,CAAC,CAAC,CAAC;yBACzB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CACjC,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC;IAChB,CAAC;IAED;;MAEE;IAEK,OAAO,CAAE,OAAiC;QAC/C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED;;MAEE;IAEK,MAAM,CAAE,OAAkC;QAC/C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAC5C,CAAC;IAED;;;MAGE;IAEK,MAAM,CAAE,IAAkC;QAC/C,IAAI,IAAI,GAAG,iBAAS,CAAC,IAAI,CAAC,CAAC;QAE3B,IAAI,CAAC,OAAO,EAAE;aACX,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;aAC7C,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC/B,OAAO,CAAC,CAAC,KAAK;YACb,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEL,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAED;;MAEE;IAEF,KAAK;QACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAEjD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAED;;MAEE;IAEF,IAAI;QACF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAEhD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAED;;MAEE;IAEF,KAAK;QACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAEjD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAED;;MAEE;IAEF,MAAM;QACJ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QAElD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAED;;MAEE;IAEF,QAAQ;QACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEpD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAED;;;MAGE;IAEF,MAAM,CAAE,KAAU;QAChB,MAAM,CAAC,eAAO,CACZ,iBAAS,CAAC,IAAI,CAAC,EACf,iBAAS,CAAC,KAAK,CAAC,CACjB,CAAC;IACJ,CAAC;IAED;;MAEE;IAEF,SAAS;QACP,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IACpD,CAAC;IAED;;MAEE;IAEF,QAAQ;QACN,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnD,CAAC;IAED;;MAEE;IAEI,QAAQ,CAAE,EACd,KAAK,GAAG,KAAK,KAGX,EAAE;;YACJ,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;YAE1B,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;iBAChB,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CACpC,CAAC;YAEF,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;gBAC/B,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACtC,CAAC;YAED,MAAM,CAAC,IAAI,CAAC;QACd,CAAC;KAAA;IAED;;MAEE;IAEF,aAAa;QACX,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;aAClB,GAAG,CAAC,CAAC,EAAC,IAAI,EAAE,KAAK,EAAC,KAAK,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAmB,CAAA,CAAC;aACvE,MAAM,CAAC,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnD,CAAC;IAED;;MAEE;IAEF,WAAW,CAAE,SAA0B,EAAE;QACvC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK;YACnB,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YACzC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gBACV,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAED;;MAEE;IAEF,SAAS;QACP,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IACpD,CAAC;IAED;;MAEE;IAEF,OAAO;QACL,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC;IAED;;MAEE;IAEF,UAAU;QACR,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QAEtD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAED;;MAEE;IAEF,KAAK;QACH,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;CAEF;AAxaD,4BAwaC"} \ No newline at end of file diff --git a/dist/fields.d.ts b/dist/fields.d.ts index 2efc35f..ac88923 100644 --- a/dist/fields.d.ts +++ b/dist/fields.d.ts @@ -1,11 +1,11 @@ -import { Validator } from 'validatable'; +import { Validator, ValidatorRecipe } from 'validatable'; import { Document } from './documents'; export interface FieldOptions { owner?: Document; validators?: { - [name: string]: () => boolean | Promise; + [name: string]: (v?, r?: ValidatorRecipe) => boolean | Promise; }; - firstErrorOnly?: boolean; + failFast?: boolean; } export interface ValidationRecipe { validator: string; diff --git a/dist/fields.js b/dist/fields.js index 65e57d5..be5e0e9 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -67,9 +67,9 @@ class Field { * Returns a new instance of validator. */ _createValidator() { - let { validators, firstErrorOnly } = this.options; + let { validators, failFast } = this.options; let context = this; - return new validatable_1.Validator({ validators, firstErrorOnly, context }); + return new validatable_1.Validator({ validators, failFast, context }); } /* * Returns current field value. diff --git a/dist/fields.js.map b/dist/fields.js.map index 6fb92d6..0a1cff9 100644 --- a/dist/fields.js.map +++ b/dist/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 2e0542b..8143843 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "dependencies": { "lodash.isequal": "^4.4.0", "lodash.merge": "^4.6.0", - "typeable": "2.0.0", - "validatable": "^0.22.0" + "typeable": "^2.0.0", + "validatable": "^0.24.0" } } diff --git a/src/documents.ts b/src/documents.ts index 5992e5e..f57e88f 100644 --- a/src/documents.ts +++ b/src/documents.ts @@ -1,6 +1,7 @@ -import {isArray, isUndefined, isPresent} from 'typeable'; +import {isArray, isUndefined, isPresent, toBoolean} from 'typeable'; +import {ValidatorRecipe} from 'validatable'; import {Field, FieldRecipe, FieldError} from './fields'; -import {serialize, isEqual} from './utils'; +import {serialize, isEqual, merge} from './utils'; /* * Flattened field reference type definition. @@ -33,12 +34,12 @@ export interface DocumentOptions { */ export class Document { - protected _fields: {[name: string]: Field}; + protected _fields: {[name: string]: Field}; // document fields + protected _types: {[key: string]: (v?) => any}; // custom data types + protected _validators: {[key: string]: (v?, r?: ValidatorRecipe) => boolean | Promise}; // custom validators + protected _failFast: boolean; // stop validating on first error readonly options: DocumentOptions; readonly parent: Document; - - // private _types: {[key: string]: () => any} = {}; // custom types for typeable.js - // private _validators: {[key: string]: () => boolean | Promise} = {}; // custom validations for validatable.js /* * Class constructor. @@ -59,6 +60,18 @@ export class Document { value: {}, writable: true }); + Object.defineProperty(this, '_types', { + value: {}, + writable: true + }); + Object.defineProperty(this, '_validators', { + value: {}, + writable: true + }); + Object.defineProperty(this, '_failFast', { + value: false, + writable: true + }); this.populate(data); } @@ -84,9 +97,16 @@ export class Document { * extending this class. */ - protected _createField (recipe?: FieldRecipe) { - return new Field(recipe, { - owner: this + protected _createField (recipe: FieldRecipe = {}) { + let {type} = recipe; + + return new Field(merge( + recipe, + {type: this._types[type] || type} + ), { + owner: this, + validators: this._validators, + failFast: this._failFast }); } @@ -106,10 +126,18 @@ export class Document { * extending this class. */ - protected _createDocument (data?, options?: DocumentOptions) { + protected _createDocument (data = {}, options: DocumentOptions = {}) { return new (this.constructor as any)(data, options); } + /* + * Configures validator to stop validating field on the first error. + */ + + public failFast (fail: boolean = true): void { + this._failFast = toBoolean(fail); + } + /* * Defines a new field property. */ @@ -127,11 +155,27 @@ export class Document { this._fields[name] = field; } + /* + * Defines a new custom data type. + */ + + public defineType (name: string, converter: (v?) => any) { + this._types[name] = converter; + } + + /* + * Defines a new custom validator. + */ + + public defineValidator (name: string, handler: (v?, r?: ValidatorRecipe) => boolean | Promise) { + this._validators[name] = handler; + } + /* * Returns a value at path. */ - public getPath (...keys): Field { + public getField (...keys): Field { keys = [].concat(isArray(keys[0]) ? keys[0] : keys); let lastKey = keys.pop(); @@ -140,15 +184,15 @@ export class Document { } let field = keys.reduce((a, c) => (a[c] || {}), this); - return field instanceof Document ? field.getPath(lastKey) : undefined; + return field instanceof Document ? field.getField(lastKey) : undefined; } /* * Returns `true` if the field exists. */ - public hasPath (...keys): boolean { - return !isUndefined(this.getPath(...keys)); + public hasField (...keys): boolean { + return !isUndefined(this.getField(...keys)); } /* @@ -368,7 +412,7 @@ export class Document { applyErrors (errors: FieldErrorRef[] = []): this { errors.forEach((error) => { - let field = this.getPath(...error.path); + let field = this.getField(...error.path); if (field) { field.errors = error.errors; } diff --git a/src/fields.ts b/src/fields.ts index 44963c5..8f1f77b 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -9,8 +9,8 @@ import {Document} from './documents'; export interface FieldOptions { owner?: Document; - validators?: {[name: string]: () => boolean | Promise}; - firstErrorOnly?: boolean; + validators?: {[name: string]: (v?, r?: ValidatorRecipe) => boolean | Promise}; + failFast?: boolean; } /* @@ -124,10 +124,10 @@ export class Field { */ protected _createValidator () { - let {validators, firstErrorOnly} = this.options; + let {validators, failFast} = this.options; let context = this; - return new Validator({validators, firstErrorOnly, context}); + return new Validator({validators, failFast, context}); } /* diff --git a/tests/documents.js b/tests/documents.js index 4bffacb..ec661cb 100644 --- a/tests/documents.js +++ b/tests/documents.js @@ -16,6 +16,18 @@ test('method `defineField` initializes nullified enumerable property', (t) => { t.is(user.name, null); }); +test('method `defineType` defines a custom data type', (t) => { + let user = new class User extends Document { + constructor () { + super(); + this.defineType('cool', (v) => `${v}-cool`); + this.defineField('name', {type: 'cool'}); + } + } + user.name = 'foo'; + t.is(user.name, 'foo-cool'); +}); + test('method `populate` deeply populates fields', (t) => { class Book extends Document { constructor (data, options) { @@ -108,7 +120,7 @@ test('property `root` return the first document in a tree of nested documents', t.is(user.book.root, user); }); -test('method `getPath` returns an instance of a field at path', (t) => { +test('method `getField` returns an instance of a field at path', (t) => { class Book extends Document { constructor (data, options) { super(data, options); @@ -137,18 +149,18 @@ test('method `getPath` returns an instance of a field at path', (t) => { } ] }); - t.is(user.getPath(['name']).value, 'foo'); - t.is(user.getPath('name').value, 'foo'); - t.is(user.getPath(['book', 'title']).value, 'bar'); - t.is(user.getPath('book', 'title').value, 'bar'); - t.is(user.getPath(['books', 1, 'title']).value, 'baz'); - t.is(user.getPath('books', 1, 'title').value, 'baz'); - t.is(user.getPath(['fake']), undefined); - t.is(user.getPath(['fake', 10, 'title']), undefined); - t.is(user.getPath(), undefined); + t.is(user.getField(['name']).value, 'foo'); + t.is(user.getField('name').value, 'foo'); + t.is(user.getField(['book', 'title']).value, 'bar'); + t.is(user.getField('book', 'title').value, 'bar'); + t.is(user.getField(['books', 1, 'title']).value, 'baz'); + t.is(user.getField('books', 1, 'title').value, 'baz'); + t.is(user.getField(['fake']), undefined); + t.is(user.getField(['fake', 10, 'title']), undefined); + t.is(user.getField(), undefined); }); -test('method `hasPath` returns `true` if the field exists', (t) => { +test('method `hasField` returns `true` if the field exists', (t) => { class User extends Document { constructor (data, options) { super(data, options); @@ -157,8 +169,8 @@ test('method `hasPath` returns `true` if the field exists', (t) => { } } let user = new User(); - t.is(user.hasPath(['name']), true); - t.is(user.hasPath(['book', 'title']), false); + t.is(user.hasField(['name']), true); + t.is(user.hasField(['book', 'title']), false); }); test('method `serialize` converts document into a serialized data object', (t) => { @@ -485,9 +497,9 @@ test('methods `commit()` and `rollback()` manage committed states', (t) => { ] }); user.commit(); - t.is(user.getPath('name').initialValue, 'foo'); - t.is(user.getPath('book', 'title').initialValue, 'bar'); - t.is(user.getPath('books', 0, 'title').initialValue, 'baz'); + t.is(user.getField('name').initialValue, 'foo'); + t.is(user.getField('book', 'title').initialValue, 'bar'); + t.is(user.getField('books', 0, 'title').initialValue, 'baz'); user.populate({ name: 'foo-new', book: { @@ -500,9 +512,9 @@ test('methods `commit()` and `rollback()` manage committed states', (t) => { ] }); user.rollback(); - t.is(user.getPath('name').value, 'foo'); - t.is(user.getPath('book', 'title').value, 'bar'); - t.is(user.getPath('books', 0, 'title').value, 'baz'); + t.is(user.getField('name').value, 'foo'); + t.is(user.getField('book', 'title').value, 'bar'); + t.is(user.getField('books', 0, 'title').value, 'baz'); }); test('method `equals` returns `true` when the passing object looks the same', (t) => { @@ -624,9 +636,9 @@ test('method `collectErrors` returns an array of field errors', (t) => { book: {}, books: [{}] }); - user.getPath('name').errors = [{message: 'foo'}]; - user.getPath('book', 'title').errors = [{message: 'bar'}]; - user.getPath('books', 0, 'title').errors = [{message: 'baz'}]; + user.getField('name').errors = [{message: 'foo'}]; + user.getField('book', 'title').errors = [{message: 'bar'}]; + user.getField('books', 0, 'title').errors = [{message: 'baz'}]; t.deepEqual(user.collectErrors(), [ {path: ['name'], errors: [{message: 'foo'}]}, {path: ['book', 'title'], errors: [{message: 'bar'}]}, @@ -660,9 +672,9 @@ test('method `applyErrors` sets fields errors', (t) => { {path: ['book', 'title'], errors: [{message: 'bar'}]}, {path: ['books', 1, 'title'], errors: [{message: 'baz'}]} ]); - t.deepEqual(user.getPath('name').errors, [{message: 'foo'}]); - t.deepEqual(user.getPath('book', 'title').errors, [{message: 'bar'}]); - t.deepEqual(user.getPath('books', 1, 'title').errors, [{message: 'baz'}]); + t.deepEqual(user.getField('name').errors, [{message: 'foo'}]); + t.deepEqual(user.getField('book', 'title').errors, [{message: 'bar'}]); + t.deepEqual(user.getField('books', 1, 'title').errors, [{message: 'baz'}]); }); test('methods `isValid` and `hasErrors` tell if errors exist', async (t) => { @@ -734,6 +746,74 @@ test('method `validate` validates fields and throws an error', async (t) => { ]); }); +test('method `defineValidator` defines a custom field validator', async (t) => { + let validator = function (v) { + return this.value === 'cool' && v === 'cool'; + }; + let validate = [{ + validator: 'coolness', + message: 'foo' + }]; + class Book extends Document { + constructor (data, options) { + super(data, options); + this.defineValidator('coolness', validator); + this.defineField('title', {validate}); + this.populate(data); + } + } + class User extends Document { + constructor (data, options) { + super(data, options); + this.defineValidator('coolness', validator); + this.defineField('name', {validate}); + this.defineField('book', {type: Book, validate}); + this.populate(data); + } + } + let user = new User({ + book: {} + }); + let errors = [{validator: 'coolness', message: 'foo', code: 422}]; + await user.validate({quiet: true}); + t.deepEqual(user.collectErrors(), [ + {path: ['name'], errors}, + {path: ['book'], errors}, + {path: ['book', 'title'], errors}, + ]); +}); + +test('method `failFast` configures validator to stop validating field on the first error', async (t) => { + let validate = [ + {validator: 'presence', message: 'foo'}, + {validator: 'presence', message: 'foo'} + ]; + class Book extends Document { + constructor (data, options) { + super(data, options); + this.failFast(); + this.defineField('title', {validate}); + this.populate(data); + } + } + class User extends Document { + constructor (data, options) { + super(data, options); + this.failFast(); + this.defineField('name', {validate}); + this.defineField('book', {type: Book}); + this.populate(data); + } + } + let user = new User({ + book: {} + }); + let errors = [{validator: 'presence', message: 'foo', code: 422}]; + await user.validate({quiet: true}); + t.is(user.getField('name').errors.length, 1); + t.is(user.getField('book', 'title').errors.length, 1); +}); + test('method `invalidate` clears fields errors', async (t) => { class Book extends Document { constructor (data, options) { @@ -761,9 +841,9 @@ test('method `invalidate` clears fields errors', async (t) => { {path: ['books', 1, 'title'], errors: [{message: 'baz'}]} ]); user.invalidate(); - t.deepEqual(user.getPath('name').errors, []); - t.deepEqual(user.getPath('book', 'title').errors, []); - t.deepEqual(user.getPath('books', 1, 'title').errors, []); + t.deepEqual(user.getField('name').errors, []); + t.deepEqual(user.getField('book', 'title').errors, []); + t.deepEqual(user.getField('books', 1, 'title').errors, []); }); test('method `clone` returns an exact copy of the original', (t) => { From dd2f08629a5eed15676efefb59d2bd82a38cc901 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 24 Dec 2016 21:35:55 +0100 Subject: [PATCH 134/219] typescript es5 to es3 --- dist/documents.js | 310 ++++++++++++++++++++++++++---------------- dist/documents.js.map | 1 - dist/fields.js | 202 ++++++++++++++++----------- dist/fields.js.map | 1 - dist/index.js | 5 +- dist/index.js.map | 1 - dist/utils.js | 7 +- dist/utils.js.map | 1 - tsconfig.json | 7 +- 9 files changed, 320 insertions(+), 215 deletions(-) delete mode 100644 dist/documents.js.map delete mode 100644 dist/fields.js.map delete mode 100644 dist/index.js.map delete mode 100644 dist/utils.js.map diff --git a/dist/documents.js b/dist/documents.js index 93de7cf..9d735eb 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -7,17 +7,45 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge step((generator = generator.apply(thisArg, _arguments)).next()); }); }; -const typeable_1 = require("typeable"); -const fields_1 = require("./fields"); -const utils_1 = require("./utils"); +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t; + return { next: verb(0), "throw": verb(1), "return": verb(2) }; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [0, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var typeable_1 = require("typeable"); +var fields_1 = require("./fields"); +var utils_1 = require("./utils"); /* * The core schema object class. */ -class Document { +var Document = (function () { /* * Class constructor. */ - constructor(data, options) { + function Document(data, options) { + var _this = this; Object.defineProperty(this, 'options', { value: Object.freeze(options || {}) }); @@ -25,7 +53,7 @@ class Document { value: this.options.parent || null }); Object.defineProperty(this, 'root', { - get: () => this._getRootDocument() + get: function () { return _this._getRootDocument(); } }); Object.defineProperty(this, '_fields', { value: {}, @@ -48,8 +76,8 @@ class Document { /* * Loops up on the tree and returns the first document in the tree. */ - _getRootDocument() { - let root = this; + Document.prototype._getRootDocument = function () { + var root = this; do { if (root.parent) { root = root.parent; @@ -58,274 +86,318 @@ class Document { return root; } } while (true); - } + }; /* * Creates a new field instance. This method is especially useful when * extending this class. */ - _createField(recipe = {}) { - let { type } = recipe; + Document.prototype._createField = function (recipe) { + if (recipe === void 0) { recipe = {}; } + var type = recipe.type; return new fields_1.Field(utils_1.merge(recipe, { type: this._types[type] || type }), { owner: this, validators: this._validators, failFast: this._failFast }); - } + }; /* * Creates a new validation error instance. */ - _createValidationError(message = 'Validation failed', code = 422) { - let error = new Error(message); + Document.prototype._createValidationError = function (message, code) { + if (message === void 0) { message = 'Validation failed'; } + if (code === void 0) { code = 422; } + var error = new Error(message); error.code = code; return error; - } + }; /* * Creates a new document instance. This method is especially useful when * extending this class. */ - _createDocument(data = {}, options = {}) { + Document.prototype._createDocument = function (data, options) { + if (data === void 0) { data = {}; } + if (options === void 0) { options = {}; } return new this.constructor(data, options); - } + }; /* * Configures validator to stop validating field on the first error. */ - failFast(fail = true) { + Document.prototype.failFast = function (fail) { + if (fail === void 0) { fail = true; } this._failFast = typeable_1.toBoolean(fail); - } + }; /* * Defines a new field property. */ - defineField(name, recipe) { - let field = this._createField(recipe); + Document.prototype.defineField = function (name, recipe) { + var field = this._createField(recipe); Object.defineProperty(this, name, { - get: () => field.value, - set: (v) => field.value = v, + get: function () { return field.value; }, + set: function (v) { return field.value = v; }, enumerable: true, configurable: true }); this._fields[name] = field; - } + }; /* * Defines a new custom data type. */ - defineType(name, converter) { + Document.prototype.defineType = function (name, converter) { this._types[name] = converter; - } + }; /* * Defines a new custom validator. */ - defineValidator(name, handler) { + Document.prototype.defineValidator = function (name, handler) { this._validators[name] = handler; - } + }; /* * Returns a value at path. */ - getField(...keys) { + Document.prototype.getField = function () { + var keys = []; + for (var _i = 0; _i < arguments.length; _i++) { + keys[_i] = arguments[_i]; + } keys = [].concat(typeable_1.isArray(keys[0]) ? keys[0] : keys); - let lastKey = keys.pop(); + var lastKey = keys.pop(); if (keys.length === 0) { return this._fields[lastKey]; } - let field = keys.reduce((a, c) => (a[c] || {}), this); + var field = keys.reduce(function (a, c) { return (a[c] || {}); }, this); return field instanceof Document ? field.getField(lastKey) : undefined; - } + }; /* * Returns `true` if the field exists. */ - hasField(...keys) { - return !typeable_1.isUndefined(this.getField(...keys)); - } + Document.prototype.hasField = function () { + var keys = []; + for (var _i = 0; _i < arguments.length; _i++) { + keys[_i] = arguments[_i]; + } + return !typeable_1.isUndefined(this.getField.apply(this, keys)); + }; /* * Deeply applies data to the fields. */ - populate(data = {}) { + Document.prototype.populate = function (data) { + var _this = this; + if (data === void 0) { data = {}; } data = utils_1.serialize(data); Object.keys(data) - .filter((n) => !!this._fields[n]) - .forEach((name) => this[name] = data[name]); + .filter(function (n) { return !!_this._fields[n]; }) + .forEach(function (name) { return _this[name] = data[name]; }); return this; - } + }; /* * Converts this class into serialized data object. */ - serialize() { + Document.prototype.serialize = function () { return utils_1.serialize(this); - } + }; /* * Scrolls through the document and returns an array of fields. */ - flatten(prefix = []) { - let fields = []; - Object.keys(this._fields).forEach((name) => { - let field = this._fields[name]; - let type = field.type; - let path = (prefix || []).concat(name); - let value = field.value; - fields.push({ path, field }); + Document.prototype.flatten = function (prefix) { + var _this = this; + if (prefix === void 0) { prefix = []; } + var fields = []; + Object.keys(this._fields).forEach(function (name) { + var field = _this._fields[name]; + var type = field.type; + var path = (prefix || []).concat(name); + var value = field.value; + fields.push({ path: path, field: field }); if (typeable_1.isPresent(value) && typeable_1.isPresent(type)) { if (type.prototype instanceof Document) { fields = fields.concat(value.flatten(path)); } else if (typeable_1.isArray(type) && type[0].prototype instanceof Document) { fields = fields.concat(value - .map((f, i) => (f ? f.flatten(path.concat([i])) : null)) - .filter((f) => typeable_1.isArray(f)) - .reduce((a, b) => a.concat(b))); + .map(function (f, i) { return (f ? f.flatten(path.concat([i])) : null); }) + .filter(function (f) { return typeable_1.isArray(f); }) + .reduce(function (a, b) { return a.concat(b); })); } } }); return fields; - } + }; /* * Scrolls through object fields and collects results. */ - collect(handler) { + Document.prototype.collect = function (handler) { return this.flatten().map(handler); - } + }; /* * Scrolls through document fields and executes a handler on each field. */ - scroll(handler) { + Document.prototype.scroll = function (handler) { return this.flatten().map(handler).length; - } + }; /* * Converts this class into serialized data object with only the keys that * pass the provided `test`. */ - filter(test) { - let data = utils_1.serialize(this); + Document.prototype.filter = function (test) { + var data = utils_1.serialize(this); this.flatten() - .sort((a, b) => b.path.length - a.path.length) - .filter((field) => !test(field)) - .forEach((field) => { - let names = field.path.concat(); - let lastName = names.pop(); - delete names.reduce((o, k) => o[k], data)[lastName]; + .sort(function (a, b) { return b.path.length - a.path.length; }) + .filter(function (field) { return !test(field); }) + .forEach(function (field) { + var names = field.path.concat(); + var lastName = names.pop(); + delete names.reduce(function (o, k) { return o[k]; }, data)[lastName]; }); return data; - } + }; /* * Sets each document field to its default value. */ - reset() { + Document.prototype.reset = function () { + var _this = this; Object.keys(this._fields) - .forEach((name) => this._fields[name].reset()); + .forEach(function (name) { return _this._fields[name].reset(); }); return this; - } + }; /* * Resets fields then sets fields to their fake values. */ - fake() { + Document.prototype.fake = function () { + var _this = this; Object.keys(this._fields) - .forEach((name) => this._fields[name].fake()); + .forEach(function (name) { return _this._fields[name].fake(); }); return this; - } + }; /* * Sets all fileds to `null`. */ - clear() { + Document.prototype.clear = function () { + var _this = this; Object.keys(this._fields) - .forEach((name) => this._fields[name].clear()); + .forEach(function (name) { return _this._fields[name].clear(); }); return this; - } + }; /* * Resets information about changed fields by setting initial value of each field. */ - commit() { + Document.prototype.commit = function () { + var _this = this; Object.keys(this._fields) - .forEach((name) => this._fields[name].commit()); + .forEach(function (name) { return _this._fields[name].commit(); }); return this; - } + }; /* * Sets each field to its initial value (value before last commit). */ - rollback() { + Document.prototype.rollback = function () { + var _this = this; Object.keys(this._fields) - .forEach((name) => this._fields[name].rollback()); + .forEach(function (name) { return _this._fields[name].rollback(); }); return this; - } + }; /* * Returns `true` when the `value` represents an object with the * same field values as the original document. */ - equals(value) { + Document.prototype.equals = function (value) { return utils_1.isEqual(utils_1.serialize(this), utils_1.serialize(value)); - } + }; /* * Returns `true` if at least one field has been changed. */ - isChanged() { + Document.prototype.isChanged = function () { + var _this = this; return Object.keys(this._fields) - .some((name) => this._fields[name].isChanged()); - } + .some(function (name) { return _this._fields[name].isChanged(); }); + }; /* * Returns `true` if nested fields exist. */ - isNested() { + Document.prototype.isNested = function () { + var _this = this; return Object.keys(this._fields) - .some((name) => this._fields[name].isNested()); - } + .some(function (name) { return _this._fields[name].isNested(); }); + }; /* * Validates fields and throws an error. */ - validate({ quiet = false } = {}) { - return __awaiter(this, void 0, void 0, function* () { - let fields = this._fields; - yield Promise.all(Object.keys(fields) - .map((n) => fields[n].validate())); - if (!quiet && this.hasErrors()) { - throw this._createValidationError(); - } - return this; + Document.prototype.validate = function (_a) { + var _b = (_a === void 0 ? {} : _a).quiet, quiet = _b === void 0 ? false : _b; + return __awaiter(this, void 0, void 0, function () { + var fields; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + fields = this._fields; + return [4 /*yield*/, Promise.all(Object.keys(fields) + .map(function (n) { return fields[n].validate(); }))]; + case 1: + _a.sent(); + if (!quiet && this.hasErrors()) { + throw this._createValidationError(); + } + return [2 /*return*/, this]; + } + }); }); - } + }; /* * Returns a list of all fields with errors. */ - collectErrors() { + Document.prototype.collectErrors = function () { return this.flatten() - .map(({ path, field }) => ({ path, errors: field.errors })) - .filter(({ path, errors }) => errors.length > 0); - } + .map(function (_a) { + var path = _a.path, field = _a.field; + return ({ path: path, errors: field.errors }); + }) + .filter(function (_a) { + var path = _a.path, errors = _a.errors; + return errors.length > 0; + }); + }; /* * Sets fields errors. */ - applyErrors(errors = []) { - errors.forEach((error) => { - let field = this.getField(...error.path); + Document.prototype.applyErrors = function (errors) { + var _this = this; + if (errors === void 0) { errors = []; } + errors.forEach(function (error) { + var field = _this.getField.apply(_this, error.path); if (field) { field.errors = error.errors; } }); return this; - } + }; /* * Returns `true` when errors exist (inverse of `isValid`). */ - hasErrors() { + Document.prototype.hasErrors = function () { + var _this = this; return Object.keys(this._fields) - .some((name) => this._fields[name].hasErrors()); - } + .some(function (name) { return _this._fields[name].hasErrors(); }); + }; /* * Returns `true` when no errors exist (inverse of `hasErrors`). */ - isValid() { + Document.prototype.isValid = function () { return !this.hasErrors(); - } + }; /* * Removes fields errors. */ - invalidate() { + Document.prototype.invalidate = function () { + var _this = this; Object.keys(this._fields) - .forEach((name) => this._fields[name].invalidate()); + .forEach(function (name) { return _this._fields[name].invalidate(); }); return this; - } + }; /* * Returns a new Document instance which is the exact copy of the original. */ - clone() { + Document.prototype.clone = function () { return this._createDocument(this, this.options); - } -} + }; + return Document; +}()); exports.Document = Document; -//# sourceMappingURL=documents.js.map \ No newline at end of file diff --git a/dist/documents.js.map b/dist/documents.js.map deleted file mode 100644 index 97285ce..0000000 --- a/dist/documents.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"documents.js","sourceRoot":"","sources":["../src/documents.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/fields.js b/dist/fields.js index be5e0e9..6706139 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -7,18 +7,46 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge step((generator = generator.apply(thisArg, _arguments)).next()); }); }; -const typeable_1 = require("typeable"); -const utils_1 = require("./utils"); -const validatable_1 = require("validatable"); -const documents_1 = require("./documents"); +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t; + return { next: verb(0), "throw": verb(1), "return": verb(2) }; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [0, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var typeable_1 = require("typeable"); +var utils_1 = require("./utils"); +var validatable_1 = require("validatable"); +var documents_1 = require("./documents"); /* * Field class. */ -class Field { +var Field = (function () { /* * Class constructor. */ - constructor(recipe, options) { + function Field(recipe, options) { + var _this = this; this.errors = []; Object.defineProperty(this, 'recipe', { value: Object.freeze(recipe || {}) @@ -38,87 +66,87 @@ class Field { value: this._createValidator() }); Object.defineProperty(this, 'value', { - get: () => this._getValue(), - set: (v) => this._setValue(v), + get: function () { return _this._getValue(); }, + set: function (v) { return _this._setValue(v); }, enumerable: true }); Object.defineProperty(this, 'defaultValue', { - get: () => this._getDefaultValue(), + get: function () { return _this._getDefaultValue(); }, enumerable: true }); Object.defineProperty(this, 'fakeValue', { - get: () => this._getFakeValue(), + get: function () { return _this._getFakeValue(); }, enumerable: true }); Object.defineProperty(this, 'initialValue', { - get: () => this._initialData, + get: function () { return _this._initialData; }, enumerable: true }); Object.defineProperty(this, 'type', { - get: () => this.recipe.type || null, + get: function () { return _this.recipe.type || null; }, enumerable: true }); Object.defineProperty(this, 'owner', { - get: () => this.options.owner || null, + get: function () { return _this.options.owner || null; }, enumerable: true }); } /* * Returns a new instance of validator. */ - _createValidator() { - let { validators, failFast } = this.options; - let context = this; - return new validatable_1.Validator({ validators, failFast, context }); - } + Field.prototype._createValidator = function () { + var _a = this.options, validators = _a.validators, failFast = _a.failFast; + var context = this; + return new validatable_1.Validator({ validators: validators, failFast: failFast, context: context }); + }; /* * Returns current field value. */ - _getValue() { - let data = this._data; - let { get } = this.recipe; + Field.prototype._getValue = function () { + var data = this._data; + var get = this.recipe.get; if (typeable_1.isFunction(get)) { data = get.call(this, data); } return data; - } + }; /* * Sets current field value. */ - _setValue(data) { + Field.prototype._setValue = function (data) { if (typeable_1.isFunction(data)) { data = data.call(this); } - let { set } = this.recipe; + var set = this.recipe.set; if (typeable_1.isFunction(set)) { data = set.call(this, data); } data = this._cast(data, this.type); this.invalidate(); this._data = data; - } + }; /* * Converts a `value` into specified `type`. */ - _cast(data, type) { - let converter = type; + Field.prototype._cast = function (data, type) { + var converter = type; if (!typeable_1.isValue(data)) { return null; } if (this.isNested()) { - let Klass = typeable_1.isArray(type) ? type[0] : type; - let options = utils_1.merge({}, this.owner.options, { parent: this.owner }); - let toDocument = (d) => new Klass(d, options); + var Klass_1 = typeable_1.isArray(type) ? type[0] : type; + var options_1 = utils_1.merge({}, this.owner.options, { parent: this.owner }); + var toDocument = function (d) { return new Klass_1(d, options_1); }; converter = typeable_1.isArray(type) ? [toDocument] : toDocument; } return typeable_1.cast(data, converter); - } + }; /* * Returns the default value of a field. */ - _getDefaultValue() { - let data = null; - let { defaultValue } = this.recipe; + Field.prototype._getDefaultValue = function () { + var data = null; + var defaultValue = this.recipe.defaultValue; if (typeable_1.isFunction(defaultValue)) { data = defaultValue.call(this); } @@ -126,13 +154,13 @@ class Field { data = defaultValue; } return data; - } + }; /* * Returns the fake value of a field. */ - _getFakeValue() { - let data = null; - let { fakeValue } = this.recipe; + Field.prototype._getFakeValue = function () { + var data = null; + var fakeValue = this.recipe.fakeValue; if (typeable_1.isFunction(fakeValue)) { data = fakeValue.call(this); } @@ -140,108 +168,118 @@ class Field { data = fakeValue; } return data; - } + }; /* * Sets data to the default value. */ - reset() { + Field.prototype.reset = function () { this.value = this._getDefaultValue(); return this; - } + }; /* * Resets the value then sets data to the fake value. */ - fake() { + Field.prototype.fake = function () { this.reset(); if (this.fakeValue) { this.value = this.fakeValue; } (typeable_1.toArray(this.value) || []) // related fake values - .filter((doc) => doc instanceof documents_1.Document) - .map((doc) => doc.fake()); + .filter(function (doc) { return doc instanceof documents_1.Document; }) + .map(function (doc) { return doc.fake(); }); return this; - } + }; /* * Sets data to `null`. */ - clear() { + Field.prototype.clear = function () { this.value = null; return this; - } + }; /* * Set's the initial value to the current value. */ - commit() { + Field.prototype.commit = function () { if (typeable_1.isValue(this.value)) { typeable_1.toArray(this.value) - .filter((v) => v && v.commit) - .forEach((v) => v.commit()); + .filter(function (v) { return v && v.commit; }) + .forEach(function (v) { return v.commit(); }); } this._initialData = utils_1.serialize(this.value); return this; - } + }; /* * Sets value to the initial value. */ - rollback() { + Field.prototype.rollback = function () { this.value = this.initialValue; return this; - } + }; /* * Returns `true` when `data` equals to the current value. */ - equals(data) { - let value = data instanceof Field ? data.value : data; + Field.prototype.equals = function (data) { + var value = data instanceof Field ? data.value : data; return utils_1.isEqual(utils_1.serialize(this.value), utils_1.serialize(value)); - } + }; /* * Returns `true` if the value has been changed. */ - isChanged() { + Field.prototype.isChanged = function () { return !this.equals(this.initialValue); - } + }; /* * Returns `true` if the data is a Document. */ - isNested() { - let type = this.type; + Field.prototype.isNested = function () { + var type = this.type; if (typeable_1.isArray(type)) type = type[0]; return (typeable_1.isPresent(type) && typeable_1.isPresent(type.prototype) && (type.prototype instanceof documents_1.Document || type.prototype.constructor === documents_1.Document)); - } + }; /* * Validates the field by populating the `errors` property. * * IMPORTANT: Array null values for nested objects are not treated as an object * but as an empty item thus isValid() for [null] succeeds. */ - validate() { - return __awaiter(this, void 0, void 0, function* () { - yield Promise.all(// invalidate related documents - (typeable_1.toArray(this.value) || []) - .filter((doc) => doc instanceof documents_1.Document) - .map((doc) => doc.validate({ quiet: true }))); - this.errors = yield this._validator.validate(this.value, this.recipe.validate); - return this; + Field.prototype.validate = function () { + return __awaiter(this, void 0, void 0, function () { + var _a; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: return [4 /*yield*/, Promise.all(// invalidate related documents + (typeable_1.toArray(this.value) || []) + .filter(function (doc) { return doc instanceof documents_1.Document; }) + .map(function (doc) { return doc.validate({ quiet: true }); }))]; + case 1: + _b.sent(); + _a = this; + return [4 /*yield*/, this._validator.validate(this.value, this.recipe.validate)]; + case 2: + _a.errors = _b.sent(); + return [2 /*return*/, this]; + } + }); }); - } + }; /* * Clears errors. */ - invalidate() { + Field.prototype.invalidate = function () { (typeable_1.toArray(this.value) || []) // invalidate related documents - .filter((doc) => doc instanceof documents_1.Document) - .forEach((doc) => doc.invalidate()); + .filter(function (doc) { return doc instanceof documents_1.Document; }) + .forEach(function (doc) { return doc.invalidate(); }); this.errors = []; return this; - } + }; /* * Returns `true` when errors exist (inverse of `isValid`). */ - hasErrors() { + Field.prototype.hasErrors = function () { if (this.errors.length > 0) { return true; } @@ -250,16 +288,16 @@ class Field { } else { return typeable_1.toArray(this.value) - .filter((f) => !!f) - .some((f) => f.hasErrors()); + .filter(function (f) { return !!f; }) + .some(function (f) { return f.hasErrors(); }); } - } + }; /* * Returns `true` when the value is valid (inverse of `hasErrors`). */ - isValid() { + Field.prototype.isValid = function () { return !this.hasErrors(); - } -} + }; + return Field; +}()); exports.Field = Field; -//# sourceMappingURL=fields.js.map \ No newline at end of file diff --git a/dist/fields.js.map b/dist/fields.js.map deleted file mode 100644 index 0a1cff9..0000000 --- a/dist/fields.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index 8da159d..c26ad09 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,6 +1,5 @@ "use strict"; -const documents_1 = require("./documents"); +var documents_1 = require("./documents"); exports.Document = documents_1.Document; -const fields_1 = require("./fields"); +var fields_1 = require("./fields"); exports.Field = fields_1.Field; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map deleted file mode 100644 index 2b794de..0000000 --- a/dist/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,2CAAqC;AAO7B,wCAAQ;AANhB,qCAA+B;AAMb,+BAAK"} \ No newline at end of file diff --git a/dist/utils.js b/dist/utils.js index a2c95fa..611fdf1 100644 --- a/dist/utils.js +++ b/dist/utils.js @@ -1,8 +1,8 @@ "use strict"; -const typeable_1 = require("typeable"); -const merge = require("lodash.merge"); +var typeable_1 = require("typeable"); +var merge = require("lodash.merge"); exports.merge = merge; -const isEqual = require("lodash.isequal"); +var isEqual = require("lodash.isequal"); exports.isEqual = isEqual; /* * Returns a duplicated data object (useful to remove data bindings). @@ -19,4 +19,3 @@ function retrieve(input) { return typeable_1.isFunction(input) ? input() : input; } exports.retrieve = retrieve; -//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/dist/utils.js.map b/dist/utils.js.map deleted file mode 100644 index ff82539..0000000 --- a/dist/utils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";AAAA,uCAAoC;AACpC,sCAAsC;AAO9B,sBAAK;AANb,0CAA0C;AAYlC,0BAAO;AAEf;;EAEE;AAEF,mBAA2B,IAAI;IAC7B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC;AAFD,8BAEC;AAED;;;EAGE;AAEF,kBAA0B,KAAK;IAC7B,MAAM,CAAC,qBAAU,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;AAC7C,CAAC;AAFD,4BAEC"} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 2ef7861..9f2313d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,10 +1,11 @@ { "compilerOptions": { "module": "commonjs", - "target": "es6", + "target": "es3", "noImplicitAny": false, - "sourceMap": true, + "sourceMap": false, "outDir": "dist", - "declaration": true + "declaration": true, + "lib": ["es2015.promise", "es5"] } } From de0ceb491d5c4b845cadd595dbb3c8f0bce61150 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 25 Dec 2016 09:40:54 +0100 Subject: [PATCH 135/219] document root, readme --- README.md | 296 ++++++++++++++++++++------------------------ dist/documents.d.ts | 1 + example/index.js | 153 +++++++---------------- package.json | 2 +- src/documents.ts | 1 + 5 files changed, 179 insertions(+), 274 deletions(-) diff --git a/README.md b/README.md index 6472c1a..f0eab7b 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,15 @@ -- nested documents -- nested type casting -- validator validate only if present - - - - - - - - - - - - ![Build Status](https://travis-ci.org/xpepermint/objectschemajs.svg?branch=master) [![NPM Version](https://badge.fury.io/js/objectschema.svg)](https://badge.fury.io/js/objectschema) [![Dependency Status](https://gemnasium.com/xpepermint/objectschemajs.svg)](https://gemnasium.com/xpepermint/objectschemajs) # objectschema.js -> Advanced schema enforced JavaScript objects. +> Advanced strongly-typed JavaScript object. -This is a light weight open source package for use on **server** or in **browser** (using module bundler). The source code is available on [GitHub](https://github.com/xpepermint/objectschemajs) where you can also find our [issue tracker](https://github.com/xpepermint/objectschemajs/issues). +This is a light weight open source package for the **server** and **browser** (using module bundler). The source code is available on [GitHub](https://github.com/xpepermint/objectschemajs) where you can also find our [issue tracker](https://github.com/xpepermint/objectschemajs/issues). ## Features * Simple and intuitive API +* TypeScript ready * Field type casting * Custom field data types * Field dynamic default value @@ -54,149 +40,115 @@ This package uses promises thus you need to use [Promise polyfill](https://githu ## Example +### TypeScript + ```js -import {Document, Schema} from 'objectschema'; - -let bookSchema = new Schema({ - fields: { // document fields - title: { // field name - type: 'String', // field type - defaultValue: () => 'Lord of the flies', // value or function - fakeValue: () => 'Fake Title' // value or function (use e.g. `faker` for that) - } - } -}); +import {Document} from 'objectschema'; -let userSchema = new Schema({ // root document - fields: { // document fields - name: { // field name - type: 'String', // field type (string) - validate: [ // field validators - { - validator: 'presence', // validator name - message: 'is required' // validator error message - } - ] - }, - books: { // field name - type: [bookSchema], // array of `bookSchema` documents - validate: [ // validators - { - validator: 'presence', // validator name - message: 'is required' // validator error message - } - ] - } +/* Model */ + +class User extends Document { // User model + public name: string; // class property + + constructor (data, options) { + super(data, options); + this.defineField('name'); // field definition (for class property `name`) + this.populate(data); // set values } +} + +/* Usage */ + +let user = new User({ // new model instance + name: 'John Smith' }); +``` -let initialData = { - name: 'John Smith', - books: [ - { - title: 'True Detective' - } - ] -}; +### JavaScript -let user = new Document(initialData, userSchema); // new document instance +```js +import {Document} from 'objectschema'; -user.title; // => "True Detective" -await user.validate({quiet: true}); -user.isValid(); // => false +/* Model */ -user.fake(); // generate fake data -user.title; // => "lorem ipsum" -user.reset(); // use default value -user.title; // => "Lord of the flies" +class User extends Document { // User model + constructor (data, options) { + super(data, options); + this.defineField('name'); // field definition + this.populate(data); // set values + } +} + +/* Usage */ -user.$title; // => field class instance +let user = new User({ // new model instance + name: 'John Smith' +}); ``` ## API -This package consists of two core classes. A `Schema` represents a configuration object and a `Document` represents a data object defined by the Schema. There is also the `Field` class which represents a document field. +This package consists of two core classes: +* `Document` represents a data object with fields. +* `Field` represents a document property. -This package uses [*typeable.js*](https://github.com/xpepermint/typeablejs) module for type casting and [*validatable.js*](https://github.com/xpepermint/validatablejs) for validating fields. +This package uses [*typeable.js*](https://github.com/xpepermint/typeablejs) for data type casting. Many common data types and array types are supported, but we can also use custom types. Please check package's website for a list of supported types and further information. -### Schema +Validation is handled by [*validatable.js*](https://github.com/xpepermint/validatablejs). The package provides many built-in validators, allows adding custom validators and overriding existing ones. When a document is created all validator methods share document's context thus we can write context-aware checks. Please see package's website for details. -Schema represents a configuration object which configures the `Document`. It holds information about fields, type casting, how fields are validated and what the default values are. +### Document -A Schema can also be used as a custom type object. This way you can create a nested data structure by setting a schema instance for a field `type`. When a document is created, each schema in a tree of fields will become an instance of a Document - a tree of documents. +A document is an advanced strongly-typed JavaScript object where properties are instances of the `Field` class. -**Schema({mixins, fields, strict, validators, types, firstErrorOnly})** +**Document(data, {parent})** -> A class for defining document structure. +> A class for creating schema enforced objects. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ -| mixins | [] | No | [] | A list of schema instances from which to extend the schema. -| fields | Object,Function | Yes | - | An object with fields definition. You should pass a function which returns the definition object in case of self referencing. -| strict | Boolean | No | true | A schema type (set to `false` to allow dynamic fields not defined in schema). -| validators | Object | No | validatable.js defaults | Configuration options for the `Validator` class, provided by the [validatable.js](https://github.com/xpepermint/validatablejs), which is used for field validation. -| types | Object | No | typeable.js defaults | Configuration options for the `cast` method provided by the [typeable.js](https://github.com/xpepermint/typeablejs), which is used for data type casting. -| firstErrorOnly | Boolean | No | false | When set to true, the validation stops after the first validation error. +| data | Object | No | - | Initial data object. +| parent | Document | No | - | Parent document instance (for nesting). ```js -new Schema({ - mixins: [animalSchema, catSchema], // schema extensions - fields: { // schema fields definition - email: { // a field name holding a field definition - type: 'String', // [required] a field data type provided by typeable.js - defaultValue: 'John Smith', // a default field value (can be a value of a function) - fakeValue: 'John Smith', // a fake field value (can be a value of a function) - validate: [ // field validations provided by validatable.js - { // validator recipe - validator: 'presence', // [required] validator name - message: 'is required', // [required] validator error message - condition () { return true } // condition to switch off the validator +class Model extends Document { // User model + constructor (data, options) { + super(data, options); + + this.defineField('name', { + type: 'String', // converts value to string + get: (v) => v; // custom getter + set: (v) => v; // custom setter + validate: [ // value validations + { // validator recipe (check validatable.js for more) + validator: 'presence', // validator name + message: 'must be present' // error message } - ] - }, - }, - strict: true, // schema mode - validators: {}, // validatable.js configuration options (see the package's page for details) - types: {}, // typeable.js configuration options (see the package's page for details) - firstErrorOnly: false, // validatable.js configuration options (see the package's page for details) -}); -``` - -This package uses [*typeable.js*](https://github.com/xpepermint/typeablejs) for data type casting. Many common data types and array types are supported, but we can also define custom types or override existing types through a `types` key. Please check package's website for a list of supported types and further information. - -By default, all fields in a schema are set to `null`. We can set a default value for a field by setting the `defaultValue` option. - -Validation is handled by [*validatable.js*](https://github.com/xpepermint/validatablejs). We can configure the package through `validators` and `firstErrorOnly` options. The package provides many built-in validators, allows adding custom validators and overriding existing ones. When a document is created all validator methods share document's context thus we can write context-aware checks. Please see package's website for details. + ], + defaultValue: 'Noname', // field default value + fakeValue: () => 'Noname', // field fake value + }); -### Document + this.populate(data); + this.commit(); + } +} +``` -A document is a schema enforced object. All document properties and configuration options are defined by the schema. +#### Properties -**Document(data, schema, parent)** +**Document.prototype.options**: Object -> A class for creating schema enforced objects. +> Document options. -| Option | Type | Required | Default | Description -|--------|------|----------|---------|------------ -| data | Object | No | - | Initial data object. -| schema | Schema | No | - | An instance of the Schema class. -| parent | Document | No | - | A parent document instance (for nesting documents). - -**Document.prototype.$parent**: Document +**Document.prototype.parent**: Document > Parent document instance. -**Document.prototype.$root**: Document +**Document.prototype.root**: Document > The first document instance in a tree of documents. -**Document.prototype.$schema**: Schema - -> Schema instance. - -**Document.prototype.$validator**: Validator - -> Validator instance, used for validating fields. +#### Methods **Document.prototype.applyErrors(errors)**: Document @@ -257,6 +209,10 @@ doc.applyErrors([ > Returns a list of errors for all the fields ({path, errors}[]). +```js +doc.collectErrors(); // => {path: ['name'], errors: [{validator: 'absence', message: 'must be blank', code: 422}]} +``` + **Document.prototype.commit()**: Document > Sets initial value of each document field to the current value of a field. This is how field change tracking is restarted. @@ -283,7 +239,7 @@ doc.applyErrors([ **Document.prototype.getField(...keys)**: Field -> Returns a class instance of the field at path. +> Returns a class instance of a field at path. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ @@ -315,7 +271,7 @@ doc.applyErrors([ **Document.prototype.invalidate()**: Document -> Clears `errors` on all fields (the reverse of `validate()`). +> Clears `errors` on all fields. **Document.prototype.populate(data)**: Document @@ -355,36 +311,72 @@ doc.applyErrors([ ```js try { - await doc.validate(); // throws a validation error when fields are invalid + await doc.validate(); // throws a validation error when invalid fields exist } catch (e) { - // `e` is an error, which holds errors for all invalid fields (including those deeply nested) + // `e` is a 422 validation error } ``` ### Field -When a document field is defined, another field with the same name but prefixed with the `$` sign is set. This special read-only field holds a reference to the actual field instance. - -```js -let user = new Document(null, schema); -user.name = 'John'; // actual document field -user.$name; // reference to document field instance -user.$name.isChanged(); // calling field instance method -``` +Every document field is an instance of the `Field` class. -**Field(owner, name)** +**Field({type, get, set, defaultValue, fakeValue, validate}, {owner, validators, failFast})** -> A field class which represents each field on a document. +> A document field. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ -| owner | Document | Yes | - | An instance of a Document which owns the field. -| name | String | Yes | - | Field name +| type | String, Document | No | - | Data type (pass a Document to create a nested structure; check [typeable.js](https://github.com/xpepermint/validatablejs) for more). +| get | Function | No | - | Custom getter. +| set | Function | No | - | Custom setter. +| defaultValue | Any | No | - | Field default value. +| fakeValue | Any | No | - | Field fake value. +| validate | Array | No | - | List of validation recipies (check [validatable.js](https://github.com/xpepermint/validatablejs) for more). +| owner | Document | No | - | An instance of a Document which owns the field. +| validators | Object | No | - | Custom validators (check [validatable.js](https://github.com/xpepermint/validatablejs) for more) +| failFast | Boolean | No | false | Stops validation on the first error when set to `true`. + +#### Properties + +**Field.prototype.defaultValue**: Any + +> A getter which returns the default field value. + +**Field.prototype.errors**: Object[]; + +> List of field errors (sets the `validate` method). + +**Field.prototype.fakeValue**: Any + +> A getter which returns a fake field value. + +**Field.prototype.initialValue**: Any + +> A getter which returns the last commited field value. + +**Field.prototype.options**: Object + +> A getter which returns field options. + +**Field.prototype.owner**: Document -**Field.prototype.$owner**: Document +> A getter which returns a reference to a Document instance on which the field is defined. -> A reference to a Document instance on which the field is defined. +**Field.prototype.recipe**: Object + +> A getter which returns a field recipe object. + +**Field.prototype.type**: Any + +> A getter which returns field type (set to `Document` for a nested structure). + +**Field.prototype.value**: Any + +> Field current value (the actula document's property). + +#### Methods **Field.prototype.clear()**: Field @@ -394,10 +386,6 @@ user.$name.isChanged(); // calling field instance method > Sets initial value to the current value. This is how field change tracking is restarted. -**Field.prototype.defaultValue**: Any - -> A getter which returns the default field value. - **Field.prototype.equals(value)**: Boolean > Returns `true` when the provided `value` represents an object that looks the same. @@ -406,18 +394,10 @@ user.$name.isChanged(); // calling field instance method > Sets field to a generated fake value. -**Field.prototype.fakeValue**: Any - -> A getter which returns a fake field value. - **Field.prototype.hasErrors()**: Boolean > Returns `true` when no errors exist (inverse of `isValid()`). Make sure that you call the `validate()` method first. -**Field.prototype.initialValue**: Any - -> A getter which returns the initial field value (last committed value). - **Field.prototype.isChanged()**: Boolean > Returns `true` if the field or at least one sub field have been changed. @@ -434,10 +414,6 @@ user.$name.isChanged(); // calling field instance method > Clears the `errors` field on all fields (the reverse of `validate()`). -**Field.prototype.name**: String - -> A getter which returns a name of a field. - **Field.prototype.reset()**: Field > Sets the field to its default value. @@ -450,10 +426,6 @@ user.$name.isChanged(); // calling field instance method > Validates the `value` and populates the `errors` property with errors. -**Field.prototype.value**: Any - -> A getter and setter for the value of the field. - ## License (MIT) ``` diff --git a/dist/documents.d.ts b/dist/documents.d.ts index 7693411..b014997 100644 --- a/dist/documents.d.ts +++ b/dist/documents.d.ts @@ -24,6 +24,7 @@ export declare class Document { protected _failFast: boolean; readonly options: DocumentOptions; readonly parent: Document; + readonly root: Document; constructor(data?: any, options?: DocumentOptions); protected _getRootDocument(): Document; protected _createField(recipe?: FieldRecipe): Field; diff --git a/example/index.js b/example/index.js index 53a2ede..08db396 100644 --- a/example/index.js +++ b/example/index.js @@ -1,111 +1,42 @@ -/* FRAMEWORK ******************************************************************/ - -class Field { - _value: any; - value: any; - - constructor (...args) { - this._value = null; - Object.defineProperty(this, 'value', { - get: () => this._value, - set: (v) => this._value = v, - enumerable: true - }); - } -} - -class Document { - context: any; - static context: any; - - constructor (...args) {} - - setValidator (...args) {} - - setHandler (...args) {} - - defineField (name, options?) { - let field = new Field(); - - Object.defineProperty(this, name, { - get: () => field.value, - set: (v) => field.value = v, - enumerable: true, - configurable: true - }); - } - - populate (data?) {} -} - -class Context { - constructor (...args) {} - - defineProperty(name: string, descriptor: any) { - return Object.defineProperty(this, name, descriptor); - } - - defineModel(Model: Function): any { - let name: string = (Model.prototype.constructor as any).name; - - let Klass = eval(`class ${name} extends Model {}`); - Klass.prototype.context = this; - Klass.context = this; - - return this.defineProperty(name, { - get: () => Klass - }); - } - -} - -/* MODELS *********************************************************************/ - -class Book extends Document { - public title: string; - - constructor (data?) { - super(); - this.defineField('title', {type: 'String'}); - this.populate(data); - } -} - -class User extends Document { - public name: string; - public books: Book[]; - - constructor (data?) { - super(); - this.setValidator('isCool', () => true); - this.setHandler('404', () => false); - this.defineField('name', {type: 'String'}); - this.defineField('book', {type: [Book]}); - this.populate(data); - } -} - -/* CONTEXT ********************************************************************/ - -class App extends Context { - public mongo: any; - public userId: number; - - constructor (userId: number) { - super(); - this.defineProperty('mongo', () => null); - this.defineProperty('userId', () => userId); - this.defineModel(User); - this.defineModel(Book); - } -} - -/* USAGE **********************************************************************/ - -function echo () { - let m = new User(); - m.name; - m.context - -} -echo(); +// import {Document} from 'objectschema'; + +// class Book extends Document { // Book model +// constructor (data, options) { +// super(data, options); + +// this.defineField('title', { // field definition +// type: 'String', // field type +// validate: [{validator: 'presence', message: 'must be present'}] // field validation recipes +// }); + +// this.populate(data); // set values +// } +// } + +// class User extends Document { // User model +// constructor (data, options) { +// super(data, options); + +// this.defineField('name', { +// type: 'String', // field type +// validate: [{validator: 'presence', message: 'must be present'}] // field validation recipes +// }); +// this.defineField('book', { +// type: Book, // nested model field type +// validate: [{validator: 'presence', message: 'must be present'}] // field validation recipes +// }); + +// this.populate(data); // set values +// } +// } + +// let user = new User({ +// name: 'John Smith' +// book: { +// title: 'True Detective' +// } +// }); +// user.name; // => "True Detective" +// user.book.title; // => "True Detective" +// await user.validate({quiet: true}); +// user.isValid(); // => false diff --git a/package.json b/package.json index 8143843..a05b986 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "objectschema", "version": "3.10.0", - "description": "Advanced schema enforced JavaScript objects.", + "description": "Advanced strongly-typed JavaScript object.", "main": "./dist/index.js", "types": "./dist/index.d.ts", "ava": { diff --git a/src/documents.ts b/src/documents.ts index f57e88f..cd62ffd 100644 --- a/src/documents.ts +++ b/src/documents.ts @@ -40,6 +40,7 @@ export class Document { protected _failFast: boolean; // stop validating on first error readonly options: DocumentOptions; readonly parent: Document; + readonly root: Document; /* * Class constructor. From 5c457892a559a3db59af387400066173923e4900 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 25 Dec 2016 10:32:04 +0100 Subject: [PATCH 136/219] readme --- README.md | 62 +++++++++++++++++++++++++++++++---------------- dist/documents.js | 2 +- src/documents.ts | 8 +++--- tsconfig.json | 1 + 4 files changed, 47 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index f0eab7b..7d46334 100644 --- a/README.md +++ b/README.md @@ -157,27 +157,7 @@ class Model extends Document { // User model ```js doc.applyErrors([ { - path: ['name'], // field path - errors: [ - { - validator: 'presence', // validator name - message: 'is required', // validator message - code: 422 // error code - } - ] - }, - { - path: ['newBook', 'title'], - errors: [ - { - validator: 'absence', - message: 'must be blank', - code: 422 - } - ] - }, - { - path: ['newBooks', 1, 'title'], + path: ['books', 1, 'title'], // field path errors: [ { validator: 'presence', @@ -217,10 +197,50 @@ doc.collectErrors(); // => {path: ['name'], errors: [{validator: 'absence', mess > Sets initial value of each document field to the current value of a field. This is how field change tracking is restarted. +**Document.prototype.defineField(name, {type, get, set, defaultValue, fakeValue, validate})**: Void + +> Defines a new document property. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| name | String | Yes | - | Property name. +| type | String, Document | No | - | Data type (pass a Document to create a nested structure; check [typeable.js](https://github.com/xpepermint/validatablejs) for more). +| get | Function | No | - | Custom getter. +| set | Function | No | - | Custom setter. +| defaultValue | Any | No | - | Field default value. +| fakeValue | Any | No | - | Field fake value. +| validate | Array | No | - | List of validation recipies (check [validatable.js](https://github.com/xpepermint/validatablejs) for more). + +**Document.prototype.defineType(name, converter)**: Void + +> Defines a custom data type. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| name | String | Yes | - | Type name. +| converter | Function | Yes | - | Type converter. + +**Document.prototype.defineValidator(name, handler)**: Void + +> Defines a custom validator. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| name | String | Yes | - | Validator name. +| handler | Function, Promise | Yes | - | Validator handler. + **Document.prototype.equals(value)**: Boolean > Returns `true` when the provided `value` represents an object with the same fields as the document itself. +**Document.prototype.failFast(fail)**: Void + +> Configures validator to stop field validation on the first error. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| fail | Boolean | No | false | Stops field validation on the first error when set to `true`. + **Document.prototype.fake()**: Document > Sets each document field to its fake value if a fake value generator is registered, otherwise the default value is used. diff --git a/dist/documents.js b/dist/documents.js index 9d735eb..544997a 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -127,7 +127,7 @@ var Document = (function () { this._failFast = typeable_1.toBoolean(fail); }; /* - * Defines a new field property. + * Defines a new document property. */ Document.prototype.defineField = function (name, recipe) { var field = this._createField(recipe); diff --git a/src/documents.ts b/src/documents.ts index cd62ffd..b28add7 100644 --- a/src/documents.ts +++ b/src/documents.ts @@ -140,10 +140,10 @@ export class Document { } /* - * Defines a new field property. + * Defines a new document property. */ - public defineField (name: string, recipe?: FieldRecipe) { + public defineField (name: string, recipe?: FieldRecipe): void { let field = this._createField(recipe); Object.defineProperty(this, name, { @@ -160,7 +160,7 @@ export class Document { * Defines a new custom data type. */ - public defineType (name: string, converter: (v?) => any) { + public defineType (name: string, converter: (v?) => any): void { this._types[name] = converter; } @@ -168,7 +168,7 @@ export class Document { * Defines a new custom validator. */ - public defineValidator (name: string, handler: (v?, r?: ValidatorRecipe) => boolean | Promise) { + public defineValidator (name: string, handler: (v?, r?: ValidatorRecipe) => boolean | Promise): void { this._validators[name] = handler; } diff --git a/tsconfig.json b/tsconfig.json index 9f2313d..ef04808 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,6 +3,7 @@ "module": "commonjs", "target": "es3", "noImplicitAny": false, + "removeComments": true, "sourceMap": false, "outDir": "dist", "declaration": true, From 39f946e99d5401186c880fa6e9642bbab60d498f Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 25 Dec 2016 11:01:30 +0100 Subject: [PATCH 137/219] readme public constructors --- README.md | 3 +- dist/documents.js | 103 ---------------------------------------------- dist/fields.js | 70 ++----------------------------- dist/utils.d.ts | 1 - dist/utils.js | 12 ------ src/documents.ts | 2 +- src/fields.ts | 2 +- src/utils.ts | 10 ----- 8 files changed, 6 insertions(+), 197 deletions(-) diff --git a/README.md b/README.md index 7d46334..fb0704e 100644 --- a/README.md +++ b/README.md @@ -49,8 +49,7 @@ import {Document} from 'objectschema'; class User extends Document { // User model public name: string; // class property - - constructor (data, options) { + public constructor (data, options) { super(data, options); this.defineField('name'); // field definition (for class property `name`) this.populate(data); // set values diff --git a/dist/documents.js b/dist/documents.js index 544997a..f0246c2 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -37,13 +37,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) { var typeable_1 = require("typeable"); var fields_1 = require("./fields"); var utils_1 = require("./utils"); -/* -* The core schema object class. -*/ var Document = (function () { - /* - * Class constructor. - */ function Document(data, options) { var _this = this; Object.defineProperty(this, 'options', { @@ -73,9 +67,6 @@ var Document = (function () { }); this.populate(data); } - /* - * Loops up on the tree and returns the first document in the tree. - */ Document.prototype._getRootDocument = function () { var root = this; do { @@ -87,10 +78,6 @@ var Document = (function () { } } while (true); }; - /* - * Creates a new field instance. This method is especially useful when - * extending this class. - */ Document.prototype._createField = function (recipe) { if (recipe === void 0) { recipe = {}; } var type = recipe.type; @@ -100,9 +87,6 @@ var Document = (function () { failFast: this._failFast }); }; - /* - * Creates a new validation error instance. - */ Document.prototype._createValidationError = function (message, code) { if (message === void 0) { message = 'Validation failed'; } if (code === void 0) { code = 422; } @@ -110,25 +94,15 @@ var Document = (function () { error.code = code; return error; }; - /* - * Creates a new document instance. This method is especially useful when - * extending this class. - */ Document.prototype._createDocument = function (data, options) { if (data === void 0) { data = {}; } if (options === void 0) { options = {}; } return new this.constructor(data, options); }; - /* - * Configures validator to stop validating field on the first error. - */ Document.prototype.failFast = function (fail) { if (fail === void 0) { fail = true; } this._failFast = typeable_1.toBoolean(fail); }; - /* - * Defines a new document property. - */ Document.prototype.defineField = function (name, recipe) { var field = this._createField(recipe); Object.defineProperty(this, name, { @@ -139,21 +113,12 @@ var Document = (function () { }); this._fields[name] = field; }; - /* - * Defines a new custom data type. - */ Document.prototype.defineType = function (name, converter) { this._types[name] = converter; }; - /* - * Defines a new custom validator. - */ Document.prototype.defineValidator = function (name, handler) { this._validators[name] = handler; }; - /* - * Returns a value at path. - */ Document.prototype.getField = function () { var keys = []; for (var _i = 0; _i < arguments.length; _i++) { @@ -167,9 +132,6 @@ var Document = (function () { var field = keys.reduce(function (a, c) { return (a[c] || {}); }, this); return field instanceof Document ? field.getField(lastKey) : undefined; }; - /* - * Returns `true` if the field exists. - */ Document.prototype.hasField = function () { var keys = []; for (var _i = 0; _i < arguments.length; _i++) { @@ -177,9 +139,6 @@ var Document = (function () { } return !typeable_1.isUndefined(this.getField.apply(this, keys)); }; - /* - * Deeply applies data to the fields. - */ Document.prototype.populate = function (data) { var _this = this; if (data === void 0) { data = {}; } @@ -189,15 +148,9 @@ var Document = (function () { .forEach(function (name) { return _this[name] = data[name]; }); return this; }; - /* - * Converts this class into serialized data object. - */ Document.prototype.serialize = function () { return utils_1.serialize(this); }; - /* - * Scrolls through the document and returns an array of fields. - */ Document.prototype.flatten = function (prefix) { var _this = this; if (prefix === void 0) { prefix = []; } @@ -222,22 +175,12 @@ var Document = (function () { }); return fields; }; - /* - * Scrolls through object fields and collects results. - */ Document.prototype.collect = function (handler) { return this.flatten().map(handler); }; - /* - * Scrolls through document fields and executes a handler on each field. - */ Document.prototype.scroll = function (handler) { return this.flatten().map(handler).length; }; - /* - * Converts this class into serialized data object with only the keys that - * pass the provided `test`. - */ Document.prototype.filter = function (test) { var data = utils_1.serialize(this); this.flatten() @@ -250,77 +193,49 @@ var Document = (function () { }); return data; }; - /* - * Sets each document field to its default value. - */ Document.prototype.reset = function () { var _this = this; Object.keys(this._fields) .forEach(function (name) { return _this._fields[name].reset(); }); return this; }; - /* - * Resets fields then sets fields to their fake values. - */ Document.prototype.fake = function () { var _this = this; Object.keys(this._fields) .forEach(function (name) { return _this._fields[name].fake(); }); return this; }; - /* - * Sets all fileds to `null`. - */ Document.prototype.clear = function () { var _this = this; Object.keys(this._fields) .forEach(function (name) { return _this._fields[name].clear(); }); return this; }; - /* - * Resets information about changed fields by setting initial value of each field. - */ Document.prototype.commit = function () { var _this = this; Object.keys(this._fields) .forEach(function (name) { return _this._fields[name].commit(); }); return this; }; - /* - * Sets each field to its initial value (value before last commit). - */ Document.prototype.rollback = function () { var _this = this; Object.keys(this._fields) .forEach(function (name) { return _this._fields[name].rollback(); }); return this; }; - /* - * Returns `true` when the `value` represents an object with the - * same field values as the original document. - */ Document.prototype.equals = function (value) { return utils_1.isEqual(utils_1.serialize(this), utils_1.serialize(value)); }; - /* - * Returns `true` if at least one field has been changed. - */ Document.prototype.isChanged = function () { var _this = this; return Object.keys(this._fields) .some(function (name) { return _this._fields[name].isChanged(); }); }; - /* - * Returns `true` if nested fields exist. - */ Document.prototype.isNested = function () { var _this = this; return Object.keys(this._fields) .some(function (name) { return _this._fields[name].isNested(); }); }; - /* - * Validates fields and throws an error. - */ Document.prototype.validate = function (_a) { var _b = (_a === void 0 ? {} : _a).quiet, quiet = _b === void 0 ? false : _b; return __awaiter(this, void 0, void 0, function () { @@ -341,9 +256,6 @@ var Document = (function () { }); }); }; - /* - * Returns a list of all fields with errors. - */ Document.prototype.collectErrors = function () { return this.flatten() .map(function (_a) { @@ -355,9 +267,6 @@ var Document = (function () { return errors.length > 0; }); }; - /* - * Sets fields errors. - */ Document.prototype.applyErrors = function (errors) { var _this = this; if (errors === void 0) { errors = []; } @@ -369,32 +278,20 @@ var Document = (function () { }); return this; }; - /* - * Returns `true` when errors exist (inverse of `isValid`). - */ Document.prototype.hasErrors = function () { var _this = this; return Object.keys(this._fields) .some(function (name) { return _this._fields[name].hasErrors(); }); }; - /* - * Returns `true` when no errors exist (inverse of `hasErrors`). - */ Document.prototype.isValid = function () { return !this.hasErrors(); }; - /* - * Removes fields errors. - */ Document.prototype.invalidate = function () { var _this = this; Object.keys(this._fields) .forEach(function (name) { return _this._fields[name].invalidate(); }); return this; }; - /* - * Returns a new Document instance which is the exact copy of the original. - */ Document.prototype.clone = function () { return this._createDocument(this, this.options); }; diff --git a/dist/fields.js b/dist/fields.js index 6706139..1b90e30 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -38,13 +38,7 @@ var typeable_1 = require("typeable"); var utils_1 = require("./utils"); var validatable_1 = require("validatable"); var documents_1 = require("./documents"); -/* -* Field class. -*/ var Field = (function () { - /* - * Class constructor. - */ function Field(recipe, options) { var _this = this; this.errors = []; @@ -91,17 +85,11 @@ var Field = (function () { enumerable: true }); } - /* - * Returns a new instance of validator. - */ Field.prototype._createValidator = function () { var _a = this.options, validators = _a.validators, failFast = _a.failFast; var context = this; return new validatable_1.Validator({ validators: validators, failFast: failFast, context: context }); }; - /* - * Returns current field value. - */ Field.prototype._getValue = function () { var data = this._data; var get = this.recipe.get; @@ -110,9 +98,6 @@ var Field = (function () { } return data; }; - /* - * Sets current field value. - */ Field.prototype._setValue = function (data) { if (typeable_1.isFunction(data)) { data = data.call(this); @@ -125,9 +110,6 @@ var Field = (function () { this.invalidate(); this._data = data; }; - /* - * Converts a `value` into specified `type`. - */ Field.prototype._cast = function (data, type) { var converter = type; if (!typeable_1.isValue(data)) { @@ -141,9 +123,6 @@ var Field = (function () { } return typeable_1.cast(data, converter); }; - /* - * Returns the default value of a field. - */ Field.prototype._getDefaultValue = function () { var data = null; var defaultValue = this.recipe.defaultValue; @@ -155,9 +134,6 @@ var Field = (function () { } return data; }; - /* - * Returns the fake value of a field. - */ Field.prototype._getFakeValue = function () { var data = null; var fakeValue = this.recipe.fakeValue; @@ -169,36 +145,24 @@ var Field = (function () { } return data; }; - /* - * Sets data to the default value. - */ Field.prototype.reset = function () { this.value = this._getDefaultValue(); return this; }; - /* - * Resets the value then sets data to the fake value. - */ Field.prototype.fake = function () { this.reset(); if (this.fakeValue) { this.value = this.fakeValue; } - (typeable_1.toArray(this.value) || []) // related fake values + (typeable_1.toArray(this.value) || []) .filter(function (doc) { return doc instanceof documents_1.Document; }) .map(function (doc) { return doc.fake(); }); return this; }; - /* - * Sets data to `null`. - */ Field.prototype.clear = function () { this.value = null; return this; }; - /* - * Set's the initial value to the current value. - */ Field.prototype.commit = function () { if (typeable_1.isValue(this.value)) { typeable_1.toArray(this.value) @@ -208,29 +172,17 @@ var Field = (function () { this._initialData = utils_1.serialize(this.value); return this; }; - /* - * Sets value to the initial value. - */ Field.prototype.rollback = function () { this.value = this.initialValue; return this; }; - /* - * Returns `true` when `data` equals to the current value. - */ Field.prototype.equals = function (data) { var value = data instanceof Field ? data.value : data; return utils_1.isEqual(utils_1.serialize(this.value), utils_1.serialize(value)); }; - /* - * Returns `true` if the value has been changed. - */ Field.prototype.isChanged = function () { return !this.equals(this.initialValue); }; - /* - * Returns `true` if the data is a Document. - */ Field.prototype.isNested = function () { var type = this.type; if (typeable_1.isArray(type)) @@ -240,19 +192,12 @@ var Field = (function () { && (type.prototype instanceof documents_1.Document || type.prototype.constructor === documents_1.Document)); }; - /* - * Validates the field by populating the `errors` property. - * - * IMPORTANT: Array null values for nested objects are not treated as an object - * but as an empty item thus isValid() for [null] succeeds. - */ Field.prototype.validate = function () { return __awaiter(this, void 0, void 0, function () { var _a; return __generator(this, function (_b) { switch (_b.label) { - case 0: return [4 /*yield*/, Promise.all(// invalidate related documents - (typeable_1.toArray(this.value) || []) + case 0: return [4 /*yield*/, Promise.all((typeable_1.toArray(this.value) || []) .filter(function (doc) { return doc instanceof documents_1.Document; }) .map(function (doc) { return doc.validate({ quiet: true }); }))]; case 1: @@ -266,19 +211,13 @@ var Field = (function () { }); }); }; - /* - * Clears errors. - */ Field.prototype.invalidate = function () { - (typeable_1.toArray(this.value) || []) // invalidate related documents + (typeable_1.toArray(this.value) || []) .filter(function (doc) { return doc instanceof documents_1.Document; }) .forEach(function (doc) { return doc.invalidate(); }); this.errors = []; return this; }; - /* - * Returns `true` when errors exist (inverse of `isValid`). - */ Field.prototype.hasErrors = function () { if (this.errors.length > 0) { return true; @@ -292,9 +231,6 @@ var Field = (function () { .some(function (f) { return f.hasErrors(); }); } }; - /* - * Returns `true` when the value is valid (inverse of `hasErrors`). - */ Field.prototype.isValid = function () { return !this.hasErrors(); }; diff --git a/dist/utils.d.ts b/dist/utils.d.ts index 2ceb234..a72619e 100644 --- a/dist/utils.d.ts +++ b/dist/utils.d.ts @@ -3,4 +3,3 @@ import * as isEqual from 'lodash.isequal'; export { merge }; export { isEqual }; export declare function serialize(data: any): any; -export declare function retrieve(input: any): any; diff --git a/dist/utils.js b/dist/utils.js index 611fdf1..33d094e 100644 --- a/dist/utils.js +++ b/dist/utils.js @@ -1,21 +1,9 @@ "use strict"; -var typeable_1 = require("typeable"); var merge = require("lodash.merge"); exports.merge = merge; var isEqual = require("lodash.isequal"); exports.isEqual = isEqual; -/* -* Returns a duplicated data object (useful to remove data bindings). -*/ function serialize(data) { return JSON.parse(JSON.stringify(data)); } exports.serialize = serialize; -/* -* A helper method for retrieving a value from an input which can be -* a value or a function. -*/ -function retrieve(input) { - return typeable_1.isFunction(input) ? input() : input; -} -exports.retrieve = retrieve; diff --git a/src/documents.ts b/src/documents.ts index b28add7..48178d1 100644 --- a/src/documents.ts +++ b/src/documents.ts @@ -46,7 +46,7 @@ export class Document { * Class constructor. */ - constructor (data?, options?: DocumentOptions) { + public constructor (data?, options?: DocumentOptions) { Object.defineProperty(this, 'options', { value: Object.freeze(options || {}) }); diff --git a/src/fields.ts b/src/fields.ts index 8f1f77b..05c2807 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -69,7 +69,7 @@ export class Field { * Class constructor. */ - constructor (recipe?: FieldRecipe, options?: FieldOptions) { + public constructor (recipe?: FieldRecipe, options?: FieldOptions) { this.errors = []; Object.defineProperty(this, 'recipe', { diff --git a/src/utils.ts b/src/utils.ts index 9bde14e..f0ad019 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,4 +1,3 @@ -import {isFunction} from 'typeable'; import * as merge from 'lodash.merge'; import * as isEqual from 'lodash.isequal'; @@ -21,12 +20,3 @@ export {isEqual}; export function serialize (data) { return JSON.parse(JSON.stringify(data)); } - -/* -* A helper method for retrieving a value from an input which can be -* a value or a function. -*/ - -export function retrieve (input) { - return isFunction(input) ? input() : input; -} From 5f3ee26e6a31e5079ac0c9f05945fae8927eb8cf Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 25 Dec 2016 11:08:20 +0100 Subject: [PATCH 138/219] readme --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index fb0704e..1548ded 100644 --- a/README.md +++ b/README.md @@ -115,16 +115,16 @@ class Model extends Document { // User model this.defineField('name', { type: 'String', // converts value to string - get: (v) => v; // custom getter - set: (v) => v; // custom setter + get (v) { return v }, // custom getter + set (v) { return v }, // custom setter validate: [ // value validations { // validator recipe (check validatable.js for more) validator: 'presence', // validator name message: 'must be present' // error message } ], - defaultValue: 'Noname', // field default value - fakeValue: () => 'Noname', // field fake value + defaultValue: 'Noname', // field default value (value or function) + fakeValue: 'Noname', // field fake value (value or function) }); this.populate(data); From 63fdd338b6f05912d0efbbb7600c1c15420df55e Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 25 Dec 2016 11:50:31 +0100 Subject: [PATCH 139/219] readme, example, version bump --- README.md | 10 +++-- example/dist/index.d.ts | 0 example/dist/index.js | 64 ++++++++++++++++++++++++++++++++ example/dist/index.js.map | 1 + example/index.js | 42 --------------------- example/src/index.ts | 78 +++++++++++++++++++++++++++++++++++++++ example/tsconfig.json | 10 +++++ package.json | 4 +- tests/documents.js | 2 +- tests/fields.js | 2 +- tests/index.js | 2 +- tsconfig.json | 12 +++++- 12 files changed, 174 insertions(+), 53 deletions(-) create mode 100644 example/dist/index.d.ts create mode 100644 example/dist/index.js create mode 100644 example/dist/index.js.map delete mode 100644 example/index.js create mode 100644 example/src/index.ts create mode 100644 example/tsconfig.json diff --git a/README.md b/README.md index 1548ded..d35dbe9 100644 --- a/README.md +++ b/README.md @@ -49,10 +49,11 @@ import {Document} from 'objectschema'; class User extends Document { // User model public name: string; // class property - public constructor (data, options) { + public constructor (data?, options?) { super(data, options); this.defineField('name'); // field definition (for class property `name`) - this.populate(data); // set values + this.populate(data); // populating document + this.commit(); // commiting changes } } @@ -75,6 +76,7 @@ class User extends Document { // User model super(data, options); this.defineField('name'); // field definition this.populate(data); // set values + this.commit(); // commits changes } } @@ -109,12 +111,12 @@ A document is an advanced strongly-typed JavaScript object where properties are | parent | Document | No | - | Parent document instance (for nesting). ```js -class Model extends Document { // User model +class Model extends Document { constructor (data, options) { super(data, options); this.defineField('name', { - type: 'String', // converts value to string + type: 'String', // field type casting get (v) { return v }, // custom getter set (v) { return v }, // custom setter validate: [ // value validations diff --git a/example/dist/index.d.ts b/example/dist/index.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/example/dist/index.js b/example/dist/index.js new file mode 100644 index 0000000..e3331f8 --- /dev/null +++ b/example/dist/index.js @@ -0,0 +1,64 @@ +"use strict"; +const __1 = require("../.."); +/* +* Book model +*/ +class Book extends __1.Document { + constructor(data, options) { + super(data, options); + this.defineField('title', { + type: 'String', + validate: [ + { + validator: 'presence', + message: 'must be present' + } + ] + }); + this.populate(data); + this.commit(); + } +} +/* +* User model +*/ +class User extends __1.Document { + constructor(data, options) { + super(data, options); + this.defineField('name', { + type: 'String', + validate: [ + { + validator: 'presence', + message: 'must be present' + } + ] + }); + this.defineField('book', { + type: Book, + validate: [ + { + validator: 'presence', + message: 'must be present' + } + ] + }); + this.populate(data); + this.commit(); + } +} +/* +* Usage +*/ +let user = new User({ + name: 'John Smith', + book: { + title: 'True Detective' + } +}); +user.validate({ quiet: true }).then(() => { + console.log('user.name:', user.name); + console.log('user.book.title:', user.book.title); + console.log('user.isValid():', user.isValid()); +}); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/example/dist/index.js.map b/example/dist/index.js.map new file mode 100644 index 0000000..4d023e9 --- /dev/null +++ b/example/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,6BAA+B;AAE/B;;EAEE;AAEF,UAAW,SAAQ,YAAQ;IAGzB,YAAoB,IAAK,EAAE,OAAQ;QACjC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAErB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YACxB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;CACF;AAED;;EAEE;AAEF,UAAW,SAAQ,YAAQ;IAIzB,YAAoB,IAAK,EAAE,OAAQ;QACjC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAErB,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;CACF;AAED;;EAEE;AAEF,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;IAClB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE;QACJ,KAAK,EAAE,gBAAgB;KACxB;CACF,CAAC,CAAC;AAEH,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,IAAI,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/example/index.js b/example/index.js deleted file mode 100644 index 08db396..0000000 --- a/example/index.js +++ /dev/null @@ -1,42 +0,0 @@ -// import {Document} from 'objectschema'; - -// class Book extends Document { // Book model -// constructor (data, options) { -// super(data, options); - -// this.defineField('title', { // field definition -// type: 'String', // field type -// validate: [{validator: 'presence', message: 'must be present'}] // field validation recipes -// }); - -// this.populate(data); // set values -// } -// } - -// class User extends Document { // User model -// constructor (data, options) { -// super(data, options); - -// this.defineField('name', { -// type: 'String', // field type -// validate: [{validator: 'presence', message: 'must be present'}] // field validation recipes -// }); -// this.defineField('book', { -// type: Book, // nested model field type -// validate: [{validator: 'presence', message: 'must be present'}] // field validation recipes -// }); - -// this.populate(data); // set values -// } -// } - -// let user = new User({ -// name: 'John Smith' -// book: { -// title: 'True Detective' -// } -// }); -// user.name; // => "True Detective" -// user.book.title; // => "True Detective" -// await user.validate({quiet: true}); -// user.isValid(); // => false diff --git a/example/src/index.ts b/example/src/index.ts new file mode 100644 index 0000000..eea342e --- /dev/null +++ b/example/src/index.ts @@ -0,0 +1,78 @@ +import {Document} from '../..'; + +/* +* Book model +*/ + +class Book extends Document { + public title: string; + + public constructor (data?, options?) { + super(data, options); + + this.defineField('title', { + type: 'String', + validate: [ + { + validator: 'presence', + message: 'must be present' + } + ] + }); + + this.populate(data); + this.commit(); + } +} + +/* +* User model +*/ + +class User extends Document { + public name: string; + public book: Book; + + public constructor (data?, options?) { + super(data, options); + + this.defineField('name', { + type: 'String', + validate: [ + { + validator: 'presence', + message: 'must be present' + } + ] + }); + this.defineField('book', { + type: Book, + validate: [ + { + validator: 'presence', + message: 'must be present' + } + ] + }); + + this.populate(data); + this.commit(); + } +} + +/* +* Usage +*/ + +let user = new User({ + name: 'John Smith', + book: { + title: 'True Detective' + } +}); + +user.validate({quiet: true}).then(() => { + console.log('user.name:', user.name); + console.log('user.book.title:', user.book.title); + console.log('user.isValid():', user.isValid()); +}); diff --git a/example/tsconfig.json b/example/tsconfig.json new file mode 100644 index 0000000..2ef7861 --- /dev/null +++ b/example/tsconfig.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es6", + "noImplicitAny": false, + "sourceMap": true, + "outDir": "dist", + "declaration": true + } +} diff --git a/package.json b/package.json index a05b986..73ada88 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "3.10.0", + "version": "4.0.0", "description": "Advanced strongly-typed JavaScript object.", "main": "./dist/index.js", "types": "./dist/index.d.ts", @@ -17,7 +17,7 @@ "build": "npm run clean; tsc", "prepublish": "npm run build", "test": "npm run build && ava", - "example": "tsc example/index.ts && node example/index.js" + "example": "tsc -p example/tsconfig.json && node example/dist" }, "repository": { "type": "git", diff --git a/tests/documents.js b/tests/documents.js index ec661cb..2af0731 100644 --- a/tests/documents.js +++ b/tests/documents.js @@ -1,5 +1,5 @@ import test from 'ava'; -import {Document, Field} from '../dist'; +import {Document, Field} from '..'; test('method `defineField` initializes nullified enumerable property', (t) => { let user = new class User extends Document { diff --git a/tests/fields.js b/tests/fields.js index 8befac7..49845f9 100644 --- a/tests/fields.js +++ b/tests/fields.js @@ -1,5 +1,5 @@ import test from 'ava'; -import {Field, Document} from '../dist'; +import {Field, Document} from '..'; import {Validator} from 'validatable'; test('nullifies a value by default', (t) => { diff --git a/tests/index.js b/tests/index.js index 8217a3a..a44956e 100644 --- a/tests/index.js +++ b/tests/index.js @@ -1,5 +1,5 @@ import test from 'ava'; -import * as objectschema from '../dist'; +import * as objectschema from '..'; test('exposed content', (t) => { t.is(!!objectschema.Document, true); diff --git a/tsconfig.json b/tsconfig.json index ef04808..96704f7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,9 +4,17 @@ "target": "es3", "noImplicitAny": false, "removeComments": true, - "sourceMap": false, + "sourceMap": true, "outDir": "dist", "declaration": true, "lib": ["es2015.promise", "es5"] - } + }, + "include": [ + "src/**/*" + ], + "exclude": [ + "node_modules", + "tests", + "example" + ] } From 7596281b03fc73071a333f3687173440982fc6c9 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 25 Dec 2016 11:50:59 +0100 Subject: [PATCH 140/219] source maps --- dist/documents.js | 1 + dist/documents.js.map | 1 + dist/fields.js | 1 + dist/fields.js.map | 1 + dist/index.js | 1 + dist/index.js.map | 1 + dist/utils.js | 1 + dist/utils.js.map | 1 + 8 files changed, 8 insertions(+) create mode 100644 dist/documents.js.map create mode 100644 dist/fields.js.map create mode 100644 dist/index.js.map create mode 100644 dist/utils.js.map diff --git a/dist/documents.js b/dist/documents.js index f0246c2..63b8cd8 100644 --- a/dist/documents.js +++ b/dist/documents.js @@ -298,3 +298,4 @@ var Document = (function () { return Document; }()); exports.Document = Document; +//# sourceMappingURL=documents.js.map \ No newline at end of file diff --git a/dist/documents.js.map b/dist/documents.js.map new file mode 100644 index 0000000..1ab48ae --- /dev/null +++ b/dist/documents.js.map @@ -0,0 +1 @@ +{"version":3,"file":"documents.js","sourceRoot":"","sources":["../src/documents.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/fields.js b/dist/fields.js index 1b90e30..0955424 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -237,3 +237,4 @@ var Field = (function () { return Field; }()); exports.Field = Field; +//# sourceMappingURL=fields.js.map \ No newline at end of file diff --git a/dist/fields.js.map b/dist/fields.js.map new file mode 100644 index 0000000..0afe4e5 --- /dev/null +++ b/dist/fields.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index c26ad09..ed60a73 100644 --- a/dist/index.js +++ b/dist/index.js @@ -3,3 +3,4 @@ var documents_1 = require("./documents"); exports.Document = documents_1.Document; var fields_1 = require("./fields"); exports.Field = fields_1.Field; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map new file mode 100644 index 0000000..a7e1082 --- /dev/null +++ b/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,yCAAqC;AAO7B,wCAAQ;AANhB,mCAA+B;AAMb,+BAAK"} \ No newline at end of file diff --git a/dist/utils.js b/dist/utils.js index 33d094e..9e88ce3 100644 --- a/dist/utils.js +++ b/dist/utils.js @@ -7,3 +7,4 @@ function serialize(data) { return JSON.parse(JSON.stringify(data)); } exports.serialize = serialize; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/dist/utils.js.map b/dist/utils.js.map new file mode 100644 index 0000000..86f768e --- /dev/null +++ b/dist/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";AAAA,oCAAsC;AAO9B,sBAAK;AANb,wCAA0C;AAYlC,0BAAO;AAMf,mBAA2B,IAAI;IAC7B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC;AAFD,8BAEC"} \ No newline at end of file From 28c7924b47f14067a448c390868629f93662e536 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 25 Dec 2016 12:19:21 +0100 Subject: [PATCH 141/219] yarn --- package.json | 2 +- yarn.lock | 18 ++++++++---------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 73ada88..139e310 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "4.0.0", + "version": "4.1.0", "description": "Advanced strongly-typed JavaScript object.", "main": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/yarn.lock b/yarn.lock index 7a56294..7454ee4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1764,7 +1764,7 @@ lodash.isequal@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.4.0.tgz#6295768e98e14dc15ce8d362ef6340db82852031" -lodash.merge@4.6.0, lodash.merge@^4.6.0: +lodash.merge@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" @@ -2638,11 +2638,9 @@ type-name@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/type-name/-/type-name-2.0.2.tgz#efe7d4123d8ac52afff7f40c7e4dec5266008fb4" -typeable@^0.21.0: - version "0.21.0" - resolved "https://registry.yarnpkg.com/typeable/-/typeable-0.21.0.tgz#25c9072e7af527086e6610b85444aa06468be09c" - dependencies: - lodash.merge "4.6.0" +typeable@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/typeable/-/typeable-2.0.0.tgz#24a622debd12550a40e238d128f06fcbca8d9e69" typescript@^2.1.4: version "2.1.4" @@ -2699,12 +2697,12 @@ uuid@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" -validatable@^0.22.0: - version "0.22.0" - resolved "https://registry.yarnpkg.com/validatable/-/validatable-0.22.0.tgz#90fb79da614a71c4d76304905e89847bb198522a" +validatable@^0.24.0: + version "0.24.0" + resolved "https://registry.yarnpkg.com/validatable/-/validatable-0.24.0.tgz#046bd935e5b4cb27eeb690c4ab8be6cc53452982" dependencies: lodash.merge "^4.6.0" - typeable "^0.21.0" + typeable "^2.0.0" validate-npm-package-license@^3.0.1: version "3.0.1" From c06f3acecbe235c52e23dc82029f1b6b0dad32f1 Mon Sep 17 00:00:00 2001 From: Kristijan Sedlak Date: Sun, 25 Dec 2016 16:45:04 +0100 Subject: [PATCH 142/219] Set theme jekyll-theme-cayman --- _config.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 _config.yml diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..c419263 --- /dev/null +++ b/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-cayman \ No newline at end of file From 9fbf1b652e35ba3215e95efe2ffdc4a70a526a58 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 25 Dec 2016 16:57:18 +0100 Subject: [PATCH 143/219] readme --- README.md | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index d35dbe9..3827dbe 100644 --- a/README.md +++ b/README.md @@ -90,12 +90,12 @@ let user = new User({ // new model instance ## API This package consists of two core classes: -* `Document` represents a data object with fields. +* `Document` represents strongly-typed data object with fields. * `Field` represents a document property. This package uses [*typeable.js*](https://github.com/xpepermint/typeablejs) for data type casting. Many common data types and array types are supported, but we can also use custom types. Please check package's website for a list of supported types and further information. -Validation is handled by [*validatable.js*](https://github.com/xpepermint/validatablejs). The package provides many built-in validators, allows adding custom validators and overriding existing ones. When a document is created all validator methods share document's context thus we can write context-aware checks. Please see package's website for details. +Validation is handled by [*validatable.js*](https://github.com/xpepermint/validatablejs). The package provides many built-in validators, allows adding custom validators and overriding existing ones. When a document is created all validators share field's context thus we can write context-aware checks. Please see package's website for details. ### Document @@ -103,7 +103,7 @@ A document is an advanced strongly-typed JavaScript object where properties are **Document(data, {parent})** -> A class for creating schema enforced objects. +> Strongly-typed JavaScript object. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ diff --git a/package.json b/package.json index 139e310..7e79954 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "objectschema", - "version": "4.1.0", + "version": "4.1.1", "description": "Advanced strongly-typed JavaScript object.", "main": "./dist/index.js", "types": "./dist/index.d.ts", From 7454e2659366e0ba13b9d944cb69a5ae2d79d44e Mon Sep 17 00:00:00 2001 From: xpeper Date: Tue, 10 Jan 2017 22:47:53 +0100 Subject: [PATCH 144/219] new api --- README.md | 884 +++++++++++++++++++++------ dist/documents.js.map | 1 - dist/fields.d.ts | 25 +- dist/fields.js | 69 ++- dist/fields.js.map | 2 +- dist/index.d.ts | 4 +- dist/index.js | 4 +- dist/index.js.map | 2 +- dist/{documents.d.ts => models.d.ts} | 29 +- dist/{documents.js => models.js} | 143 +++-- dist/models.js.map | 1 + example/dist/index.js | 13 +- example/dist/index.js.map | 2 +- example/src/index.ts | 12 +- package.json | 49 +- src/fields.ts | 130 ++-- src/index.ts | 4 +- src/{documents.ts => models.ts} | 128 ++-- tests/fields.js | 27 +- tests/index.js | 2 +- tests/{documents.js => models.js} | 222 +++++-- 21 files changed, 1312 insertions(+), 441 deletions(-) delete mode 100644 dist/documents.js.map rename dist/{documents.d.ts => models.d.ts} (69%) rename dist/{documents.js => models.js} (70%) create mode 100644 dist/models.js.map rename src/{documents.ts => models.ts} (73%) rename tests/{documents.js => models.js} (80%) diff --git a/README.md b/README.md index 3827dbe..f047da9 100644 --- a/README.md +++ b/README.md @@ -1,128 +1,430 @@ -![Build Status](https://travis-ci.org/xpepermint/objectschemajs.svg?branch=master) [![NPM Version](https://badge.fury.io/js/objectschema.svg)](https://badge.fury.io/js/objectschema) [![Dependency Status](https://gemnasium.com/xpepermint/objectschemajs.svg)](https://gemnasium.com/xpepermint/objectschemajs) +![Build Status](https://travis-ci.org/xpepermint/contextablejs.svg?branch=master) [![NPM Version](https://badge.fury.io/js/contextable.svg)](https://badge.fury.io/js/contextable) [![Dependency Status](https://gemnasium.com/xpepermint/contextablejs.svg)](https://gemnasium.com/xpepermint/contextablejs) -# objectschema.js +``` +┌─────────────────────────────────────────────────────────────────┐ +│ │ +│ _ _ _ _ _ │ +│ ___ ___ _ __ | |_ _____ _| |_ __ _| |__ | | ___ (_)___ │ +│ / __/ _ \| '_ \| __/ _ \ \/ / __/ _` | '_ \| |/ _ \ | / __| │ +│ | (_| (_) | | | | || __/> <| || (_| | |_) | | __/_ | \__ \ │ +│ \___\___/|_| |_|\__\___/_/\_\\__\__,_|_.__/|_|\___(_)/ |___/ │ +│ |__/ │ +│ │ +└─────────────────────────────────────────────────────────────────┘ +``` + +# contextable.js -> Advanced strongly-typed JavaScript object. +> Strongly-typed JavaScript object with support for validation and error handling. -This is a light weight open source package for the **server** and **browser** (using module bundler). The source code is available on [GitHub](https://github.com/xpepermint/objectschemajs) where you can also find our [issue tracker](https://github.com/xpepermint/objectschemajs/issues). +This is a light weight open source package for the **server** and **browser** (using module bundler) written with [TypeScript](https://www.typescriptlang.org). It's actively maintained, well tested and ready for production environments. The source code is available on [GitHub](https://github.com/xpepermint/contextablejs) where you can also find our [issue tracker](https://github.com/xpepermint/contextablejs/issues). -## Features +## Introduction -* Simple and intuitive API -* TypeScript ready -* Field type casting -* Custom field data types -* Field dynamic default value -* Field dynamic fake value -* Field value transformation with getter and setter -* Document serialization and filtering -* Document nesting with support for self referencing -* Change tracking, data commits and rollbacks -* Advanced field validation -* Built-in and custom validators +Contextable.js provides a mechanism for creating strongly-typed data objects with built-in logic for unified data validation and error handling. It has a simple and intuitive API and tends to be a powerful, magic-free, minimalistic and unopinionated framework for writing application data layers where you have a full control. It could be a perfect fit when writing an [Express.js](http://expressjs.com/) action, [GraphQL](http://graphql.org/) resolver or similar and it's easily extendable. -## Related Projects +It provides two core classes: +* `Model` represents strongly-typed data object with properties. +* `Field` represents model's property. -* [Contextable.js](https://github.com/xpepermint/contextablejs): Simple, unopinionated and minimalist framework for creating context objects with support for unopinionated ORM, object schemas, type casting, validation and error handling and more. -* [Validatable.js](https://github.com/xpepermint/validatablejs): A library for synchronous and asynchronous validation. -* [Handleable.js](https://github.com/xpepermint/handleablejs): A library for synchronous and asynchronous error handling. -* [Typeable.js](https://github.com/xpepermint/typeablejs): A library for checking and casting types. +Both classes can be used independently but most likely you will use only the `Model` class. -## Install +> We will be using TypeScript for code examples for the rest of the docs. If you haven't picked it up, [you should](https://www.typescriptlang.org)! + +## Installation Run the command below to install the package. ``` -$ npm install --save objectschema +npm install --save contextable ``` This package uses promises thus you need to use [Promise polyfill](https://github.com/taylorhakes/promise-polyfill) when promises are not supported. ## Example -### TypeScript +The code below shows a basic usage example. ```js -import {Document} from 'objectschema'; +import {Model} from 'objectschema'; -/* Model */ +// defining a basic model +class User extends Model { + public name: string; -class User extends Document { // User model - public name: string; // class property - public constructor (data?, options?) { - super(data, options); - this.defineField('name'); // field definition (for class property `name`) - this.populate(data); // populating document - this.commit(); // commiting changes + public constructor (data = {}) { + super(); + this.defineField('name'); + this.populate(data); } } -/* Usage */ - -let user = new User({ // new model instance +// usage example +let model = new User({ name: 'John Smith' }); +model.name; // => 'John Smith' ``` -### JavaScript +Examples are also available inside the `./example` folder. You should also check the links below: + +* [graphql-example](https://github.com/xpepermint/graphql-example): A GraphQL application example (intuitive rootValue resolvers using contextable.js) +* [vue-example](https://github.com/xpepermint/vue-example): Vue.js example application (server-side rendering, router, vuex store, forms validation with contextable.js) + +## Usage + +### Defining Fields + +Model fields are defined using the `defineField` method. The code below is an example of a basic model class with a property `name` of type `Any`. ```js -import {Document} from 'objectschema'; +import {Model} from 'objectschema'; -/* Model */ +class User extends Model { + public name: string; // typescript property definition for field `name` -class User extends Document { // User model - constructor (data, options) { + public constructor () { + super(); + this.defineField('name'); // definition of the `name` field + } +} + +let user = new User(); +user.name = 'John Smith'; +user.name; // -> "John Smith" +``` + +### Type Casting + +Each field has a built-in system for type casting thus we can force a value to be automatically converted to a specific type. + +```js +this.defineField('name', { + type: 'String' // automatically cast values to `String` +}); +``` + +Please see the API section for a list of all supported types. + +### Nested Models + +Each model also represents a type. This way you can create complex nested structures by nesting models as shown in the example below. + +> Make sure that you preserve the constructor's initial parameter structure on nested models. + +```js +import {Model, ModelOptions} from 'contextable'; + +class Book extends Model { + public title: string; + + public constructor (data?: any, options?: ModelOptions) { super(data, options); - this.defineField('name'); // field definition - this.populate(data); // set values - this.commit(); // commits changes + this.defineField('title'); + this.populate(data); } } -/* Usage */ +class User extends Model { + public book: Book; -let user = new User({ // new model instance - name: 'John Smith' + public constructor (data?: any, options?: ModelOptions) { + super(data, options); + this.defineField('book', {type: Book}); + this.populate(data); + } +} +``` + +### Field Default Value + +We can set a `defaultValue` options for each field which will populate a field when it is created. + +The `defaultValue` can also be a method which returns a value. Note that this function shares the context of a field instance thus you have access to all the features of the `Field` class. + +```js +this.defineField('name', { + defaultValue () { return this.value } }); ``` -## API +### Field Fake Value -This package consists of two core classes: -* `Document` represents strongly-typed data object with fields. -* `Field` represents a document property. +We can set a `fakeValue` options for each field which will populate a field when calling the `fake()` method. -This package uses [*typeable.js*](https://github.com/xpepermint/typeablejs) for data type casting. Many common data types and array types are supported, but we can also use custom types. Please check package's website for a list of supported types and further information. +The `fakeValue` can also be a method which returns a value. Note that this function shares the context of a field instance thus you have access to all the features of the `Field` class. -Validation is handled by [*validatable.js*](https://github.com/xpepermint/validatablejs). The package provides many built-in validators, allows adding custom validators and overriding existing ones. When a document is created all validators share field's context thus we can write context-aware checks. Please see package's website for details. +```js +this.defineField('name', { + fakeValue () { return this.value } +}); +``` + +### Field Value Transformation + +A field can have a custom getter and a custom setter. + +These methods all share the context of a field instance thus you have access to all the features of the `Field` class. + +```js +this.defineField('name', { + get (value) { return value }, + set (value) { return value } +}); +``` + +### Commits & Rollbacks + +Contextable.js tracks changes for all fields and provides a mechanism for committing values and rollbacks. + +The example below explains how to setup and use these features. + +```js +class User extends Model { + public name: string; + + public constructor (data?: any) { + super(); + this.defineField('name'); + this.populate(data); // populate model with initial values + this.commit(); // restart change tracking + } +} + +let user = new User({ + name: 'John Smith' // initial value +}); +user.name = 'Mandy Taylor'; // changing field's value +user.isChanged(); // -> true +user.commit(); // set `initialValue` of each field to the value of `value` +user.isChanged(); // -> false +user.name = 'Tina Fey'; // changing field's value +user.rollback(); // -> reset `value` of each field to its `initialValue` (last committed value) +``` + +Note that the logic above applies also the the `Field` class. -### Document +### Serialization & Filtering -A document is an advanced strongly-typed JavaScript object where properties are instances of the `Field` class. +Model class provides useful methods for object serialization and filtering. -**Document(data, {parent})** +```js +let user = new User({ + name: 'John Smith' // initial value +}); + +user.scroll(function (field) { // argument is an instance of a field + // do something useful +}).then((count) => { // number of processed fields + user.serialize(); // -> {"name": "John Smith"} +}); +``` + +The code above is only a quick example of what's possible. Please check the API section for all available methods. + +### Validation + +Contextable.js provides a simple mechanism for validating fields. + +```js +class User extends Model { + public name: string; + + public constructor () { + super(); + + this.defineField('name', { + validate: [ // field validation setup + { // validator recipe + validator: 'presence', // validator name + message: '%{it} must be present', // error message + condition () { return true }, // optional condition which switches the validation on/off + it: 'it' // optional custom variable for the `message` + } + ] + }); + } +} + +let user = new User(); +user.validate().then((err) => { + user.collectErrors(); // -> [{path: ['name'], errors: [{validator: 'presence', message: 'is must be present', code: 422}]}] +}); +``` -> Strongly-typed JavaScript object. +It already includes some useful built-in validators but it's super simple to define your own validator. Note that each validator function shares the context of a field instance thus you have access to all the features of the `Field` class. + +```js +class User extends Model { + constructor () { + super(); + + this.defineValidator('coolness', function (v) { + return v === 'cool'; + }); + + this.defineField('name', { + validate: [ + { + validator: 'coolness', + message: 'must be cool' + } + ] + }); + } +} +``` + +### Error Handling + +Contextable.js provides a mechanism for handling field-related errors. The logic is aligned with validation thus validation and error handling can easily be managed in a unified way. This is great because we always deal with validation errors and can thus directly send these errors back to a user in unified format. + +```js +class User extends Model { + public name: string; + + public constructor () { + super(); + + this.defineField('name', { + handle: [ // field error handling setup + { // handler recipe + handler: 'block', // handler name + message: '%{is} unknown', // error message + block (error) { return true }, // block handler-specific option + condition () { return true }, // optional condition which switches the handling on/off + is: 'is' // optional custom variable for the `message` + } + ] + }); + } +} + +let error = new Error(); +let user = new User(); +user.handle(error).then(() => { + user.collectErrors(); // -> [{path: ['name'], errors: [{handler: 'block', message: 'is unknown', code: 422}]}] +}); +``` + +This mechanism is especially handful when saving data to a database. MongoDB could, for example, throw a uniqueness error (E11000) if we try to insert a value that already exists in the database. We can catch that error by using the `handle()` and then return a unified validation error message to a user. + +Contextable.js already includes some useful built-in handlers but it's super simple to define your own handler. Note that each handler function shares the context of a field instance thus you have access to all the features of the `Field` class. + +```js +class User extends Model { + public name: string; + + public constructor () { + super(); + + this.defineHandler('coolness', function (e) { + return e.message === 'cool'; + }); + + this.defineField('name', { + handle: [ // field error handling setup + { // handler recipe + handler: 'coolness', // handler name + message: 'cool' // error message + } + ] + }); + } +} +``` + +### Managing Context & GraphQL + +Sometimes it's handy to create a `root` model and then make it accessible from `dependent models`. The root model in this case represents a `context` object. Because the dependent models have access to that context we say that these models are `context aware`. + +Usually you will use this technic for your main application class as shown in the example below. + +```js +class User extends Model { // user model + public name: string; + + public constructor () { + super(); + this.defineField('name'); + } +} + +class App extends Model { // application context + public name: string; + + public constructor () { + super(); + this.defineModel(User); // defining a context-aware model from `User` model + } + + public hello () { // root + return 'Hello World!'; + } +} + +let app = new App(); +app.User.context; // accessing App instance +let user = new app.User(); +user.context; // accessing App instance +user.context.echo(); // -> "Hello World!" +``` + +This feature is especially useful when writing GraphQL resolvers. An instance of a root model, in our case the `App` class, can represent GraphQL's `rootValue`. + +```js +const {graphql, buildSchema} = require('graphql'); + +const schema = buildSchema(` + type Query { + hello: String + } +`); + +var root = new App(); // root resolver + +graphql(schema, '{hello}', root).then((response) => { + console.log(response); +}); +``` + +## API + +### Model Class + +**Model({parent, context})** + +> Abstract class which represents a strongly-typed JavaScript object. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ -| data | Object | No | - | Initial data object. -| parent | Document | No | - | Parent document instance (for nesting). +| parent | Model | No | - | Parent model instance. +| context | Model | No | - | Root model instance representing application context. ```js -class Model extends Document { +class Model extends Model { constructor (data, options) { - super(data, options); + super(); // initializing the Model this.defineField('name', { type: 'String', // field type casting get (v) { return v }, // custom getter set (v) { return v }, // custom setter - validate: [ // value validations + validate: [ // value validator recipes { // validator recipe (check validatable.js for more) validator: 'presence', // validator name - message: 'must be present' // error message + condition () { return true }, // optional condition which switches the validation on/off + message: '%{it} must be present', // error message + it: 'it' // custom variable for the `message` + } + ], + handle: [ // error handling recipies + { // handler recipe + handler: 'block', // handler name + condition () { return true }, // optional condition which switches the handling on/off + message: '%{is} unknown', // error message + block (error) { return true }, // block handler-specific option + is: 'is' // optional custom variable for the `message` } ], defaultValue: 'Noname', // field default value (value or function) @@ -135,28 +437,12 @@ class Model extends Document { } ``` -#### Properties - -**Document.prototype.options**: Object - -> Document options. - -**Document.prototype.parent**: Document - -> Parent document instance. - -**Document.prototype.root**: Document - -> The first document instance in a tree of documents. - -#### Methods - -**Document.prototype.applyErrors(errors)**: Document +**Model.prototype.applyErrors(errors)**: Model > Deeply populates fields with the provided `errors`. ```js -doc.applyErrors([ +model.applyErrors([ { path: ['books', 1, 'title'], // field path errors: [ @@ -170,49 +456,58 @@ doc.applyErrors([ ]); ``` -**Document.prototype.clear()**: Document +**Model.prototype.clear()**: Model -> Sets all document fields to `null`. +> Sets all model fields to `null`. -**Document.prototype.clone()**: Document +**Model.prototype.clone()**: Model -> Returns a new Document instance which is the exact copy of the original. +> Returns a new Model instance which is the exact copy of the original. -**Document.prototype.collect(handler)**: Array +**Model.prototype.collect(handler)**: Array -> Scrolls through document fields and collects results. +> Scrolls through model fields and collects results. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ | handler | Function | Yes | - | A handler method which is executed for each field. -**Document.prototype.collectErrors()**: Array +**Model.prototype.collectErrors()**: Array > Returns a list of errors for all the fields ({path, errors}[]). ```js -doc.collectErrors(); // => {path: ['name'], errors: [{validator: 'absence', message: 'must be blank', code: 422}]} +model.collectErrors(); // => {path: ['name'], errors: [{validator: 'absence', message: 'must be blank', code: 422}]} ``` -**Document.prototype.commit()**: Document +**Model.prototype.commit()**: Model -> Sets initial value of each document field to the current value of a field. This is how field change tracking is restarted. +> Sets initial value of each model field to the current value of a field. This is how field change tracking is restarted. -**Document.prototype.defineField(name, {type, get, set, defaultValue, fakeValue, validate})**: Void +**Model.prototype.defineField(name, {type, get, set, defaultValue, fakeValue, validate})**: Void -> Defines a new document property. +> Defines a new model property. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ | name | String | Yes | - | Property name. -| type | String, Document | No | - | Data type (pass a Document to create a nested structure; check [typeable.js](https://github.com/xpepermint/validatablejs) for more). +| type | String, Model | No | - | Data type (pass a Model to create a nested structure; check [typeable.js](https://github.com/xpepermint/validatablejs) for more). | get | Function | No | - | Custom getter. | set | Function | No | - | Custom setter. | defaultValue | Any | No | - | Field default value. | fakeValue | Any | No | - | Field fake value. | validate | Array | No | - | List of validation recipies (check [validatable.js](https://github.com/xpepermint/validatablejs) for more). -**Document.prototype.defineType(name, converter)**: Void +**Model.prototype.defineModel(name, Model)**: Void + +> Defines a a new context-aware model. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| name | String | Yes | Model's name | Model name (pass `null` to use Model's name). +| Model | Model | Yes | - | Model class. + +**Model.prototype.defineType(name, converter)**: Void > Defines a custom data type. @@ -221,7 +516,7 @@ doc.collectErrors(); // => {path: ['name'], errors: [{validator: 'absence', mess | name | String | Yes | - | Type name. | converter | Function | Yes | - | Type converter. -**Document.prototype.defineValidator(name, handler)**: Void +**Model.prototype.defineValidator(name, handler)**: Void > Defines a custom validator. @@ -230,11 +525,11 @@ doc.collectErrors(); // => {path: ['name'], errors: [{validator: 'absence', mess | name | String | Yes | - | Validator name. | handler | Function, Promise | Yes | - | Validator handler. -**Document.prototype.equals(value)**: Boolean +**Model.prototype.equals(value)**: Boolean -> Returns `true` when the provided `value` represents an object with the same fields as the document itself. +> Returns `true` when the provided `value` represents an object with the same fields as the model itself. -**Document.prototype.failFast(fail)**: Void +**Model.prototype.failFast(fail)**: Void > Configures validator to stop field validation on the first error. @@ -242,23 +537,27 @@ doc.collectErrors(); // => {path: ['name'], errors: [{validator: 'absence', mess |--------|------|----------|---------|------------ | fail | Boolean | No | false | Stops field validation on the first error when set to `true`. -**Document.prototype.fake()**: Document +**Model.prototype.fake()**: Model -> Sets each document field to its fake value if a fake value generator is registered, otherwise the default value is used. +> Sets each model field to its fake value if a fake value generator is registered, otherwise the default value is used. -**Document.prototype.filter(handler)**: Object +**Model.prototype.filter(handler)**: Object -> Converts a document into serialized data object with only the keys that pass the test. +> Converts a model into serialized data object with only the keys that pass the test. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ | handler | Function | Yes | - | A function to test each key value. If the function returns `true` then the key is included in the returned object. -**Document.prototype.flatten()**: Array +**Model.prototype.flatten()**: Array + +> Converts the model into an array of fields. -> Converts the document into an array of fields. +```js +user.flatten(); // -> [{path: [...], field: ...}, ...] +``` -**Document.prototype.getField(...keys)**: Field +**Model.prototype.getField(...keys)**: Field > Returns a class instance of a field at path. @@ -266,11 +565,29 @@ doc.collectErrors(); // => {path: ['name'], errors: [{validator: 'absence', mess |--------|------|----------|---------|------------ | keys | Array | Yes | - | Path to a field (e.g. `['book', 0, 'title']`). -**Document.prototype.hasErrors()**: Boolean +**Model.prototype.handle(error, {quiet}): Promise(Model)** + +> Tries to handle the `error` against each field handlers and populates model with possible errors. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| error | Error | Yes | - | Instance of an Error object. +| quiet | Boolean | No | true | When set to `false`, a handled validation error is thrown. This doesn't affect the unhandled errors (they are always thrown). + +```js +try { + // throws an error (e.g. you can call the `validate()` method) +} +catch (e) { + model.handle(e); +} +``` + +**Model.prototype.hasErrors()**: Boolean > Returns `true` when no errors exist (inverse of `isValid()`). Make sure that you call the `validate()` method first. -**Document.prototype.hasField(...keys)**: Boolean +**Model.prototype.hasField(...keys)**: Boolean > Returns `true` when a field path exists. @@ -278,182 +595,407 @@ doc.collectErrors(); // => {path: ['name'], errors: [{validator: 'absence', mess |--------|------|----------|---------|------------ | keys | Array | Yes | - | Path to a field (e.g. `['book', 0, 'title']`). -**Document.prototype.isChanged()**: Boolean +**Model.prototype.isChanged()**: Boolean -> Returns `true` if at least one document field has been changed. +> Returns `true` if at least one model field has been changed. -**Document.prototype.isNested()**: Boolean +**Model.prototype.isNested()**: Boolean > Returns `true` if nested fields exist. -**Document.prototype.isValid()**: Boolean +**Model.prototype.isValid()**: Boolean -> Returns `true` when all document fields are valid (inverse of `hasErrors()`). Make sure that you call the `validate()` method first. +> Returns `true` when all model fields are valid (inverse of `hasErrors()`). Make sure that you call the `validate()` method first. -**Document.prototype.invalidate()**: Document +**Model.prototype.invalidate()**: Model > Clears `errors` on all fields. -**Document.prototype.populate(data)**: Document +**Model.prototype.options**: Object -> Applies data to a document. +> Model options. +**Model.prototype.parent**: Model + +> Parent model instance. + +**Model.prototype.populate(data)**: Model + +> Applies data to a model. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ | data | Object | Yes | - | Data object. -**Document.prototype.reset()**: Document +**Model.prototype.reset()**: Model + +> Sets each model field to its default value. + +**Model.prototype.rollback()**: Model -> Sets each document field to its default value. +> Sets each model field to its initial value (last committed value). This is how you can discharge model changes. -**Document.prototype.rollback()**: Document +**Model.prototype.root**: Model -> Sets each document field to its initial value (last committed value). This is how you can discharge document changes. +> The first model instance in a tree of models. -**Document.prototype.scroll(handler)**: Integer +**Model.prototype.scroll(handler)**: Integer -> Scrolls through document fields and executes a handler on each field. +> Scrolls through model fields and executes a handler on each field. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ | handler | Function | Yes | - | A handler method which is executed for each field. -**Document.prototype.serialize()**: Object +**Model.prototype.serialize()**: Object -> Converts a document into serialized data object. +> Converts a model into serialized data object. -**Document.prototype.validate({quiet})**: Promise(Document) +**Model.prototype.validate({quiet})**: Promise(Model) -> Validates document fields and throws an error if not all fields are valid unless the `quiet` is set to `true`. +> Validates model fields, populates model with possible errors and throws a validation error if not all fields are valid unless the `quiet` is set to `true`. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ -| quiet | Boolean | No | false | When set to `true`, a validation error is thrown. +| quiet | Boolean | No | true | When set to `false`, a validation error is thrown. ```js try { - await doc.validate(); // throws a validation error when invalid fields exist + await model.validate(); // throws a validation error when invalid fields exist } catch (e) { // `e` is a 422 validation error } ``` -### Field - -Every document field is an instance of the `Field` class. +### Field Class **Field({type, get, set, defaultValue, fakeValue, validate}, {owner, validators, failFast})** -> A document field. +> A model field. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ -| type | String, Document | No | - | Data type (pass a Document to create a nested structure; check [typeable.js](https://github.com/xpepermint/validatablejs) for more). +| type | String, Model | No | - | Data type (pass a Model to create a nested structure). | get | Function | No | - | Custom getter. | set | Function | No | - | Custom setter. | defaultValue | Any | No | - | Field default value. | fakeValue | Any | No | - | Field fake value. -| validate | Array | No | - | List of validation recipies (check [validatable.js](https://github.com/xpepermint/validatablejs) for more). -| owner | Document | No | - | An instance of a Document which owns the field. -| validators | Object | No | - | Custom validators (check [validatable.js](https://github.com/xpepermint/validatablejs) for more) +| validate | Array | No | - | List of validator recipes. +| owner | Model | No | - | An instance of a Model which owns the field. +| validators | Object | No | - | Custom validators | failFast | Boolean | No | false | Stops validation on the first error when set to `true`. -#### Properties +**Field.prototype.clear()**: Field + +> Sets field and related sub fields to `null`. + +**Field.prototype.commit()**: Field + +> Sets initial value to the current value. This is how field change tracking is restarted. **Field.prototype.defaultValue**: Any > A getter which returns the default field value. -**Field.prototype.errors**: Object[]; +**Field.prototype.errors**: Object[] > List of field errors (sets the `validate` method). +**Field.prototype.equals(value)**: Boolean + +> Returns `true` when the provided `value` represents an object that looks the same. + +**Field.prototype.fake()**: Field + +> Sets field to a generated fake value. + **Field.prototype.fakeValue**: Any > A getter which returns a fake field value. +**Field.prototype.hasErrors()**: Boolean + +> Returns `true` when no errors exist (inverse of `isValid()`). Make sure that you call the `validate()` method first. + **Field.prototype.initialValue**: Any -> A getter which returns the last commited field value. +> A getter which returns the last committed field value. + +**Field.prototype.isChanged()**: Boolean + +> Returns `true` if the field or at least one sub field have been changed. + +**Field.prototype.isNested()**: Boolean + +> Returns `true` if the field is a nested model. + +**Field.prototype.isValid()**: Boolean + +> Returns `true` if the field and all sub fields are valid (inverse of `hasErrors()`). Make sure that you call the `validate()` method first. + +**Field.prototype.invalidate()**: Field + +> Clears the `errors` field on all fields (the reverse of `validate()`). **Field.prototype.options**: Object > A getter which returns field options. -**Field.prototype.owner**: Document +**Field.prototype.owner**: Model -> A getter which returns a reference to a Document instance on which the field is defined. +> A getter which returns a reference to a Model instance on which the field is defined. **Field.prototype.recipe**: Object > A getter which returns a field recipe object. +**Field.prototype.reset()**: Field + +> Sets the field to its default value. + +**Field.prototype.rollback()**: Field + +> Sets the field to its initial value (last committed value). This is how you can discharge field's changes. + **Field.prototype.type**: Any -> A getter which returns field type (set to `Document` for a nested structure). +> A getter which returns field type (set to `Model` for a nested structure). + +**Field.prototype.validate()**: Promise(Field) + +> Validates the `value` and populates the `errors` property with errors. **Field.prototype.value**: Any -> Field current value (the actula document's property). +> Field current value (the actual model's property). -#### Methods +### Built-in Data Types -**Field.prototype.clear()**: Field +| Type | Description +|------|------------ +| 'Any' | A value of different types (excluding arrays). +| ['Any'] | An array with values of different types. +| 'String' | A string value. +| ['String'] | An array of string values. +| 'Boolean' | A boolean value. +| ['Boolean'] | An array of boolean values. +| 'Number' | An integer or a float number. +| ['Number'] | An array of integer or float numbers. +| 'Integer' | An integer number. +| ['Integer'] | An array of integer numbers. +| 'Float' | A float number. +| ['Float'] | An array of float numbers. +| 'Date' | A date. +| ['Date'] | An array of dates. +| Function | Custom type. +| [Function] | Custom type. -> Sets field and related sub fields to `null`. +### Built-in Validators -**Field.prototype.commit()**: Field +**absence** -> Sets initial value to the current value. This is how field change tracking is restarted. +> Validates that the specified field is blank. -**Field.prototype.equals(value)**: Boolean +**arrayExclusion** -> Returns `true` when the provided `value` represents an object that looks the same. +> Validates that the specified field is not in an array of values. -**Field.prototype.fake()**: Field +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| values | Array | Yes | - | Array of restricted values. -> Sets field to a generated fake value. +**arrayInclusion** -**Field.prototype.hasErrors()**: Boolean +> Validates that the specified field is in an array of values. -> Returns `true` when no errors exist (inverse of `isValid()`). Make sure that you call the `validate()` method first. +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| values | Array | Yes | - | Array of allowed values. -**Field.prototype.isChanged()**: Boolean +**arrayLength** -> Returns `true` if the field or at least one sub field have been changed. +> Validates the size of an array. -**Field.prototype.isNested()**: Boolean +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| min | Number | No | - | Allowed minimum items count. +| minOrEqual | Number | No | - | Allowed minimum items count (allowing equal). +| max | Number | No | - | Allowed maximum items count. +| maxOrEqual | Number | No | - | Allowed maximum items count (allowing equal). -> Returns `true` if the field is a nested document. +**block** -**Field.prototype.isValid()**: Boolean +> Validates the specified field against the provided block function. If the function returns true then the field is treated as valid. -> Returns `true` if the field and all sub fields are valid (inverse of `hasErrors()`). Make sure that you call the `validate()` method first. +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| block | Function,Promise | Yes | - | Synchronous or asynchronous function (e.g. `async () => true`) -**Field.prototype.invalidate()**: Field +```js +let recipe = { + validator: 'block', + message: 'must be present', + async block (value, recipe) { return true } +}; +``` -> Clears the `errors` field on all fields (the reverse of `validate()`). +**BSONObjectID** -**Field.prototype.reset()**: Field +> Validates that the specified field is a valid hex-encoded representation of a [MongoDB ObjectID](http://docs.mongodb.org/manual/reference/object-id/). -> Sets the field to its default value. +**numberSize** -**Field.prototype.rollback()**: Field +> Validates the size of a number. -> Sets the field to its initial value (last committed value). This is how you can discharge field's changes. +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| min | Number | No | - | Allowed minimum value. +| minOrEqual | Number | No | - | Allowed minimum value (allowing equal). +| max | Number | No | - | Allowed maximum value. +| maxOrEqual | Number | No | - | Allowed maximum value (allowing equal). -**Field.prototype.validate()**: Promise(Field) +**presence** -> Validates the `value` and populates the `errors` property with errors. +> Validates that the specified field is not blank. + +**stringBase64** + +> Validates that the specified field is base64 encoded string. + +**stringDate** + +> Validates that the specified field is a date string. + +| Option | Type | Required | Default | Description +|--------|------|----------|----------|----------- +| iso | Boolean | No | false | When `true` only ISO-8601 date format is accepted. + +**stringEmail** + +> Validates that the specified field is an email. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| allowDisplayName | Boolean | No | false | When set to true, the validator will also match `name
`. +| allowUtf8LocalPart | Boolean | No | false | When set to false, the validator will not allow any non-English UTF8 character in email address' local part. +| requireTld | Boolean | No | true | When set to false, email addresses without having TLD in their domain will also be matched. + +**stringExclusion** + +> Checks if the string does not contain the seed. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| seed | String | Yes | - | The seed which should exist in the string. + +**stringFQDN** + +> Validates that the specified field is a fully qualified domain name (e.g. domain.com). + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| requireTld | Boolean | No | true | Require top-level domain name. +| allowUnderscores | Boolean | No | false | Allow string to include underscores. +| allowTrailingDot | Boolean | No | false | Allow string to include a trailing dot. + +**stringHexColor** + +> Validates that the specified field is a hexadecimal color string. + +**stringHexadecimal** + +> Validates that the specified field is a hexadecimal number. + +**stringInclusion** + +> Checks if the string contains the seed. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| seed | String | Yes | - | The seed which should exist in the string. + +**stringJSON** + +> Validates that the specified field is a JSON string. + +**stringLength** + +> Validates the length of the specified field. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| bytes | Boolean | No | false | When `true` the number of bytes is returned. +| min | Number | No | - | Allowed minimum number of characters. +| minOrEqual | Number | No | - | Allowed minimum value number of characters (allowing equal). +| max | Number | No | - | Allowed maximum number of characters. +| maxOrEqual | Number | No | - | Allowed maximum number of characters (allowing equal). + +**stringLowercase** + +> Validates that the specified field is lowercase. + +**stringMatch** + +> Validates that the specified field matches the pattern. + +| Key | Type | Required | Default | Description +|-----|------|----------|---------|------------ +| pattern | String | Yes | - | Regular expression pattern. +| modifiers | String | No | - | Regular expression modifiers. + +**stringUppercase** + +> Validates that the specified field is uppercase. + +**stringUUID** + +> Validates that the specified field is a [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier). + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| version | Integer | No | - | UUID version (1, 2, 3, 4 or 5). + +### Built-in Handlers + +**block** + +> Checks if the provided block function succeeds. + +| Option | Type | Required | Description +|--------|------|----------|------------ +| block | Function,Promise | Yes | Synchronous or asynchronous function (e.g. `async () => true`). + +```js +let recipe = { + handler: 'block', + message: 'is unknown error', + async block (error, recipe) { return true } +}; +``` + +**mongoUniqueness** + +> Checks if the error represents a MongoDB unique constraint error. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| indexName | String | Yes | - | MongoDB collection's unique index name. + +```js +let recipe = { + handler: 'mongoUniqueness', + message: 'is unknown error', + indexName: 'uniqueEmail' // make sure that this index name exists in your MongoDB collection +}; +``` ## License (MIT) ``` -Copyright (c) 2016 Kristijan Sedlak +Copyright (c) 2016+ Kristijan Sedlak Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal +of this software and associated modelation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is diff --git a/dist/documents.js.map b/dist/documents.js.map deleted file mode 100644 index 1ab48ae..0000000 --- a/dist/documents.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"documents.js","sourceRoot":"","sources":["../src/documents.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/fields.d.ts b/dist/fields.d.ts index ac88923..b1089eb 100644 --- a/dist/fields.d.ts +++ b/dist/fields.d.ts @@ -1,24 +1,24 @@ import { Validator, ValidatorRecipe } from 'validatable'; -import { Document } from './documents'; +import { Handler, HandlerRecipe } from 'handleable'; +import { Model } from './models'; export interface FieldOptions { - owner?: Document; + owner?: Model; validators?: { [name: string]: (v?, r?: ValidatorRecipe) => boolean | Promise; }; + handlers?: { + [name: string]: (v?, r?: HandlerRecipe) => boolean | Promise; + }; failFast?: boolean; } -export interface ValidationRecipe { - validator: string; - message: string; - [key: string]: any; -} export interface FieldRecipe { type?: any; get?: (v: any) => any; set?: (v: any) => void; defaultValue?: any; fakeValue?: any; - validate?: ValidationRecipe[]; + validate?: ValidatorRecipe[]; + handle?: HandlerRecipe[]; } export interface FieldError { message: string; @@ -30,17 +30,19 @@ export declare class Field { protected _data: any; protected _initialData: any; protected _validator: Validator; - readonly recipe: FieldRecipe; - readonly options: FieldOptions; + protected _handler: Handler; + protected _recipe: FieldRecipe; + protected _options: FieldOptions; readonly defaultValue: any; readonly fakeValue: any; readonly initialValue: any; - readonly owner: Document; + readonly owner: Model; readonly type: any; value: any; errors: FieldError[]; constructor(recipe?: FieldRecipe, options?: FieldOptions); protected _createValidator(): Validator; + protected _createHandler(): Handler; protected _getValue(): any; protected _setValue(data: any): void; protected _cast(data: any, type: any): any; @@ -55,6 +57,7 @@ export declare class Field { isChanged(): boolean; isNested(): boolean; validate(): Promise; + handle(error: any): Promise; invalidate(): this; hasErrors(): boolean; isValid(): boolean; diff --git a/dist/fields.js b/dist/fields.js index 0955424..c222ad0 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -37,15 +37,16 @@ var __generator = (this && this.__generator) || function (thisArg, body) { var typeable_1 = require("typeable"); var utils_1 = require("./utils"); var validatable_1 = require("validatable"); -var documents_1 = require("./documents"); +var handleable_1 = require("handleable"); +var models_1 = require("./models"); var Field = (function () { function Field(recipe, options) { var _this = this; this.errors = []; - Object.defineProperty(this, 'recipe', { + Object.defineProperty(this, '_recipe', { value: Object.freeze(recipe || {}) }); - Object.defineProperty(this, 'options', { + Object.defineProperty(this, '_options', { value: Object.freeze(options || {}) }); Object.defineProperty(this, '_data', { @@ -59,6 +60,9 @@ var Field = (function () { Object.defineProperty(this, '_validator', { value: this._createValidator() }); + Object.defineProperty(this, '_handler', { + value: this._createHandler() + }); Object.defineProperty(this, 'value', { get: function () { return _this._getValue(); }, set: function (v) { return _this._setValue(v); }, @@ -77,22 +81,27 @@ var Field = (function () { enumerable: true }); Object.defineProperty(this, 'type', { - get: function () { return _this.recipe.type || null; }, + get: function () { return _this._recipe.type || null; }, enumerable: true }); Object.defineProperty(this, 'owner', { - get: function () { return _this.options.owner || null; }, + get: function () { return _this._options.owner || null; }, enumerable: true }); } Field.prototype._createValidator = function () { - var _a = this.options, validators = _a.validators, failFast = _a.failFast; + var _a = this._options, validators = _a.validators, failFast = _a.failFast; var context = this; return new validatable_1.Validator({ validators: validators, failFast: failFast, context: context }); }; + Field.prototype._createHandler = function () { + var _a = this._options, handlers = _a.handlers, failFast = _a.failFast; + var context = this; + return new handleable_1.Handler({ handlers: handlers, failFast: failFast, context: context }); + }; Field.prototype._getValue = function () { var data = this._data; - var get = this.recipe.get; + var get = this._recipe.get; if (typeable_1.isFunction(get)) { data = get.call(this, data); } @@ -102,7 +111,7 @@ var Field = (function () { if (typeable_1.isFunction(data)) { data = data.call(this); } - var set = this.recipe.set; + var set = this._recipe.set; if (typeable_1.isFunction(set)) { data = set.call(this, data); } @@ -111,21 +120,24 @@ var Field = (function () { this._data = data; }; Field.prototype._cast = function (data, type) { + var _this = this; var converter = type; if (!typeable_1.isValue(data)) { return null; } if (this.isNested()) { var Klass_1 = typeable_1.isArray(type) ? type[0] : type; - var options_1 = utils_1.merge({}, this.owner.options, { parent: this.owner }); - var toDocument = function (d) { return new Klass_1(d, options_1); }; - converter = typeable_1.isArray(type) ? [toDocument] : toDocument; + var toModel = function (d) { return new Klass_1(d, { + parent: _this.owner, + context: _this.owner.context + }); }; + converter = typeable_1.isArray(type) ? [toModel] : toModel; } return typeable_1.cast(data, converter); }; Field.prototype._getDefaultValue = function () { var data = null; - var defaultValue = this.recipe.defaultValue; + var defaultValue = this._recipe.defaultValue; if (typeable_1.isFunction(defaultValue)) { data = defaultValue.call(this); } @@ -136,7 +148,7 @@ var Field = (function () { }; Field.prototype._getFakeValue = function () { var data = null; - var fakeValue = this.recipe.fakeValue; + var fakeValue = this._recipe.fakeValue; if (typeable_1.isFunction(fakeValue)) { data = fakeValue.call(this); } @@ -155,7 +167,7 @@ var Field = (function () { this.value = this.fakeValue; } (typeable_1.toArray(this.value) || []) - .filter(function (doc) { return doc instanceof documents_1.Document; }) + .filter(function (doc) { return doc instanceof models_1.Model; }) .map(function (doc) { return doc.fake(); }); return this; }; @@ -189,8 +201,8 @@ var Field = (function () { type = type[0]; return (typeable_1.isPresent(type) && typeable_1.isPresent(type.prototype) - && (type.prototype instanceof documents_1.Document - || type.prototype.constructor === documents_1.Document)); + && (type.prototype instanceof models_1.Model + || type.prototype.constructor === models_1.Model)); }; Field.prototype.validate = function () { return __awaiter(this, void 0, void 0, function () { @@ -198,12 +210,31 @@ var Field = (function () { return __generator(this, function (_b) { switch (_b.label) { case 0: return [4 /*yield*/, Promise.all((typeable_1.toArray(this.value) || []) - .filter(function (doc) { return doc instanceof documents_1.Document; }) + .filter(function (doc) { return doc instanceof models_1.Model; }) .map(function (doc) { return doc.validate({ quiet: true }); }))]; case 1: _b.sent(); _a = this; - return [4 /*yield*/, this._validator.validate(this.value, this.recipe.validate)]; + return [4 /*yield*/, this._validator.validate(this.value, this._recipe.validate)]; + case 2: + _a.errors = _b.sent(); + return [2 /*return*/, this]; + } + }); + }); + }; + Field.prototype.handle = function (error) { + return __awaiter(this, void 0, void 0, function () { + var _a; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: return [4 /*yield*/, Promise.all((typeable_1.toArray(this.value) || []) + .filter(function (doc) { return doc instanceof models_1.Model; }) + .map(function (doc) { return doc.handle(error); }))]; + case 1: + _b.sent(); + _a = this; + return [4 /*yield*/, this._handler.handle(error, this._recipe.handle)]; case 2: _a.errors = _b.sent(); return [2 /*return*/, this]; @@ -213,7 +244,7 @@ var Field = (function () { }; Field.prototype.invalidate = function () { (typeable_1.toArray(this.value) || []) - .filter(function (doc) { return doc instanceof documents_1.Document; }) + .filter(function (doc) { return doc instanceof models_1.Model; }) .forEach(function (doc) { return doc.invalidate(); }); this.errors = []; return this; diff --git a/dist/fields.js.map b/dist/fields.js.map index 0afe4e5..79fc7a0 100644 --- a/dist/fields.js.map +++ b/dist/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAA6F;AAC7F,iCAA2C;AAC3C,2CAAuD;AACvD,yCAAkD;AAClD,mCAA+B;AA0C/B;IAmBE,eAAoB,MAAoB,EAAE,OAAsB;QAAhE,iBAmDC;QAlDC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAEjB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;YACrC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;SACnC,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE;YACtC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;SACpC,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;YACnC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE;YAC9B,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE;YAC1C,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE;YAC9B,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE;YACxC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE;SAC/B,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE;YACtC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE;SAC7B,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;YACnC,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,SAAS,EAAE,EAAhB,CAAgB;YAC3B,GAAG,EAAE,UAAC,CAAC,IAAK,OAAA,KAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAjB,CAAiB;YAC7B,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE;YAC1C,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,gBAAgB,EAAE,EAAvB,CAAuB;YAClC,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE;YACvC,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,aAAa,EAAE,EAApB,CAAoB;YAC/B,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE;YAC1C,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,YAAY,EAAjB,CAAiB;YAC5B,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;YAClC,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,EAAzB,CAAyB;YACpC,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;YACnC,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,EAA3B,CAA2B;YACtC,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;IAMS,gCAAgB,GAA1B;QACM,IAAA,kBAAsC,EAArC,0BAAU,EAAE,sBAAQ,CAAkB;QAC3C,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,MAAM,CAAC,IAAI,uBAAS,CAAC,EAAC,UAAU,YAAA,EAAE,QAAQ,UAAA,EAAE,OAAO,SAAA,EAAC,CAAC,CAAC;IACxD,CAAC;IAMS,8BAAc,GAAxB;QACM,IAAA,kBAAoC,EAAnC,sBAAQ,EAAE,sBAAQ,CAAkB;QACzC,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,MAAM,CAAC,IAAI,oBAAO,CAAC,EAAC,QAAQ,UAAA,EAAE,QAAQ,UAAA,EAAE,OAAO,SAAA,EAAC,CAAC,CAAC;IACpD,CAAC;IAMS,yBAAS,GAAnB;QACE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QAEjB,IAAA,sBAAG,CAAiB;QACzB,EAAE,CAAC,CAAC,qBAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMS,yBAAS,GAAnB,UAAqB,IAAI;QACvB,EAAE,CAAC,CAAC,qBAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAEI,IAAA,sBAAG,CAAiB;QACzB,EAAE,CAAC,CAAC,qBAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEnC,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAMS,qBAAK,GAAf,UAAiB,IAAI,EAAE,IAAI;QAA3B,iBAiBC;QAhBC,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,EAAE,CAAC,CAAC,CAAC,kBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC;QACd,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACpB,IAAI,OAAK,GAAG,kBAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC3C,IAAI,OAAO,GAAG,UAAC,CAAC,IAAK,OAAA,IAAI,OAAK,CAAC,CAAC,EAAE;gBAChC,MAAM,EAAE,KAAI,CAAC,KAAK;gBAClB,OAAO,EAAE,KAAI,CAAC,KAAK,CAAC,OAAO;aAC5B,CAAC,EAHmB,CAGnB,CAAC;YACH,SAAS,GAAG,kBAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;QAClD,CAAC;QAED,MAAM,CAAC,eAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC/B,CAAC;IAMS,gCAAgB,GAA1B;QACE,IAAI,IAAI,GAAG,IAAI,CAAC;QAEX,IAAA,wCAAY,CAAiB;QAClC,EAAE,CAAC,CAAC,qBAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,GAAG,YAAY,CAAC;QACtB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMS,6BAAa,GAAvB;QACE,IAAI,IAAI,GAAG,IAAI,CAAC;QAEX,IAAA,kCAAS,CAAiB;QAC/B,EAAE,CAAC,CAAC,qBAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,GAAG,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,qBAAK,GAAZ;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAErC,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,oBAAI,GAAX;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC9B,CAAC;QAED,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;aACxB,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,YAAY,cAAK,EAApB,CAAoB,CAAC;aACrC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,IAAI,EAAE,EAAV,CAAU,CAAC,CAAC;QAE5B,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,qBAAK,GAAZ;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,sBAAM,GAAb;QACE,EAAE,CAAC,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACxB,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC;iBAChB,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,IAAI,CAAC,CAAC,MAAM,EAAb,CAAa,CAAC;iBAC5B,OAAO,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,EAAE,EAAV,CAAU,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,iBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE1C,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,wBAAQ,GAAf;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAE/B,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,sBAAM,GAAb,UAAe,IAAI;QACjB,IAAI,KAAK,GAAG,IAAI,YAAY,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAEtD,MAAM,CAAC,eAAO,CACZ,iBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EACrB,iBAAS,CAAC,KAAK,CAAC,CACjB,CAAC;IACJ,CAAC;IAMM,yBAAS,GAAhB;QACE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAMM,wBAAQ,GAAf;QACE,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,EAAE,CAAC,CAAC,kBAAO,CAAC,IAAI,CAAC,CAAC;YAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAElC,MAAM,CAAC,CACL,oBAAS,CAAC,IAAI,CAAC;eACZ,oBAAS,CAAC,IAAI,CAAC,SAAS,CAAC;eACzB,CACD,IAAI,CAAC,SAAS,YAAY,cAAK;mBAC5B,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,cAAK,CACxC,CACF,CAAC;IACJ,CAAC;IASY,wBAAQ,GAArB;;;;;4BACE,MAAM,eAAA,OAAO,CAAC,GAAG,CACf,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;6BACxB,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,YAAY,cAAK,EAApB,CAAoB,CAAC;6BACrC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,EAA3B,CAA2B,CAAC,CAC7C,EAAA;;wBAJD,UAIE;wBAEF,KAAA,IAAI,CAAA;wBAAU,MAAM,eAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAC1C,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,OAAO,CAAC,QAAQ,CACtB,EAAA;;wBAHD,GAAK,MAAM,YAGV,CAAC;wBAEF,MAAM,gBAAC,IAAI,EAAC;;;;KACb;IASY,sBAAM,GAAnB,UAAqB,KAAU;;;;;4BAC7B,MAAM,eAAA,OAAO,CAAC,GAAG,CACf,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;6BACxB,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,YAAY,cAAK,EAApB,CAAoB,CAAC;6BACrC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAjB,CAAiB,CAAC,CACnC,EAAA;;wBAJD,UAIE;wBAEF,KAAA,IAAI,CAAA;wBAAU,MAAM,eAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CACtC,KAAK,EACL,IAAI,CAAC,OAAO,CAAC,MAAM,CACpB,EAAA;;wBAHD,GAAK,MAAM,YAGV,CAAC;wBAEF,MAAM,gBAAC,IAAI,EAAC;;;;KACb;IAMM,0BAAU,GAAjB;QACE,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;aACxB,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,YAAY,cAAK,EAApB,CAAoB,CAAC;aACrC,OAAO,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,UAAU,EAAE,EAAhB,CAAgB,CAAC,CAAC;QAEtC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAEjB,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,yBAAS,GAAhB;QACE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,CAAC;YACJ,MAAM,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC;iBACvB,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,EAAH,CAAG,CAAC;iBAClB,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,SAAS,EAAE,EAAb,CAAa,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAMM,uBAAO,GAAd;QACE,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC;IAEH,YAAC;AAAD,CAAC,AAxXD,IAwXC;AAxXY,sBAAK"} \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts index 014349a..2a1144f 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -1,3 +1,3 @@ -import { Document } from './documents'; +import { Model } from './models'; import { Field } from './fields'; -export { Document, Field }; +export { Model, Field }; diff --git a/dist/index.js b/dist/index.js index ed60a73..2e55a84 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,6 +1,6 @@ "use strict"; -var documents_1 = require("./documents"); -exports.Document = documents_1.Document; +var models_1 = require("./models"); +exports.Model = models_1.Model; var fields_1 = require("./fields"); exports.Field = fields_1.Field; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map index a7e1082..db7175f 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,yCAAqC;AAO7B,wCAAQ;AANhB,mCAA+B;AAMb,+BAAK"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,mCAA+B;AAOvB,+BAAK;AANb,mCAA+B;AAMhB,+BAAK"} \ No newline at end of file diff --git a/dist/documents.d.ts b/dist/models.d.ts similarity index 69% rename from dist/documents.d.ts rename to dist/models.d.ts index b014997..6ac19fe 100644 --- a/dist/documents.d.ts +++ b/dist/models.d.ts @@ -1,4 +1,5 @@ import { ValidatorRecipe } from 'validatable'; +import { HandlerRecipe } from 'handleable'; import { Field, FieldRecipe, FieldError } from './fields'; export interface FieldRef { path: string[]; @@ -8,10 +9,11 @@ export interface FieldErrorRef extends Error { path: string[]; errors: FieldError[]; } -export interface DocumentOptions { - parent?: Document; +export interface ModelOptions { + parent?: Model; + context?: Model; } -export declare class Document { +export declare abstract class Model { protected _fields: { [name: string]: Field; }; @@ -21,19 +23,25 @@ export declare class Document { protected _validators: { [key: string]: (v?, r?: ValidatorRecipe) => boolean | Promise; }; + protected _handlers: { + [key: string]: (v?, r?: HandlerRecipe) => boolean | Promise; + }; protected _failFast: boolean; - readonly options: DocumentOptions; - readonly parent: Document; - readonly root: Document; - constructor(data?: any, options?: DocumentOptions); - protected _getRootDocument(): Document; + readonly root: Model; + parent: Model; + context: Model; + static context: Model; + constructor(data?: {}, options?: ModelOptions); + protected _getRootModel(): Model; protected _createField(recipe?: FieldRecipe): Field; protected _createValidationError(message?: string, code?: number): FieldError; - protected _createDocument(data?: {}, options?: DocumentOptions): any; + protected _createModel(data?: {}, options?: ModelOptions): any; failFast(fail?: boolean): void; defineField(name: string, recipe?: FieldRecipe): void; defineType(name: string, converter: (v?) => any): void; defineValidator(name: string, handler: (v?, r?: ValidatorRecipe) => boolean | Promise): void; + defineHandler(name: string, handler: (e?, r?: HandlerRecipe) => boolean | Promise): void; + defineModel(Klass: typeof Model, name?: string): void; getField(...keys: any[]): Field; hasField(...keys: any[]): boolean; populate(data?: {}): this; @@ -53,6 +61,9 @@ export declare class Document { validate({quiet}?: { quiet?: boolean; }): Promise; + handle(error: any, {quiet}?: { + quiet?: boolean; + }): Promise; collectErrors(): FieldErrorRef[]; applyErrors(errors?: FieldErrorRef[]): this; hasErrors(): boolean; diff --git a/dist/documents.js b/dist/models.js similarity index 70% rename from dist/documents.js rename to dist/models.js index 63b8cd8..e65d59e 100644 --- a/dist/documents.js +++ b/dist/models.js @@ -37,17 +37,21 @@ var __generator = (this && this.__generator) || function (thisArg, body) { var typeable_1 = require("typeable"); var fields_1 = require("./fields"); var utils_1 = require("./utils"); -var Document = (function () { - function Document(data, options) { +var Model = (function () { + function Model(data, options) { + if (data === void 0) { data = {}; } + if (options === void 0) { options = {}; } var _this = this; - Object.defineProperty(this, 'options', { - value: Object.freeze(options || {}) - }); Object.defineProperty(this, 'parent', { - value: this.options.parent || null + value: options.parent || this.parent || null, + writable: true + }); + Object.defineProperty(this, 'context', { + value: options.context || this.context || null, + writable: true }); Object.defineProperty(this, 'root', { - get: function () { return _this._getRootDocument(); } + get: function () { return _this._getRootModel(); } }); Object.defineProperty(this, '_fields', { value: {}, @@ -61,13 +65,16 @@ var Document = (function () { value: {}, writable: true }); + Object.defineProperty(this, '_handlers', { + value: {}, + writable: true + }); Object.defineProperty(this, '_failFast', { value: false, writable: true }); - this.populate(data); } - Document.prototype._getRootDocument = function () { + Model.prototype._getRootModel = function () { var root = this; do { if (root.parent) { @@ -78,32 +85,36 @@ var Document = (function () { } } while (true); }; - Document.prototype._createField = function (recipe) { + Model.prototype._createField = function (recipe) { if (recipe === void 0) { recipe = {}; } var type = recipe.type; return new fields_1.Field(utils_1.merge(recipe, { type: this._types[type] || type }), { owner: this, validators: this._validators, + handlers: this._handlers, failFast: this._failFast }); }; - Document.prototype._createValidationError = function (message, code) { + Model.prototype._createValidationError = function (message, code) { if (message === void 0) { message = 'Validation failed'; } if (code === void 0) { code = 422; } var error = new Error(message); error.code = code; return error; }; - Document.prototype._createDocument = function (data, options) { + Model.prototype._createModel = function (data, options) { if (data === void 0) { data = {}; } if (options === void 0) { options = {}; } - return new this.constructor(data, options); + return new this.constructor(data, { + parent: options.parent, + context: options.context + }); }; - Document.prototype.failFast = function (fail) { + Model.prototype.failFast = function (fail) { if (fail === void 0) { fail = true; } this._failFast = typeable_1.toBoolean(fail); }; - Document.prototype.defineField = function (name, recipe) { + Model.prototype.defineField = function (name, recipe) { var field = this._createField(recipe); Object.defineProperty(this, name, { get: function () { return field.value; }, @@ -113,13 +124,23 @@ var Document = (function () { }); this._fields[name] = field; }; - Document.prototype.defineType = function (name, converter) { + Model.prototype.defineType = function (name, converter) { this._types[name] = converter; }; - Document.prototype.defineValidator = function (name, handler) { + Model.prototype.defineValidator = function (name, handler) { this._validators[name] = handler; }; - Document.prototype.getField = function () { + Model.prototype.defineHandler = function (name, handler) { + this._handlers[name] = handler; + }; + Model.prototype.defineModel = function (Klass, name) { + if (!name) + name = Klass.prototype.constructor.toString().split(' ')[1]; + this[name] = eval("class " + name + " extends Model {}"); + this[name].prototype.context = this; + this[name].context = this; + }; + Model.prototype.getField = function () { var keys = []; for (var _i = 0; _i < arguments.length; _i++) { keys[_i] = arguments[_i]; @@ -130,16 +151,16 @@ var Document = (function () { return this._fields[lastKey]; } var field = keys.reduce(function (a, c) { return (a[c] || {}); }, this); - return field instanceof Document ? field.getField(lastKey) : undefined; + return field instanceof Model ? field.getField(lastKey) : undefined; }; - Document.prototype.hasField = function () { + Model.prototype.hasField = function () { var keys = []; for (var _i = 0; _i < arguments.length; _i++) { keys[_i] = arguments[_i]; } return !typeable_1.isUndefined(this.getField.apply(this, keys)); }; - Document.prototype.populate = function (data) { + Model.prototype.populate = function (data) { var _this = this; if (data === void 0) { data = {}; } data = utils_1.serialize(data); @@ -148,10 +169,10 @@ var Document = (function () { .forEach(function (name) { return _this[name] = data[name]; }); return this; }; - Document.prototype.serialize = function () { + Model.prototype.serialize = function () { return utils_1.serialize(this); }; - Document.prototype.flatten = function (prefix) { + Model.prototype.flatten = function (prefix) { var _this = this; if (prefix === void 0) { prefix = []; } var fields = []; @@ -162,10 +183,10 @@ var Document = (function () { var value = field.value; fields.push({ path: path, field: field }); if (typeable_1.isPresent(value) && typeable_1.isPresent(type)) { - if (type.prototype instanceof Document) { + if (type.prototype instanceof Model) { fields = fields.concat(value.flatten(path)); } - else if (typeable_1.isArray(type) && type[0].prototype instanceof Document) { + else if (typeable_1.isArray(type) && type[0].prototype instanceof Model) { fields = fields.concat(value .map(function (f, i) { return (f ? f.flatten(path.concat([i])) : null); }) .filter(function (f) { return typeable_1.isArray(f); }) @@ -175,13 +196,13 @@ var Document = (function () { }); return fields; }; - Document.prototype.collect = function (handler) { + Model.prototype.collect = function (handler) { return this.flatten().map(handler); }; - Document.prototype.scroll = function (handler) { + Model.prototype.scroll = function (handler) { return this.flatten().map(handler).length; }; - Document.prototype.filter = function (test) { + Model.prototype.filter = function (test) { var data = utils_1.serialize(this); this.flatten() .sort(function (a, b) { return b.path.length - a.path.length; }) @@ -193,50 +214,50 @@ var Document = (function () { }); return data; }; - Document.prototype.reset = function () { + Model.prototype.reset = function () { var _this = this; Object.keys(this._fields) .forEach(function (name) { return _this._fields[name].reset(); }); return this; }; - Document.prototype.fake = function () { + Model.prototype.fake = function () { var _this = this; Object.keys(this._fields) .forEach(function (name) { return _this._fields[name].fake(); }); return this; }; - Document.prototype.clear = function () { + Model.prototype.clear = function () { var _this = this; Object.keys(this._fields) .forEach(function (name) { return _this._fields[name].clear(); }); return this; }; - Document.prototype.commit = function () { + Model.prototype.commit = function () { var _this = this; Object.keys(this._fields) .forEach(function (name) { return _this._fields[name].commit(); }); return this; }; - Document.prototype.rollback = function () { + Model.prototype.rollback = function () { var _this = this; Object.keys(this._fields) .forEach(function (name) { return _this._fields[name].rollback(); }); return this; }; - Document.prototype.equals = function (value) { + Model.prototype.equals = function (value) { return utils_1.isEqual(utils_1.serialize(this), utils_1.serialize(value)); }; - Document.prototype.isChanged = function () { + Model.prototype.isChanged = function () { var _this = this; return Object.keys(this._fields) .some(function (name) { return _this._fields[name].isChanged(); }); }; - Document.prototype.isNested = function () { + Model.prototype.isNested = function () { var _this = this; return Object.keys(this._fields) .some(function (name) { return _this._fields[name].isNested(); }); }; - Document.prototype.validate = function (_a) { + Model.prototype.validate = function (_a) { var _b = (_a === void 0 ? {} : _a).quiet, quiet = _b === void 0 ? false : _b; return __awaiter(this, void 0, void 0, function () { var fields; @@ -256,7 +277,32 @@ var Document = (function () { }); }); }; - Document.prototype.collectErrors = function () { + Model.prototype.handle = function (error, _a) { + var _b = (_a === void 0 ? {} : _a).quiet, quiet = _b === void 0 ? true : _b; + return __awaiter(this, void 0, void 0, function () { + var fields; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!error) + return [2 /*return*/, this]; + fields = this._fields; + return [4 /*yield*/, Promise.all(Object.keys(fields) + .map(function (n) { return fields[n].handle(error); }))]; + case 1: + _a.sent(); + if (!quiet && this.hasErrors()) { + throw this._createValidationError(); + } + else if (!this.hasErrors()) { + throw error; + } + return [2 /*return*/, this]; + } + }); + }); + }; + Model.prototype.collectErrors = function () { return this.flatten() .map(function (_a) { var path = _a.path, field = _a.field; @@ -267,7 +313,7 @@ var Document = (function () { return errors.length > 0; }); }; - Document.prototype.applyErrors = function (errors) { + Model.prototype.applyErrors = function (errors) { var _this = this; if (errors === void 0) { errors = []; } errors.forEach(function (error) { @@ -278,24 +324,27 @@ var Document = (function () { }); return this; }; - Document.prototype.hasErrors = function () { + Model.prototype.hasErrors = function () { var _this = this; return Object.keys(this._fields) .some(function (name) { return _this._fields[name].hasErrors(); }); }; - Document.prototype.isValid = function () { + Model.prototype.isValid = function () { return !this.hasErrors(); }; - Document.prototype.invalidate = function () { + Model.prototype.invalidate = function () { var _this = this; Object.keys(this._fields) .forEach(function (name) { return _this._fields[name].invalidate(); }); return this; }; - Document.prototype.clone = function () { - return this._createDocument(this, this.options); + Model.prototype.clone = function () { + return this._createModel(this, { + parent: this.parent, + context: this.context + }); }; - return Document; + return Model; }()); -exports.Document = Document; -//# sourceMappingURL=documents.js.map \ No newline at end of file +exports.Model = Model; +//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/dist/models.js.map b/dist/models.js.map new file mode 100644 index 0000000..16a46b0 --- /dev/null +++ b/dist/models.js.map @@ -0,0 +1 @@ +{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/example/dist/index.js b/example/dist/index.js index e3331f8..5f0797f 100644 --- a/example/dist/index.js +++ b/example/dist/index.js @@ -1,9 +1,6 @@ "use strict"; const __1 = require("../.."); -/* -* Book model -*/ -class Book extends __1.Document { +class Book extends __1.Model { constructor(data, options) { super(data, options); this.defineField('title', { @@ -19,10 +16,7 @@ class Book extends __1.Document { this.commit(); } } -/* -* User model -*/ -class User extends __1.Document { +class User extends __1.Model { constructor(data, options) { super(data, options); this.defineField('name', { @@ -47,9 +41,6 @@ class User extends __1.Document { this.commit(); } } -/* -* Usage -*/ let user = new User({ name: 'John Smith', book: { diff --git a/example/dist/index.js.map b/example/dist/index.js.map index 4d023e9..5ce9700 100644 --- a/example/dist/index.js.map +++ b/example/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,6BAA+B;AAE/B;;EAEE;AAEF,UAAW,SAAQ,YAAQ;IAGzB,YAAoB,IAAK,EAAE,OAAQ;QACjC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAErB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YACxB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;CACF;AAED;;EAEE;AAEF,UAAW,SAAQ,YAAQ;IAIzB,YAAoB,IAAK,EAAE,OAAQ;QACjC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAErB,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;CACF;AAED;;EAEE;AAEF,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;IAClB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE;QACJ,KAAK,EAAE,gBAAgB;KACxB;CACF,CAAC,CAAC;AAEH,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,IAAI,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,6BAA4B;AAM5B,UAAW,SAAQ,SAAK;IAGtB,YAAoB,IAAK,EAAE,OAAQ;QACjC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAErB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YACxB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;CACF;AAMD,UAAW,SAAQ,SAAK;IAItB,YAAoB,IAAK,EAAE,OAAQ;QACjC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAErB,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;CACF;AAMD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;IAClB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE;QACJ,KAAK,EAAE,gBAAgB;KACxB;CACF,CAAC,CAAC;AAEH,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,IAAI,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/example/src/index.ts b/example/src/index.ts index eea342e..adea7f5 100644 --- a/example/src/index.ts +++ b/example/src/index.ts @@ -1,10 +1,10 @@ -import {Document} from '../..'; +import {Model} from '../..'; /* * Book model */ -class Book extends Document { +class Book extends Model { public title: string; public constructor (data?, options?) { @@ -14,7 +14,7 @@ class Book extends Document { type: 'String', validate: [ { - validator: 'presence', + validator: 'presence', message: 'must be present' } ] @@ -29,7 +29,7 @@ class Book extends Document { * User model */ -class User extends Document { +class User extends Model { public name: string; public book: Book; @@ -40,7 +40,7 @@ class User extends Document { type: 'String', validate: [ { - validator: 'presence', + validator: 'presence', message: 'must be present' } ] @@ -49,7 +49,7 @@ class User extends Document { type: Book, validate: [ { - validator: 'presence', + validator: 'presence', message: 'must be present' } ] diff --git a/package.json b/package.json index 7e79954..3999254 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { - "name": "objectschema", - "version": "4.1.1", - "description": "Advanced strongly-typed JavaScript object.", + "name": "contextable", + "version": "4.0.0", + "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/index.js", "types": "./dist/index.d.ts", "ava": { @@ -21,23 +21,49 @@ }, "repository": { "type": "git", - "url": "git+https://github.com/xpepermint/objectschemajs.git" + "url": "git+https://github.com/xpepermint/contextablejs.git" }, "bugs": { - "url": "https://github.com/xpepermint/objectschemajs/issues" + "url": "https://github.com/xpepermint/contextablejs/issues" }, - "homepage": "https://github.com/xpepermint/objectschemajs#readme", + "homepage": "https://github.com/xpepermint/contextablejs#readme", "keywords": [ "object", "schema", - "openobject", - "dynamic", + "orm", + "odm", "map", + "mapping", + "context", + "contextify", + "contextable", "model", "modeling", - "javascript", - "extends", - "array" + "document", + "class", + "db", + "database", + "storage", + "structure", + "structuring", + "error", + "errors", + "handling", + "handle", + "valid", + "validate", + "validation", + "validator", + "validating", + "form", + "type", + "cast", + "casting", + "history", + "tracking", + "change", + "field", + "fields" ], "author": "Kristijan Sedlak (Xpepermint)", "license": "MIT", @@ -46,6 +72,7 @@ "typescript": "^2.1.4" }, "dependencies": { + "handleable": "^0.19.0", "lodash.isequal": "^4.4.0", "lodash.merge": "^4.6.0", "typeable": "^2.0.0", diff --git a/src/fields.ts b/src/fields.ts index 05c2807..ae95a7c 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -1,28 +1,20 @@ import {isFunction, isUndefined, isPresent, isArray, toArray, isValue, cast} from 'typeable'; -import {serialize, isEqual, merge} from './utils'; +import {serialize, isEqual} from './utils'; import {Validator, ValidatorRecipe} from 'validatable'; -import {Document} from './documents'; +import {Handler, HandlerRecipe} from 'handleable'; +import {Model} from './models'; /* * Field context definition interface. */ export interface FieldOptions { - owner?: Document; + owner?: Model; validators?: {[name: string]: (v?, r?: ValidatorRecipe) => boolean | Promise}; + handlers?: {[name: string]: (v?, r?: HandlerRecipe) => boolean | Promise}; failFast?: boolean; } -/* -* Field validation definition interface. -*/ - -export interface ValidationRecipe { - validator: string; - message: string; - [key: string]: any; -} - /* * Field definition interface. */ @@ -33,7 +25,8 @@ export interface FieldRecipe { set?: (v: any) => void; defaultValue?: any; fakeValue?: any; - validate?: ValidationRecipe[]; + validate?: ValidatorRecipe[]; + handle?: HandlerRecipe[]; } /* @@ -55,12 +48,13 @@ export class Field { protected _data: any; protected _initialData: any; protected _validator: Validator; - readonly recipe: FieldRecipe; - readonly options: FieldOptions; + protected _handler: Handler; + protected _recipe: FieldRecipe; + protected _options: FieldOptions; readonly defaultValue: any; readonly fakeValue: any; readonly initialValue: any; - readonly owner: Document; + readonly owner: Model; readonly type: any; public value: any; public errors: FieldError[]; @@ -72,10 +66,10 @@ export class Field { public constructor (recipe?: FieldRecipe, options?: FieldOptions) { this.errors = []; - Object.defineProperty(this, 'recipe', { + Object.defineProperty(this, '_recipe', { value: Object.freeze(recipe || {}) }); - Object.defineProperty(this, 'options', { + Object.defineProperty(this, '_options', { value: Object.freeze(options || {}) }); @@ -90,58 +84,72 @@ export class Field { Object.defineProperty(this, '_validator', { // validatable.js instance value: this._createValidator() }); + Object.defineProperty(this, '_handler', { // handleable.js instance + value: this._createHandler() + }); Object.defineProperty(this, 'value', { get: () => this._getValue(), set: (v) => this._setValue(v), enumerable: true }); - Object.defineProperty(this, 'defaultValue', { + Object.defineProperty(this, 'defaultValue', { get: () => this._getDefaultValue(), enumerable: true }); - Object.defineProperty(this, 'fakeValue', { + Object.defineProperty(this, 'fakeValue', { get: () => this._getFakeValue(), enumerable: true }); - Object.defineProperty(this, 'initialValue', { + Object.defineProperty(this, 'initialValue', { get: () => this._initialData, enumerable: true }); - Object.defineProperty(this, 'type', { - get: () => this.recipe.type || null, + Object.defineProperty(this, 'type', { + get: () => this._recipe.type || null, enumerable: true }); - Object.defineProperty(this, 'owner', { - get: () => this.options.owner || null, + Object.defineProperty(this, 'owner', { + get: () => this._options.owner || null, enumerable: true }); } /* - * Returns a new instance of validator. + * Returns a new validator instance. */ protected _createValidator () { - let {validators, failFast} = this.options; + let {validators, failFast} = this._options; let context = this; return new Validator({validators, failFast, context}); } + /* + * Returns a new handler instance. + */ + + protected _createHandler () { + let {handlers, failFast} = this._options; + let context = this; + + return new Handler({handlers, failFast, context}); + } + /* * Returns current field value. */ protected _getValue () { let data = this._data; - - let {get} = this.recipe; + + let {get} = this._recipe; if (isFunction(get)) { data = get.call(this, data); } - + return data; } @@ -154,7 +162,7 @@ export class Field { data = data.call(this); } - let {set} = this.recipe; + let {set} = this._recipe; if (isFunction(set)) { data = set.call(this, data); } @@ -179,9 +187,11 @@ export class Field { if (this.isNested()) { let Klass = isArray(type) ? type[0] : type; - let options = merge({}, this.owner.options, {parent: this.owner}); - let toDocument = (d) => new Klass(d, options); - converter = isArray(type) ? [toDocument] : toDocument; + let toModel = (d) => new Klass(d, { + parent: this.owner, + context: this.owner.context + }); + converter = isArray(type) ? [toModel] : toModel; } return cast(data, converter); @@ -193,8 +203,8 @@ export class Field { protected _getDefaultValue () { let data = null; - - let {defaultValue} = this.recipe; + + let {defaultValue} = this._recipe; if (isFunction(defaultValue)) { data = defaultValue.call(this); } @@ -212,7 +222,7 @@ export class Field { protected _getFakeValue () { let data = null; - let {fakeValue} = this.recipe; + let {fakeValue} = this._recipe; if (isFunction(fakeValue)) { data = fakeValue.call(this); } @@ -245,7 +255,7 @@ export class Field { } (toArray(this.value) || []) // related fake values - .filter((doc) => doc instanceof Document) + .filter((doc) => doc instanceof Model) .map((doc) => doc.fake()); return this; @@ -309,7 +319,7 @@ export class Field { } /* - * Returns `true` if the data is a Document. + * Returns `true` if the data is a Model. */ public isNested (): boolean { @@ -320,8 +330,8 @@ export class Field { isPresent(type) && isPresent(type.prototype) && ( - type.prototype instanceof Document - || type.prototype.constructor === Document + type.prototype instanceof Model + || type.prototype.constructor === Model ) ); } @@ -334,15 +344,37 @@ export class Field { */ public async validate (): Promise { - await Promise.all( // invalidate related documents + await Promise.all( // validate related models (toArray(this.value) || []) - .filter((doc) => doc instanceof Document) - .map((doc) => doc.validate({quiet: true})) + .filter((doc) => doc instanceof Model) + .map((doc) => doc.validate({quiet: true})) ); this.errors = await this._validator.validate( this.value, - this.recipe.validate + this._recipe.validate + ); + + return this; + } + + /* + * Handles the field by populating the `errors` property. + * + * IMPORTANT: Array null values for nested objects are not treated as an object + * but as an empty item thus isValid() for [null] succeeds. + */ + + public async handle (error: any): Promise { + await Promise.all( // handle related models + (toArray(this.value) || []) + .filter((doc) => doc instanceof Model) + .map((doc) => doc.handle(error)) + ); + + this.errors = await this._handler.handle( + error, + this._recipe.handle ); return this; @@ -353,8 +385,8 @@ export class Field { */ public invalidate (): this { - (toArray(this.value) || []) // invalidate related documents - .filter((doc) => doc instanceof Document) + (toArray(this.value) || []) // invalidate related models + .filter((doc) => doc instanceof Model) .forEach((doc) => doc.invalidate()); this.errors = []; @@ -387,5 +419,5 @@ export class Field { public isValid (): boolean { return !this.hasErrors(); } - + } diff --git a/src/index.ts b/src/index.ts index 07ee950..82434b6 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,8 +1,8 @@ -import {Document} from './documents'; +import {Model} from './models'; import {Field} from './fields'; /* * Exposing public classes. */ -export {Document, Field}; +export {Model, Field}; diff --git a/src/documents.ts b/src/models.ts similarity index 73% rename from src/documents.ts rename to src/models.ts index 48178d1..2e9dd9f 100644 --- a/src/documents.ts +++ b/src/models.ts @@ -1,5 +1,6 @@ import {isArray, isUndefined, isPresent, toBoolean} from 'typeable'; import {ValidatorRecipe} from 'validatable'; +import {HandlerRecipe} from 'handleable'; import {Field, FieldRecipe, FieldError} from './fields'; import {serialize, isEqual, merge} from './utils'; @@ -22,39 +23,44 @@ export interface FieldErrorRef extends Error { } /* -* Document options interface. +* Model options interface. */ -export interface DocumentOptions { - parent?: Document; +export interface ModelOptions { + parent?: Model; + context?: Model; } /* * The core schema object class. */ -export class Document { - protected _fields: {[name: string]: Field}; // document fields +export abstract class Model { + protected _fields: {[name: string]: Field}; // model fields protected _types: {[key: string]: (v?) => any}; // custom data types protected _validators: {[key: string]: (v?, r?: ValidatorRecipe) => boolean | Promise}; // custom validators - protected _failFast: boolean; // stop validating on first error - readonly options: DocumentOptions; - readonly parent: Document; - readonly root: Document; + protected _handlers: {[key: string]: (v?, r?: HandlerRecipe) => boolean | Promise}; // custom validators + protected _failFast: boolean; // stop validating/handling on first error + readonly root: Model; + public parent: Model; + public context: Model; + public static context: Model; /* * Class constructor. */ - public constructor (data?, options?: DocumentOptions) { - Object.defineProperty(this, 'options', { - value: Object.freeze(options || {}) - }); + public constructor (data = {}, options: ModelOptions = {}) { Object.defineProperty(this, 'parent', { - value: this.options.parent || null + value: options.parent || this.parent || null, + writable: true + }); + Object.defineProperty(this, 'context', { + value: options.context || this.context || null, + writable: true }); Object.defineProperty(this, 'root', { - get: () => this._getRootDocument() + get: () => this._getRootModel() }); Object.defineProperty(this, '_fields', { @@ -69,20 +75,22 @@ export class Document { value: {}, writable: true }); + Object.defineProperty(this, '_handlers', { + value: {}, + writable: true + }); Object.defineProperty(this, '_failFast', { value: false, writable: true }); - - this.populate(data); } /* - * Loops up on the tree and returns the first document in the tree. + * Loops up on the tree and returns the first model in the tree. */ - protected _getRootDocument () { - let root: Document = this; + protected _getRootModel () { + let root: Model = this; do { if (root.parent) { root = root.parent; @@ -107,6 +115,7 @@ export class Document { ), { owner: this, validators: this._validators, + handlers: this._handlers, failFast: this._failFast }); } @@ -123,12 +132,15 @@ export class Document { } /* - * Creates a new document instance. This method is especially useful when + * Creates a new model instance. This method is especially useful when * extending this class. */ - protected _createDocument (data = {}, options: DocumentOptions = {}) { - return new (this.constructor as any)(data, options); + protected _createModel (data = {}, options: ModelOptions = {}) { + return new (this.constructor as any)(data, { + parent: options.parent, + context: options.context + }); } /* @@ -140,7 +152,7 @@ export class Document { } /* - * Defines a new document property. + * Defines a new model property. */ public defineField (name: string, recipe?: FieldRecipe): void { @@ -172,20 +184,40 @@ export class Document { this._validators[name] = handler; } + /* + * Defines a new custom validator. + */ + + public defineHandler (name: string, handler: (e?, r?: HandlerRecipe) => boolean | Promise): void { + this._handlers[name] = handler; + } + + /* + * Defines a new model property. + */ + + public defineModel (Klass: typeof Model, name?: string): void { + if (!name) name = Klass.prototype.constructor.toString().split(' ')[1]; + + this[name] = eval(`class ${name} extends Model {}`); + this[name].prototype.context = this; + this[name].context = this; + } + /* * Returns a value at path. */ public getField (...keys): Field { keys = [].concat(isArray(keys[0]) ? keys[0] : keys); - + let lastKey = keys.pop(); if (keys.length === 0) { return this._fields[lastKey]; } let field = keys.reduce((a, c) => (a[c] || {}), this); - return field instanceof Document ? field.getField(lastKey) : undefined; + return field instanceof Model ? field.getField(lastKey) : undefined; } /* @@ -219,7 +251,7 @@ export class Document { } /* - * Scrolls through the document and returns an array of fields. + * Scrolls through the model and returns an array of fields. */ public flatten (prefix: string[] = []): FieldRef[] { @@ -234,12 +266,12 @@ export class Document { fields.push({path, field}); if (isPresent(value) && isPresent(type)) { - if (type.prototype instanceof Document) { + if (type.prototype instanceof Model) { fields = fields.concat( value.flatten(path) ); } - else if (isArray(type) && type[0].prototype instanceof Document) { + else if (isArray(type) && type[0].prototype instanceof Model) { fields = fields.concat( value .map((f, i) => (f ? f.flatten(path.concat([i])) : null)) @@ -262,7 +294,7 @@ export class Document { } /* - * Scrolls through document fields and executes a handler on each field. + * Scrolls through model fields and executes a handler on each field. */ public scroll (handler: (field: FieldRef) => void): number { @@ -290,7 +322,7 @@ export class Document { } /* - * Sets each document field to its default value. + * Sets each model field to its default value. */ reset (): this { @@ -346,7 +378,7 @@ export class Document { /* * Returns `true` when the `value` represents an object with the - * same field values as the original document. + * same field values as the original model. */ equals (value: any): boolean { @@ -393,7 +425,32 @@ export class Document { if (!quiet && this.hasErrors()) { throw this._createValidationError(); } + return this; + } + + /* + * Validates fields and throws an error. + */ + + async handle (error: any, { + quiet = true + }: { + quiet?: boolean + } = {}): Promise { + if (!error) return this; + let fields = this._fields; + await Promise.all( + Object.keys(fields) + .map((n) => fields[n].handle(error)) + ); + + if (!quiet && this.hasErrors()) { + throw this._createValidationError(); + } + else if (!this.hasErrors()) { + throw error; // always throw unhandled errors + } return this; } @@ -451,11 +508,14 @@ export class Document { } /* - * Returns a new Document instance which is the exact copy of the original. + * Returns a new Model instance which is the exact copy of the original. */ clone (): this { - return this._createDocument(this, this.options); + return this._createModel(this, { + parent: this.parent, + context: this.context + }); } } diff --git a/tests/fields.js b/tests/fields.js index 49845f9..6085f77 100644 --- a/tests/fields.js +++ b/tests/fields.js @@ -1,5 +1,5 @@ import test from 'ava'; -import {Field, Document} from '..'; +import {Field, Model} from '..'; import {Validator} from 'validatable'; test('nullifies a value by default', (t) => { @@ -112,10 +112,10 @@ test('method `isChanged()` returns `true` if the value have been changed', (t) = t.is(f.isChanged(), true); }); -test('method `isNested()` returns `true` if the field type is un instance of a Document', (t) => { +test('method `isNested()` returns `true` if the field type is un instance of a Model', (t) => { let f0 = new Field(); - let f1 = new Field({type: [Document]}); - let f2 = new Field({type: [class Model extends Document {}]}); + let f1 = new Field({type: [Model]}); + let f2 = new Field({type: [class User extends Model {}]}); t.is(f0.isNested(), false); t.is(f1.isNested(), true); t.is(f2.isNested(), true); @@ -171,3 +171,22 @@ test('has enumeratable properties', (t) => { let f = new Field(); t.deepEqual(Object.keys(f), ['errors', 'value', 'defaultValue', 'fakeValue', 'initialValue', 'type', 'owner']); }); + +test('method `handle()` handles an error and populates the `errors` property', async (t) => { + let f = new Field({ + handle: [ + {handler: 'block', block () { return true }, message: 'foo'}, + {handler: 'coolness', message: 'cool'} // custom + ] + }, { + handlers: { + coolness (error) { return error.message === 'cool' } // custom validators + } + }); + let e = new Error('cool'); + await f.handle(e); + t.deepEqual(f.errors, [ + {handler: 'block', message: 'foo', code: 422}, + {handler: 'coolness', message: 'cool', code: 422} + ]); +}); diff --git a/tests/index.js b/tests/index.js index a44956e..571249e 100644 --- a/tests/index.js +++ b/tests/index.js @@ -2,6 +2,6 @@ import test from 'ava'; import * as objectschema from '..'; test('exposed content', (t) => { - t.is(!!objectschema.Document, true); + t.is(!!objectschema.Model, true); t.is(!!objectschema.Field, true); }); diff --git a/tests/documents.js b/tests/models.js similarity index 80% rename from tests/documents.js rename to tests/models.js index 2af0731..71d40fc 100644 --- a/tests/documents.js +++ b/tests/models.js @@ -1,8 +1,8 @@ import test from 'ava'; -import {Document, Field} from '..'; +import {Model, Field} from '..'; test('method `defineField` initializes nullified enumerable property', (t) => { - let user = new class User extends Document { + let user = new class User extends Model { constructor () { super(); this.defineField('name'); @@ -17,7 +17,7 @@ test('method `defineField` initializes nullified enumerable property', (t) => { }); test('method `defineType` defines a custom data type', (t) => { - let user = new class User extends Document { + let user = new class User extends Model { constructor () { super(); this.defineType('cool', (v) => `${v}-cool`); @@ -29,14 +29,14 @@ test('method `defineType` defines a custom data type', (t) => { }); test('method `populate` deeply populates fields', (t) => { - class Book extends Document { + class Book extends Model { constructor (data, options) { super(data, options); this.defineField('title', {type: 'String'}); this.populate(data); } } - class User extends Document { + class User extends Model { constructor (data, options) { super(data, options); this.defineField('name', {type: 'String'}); @@ -63,15 +63,15 @@ test('method `populate` deeply populates fields', (t) => { t.is(user.books[1].title, '300'); }); -test('property `parent` holds an instance of a parent document', (t) => { - class Book extends Document { +test('property `parent` holds an instance of a parent model', (t) => { + class Book extends Model { constructor (data, options) { super(data, options); this.defineField('title', {type: 'String'}); this.populate(data); } } - class User extends Document { + class User extends Model { constructor (data, options) { super(data, options); this.defineField('name', {type: 'String'}); @@ -96,15 +96,15 @@ test('property `parent` holds an instance of a parent document', (t) => { t.is(user.books[1].parent, user); }); -test('property `root` return the first document in a tree of nested documents', (t) => { - class Book extends Document { +test('property `root` return the first model in a tree of nested models', (t) => { + class Book extends Model { constructor (data, options) { super(data, options); this.defineField('title'); this.populate(data); } } - class User extends Document { + class User extends Model { constructor (data, options) { super(data, options); this.defineField('book', {type: Book}); @@ -121,14 +121,14 @@ test('property `root` return the first document in a tree of nested documents', }); test('method `getField` returns an instance of a field at path', (t) => { - class Book extends Document { + class Book extends Model { constructor (data, options) { super(data, options); this.defineField('title', {type: 'String'}); this.populate(data); } } - class User extends Document { + class User extends Model { constructor (data, options) { super(data, options); this.defineField('name', {type: 'String'}); @@ -161,7 +161,7 @@ test('method `getField` returns an instance of a field at path', (t) => { }); test('method `hasField` returns `true` if the field exists', (t) => { - class User extends Document { + class User extends Model { constructor (data, options) { super(data, options); this.defineField('name', {type: 'String'}); @@ -173,15 +173,15 @@ test('method `hasField` returns `true` if the field exists', (t) => { t.is(user.hasField(['book', 'title']), false); }); -test('method `serialize` converts document into a serialized data object', (t) => { - class Book extends Document { +test('method `serialize` converts model into a serialized data object', (t) => { + class Book extends Model { constructor (data, options) { super(data, options); this.defineField('title', {type: 'String'}); this.populate(data); } } - class User extends Document { + class User extends Model { constructor (data, options) { super(data, options); this.defineField('name', {type: 'String'}); @@ -213,18 +213,18 @@ test('method `serialize` converts document into a serialized data object', (t) = title: 'baz' } ] - }); + }); }); test('method `flatten` returns an array of fields', async (t) => { - class Book extends Document { + class Book extends Model { constructor (data, options) { super(data, options); this.defineField('title', {type: 'String'}); this.populate(data); } } - class User extends Document { + class User extends Model { constructor (data, options) { super(data, options); this.defineField('name', {type: 'String'}); @@ -258,14 +258,14 @@ test('method `flatten` returns an array of fields', async (t) => { }); test('method `collect` returns an array of results', (t) => { - class Book extends Document { + class Book extends Model { constructor (data, options) { super(data, options); this.defineField('title', {type: 'String'}); this.populate(data); } } - class User extends Document { + class User extends Model { constructor (data, options) { super(data, options); this.defineField('name', {type: 'String'}); @@ -288,14 +288,14 @@ test('method `collect` returns an array of results', (t) => { }); test('method `scroll` runs the provided handler on each field', (t) => { - class Book extends Document { + class Book extends Model { constructor (data, options) { super(data, options); this.defineField('title', {type: 'String'}); this.populate(data); } } - class User extends Document { + class User extends Model { constructor (data, options) { super(data, options); this.defineField('name', {type: 'String'}); @@ -313,15 +313,15 @@ test('method `scroll` runs the provided handler on each field', (t) => { t.deepEqual(count, 3); }); -test('method `filter` converts a document into serialized object with only keys that pass the test', (t) => { - class Book extends Document { +test('method `filter` converts a model into serialized object with only keys that pass the test', (t) => { + class Book extends Model { constructor (data, options) { super(data, options); this.defineField('title', {type: 'String'}); this.populate(data); } } - class User extends Document { + class User extends Model { constructor (data, options) { super(data, options); this.defineField('name', {type: 'String'}); @@ -357,14 +357,14 @@ test('method `filter` converts a document into serialized object with only keys }); test('method `reset` sets fields to their default values', (t) => { - class Book extends Document { + class Book extends Model { constructor (data, options) { super(data, options); this.defineField('title', {defaultValue: 'foo'}); this.populate(data); } } - class User extends Document { + class User extends Model { constructor (data, options) { super(data, options); this.defineField('name', {defaultValue: 'bar'}); @@ -400,14 +400,14 @@ test('method `reset` sets fields to their default values', (t) => { }); test('method `fake` sets fields to their fake values', (t) => { - class Book extends Document { + class Book extends Model { constructor (data, options) { super(data, options); this.defineField('title', {fakeValue: 'foo'}); this.populate(data); } } - class User extends Document { + class User extends Model { constructor (data, options) { super(data, options); this.defineField('name', {fakeValue: 'bar'}); @@ -433,14 +433,14 @@ test('method `fake` sets fields to their fake values', (t) => { }); test('method `clear` sets fields to `null`', (t) => { - class Book extends Document { + class Book extends Model { constructor (data, options) { super(data, options); this.defineField('title', {defaultValue: 'foo'}); this.populate(data); } } - class User extends Document { + class User extends Model { constructor (data, options) { super(data, options); this.defineField('name', {defaultValue: 'bar'}); @@ -469,14 +469,14 @@ test('method `clear` sets fields to `null`', (t) => { }); test('methods `commit()` and `rollback()` manage committed states', (t) => { - class Book extends Document { + class Book extends Model { constructor (data, options) { super(data, options); this.defineField('title'); this.populate(data); } } - class User extends Document { + class User extends Model { constructor (data, options) { super(data, options); this.defineField('name'); @@ -518,14 +518,14 @@ test('methods `commit()` and `rollback()` manage committed states', (t) => { }); test('method `equals` returns `true` when the passing object looks the same', (t) => { - class Book extends Document { + class Book extends Model { constructor (data, options) { super(data, options); this.defineField('title'); this.populate(data); } } - class User extends Document { + class User extends Model { constructor (data, options) { super(data, options); this.defineField('name'); @@ -550,7 +550,7 @@ test('method `equals` returns `true` when the passing object looks the same', (t }); test('method `isChanged` returns `true` if at least one field has been changed', (t) => { - class Book extends Document { + class Book extends Model { constructor (data, options) { super(data, options); this.defineField('title'); @@ -558,7 +558,7 @@ test('method `isChanged` returns `true` if at least one field has been changed', this.commit(); } } - class User extends Document { + class User extends Model { constructor (data, options) { super(data, options); this.defineField('name'); @@ -596,14 +596,14 @@ test('method `isChanged` returns `true` if at least one field has been changed', }); test('method `isNested` returns `true` if nested fields exist', (t) => { - class Book extends Document { + class Book extends Model { constructor (data, options) { super(data, options); this.defineField('title'); this.populate(data); } } - class User extends Document { + class User extends Model { constructor (data, options) { super(data, options); this.defineField('name'); @@ -616,14 +616,14 @@ test('method `isNested` returns `true` if nested fields exist', (t) => { }); test('method `collectErrors` returns an array of field errors', (t) => { - class Book extends Document { + class Book extends Model { constructor (data, options) { super(data, options); this.defineField('title'); this.populate(data); } } - class User extends Document { + class User extends Model { constructor (data, options) { super(data, options); this.defineField('name'); @@ -647,14 +647,14 @@ test('method `collectErrors` returns an array of field errors', (t) => { }); test('method `applyErrors` sets fields errors', (t) => { - class Book extends Document { + class Book extends Model { constructor (data, options) { super(data, options); this.defineField('title'); this.populate(data); } } - class User extends Document { + class User extends Model { constructor (data, options) { super(data, options); this.defineField('name'); @@ -678,14 +678,14 @@ test('method `applyErrors` sets fields errors', (t) => { }); test('methods `isValid` and `hasErrors` tell if errors exist', async (t) => { - class Book extends Document { + class Book extends Model { constructor (data, options) { super(data, options); this.defineField('title'); this.populate(data); } } - class User extends Document { + class User extends Model { constructor (data, options) { super(data, options); this.defineField('name'); @@ -712,14 +712,14 @@ test('method `validate` validates fields and throws an error', async (t) => { validator: 'presence', message: 'foo' }]; - class Book extends Document { + class Book extends Model { constructor (data, options) { super(data, options); this.defineField('title', {validate}); this.populate(data); } } - class User extends Document { + class User extends Model { constructor (data, options) { super(data, options); this.defineField('name', {validate}); @@ -747,14 +747,14 @@ test('method `validate` validates fields and throws an error', async (t) => { }); test('method `defineValidator` defines a custom field validator', async (t) => { - let validator = function (v) { + let validator = function (v) { return this.value === 'cool' && v === 'cool'; }; let validate = [{ validator: 'coolness', message: 'foo' }]; - class Book extends Document { + class Book extends Model { constructor (data, options) { super(data, options); this.defineValidator('coolness', validator); @@ -762,7 +762,7 @@ test('method `defineValidator` defines a custom field validator', async (t) => { this.populate(data); } } - class User extends Document { + class User extends Model { constructor (data, options) { super(data, options); this.defineValidator('coolness', validator); @@ -788,7 +788,7 @@ test('method `failFast` configures validator to stop validating field on the fir {validator: 'presence', message: 'foo'}, {validator: 'presence', message: 'foo'} ]; - class Book extends Document { + class Book extends Model { constructor (data, options) { super(data, options); this.failFast(); @@ -796,7 +796,7 @@ test('method `failFast` configures validator to stop validating field on the fir this.populate(data); } } - class User extends Document { + class User extends Model { constructor (data, options) { super(data, options); this.failFast(); @@ -815,14 +815,14 @@ test('method `failFast` configures validator to stop validating field on the fir }); test('method `invalidate` clears fields errors', async (t) => { - class Book extends Document { + class Book extends Model { constructor (data, options) { super(data, options); this.defineField('title'); this.populate(data); } } - class User extends Document { + class User extends Model { constructor (data, options) { super(data, options); this.defineField('name'); @@ -847,7 +847,7 @@ test('method `invalidate` clears fields errors', async (t) => { }); test('method `clone` returns an exact copy of the original', (t) => { - class Book extends Document { + class Book extends Model { constructor (data, options) { super(data, options); this.defineField('title'); @@ -855,7 +855,7 @@ test('method `clone` returns an exact copy of the original', (t) => { this.commit(); } } - class User extends Document { + class User extends Model { constructor (data, options) { super(data, options); this.defineField('name'); @@ -880,3 +880,109 @@ test('method `clone` returns an exact copy of the original', (t) => { t.is(user.clone() !== user, true); t.is(user.equals(user), true); }); + +test('method `defineModel` creates a new class with `context` set to the root class', (t) => { + class User extends Model { + constructor () { + super(); + this.defineField('name'); + } + } + class Context extends Model { + constructor () { + super(); + this.defineModel(User); + } + } + let ctx = new Context(); + t.is(ctx.User.context, ctx); + let user = new ctx.User(); + t.is(user instanceof Model, true); + t.is(user.context, ctx); + t.is(ctx.User.context, ctx); + t.is(User.name, 'User'); // class name is preserved + t.is(user.constructor.name, 'User'); // class name is preserved +}); + +test('method `handle` handles field-related errors', async (t) => { + let handle = [{ + handler: 'block', + message: '%{foo}', + block: async () => true, + foo: 'foo' + }]; + class Book extends Model { + constructor (data, options) { + super(data, options); + this.defineField('title', {handle}); + this.populate(data); + } + } + class User extends Model { + constructor (data, options) { + super(data, options); + this.defineField('name', {handle}); + this.defineField('book0', {type: Book, handle}); + this.defineField('books0', {type: [Book], handle}); + this.defineField('book1', {type: Book}); + this.defineField('books1', {type: [Book]}); + this.populate(data); + } + } + let user = new User({ + book1: {}, + books1: [{}] + }); + let problem = new Error(); + let errors = [{handler: 'block', message: 'foo', code: 422}]; + t.throws(user.handle(problem, {quiet: false})); + await user.handle(problem); + t.deepEqual(user.collectErrors(), [ + {path: ['name'], errors}, + {path: ['book0'], errors}, + {path: ['books0'], errors}, + {path: ['book1', 'title'], errors}, + {path: ['books1', 0, 'title'], errors}, + ]); +}); + +test('method `defineHandler` defines a custom field handler', async (t) => { + let handler = function (e) { + return e.message === 'cool'; + }; + let handle = [{ + handler: 'coolness', + message: '%{foo}', + foo: 'foo' + }]; + class Book extends Model { + constructor (data, options) { + super(data, options); + this.defineHandler('coolness', handler); + this.defineField('title', {handle}); + this.populate(data); + } + } + class User extends Model { + constructor (data, options) { + super(data, options); + this.defineHandler('coolness', handler); + this.defineField('name', {handle}); + this.defineField('book', {type: Book}); + this.defineField('books', {type: [Book]}); + this.populate(data); + } + } + let user = new User({ + book: {}, + books: [{}] + }); + let problem = new Error('cool'); + let errors = [{handler: 'coolness', message: 'foo', code: 422}]; + await user.handle(problem); + t.deepEqual(user.collectErrors(), [ + {path: ['name'], errors}, + {path: ['book', 'title'], errors}, + {path: ['books', 0, 'title'], errors}, + ]); +}); From cbea945001a1c49cb5852f25532037851fa21b21 Mon Sep 17 00:00:00 2001 From: xpeper Date: Tue, 10 Jan 2017 23:25:39 +0100 Subject: [PATCH 145/219] yarn, renaming to rawmodel, package config --- README.md | 46 +++++++++++++++++++-------------------- _config.yml | 1 - example/dist/index.js | 9 ++++++++ example/dist/index.js.map | 2 +- package.json | 19 ++++++++-------- yarn.lock | 8 ++++++- 6 files changed, 48 insertions(+), 37 deletions(-) delete mode 100644 _config.yml diff --git a/README.md b/README.md index f047da9..4b57b08 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,25 @@ -![Build Status](https://travis-ci.org/xpepermint/contextablejs.svg?branch=master) [![NPM Version](https://badge.fury.io/js/contextable.svg)](https://badge.fury.io/js/contextable) [![Dependency Status](https://gemnasium.com/xpepermint/contextablejs.svg)](https://gemnasium.com/xpepermint/contextablejs) +![Build Status](https://travis-ci.org/xpepermint/rawmodeljs.svg?branch=master) [![NPM Version](https://badge.fury.io/js/rawmodel.svg)](https://badge.fury.io/js/rawmodel) [![Dependency Status](https://gemnasium.com/xpepermint/rawmodeljs.svg)](https://gemnasium.com/xpepermint/rawmodeljs) ``` -┌─────────────────────────────────────────────────────────────────┐ -│ │ -│ _ _ _ _ _ │ -│ ___ ___ _ __ | |_ _____ _| |_ __ _| |__ | | ___ (_)___ │ -│ / __/ _ \| '_ \| __/ _ \ \/ / __/ _` | '_ \| |/ _ \ | / __| │ -│ | (_| (_) | | | | || __/> <| || (_| | |_) | | __/_ | \__ \ │ -│ \___\___/|_| |_|\__\___/_/\_\\__\__,_|_.__/|_|\___(_)/ |___/ │ -│ |__/ │ -│ │ -└─────────────────────────────────────────────────────────────────┘ +┌────────────────────────────────────────────────────┐ +│ ____ __ __ _ _ │ +│ | _ \ __ ___ _| \/ | ___ __| | ___| | │ +│ | |_) / _` \ \ /\ / / |\/| |/ _ \ / _` |/ _ \ | │ +│ | _ < (_| |\ V V /| | | | (_) | (_| | __/ | │ +│ |_| \_\__,_| \_/\_/ |_| |_|\___/ \__,_|\___|_| │ +│ │ +└────────────────────────────────────────────────────┘ ``` -# contextable.js +# RawModel.js > Strongly-typed JavaScript object with support for validation and error handling. -This is a light weight open source package for the **server** and **browser** (using module bundler) written with [TypeScript](https://www.typescriptlang.org). It's actively maintained, well tested and ready for production environments. The source code is available on [GitHub](https://github.com/xpepermint/contextablejs) where you can also find our [issue tracker](https://github.com/xpepermint/contextablejs/issues). +This is a light weight open source package for the **server** and **browser** (using module bundler) written with [TypeScript](https://www.typescriptlang.org). It's actively maintained, well tested and ready for production environments. The source code is available on [GitHub](https://github.com/xpepermint/rawmodeljs) where you can also find our [issue tracker](https://github.com/xpepermint/rawmodeljs/issues). ## Introduction -Contextable.js provides a mechanism for creating strongly-typed data objects with built-in logic for unified data validation and error handling. It has a simple and intuitive API and tends to be a powerful, magic-free, minimalistic and unopinionated framework for writing application data layers where you have a full control. It could be a perfect fit when writing an [Express.js](http://expressjs.com/) action, [GraphQL](http://graphql.org/) resolver or similar and it's easily extendable. +RawModel provides a mechanism for creating strongly-typed data objects with built-in logic for unified data validation and error handling. It has a simple and intuitive API and tends to be a powerful, magic-free, minimalistic and unopinionated framework for writing application data layers where you have a full control. It could be a perfect fit when writing an [Express.js](http://expressjs.com/) action, [GraphQL](http://graphql.org/) resolver or similar and it's easily extendable. It provides two core classes: * `Model` represents strongly-typed data object with properties. @@ -36,7 +34,7 @@ Both classes can be used independently but most likely you will use only the `Mo Run the command below to install the package. ``` -npm install --save contextable +npm install --save rawmodel ``` This package uses promises thus you need to use [Promise polyfill](https://github.com/taylorhakes/promise-polyfill) when promises are not supported. @@ -46,7 +44,7 @@ This package uses promises thus you need to use [Promise polyfill](https://githu The code below shows a basic usage example. ```js -import {Model} from 'objectschema'; +import {Model} from 'rawmodel'; // defining a basic model class User extends Model { @@ -68,8 +66,8 @@ model.name; // => 'John Smith' Examples are also available inside the `./example` folder. You should also check the links below: -* [graphql-example](https://github.com/xpepermint/graphql-example): A GraphQL application example (intuitive rootValue resolvers using contextable.js) -* [vue-example](https://github.com/xpepermint/vue-example): Vue.js example application (server-side rendering, router, vuex store, forms validation with contextable.js) +* [graphql-example](https://github.com/xpepermint/graphql-example): A GraphQL application example (intuitive rootValue resolvers using rawmodel.js) +* [vue-example](https://github.com/xpepermint/vue-example): Vue.js example application (server-side rendering, router, vuex store, forms validation with rawmodel.js) ## Usage @@ -78,7 +76,7 @@ Examples are also available inside the `./example` folder. You should also check Model fields are defined using the `defineField` method. The code below is an example of a basic model class with a property `name` of type `Any`. ```js -import {Model} from 'objectschema'; +import {Model} from 'rawmodel'; class User extends Model { public name: string; // typescript property definition for field `name` @@ -113,7 +111,7 @@ Each model also represents a type. This way you can create complex nested struct > Make sure that you preserve the constructor's initial parameter structure on nested models. ```js -import {Model, ModelOptions} from 'contextable'; +import {Model, ModelOptions} from 'rawmodel'; class Book extends Model { public title: string; @@ -175,7 +173,7 @@ this.defineField('name', { ### Commits & Rollbacks -Contextable.js tracks changes for all fields and provides a mechanism for committing values and rollbacks. +RawModel tracks changes for all fields and provides a mechanism for committing values and rollbacks. The example below explains how to setup and use these features. @@ -224,7 +222,7 @@ The code above is only a quick example of what's possible. Please check the API ### Validation -Contextable.js provides a simple mechanism for validating fields. +RawModel provides a simple mechanism for validating fields. ```js class User extends Model { @@ -277,7 +275,7 @@ class User extends Model { ### Error Handling -Contextable.js provides a mechanism for handling field-related errors. The logic is aligned with validation thus validation and error handling can easily be managed in a unified way. This is great because we always deal with validation errors and can thus directly send these errors back to a user in unified format. +RawModel provides a mechanism for handling field-related errors. The logic is aligned with validation thus validation and error handling can easily be managed in a unified way. This is great because we always deal with validation errors and can thus directly send these errors back to a user in unified format. ```js class User extends Model { @@ -309,7 +307,7 @@ user.handle(error).then(() => { This mechanism is especially handful when saving data to a database. MongoDB could, for example, throw a uniqueness error (E11000) if we try to insert a value that already exists in the database. We can catch that error by using the `handle()` and then return a unified validation error message to a user. -Contextable.js already includes some useful built-in handlers but it's super simple to define your own handler. Note that each handler function shares the context of a field instance thus you have access to all the features of the `Field` class. +RawModel already includes some useful built-in handlers but it's super simple to define your own handler. Note that each handler function shares the context of a field instance thus you have access to all the features of the `Field` class. ```js class User extends Model { diff --git a/_config.yml b/_config.yml deleted file mode 100644 index c419263..0000000 --- a/_config.yml +++ /dev/null @@ -1 +0,0 @@ -theme: jekyll-theme-cayman \ No newline at end of file diff --git a/example/dist/index.js b/example/dist/index.js index 5f0797f..2a5a2ec 100644 --- a/example/dist/index.js +++ b/example/dist/index.js @@ -1,5 +1,8 @@ "use strict"; const __1 = require("../.."); +/* +* Book model +*/ class Book extends __1.Model { constructor(data, options) { super(data, options); @@ -16,6 +19,9 @@ class Book extends __1.Model { this.commit(); } } +/* +* User model +*/ class User extends __1.Model { constructor(data, options) { super(data, options); @@ -41,6 +47,9 @@ class User extends __1.Model { this.commit(); } } +/* +* Usage +*/ let user = new User({ name: 'John Smith', book: { diff --git a/example/dist/index.js.map b/example/dist/index.js.map index 5ce9700..436de13 100644 --- a/example/dist/index.js.map +++ b/example/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,6BAA4B;AAM5B,UAAW,SAAQ,SAAK;IAGtB,YAAoB,IAAK,EAAE,OAAQ;QACjC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAErB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YACxB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;CACF;AAMD,UAAW,SAAQ,SAAK;IAItB,YAAoB,IAAK,EAAE,OAAQ;QACjC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAErB,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;CACF;AAMD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;IAClB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE;QACJ,KAAK,EAAE,gBAAgB;KACxB;CACF,CAAC,CAAC;AAEH,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,IAAI,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,6BAA4B;AAE5B;;EAEE;AAEF,UAAW,SAAQ,SAAK;IAGtB,YAAoB,IAAK,EAAE,OAAQ;QACjC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAErB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YACxB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;CACF;AAED;;EAEE;AAEF,UAAW,SAAQ,SAAK;IAItB,YAAoB,IAAK,EAAE,OAAQ;QACjC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAErB,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;CACF;AAED;;EAEE;AAEF,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;IAClB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE;QACJ,KAAK,EAAE,gBAAgB;KACxB;CACF,CAAC,CAAC;AAEH,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,IAAI,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/package.json b/package.json index 3999254..99a4899 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "contextable", - "version": "4.0.0", + "name": "rawmodel", + "version": "1.0.0-rc1", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/index.js", "types": "./dist/index.d.ts", @@ -21,13 +21,16 @@ }, "repository": { "type": "git", - "url": "git+https://github.com/xpepermint/contextablejs.git" + "url": "git+https://github.com/xpepermint/rawmodeljs.git" }, "bugs": { - "url": "https://github.com/xpepermint/contextablejs/issues" + "url": "https://github.com/xpepermint/rawmodeljs/issues" }, - "homepage": "https://github.com/xpepermint/contextablejs#readme", + "homepage": "https://github.com/xpepermint/rawmodeljs#readme", "keywords": [ + "model", + "modeling", + "document", "object", "schema", "orm", @@ -36,10 +39,7 @@ "mapping", "context", "contextify", - "contextable", - "model", - "modeling", - "document", + "rawmodel", "class", "db", "database", @@ -55,7 +55,6 @@ "validation", "validator", "validating", - "form", "type", "cast", "casting", diff --git a/yarn.lock b/yarn.lock index 7454ee4..0ddc387 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1411,6 +1411,12 @@ graceful-fs@^4.1.2: version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" +handleable@^0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/handleable/-/handleable-0.19.0.tgz#de3e435aff5c6d1339951719c639afcb6eddd3eb" + dependencies: + lodash.merge "4.6.0" + har-validator@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" @@ -1764,7 +1770,7 @@ lodash.isequal@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.4.0.tgz#6295768e98e14dc15ce8d362ef6340db82852031" -lodash.merge@^4.6.0: +lodash.merge@4.6.0, lodash.merge@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" From b2708ac9d39be294973c19f75707d78440b473fe Mon Sep 17 00:00:00 2001 From: xpeper Date: Wed, 11 Jan 2017 00:15:12 +0100 Subject: [PATCH 146/219] release --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 99a4899..498b3a8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.0.0-rc1", + "version": "1.0.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/index.js", "types": "./dist/index.d.ts", From cbbf6ef68a6a9906afcdf36f855e37d51a2c4688 Mon Sep 17 00:00:00 2001 From: xpeper Date: Wed, 11 Jan 2017 09:55:34 +0100 Subject: [PATCH 147/219] readme, defineModel api fix --- README.md | 10 +++++----- dist/models.d.ts | 2 +- dist/models.js | 4 ++-- dist/models.js.map | 2 +- package.json | 2 +- src/models.ts | 7 +++++-- tests/models.js | 10 +++++++++- 7 files changed, 24 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 4b57b08..05236e9 100644 --- a/README.md +++ b/README.md @@ -332,7 +332,7 @@ class User extends Model { } ``` -### Managing Context & GraphQL +### Context & GraphQL Sometimes it's handy to create a `root` model and then make it accessible from `dependent models`. The root model in this case represents a `context` object. Because the dependent models have access to that context we say that these models are `context aware`. @@ -353,7 +353,7 @@ class App extends Model { // application context public constructor () { super(); - this.defineModel(User); // defining a context-aware model from `User` model + this.defineModel(null, User); // defining a context-aware model from `User` model } public hello () { // root @@ -400,9 +400,9 @@ graphql(schema, '{hello}', root).then((response) => { | context | Model | No | - | Root model instance representing application context. ```js -class Model extends Model { +class User extends Model { constructor (data, options) { - super(); // initializing the Model + super(null, options); // initializing the Model this.defineField('name', { type: 'String', // field type casting @@ -502,7 +502,7 @@ model.collectErrors(); // => {path: ['name'], errors: [{validator: 'absence', me | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ -| name | String | Yes | Model's name | Model name (pass `null` to use Model's name). +| name | String | No | Model's name | Model name (pass `null` to use Model's name). | Model | Model | Yes | - | Model class. **Model.prototype.defineType(name, converter)**: Void diff --git a/dist/models.d.ts b/dist/models.d.ts index 6ac19fe..a9ecb64 100644 --- a/dist/models.d.ts +++ b/dist/models.d.ts @@ -41,7 +41,7 @@ export declare abstract class Model { defineType(name: string, converter: (v?) => any): void; defineValidator(name: string, handler: (v?, r?: ValidatorRecipe) => boolean | Promise): void; defineHandler(name: string, handler: (e?, r?: HandlerRecipe) => boolean | Promise): void; - defineModel(Klass: typeof Model, name?: string): void; + defineModel(name: string, Klass: typeof Model): void; getField(...keys: any[]): Field; hasField(...keys: any[]): boolean; populate(data?: {}): this; diff --git a/dist/models.js b/dist/models.js index e65d59e..7d809e5 100644 --- a/dist/models.js +++ b/dist/models.js @@ -133,10 +133,10 @@ var Model = (function () { Model.prototype.defineHandler = function (name, handler) { this._handlers[name] = handler; }; - Model.prototype.defineModel = function (Klass, name) { + Model.prototype.defineModel = function (name, Klass) { if (!name) name = Klass.prototype.constructor.toString().split(' ')[1]; - this[name] = eval("class " + name + " extends Model {}"); + this[name] = eval("\n let Model = Klass;\n class " + name + " extends Model {}\n "); this[name].prototype.context = this; this[name].context = this; }; diff --git a/dist/models.js.map b/dist/models.js.map index 16a46b0..77a8222 100644 --- a/dist/models.js.map +++ b/dist/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAoE;AAGpE,mCAAwD;AACxD,iCAAkD;AAiClD;IAeE,eAAoB,IAAS,EAAE,OAA0B;QAArC,qBAAA,EAAA,SAAS;QAAE,wBAAA,EAAA,YAA0B;QAAzD,iBAiCC;QAhCC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;YACpC,KAAK,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI;YAC5C,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;YACrC,KAAK,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI;YAC9C,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;YAClC,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,aAAa,EAAE,EAApB,CAAoB;SAChC,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;YACrC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;YACpC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE;YACzC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE;YACvC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE;YACvC,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;IACL,CAAC;IAMS,6BAAa,GAAvB;QACE,IAAI,IAAI,GAAU,IAAI,CAAC;QACvB,GAAG,CAAC;YACF,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAChB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;YACrB,CAAC;YACD,IAAI,CAAC,CAAC;gBACJ,MAAM,CAAC,IAAI,CAAC;YACd,CAAC;QACH,CAAC,QAAQ,IAAI,EAAE;IACjB,CAAC;IAOS,4BAAY,GAAtB,UAAwB,MAAwB;QAAxB,uBAAA,EAAA,WAAwB;QACzC,IAAA,kBAAI,CAAW;QAEpB,MAAM,CAAC,IAAI,cAAK,CAAC,aAAK,CACpB,MAAM,EACN,EAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAC,CAClC,EAAE;YACD,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,QAAQ,EAAE,IAAI,CAAC,SAAS;SACzB,CAAC,CAAC;IACL,CAAC;IAMS,sCAAsB,GAAhC,UAAkC,OAA6B,EAAE,IAAU;QAAzC,wBAAA,EAAA,6BAA6B;QAAE,qBAAA,EAAA,UAAU;QACzE,IAAI,KAAK,GAAe,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QAElB,MAAM,CAAC,KAAK,CAAC;IACf,CAAC;IAOS,4BAAY,GAAtB,UAAwB,IAAS,EAAE,OAA0B;QAArC,qBAAA,EAAA,SAAS;QAAE,wBAAA,EAAA,YAA0B;QAC3D,MAAM,CAAC,IAAK,IAAI,CAAC,WAAmB,CAAC,IAAI,EAAE;YACzC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;IACL,CAAC;IAMM,wBAAQ,GAAf,UAAiB,IAAoB;QAApB,qBAAA,EAAA,WAAoB;QACnC,IAAI,CAAC,SAAS,GAAG,oBAAS,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAMM,2BAAW,GAAlB,UAAoB,IAAY,EAAE,MAAoB;QACpD,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAEtC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE;YAChC,GAAG,EAAE,cAAM,OAAA,KAAK,CAAC,KAAK,EAAX,CAAW;YACtB,GAAG,EAAE,UAAC,CAAC,IAAK,OAAA,KAAK,CAAC,KAAK,GAAG,CAAC,EAAf,CAAe;YAC3B,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IAC7B,CAAC;IAMM,0BAAU,GAAjB,UAAmB,IAAY,EAAE,SAAsB;QACrD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IAChC,CAAC;IAMM,+BAAe,GAAtB,UAAwB,IAAY,EAAE,OAAgE;QACpG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACnC,CAAC;IAMM,6BAAa,GAApB,UAAsB,IAAY,EAAE,OAA8D;QAChG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACjC,CAAC;IAMM,2BAAW,GAAlB,UAAoB,IAAY,EAAE,KAAmB;QACnD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,6CAER,IAAI,4BACb,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;IAC5B,CAAC;IAMM,wBAAQ,GAAf;QAAiB,cAAO;aAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;YAAP,yBAAO;;QACtB,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAEpD,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAZ,CAAY,EAAE,IAAI,CAAC,CAAC;QACtD,MAAM,CAAC,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IACtE,CAAC;IAMM,wBAAQ,GAAf;QAAiB,cAAO;aAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;YAAP,yBAAO;;QACtB,MAAM,CAAC,CAAC,sBAAW,CAAC,IAAI,CAAC,QAAQ,OAAb,IAAI,EAAa,IAAI,EAAE,CAAC;IAC9C,CAAC;IAMM,wBAAQ,GAAf,UAAiB,IAAS;QAA1B,iBAQC;QARgB,qBAAA,EAAA,SAAS;QACxB,IAAI,GAAG,iBAAS,CAAC,IAAI,CAAC,CAAC;QAEvB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;aACd,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAjB,CAAiB,CAAC;aAChC,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAvB,CAAuB,CAAC,CAAC;QAE9C,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,yBAAS,GAAhB;QACE,MAAM,CAAC,iBAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAMM,uBAAO,GAAd,UAAgB,MAAqB;QAArC,iBA6BC;QA7Be,uBAAA,EAAA,WAAqB;QACnC,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAC,IAAI;YACrC,IAAI,KAAK,GAAG,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YACtB,IAAI,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAExB,MAAM,CAAC,IAAI,CAAC,EAAC,IAAI,MAAA,EAAE,KAAK,OAAA,EAAC,CAAC,CAAC;YAE3B,EAAE,CAAC,CAAC,oBAAS,CAAC,KAAK,CAAC,IAAI,oBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACxC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC;oBACpC,MAAM,GAAG,MAAM,CAAC,MAAM,CACpB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CACpB,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC,CAAC,kBAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC;oBAC7D,MAAM,GAAG,MAAM,CAAC,MAAM,CACpB,KAAK;yBACF,GAAG,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAxC,CAAwC,CAAC;yBACvD,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,kBAAO,CAAC,CAAC,CAAC,EAAV,CAAU,CAAC;yBACzB,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAX,CAAW,CAAC,CACjC,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC;IAChB,CAAC;IAMM,uBAAO,GAAd,UAAgB,OAAiC;QAC/C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAMM,sBAAM,GAAb,UAAe,OAAkC;QAC/C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAC5C,CAAC;IAOM,sBAAM,GAAb,UAAe,IAAkC;QAC/C,IAAI,IAAI,GAAG,iBAAS,CAAC,IAAI,CAAC,CAAC;QAE3B,IAAI,CAAC,OAAO,EAAE;aACX,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAA7B,CAA6B,CAAC;aAC7C,MAAM,CAAC,UAAC,KAAK,IAAK,OAAA,CAAC,IAAI,CAAC,KAAK,CAAC,EAAZ,CAAY,CAAC;aAC/B,OAAO,CAAC,UAAC,KAAK;YACb,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,EAAJ,CAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEL,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,qBAAK,GAAL;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAA1B,CAA0B,CAAC,CAAC;QAEjD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,oBAAI,GAAJ;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAzB,CAAyB,CAAC,CAAC;QAEhD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,qBAAK,GAAL;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAA1B,CAA0B,CAAC,CAAC;QAEjD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,sBAAM,GAAN;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAA3B,CAA2B,CAAC,CAAC;QAElD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,wBAAQ,GAAR;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAA7B,CAA6B,CAAC,CAAC;QAEpD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAOD,sBAAM,GAAN,UAAQ,KAAU;QAChB,MAAM,CAAC,eAAO,CACZ,iBAAS,CAAC,IAAI,CAAC,EACf,iBAAS,CAAC,KAAK,CAAC,CACjB,CAAC;IACJ,CAAC;IAMD,yBAAS,GAAT;QAAA,iBAGC;QAFC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7B,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAA9B,CAA8B,CAAC,CAAC;IACpD,CAAC;IAMD,wBAAQ,GAAR;QAAA,iBAGC;QAFC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7B,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAA7B,CAA6B,CAAC,CAAC;IACnD,CAAC;IAMK,wBAAQ,GAAd,UAAgB,EAIV;YAHJ,oCAAa,EAAb,kCAAa;;gBAIT,MAAM;;;;iCAAG,IAAI,CAAC,OAAO;wBAEzB,MAAM,eAAA,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;iCAChB,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAApB,CAAoB,CAAC,CACpC,EAAA;;wBAHD,UAGE;wBAEF,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;4BAC/B,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;wBACtC,CAAC;wBACD,MAAM,gBAAC,IAAI,EAAC;;;;KACb;IAMK,sBAAM,GAAZ,UAAc,KAAU,EAAE,EAIpB;YAHJ,oCAAY,EAAZ,iCAAY;;gBAMR,MAAM;;;;wBAFV,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;4BAAC,MAAM,gBAAC,IAAI,EAAC;iCAEX,IAAI,CAAC,OAAO;wBACzB,MAAM,eAAA,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;iCAChB,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC,CACvC,EAAA;;wBAHD,UAGE;wBAEF,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;4BAC/B,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;wBACtC,CAAC;wBACD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;4BAC3B,MAAM,KAAK,CAAC;wBACd,CAAC;wBACD,MAAM,gBAAC,IAAI,EAAC;;;;KACb;IAMD,6BAAa,GAAb;QACE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;aAClB,GAAG,CAAC,UAAC,EAAa;gBAAZ,cAAI,EAAE,gBAAK;YAAM,OAAA,CAAC,EAAC,IAAI,MAAA,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAmB,CAAA;QAA/C,CAA+C,CAAC;aACvE,MAAM,CAAC,UAAC,EAAc;gBAAb,cAAI,EAAE,kBAAM;YAAM,OAAA,MAAM,CAAC,MAAM,GAAG,CAAC;QAAjB,CAAiB,CAAC,CAAC;IACnD,CAAC;IAMD,2BAAW,GAAX,UAAa,MAA4B;QAAzC,iBASC;QATY,uBAAA,EAAA,WAA4B;QACvC,MAAM,CAAC,OAAO,CAAC,UAAC,KAAK;YACnB,IAAI,KAAK,GAAG,KAAI,CAAC,QAAQ,OAAb,KAAI,EAAa,KAAK,CAAC,IAAI,CAAC,CAAC;YACzC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gBACV,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,yBAAS,GAAT;QAAA,iBAGC;QAFC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7B,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAA9B,CAA8B,CAAC,CAAC;IACpD,CAAC;IAMD,uBAAO,GAAP;QACE,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC;IAMD,0BAAU,GAAV;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAA/B,CAA+B,CAAC,CAAC;QAEtD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,qBAAK,GAAL;QACE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;IACL,CAAC;IAEH,YAAC;AAAD,CAAC,AAteD,IAseC;AAteqB,sBAAK"} \ No newline at end of file diff --git a/package.json b/package.json index 498b3a8..523b106 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.0.0", + "version": "1.1.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/src/models.ts b/src/models.ts index 2e9dd9f..2bc694d 100644 --- a/src/models.ts +++ b/src/models.ts @@ -196,10 +196,13 @@ export abstract class Model { * Defines a new model property. */ - public defineModel (Klass: typeof Model, name?: string): void { + public defineModel (name: string, Klass: typeof Model): void { if (!name) name = Klass.prototype.constructor.toString().split(' ')[1]; - this[name] = eval(`class ${name} extends Model {}`); + this[name] = eval(` + let Model = Klass; + class ${name} extends Model {} + `); this[name].prototype.context = this; this[name].context = this; } diff --git a/tests/models.js b/tests/models.js index 71d40fc..56bf1ae 100644 --- a/tests/models.js +++ b/tests/models.js @@ -887,11 +887,17 @@ test('method `defineModel` creates a new class with `context` set to the root cl super(); this.defineField('name'); } + static foo () { + return 'foo'; + } + bar () { + return 'bar'; + } } class Context extends Model { constructor () { super(); - this.defineModel(User); + this.defineModel(null, User); } } let ctx = new Context(); @@ -899,9 +905,11 @@ test('method `defineModel` creates a new class with `context` set to the root cl let user = new ctx.User(); t.is(user instanceof Model, true); t.is(user.context, ctx); + t.is(user.bar(), 'bar'); t.is(ctx.User.context, ctx); t.is(User.name, 'User'); // class name is preserved t.is(user.constructor.name, 'User'); // class name is preserved + t.is(User.foo(), 'foo'); }); test('method `handle` handles field-related errors', async (t) => { From 36f860dc430b08fab7938932dc06899749611f17 Mon Sep 17 00:00:00 2001 From: xpeper Date: Wed, 11 Jan 2017 10:22:51 +0100 Subject: [PATCH 148/219] method handle now ignores validation errors --- dist/models.js | 2 ++ dist/models.js.map | 2 +- package.json | 2 +- src/models.ts | 3 ++- tests/models.js | 9 ++++++--- 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/dist/models.js b/dist/models.js index 7d809e5..50eb938 100644 --- a/dist/models.js +++ b/dist/models.js @@ -286,6 +286,8 @@ var Model = (function () { case 0: if (!error) return [2 /*return*/, this]; + if (error.code === 422) + return [2 /*return*/, this]; fields = this._fields; return [4 /*yield*/, Promise.all(Object.keys(fields) .map(function (n) { return fields[n].handle(error); }))]; diff --git a/dist/models.js.map b/dist/models.js.map index 77a8222..9533051 100644 --- a/dist/models.js.map +++ b/dist/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 523b106..7d9ca26 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.1.0", + "version": "1.2.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/src/models.ts b/src/models.ts index 2bc694d..50ee087 100644 --- a/src/models.ts +++ b/src/models.ts @@ -440,7 +440,8 @@ export abstract class Model { }: { quiet?: boolean } = {}): Promise { - if (!error) return this; + if (!error) return this; // blank values are valid + if (error.code === 422) return this; // validation errors are ignored let fields = this._fields; await Promise.all( diff --git a/tests/models.js b/tests/models.js index 56bf1ae..bde88b6 100644 --- a/tests/models.js +++ b/tests/models.js @@ -941,10 +941,13 @@ test('method `handle` handles field-related errors', async (t) => { book1: {}, books1: [{}] }); - let problem = new Error(); + let problem0 = new Error(); + let problem1 = new Error(); problem1.code = 422; let errors = [{handler: 'block', message: 'foo', code: 422}]; - t.throws(user.handle(problem, {quiet: false})); - await user.handle(problem); + t.throws(user.handle(problem0, {quiet: false})); + t.notThrows(user.handle(problem0)); + t.notThrows(user.handle(problem1, {quiet: false})); + await user.handle(problem0); t.deepEqual(user.collectErrors(), [ {path: ['name'], errors}, {path: ['book0'], errors}, From ee73a313f97266ea529f7cf0f794693220944253 Mon Sep 17 00:00:00 2001 From: xpeper Date: Wed, 11 Jan 2017 11:17:17 +0100 Subject: [PATCH 149/219] readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 05236e9..b5cc8f4 100644 --- a/README.md +++ b/README.md @@ -612,6 +612,7 @@ catch (e) { **Model.prototype.options**: Object > Model options. + **Model.prototype.parent**: Model > Parent model instance. From 9f5bf0a56632d9f64521015ed6fb317b14d47275 Mon Sep 17 00:00:00 2001 From: xpeper Date: Fri, 13 Jan 2017 01:08:27 +0100 Subject: [PATCH 150/219] removing context-aware models, code linting --- README.md | 55 +++++------------------- dist/fields.js | 3 +- dist/fields.js.map | 2 +- dist/models.d.ts | 4 -- dist/models.js | 17 +------- dist/models.js.map | 2 +- package.json | 8 ++-- src/fields.ts | 3 +- src/models.ts | 28 +------------ tests/models.js | 31 -------------- tslint.json | 101 +++++++++++++++++++++++++++++++++++++++++++++ 11 files changed, 125 insertions(+), 129 deletions(-) create mode 100644 tslint.json diff --git a/README.md b/README.md index b5cc8f4..5ac9b78 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,10 @@ This is a light weight open source package for the **server** and **browser** (using module bundler) written with [TypeScript](https://www.typescriptlang.org). It's actively maintained, well tested and ready for production environments. The source code is available on [GitHub](https://github.com/xpepermint/rawmodeljs) where you can also find our [issue tracker](https://github.com/xpepermint/rawmodeljs/issues). +## Related Projects + +* [vue-rawmodel](https://github.com/xpepermint/vue-rawmodel): RawModel.js plugin for Vue.js v2. Form validation has never been easier! + ## Introduction RawModel provides a mechanism for creating strongly-typed data objects with built-in logic for unified data validation and error handling. It has a simple and intuitive API and tends to be a powerful, magic-free, minimalistic and unopinionated framework for writing application data layers where you have a full control. It could be a perfect fit when writing an [Express.js](http://expressjs.com/) action, [GraphQL](http://graphql.org/) resolver or similar and it's easily extendable. @@ -332,47 +336,20 @@ class User extends Model { } ``` -### Context & GraphQL +### GraphQL -Sometimes it's handy to create a `root` model and then make it accessible from `dependent models`. The root model in this case represents a `context` object. Because the dependent models have access to that context we say that these models are `context aware`. - -Usually you will use this technic for your main application class as shown in the example below. +RawModel.js can be a perfect framework for writing GraphQL resolvers. An instance of a root model, in our case the `App` class, can represent GraphQL's `rootValue`. ```js -class User extends Model { // user model - public name: string; - - public constructor () { - super(); - this.defineField('name'); - } -} - -class App extends Model { // application context - public name: string; - - public constructor () { - super(); - this.defineModel(null, User); // defining a context-aware model from `User` model - } +import {Model, ModelOptions} from 'rawmodel'; +import {graphql, buildSchema} from 'graphql'; - public hello () { // root +class App extends Model { // root resolver + public hello () { // `hello` field resolver return 'Hello World!'; } } -let app = new App(); -app.User.context; // accessing App instance -let user = new app.User(); -user.context; // accessing App instance -user.context.echo(); // -> "Hello World!" -``` - -This feature is especially useful when writing GraphQL resolvers. An instance of a root model, in our case the `App` class, can represent GraphQL's `rootValue`. - -```js -const {graphql, buildSchema} = require('graphql'); - const schema = buildSchema(` type Query { hello: String @@ -390,14 +367,13 @@ graphql(schema, '{hello}', root).then((response) => { ### Model Class -**Model({parent, context})** +**Model({parent})** > Abstract class which represents a strongly-typed JavaScript object. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ | parent | Model | No | - | Parent model instance. -| context | Model | No | - | Root model instance representing application context. ```js class User extends Model { @@ -496,15 +472,6 @@ model.collectErrors(); // => {path: ['name'], errors: [{validator: 'absence', me | fakeValue | Any | No | - | Field fake value. | validate | Array | No | - | List of validation recipies (check [validatable.js](https://github.com/xpepermint/validatablejs) for more). -**Model.prototype.defineModel(name, Model)**: Void - -> Defines a a new context-aware model. - -| Option | Type | Required | Default | Description -|--------|------|----------|---------|------------ -| name | String | No | Model's name | Model name (pass `null` to use Model's name). -| Model | Model | Yes | - | Model class. - **Model.prototype.defineType(name, converter)**: Void > Defines a custom data type. diff --git a/dist/fields.js b/dist/fields.js index c222ad0..a68f425 100644 --- a/dist/fields.js +++ b/dist/fields.js @@ -128,8 +128,7 @@ var Field = (function () { if (this.isNested()) { var Klass_1 = typeable_1.isArray(type) ? type[0] : type; var toModel = function (d) { return new Klass_1(d, { - parent: _this.owner, - context: _this.owner.context + parent: _this.owner }); }; converter = typeable_1.isArray(type) ? [toModel] : toModel; } diff --git a/dist/fields.js.map b/dist/fields.js.map index 79fc7a0..b6bd372 100644 --- a/dist/fields.js.map +++ b/dist/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAA6F;AAC7F,iCAA2C;AAC3C,2CAAuD;AACvD,yCAAkD;AAClD,mCAA+B;AA0C/B;IAmBE,eAAoB,MAAoB,EAAE,OAAsB;QAAhE,iBAmDC;QAlDC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAEjB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;YACrC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;SACnC,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE;YACtC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;SACpC,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;YACnC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE;YAC9B,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE;YAC1C,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE;YAC9B,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE;YACxC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE;SAC/B,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE;YACtC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE;SAC7B,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;YACnC,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,SAAS,EAAE,EAAhB,CAAgB;YAC3B,GAAG,EAAE,UAAC,CAAC,IAAK,OAAA,KAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAjB,CAAiB;YAC7B,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE;YAC1C,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,gBAAgB,EAAE,EAAvB,CAAuB;YAClC,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE;YACvC,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,aAAa,EAAE,EAApB,CAAoB;YAC/B,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE;YAC1C,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,YAAY,EAAjB,CAAiB;YAC5B,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;YAClC,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,EAAzB,CAAyB;YACpC,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;YACnC,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,EAA3B,CAA2B;YACtC,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;IAMS,gCAAgB,GAA1B;QACM,IAAA,kBAAsC,EAArC,0BAAU,EAAE,sBAAQ,CAAkB;QAC3C,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,MAAM,CAAC,IAAI,uBAAS,CAAC,EAAC,UAAU,YAAA,EAAE,QAAQ,UAAA,EAAE,OAAO,SAAA,EAAC,CAAC,CAAC;IACxD,CAAC;IAMS,8BAAc,GAAxB;QACM,IAAA,kBAAoC,EAAnC,sBAAQ,EAAE,sBAAQ,CAAkB;QACzC,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,MAAM,CAAC,IAAI,oBAAO,CAAC,EAAC,QAAQ,UAAA,EAAE,QAAQ,UAAA,EAAE,OAAO,SAAA,EAAC,CAAC,CAAC;IACpD,CAAC;IAMS,yBAAS,GAAnB;QACE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QAEjB,IAAA,sBAAG,CAAiB;QACzB,EAAE,CAAC,CAAC,qBAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMS,yBAAS,GAAnB,UAAqB,IAAI;QACvB,EAAE,CAAC,CAAC,qBAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAEI,IAAA,sBAAG,CAAiB;QACzB,EAAE,CAAC,CAAC,qBAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEnC,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAMS,qBAAK,GAAf,UAAiB,IAAI,EAAE,IAAI;QAA3B,iBAgBC;QAfC,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,EAAE,CAAC,CAAC,CAAC,kBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC;QACd,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACpB,IAAI,OAAK,GAAG,kBAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC3C,IAAI,OAAO,GAAG,UAAC,CAAC,IAAK,OAAA,IAAI,OAAK,CAAC,CAAC,EAAE;gBAChC,MAAM,EAAE,KAAI,CAAC,KAAK;aACnB,CAAC,EAFmB,CAEnB,CAAC;YACH,SAAS,GAAG,kBAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;QAClD,CAAC;QAED,MAAM,CAAC,eAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC/B,CAAC;IAMS,gCAAgB,GAA1B;QACE,IAAI,IAAI,GAAG,IAAI,CAAC;QAEX,IAAA,wCAAY,CAAiB;QAClC,EAAE,CAAC,CAAC,qBAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,GAAG,YAAY,CAAC;QACtB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMS,6BAAa,GAAvB;QACE,IAAI,IAAI,GAAG,IAAI,CAAC;QAEX,IAAA,kCAAS,CAAiB;QAC/B,EAAE,CAAC,CAAC,qBAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,GAAG,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,qBAAK,GAAZ;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAErC,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,oBAAI,GAAX;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC9B,CAAC;QAED,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;aACxB,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,YAAY,cAAK,EAApB,CAAoB,CAAC;aACrC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,IAAI,EAAE,EAAV,CAAU,CAAC,CAAC;QAE5B,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,qBAAK,GAAZ;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,sBAAM,GAAb;QACE,EAAE,CAAC,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACxB,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC;iBAChB,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,IAAI,CAAC,CAAC,MAAM,EAAb,CAAa,CAAC;iBAC5B,OAAO,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,EAAE,EAAV,CAAU,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,iBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE1C,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,wBAAQ,GAAf;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAE/B,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,sBAAM,GAAb,UAAe,IAAI;QACjB,IAAI,KAAK,GAAG,IAAI,YAAY,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAEtD,MAAM,CAAC,eAAO,CACZ,iBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EACrB,iBAAS,CAAC,KAAK,CAAC,CACjB,CAAC;IACJ,CAAC;IAMM,yBAAS,GAAhB;QACE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAMM,wBAAQ,GAAf;QACE,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,EAAE,CAAC,CAAC,kBAAO,CAAC,IAAI,CAAC,CAAC;YAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAElC,MAAM,CAAC,CACL,oBAAS,CAAC,IAAI,CAAC;eACZ,oBAAS,CAAC,IAAI,CAAC,SAAS,CAAC;eACzB,CACD,IAAI,CAAC,SAAS,YAAY,cAAK;mBAC5B,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,cAAK,CACxC,CACF,CAAC;IACJ,CAAC;IASY,wBAAQ,GAArB;;;;;4BACE,MAAM,eAAA,OAAO,CAAC,GAAG,CACf,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;6BACxB,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,YAAY,cAAK,EAApB,CAAoB,CAAC;6BACrC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,EAA3B,CAA2B,CAAC,CAC7C,EAAA;;wBAJD,UAIE;wBAEF,KAAA,IAAI,CAAA;wBAAU,MAAM,eAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAC1C,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,OAAO,CAAC,QAAQ,CACtB,EAAA;;wBAHD,GAAK,MAAM,YAGV,CAAC;wBAEF,MAAM,gBAAC,IAAI,EAAC;;;;KACb;IASY,sBAAM,GAAnB,UAAqB,KAAU;;;;;4BAC7B,MAAM,eAAA,OAAO,CAAC,GAAG,CACf,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;6BACxB,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,YAAY,cAAK,EAApB,CAAoB,CAAC;6BACrC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAjB,CAAiB,CAAC,CACnC,EAAA;;wBAJD,UAIE;wBAEF,KAAA,IAAI,CAAA;wBAAU,MAAM,eAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CACtC,KAAK,EACL,IAAI,CAAC,OAAO,CAAC,MAAM,CACpB,EAAA;;wBAHD,GAAK,MAAM,YAGV,CAAC;wBAEF,MAAM,gBAAC,IAAI,EAAC;;;;KACb;IAMM,0BAAU,GAAjB;QACE,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;aACxB,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,YAAY,cAAK,EAApB,CAAoB,CAAC;aACrC,OAAO,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,UAAU,EAAE,EAAhB,CAAgB,CAAC,CAAC;QAEtC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAEjB,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,yBAAS,GAAhB;QACE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,CAAC;YACJ,MAAM,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC;iBACvB,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,EAAH,CAAG,CAAC;iBAClB,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,SAAS,EAAE,EAAb,CAAa,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAMM,uBAAO,GAAd;QACE,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC;IAEH,YAAC;AAAD,CAAC,AAvXD,IAuXC;AAvXY,sBAAK"} \ No newline at end of file diff --git a/dist/models.d.ts b/dist/models.d.ts index a9ecb64..225aa23 100644 --- a/dist/models.d.ts +++ b/dist/models.d.ts @@ -11,7 +11,6 @@ export interface FieldErrorRef extends Error { } export interface ModelOptions { parent?: Model; - context?: Model; } export declare abstract class Model { protected _fields: { @@ -29,8 +28,6 @@ export declare abstract class Model { protected _failFast: boolean; readonly root: Model; parent: Model; - context: Model; - static context: Model; constructor(data?: {}, options?: ModelOptions); protected _getRootModel(): Model; protected _createField(recipe?: FieldRecipe): Field; @@ -41,7 +38,6 @@ export declare abstract class Model { defineType(name: string, converter: (v?) => any): void; defineValidator(name: string, handler: (v?, r?: ValidatorRecipe) => boolean | Promise): void; defineHandler(name: string, handler: (e?, r?: HandlerRecipe) => boolean | Promise): void; - defineModel(name: string, Klass: typeof Model): void; getField(...keys: any[]): Field; hasField(...keys: any[]): boolean; populate(data?: {}): this; diff --git a/dist/models.js b/dist/models.js index 50eb938..31497f3 100644 --- a/dist/models.js +++ b/dist/models.js @@ -46,10 +46,6 @@ var Model = (function () { value: options.parent || this.parent || null, writable: true }); - Object.defineProperty(this, 'context', { - value: options.context || this.context || null, - writable: true - }); Object.defineProperty(this, 'root', { get: function () { return _this._getRootModel(); } }); @@ -106,8 +102,7 @@ var Model = (function () { if (data === void 0) { data = {}; } if (options === void 0) { options = {}; } return new this.constructor(data, { - parent: options.parent, - context: options.context + parent: options.parent }); }; Model.prototype.failFast = function (fail) { @@ -133,13 +128,6 @@ var Model = (function () { Model.prototype.defineHandler = function (name, handler) { this._handlers[name] = handler; }; - Model.prototype.defineModel = function (name, Klass) { - if (!name) - name = Klass.prototype.constructor.toString().split(' ')[1]; - this[name] = eval("\n let Model = Klass;\n class " + name + " extends Model {}\n "); - this[name].prototype.context = this; - this[name].context = this; - }; Model.prototype.getField = function () { var keys = []; for (var _i = 0; _i < arguments.length; _i++) { @@ -342,8 +330,7 @@ var Model = (function () { }; Model.prototype.clone = function () { return this._createModel(this, { - parent: this.parent, - context: this.context + parent: this.parent }); }; return Model; diff --git a/dist/models.js.map b/dist/models.js.map index 9533051..07d1af7 100644 --- a/dist/models.js.map +++ b/dist/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 7d9ca26..ed4aacf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.2.0", + "version": "1.3.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/index.js", "types": "./dist/index.d.ts", @@ -15,9 +15,10 @@ "scripts": { "clean": "rm -Rf ./dist", "build": "npm run clean; tsc", + "example": "tsc -p example/tsconfig.json && node example/dist", + "lint": "tslint 'src/**/*.ts?(x)'", "prepublish": "npm run build", - "test": "npm run build && ava", - "example": "tsc -p example/tsconfig.json && node example/dist" + "test": "npm run build && ava" }, "repository": { "type": "git", @@ -68,6 +69,7 @@ "license": "MIT", "devDependencies": { "ava": "^0.17.0", + "tslint": "4.3.1", "typescript": "^2.1.4" }, "dependencies": { diff --git a/src/fields.ts b/src/fields.ts index ae95a7c..4b6279f 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -188,8 +188,7 @@ export class Field { if (this.isNested()) { let Klass = isArray(type) ? type[0] : type; let toModel = (d) => new Klass(d, { - parent: this.owner, - context: this.owner.context + parent: this.owner }); converter = isArray(type) ? [toModel] : toModel; } diff --git a/src/models.ts b/src/models.ts index 50ee087..e61d542 100644 --- a/src/models.ts +++ b/src/models.ts @@ -28,7 +28,6 @@ export interface FieldErrorRef extends Error { export interface ModelOptions { parent?: Model; - context?: Model; } /* @@ -43,8 +42,6 @@ export abstract class Model { protected _failFast: boolean; // stop validating/handling on first error readonly root: Model; public parent: Model; - public context: Model; - public static context: Model; /* * Class constructor. @@ -55,10 +52,6 @@ export abstract class Model { value: options.parent || this.parent || null, writable: true }); - Object.defineProperty(this, 'context', { - value: options.context || this.context || null, - writable: true - }); Object.defineProperty(this, 'root', { get: () => this._getRootModel() }); @@ -138,8 +131,7 @@ export abstract class Model { protected _createModel (data = {}, options: ModelOptions = {}) { return new (this.constructor as any)(data, { - parent: options.parent, - context: options.context + parent: options.parent }); } @@ -192,21 +184,6 @@ export abstract class Model { this._handlers[name] = handler; } - /* - * Defines a new model property. - */ - - public defineModel (name: string, Klass: typeof Model): void { - if (!name) name = Klass.prototype.constructor.toString().split(' ')[1]; - - this[name] = eval(` - let Model = Klass; - class ${name} extends Model {} - `); - this[name].prototype.context = this; - this[name].context = this; - } - /* * Returns a value at path. */ @@ -517,8 +494,7 @@ export abstract class Model { clone (): this { return this._createModel(this, { - parent: this.parent, - context: this.context + parent: this.parent }); } diff --git a/tests/models.js b/tests/models.js index bde88b6..f125547 100644 --- a/tests/models.js +++ b/tests/models.js @@ -881,37 +881,6 @@ test('method `clone` returns an exact copy of the original', (t) => { t.is(user.equals(user), true); }); -test('method `defineModel` creates a new class with `context` set to the root class', (t) => { - class User extends Model { - constructor () { - super(); - this.defineField('name'); - } - static foo () { - return 'foo'; - } - bar () { - return 'bar'; - } - } - class Context extends Model { - constructor () { - super(); - this.defineModel(null, User); - } - } - let ctx = new Context(); - t.is(ctx.User.context, ctx); - let user = new ctx.User(); - t.is(user instanceof Model, true); - t.is(user.context, ctx); - t.is(user.bar(), 'bar'); - t.is(ctx.User.context, ctx); - t.is(User.name, 'User'); // class name is preserved - t.is(user.constructor.name, 'User'); // class name is preserved - t.is(User.foo(), 'foo'); -}); - test('method `handle` handles field-related errors', async (t) => { let handle = [{ handler: 'block', diff --git a/tslint.json b/tslint.json new file mode 100644 index 0000000..67a4e16 --- /dev/null +++ b/tslint.json @@ -0,0 +1,101 @@ +{ + "jsRules": { + "class-name": true, + "comment-format": [ + true, + "check-space" + ], + "indent": [ + true, + "spaces" + ], + "no-duplicate-variable": true, + "no-eval": true, + "no-trailing-whitespace": true, + "no-unsafe-finally": true, + "one-line": [ + true, + "check-open-brace", + "check-whitespace" + ], + "quotemark": [ + true, + "double" + ], + "semicolon": [ + true, + "always" + ], + "triple-equals": [ + true, + "allow-null-check" + ], + "variable-name": [ + true, + "ban-keywords" + ], + "whitespace": [ + true, + "check-branch", + "check-decl", + "check-operator", + "check-separator", + "check-type" + ] + }, + "rules": { + "class-name": true, + "comment-format": [ + true, + "check-space" + ], + "indent": [ + true, + "spaces" + ], + "no-eval": true, + "no-internal-module": true, + "no-trailing-whitespace": true, + "no-unsafe-finally": true, + "no-var-keyword": true, + "one-line": [ + true, + "check-open-brace", + "check-whitespace" + ], + "quotemark": [ + true, + "single" + ], + "semicolon": [ + true, + "always" + ], + "triple-equals": [ + true, + "allow-null-check" + ], + "typedef-whitespace": [ + true, + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + } + ], + "variable-name": [ + true, + "ban-keywords" + ], + "whitespace": [ + true, + "check-branch", + "check-decl", + "check-operator", + "check-separator", + "check-type" + ] + } +} From bde4f51d649cd1e54b017eca01fcbeecb882af42 Mon Sep 17 00:00:00 2001 From: xpeper Date: Fri, 13 Jan 2017 16:18:51 +0100 Subject: [PATCH 151/219] model constructor api (merging), tests to typescript --- README.md | 66 +- {example/dist => dist/example}/index.d.ts | 0 dist/example/index.js | 68 ++ dist/example/index.js.map | 1 + dist/fields.js.map | 1 - dist/index.js.map | 1 - dist/models.js.map | 1 - dist/{ => src}/fields.d.ts | 21 +- dist/{ => src}/fields.js | 15 +- dist/src/fields.js.map | 1 + dist/{ => src}/index.d.ts | 0 dist/{ => src}/index.js | 0 dist/src/index.js.map | 1 + dist/{ => src}/models.d.ts | 12 +- dist/{ => src}/models.js | 23 +- dist/src/models.js.map | 1 + dist/{ => src}/utils.d.ts | 0 dist/{ => src}/utils.js | 0 dist/src/utils.js.map | 1 + dist/tests/fields.d.ts | 0 dist/tests/fields.js | 236 ++++ dist/tests/fields.js.map | 1 + dist/tests/index.d.ts | 0 dist/tests/index.js | 8 + dist/tests/index.js.map | 1 + dist/tests/models.d.ts | 0 dist/tests/models.js | 1221 +++++++++++++++++++++ dist/tests/models.js.map | 1 + dist/utils.js.map | 1 - example/dist/index.js | 64 -- example/dist/index.js.map | 1 - example/{src => }/index.ts | 16 +- example/tsconfig.json | 10 - package.json | 17 +- src/fields.ts | 35 +- src/models.ts | 44 +- tests/{fields.js => fields.ts} | 38 +- tests/{index.js => index.ts} | 2 +- tests/{models.js => models.ts} | 258 +++-- tsconfig.json | 12 +- yarn.lock | 92 +- 41 files changed, 1906 insertions(+), 365 deletions(-) rename {example/dist => dist/example}/index.d.ts (100%) create mode 100644 dist/example/index.js create mode 100644 dist/example/index.js.map delete mode 100644 dist/fields.js.map delete mode 100644 dist/index.js.map delete mode 100644 dist/models.js.map rename dist/{ => src}/fields.d.ts (92%) rename dist/{ => src}/fields.js (95%) create mode 100644 dist/src/fields.js.map rename dist/{ => src}/index.d.ts (100%) rename dist/{ => src}/index.js (100%) create mode 100644 dist/src/index.js.map rename dist/{ => src}/models.d.ts (89%) rename dist/{ => src}/models.js (95%) create mode 100644 dist/src/models.js.map rename dist/{ => src}/utils.d.ts (100%) rename dist/{ => src}/utils.js (100%) create mode 100644 dist/src/utils.js.map create mode 100644 dist/tests/fields.d.ts create mode 100644 dist/tests/fields.js create mode 100644 dist/tests/fields.js.map create mode 100644 dist/tests/index.d.ts create mode 100644 dist/tests/index.js create mode 100644 dist/tests/index.js.map create mode 100644 dist/tests/models.d.ts create mode 100644 dist/tests/models.js create mode 100644 dist/tests/models.js.map delete mode 100644 dist/utils.js.map delete mode 100644 example/dist/index.js delete mode 100644 example/dist/index.js.map rename example/{src => }/index.ts (74%) delete mode 100644 example/tsconfig.json rename tests/{fields.js => fields.ts} (85%) rename tests/{index.js => index.ts} (77%) rename tests/{models.js => models.ts} (84%) diff --git a/README.md b/README.md index 5ac9b78..e9814ca 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ class User extends Model { public name: string; public constructor (data = {}) { - super(); + super(data); this.defineField('name'); this.populate(data); } @@ -85,8 +85,8 @@ import {Model} from 'rawmodel'; class User extends Model { public name: string; // typescript property definition for field `name` - public constructor () { - super(); + public constructor (data = {}) { + super(data); this.defineField('name'); // definition of the `name` field } } @@ -115,13 +115,13 @@ Each model also represents a type. This way you can create complex nested struct > Make sure that you preserve the constructor's initial parameter structure on nested models. ```js -import {Model, ModelOptions} from 'rawmodel'; +import {Model, ModelRecipe} from 'rawmodel'; class Book extends Model { public title: string; - public constructor (data?: any, options?: ModelOptions) { - super(data, options); + public constructor (data = {}) { + super(data); this.defineField('title'); this.populate(data); } @@ -130,8 +130,8 @@ class Book extends Model { class User extends Model { public book: Book; - public constructor (data?: any, options?: ModelOptions) { - super(data, options); + public constructor (data = {}) { + super(data); this.defineField('book', {type: Book}); this.populate(data); } @@ -185,8 +185,8 @@ The example below explains how to setup and use these features. class User extends Model { public name: string; - public constructor (data?: any) { - super(); + public constructor (data = {}) { + super(data); this.defineField('name'); this.populate(data); // populate model with initial values this.commit(); // restart change tracking @@ -232,8 +232,8 @@ RawModel provides a simple mechanism for validating fields. class User extends Model { public name: string; - public constructor () { - super(); + public constructor (data = {}) { + super(data); this.defineField('name', { validate: [ // field validation setup @@ -258,8 +258,10 @@ It already includes some useful built-in validators but it's super simple to def ```js class User extends Model { - constructor () { - super(); + public name: string; + + constructor (data = {}) { + super(data); this.defineValidator('coolness', function (v) { return v === 'cool'; @@ -285,8 +287,8 @@ RawModel provides a mechanism for handling field-related errors. The logic is al class User extends Model { public name: string; - public constructor () { - super(); + public constructor (data = {}) { + super(data); this.defineField('name', { handle: [ // field error handling setup @@ -317,8 +319,8 @@ RawModel already includes some useful built-in handlers but it's super simple to class User extends Model { public name: string; - public constructor () { - super(); + public constructor (data = {}) { + super(data); this.defineHandler('coolness', function (e) { return e.message === 'cool'; @@ -341,7 +343,7 @@ class User extends Model { RawModel.js can be a perfect framework for writing GraphQL resolvers. An instance of a root model, in our case the `App` class, can represent GraphQL's `rootValue`. ```js -import {Model, ModelOptions} from 'rawmodel'; +import {Model, ModelRecipe} from 'rawmodel'; import {graphql, buildSchema} from 'graphql'; class App extends Model { // root resolver @@ -377,8 +379,10 @@ graphql(schema, '{hello}', root).then((response) => { ```js class User extends Model { - constructor (data, options) { - super(null, options); // initializing the Model + public name: string; + + public constructor (data = {}) { + super(data); // initializing the Model this.defineField('name', { type: 'String', // field type casting @@ -536,7 +540,7 @@ user.flatten(); // -> [{path: [...], field: ...}, ...] | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ -| error | Error | Yes | - | Instance of an Error object. +| error | Any | Yes | - | Error to be handled. | quiet | Boolean | No | true | When set to `false`, a handled validation error is thrown. This doesn't affect the unhandled errors (they are always thrown). ```js @@ -635,7 +639,7 @@ catch (e) { ### Field Class -**Field({type, get, set, defaultValue, fakeValue, validate}, {owner, validators, failFast})** +**Field({type, get, set, defaultValue, fakeValue, validate, validators, handle, handlers, owner, failFast})** > A model field. @@ -647,8 +651,10 @@ catch (e) { | defaultValue | Any | No | - | Field default value. | fakeValue | Any | No | - | Field fake value. | validate | Array | No | - | List of validator recipes. +| handle | Array | No | - | List of error handler recipes. +| validators | Object | No | - | Custom validators. +| handlers | Object | No | - | Custom handlers. | owner | Model | No | - | An instance of a Model which owns the field. -| validators | Object | No | - | Custom validators | failFast | Boolean | No | false | Stops validation on the first error when set to `true`. **Field.prototype.clear()**: Field @@ -671,6 +677,10 @@ catch (e) { > Returns `true` when the provided `value` represents an object that looks the same. +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| value | Any | Yes | - | A value to compare to. + **Field.prototype.fake()**: Field > Sets field to a generated fake value. @@ -679,6 +689,14 @@ catch (e) { > A getter which returns a fake field value. +**Field.prototype.handle(error)**: Promise(Field) + +> Validates the `value` and populates the `errors` property with errors. + +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| error | Any | Yes | - | Error to be handled. + **Field.prototype.hasErrors()**: Boolean > Returns `true` when no errors exist (inverse of `isValid()`). Make sure that you call the `validate()` method first. diff --git a/example/dist/index.d.ts b/dist/example/index.d.ts similarity index 100% rename from example/dist/index.d.ts rename to dist/example/index.d.ts diff --git a/dist/example/index.js b/dist/example/index.js new file mode 100644 index 0000000..4b18276 --- /dev/null +++ b/dist/example/index.js @@ -0,0 +1,68 @@ +"use strict"; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var src_1 = require("../src"); +var Book = (function (_super) { + __extends(Book, _super); + function Book(data) { + if (data === void 0) { data = {}; } + var _this = _super.call(this, data) || this; + _this.defineField('title', { + type: 'String', + validate: [ + { + validator: 'presence', + message: 'must be present' + } + ] + }); + _this.populate(data); + _this.commit(); + return _this; + } + return Book; +}(src_1.Model)); +var User = (function (_super) { + __extends(User, _super); + function User(data) { + if (data === void 0) { data = {}; } + var _this = _super.call(this, data) || this; + _this.defineField('name', { + type: 'String', + validate: [ + { + validator: 'presence', + message: 'must be present' + } + ] + }); + _this.defineField('book', { + type: Book, + validate: [ + { + validator: 'presence', + message: 'must be present' + } + ] + }); + _this.populate(data); + _this.commit(); + return _this; + } + return User; +}(src_1.Model)); +var user = new User({ + name: 'John Smith', + book: { + title: 'True Detective' + } +}); +user.validate({ quiet: true }).then(function () { + process.stdout.write('user.name: ' + user.name + '\n'); + process.stdout.write('user.book.title:' + user.book.title + '\n'); + process.stdout.write('user.isValid():' + user.isValid() + '\n'); +}); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/example/index.js.map b/dist/example/index.js.map new file mode 100644 index 0000000..8811089 --- /dev/null +++ b/dist/example/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../example/index.ts"],"names":[],"mappings":";;;;;;AAAA,8BAA6B;AAM7B;IAAmB,wBAAK;IAGtB,cAAoB,IAAS;QAAT,qBAAA,EAAA,SAAS;QAA7B,YACE,kBAAM,IAAI,CAAC,SAcZ;QAZC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YACxB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QAEH,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;IAChB,CAAC;IACH,WAAC;AAAD,CAAC,AAnBD,CAAmB,WAAK,GAmBvB;AAMD;IAAmB,wBAAK;IAItB,cAAoB,IAAS;QAAT,qBAAA,EAAA,SAAS;QAA7B,YACE,kBAAM,IAAI,CAAC,SAuBZ;QArBC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QACH,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QAEH,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;IAChB,CAAC;IACH,WAAC;AAAD,CAAC,AA7BD,CAAmB,WAAK,GA6BvB;AAMD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;IAClB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE;QACJ,KAAK,EAAE,gBAAgB;KACxB;CACF,CAAC,CAAC;AAEH,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,IAAI,CAAC;IAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IACvD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAClE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/dist/fields.js.map b/dist/fields.js.map deleted file mode 100644 index b6bd372..0000000 --- a/dist/fields.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map deleted file mode 100644 index db7175f..0000000 --- a/dist/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,mCAA+B;AAOvB,+BAAK;AANb,mCAA+B;AAMhB,+BAAK"} \ No newline at end of file diff --git a/dist/models.js.map b/dist/models.js.map deleted file mode 100644 index 07d1af7..0000000 --- a/dist/models.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/fields.d.ts b/dist/src/fields.d.ts similarity index 92% rename from dist/fields.d.ts rename to dist/src/fields.d.ts index b1089eb..b110472 100644 --- a/dist/fields.d.ts +++ b/dist/src/fields.d.ts @@ -1,16 +1,6 @@ import { Validator, ValidatorRecipe } from 'validatable'; import { Handler, HandlerRecipe } from 'handleable'; import { Model } from './models'; -export interface FieldOptions { - owner?: Model; - validators?: { - [name: string]: (v?, r?: ValidatorRecipe) => boolean | Promise; - }; - handlers?: { - [name: string]: (v?, r?: HandlerRecipe) => boolean | Promise; - }; - failFast?: boolean; -} export interface FieldRecipe { type?: any; get?: (v: any) => any; @@ -19,6 +9,14 @@ export interface FieldRecipe { fakeValue?: any; validate?: ValidatorRecipe[]; handle?: HandlerRecipe[]; + validators?: { + [name: string]: (v?, r?: ValidatorRecipe) => boolean | Promise; + }; + handlers?: { + [name: string]: (v?, r?: HandlerRecipe) => boolean | Promise; + }; + owner?: Model; + failFast?: boolean; } export interface FieldError { message: string; @@ -32,7 +30,6 @@ export declare class Field { protected _validator: Validator; protected _handler: Handler; protected _recipe: FieldRecipe; - protected _options: FieldOptions; readonly defaultValue: any; readonly fakeValue: any; readonly initialValue: any; @@ -40,7 +37,7 @@ export declare class Field { readonly type: any; value: any; errors: FieldError[]; - constructor(recipe?: FieldRecipe, options?: FieldOptions); + constructor(recipe?: FieldRecipe); protected _createValidator(): Validator; protected _createHandler(): Handler; protected _getValue(): any; diff --git a/dist/fields.js b/dist/src/fields.js similarity index 95% rename from dist/fields.js rename to dist/src/fields.js index a68f425..e7314bd 100644 --- a/dist/fields.js +++ b/dist/src/fields.js @@ -40,15 +40,12 @@ var validatable_1 = require("validatable"); var handleable_1 = require("handleable"); var models_1 = require("./models"); var Field = (function () { - function Field(recipe, options) { + function Field(recipe) { var _this = this; this.errors = []; Object.defineProperty(this, '_recipe', { value: Object.freeze(recipe || {}) }); - Object.defineProperty(this, '_options', { - value: Object.freeze(options || {}) - }); Object.defineProperty(this, '_data', { value: this._getDefaultValue(), writable: true @@ -85,17 +82,17 @@ var Field = (function () { enumerable: true }); Object.defineProperty(this, 'owner', { - get: function () { return _this._options.owner || null; }, + get: function () { return _this._recipe.owner || null; }, enumerable: true }); } Field.prototype._createValidator = function () { - var _a = this._options, validators = _a.validators, failFast = _a.failFast; + var _a = this._recipe, validators = _a.validators, failFast = _a.failFast; var context = this; return new validatable_1.Validator({ validators: validators, failFast: failFast, context: context }); }; Field.prototype._createHandler = function () { - var _a = this._options, handlers = _a.handlers, failFast = _a.failFast; + var _a = this._recipe, handlers = _a.handlers, failFast = _a.failFast; var context = this; return new handleable_1.Handler({ handlers: handlers, failFast: failFast, context: context }); }; @@ -127,9 +124,7 @@ var Field = (function () { } if (this.isNested()) { var Klass_1 = typeable_1.isArray(type) ? type[0] : type; - var toModel = function (d) { return new Klass_1(d, { - parent: _this.owner - }); }; + var toModel = function (d) { return new Klass_1(utils_1.merge(d, { parent: _this.owner })); }; converter = typeable_1.isArray(type) ? [toModel] : toModel; } return typeable_1.cast(data, converter); diff --git a/dist/src/fields.js.map b/dist/src/fields.js.map new file mode 100644 index 0000000..c917247 --- /dev/null +++ b/dist/src/fields.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/index.d.ts b/dist/src/index.d.ts similarity index 100% rename from dist/index.d.ts rename to dist/src/index.d.ts diff --git a/dist/index.js b/dist/src/index.js similarity index 100% rename from dist/index.js rename to dist/src/index.js diff --git a/dist/src/index.js.map b/dist/src/index.js.map new file mode 100644 index 0000000..2ca4eb0 --- /dev/null +++ b/dist/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,mCAA+B;AAOvB,+BAAK;AANb,mCAA+B;AAMhB,+BAAK"} \ No newline at end of file diff --git a/dist/models.d.ts b/dist/src/models.d.ts similarity index 89% rename from dist/models.d.ts rename to dist/src/models.d.ts index 225aa23..163bd8c 100644 --- a/dist/models.d.ts +++ b/dist/src/models.d.ts @@ -2,14 +2,14 @@ import { ValidatorRecipe } from 'validatable'; import { HandlerRecipe } from 'handleable'; import { Field, FieldRecipe, FieldError } from './fields'; export interface FieldRef { - path: string[]; + path: (string | number)[]; field: Field; } -export interface FieldErrorRef extends Error { - path: string[]; +export interface FieldErrorRef { + path: (string | number)[]; errors: FieldError[]; } -export interface ModelOptions { +export interface ModelRecipe { parent?: Model; } export declare abstract class Model { @@ -28,11 +28,11 @@ export declare abstract class Model { protected _failFast: boolean; readonly root: Model; parent: Model; - constructor(data?: {}, options?: ModelOptions); + constructor(recipe?: ModelRecipe); protected _getRootModel(): Model; protected _createField(recipe?: FieldRecipe): Field; protected _createValidationError(message?: string, code?: number): FieldError; - protected _createModel(data?: {}, options?: ModelOptions): any; + protected _createModel(data?: {}, recipe?: ModelRecipe): any; failFast(fail?: boolean): void; defineField(name: string, recipe?: FieldRecipe): void; defineType(name: string, converter: (v?) => any): void; diff --git a/dist/models.js b/dist/src/models.js similarity index 95% rename from dist/models.js rename to dist/src/models.js index 31497f3..9280cbe 100644 --- a/dist/models.js +++ b/dist/src/models.js @@ -38,12 +38,11 @@ var typeable_1 = require("typeable"); var fields_1 = require("./fields"); var utils_1 = require("./utils"); var Model = (function () { - function Model(data, options) { - if (data === void 0) { data = {}; } - if (options === void 0) { options = {}; } + function Model(recipe) { + if (recipe === void 0) { recipe = {}; } var _this = this; Object.defineProperty(this, 'parent', { - value: options.parent || this.parent || null, + value: recipe.parent || this.parent || null, writable: true }); Object.defineProperty(this, 'root', { @@ -84,12 +83,13 @@ var Model = (function () { Model.prototype._createField = function (recipe) { if (recipe === void 0) { recipe = {}; } var type = recipe.type; - return new fields_1.Field(utils_1.merge(recipe, { type: this._types[type] || type }), { + return new fields_1.Field(utils_1.merge(recipe, { + type: this._types[type] || type, owner: this, validators: this._validators, handlers: this._handlers, failFast: this._failFast - }); + })); }; Model.prototype._createValidationError = function (message, code) { if (message === void 0) { message = 'Validation failed'; } @@ -98,12 +98,10 @@ var Model = (function () { error.code = code; return error; }; - Model.prototype._createModel = function (data, options) { + Model.prototype._createModel = function (data, recipe) { if (data === void 0) { data = {}; } - if (options === void 0) { options = {}; } - return new this.constructor(data, { - parent: options.parent - }); + if (recipe === void 0) { recipe = {}; } + return new this.constructor(utils_1.merge(data, recipe)); }; Model.prototype.failFast = function (fail) { if (fail === void 0) { fail = true; } @@ -151,10 +149,9 @@ var Model = (function () { Model.prototype.populate = function (data) { var _this = this; if (data === void 0) { data = {}; } - data = utils_1.serialize(data); Object.keys(data) .filter(function (n) { return !!_this._fields[n]; }) - .forEach(function (name) { return _this[name] = data[name]; }); + .forEach(function (name) { return _this[name] = utils_1.serialize(data[name]); }); return this; }; Model.prototype.serialize = function () { diff --git a/dist/src/models.js.map b/dist/src/models.js.map new file mode 100644 index 0000000..a3504ff --- /dev/null +++ b/dist/src/models.js.map @@ -0,0 +1 @@ +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/utils.d.ts b/dist/src/utils.d.ts similarity index 100% rename from dist/utils.d.ts rename to dist/src/utils.d.ts diff --git a/dist/utils.js b/dist/src/utils.js similarity index 100% rename from dist/utils.js rename to dist/src/utils.js diff --git a/dist/src/utils.js.map b/dist/src/utils.js.map new file mode 100644 index 0000000..70baf35 --- /dev/null +++ b/dist/src/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";AAAA,oCAAsC;AAO9B,sBAAK;AANb,wCAA0C;AAYlC,0BAAO;AAMf,mBAA2B,IAAI;IAC7B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC;AAFD,8BAEC"} \ No newline at end of file diff --git a/dist/tests/fields.d.ts b/dist/tests/fields.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/dist/tests/fields.js b/dist/tests/fields.js new file mode 100644 index 0000000..452373c --- /dev/null +++ b/dist/tests/fields.js @@ -0,0 +1,236 @@ +"use strict"; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments)).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t; + return { next: verb(0), "throw": verb(1), "return": verb(2) }; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [0, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var _this = this; +var ava_1 = require("ava"); +var src_1 = require("../src"); +ava_1["default"]('nullifies a value by default', function (t) { + var f = new src_1.Field(); + t.is(f.value, null); +}); +ava_1["default"]('provides getter and setter for the current value', function (t) { + var f = new src_1.Field(); + f.value = 'foo'; + t.is(f.value, 'foo'); +}); +ava_1["default"]('supports custom getter and setter for the current value', function (t) { + var f0 = new src_1.Field({ get: function (v) { return v + "-" + this.constructor.name; } }); + var f1 = new src_1.Field({ set: function (v) { return v + "-" + this.constructor.name; } }); + f0.value = 'foo'; + f1.value = 'foo'; + t.is(f0.value, 'foo-Field'); + t.is(f1.value, 'foo-Field'); +}); +ava_1["default"]('can automatically cast a value to a specific data type', function (t) { + var f0 = new src_1.Field({ type: ['String'] }); + var f1 = new src_1.Field({ type: function (v) { return v + "-foo"; } }); + f0.value = 100; + f1.value = 100; + t.deepEqual(f0.value, ['100']); + t.deepEqual(f1.value, '100-foo'); +}); +ava_1["default"]('can have a default value', function (t) { + var f0 = new src_1.Field({ defaultValue: 'foo' }); + var f1 = new src_1.Field({ defaultValue: function () { return this.constructor.name; } }); + var f2 = new src_1.Field({ defaultValue: function () { return Math.random(); } }); + t.is(f0.value, 'foo'); + t.is(f1.value, 'Field'); + t.is(f0.defaultValue, 'foo'); + t.is(f1.defaultValue, 'Field'); + t.is(f2.defaultValue !== f2.defaultValue, true); +}); +ava_1["default"]('can have a fake value', function (t) { + var f0 = new src_1.Field({ fakeValue: 'foo' }); + var f1 = new src_1.Field({ fakeValue: function () { return this.constructor.name; } }); + var f2 = new src_1.Field({ fakeValue: function () { return Math.random(); } }); + t.is(f0.fakeValue, 'foo'); + t.is(f1.fakeValue, 'Field'); + t.is(f2.fakeValue !== f2.fakeValue, true); +}); +ava_1["default"]('method `reset()` sets value to the default value', function (t) { + var f0 = new src_1.Field(); + var f1 = new src_1.Field({ defaultValue: 'foo' }); + var f2 = new src_1.Field({ defaultValue: function () { return Math.random(); } }); + t.is(f0.value, null); + f1.value = 'bar'; + f1.reset(); + t.is(f1.value, 'foo'); + f2.reset(); + t.is(f1.value !== f2.value, true); +}); +ava_1["default"]('method `fake()` sets value to the fake value', function (t) { + var f0 = new src_1.Field(); + var f1 = new src_1.Field({ fakeValue: 'foo' }); + var f2 = new src_1.Field({ fakeValue: function () { return Math.random(); } }); + f0.value = 'foo'; + f0.fake(); + t.is(f0.value, null); + f1.value = 'bar'; + f1.fake(); + t.is(f1.value, 'foo'); + f2.value = 'foo'; + f2.fake(); + t.is(f2.value !== f1.value, true); +}); +ava_1["default"]('method `clear()` sets value to `null`', function (t) { + var f = new src_1.Field(); + f.value = 'foo'; + f.clear(); + t.is(f.value, null); +}); +ava_1["default"]('methods `commit()` and `rollback()` manage committed value state', function (t) { + var f = new src_1.Field(); + f.value = 'foo'; + t.is(f.initialValue, null); + f.commit(); + t.is(f.initialValue, 'foo'); + f.value = 'bar'; + f.rollback(); + t.is(f.value, 'foo'); +}); +ava_1["default"]('method `equals()` returns `true` when the provided `data` equals to the current value', function (t) { + var f0 = new src_1.Field(); + var f1 = new src_1.Field(); + f0.value = 'foo'; + f1.value = 'foo'; + t.is(f0.equals(f1), true); + t.is(f0.equals(f1.value), true); +}); +ava_1["default"]('method `isChanged()` returns `true` if the value have been changed', function (t) { + var f = new src_1.Field(); + t.is(f.isChanged(), false); + f.value = 'foo'; + t.is(f.isChanged(), true); +}); +ava_1["default"]('method `isNested()` returns `true` if the field type is un instance of a Model', function (t) { + var f0 = new src_1.Field(); + var f1 = new src_1.Field({ type: [src_1.Model] }); + var f2 = new src_1.Field({ type: [(function (_super) { + __extends(User, _super); + function User() { + return _super.apply(this, arguments) || this; + } + return User; + }(src_1.Model))] }); + t.is(f0.isNested(), false); + t.is(f1.isNested(), true); + t.is(f2.isNested(), true); +}); +ava_1["default"]('method `validate()` validates the value and populates the `errors` property', function (t) { return __awaiter(_this, void 0, void 0, function () { + var f; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + f = new src_1.Field({ + validate: [ + { validator: 'presence', message: 'foo' }, + { validator: 'coolness', message: 'is not cool' } + ], + validators: { + coolness: function () { return this.value === 'cool'; } + } + }); + return [4 /*yield*/, f.validate()]; + case 1: + _a.sent(); + t.deepEqual(f.errors, [ + { validator: 'presence', message: 'foo', code: 422 }, + { validator: 'coolness', message: 'is not cool', code: 422 } + ]); + return [2 /*return*/]; + } + }); +}); }); +ava_1["default"]('method `invalidate()` clears the `errors` property', function (t) { + var f = new src_1.Field(); + f.errors.push({ message: 'foo' }); + f.invalidate(); + t.deepEqual(f.errors, []); +}); +ava_1["default"]('invalidates when the value changes', function (t) { + var f = new src_1.Field(); + f.errors.push({ message: 'foo' }); + f.value = 'foo'; + t.deepEqual(f.errors, []); +}); +ava_1["default"]('method `hasErrors()` returns `true` when errors exist', function (t) { + var f = new src_1.Field(); + t.is(f.hasErrors(), false); + f.errors.push({ message: 'foo' }); + t.is(f.hasErrors(), true); +}); +ava_1["default"]('method `isValid()` returns `true` when no errors exist', function (t) { + var f = new src_1.Field(); + t.is(f.isValid(), true); + f.errors.push({ message: 'foo' }); + t.is(f.isValid(), false); +}); +ava_1["default"]('has enumeratable properties', function (t) { + var f = new src_1.Field(); + t.deepEqual(Object.keys(f), ['errors', 'value', 'defaultValue', 'fakeValue', 'initialValue', 'type', 'owner']); +}); +ava_1["default"]('method `handle()` handles an error and populates the `errors` property', function (t) { return __awaiter(_this, void 0, void 0, function () { + var f, e; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + f = new src_1.Field({ + handle: [ + { handler: 'block', block: function () { return true; }, message: 'foo' }, + { handler: 'coolness', message: 'cool' } + ], + handlers: { + coolness: function (error) { return error.message === 'cool'; } + } + }); + e = new Error('cool'); + return [4 /*yield*/, f.handle(e)]; + case 1: + _a.sent(); + t.deepEqual(f.errors, [ + { handler: 'block', message: 'foo', code: 422 }, + { handler: 'coolness', message: 'cool', code: 422 } + ]); + return [2 /*return*/]; + } + }); +}); }); +//# sourceMappingURL=fields.js.map \ No newline at end of file diff --git a/dist/tests/fields.js.map b/dist/tests/fields.js.map new file mode 100644 index 0000000..8bd8c88 --- /dev/null +++ b/dist/tests/fields.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../tests/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/index.d.ts b/dist/tests/index.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/dist/tests/index.js b/dist/tests/index.js new file mode 100644 index 0000000..e20b963 --- /dev/null +++ b/dist/tests/index.js @@ -0,0 +1,8 @@ +"use strict"; +var ava_1 = require("ava"); +var objectschema = require("../src"); +ava_1["default"]('exposed content', function (t) { + t.is(!!objectschema.Model, true); + t.is(!!objectschema.Field, true); +}); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/tests/index.js.map b/dist/tests/index.js.map new file mode 100644 index 0000000..b76ef15 --- /dev/null +++ b/dist/tests/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../tests/index.ts"],"names":[],"mappings":";AAAA,2BAAuB;AACvB,qCAAuC;AAEvC,gBAAI,CAAC,iBAAiB,EAAE,UAAC,CAAC;IACxB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/dist/tests/models.d.ts b/dist/tests/models.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/dist/tests/models.js b/dist/tests/models.js new file mode 100644 index 0000000..5a69b2c --- /dev/null +++ b/dist/tests/models.js @@ -0,0 +1,1221 @@ +"use strict"; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments)).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t; + return { next: verb(0), "throw": verb(1), "return": verb(2) }; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [0, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var _this = this; +var ava_1 = require("ava"); +var src_1 = require("../src"); +ava_1["default"]('method `defineField` initializes nullified enumerable property', function (t) { + var user = new (function (_super) { + __extends(User, _super); + function User() { + var _this = _super.call(this) || this; + _this.defineField('name'); + return _this; + } + return User; + }(src_1.Model)); + var descriptor = Object.getOwnPropertyDescriptor(user, 'name'); + t.is(typeof descriptor.get, 'function'); + t.is(typeof descriptor.set, 'function'); + t.is(descriptor.enumerable, true); + t.is(descriptor.configurable, true); + t.is(user.name, null); +}); +ava_1["default"]('method `defineType` defines a custom data type', function (t) { + var user = new (function (_super) { + __extends(User, _super); + function User() { + var _this = _super.call(this) || this; + _this.defineType('cool', function (v) { return v + "-cool"; }); + _this.defineField('name', { type: 'cool' }); + return _this; + } + return User; + }(src_1.Model)); + user.name = 'foo'; + t.is(user.name, 'foo-cool'); +}); +ava_1["default"]('method `populate` deeply populates fields', function (t) { + var Book = (function (_super) { + __extends(Book, _super); + function Book(data) { + var _this = _super.call(this, data) || this; + _this.defineField('title', { type: 'String' }); + _this.populate(data); + return _this; + } + return Book; + }(src_1.Model)); + var User = (function (_super) { + __extends(User, _super); + function User(data) { + var _this = _super.call(this, data) || this; + _this.defineField('name', { type: 'String' }); + _this.defineField('book', { type: Book }); + _this.defineField('books', { type: [Book] }); + _this.populate(data); + return _this; + } + return User; + }(src_1.Model)); + var user = new User({ + name: 100, + book: { + title: 200 + }, + books: [ + undefined, + { + title: 300 + } + ] + }); + t.is(user.name, '100'); + t.is(user.book.title, '200'); + t.is(user.books[0], null); + t.is(user.books[1].title, '300'); +}); +ava_1["default"]('property `parent` holds an instance of a parent model', function (t) { + var Book = (function (_super) { + __extends(Book, _super); + function Book(data) { + var _this = _super.call(this, data) || this; + _this.defineField('title', { type: 'String' }); + _this.populate(data); + return _this; + } + return Book; + }(src_1.Model)); + var User = (function (_super) { + __extends(User, _super); + function User(data) { + var _this = _super.call(this, data) || this; + _this.defineField('name', { type: 'String' }); + _this.defineField('book', { type: Book }); + _this.defineField('books', { type: [Book] }); + _this.populate(data); + return _this; + } + return User; + }(src_1.Model)); + var user = new User({ + book: { + title: 200 + }, + books: [ + undefined, + { + title: 300 + } + ] + }); + t.is(user.parent, null); + t.is(user.propertyIsEnumerable('parent'), false); + t.is(user.book.parent, user); + t.is(user.books[1].parent, user); +}); +ava_1["default"]('property `root` return the first model in a tree of nested models', function (t) { + var Book = (function (_super) { + __extends(Book, _super); + function Book(data) { + var _this = _super.call(this, data) || this; + _this.defineField('title'); + _this.populate(data); + return _this; + } + return Book; + }(src_1.Model)); + var User = (function (_super) { + __extends(User, _super); + function User(data) { + var _this = _super.call(this, data) || this; + _this.defineField('book', { type: Book }); + _this.populate(data); + return _this; + } + return User; + }(src_1.Model)); + var user = new User({ + book: { + title: 200 + } + }); + t.is(user.root, user); + t.is(user.book.root, user); +}); +ava_1["default"]('method `getField` returns an instance of a field at path', function (t) { + var Book = (function (_super) { + __extends(Book, _super); + function Book(data) { + var _this = _super.call(this, data) || this; + _this.defineField('title', { type: 'String' }); + _this.populate(data); + return _this; + } + return Book; + }(src_1.Model)); + var User = (function (_super) { + __extends(User, _super); + function User(data) { + var _this = _super.call(this, data) || this; + _this.defineField('name', { type: 'String' }); + _this.defineField('book', { type: Book }); + _this.defineField('books', { type: [Book] }); + _this.populate(data); + return _this; + } + return User; + }(src_1.Model)); + var user = new User({ + name: 'foo', + book: { + title: 'bar' + }, + books: [ + undefined, + { + title: 'baz' + } + ] + }); + t.is(user.getField(['name']).value, 'foo'); + t.is(user.getField('name').value, 'foo'); + t.is(user.getField(['book', 'title']).value, 'bar'); + t.is(user.getField('book', 'title').value, 'bar'); + t.is(user.getField(['books', 1, 'title']).value, 'baz'); + t.is(user.getField('books', 1, 'title').value, 'baz'); + t.is(user.getField(['fake']), undefined); + t.is(user.getField(['fake', 10, 'title']), undefined); + t.is(user.getField(), undefined); +}); +ava_1["default"]('method `hasField` returns `true` if the field exists', function (t) { + var User = (function (_super) { + __extends(User, _super); + function User(data) { + if (data === void 0) { data = {}; } + var _this = _super.call(this) || this; + _this.defineField('name', { type: 'String' }); + _this.populate(data); + return _this; + } + return User; + }(src_1.Model)); + var user = new User(); + t.is(user.hasField(['name']), true); + t.is(user.hasField(['book', 'title']), false); +}); +ava_1["default"]('method `serialize` converts model into a serialized data object', function (t) { + var Book = (function (_super) { + __extends(Book, _super); + function Book(data) { + var _this = _super.call(this, data) || this; + _this.defineField('title', { type: 'String' }); + _this.populate(data); + return _this; + } + return Book; + }(src_1.Model)); + var User = (function (_super) { + __extends(User, _super); + function User(data) { + var _this = _super.call(this, data) || this; + _this.defineField('name', { type: 'String' }); + _this.defineField('book', { type: Book }); + _this.defineField('books', { type: [Book] }); + _this.populate(data); + return _this; + } + return User; + }(src_1.Model)); + var user = new User({ + name: 'foo', + book: { + title: 'bar' + }, + books: [ + undefined, + { + title: 'baz' + } + ] + }); + t.deepEqual(user.serialize(), { + name: 'foo', + book: { + title: 'bar' + }, + books: [ + null, + { + title: 'baz' + } + ] + }); +}); +ava_1["default"]('method `flatten` returns an array of fields', function (t) { return __awaiter(_this, void 0, void 0, function () { + var Book, User, user; + return __generator(this, function (_a) { + Book = (function (_super) { + __extends(Book, _super); + function Book(data) { + var _this = _super.call(this, data) || this; + _this.defineField('title', { type: 'String' }); + _this.populate(data); + return _this; + } + return Book; + }(src_1.Model)); + User = (function (_super) { + __extends(User, _super); + function User(data) { + var _this = _super.call(this, data) || this; + _this.defineField('name', { type: 'String' }); + _this.defineField('book', { type: Book }); + _this.defineField('books', { type: [Book] }); + _this.populate(data); + return _this; + } + return User; + }(src_1.Model)); + user = new User({ + name: 'foo', + book: { + title: 'bar' + }, + books: [ + undefined, + { + title: 'baz' + } + ] + }); + t.deepEqual(user.flatten().map(function (f) { return f.path; }), [ + ['name'], + ['book'], + ['book', 'title'], + ['books'], + ['books', 1, 'title'] + ]); + t.deepEqual(Object.keys(user.flatten()[0]), ['path', 'field']); + t.deepEqual(user.flatten()[0].path, ['name']); + t.is(user.flatten()[0].field.value, 'foo'); + return [2 /*return*/]; + }); +}); }); +ava_1["default"]('method `collect` returns an array of results', function (t) { + var Book = (function (_super) { + __extends(Book, _super); + function Book(data) { + var _this = _super.call(this, data) || this; + _this.defineField('title', { type: 'String' }); + _this.populate(data); + return _this; + } + return Book; + }(src_1.Model)); + var User = (function (_super) { + __extends(User, _super); + function User(data) { + var _this = _super.call(this, data) || this; + _this.defineField('name', { type: 'String' }); + _this.defineField('book', { type: Book }); + _this.populate(data); + return _this; + } + return User; + }(src_1.Model)); + var user = new User({ + name: 'foo', + book: { + title: 'bar' + } + }); + var results = user.collect(function (_a) { + var path = _a.path; + return path; + }); + t.deepEqual(results, [ + ['name'], + ['book'], + ['book', 'title'] + ]); +}); +ava_1["default"]('method `scroll` runs the provided handler on each field', function (t) { + var Book = (function (_super) { + __extends(Book, _super); + function Book(data) { + var _this = _super.call(this, data) || this; + _this.defineField('title', { type: 'String' }); + _this.populate(data); + return _this; + } + return Book; + }(src_1.Model)); + var User = (function (_super) { + __extends(User, _super); + function User(data) { + var _this = _super.call(this, data) || this; + _this.defineField('name', { type: 'String' }); + _this.defineField('book', { type: Book }); + _this.populate(data); + return _this; + } + return User; + }(src_1.Model)); + var user = new User({ + name: 'foo', + book: { + title: 'bar' + } + }); + var count = user.scroll(function (_a) { + var path = _a.path; + return null; + }); + t.deepEqual(count, 3); +}); +ava_1["default"]('method `filter` converts a model into serialized object with only keys that pass the test', function (t) { + var Book = (function (_super) { + __extends(Book, _super); + function Book(data) { + var _this = _super.call(this, data) || this; + _this.defineField('title', { type: 'String' }); + _this.populate(data); + return _this; + } + return Book; + }(src_1.Model)); + var User = (function (_super) { + __extends(User, _super); + function User(data) { + var _this = _super.call(this, data) || this; + _this.defineField('name', { type: 'String' }); + _this.defineField('book', { type: Book }); + _this.defineField('books', { type: [Book] }); + _this.populate(data); + return _this; + } + return User; + }(src_1.Model)); + var user = new User({ + name: 'foo', + book: { + title: 'bar' + }, + books: [ + undefined, + { + title: 'bar' + } + ] + }); + var result = user.filter(function (_a) { + var path = _a.path, field = _a.field; + return field.value !== 'foo'; + }); + t.deepEqual(result, { + book: { + title: 'bar' + }, + books: [ + null, + { + title: 'bar' + } + ] + }); +}); +ava_1["default"]('method `reset` sets fields to their default values', function (t) { + var Book = (function (_super) { + __extends(Book, _super); + function Book(data) { + var _this = _super.call(this, data) || this; + _this.defineField('title', { defaultValue: 'foo' }); + _this.populate(data); + return _this; + } + return Book; + }(src_1.Model)); + var User = (function (_super) { + __extends(User, _super); + function User(data) { + var _this = _super.call(this, data) || this; + _this.defineField('name', { defaultValue: 'bar' }); + _this.defineField('book', { type: Book, defaultValue: {} }); + _this.defineField('books', { type: [Book], defaultValue: [null, {}] }); + _this.populate(data); + return _this; + } + return User; + }(src_1.Model)); + var user = new User({ + name: 'fake', + book: { + title: 'fake' + }, + books: [ + { + title: 'fake' + } + ] + }); + user.reset(); + t.deepEqual(user.serialize(), { + name: 'bar', + book: { + title: 'foo' + }, + books: [ + null, + { + title: 'foo' + } + ] + }); +}); +ava_1["default"]('method `fake` sets fields to their fake values', function (t) { + var Book = (function (_super) { + __extends(Book, _super); + function Book(data) { + var _this = _super.call(this, data) || this; + _this.defineField('title', { fakeValue: 'foo' }); + _this.populate(data); + return _this; + } + return Book; + }(src_1.Model)); + var User = (function (_super) { + __extends(User, _super); + function User(data) { + if (data === void 0) { data = {}; } + var _this = _super.call(this) || this; + _this.defineField('name', { fakeValue: 'bar' }); + _this.defineField('book', { type: Book, defaultValue: {} }); + _this.defineField('books', { type: [Book], defaultValue: [null, {}] }); + _this.populate(data); + return _this; + } + return User; + }(src_1.Model)); + var user = new User(); + user.fake(); + t.deepEqual(user.serialize(), { + name: 'bar', + book: { + title: 'foo' + }, + books: [ + null, + { + title: 'foo' + } + ] + }); +}); +ava_1["default"]('method `clear` sets fields to `null`', function (t) { + var Book = (function (_super) { + __extends(Book, _super); + function Book(data) { + var _this = _super.call(this, data) || this; + _this.defineField('title', { defaultValue: 'foo' }); + _this.populate(data); + return _this; + } + return Book; + }(src_1.Model)); + var User = (function (_super) { + __extends(User, _super); + function User(data) { + var _this = _super.call(this, data) || this; + _this.defineField('name', { defaultValue: 'bar' }); + _this.defineField('book', { type: Book, defaultValue: {} }); + _this.defineField('books', { type: [Book], defaultValue: [null, {}] }); + _this.populate(data); + return _this; + } + return User; + }(src_1.Model)); + var user = new User({ + name: 'fake', + book: { + title: 'fake' + }, + books: [ + { + title: 'fake' + } + ] + }); + user.clear(); + t.deepEqual(user.serialize(), { + name: null, + book: null, + books: null + }); +}); +ava_1["default"]('methods `commit()` and `rollback()` manage committed states', function (t) { + var Book = (function (_super) { + __extends(Book, _super); + function Book(data) { + var _this = _super.call(this, data) || this; + _this.defineField('title'); + _this.populate(data); + return _this; + } + return Book; + }(src_1.Model)); + var User = (function (_super) { + __extends(User, _super); + function User(data) { + var _this = _super.call(this, data) || this; + _this.defineField('name'); + _this.defineField('book', { type: Book }); + _this.defineField('books', { type: [Book] }); + _this.populate(data); + return _this; + } + return User; + }(src_1.Model)); + var user = new User({ + name: 'foo', + book: { + title: 'bar' + }, + books: [ + { + title: 'baz' + } + ] + }); + user.commit(); + t.is(user.getField('name').initialValue, 'foo'); + t.is(user.getField('book', 'title').initialValue, 'bar'); + t.is(user.getField('books', 0, 'title').initialValue, 'baz'); + user.populate({ + name: 'foo-new', + book: { + title: 'bar-new' + }, + books: [ + { + title: 'baz-new' + } + ] + }); + user.rollback(); + t.is(user.getField('name').value, 'foo'); + t.is(user.getField('book', 'title').value, 'bar'); + t.is(user.getField('books', 0, 'title').value, 'baz'); +}); +ava_1["default"]('method `equals` returns `true` when the passing object looks the same', function (t) { + var Book = (function (_super) { + __extends(Book, _super); + function Book(data) { + var _this = _super.call(this, data) || this; + _this.defineField('title'); + _this.populate(data); + return _this; + } + return Book; + }(src_1.Model)); + var User = (function (_super) { + __extends(User, _super); + function User(data) { + var _this = _super.call(this, data) || this; + _this.defineField('name'); + _this.defineField('book', { type: Book }); + _this.defineField('books', { type: [Book] }); + _this.populate(data); + return _this; + } + return User; + }(src_1.Model)); + var data = { + name: 'foo', + book: { + title: 'bar' + }, + books: [ + null, + { + title: 'baz' + } + ] + }; + t.is(new User(data).equals(new User(data)), true); +}); +ava_1["default"]('method `isChanged` returns `true` if at least one field has been changed', function (t) { + var Book = (function (_super) { + __extends(Book, _super); + function Book(data) { + var _this = _super.call(this, data) || this; + _this.defineField('title'); + _this.populate(data); + _this.commit(); + return _this; + } + return Book; + }(src_1.Model)); + var User = (function (_super) { + __extends(User, _super); + function User(data) { + var _this = _super.call(this, data) || this; + _this.defineField('name'); + _this.defineField('book', { type: Book }); + _this.defineField('books', { type: [Book] }); + _this.populate(data); + _this.commit(); + return _this; + } + return User; + }(src_1.Model)); + var data = { + name: 'foo', + book: { + title: 'bar' + }, + books: [ + null, + { + title: 'baz' + } + ] + }; + var user0 = new User(data); + var user1 = new User(data); + var user2 = new User(data); + var user3 = new User(data); + t.is(user0.isChanged(), false); + user0.name = 'foo-new'; + user1.book.title = 'bar-new'; + user2.books[0] = { title: 'baz-new' }; + user3.books[1].title = 'baz-new'; + t.is(user0.isChanged(), true); + t.is(user1.isChanged(), true); + t.is(user2.isChanged(), true); + t.is(user3.isChanged(), true); +}); +ava_1["default"]('method `isNested` returns `true` if nested fields exist', function (t) { + var Book = (function (_super) { + __extends(Book, _super); + function Book(data) { + var _this = _super.call(this, data) || this; + _this.defineField('title'); + _this.populate(data); + return _this; + } + return Book; + }(src_1.Model)); + var User = (function (_super) { + __extends(User, _super); + function User(data) { + if (data === void 0) { data = {}; } + var _this = _super.call(this) || this; + _this.defineField('name'); + _this.defineField('books', { type: [Book] }); + _this.populate(data); + return _this; + } + return User; + }(src_1.Model)); + var user = new User(); + t.is(user.isNested(), true); +}); +ava_1["default"]('method `collectErrors` returns an array of field errors', function (t) { + var Book = (function (_super) { + __extends(Book, _super); + function Book(data) { + var _this = _super.call(this, data) || this; + _this.defineField('title'); + _this.populate(data); + return _this; + } + return Book; + }(src_1.Model)); + var User = (function (_super) { + __extends(User, _super); + function User(data) { + var _this = _super.call(this, data) || this; + _this.defineField('name'); + _this.defineField('book', { type: Book }); + _this.defineField('books', { type: [Book] }); + _this.populate(data); + return _this; + } + return User; + }(src_1.Model)); + var user = new User({ + book: {}, + books: [{}] + }); + user.getField('name').errors = [{ message: 'foo' }]; + user.getField('book', 'title').errors = [{ message: 'bar' }]; + user.getField('books', 0, 'title').errors = [{ message: 'baz' }]; + t.deepEqual(user.collectErrors(), [ + { path: ['name'], errors: [{ message: 'foo' }] }, + { path: ['book', 'title'], errors: [{ message: 'bar' }] }, + { path: ['books', 0, 'title'], errors: [{ message: 'baz' }] } + ]); +}); +ava_1["default"]('method `applyErrors` sets fields errors', function (t) { + var Book = (function (_super) { + __extends(Book, _super); + function Book(data) { + var _this = _super.call(this, data) || this; + _this.defineField('title'); + _this.populate(data); + return _this; + } + return Book; + }(src_1.Model)); + var User = (function (_super) { + __extends(User, _super); + function User(data) { + var _this = _super.call(this, data) || this; + _this.defineField('name'); + _this.defineField('book', { type: Book }); + _this.defineField('books', { type: [Book] }); + _this.populate(data); + return _this; + } + return User; + }(src_1.Model)); + var user = new User({ + book: {}, + books: [null, {}] + }); + user.applyErrors([ + { path: ['name'], errors: [{ message: 'foo' }] }, + { path: ['book', 'title'], errors: [{ message: 'bar' }] }, + { path: ['books', 1, 'title'], errors: [{ message: 'baz' }] } + ]); + t.deepEqual(user.getField('name').errors, [{ message: 'foo' }]); + t.deepEqual(user.getField('book', 'title').errors, [{ message: 'bar' }]); + t.deepEqual(user.getField('books', 1, 'title').errors, [{ message: 'baz' }]); +}); +ava_1["default"]('methods `isValid` and `hasErrors` tell if errors exist', function (t) { return __awaiter(_this, void 0, void 0, function () { + var Book, User, user; + return __generator(this, function (_a) { + Book = (function (_super) { + __extends(Book, _super); + function Book(data) { + var _this = _super.call(this, data) || this; + _this.defineField('title'); + _this.populate(data); + return _this; + } + return Book; + }(src_1.Model)); + User = (function (_super) { + __extends(User, _super); + function User(data) { + var _this = _super.call(this, data) || this; + _this.defineField('name'); + _this.defineField('book', { type: Book }); + _this.defineField('books', { type: [Book] }); + _this.populate(data); + return _this; + } + return User; + }(src_1.Model)); + user = new User({ + book: {}, + books: [null, {}] + }); + t.is(user.hasErrors(), false); + t.is(user.isValid(), true); + user.applyErrors([ + { path: ['books', 1, 'title'], errors: [{ message: 'baz' }] } + ]); + t.is(user.hasErrors(), true); + t.is(user.isValid(), false); + return [2 /*return*/]; + }); +}); }); +ava_1["default"]('method `validate` validates fields and throws an error', function (t) { return __awaiter(_this, void 0, void 0, function () { + var validate, Book, User, user, errors; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + validate = [{ + validator: 'presence', + message: 'foo' + }]; + Book = (function (_super) { + __extends(Book, _super); + function Book(data) { + var _this = _super.call(this, data) || this; + _this.defineField('title', { validate: validate }); + _this.populate(data); + return _this; + } + return Book; + }(src_1.Model)); + User = (function (_super) { + __extends(User, _super); + function User(data) { + var _this = _super.call(this, data) || this; + _this.defineField('name', { validate: validate }); + _this.defineField('book0', { type: Book, validate: validate }); + _this.defineField('books0', { type: [Book], validate: validate }); + _this.defineField('book1', { type: Book, validate: validate }); + _this.defineField('books1', { type: [Book], validate: validate }); + _this.populate(data); + return _this; + } + return User; + }(src_1.Model)); + user = new User({ + book1: {}, + books1: [{}] + }); + errors = [{ validator: 'presence', message: 'foo', code: 422 }]; + return [4 /*yield*/, user.validate({ quiet: true })]; + case 1: + _a.sent(); + t.throws(user.validate()); + t.deepEqual(user.collectErrors(), [ + { path: ['name'], errors: errors }, + { path: ['book0'], errors: errors }, + { path: ['books0'], errors: errors }, + { path: ['book1', 'title'], errors: errors }, + { path: ['books1', 0, 'title'], errors: errors }, + ]); + return [2 /*return*/]; + } + }); +}); }); +ava_1["default"]('method `defineValidator` defines a custom field validator', function (t) { return __awaiter(_this, void 0, void 0, function () { + var validator, validate, Book, User, user, errors; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + validator = function (v) { + return this.value === 'cool' && v === 'cool'; + }; + validate = [{ + validator: 'coolness', + message: 'foo' + }]; + Book = (function (_super) { + __extends(Book, _super); + function Book(data) { + var _this = _super.call(this, data) || this; + _this.defineValidator('coolness', validator); + _this.defineField('title', { validate: validate }); + _this.populate(data); + return _this; + } + return Book; + }(src_1.Model)); + User = (function (_super) { + __extends(User, _super); + function User(data) { + var _this = _super.call(this, data) || this; + _this.defineValidator('coolness', validator); + _this.defineField('name', { validate: validate }); + _this.defineField('book', { type: Book, validate: validate }); + _this.populate(data); + return _this; + } + return User; + }(src_1.Model)); + user = new User({ + book: {} + }); + errors = [{ validator: 'coolness', message: 'foo', code: 422 }]; + return [4 /*yield*/, user.validate({ quiet: true })]; + case 1: + _a.sent(); + t.deepEqual(user.collectErrors(), [ + { path: ['name'], errors: errors }, + { path: ['book'], errors: errors }, + { path: ['book', 'title'], errors: errors }, + ]); + return [2 /*return*/]; + } + }); +}); }); +ava_1["default"]('method `failFast` configures validator to stop validating field on the first error', function (t) { return __awaiter(_this, void 0, void 0, function () { + var validate, Book, User, user, errors; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + validate = [ + { validator: 'presence', message: 'foo' }, + { validator: 'presence', message: 'foo' } + ]; + Book = (function (_super) { + __extends(Book, _super); + function Book(data) { + var _this = _super.call(this, data) || this; + _this.failFast(); + _this.defineField('title', { validate: validate }); + _this.populate(data); + return _this; + } + return Book; + }(src_1.Model)); + User = (function (_super) { + __extends(User, _super); + function User(data) { + var _this = _super.call(this, data) || this; + _this.failFast(); + _this.defineField('name', { validate: validate }); + _this.defineField('book', { type: Book }); + _this.populate(data); + return _this; + } + return User; + }(src_1.Model)); + user = new User({ + book: {} + }); + errors = [{ validator: 'presence', message: 'foo', code: 422 }]; + return [4 /*yield*/, user.validate({ quiet: true })]; + case 1: + _a.sent(); + t.is(user.getField('name').errors.length, 1); + t.is(user.getField('book', 'title').errors.length, 1); + return [2 /*return*/]; + } + }); +}); }); +ava_1["default"]('method `invalidate` clears fields errors', function (t) { return __awaiter(_this, void 0, void 0, function () { + var Book, User, user; + return __generator(this, function (_a) { + Book = (function (_super) { + __extends(Book, _super); + function Book(data) { + var _this = _super.call(this, data) || this; + _this.defineField('title'); + _this.populate(data); + return _this; + } + return Book; + }(src_1.Model)); + User = (function (_super) { + __extends(User, _super); + function User(data) { + var _this = _super.call(this, data) || this; + _this.defineField('name'); + _this.defineField('book', { type: Book }); + _this.defineField('books', { type: [Book] }); + _this.populate(data); + return _this; + } + return User; + }(src_1.Model)); + user = new User({ + book: {}, + books: [null, {}] + }); + user.applyErrors([ + { path: ['name'], errors: [{ message: 'foo' }] }, + { path: ['book', 'title'], errors: [{ message: 'bar' }] }, + { path: ['books', 1, 'title'], errors: [{ message: 'baz' }] } + ]); + user.invalidate(); + t.deepEqual(user.getField('name').errors, []); + t.deepEqual(user.getField('book', 'title').errors, []); + t.deepEqual(user.getField('books', 1, 'title').errors, []); + return [2 /*return*/]; + }); +}); }); +ava_1["default"]('method `clone` returns an exact copy of the original', function (t) { + var Book = (function (_super) { + __extends(Book, _super); + function Book(data) { + var _this = _super.call(this, data) || this; + _this.defineField('title'); + _this.populate(data); + _this.commit(); + return _this; + } + return Book; + }(src_1.Model)); + var User = (function (_super) { + __extends(User, _super); + function User(data) { + var _this = _super.call(this, data) || this; + _this.defineField('name'); + _this.defineField('book', { type: Book }); + _this.defineField('books', { type: [Book] }); + _this.populate(data); + _this.commit(); + return _this; + } + return User; + }(src_1.Model)); + var user = new User({ + name: 'foo', + book: { + title: 'bar' + }, + books: [ + null, + { + title: 'baz' + } + ] + }); + t.is(user.clone() !== user, true); + t.is(user.equals(user), true); +}); +ava_1["default"]('method `handle` handles field-related errors', function (t) { return __awaiter(_this, void 0, void 0, function () { + var _this = this; + var handle, Book, User, user, problem0, problem1, errors; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + handle = [{ + handler: 'block', + message: '%{foo}', + block: function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) { + return [2 /*return*/, true]; + }); }); }, + foo: 'foo' + }]; + Book = (function (_super) { + __extends(Book, _super); + function Book(data) { + var _this = _super.call(this, data) || this; + _this.defineField('title', { handle: handle }); + _this.populate(data); + return _this; + } + return Book; + }(src_1.Model)); + User = (function (_super) { + __extends(User, _super); + function User(data) { + var _this = _super.call(this, data) || this; + _this.defineField('name', { handle: handle }); + _this.defineField('book0', { type: Book, handle: handle }); + _this.defineField('books0', { type: [Book], handle: handle }); + _this.defineField('book1', { type: Book }); + _this.defineField('books1', { type: [Book] }); + _this.populate(data); + return _this; + } + return User; + }(src_1.Model)); + user = new User({ + book1: {}, + books1: [{}] + }); + problem0 = new Error(); + problem1 = new Error(); + problem1.code = 422; + errors = [{ handler: 'block', message: 'foo', code: 422 }]; + t.throws(user.handle(problem0, { quiet: false })); + t.notThrows(user.handle(problem0)); + t.notThrows(user.handle(problem1, { quiet: false })); + return [4 /*yield*/, user.handle(problem0)]; + case 1: + _a.sent(); + t.deepEqual(user.collectErrors(), [ + { path: ['name'], errors: errors }, + { path: ['book0'], errors: errors }, + { path: ['books0'], errors: errors }, + { path: ['book1', 'title'], errors: errors }, + { path: ['books1', 0, 'title'], errors: errors }, + ]); + return [2 /*return*/]; + } + }); +}); }); +ava_1["default"]('method `defineHandler` defines a custom field handler', function (t) { return __awaiter(_this, void 0, void 0, function () { + var handler, handle, Book, User, user, problem, errors; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + handler = function (e) { + return e.message === 'cool'; + }; + handle = [{ + handler: 'coolness', + message: '%{foo}', + foo: 'foo' + }]; + Book = (function (_super) { + __extends(Book, _super); + function Book(data) { + var _this = _super.call(this, data) || this; + _this.defineHandler('coolness', handler); + _this.defineField('title', { handle: handle }); + _this.populate(data); + return _this; + } + return Book; + }(src_1.Model)); + User = (function (_super) { + __extends(User, _super); + function User(data) { + var _this = _super.call(this, data) || this; + _this.defineHandler('coolness', handler); + _this.defineField('name', { handle: handle }); + _this.defineField('book', { type: Book }); + _this.defineField('books', { type: [Book] }); + _this.populate(data); + return _this; + } + return User; + }(src_1.Model)); + user = new User({ + book: {}, + books: [{}] + }); + problem = new Error('cool'); + errors = [{ handler: 'coolness', message: 'foo', code: 422 }]; + return [4 /*yield*/, user.handle(problem)]; + case 1: + _a.sent(); + t.deepEqual(user.collectErrors(), [ + { path: ['name'], errors: errors }, + { path: ['book', 'title'], errors: errors }, + { path: ['books', 0, 'title'], errors: errors }, + ]); + return [2 /*return*/]; + } + }); +}); }); +//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/dist/tests/models.js.map b/dist/tests/models.js.map new file mode 100644 index 0000000..fd3c490 --- /dev/null +++ b/dist/tests/models.js.map @@ -0,0 +1 @@ +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/utils.js.map b/dist/utils.js.map deleted file mode 100644 index 86f768e..0000000 --- a/dist/utils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";AAAA,oCAAsC;AAO9B,sBAAK;AANb,wCAA0C;AAYlC,0BAAO;AAMf,mBAA2B,IAAI;IAC7B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC;AAFD,8BAEC"} \ No newline at end of file diff --git a/example/dist/index.js b/example/dist/index.js deleted file mode 100644 index 2a5a2ec..0000000 --- a/example/dist/index.js +++ /dev/null @@ -1,64 +0,0 @@ -"use strict"; -const __1 = require("../.."); -/* -* Book model -*/ -class Book extends __1.Model { - constructor(data, options) { - super(data, options); - this.defineField('title', { - type: 'String', - validate: [ - { - validator: 'presence', - message: 'must be present' - } - ] - }); - this.populate(data); - this.commit(); - } -} -/* -* User model -*/ -class User extends __1.Model { - constructor(data, options) { - super(data, options); - this.defineField('name', { - type: 'String', - validate: [ - { - validator: 'presence', - message: 'must be present' - } - ] - }); - this.defineField('book', { - type: Book, - validate: [ - { - validator: 'presence', - message: 'must be present' - } - ] - }); - this.populate(data); - this.commit(); - } -} -/* -* Usage -*/ -let user = new User({ - name: 'John Smith', - book: { - title: 'True Detective' - } -}); -user.validate({ quiet: true }).then(() => { - console.log('user.name:', user.name); - console.log('user.book.title:', user.book.title); - console.log('user.isValid():', user.isValid()); -}); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/example/dist/index.js.map b/example/dist/index.js.map deleted file mode 100644 index 436de13..0000000 --- a/example/dist/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,6BAA4B;AAE5B;;EAEE;AAEF,UAAW,SAAQ,SAAK;IAGtB,YAAoB,IAAK,EAAE,OAAQ;QACjC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAErB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YACxB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;CACF;AAED;;EAEE;AAEF,UAAW,SAAQ,SAAK;IAItB,YAAoB,IAAK,EAAE,OAAQ;QACjC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAErB,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;CACF;AAED;;EAEE;AAEF,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;IAClB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE;QACJ,KAAK,EAAE,gBAAgB;KACxB;CACF,CAAC,CAAC;AAEH,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,IAAI,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/example/src/index.ts b/example/index.ts similarity index 74% rename from example/src/index.ts rename to example/index.ts index adea7f5..4197a83 100644 --- a/example/src/index.ts +++ b/example/index.ts @@ -1,4 +1,4 @@ -import {Model} from '../..'; +import {Model} from '../src'; /* * Book model @@ -7,8 +7,8 @@ import {Model} from '../..'; class Book extends Model { public title: string; - public constructor (data?, options?) { - super(data, options); + public constructor (data = {}) { + super(data); this.defineField('title', { type: 'String', @@ -33,8 +33,8 @@ class User extends Model { public name: string; public book: Book; - public constructor (data?, options?) { - super(data, options); + public constructor (data = {}) { + super(data); this.defineField('name', { type: 'String', @@ -72,7 +72,7 @@ let user = new User({ }); user.validate({quiet: true}).then(() => { - console.log('user.name:', user.name); - console.log('user.book.title:', user.book.title); - console.log('user.isValid():', user.isValid()); + process.stdout.write('user.name: ' + user.name + '\n'); + process.stdout.write('user.book.title:' + user.book.title + '\n'); + process.stdout.write('user.isValid():' + user.isValid() + '\n'); }); diff --git a/example/tsconfig.json b/example/tsconfig.json deleted file mode 100644 index 2ef7861..0000000 --- a/example/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "module": "commonjs", - "target": "es6", - "noImplicitAny": false, - "sourceMap": true, - "outDir": "dist", - "declaration": true - } -} diff --git a/package.json b/package.json index ed4aacf..8727537 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,13 @@ { "name": "rawmodel", - "version": "1.3.0", + "version": "1.4.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", - "main": "./dist/index.js", - "types": "./dist/index.d.ts", + "main": "./dist/src/index.js", + "types": "./dist/src/index.d.ts", "ava": { "files": [ - "./tests/*.js", - "./tests/**/*.js" + "./dist/tests/*.js", + "./dist/tests/**/*.js" ], "concurrency": 4, "failFast": true @@ -15,7 +15,7 @@ "scripts": { "clean": "rm -Rf ./dist", "build": "npm run clean; tsc", - "example": "tsc -p example/tsconfig.json && node example/dist", + "example": "npm run build && node dist/example", "lint": "tslint 'src/**/*.ts?(x)'", "prepublish": "npm run build", "test": "npm run build && ava" @@ -68,12 +68,13 @@ "author": "Kristijan Sedlak (Xpepermint)", "license": "MIT", "devDependencies": { + "@types/node": "7.0.0", "ava": "^0.17.0", - "tslint": "4.3.1", + "tslint": "^4.3.1", "typescript": "^2.1.4" }, "dependencies": { - "handleable": "^0.19.0", + "handleable": "^0.20.0", "lodash.isequal": "^4.4.0", "lodash.merge": "^4.6.0", "typeable": "^2.0.0", diff --git a/src/fields.ts b/src/fields.ts index 4b6279f..5af10be 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -1,20 +1,9 @@ import {isFunction, isUndefined, isPresent, isArray, toArray, isValue, cast} from 'typeable'; -import {serialize, isEqual} from './utils'; +import {serialize, isEqual, merge} from './utils'; import {Validator, ValidatorRecipe} from 'validatable'; import {Handler, HandlerRecipe} from 'handleable'; import {Model} from './models'; -/* -* Field context definition interface. -*/ - -export interface FieldOptions { - owner?: Model; - validators?: {[name: string]: (v?, r?: ValidatorRecipe) => boolean | Promise}; - handlers?: {[name: string]: (v?, r?: HandlerRecipe) => boolean | Promise}; - failFast?: boolean; -} - /* * Field definition interface. */ @@ -27,6 +16,10 @@ export interface FieldRecipe { fakeValue?: any; validate?: ValidatorRecipe[]; handle?: HandlerRecipe[]; + validators?: {[name: string]: (v?, r?: ValidatorRecipe) => boolean | Promise}; + handlers?: {[name: string]: (v?, r?: HandlerRecipe) => boolean | Promise}; + owner?: Model; + failFast?: boolean; } /* @@ -50,7 +43,6 @@ export class Field { protected _validator: Validator; protected _handler: Handler; protected _recipe: FieldRecipe; - protected _options: FieldOptions; readonly defaultValue: any; readonly fakeValue: any; readonly initialValue: any; @@ -63,15 +55,12 @@ export class Field { * Class constructor. */ - public constructor (recipe?: FieldRecipe, options?: FieldOptions) { + public constructor (recipe?: FieldRecipe) { this.errors = []; Object.defineProperty(this, '_recipe', { value: Object.freeze(recipe || {}) }); - Object.defineProperty(this, '_options', { - value: Object.freeze(options || {}) - }); Object.defineProperty(this, '_data', { // current value value: this._getDefaultValue(), @@ -111,7 +100,7 @@ export class Field { enumerable: true }); Object.defineProperty(this, 'owner', { - get: () => this._options.owner || null, + get: () => this._recipe.owner || null, enumerable: true }); } @@ -121,7 +110,7 @@ export class Field { */ protected _createValidator () { - let {validators, failFast} = this._options; + let {validators, failFast} = this._recipe; let context = this; return new Validator({validators, failFast, context}); @@ -132,7 +121,7 @@ export class Field { */ protected _createHandler () { - let {handlers, failFast} = this._options; + let {handlers, failFast} = this._recipe; let context = this; return new Handler({handlers, failFast, context}); @@ -187,9 +176,9 @@ export class Field { if (this.isNested()) { let Klass = isArray(type) ? type[0] : type; - let toModel = (d) => new Klass(d, { - parent: this.owner - }); + let toModel = (d) => new Klass( + merge(d, {parent: this.owner}) + ); converter = isArray(type) ? [toModel] : toModel; } diff --git a/src/models.ts b/src/models.ts index e61d542..1106cc3 100644 --- a/src/models.ts +++ b/src/models.ts @@ -9,7 +9,7 @@ import {serialize, isEqual, merge} from './utils'; */ export interface FieldRef { - path: string[]; + path: (string | number)[]; field: Field; } @@ -17,16 +17,16 @@ export interface FieldRef { * Field error type definition. */ -export interface FieldErrorRef extends Error { - path: string[]; +export interface FieldErrorRef { + path: (string | number)[]; errors: FieldError[]; } /* -* Model options interface. +* Model recipe interface. */ -export interface ModelOptions { +export interface ModelRecipe { parent?: Model; } @@ -47,9 +47,9 @@ export abstract class Model { * Class constructor. */ - public constructor (data = {}, options: ModelOptions = {}) { + public constructor (recipe: ModelRecipe = {}) { Object.defineProperty(this, 'parent', { - value: options.parent || this.parent || null, + value: recipe.parent || this.parent || null, writable: true }); Object.defineProperty(this, 'root', { @@ -102,15 +102,15 @@ export abstract class Model { protected _createField (recipe: FieldRecipe = {}) { let {type} = recipe; - return new Field(merge( - recipe, - {type: this._types[type] || type} - ), { - owner: this, - validators: this._validators, - handlers: this._handlers, - failFast: this._failFast - }); + return new Field( + merge(recipe, { + type: this._types[type] || type, + owner: this, + validators: this._validators, + handlers: this._handlers, + failFast: this._failFast + }) + ); } /* @@ -129,10 +129,10 @@ export abstract class Model { * extending this class. */ - protected _createModel (data = {}, options: ModelOptions = {}) { - return new (this.constructor as any)(data, { - parent: options.parent - }); + protected _createModel (data = {}, recipe: ModelRecipe = {}) { + return new (this.constructor as any)( + merge(data, recipe) + ); } /* @@ -213,11 +213,9 @@ export abstract class Model { */ public populate (data = {}): this { - data = serialize(data); - Object.keys(data) .filter((n) => !!this._fields[n]) - .forEach((name) => this[name] = data[name]); + .forEach((name) => this[name] = serialize(data[name])); return this; } diff --git a/tests/fields.js b/tests/fields.ts similarity index 85% rename from tests/fields.js rename to tests/fields.ts index 6085f77..0c5ab93 100644 --- a/tests/fields.js +++ b/tests/fields.ts @@ -1,5 +1,5 @@ import test from 'ava'; -import {Field, Model} from '..'; +import {Field, Model} from '../src'; import {Validator} from 'validatable'; test('nullifies a value by default', (t) => { @@ -14,8 +14,8 @@ test('provides getter and setter for the current value', (t) => { }); test('supports custom getter and setter for the current value', (t) => { - let f0 = new Field({get (v) { return `${v}-${this.constructor.name}` }}); - let f1 = new Field({set (v) { return `${v}-${this.constructor.name}` }}); + let f0 = new Field({get (v) { return `${v}-${this.constructor.name}`; }}); + let f1 = new Field({set (v) { return `${v}-${this.constructor.name}`; }}); f0.value = 'foo'; f1.value = 'foo'; t.is(f0.value, 'foo-Field'); @@ -33,40 +33,40 @@ test('can automatically cast a value to a specific data type', (t) => { test('can have a default value', (t) => { let f0 = new Field({defaultValue: 'foo'}); - let f1 = new Field({defaultValue () { return this.constructor.name } }); - let f2 = new Field({defaultValue () { return Math.random() }}); + let f1 = new Field({defaultValue () { return this.constructor.name; }}); + let f2 = new Field({defaultValue () { return Math.random(); }}); t.is(f0.value, 'foo'); t.is(f1.value, 'Field'); t.is(f0.defaultValue, 'foo'); t.is(f1.defaultValue, 'Field'); - t.is(f2.defaultValue != f2.defaultValue, true); // dynamic values + t.is(f2.defaultValue !== f2.defaultValue, true); // dynamic values }); test('can have a fake value', (t) => { let f0 = new Field({fakeValue: 'foo'}); - let f1 = new Field({fakeValue () { return this.constructor.name }}); - let f2 = new Field({fakeValue () { return Math.random() }}); + let f1 = new Field({fakeValue () { return this.constructor.name; }}); + let f2 = new Field({fakeValue () { return Math.random(); }}); t.is(f0.fakeValue, 'foo'); t.is(f1.fakeValue, 'Field'); - t.is(f2.fakeValue != f2.fakeValue, true); // dynamic values + t.is(f2.fakeValue !== f2.fakeValue, true); // dynamic values }); test('method `reset()` sets value to the default value', (t) => { let f0 = new Field(); let f1 = new Field({defaultValue: 'foo'}); - let f2 = new Field({defaultValue () { return Math.random() }}); + let f2 = new Field({defaultValue () { return Math.random(); }}); t.is(f0.value, null); f1.value = 'bar'; f1.reset(); t.is(f1.value, 'foo'); f2.reset(); - t.is(f1.value != f2.value, true); // dynamic values + t.is(f1.value !== f2.value, true); // dynamic values }); test('method `fake()` sets value to the fake value', (t) => { let f0 = new Field(); let f1 = new Field({fakeValue: 'foo'}); - let f2 = new Field({fakeValue () { return Math.random() }}); + let f2 = new Field({fakeValue () { return Math.random(); }}); f0.value = 'foo'; f0.fake(); t.is(f0.value, null); @@ -75,7 +75,7 @@ test('method `fake()` sets value to the fake value', (t) => { t.is(f1.value, 'foo'); f2.value = 'foo'; f2.fake(); - t.is(f2.value != f1.value, true); // dynamic values + t.is(f2.value !== f1.value, true); // dynamic values }); test('method `clear()` sets value to `null`', (t) => { @@ -126,10 +126,9 @@ test('method `validate()` validates the value and populates the `errors` propert validate: [ {validator: 'presence', message: 'foo'}, {validator: 'coolness', message: 'is not cool'} - ] - }, { + ], validators: { - coolness () { return this.value === 'cool' } // custom validators + coolness () { return this.value === 'cool'; } // custom validators } }); await f.validate(); @@ -175,12 +174,11 @@ test('has enumeratable properties', (t) => { test('method `handle()` handles an error and populates the `errors` property', async (t) => { let f = new Field({ handle: [ - {handler: 'block', block () { return true }, message: 'foo'}, + {handler: 'block', block () { return true; }, message: 'foo'}, {handler: 'coolness', message: 'cool'} // custom - ] - }, { + ], handlers: { - coolness (error) { return error.message === 'cool' } // custom validators + coolness (error) { return error.message === 'cool'; } // custom validators } }); let e = new Error('cool'); diff --git a/tests/index.js b/tests/index.ts similarity index 77% rename from tests/index.js rename to tests/index.ts index 571249e..49b8758 100644 --- a/tests/index.js +++ b/tests/index.ts @@ -1,5 +1,5 @@ import test from 'ava'; -import * as objectschema from '..'; +import * as objectschema from '../src'; test('exposed content', (t) => { t.is(!!objectschema.Model, true); diff --git a/tests/models.js b/tests/models.ts similarity index 84% rename from tests/models.js rename to tests/models.ts index f125547..70cf83e 100644 --- a/tests/models.js +++ b/tests/models.ts @@ -1,13 +1,14 @@ import test from 'ava'; -import {Model, Field} from '..'; +import {Model, Field} from '../src'; test('method `defineField` initializes nullified enumerable property', (t) => { let user = new class User extends Model { + name: string; constructor () { super(); this.defineField('name'); } - } + }; let descriptor = Object.getOwnPropertyDescriptor(user, 'name'); t.is(typeof descriptor.get, 'function'); t.is(typeof descriptor.set, 'function'); @@ -18,27 +19,32 @@ test('method `defineField` initializes nullified enumerable property', (t) => { test('method `defineType` defines a custom data type', (t) => { let user = new class User extends Model { + name: string; constructor () { super(); this.defineType('cool', (v) => `${v}-cool`); this.defineField('name', {type: 'cool'}); } - } + }; user.name = 'foo'; t.is(user.name, 'foo-cool'); }); test('method `populate` deeply populates fields', (t) => { class Book extends Model { - constructor (data, options) { - super(data, options); + title: string; + constructor (data) { + super(data); this.defineField('title', {type: 'String'}); this.populate(data); } } class User extends Model { - constructor (data, options) { - super(data, options); + name: string; + book: Book; + books: Book[]; + constructor (data) { + super(data); this.defineField('name', {type: 'String'}); this.defineField('book', {type: Book}); this.defineField('books', {type: [Book]}); @@ -65,15 +71,19 @@ test('method `populate` deeply populates fields', (t) => { test('property `parent` holds an instance of a parent model', (t) => { class Book extends Model { - constructor (data, options) { - super(data, options); + title: string; + constructor (data) { + super(data); this.defineField('title', {type: 'String'}); this.populate(data); } } class User extends Model { - constructor (data, options) { - super(data, options); + name: string; + book: Book; + books: Book[]; + constructor (data) { + super(data); this.defineField('name', {type: 'String'}); this.defineField('book', {type: Book}); this.defineField('books', {type: [Book]}); @@ -92,21 +102,24 @@ test('property `parent` holds an instance of a parent model', (t) => { ] }); t.is(user.parent, null); + t.is(user.propertyIsEnumerable('parent'), false); t.is(user.book.parent, user); t.is(user.books[1].parent, user); }); test('property `root` return the first model in a tree of nested models', (t) => { class Book extends Model { - constructor (data, options) { - super(data, options); + title: string; + constructor (data) { + super(data); this.defineField('title'); this.populate(data); } } class User extends Model { - constructor (data, options) { - super(data, options); + book: Book; + constructor (data) { + super(data); this.defineField('book', {type: Book}); this.populate(data); } @@ -122,15 +135,15 @@ test('property `root` return the first model in a tree of nested models', (t) => test('method `getField` returns an instance of a field at path', (t) => { class Book extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('title', {type: 'String'}); this.populate(data); } } class User extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('name', {type: 'String'}); this.defineField('book', {type: Book}); this.defineField('books', {type: [Book]}); @@ -162,8 +175,8 @@ test('method `getField` returns an instance of a field at path', (t) => { test('method `hasField` returns `true` if the field exists', (t) => { class User extends Model { - constructor (data, options) { - super(data, options); + constructor (data = {}) { + super(); this.defineField('name', {type: 'String'}); this.populate(data); } @@ -175,15 +188,15 @@ test('method `hasField` returns `true` if the field exists', (t) => { test('method `serialize` converts model into a serialized data object', (t) => { class Book extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('title', {type: 'String'}); this.populate(data); } } class User extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('name', {type: 'String'}); this.defineField('book', {type: Book}); this.defineField('books', {type: [Book]}); @@ -202,7 +215,7 @@ test('method `serialize` converts model into a serialized data object', (t) => { } ] }); - t.deepEqual(user.serialize(), { + t.deepEqual(user.serialize() as any, { name: 'foo', book: { title: 'bar' @@ -218,15 +231,15 @@ test('method `serialize` converts model into a serialized data object', (t) => { test('method `flatten` returns an array of fields', async (t) => { class Book extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('title', {type: 'String'}); this.populate(data); } } class User extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('name', {type: 'String'}); this.defineField('book', {type: Book}); this.defineField('books', {type: [Book]}); @@ -259,15 +272,15 @@ test('method `flatten` returns an array of fields', async (t) => { test('method `collect` returns an array of results', (t) => { class Book extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('title', {type: 'String'}); this.populate(data); } } class User extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('name', {type: 'String'}); this.defineField('book', {type: Book}); this.populate(data); @@ -289,15 +302,15 @@ test('method `collect` returns an array of results', (t) => { test('method `scroll` runs the provided handler on each field', (t) => { class Book extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('title', {type: 'String'}); this.populate(data); } } class User extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('name', {type: 'String'}); this.defineField('book', {type: Book}); this.populate(data); @@ -315,15 +328,15 @@ test('method `scroll` runs the provided handler on each field', (t) => { test('method `filter` converts a model into serialized object with only keys that pass the test', (t) => { class Book extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('title', {type: 'String'}); this.populate(data); } } class User extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('name', {type: 'String'}); this.defineField('book', {type: Book}); this.defineField('books', {type: [Book]}); @@ -343,7 +356,7 @@ test('method `filter` converts a model into serialized object with only keys tha ] }); let result = user.filter(({path, field}) => field.value !== 'foo'); - t.deepEqual(result, { + t.deepEqual(result as any, { book: { title: 'bar' }, @@ -358,15 +371,15 @@ test('method `filter` converts a model into serialized object with only keys tha test('method `reset` sets fields to their default values', (t) => { class Book extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('title', {defaultValue: 'foo'}); this.populate(data); } } class User extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('name', {defaultValue: 'bar'}); this.defineField('book', {type: Book, defaultValue: {}}); this.defineField('books', {type: [Book], defaultValue: [null, {}]}); @@ -385,7 +398,7 @@ test('method `reset` sets fields to their default values', (t) => { ] }); user.reset(); - t.deepEqual(user.serialize(), { + t.deepEqual(user.serialize() as any, { name: 'bar', book: { title: 'foo' @@ -401,15 +414,15 @@ test('method `reset` sets fields to their default values', (t) => { test('method `fake` sets fields to their fake values', (t) => { class Book extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('title', {fakeValue: 'foo'}); this.populate(data); } } class User extends Model { - constructor (data, options) { - super(data, options); + constructor (data = {}) { + super(); this.defineField('name', {fakeValue: 'bar'}); this.defineField('book', {type: Book, defaultValue: {}}); this.defineField('books', {type: [Book], defaultValue: [null, {}]}); @@ -418,7 +431,7 @@ test('method `fake` sets fields to their fake values', (t) => { } let user = new User(); user.fake(); - t.deepEqual(user.serialize(), { + t.deepEqual(user.serialize() as any, { name: 'bar', book: { title: 'foo' @@ -434,15 +447,15 @@ test('method `fake` sets fields to their fake values', (t) => { test('method `clear` sets fields to `null`', (t) => { class Book extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('title', {defaultValue: 'foo'}); this.populate(data); } } class User extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('name', {defaultValue: 'bar'}); this.defineField('book', {type: Book, defaultValue: {}}); this.defineField('books', {type: [Book], defaultValue: [null, {}]}); @@ -461,7 +474,7 @@ test('method `clear` sets fields to `null`', (t) => { ] }); user.clear(); - t.deepEqual(user.serialize(), { + t.deepEqual(user.serialize() as any, { name: null, book: null, books: null @@ -470,15 +483,15 @@ test('method `clear` sets fields to `null`', (t) => { test('methods `commit()` and `rollback()` manage committed states', (t) => { class Book extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('title'); this.populate(data); } } class User extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('name'); this.defineField('book', {type: Book}); this.defineField('books', {type: [Book]}); @@ -519,15 +532,15 @@ test('methods `commit()` and `rollback()` manage committed states', (t) => { test('method `equals` returns `true` when the passing object looks the same', (t) => { class Book extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('title'); this.populate(data); } } class User extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('name'); this.defineField('book', {type: Book}); this.defineField('books', {type: [Book]}); @@ -551,16 +564,20 @@ test('method `equals` returns `true` when the passing object looks the same', (t test('method `isChanged` returns `true` if at least one field has been changed', (t) => { class Book extends Model { - constructor (data, options) { - super(data, options); + title: string; + constructor (data) { + super(data); this.defineField('title'); this.populate(data); this.commit(); } } class User extends Model { - constructor (data, options) { - super(data, options); + name: string; + book: Book; + books: Book[]; + constructor (data) { + super(data); this.defineField('name'); this.defineField('book', {type: Book}); this.defineField('books', {type: [Book]}); @@ -587,7 +604,7 @@ test('method `isChanged` returns `true` if at least one field has been changed', t.is(user0.isChanged(), false); user0.name = 'foo-new'; user1.book.title = 'bar-new'; - user2.books[0] = {title: 'baz-new'}; + user2.books[0] = {title: 'baz-new'} as Book; user3.books[1].title = 'baz-new'; t.is(user0.isChanged(), true); t.is(user1.isChanged(), true); @@ -597,15 +614,15 @@ test('method `isChanged` returns `true` if at least one field has been changed', test('method `isNested` returns `true` if nested fields exist', (t) => { class Book extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('title'); this.populate(data); } } class User extends Model { - constructor (data, options) { - super(data, options); + constructor (data = {}) { + super(); this.defineField('name'); this.defineField('books', {type: [Book]}); this.populate(data); @@ -617,15 +634,15 @@ test('method `isNested` returns `true` if nested fields exist', (t) => { test('method `collectErrors` returns an array of field errors', (t) => { class Book extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('title'); this.populate(data); } } class User extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('name'); this.defineField('book', {type: Book}); this.defineField('books', {type: [Book]}); @@ -648,15 +665,15 @@ test('method `collectErrors` returns an array of field errors', (t) => { test('method `applyErrors` sets fields errors', (t) => { class Book extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('title'); this.populate(data); } } class User extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('name'); this.defineField('book', {type: Book}); this.defineField('books', {type: [Book]}); @@ -667,6 +684,7 @@ test('method `applyErrors` sets fields errors', (t) => { book: {}, books: [null, {}] }); + user.applyErrors([ {path: ['name'], errors: [{message: 'foo'}]}, {path: ['book', 'title'], errors: [{message: 'bar'}]}, @@ -679,15 +697,15 @@ test('method `applyErrors` sets fields errors', (t) => { test('methods `isValid` and `hasErrors` tell if errors exist', async (t) => { class Book extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('title'); this.populate(data); } } class User extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('name'); this.defineField('book', {type: Book}); this.defineField('books', {type: [Book]}); @@ -713,15 +731,15 @@ test('method `validate` validates fields and throws an error', async (t) => { message: 'foo' }]; class Book extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('title', {validate}); this.populate(data); } } class User extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('name', {validate}); this.defineField('book0', {type: Book, validate}); this.defineField('books0', {type: [Book], validate}); @@ -737,7 +755,7 @@ test('method `validate` validates fields and throws an error', async (t) => { let errors = [{validator: 'presence', message: 'foo', code: 422}]; await user.validate({quiet: true}); t.throws(user.validate()); - t.deepEqual(user.collectErrors(), [ + t.deepEqual(user.collectErrors() as {}, [ {path: ['name'], errors}, {path: ['book0'], errors}, {path: ['books0'], errors}, @@ -755,16 +773,16 @@ test('method `defineValidator` defines a custom field validator', async (t) => { message: 'foo' }]; class Book extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineValidator('coolness', validator); this.defineField('title', {validate}); this.populate(data); } } class User extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineValidator('coolness', validator); this.defineField('name', {validate}); this.defineField('book', {type: Book, validate}); @@ -776,7 +794,7 @@ test('method `defineValidator` defines a custom field validator', async (t) => { }); let errors = [{validator: 'coolness', message: 'foo', code: 422}]; await user.validate({quiet: true}); - t.deepEqual(user.collectErrors(), [ + t.deepEqual(user.collectErrors() as {}, [ {path: ['name'], errors}, {path: ['book'], errors}, {path: ['book', 'title'], errors}, @@ -789,16 +807,16 @@ test('method `failFast` configures validator to stop validating field on the fir {validator: 'presence', message: 'foo'} ]; class Book extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.failFast(); this.defineField('title', {validate}); this.populate(data); } } class User extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.failFast(); this.defineField('name', {validate}); this.defineField('book', {type: Book}); @@ -816,15 +834,15 @@ test('method `failFast` configures validator to stop validating field on the fir test('method `invalidate` clears fields errors', async (t) => { class Book extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('title'); this.populate(data); } } class User extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('name'); this.defineField('book', {type: Book}); this.defineField('books', {type: [Book]}); @@ -848,16 +866,16 @@ test('method `invalidate` clears fields errors', async (t) => { test('method `clone` returns an exact copy of the original', (t) => { class Book extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('title'); this.populate(data); this.commit(); } } class User extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('name'); this.defineField('book', {type: Book}); this.defineField('books', {type: [Book]}); @@ -889,15 +907,15 @@ test('method `handle` handles field-related errors', async (t) => { foo: 'foo' }]; class Book extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('title', {handle}); this.populate(data); } } class User extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineField('name', {handle}); this.defineField('book0', {type: Book, handle}); this.defineField('books0', {type: [Book], handle}); @@ -911,13 +929,13 @@ test('method `handle` handles field-related errors', async (t) => { books1: [{}] }); let problem0 = new Error(); - let problem1 = new Error(); problem1.code = 422; + let problem1 = new Error() as any; problem1.code = 422; let errors = [{handler: 'block', message: 'foo', code: 422}]; t.throws(user.handle(problem0, {quiet: false})); t.notThrows(user.handle(problem0)); t.notThrows(user.handle(problem1, {quiet: false})); await user.handle(problem0); - t.deepEqual(user.collectErrors(), [ + t.deepEqual(user.collectErrors() as {}, [ {path: ['name'], errors}, {path: ['book0'], errors}, {path: ['books0'], errors}, @@ -936,16 +954,16 @@ test('method `defineHandler` defines a custom field handler', async (t) => { foo: 'foo' }]; class Book extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineHandler('coolness', handler); this.defineField('title', {handle}); this.populate(data); } } class User extends Model { - constructor (data, options) { - super(data, options); + constructor (data) { + super(data); this.defineHandler('coolness', handler); this.defineField('name', {handle}); this.defineField('book', {type: Book}); @@ -960,7 +978,7 @@ test('method `defineHandler` defines a custom field handler', async (t) => { let problem = new Error('cool'); let errors = [{handler: 'coolness', message: 'foo', code: 422}]; await user.handle(problem); - t.deepEqual(user.collectErrors(), [ + t.deepEqual(user.collectErrors() as {}, [ {path: ['name'], errors}, {path: ['book', 'title'], errors}, {path: ['books', 0, 'title'], errors}, diff --git a/tsconfig.json b/tsconfig.json index 96704f7..af0fcf9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,14 +7,6 @@ "sourceMap": true, "outDir": "dist", "declaration": true, - "lib": ["es2015.promise", "es5"] - }, - "include": [ - "src/**/*" - ], - "exclude": [ - "node_modules", - "tests", - "example" - ] + "lib": ["es2015.promise", "es2015.iterable", "es5"] + } } diff --git a/yarn.lock b/yarn.lock index 0ddc387..faa17c2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,10 @@ # yarn lockfile v1 +"@types/node@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.0.tgz#c081147b109da5f9c57af70571771be97ce9c0ba" + abbrev@1: version "1.0.9" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" @@ -225,6 +229,14 @@ babel-code-frame@^6.16.0: esutils "^2.0.2" js-tokens "^2.0.0" +babel-code-frame@^6.20.0: + version "6.20.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.20.0.tgz#b968f839090f9a8bc6d41938fb96cb84f7387b26" + dependencies: + chalk "^1.1.0" + esutils "^2.0.2" + js-tokens "^2.0.0" + babel-core@^6.17.0, babel-core@^6.18.0: version "6.18.2" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.18.2.tgz#d8bb14dd6986fa4f3566a26ceda3964fa0e04e5b" @@ -985,6 +997,10 @@ code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" +colors@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + combined-stream@^1.0.5, combined-stream@~1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" @@ -1119,6 +1135,10 @@ detect-indent@^4.0.0: dependencies: repeating "^2.0.0" +diff@^3.0.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" + dot-prop@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" @@ -1251,6 +1271,12 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" +findup-sync@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16" + dependencies: + glob "~5.0.0" + fn-name@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7" @@ -1358,7 +1384,7 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" -glob@^7.0.3, glob@^7.0.5: +glob@^7.0.3, glob@^7.0.5, glob@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" dependencies: @@ -1369,6 +1395,16 @@ glob@^7.0.3, glob@^7.0.5: once "^1.3.0" path-is-absolute "^1.0.0" +glob@~5.0.0: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + globals@^9.0.0: version "9.14.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.14.0.tgz#8859936af0038741263053b39d0e76ca241e4034" @@ -1411,9 +1447,9 @@ graceful-fs@^4.1.2: version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" -handleable@^0.19.0: - version "0.19.0" - resolved "https://registry.yarnpkg.com/handleable/-/handleable-0.19.0.tgz#de3e435aff5c6d1339951719c639afcb6eddd3eb" +handleable@^0.20.0: + version "0.20.0" + resolved "https://registry.yarnpkg.com/handleable/-/handleable-0.20.0.tgz#eac46cc2c9c86aa9b01a10558f5130c8644e0f8c" dependencies: lodash.merge "4.6.0" @@ -1869,13 +1905,13 @@ mime-types@^2.1.12, mime-types@~2.1.7: dependencies: mime-db "~1.25.0" -minimatch@^3.0.0, minimatch@^3.0.2: +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" dependencies: brace-expansion "^1.0.0" -minimist@0.0.8: +minimist@0.0.8, minimist@~0.0.1: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" @@ -1998,6 +2034,13 @@ onetime@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" +optimist@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + option-chain@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/option-chain/-/option-chain-0.1.1.tgz#e9b811e006f1c0f54802f28295bfc8970f8dcfbd" @@ -2397,6 +2440,10 @@ resolve-from@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" +resolve@^1.1.7: + version "1.2.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.2.0.tgz#9589c3f2f6149d1417a40becc1663db6ec6bc26c" + restore-cursor@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" @@ -2480,6 +2527,10 @@ spdx-license-ids@^1.0.2: version "1.2.2" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" +sprintf-js@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + sshpk@^1.7.0: version "1.10.1" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.1.tgz#30e1a5d329244974a1af61511339d595af6638b0" @@ -2632,6 +2683,20 @@ trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" +tslint@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-4.3.1.tgz#28f679c53ca4b273688bcb6fcf0dde7ff1bb2169" + dependencies: + babel-code-frame "^6.20.0" + colors "^1.1.2" + diff "^3.0.1" + findup-sync "~0.3.0" + glob "^7.1.1" + optimist "~0.6.0" + resolve "^1.1.7" + underscore.string "^3.3.4" + update-notifier "^1.0.2" + tunnel-agent@~0.4.1: version "0.4.3" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" @@ -2660,6 +2725,13 @@ uid2@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82" +underscore.string@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.4.tgz#2c2a3f9f83e64762fdc45e6ceac65142864213db" + dependencies: + sprintf-js "^1.0.3" + util-deprecate "^1.0.2" + unique-temp-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz#6dce95b2681ca003eebfb304a415f9cbabcc5385" @@ -2672,7 +2744,7 @@ unzip-response@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" -update-notifier@^1.0.0: +update-notifier@^1.0.0, update-notifier@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a" dependencies: @@ -2691,7 +2763,7 @@ url-parse-lax@^1.0.0: dependencies: prepend-http "^1.0.1" -util-deprecate@~1.0.1: +util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -2741,6 +2813,10 @@ widest-line@^1.0.0: dependencies: string-width "^1.0.1" +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" From 1a4f7c882eecec83f8d3a37316a13246fbdc2b20 Mon Sep 17 00:00:00 2001 From: xpeper Date: Fri, 13 Jan 2017 18:26:53 +0100 Subject: [PATCH 152/219] nested field hasErrors() bug fix --- dist/src/fields.js | 3 ++- dist/src/fields.js.map | 2 +- dist/tests/models.js | 17 ++++++++++------- dist/tests/models.js.map | 2 +- package.json | 2 +- src/fields.ts | 3 ++- tests/models.ts | 17 ++++++++++------- 7 files changed, 27 insertions(+), 19 deletions(-) diff --git a/dist/src/fields.js b/dist/src/fields.js index e7314bd..f9f2095 100644 --- a/dist/src/fields.js +++ b/dist/src/fields.js @@ -250,11 +250,12 @@ var Field = (function () { else if (!this.isNested()) { return false; } - else { + else if (typeable_1.isPresent(this.value)) { return typeable_1.toArray(this.value) .filter(function (f) { return !!f; }) .some(function (f) { return f.hasErrors(); }); } + return false; }; Field.prototype.isValid = function () { return !this.hasErrors(); diff --git a/dist/src/fields.js.map b/dist/src/fields.js.map index c917247..9a55744 100644 --- a/dist/src/fields.js.map +++ b/dist/src/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/models.js b/dist/tests/models.js index 5a69b2c..5c1f054 100644 --- a/dist/tests/models.js +++ b/dist/tests/models.js @@ -832,7 +832,7 @@ ava_1["default"]('method `applyErrors` sets fields errors', function (t) { t.deepEqual(user.getField('books', 1, 'title').errors, [{ message: 'baz' }]); }); ava_1["default"]('methods `isValid` and `hasErrors` tell if errors exist', function (t) { return __awaiter(_this, void 0, void 0, function () { - var Book, User, user; + var Book, User, user0, user1; return __generator(this, function (_a) { Book = (function (_super) { __extends(Book, _super); @@ -856,17 +856,20 @@ ava_1["default"]('methods `isValid` and `hasErrors` tell if errors exist', funct } return User; }(src_1.Model)); - user = new User({ + user0 = new User({ book: {}, books: [null, {}] }); - t.is(user.hasErrors(), false); - t.is(user.isValid(), true); - user.applyErrors([ + user1 = new User(); + t.is(user0.hasErrors(), false); + t.is(user1.hasErrors(), false); + t.is(user0.isValid(), true); + t.is(user1.isValid(), true); + user0.applyErrors([ { path: ['books', 1, 'title'], errors: [{ message: 'baz' }] } ]); - t.is(user.hasErrors(), true); - t.is(user.isValid(), false); + t.is(user0.hasErrors(), true); + t.is(user0.isValid(), false); return [2 /*return*/]; }); }); }); diff --git a/dist/tests/models.js.map b/dist/tests/models.js.map index fd3c490..a899409 100644 --- a/dist/tests/models.js.map +++ b/dist/tests/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 8727537..27e89d1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.4.0", + "version": "1.4.1", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", diff --git a/src/fields.ts b/src/fields.ts index 5af10be..bf705f0 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -393,11 +393,12 @@ export class Field { else if (!this.isNested()) { return false; } - else { + else if (isPresent(this.value)) { return toArray(this.value) .filter((f) => !!f) .some((f) => f.hasErrors()); } + return false; } /* diff --git a/tests/models.ts b/tests/models.ts index 70cf83e..c9bdd55 100644 --- a/tests/models.ts +++ b/tests/models.ts @@ -704,7 +704,7 @@ test('methods `isValid` and `hasErrors` tell if errors exist', async (t) => { } } class User extends Model { - constructor (data) { + constructor (data?) { super(data); this.defineField('name'); this.defineField('book', {type: Book}); @@ -712,17 +712,20 @@ test('methods `isValid` and `hasErrors` tell if errors exist', async (t) => { this.populate(data); } } - let user = new User({ + let user0 = new User({ book: {}, books: [null, {}] }); - t.is(user.hasErrors(), false); - t.is(user.isValid(), true); - user.applyErrors([ + let user1 = new User(); + t.is(user0.hasErrors(), false); + t.is(user1.hasErrors(), false); + t.is(user0.isValid(), true); + t.is(user1.isValid(), true); + user0.applyErrors([ {path: ['books', 1, 'title'], errors: [{message: 'baz'}]} ]); - t.is(user.hasErrors(), true); - t.is(user.isValid(), false); + t.is(user0.hasErrors(), true); + t.is(user0.isValid(), false); }); test('method `validate` validates fields and throws an error', async (t) => { From 1e1536219e001ce9fd66edc8fd3b860215f0420e Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 14 Jan 2017 10:27:38 +0100 Subject: [PATCH 153/219] clone() data serialization fix --- dist/src/fields.js | 2 +- dist/src/fields.js.map | 2 +- dist/src/models.d.ts | 5 +++-- dist/src/models.js | 14 ++++++-------- dist/src/models.js.map | 2 +- dist/tests/models.js | 12 ++++++++++-- dist/tests/models.js.map | 2 +- package.json | 2 +- src/fields.ts | 2 +- src/models.ts | 17 ++++++++--------- tests/models.ts | 20 ++++++++++++++++---- 11 files changed, 49 insertions(+), 31 deletions(-) diff --git a/dist/src/fields.js b/dist/src/fields.js index f9f2095..8be6b1b 100644 --- a/dist/src/fields.js +++ b/dist/src/fields.js @@ -124,7 +124,7 @@ var Field = (function () { } if (this.isNested()) { var Klass_1 = typeable_1.isArray(type) ? type[0] : type; - var toModel = function (d) { return new Klass_1(utils_1.merge(d, { parent: _this.owner })); }; + var toModel = function (d) { return new Klass_1(utils_1.merge({}, d, { parent: _this.owner })); }; converter = typeable_1.isArray(type) ? [toModel] : toModel; } return typeable_1.cast(data, converter); diff --git a/dist/src/fields.js.map b/dist/src/fields.js.map index 9a55744..51f2183 100644 --- a/dist/src/fields.js.map +++ b/dist/src/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAA6F;AAC7F,iCAAkD;AAClD,2CAAuD;AACvD,yCAAkD;AAClD,mCAA+B;AAmC/B;IAkBE,eAAoB,MAAoB;QAAxC,iBAgDC;QA/CC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAEjB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;YACrC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;SACnC,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;YACnC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE;YAC9B,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE;YAC1C,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE;YAC9B,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE;YACxC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE;SAC/B,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE;YACtC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE;SAC7B,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;YACnC,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,SAAS,EAAE,EAAhB,CAAgB;YAC3B,GAAG,EAAE,UAAC,CAAC,IAAK,OAAA,KAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAjB,CAAiB;YAC7B,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE;YAC1C,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,gBAAgB,EAAE,EAAvB,CAAuB;YAClC,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE;YACvC,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,aAAa,EAAE,EAApB,CAAoB;YAC/B,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE;YAC1C,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,YAAY,EAAjB,CAAiB;YAC5B,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;YAClC,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,EAAzB,CAAyB;YACpC,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;YACnC,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,EAA1B,CAA0B;YACrC,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;IAMS,gCAAgB,GAA1B;QACM,IAAA,iBAAqC,EAApC,0BAAU,EAAE,sBAAQ,CAAiB;QAC1C,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,MAAM,CAAC,IAAI,uBAAS,CAAC,EAAC,UAAU,YAAA,EAAE,QAAQ,UAAA,EAAE,OAAO,SAAA,EAAC,CAAC,CAAC;IACxD,CAAC;IAMS,8BAAc,GAAxB;QACM,IAAA,iBAAmC,EAAlC,sBAAQ,EAAE,sBAAQ,CAAiB;QACxC,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,MAAM,CAAC,IAAI,oBAAO,CAAC,EAAC,QAAQ,UAAA,EAAE,QAAQ,UAAA,EAAE,OAAO,SAAA,EAAC,CAAC,CAAC;IACpD,CAAC;IAMS,yBAAS,GAAnB;QACE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QAEjB,IAAA,sBAAG,CAAiB;QACzB,EAAE,CAAC,CAAC,qBAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMS,yBAAS,GAAnB,UAAqB,IAAI;QACvB,EAAE,CAAC,CAAC,qBAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAEI,IAAA,sBAAG,CAAiB;QACzB,EAAE,CAAC,CAAC,qBAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEnC,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAMS,qBAAK,GAAf,UAAiB,IAAI,EAAE,IAAI;QAA3B,iBAgBC;QAfC,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,EAAE,CAAC,CAAC,CAAC,kBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC;QACd,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACpB,IAAI,OAAK,GAAG,kBAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC3C,IAAI,OAAO,GAAG,UAAC,CAAC,IAAK,OAAA,IAAI,OAAK,CAC5B,aAAK,CAAC,EAAE,EAAE,CAAC,EAAE,EAAC,MAAM,EAAE,KAAI,CAAC,KAAK,EAAC,CAAC,CACnC,EAFoB,CAEpB,CAAC;YACF,SAAS,GAAG,kBAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;QAClD,CAAC;QAED,MAAM,CAAC,eAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC/B,CAAC;IAMS,gCAAgB,GAA1B;QACE,IAAI,IAAI,GAAG,IAAI,CAAC;QAEX,IAAA,wCAAY,CAAiB;QAClC,EAAE,CAAC,CAAC,qBAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,GAAG,YAAY,CAAC;QACtB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMS,6BAAa,GAAvB;QACE,IAAI,IAAI,GAAG,IAAI,CAAC;QAEX,IAAA,kCAAS,CAAiB;QAC/B,EAAE,CAAC,CAAC,qBAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,GAAG,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,qBAAK,GAAZ;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAErC,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,oBAAI,GAAX;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC9B,CAAC;QAED,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;aACxB,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,YAAY,cAAK,EAApB,CAAoB,CAAC;aACrC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,IAAI,EAAE,EAAV,CAAU,CAAC,CAAC;QAE5B,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,qBAAK,GAAZ;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,sBAAM,GAAb;QACE,EAAE,CAAC,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACxB,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC;iBAChB,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,IAAI,CAAC,CAAC,MAAM,EAAb,CAAa,CAAC;iBAC5B,OAAO,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,EAAE,EAAV,CAAU,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,iBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE1C,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,wBAAQ,GAAf;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAE/B,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,sBAAM,GAAb,UAAe,IAAI;QACjB,IAAI,KAAK,GAAG,IAAI,YAAY,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAEtD,MAAM,CAAC,eAAO,CACZ,iBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EACrB,iBAAS,CAAC,KAAK,CAAC,CACjB,CAAC;IACJ,CAAC;IAMM,yBAAS,GAAhB;QACE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAMM,wBAAQ,GAAf;QACE,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,EAAE,CAAC,CAAC,kBAAO,CAAC,IAAI,CAAC,CAAC;YAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAElC,MAAM,CAAC,CACL,oBAAS,CAAC,IAAI,CAAC;eACZ,oBAAS,CAAC,IAAI,CAAC,SAAS,CAAC;eACzB,CACD,IAAI,CAAC,SAAS,YAAY,cAAK;mBAC5B,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,cAAK,CACxC,CACF,CAAC;IACJ,CAAC;IASY,wBAAQ,GAArB;;;;;4BACE,MAAM,eAAA,OAAO,CAAC,GAAG,CACf,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;6BACxB,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,YAAY,cAAK,EAApB,CAAoB,CAAC;6BACrC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,EAA3B,CAA2B,CAAC,CAC7C,EAAA;;wBAJD,UAIE;wBAEF,KAAA,IAAI,CAAA;wBAAU,MAAM,eAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAC1C,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,OAAO,CAAC,QAAQ,CACtB,EAAA;;wBAHD,GAAK,MAAM,YAGV,CAAC;wBAEF,MAAM,gBAAC,IAAI,EAAC;;;;KACb;IASY,sBAAM,GAAnB,UAAqB,KAAU;;;;;4BAC7B,MAAM,eAAA,OAAO,CAAC,GAAG,CACf,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;6BACxB,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,YAAY,cAAK,EAApB,CAAoB,CAAC;6BACrC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAjB,CAAiB,CAAC,CACnC,EAAA;;wBAJD,UAIE;wBAEF,KAAA,IAAI,CAAA;wBAAU,MAAM,eAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CACtC,KAAK,EACL,IAAI,CAAC,OAAO,CAAC,MAAM,CACpB,EAAA;;wBAHD,GAAK,MAAM,YAGV,CAAC;wBAEF,MAAM,gBAAC,IAAI,EAAC;;;;KACb;IAMM,0BAAU,GAAjB;QACE,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;aACxB,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,YAAY,cAAK,EAApB,CAAoB,CAAC;aACrC,OAAO,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,UAAU,EAAE,EAAhB,CAAgB,CAAC,CAAC;QAEtC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAEjB,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,yBAAS,GAAhB;QACE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,CAAC,oBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC;iBACvB,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,EAAH,CAAG,CAAC;iBAClB,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,SAAS,EAAE,EAAb,CAAa,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,CAAC,KAAK,CAAC;IACf,CAAC;IAMM,uBAAO,GAAd;QACE,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC;IAEH,YAAC;AAAD,CAAC,AApXD,IAoXC;AApXY,sBAAK"} \ No newline at end of file diff --git a/dist/src/models.d.ts b/dist/src/models.d.ts index 163bd8c..d1cfa6f 100644 --- a/dist/src/models.d.ts +++ b/dist/src/models.d.ts @@ -11,6 +11,7 @@ export interface FieldErrorRef { } export interface ModelRecipe { parent?: Model; + [key: string]: any; } export declare abstract class Model { protected _fields: { @@ -32,7 +33,7 @@ export declare abstract class Model { protected _getRootModel(): Model; protected _createField(recipe?: FieldRecipe): Field; protected _createValidationError(message?: string, code?: number): FieldError; - protected _createModel(data?: {}, recipe?: ModelRecipe): any; + protected _createModel(recipe?: ModelRecipe): any; failFast(fail?: boolean): void; defineField(name: string, recipe?: FieldRecipe): void; defineType(name: string, converter: (v?) => any): void; @@ -65,5 +66,5 @@ export declare abstract class Model { hasErrors(): boolean; isValid(): boolean; invalidate(): this; - clone(): this; + clone(data?: {}): this; } diff --git a/dist/src/models.js b/dist/src/models.js index 9280cbe..52b28d7 100644 --- a/dist/src/models.js +++ b/dist/src/models.js @@ -83,7 +83,7 @@ var Model = (function () { Model.prototype._createField = function (recipe) { if (recipe === void 0) { recipe = {}; } var type = recipe.type; - return new fields_1.Field(utils_1.merge(recipe, { + return new fields_1.Field(utils_1.merge({}, recipe, { type: this._types[type] || type, owner: this, validators: this._validators, @@ -98,10 +98,9 @@ var Model = (function () { error.code = code; return error; }; - Model.prototype._createModel = function (data, recipe) { - if (data === void 0) { data = {}; } + Model.prototype._createModel = function (recipe) { if (recipe === void 0) { recipe = {}; } - return new this.constructor(utils_1.merge(data, recipe)); + return new this.constructor(recipe); }; Model.prototype.failFast = function (fail) { if (fail === void 0) { fail = true; } @@ -325,10 +324,9 @@ var Model = (function () { .forEach(function (name) { return _this._fields[name].invalidate(); }); return this; }; - Model.prototype.clone = function () { - return this._createModel(this, { - parent: this.parent - }); + Model.prototype.clone = function (data) { + if (data === void 0) { data = {}; } + return this._createModel(utils_1.merge({}, this.serialize(), { parent: this.parent }, data)); }; return Model; }()); diff --git a/dist/src/models.js.map b/dist/src/models.js.map index a3504ff..ab9d0eb 100644 --- a/dist/src/models.js.map +++ b/dist/src/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAoE;AAGpE,mCAAwD;AACxD,iCAAkD;AAgClD;IAaE,eAAoB,MAAwB;QAAxB,uBAAA,EAAA,WAAwB;QAA5C,iBA6BC;QA5BC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;YACpC,KAAK,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI;YAC3C,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;YAClC,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,aAAa,EAAE,EAApB,CAAoB;SAChC,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;YACrC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;YACpC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE;YACzC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE;YACvC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE;YACvC,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;IACL,CAAC;IAMS,6BAAa,GAAvB;QACE,IAAI,IAAI,GAAU,IAAI,CAAC;QACvB,GAAG,CAAC;YACF,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAChB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;YACrB,CAAC;YACD,IAAI,CAAC,CAAC;gBACJ,MAAM,CAAC,IAAI,CAAC;YACd,CAAC;QACH,CAAC,QAAQ,IAAI,EAAE;IACjB,CAAC;IAOS,4BAAY,GAAtB,UAAwB,MAAwB;QAAxB,uBAAA,EAAA,WAAwB;QACzC,IAAA,kBAAI,CAAW;QAEpB,MAAM,CAAC,IAAI,cAAK,CACd,aAAK,CAAC,MAAM,EAAE;YACZ,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI;YAC/B,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,QAAQ,EAAE,IAAI,CAAC,SAAS;SACzB,CAAC,CACH,CAAC;IACJ,CAAC;IAMS,sCAAsB,GAAhC,UAAkC,OAA6B,EAAE,IAAU;QAAzC,wBAAA,EAAA,6BAA6B;QAAE,qBAAA,EAAA,UAAU;QACzE,IAAI,KAAK,GAAe,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QAElB,MAAM,CAAC,KAAK,CAAC;IACf,CAAC;IAOS,4BAAY,GAAtB,UAAwB,IAAS,EAAE,MAAwB;QAAnC,qBAAA,EAAA,SAAS;QAAE,uBAAA,EAAA,WAAwB;QACzD,MAAM,CAAC,IAAK,IAAI,CAAC,WAAmB,CAClC,aAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CACpB,CAAC;IACJ,CAAC;IAMM,wBAAQ,GAAf,UAAiB,IAAoB;QAApB,qBAAA,EAAA,WAAoB;QACnC,IAAI,CAAC,SAAS,GAAG,oBAAS,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAMM,2BAAW,GAAlB,UAAoB,IAAY,EAAE,MAAoB;QACpD,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAEtC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE;YAChC,GAAG,EAAE,cAAM,OAAA,KAAK,CAAC,KAAK,EAAX,CAAW;YACtB,GAAG,EAAE,UAAC,CAAC,IAAK,OAAA,KAAK,CAAC,KAAK,GAAG,CAAC,EAAf,CAAe;YAC3B,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IAC7B,CAAC;IAMM,0BAAU,GAAjB,UAAmB,IAAY,EAAE,SAAsB;QACrD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IAChC,CAAC;IAMM,+BAAe,GAAtB,UAAwB,IAAY,EAAE,OAAgE;QACpG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACnC,CAAC;IAMM,6BAAa,GAApB,UAAsB,IAAY,EAAE,OAA8D;QAChG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACjC,CAAC;IAMM,wBAAQ,GAAf;QAAiB,cAAO;aAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;YAAP,yBAAO;;QACtB,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAEpD,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAZ,CAAY,EAAE,IAAI,CAAC,CAAC;QACtD,MAAM,CAAC,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IACtE,CAAC;IAMM,wBAAQ,GAAf;QAAiB,cAAO;aAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;YAAP,yBAAO;;QACtB,MAAM,CAAC,CAAC,sBAAW,CAAC,IAAI,CAAC,QAAQ,OAAb,IAAI,EAAa,IAAI,EAAE,CAAC;IAC9C,CAAC;IAMM,wBAAQ,GAAf,UAAiB,IAAS;QAA1B,iBAMC;QANgB,qBAAA,EAAA,SAAS;QACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;aACd,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAjB,CAAiB,CAAC;aAChC,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,IAAI,CAAC,GAAG,iBAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAlC,CAAkC,CAAC,CAAC;QAEzD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,yBAAS,GAAhB;QACE,MAAM,CAAC,iBAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAMM,uBAAO,GAAd,UAAgB,MAAqB;QAArC,iBA6BC;QA7Be,uBAAA,EAAA,WAAqB;QACnC,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAC,IAAI;YACrC,IAAI,KAAK,GAAG,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YACtB,IAAI,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAExB,MAAM,CAAC,IAAI,CAAC,EAAC,IAAI,MAAA,EAAE,KAAK,OAAA,EAAC,CAAC,CAAC;YAE3B,EAAE,CAAC,CAAC,oBAAS,CAAC,KAAK,CAAC,IAAI,oBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACxC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC;oBACpC,MAAM,GAAG,MAAM,CAAC,MAAM,CACpB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CACpB,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC,CAAC,kBAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC;oBAC7D,MAAM,GAAG,MAAM,CAAC,MAAM,CACpB,KAAK;yBACF,GAAG,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAxC,CAAwC,CAAC;yBACvD,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,kBAAO,CAAC,CAAC,CAAC,EAAV,CAAU,CAAC;yBACzB,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAX,CAAW,CAAC,CACjC,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC;IAChB,CAAC;IAMM,uBAAO,GAAd,UAAgB,OAAiC;QAC/C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAMM,sBAAM,GAAb,UAAe,OAAkC;QAC/C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAC5C,CAAC;IAOM,sBAAM,GAAb,UAAe,IAAkC;QAC/C,IAAI,IAAI,GAAG,iBAAS,CAAC,IAAI,CAAC,CAAC;QAE3B,IAAI,CAAC,OAAO,EAAE;aACX,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAA7B,CAA6B,CAAC;aAC7C,MAAM,CAAC,UAAC,KAAK,IAAK,OAAA,CAAC,IAAI,CAAC,KAAK,CAAC,EAAZ,CAAY,CAAC;aAC/B,OAAO,CAAC,UAAC,KAAK;YACb,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,EAAJ,CAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEL,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,qBAAK,GAAL;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAA1B,CAA0B,CAAC,CAAC;QAEjD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,oBAAI,GAAJ;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAzB,CAAyB,CAAC,CAAC;QAEhD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,qBAAK,GAAL;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAA1B,CAA0B,CAAC,CAAC;QAEjD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,sBAAM,GAAN;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAA3B,CAA2B,CAAC,CAAC;QAElD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,wBAAQ,GAAR;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAA7B,CAA6B,CAAC,CAAC;QAEpD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAOD,sBAAM,GAAN,UAAQ,KAAU;QAChB,MAAM,CAAC,eAAO,CACZ,iBAAS,CAAC,IAAI,CAAC,EACf,iBAAS,CAAC,KAAK,CAAC,CACjB,CAAC;IACJ,CAAC;IAMD,yBAAS,GAAT;QAAA,iBAGC;QAFC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7B,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAA9B,CAA8B,CAAC,CAAC;IACpD,CAAC;IAMD,wBAAQ,GAAR;QAAA,iBAGC;QAFC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7B,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAA7B,CAA6B,CAAC,CAAC;IACnD,CAAC;IAMK,wBAAQ,GAAd,UAAgB,EAIV;YAHJ,oCAAa,EAAb,kCAAa;;gBAIT,MAAM;;;;iCAAG,IAAI,CAAC,OAAO;wBAEzB,MAAM,eAAA,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;iCAChB,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAApB,CAAoB,CAAC,CACpC,EAAA;;wBAHD,UAGE;wBAEF,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;4BAC/B,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;wBACtC,CAAC;wBACD,MAAM,gBAAC,IAAI,EAAC;;;;KACb;IAMK,sBAAM,GAAZ,UAAc,KAAU,EAAE,EAIpB;YAHJ,oCAAY,EAAZ,iCAAY;;gBAOR,MAAM;;;;wBAHV,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;4BAAC,MAAM,gBAAC,IAAI,EAAC;wBACxB,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;4BAAC,MAAM,gBAAC,IAAI,EAAC;iCAEvB,IAAI,CAAC,OAAO;wBACzB,MAAM,eAAA,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;iCAChB,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC,CACvC,EAAA;;wBAHD,UAGE;wBAEF,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;4BAC/B,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;wBACtC,CAAC;wBACD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;4BAC3B,MAAM,KAAK,CAAC;wBACd,CAAC;wBACD,MAAM,gBAAC,IAAI,EAAC;;;;KACb;IAMD,6BAAa,GAAb;QACE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;aAClB,GAAG,CAAC,UAAC,EAAa;gBAAZ,cAAI,EAAE,gBAAK;YAAM,OAAA,CAAC,EAAC,IAAI,MAAA,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAmB,CAAA;QAA/C,CAA+C,CAAC;aACvE,MAAM,CAAC,UAAC,EAAc;gBAAb,cAAI,EAAE,kBAAM;YAAM,OAAA,MAAM,CAAC,MAAM,GAAG,CAAC;QAAjB,CAAiB,CAAC,CAAC;IACnD,CAAC;IAMD,2BAAW,GAAX,UAAa,MAA4B;QAAzC,iBASC;QATY,uBAAA,EAAA,WAA4B;QACvC,MAAM,CAAC,OAAO,CAAC,UAAC,KAAK;YACnB,IAAI,KAAK,GAAG,KAAI,CAAC,QAAQ,OAAb,KAAI,EAAa,KAAK,CAAC,IAAI,CAAC,CAAC;YACzC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gBACV,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,yBAAS,GAAT;QAAA,iBAGC;QAFC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7B,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAA9B,CAA8B,CAAC,CAAC;IACpD,CAAC;IAMD,uBAAO,GAAP;QACE,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC;IAMD,0BAAU,GAAV;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAA/B,CAA+B,CAAC,CAAC;QAEtD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,qBAAK,GAAL;QACE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;IACL,CAAC;IAEH,YAAC;AAAD,CAAC,AA9cD,IA8cC;AA9cqB,sBAAK"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/models.js b/dist/tests/models.js index 5c1f054..bb43f80 100644 --- a/dist/tests/models.js +++ b/dist/tests/models.js @@ -1088,7 +1088,9 @@ ava_1["default"]('method `clone` returns an exact copy of the original', functio } return User; }(src_1.Model)); + var parent = new Book(); var user = new User({ + parent: parent, name: 'foo', book: { title: 'bar' @@ -1100,8 +1102,14 @@ ava_1["default"]('method `clone` returns an exact copy of the original', functio } ] }); - t.is(user.clone() !== user, true); - t.is(user.equals(user), true); + var clone0 = user.clone(); + var clone1 = user.clone({ book: { title: 'foo' } }); + t.is(clone0 !== user, true); + t.is(clone0.equals(user), true); + t.is(clone0.book.parent, clone0); + t.is(clone0.parent, parent); + t.is(clone0.parent, parent); + t.is(clone1.book.title, 'foo'); }); ava_1["default"]('method `handle` handles field-related errors', function (t) { return __awaiter(_this, void 0, void 0, function () { var _this = this; diff --git a/dist/tests/models.js.map b/dist/tests/models.js.map index a899409..6f42208 100644 --- a/dist/tests/models.js.map +++ b/dist/tests/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 27e89d1..8b70f76 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.4.1", + "version": "1.4.2", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", diff --git a/src/fields.ts b/src/fields.ts index bf705f0..6f7c104 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -177,7 +177,7 @@ export class Field { if (this.isNested()) { let Klass = isArray(type) ? type[0] : type; let toModel = (d) => new Klass( - merge(d, {parent: this.owner}) + merge({}, d, {parent: this.owner}) ); converter = isArray(type) ? [toModel] : toModel; } diff --git a/src/models.ts b/src/models.ts index 1106cc3..e79f27c 100644 --- a/src/models.ts +++ b/src/models.ts @@ -28,6 +28,7 @@ export interface FieldErrorRef { export interface ModelRecipe { parent?: Model; + [key: string]: any; } /* @@ -103,7 +104,7 @@ export abstract class Model { let {type} = recipe; return new Field( - merge(recipe, { + merge({}, recipe, { type: this._types[type] || type, owner: this, validators: this._validators, @@ -129,10 +130,8 @@ export abstract class Model { * extending this class. */ - protected _createModel (data = {}, recipe: ModelRecipe = {}) { - return new (this.constructor as any)( - merge(data, recipe) - ); + protected _createModel (recipe: ModelRecipe = {}) { + return new (this.constructor as any)(recipe); } /* @@ -490,10 +489,10 @@ export abstract class Model { * Returns a new Model instance which is the exact copy of the original. */ - clone (): this { - return this._createModel(this, { - parent: this.parent - }); + clone (data = {}): this { + return this._createModel( + merge({}, this.serialize(), {parent: this.parent}, data) + ); } } diff --git a/tests/models.ts b/tests/models.ts index c9bdd55..0647e06 100644 --- a/tests/models.ts +++ b/tests/models.ts @@ -869,7 +869,8 @@ test('method `invalidate` clears fields errors', async (t) => { test('method `clone` returns an exact copy of the original', (t) => { class Book extends Model { - constructor (data) { + title: string; + constructor (data?) { super(data); this.defineField('title'); this.populate(data); @@ -877,7 +878,10 @@ test('method `clone` returns an exact copy of the original', (t) => { } } class User extends Model { - constructor (data) { + name: string; + book: Book; + books: Book[]; + constructor (data?) { super(data); this.defineField('name'); this.defineField('book', {type: Book}); @@ -886,7 +890,9 @@ test('method `clone` returns an exact copy of the original', (t) => { this.commit(); } } + let parent = new Book(); let user = new User({ + parent, // fake parent name: 'foo', book: { title: 'bar' @@ -898,8 +904,14 @@ test('method `clone` returns an exact copy of the original', (t) => { } ] }); - t.is(user.clone() !== user, true); - t.is(user.equals(user), true); + let clone0 = user.clone(); + let clone1 = user.clone({book: {title: 'foo'}}); + t.is(clone0 !== user, true); + t.is(clone0.equals(user), true); + t.is(clone0.book.parent, clone0); + t.is(clone0.parent, parent); + t.is(clone0.parent, parent); + t.is(clone1.book.title, 'foo'); }); test('method `handle` handles field-related errors', async (t) => { From 799e29a21f8548634920fa1990fbd4c4c796ba53 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 14 Jan 2017 21:19:02 +0100 Subject: [PATCH 154/219] handle() should not throw error on nested field without `handle` options --- README.md | 3 ++- dist/src/fields.js | 2 +- dist/src/fields.js.map | 2 +- dist/tests/models.js | 16 ++++++++++++++-- dist/tests/models.js.map | 2 +- package.json | 2 +- src/fields.ts | 2 +- src/models.ts | 2 +- tests/models.ts | 11 ++++++++++- 9 files changed, 32 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index e9814ca..e9f61cf 100644 --- a/README.md +++ b/README.md @@ -369,13 +369,14 @@ graphql(schema, '{hello}', root).then((response) => { ### Model Class -**Model({parent})** +**Model({parent, ...data})** > Abstract class which represents a strongly-typed JavaScript object. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ | parent | Model | No | - | Parent model instance. +| data | Object | No | - | Data for populating model fields. ```js class User extends Model { diff --git a/dist/src/fields.js b/dist/src/fields.js index 8be6b1b..02b94d1 100644 --- a/dist/src/fields.js +++ b/dist/src/fields.js @@ -224,7 +224,7 @@ var Field = (function () { switch (_b.label) { case 0: return [4 /*yield*/, Promise.all((typeable_1.toArray(this.value) || []) .filter(function (doc) { return doc instanceof models_1.Model; }) - .map(function (doc) { return doc.handle(error); }))]; + .map(function (doc) { return doc.handle(error); }))["catch"](function () { })]; case 1: _b.sent(); _a = this; diff --git a/dist/src/fields.js.map b/dist/src/fields.js.map index 51f2183..bdf5166 100644 --- a/dist/src/fields.js.map +++ b/dist/src/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAA6F;AAC7F,iCAAkD;AAClD,2CAAuD;AACvD,yCAAkD;AAClD,mCAA+B;AAmC/B;IAkBE,eAAoB,MAAoB;QAAxC,iBAgDC;QA/CC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAEjB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;YACrC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;SACnC,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;YACnC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE;YAC9B,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE;YAC1C,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE;YAC9B,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE;YACxC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE;SAC/B,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE;YACtC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE;SAC7B,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;YACnC,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,SAAS,EAAE,EAAhB,CAAgB;YAC3B,GAAG,EAAE,UAAC,CAAC,IAAK,OAAA,KAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAjB,CAAiB;YAC7B,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE;YAC1C,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,gBAAgB,EAAE,EAAvB,CAAuB;YAClC,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE;YACvC,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,aAAa,EAAE,EAApB,CAAoB;YAC/B,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE;YAC1C,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,YAAY,EAAjB,CAAiB;YAC5B,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;YAClC,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,EAAzB,CAAyB;YACpC,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;YACnC,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,EAA1B,CAA0B;YACrC,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;IAMS,gCAAgB,GAA1B;QACM,IAAA,iBAAqC,EAApC,0BAAU,EAAE,sBAAQ,CAAiB;QAC1C,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,MAAM,CAAC,IAAI,uBAAS,CAAC,EAAC,UAAU,YAAA,EAAE,QAAQ,UAAA,EAAE,OAAO,SAAA,EAAC,CAAC,CAAC;IACxD,CAAC;IAMS,8BAAc,GAAxB;QACM,IAAA,iBAAmC,EAAlC,sBAAQ,EAAE,sBAAQ,CAAiB;QACxC,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,MAAM,CAAC,IAAI,oBAAO,CAAC,EAAC,QAAQ,UAAA,EAAE,QAAQ,UAAA,EAAE,OAAO,SAAA,EAAC,CAAC,CAAC;IACpD,CAAC;IAMS,yBAAS,GAAnB;QACE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QAEjB,IAAA,sBAAG,CAAiB;QACzB,EAAE,CAAC,CAAC,qBAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMS,yBAAS,GAAnB,UAAqB,IAAI;QACvB,EAAE,CAAC,CAAC,qBAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAEI,IAAA,sBAAG,CAAiB;QACzB,EAAE,CAAC,CAAC,qBAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEnC,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAMS,qBAAK,GAAf,UAAiB,IAAI,EAAE,IAAI;QAA3B,iBAgBC;QAfC,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,EAAE,CAAC,CAAC,CAAC,kBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC;QACd,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACpB,IAAI,OAAK,GAAG,kBAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC3C,IAAI,OAAO,GAAG,UAAC,CAAC,IAAK,OAAA,IAAI,OAAK,CAC5B,aAAK,CAAC,EAAE,EAAE,CAAC,EAAE,EAAC,MAAM,EAAE,KAAI,CAAC,KAAK,EAAC,CAAC,CACnC,EAFoB,CAEpB,CAAC;YACF,SAAS,GAAG,kBAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;QAClD,CAAC;QAED,MAAM,CAAC,eAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC/B,CAAC;IAMS,gCAAgB,GAA1B;QACE,IAAI,IAAI,GAAG,IAAI,CAAC;QAEX,IAAA,wCAAY,CAAiB;QAClC,EAAE,CAAC,CAAC,qBAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,GAAG,YAAY,CAAC;QACtB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMS,6BAAa,GAAvB;QACE,IAAI,IAAI,GAAG,IAAI,CAAC;QAEX,IAAA,kCAAS,CAAiB;QAC/B,EAAE,CAAC,CAAC,qBAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,GAAG,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,qBAAK,GAAZ;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAErC,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,oBAAI,GAAX;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC9B,CAAC;QAED,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;aACxB,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,YAAY,cAAK,EAApB,CAAoB,CAAC;aACrC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,IAAI,EAAE,EAAV,CAAU,CAAC,CAAC;QAE5B,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,qBAAK,GAAZ;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,sBAAM,GAAb;QACE,EAAE,CAAC,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACxB,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC;iBAChB,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,IAAI,CAAC,CAAC,MAAM,EAAb,CAAa,CAAC;iBAC5B,OAAO,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,EAAE,EAAV,CAAU,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,iBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE1C,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,wBAAQ,GAAf;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAE/B,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,sBAAM,GAAb,UAAe,IAAI;QACjB,IAAI,KAAK,GAAG,IAAI,YAAY,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAEtD,MAAM,CAAC,eAAO,CACZ,iBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EACrB,iBAAS,CAAC,KAAK,CAAC,CACjB,CAAC;IACJ,CAAC;IAMM,yBAAS,GAAhB;QACE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAMM,wBAAQ,GAAf;QACE,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,EAAE,CAAC,CAAC,kBAAO,CAAC,IAAI,CAAC,CAAC;YAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAElC,MAAM,CAAC,CACL,oBAAS,CAAC,IAAI,CAAC;eACZ,oBAAS,CAAC,IAAI,CAAC,SAAS,CAAC;eACzB,CACD,IAAI,CAAC,SAAS,YAAY,cAAK;mBAC5B,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,cAAK,CACxC,CACF,CAAC;IACJ,CAAC;IASY,wBAAQ,GAArB;;;;;4BACE,MAAM,eAAA,OAAO,CAAC,GAAG,CACf,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;6BACxB,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,YAAY,cAAK,EAApB,CAAoB,CAAC;6BACrC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,EAA3B,CAA2B,CAAC,CAC7C,EAAA;;wBAJD,UAIE;wBAEF,KAAA,IAAI,CAAA;wBAAU,MAAM,eAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAC1C,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,OAAO,CAAC,QAAQ,CACtB,EAAA;;wBAHD,GAAK,MAAM,YAGV,CAAC;wBAEF,MAAM,gBAAC,IAAI,EAAC;;;;KACb;IASY,sBAAM,GAAnB,UAAqB,KAAU;;;;;4BAC7B,MAAM,eAAA,OAAO,CAAC,GAAG,CACf,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;6BACxB,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,YAAY,cAAK,EAApB,CAAoB,CAAC;6BACrC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAjB,CAAiB,CAAC,CACnC,CAAC,OAAK,CAAA,CAAC,cAAO,CAAC,CAAC,EAAA;;wBAJjB,UAIkB;wBAElB,KAAA,IAAI,CAAA;wBAAU,MAAM,eAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CACtC,KAAK,EACL,IAAI,CAAC,OAAO,CAAC,MAAM,CACpB,EAAA;;wBAHD,GAAK,MAAM,YAGV,CAAC;wBAEF,MAAM,gBAAC,IAAI,EAAC;;;;KACb;IAMM,0BAAU,GAAjB;QACE,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;aACxB,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,YAAY,cAAK,EAApB,CAAoB,CAAC;aACrC,OAAO,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,UAAU,EAAE,EAAhB,CAAgB,CAAC,CAAC;QAEtC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAEjB,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,yBAAS,GAAhB;QACE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,CAAC,oBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC;iBACvB,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,EAAH,CAAG,CAAC;iBAClB,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,SAAS,EAAE,EAAb,CAAa,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,CAAC,KAAK,CAAC;IACf,CAAC;IAMM,uBAAO,GAAd;QACE,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC;IAEH,YAAC;AAAD,CAAC,AApXD,IAoXC;AApXY,sBAAK"} \ No newline at end of file diff --git a/dist/tests/models.js b/dist/tests/models.js index bb43f80..e4d0637 100644 --- a/dist/tests/models.js +++ b/dist/tests/models.js @@ -1113,7 +1113,7 @@ ava_1["default"]('method `clone` returns an exact copy of the original', functio }); ava_1["default"]('method `handle` handles field-related errors', function (t) { return __awaiter(_this, void 0, void 0, function () { var _this = this; - var handle, Book, User, user, problem0, problem1, errors; + var handle, Book, Country, User, user, problem0, problem1, errors; return __generator(this, function (_a) { switch (_a.label) { case 0: @@ -1135,6 +1135,16 @@ ava_1["default"]('method `handle` handles field-related errors', function (t) { } return Book; }(src_1.Model)); + Country = (function (_super) { + __extends(Country, _super); + function Country(data) { + var _this = _super.call(this, data) || this; + _this.defineField('code'); + _this.populate(data); + return _this; + } + return Country; + }(src_1.Model)); User = (function (_super) { __extends(User, _super); function User(data) { @@ -1144,6 +1154,7 @@ ava_1["default"]('method `handle` handles field-related errors', function (t) { _this.defineField('books0', { type: [Book], handle: handle }); _this.defineField('book1', { type: Book }); _this.defineField('books1', { type: [Book] }); + _this.defineField('country', { type: [Country] }); _this.populate(data); return _this; } @@ -1151,7 +1162,8 @@ ava_1["default"]('method `handle` handles field-related errors', function (t) { }(src_1.Model)); user = new User({ book1: {}, - books1: [{}] + books1: [{}], + country: {} }); problem0 = new Error(); problem1 = new Error(); diff --git a/dist/tests/models.js.map b/dist/tests/models.js.map index 6f42208..e313584 100644 --- a/dist/tests/models.js.map +++ b/dist/tests/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 8b70f76..8a0c59b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.4.2", + "version": "1.4.3", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", diff --git a/src/fields.ts b/src/fields.ts index 6f7c104..167696e 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -358,7 +358,7 @@ export class Field { (toArray(this.value) || []) .filter((doc) => doc instanceof Model) .map((doc) => doc.handle(error)) - ); + ).catch(() => {}); // do not throw even when unhandled error this.errors = await this._handler.handle( error, diff --git a/src/models.ts b/src/models.ts index e79f27c..ee8a8b4 100644 --- a/src/models.ts +++ b/src/models.ts @@ -406,7 +406,7 @@ export abstract class Model { } /* - * Validates fields and throws an error. + * Handles the error and throws an error if the error can not be handled. */ async handle (error: any, { diff --git a/tests/models.ts b/tests/models.ts index 0647e06..c75107e 100644 --- a/tests/models.ts +++ b/tests/models.ts @@ -928,6 +928,13 @@ test('method `handle` handles field-related errors', async (t) => { this.populate(data); } } + class Country extends Model { + constructor (data) { + super(data); + this.defineField('code'); // this field is nested and without handler + this.populate(data); + } + } class User extends Model { constructor (data) { super(data); @@ -936,12 +943,14 @@ test('method `handle` handles field-related errors', async (t) => { this.defineField('books0', {type: [Book], handle}); this.defineField('book1', {type: Book}); this.defineField('books1', {type: [Book]}); + this.defineField('country', {type: [Country]}); this.populate(data); } } let user = new User({ book1: {}, - books1: [{}] + books1: [{}], + country: {} }); let problem0 = new Error(); let problem1 = new Error() as any; problem1.code = 422; From 1f36fd7ef6923acfeb6fb15f23ebf30b55c2467a Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 14 Jan 2017 21:33:28 +0100 Subject: [PATCH 155/219] version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8a0c59b..d92a4a3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.4.3", + "version": "1.5.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", From 94c1fd4bd6519004869a2f667c198a2874e4997a Mon Sep 17 00:00:00 2001 From: xpeper Date: Mon, 16 Jan 2017 13:29:52 +0100 Subject: [PATCH 156/219] readme --- README.md | 2 ++ package.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e9f61cf..405375c 100644 --- a/README.md +++ b/README.md @@ -365,6 +365,8 @@ graphql(schema, '{hello}', root).then((response) => { }); ``` +See [graphql-example](https://github.com/xpepermint/graphql-example) for more. + ## API ### Model Class diff --git a/package.json b/package.json index d92a4a3..f6855c3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.5.0", + "version": "1.5.1", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", From f360ecbbe801a4919f3f26d531f5a4cf8209d896 Mon Sep 17 00:00:00 2001 From: Kristijan Sedlak Date: Mon, 16 Jan 2017 16:53:05 +0100 Subject: [PATCH 157/219] Set theme jekyll-theme-cayman --- _config.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 _config.yml diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..c419263 --- /dev/null +++ b/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-cayman \ No newline at end of file From 99a804bf6668572a72e45f0cf2bd1cf53cf1f577 Mon Sep 17 00:00:00 2001 From: xpeper Date: Mon, 27 Feb 2017 20:25:58 +0100 Subject: [PATCH 158/219] defineField enumerable option --- README.md | 4 +++- dist/src/fields.d.ts | 1 + dist/src/fields.js.map | 2 +- dist/src/models.js | 4 +++- dist/src/models.js.map | 2 +- dist/tests/models.js | 13 +++++++++++++ dist/tests/models.js.map | 2 +- package.json | 2 +- src/fields.ts | 1 + src/models.ts | 5 +++-- tests/models.ts | 12 ++++++++++++ 11 files changed, 40 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 405375c..26a626f 100644 --- a/README.md +++ b/README.md @@ -389,6 +389,7 @@ class User extends Model { this.defineField('name', { type: 'String', // field type casting + enumerable: true, // when set to `false` the field is not serializable get (v) { return v }, // custom getter set (v) { return v }, // custom setter validate: [ // value validator recipes @@ -465,13 +466,14 @@ model.collectErrors(); // => {path: ['name'], errors: [{validator: 'absence', me > Sets initial value of each model field to the current value of a field. This is how field change tracking is restarted. -**Model.prototype.defineField(name, {type, get, set, defaultValue, fakeValue, validate})**: Void +**Model.prototype.defineField(name, {type, enumerable, get, set, defaultValue, fakeValue, validate})**: Void > Defines a new model property. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ | name | String | Yes | - | Property name. +| enumerable | Boolean | No | true | When set to `false` the field is not serializable. | type | String, Model | No | - | Data type (pass a Model to create a nested structure; check [typeable.js](https://github.com/xpepermint/validatablejs) for more). | get | Function | No | - | Custom getter. | set | Function | No | - | Custom setter. diff --git a/dist/src/fields.d.ts b/dist/src/fields.d.ts index b110472..cf52c74 100644 --- a/dist/src/fields.d.ts +++ b/dist/src/fields.d.ts @@ -17,6 +17,7 @@ export interface FieldRecipe { }; owner?: Model; failFast?: boolean; + enumerable?: boolean; } export interface FieldError { message: string; diff --git a/dist/src/fields.js.map b/dist/src/fields.js.map index bdf5166..b48d362 100644 --- a/dist/src/fields.js.map +++ b/dist/src/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/models.js b/dist/src/models.js index 52b28d7..de6c078 100644 --- a/dist/src/models.js +++ b/dist/src/models.js @@ -107,11 +107,13 @@ var Model = (function () { this._failFast = typeable_1.toBoolean(fail); }; Model.prototype.defineField = function (name, recipe) { + if (recipe === void 0) { recipe = {}; } var field = this._createField(recipe); + var _a = recipe.enumerable, enumerable = _a === void 0 ? true : _a; Object.defineProperty(this, name, { get: function () { return field.value; }, set: function (v) { return field.value = v; }, - enumerable: true, + enumerable: enumerable, configurable: true }); this._fields[name] = field; diff --git a/dist/src/models.js.map b/dist/src/models.js.map index ab9d0eb..b6919d4 100644 --- a/dist/src/models.js.map +++ b/dist/src/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/models.js b/dist/tests/models.js index e4d0637..e7e34a5 100644 --- a/dist/tests/models.js +++ b/dist/tests/models.js @@ -59,6 +59,19 @@ ava_1["default"]('method `defineField` initializes nullified enumerable property t.is(descriptor.configurable, true); t.is(user.name, null); }); +ava_1["default"]('method `defineField` supports unenumerable property', function (t) { + var user = new (function (_super) { + __extends(User, _super); + function User() { + var _this = _super.call(this) || this; + _this.defineField('name', { enumerable: false }); + return _this; + } + return User; + }(src_1.Model)); + var descriptor = Object.getOwnPropertyDescriptor(user, 'name'); + t.is(descriptor.enumerable, false); +}); ava_1["default"]('method `defineType` defines a custom data type', function (t) { var user = new (function (_super) { __extends(User, _super); diff --git a/dist/tests/models.js.map b/dist/tests/models.js.map index e313584..77c851a 100644 --- a/dist/tests/models.js.map +++ b/dist/tests/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index f6855c3..44eaca3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.5.1", + "version": "1.6.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", diff --git a/src/fields.ts b/src/fields.ts index 167696e..e333ae2 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -20,6 +20,7 @@ export interface FieldRecipe { handlers?: {[name: string]: (v?, r?: HandlerRecipe) => boolean | Promise}; owner?: Model; failFast?: boolean; + enumerable?: boolean; } /* diff --git a/src/models.ts b/src/models.ts index ee8a8b4..585c230 100644 --- a/src/models.ts +++ b/src/models.ts @@ -146,13 +146,14 @@ export abstract class Model { * Defines a new model property. */ - public defineField (name: string, recipe?: FieldRecipe): void { + public defineField (name: string, recipe: FieldRecipe = {}): void { let field = this._createField(recipe); + let { enumerable = true } = recipe; Object.defineProperty(this, name, { get: () => field.value, set: (v) => field.value = v, - enumerable: true, + enumerable, configurable: true }); diff --git a/tests/models.ts b/tests/models.ts index c75107e..3b9f228 100644 --- a/tests/models.ts +++ b/tests/models.ts @@ -17,6 +17,18 @@ test('method `defineField` initializes nullified enumerable property', (t) => { t.is(user.name, null); }); +test('method `defineField` supports unenumerable property', (t) => { + let user = new class User extends Model { + name: string; + constructor () { + super(); + this.defineField('name', {enumerable: false}); + } + }; + let descriptor = Object.getOwnPropertyDescriptor(user, 'name'); + t.is(descriptor.enumerable, false); +}); + test('method `defineType` defines a custom data type', (t) => { let user = new class User extends Model { name: string; From b3bf9b20aab02004fc88e89b7ff45c6505f532f0 Mon Sep 17 00:00:00 2001 From: xpeper Date: Tue, 28 Feb 2017 00:37:37 +0100 Subject: [PATCH 159/219] invalid custom array types fixed --- README.md | 3 +-- dist/src/models.d.ts | 1 + dist/src/models.js | 9 +++++++-- dist/src/models.js.map | 2 +- dist/tests/models.js | 9 ++++++--- dist/tests/models.js.map | 2 +- package.json | 2 +- src/models.ts | 14 +++++++++++--- tests/models.ts | 12 ++++++++---- 9 files changed, 37 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 26a626f..fe91066 100644 --- a/README.md +++ b/README.md @@ -929,8 +929,7 @@ let recipe = { | Key | Type | Required | Default | Description |-----|------|----------|---------|------------ -| pattern | String | Yes | - | Regular expression pattern. -| modifiers | String | No | - | Regular expression modifiers. +| regexp | RegExp | Yes | - | Regular expression pattern. **stringUppercase** diff --git a/dist/src/models.d.ts b/dist/src/models.d.ts index d1cfa6f..463929f 100644 --- a/dist/src/models.d.ts +++ b/dist/src/models.d.ts @@ -31,6 +31,7 @@ export declare abstract class Model { parent: Model; constructor(recipe?: ModelRecipe); protected _getRootModel(): Model; + protected _getFieldType(recipe?: FieldRecipe): any; protected _createField(recipe?: FieldRecipe): Field; protected _createValidationError(message?: string, code?: number): FieldError; protected _createModel(recipe?: ModelRecipe): any; diff --git a/dist/src/models.js b/dist/src/models.js index de6c078..4d1ee6d 100644 --- a/dist/src/models.js +++ b/dist/src/models.js @@ -80,11 +80,16 @@ var Model = (function () { } } while (true); }; + Model.prototype._getFieldType = function (recipe) { + if (recipe === void 0) { recipe = {}; } + var type = typeable_1.isArray(recipe.type) ? recipe.type[0] : recipe.type; + type = this._types[type] || type; + return typeable_1.isArray(recipe.type) ? [type] : type; + }; Model.prototype._createField = function (recipe) { if (recipe === void 0) { recipe = {}; } - var type = recipe.type; return new fields_1.Field(utils_1.merge({}, recipe, { - type: this._types[type] || type, + type: this._getFieldType(recipe), owner: this, validators: this._validators, handlers: this._handlers, diff --git a/dist/src/models.js.map b/dist/src/models.js.map index b6919d4..3b36631 100644 --- a/dist/src/models.js.map +++ b/dist/src/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/models.js b/dist/tests/models.js index e7e34a5..50c7d8e 100644 --- a/dist/tests/models.js +++ b/dist/tests/models.js @@ -78,13 +78,16 @@ ava_1["default"]('method `defineType` defines a custom data type', function (t) function User() { var _this = _super.call(this) || this; _this.defineType('cool', function (v) { return v + "-cool"; }); - _this.defineField('name', { type: 'cool' }); + _this.defineField('name0', { type: 'cool' }); + _this.defineField('name1', { type: ['cool'] }); return _this; } return User; }(src_1.Model)); - user.name = 'foo'; - t.is(user.name, 'foo-cool'); + user.name0 = 'foo'; + user.name1 = ['foo']; + t.is(user.name0, 'foo-cool'); + t.deepEqual(user.name1, ['foo-cool']); }); ava_1["default"]('method `populate` deeply populates fields', function (t) { var Book = (function (_super) { diff --git a/dist/tests/models.js.map b/dist/tests/models.js.map index 77c851a..105bb6a 100644 --- a/dist/tests/models.js.map +++ b/dist/tests/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 44eaca3..6720759 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.6.0", + "version": "1.6.1", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", diff --git a/src/models.ts b/src/models.ts index 585c230..3fdf3bd 100644 --- a/src/models.ts +++ b/src/models.ts @@ -95,17 +95,25 @@ export abstract class Model { } while (true); } + /* + * Returns the appropriate field type. + */ + + protected _getFieldType (recipe: FieldRecipe = {}) { + let type = isArray(recipe.type) ? recipe.type[0] : recipe.type; + type = this._types[type] || type; + return isArray(recipe.type) ? [type] : type; + } + /* * Creates a new field instance. This method is especially useful when * extending this class. */ protected _createField (recipe: FieldRecipe = {}) { - let {type} = recipe; - return new Field( merge({}, recipe, { - type: this._types[type] || type, + type: this._getFieldType(recipe), owner: this, validators: this._validators, handlers: this._handlers, diff --git a/tests/models.ts b/tests/models.ts index 3b9f228..6c03cbd 100644 --- a/tests/models.ts +++ b/tests/models.ts @@ -31,15 +31,19 @@ test('method `defineField` supports unenumerable property', (t) => { test('method `defineType` defines a custom data type', (t) => { let user = new class User extends Model { - name: string; + name0: string; + name1: string[]; constructor () { super(); this.defineType('cool', (v) => `${v}-cool`); - this.defineField('name', {type: 'cool'}); + this.defineField('name0', {type: 'cool'}); + this.defineField('name1', {type: ['cool']}); } }; - user.name = 'foo'; - t.is(user.name, 'foo-cool'); + user.name0 = 'foo'; + user.name1 = ['foo']; + t.is(user.name0, 'foo-cool'); + t.deepEqual(user.name1, ['foo-cool']); }); test('method `populate` deeply populates fields', (t) => { From 88654fd3f7aec6a5b0391da47ef7f894a6c7fe60 Mon Sep 17 00:00:00 2001 From: xpeper Date: Tue, 28 Feb 2017 12:06:09 +0100 Subject: [PATCH 160/219] renaming `enumerable ` option to `serializable ` --- README.md | 6 +++--- dist/src/fields.d.ts | 3 ++- dist/src/fields.js | 4 ++++ dist/src/fields.js.map | 2 +- dist/src/models.js | 5 ++--- dist/src/models.js.map | 2 +- dist/tests/fields.js | 2 +- dist/tests/fields.js.map | 2 +- dist/tests/models.js | 15 ++------------- dist/tests/models.js.map | 2 +- package.json | 2 +- src/fields.ts | 7 ++++++- src/models.ts | 5 ++--- tests/fields.ts | 2 +- tests/models.ts | 14 ++------------ 15 files changed, 30 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index fe91066..6bada50 100644 --- a/README.md +++ b/README.md @@ -389,7 +389,7 @@ class User extends Model { this.defineField('name', { type: 'String', // field type casting - enumerable: true, // when set to `false` the field is not serializable + serializable: true, // when set to `false` the field is not serializable get (v) { return v }, // custom getter set (v) { return v }, // custom setter validate: [ // value validator recipes @@ -466,14 +466,14 @@ model.collectErrors(); // => {path: ['name'], errors: [{validator: 'absence', me > Sets initial value of each model field to the current value of a field. This is how field change tracking is restarted. -**Model.prototype.defineField(name, {type, enumerable, get, set, defaultValue, fakeValue, validate})**: Void +**Model.prototype.defineField(name, {type, serializable, get, set, defaultValue, fakeValue, validate})**: Void > Defines a new model property. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ | name | String | Yes | - | Property name. -| enumerable | Boolean | No | true | When set to `false` the field is not serializable. +| serializable | Boolean | No | true | When set to `false` the field is not serializable. | type | String, Model | No | - | Data type (pass a Model to create a nested structure; check [typeable.js](https://github.com/xpepermint/validatablejs) for more). | get | Function | No | - | Custom getter. | set | Function | No | - | Custom setter. diff --git a/dist/src/fields.d.ts b/dist/src/fields.d.ts index cf52c74..852c9cf 100644 --- a/dist/src/fields.d.ts +++ b/dist/src/fields.d.ts @@ -17,7 +17,7 @@ export interface FieldRecipe { }; owner?: Model; failFast?: boolean; - enumerable?: boolean; + serializable?: boolean; } export interface FieldError { message: string; @@ -34,6 +34,7 @@ export declare class Field { readonly defaultValue: any; readonly fakeValue: any; readonly initialValue: any; + readonly serializable: boolean; readonly owner: Model; readonly type: any; value: any; diff --git a/dist/src/fields.js b/dist/src/fields.js index 02b94d1..dc1823a 100644 --- a/dist/src/fields.js +++ b/dist/src/fields.js @@ -77,6 +77,10 @@ var Field = (function () { get: function () { return _this._initialData; }, enumerable: true }); + Object.defineProperty(this, 'serializable', { + get: function () { return typeable_1.isUndefined(_this._recipe.serializable) ? true : !!_this._recipe.serializable; }, + enumerable: true + }); Object.defineProperty(this, 'type', { get: function () { return _this._recipe.type || null; }, enumerable: true diff --git a/dist/src/fields.js.map b/dist/src/fields.js.map index b48d362..d158ed0 100644 --- a/dist/src/fields.js.map +++ b/dist/src/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAA6F;AAC7F,iCAAkD;AAClD,2CAAuD;AACvD,yCAAkD;AAClD,mCAA+B;AAoC/B;IAmBE,eAAoB,MAAoB;QAAxC,iBAoDC;QAnDC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAEjB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;YACrC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;SACnC,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;YACnC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE;YAC9B,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE;YAC1C,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE;YAC9B,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE;YACxC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE;SAC/B,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE;YACtC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE;SAC7B,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;YACnC,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,SAAS,EAAE,EAAhB,CAAgB;YAC3B,GAAG,EAAE,UAAC,CAAC,IAAK,OAAA,KAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAjB,CAAiB;YAC7B,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE;YAC1C,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,gBAAgB,EAAE,EAAvB,CAAuB;YAClC,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE;YACvC,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,aAAa,EAAE,EAApB,CAAoB;YAC/B,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE;YAC1C,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,YAAY,EAAjB,CAAiB;YAC5B,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE;YAC1C,GAAG,EAAE,cAAM,OAAA,sBAAW,CAAC,KAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,KAAI,CAAC,OAAO,CAAC,YAAY,EAA3E,CAA2E;YACtF,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;YAClC,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,EAAzB,CAAyB;YACpC,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;YACnC,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,EAA1B,CAA0B;YACrC,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;IAMS,gCAAgB,GAA1B;QACM,IAAA,iBAAqC,EAApC,0BAAU,EAAE,sBAAQ,CAAiB;QAC1C,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,MAAM,CAAC,IAAI,uBAAS,CAAC,EAAC,UAAU,YAAA,EAAE,QAAQ,UAAA,EAAE,OAAO,SAAA,EAAC,CAAC,CAAC;IACxD,CAAC;IAMS,8BAAc,GAAxB;QACM,IAAA,iBAAmC,EAAlC,sBAAQ,EAAE,sBAAQ,CAAiB;QACxC,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,MAAM,CAAC,IAAI,oBAAO,CAAC,EAAC,QAAQ,UAAA,EAAE,QAAQ,UAAA,EAAE,OAAO,SAAA,EAAC,CAAC,CAAC;IACpD,CAAC;IAMS,yBAAS,GAAnB;QACE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QAEjB,IAAA,sBAAG,CAAiB;QACzB,EAAE,CAAC,CAAC,qBAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMS,yBAAS,GAAnB,UAAqB,IAAI;QACvB,EAAE,CAAC,CAAC,qBAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAEI,IAAA,sBAAG,CAAiB;QACzB,EAAE,CAAC,CAAC,qBAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEnC,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAMS,qBAAK,GAAf,UAAiB,IAAI,EAAE,IAAI;QAA3B,iBAgBC;QAfC,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,EAAE,CAAC,CAAC,CAAC,kBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC;QACd,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACpB,IAAI,OAAK,GAAG,kBAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC3C,IAAI,OAAO,GAAG,UAAC,CAAC,IAAK,OAAA,IAAI,OAAK,CAC5B,aAAK,CAAC,EAAE,EAAE,CAAC,EAAE,EAAC,MAAM,EAAE,KAAI,CAAC,KAAK,EAAC,CAAC,CACnC,EAFoB,CAEpB,CAAC;YACF,SAAS,GAAG,kBAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;QAClD,CAAC;QAED,MAAM,CAAC,eAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC/B,CAAC;IAMS,gCAAgB,GAA1B;QACE,IAAI,IAAI,GAAG,IAAI,CAAC;QAEX,IAAA,wCAAY,CAAiB;QAClC,EAAE,CAAC,CAAC,qBAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,GAAG,YAAY,CAAC;QACtB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMS,6BAAa,GAAvB;QACE,IAAI,IAAI,GAAG,IAAI,CAAC;QAEX,IAAA,kCAAS,CAAiB;QAC/B,EAAE,CAAC,CAAC,qBAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,GAAG,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,qBAAK,GAAZ;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAErC,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,oBAAI,GAAX;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC9B,CAAC;QAED,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;aACxB,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,YAAY,cAAK,EAApB,CAAoB,CAAC;aACrC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,IAAI,EAAE,EAAV,CAAU,CAAC,CAAC;QAE5B,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,qBAAK,GAAZ;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,sBAAM,GAAb;QACE,EAAE,CAAC,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACxB,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC;iBAChB,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,IAAI,CAAC,CAAC,MAAM,EAAb,CAAa,CAAC;iBAC5B,OAAO,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,EAAE,EAAV,CAAU,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,iBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE1C,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,wBAAQ,GAAf;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAE/B,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,sBAAM,GAAb,UAAe,IAAI;QACjB,IAAI,KAAK,GAAG,IAAI,YAAY,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAEtD,MAAM,CAAC,eAAO,CACZ,iBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EACrB,iBAAS,CAAC,KAAK,CAAC,CACjB,CAAC;IACJ,CAAC;IAMM,yBAAS,GAAhB;QACE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAMM,wBAAQ,GAAf;QACE,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,EAAE,CAAC,CAAC,kBAAO,CAAC,IAAI,CAAC,CAAC;YAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAElC,MAAM,CAAC,CACL,oBAAS,CAAC,IAAI,CAAC;eACZ,oBAAS,CAAC,IAAI,CAAC,SAAS,CAAC;eACzB,CACD,IAAI,CAAC,SAAS,YAAY,cAAK;mBAC5B,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,cAAK,CACxC,CACF,CAAC;IACJ,CAAC;IASY,wBAAQ,GAArB;;;;;4BACE,MAAM,eAAA,OAAO,CAAC,GAAG,CACf,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;6BACxB,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,YAAY,cAAK,EAApB,CAAoB,CAAC;6BACrC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,EAA3B,CAA2B,CAAC,CAC7C,EAAA;;wBAJD,UAIE;wBAEF,KAAA,IAAI,CAAA;wBAAU,MAAM,eAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAC1C,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,OAAO,CAAC,QAAQ,CACtB,EAAA;;wBAHD,GAAK,MAAM,YAGV,CAAC;wBAEF,MAAM,gBAAC,IAAI,EAAC;;;;KACb;IASY,sBAAM,GAAnB,UAAqB,KAAU;;;;;4BAC7B,MAAM,eAAA,OAAO,CAAC,GAAG,CACf,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;6BACxB,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,YAAY,cAAK,EAApB,CAAoB,CAAC;6BACrC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAjB,CAAiB,CAAC,CACnC,CAAC,OAAK,CAAA,CAAC,cAAO,CAAC,CAAC,EAAA;;wBAJjB,UAIkB;wBAElB,KAAA,IAAI,CAAA;wBAAU,MAAM,eAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CACtC,KAAK,EACL,IAAI,CAAC,OAAO,CAAC,MAAM,CACpB,EAAA;;wBAHD,GAAK,MAAM,YAGV,CAAC;wBAEF,MAAM,gBAAC,IAAI,EAAC;;;;KACb;IAMM,0BAAU,GAAjB;QACE,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;aACxB,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,YAAY,cAAK,EAApB,CAAoB,CAAC;aACrC,OAAO,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,UAAU,EAAE,EAAhB,CAAgB,CAAC,CAAC;QAEtC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAEjB,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,yBAAS,GAAhB;QACE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,CAAC,oBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC;iBACvB,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,EAAH,CAAG,CAAC;iBAClB,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,SAAS,EAAE,EAAb,CAAa,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,CAAC,KAAK,CAAC;IACf,CAAC;IAMM,uBAAO,GAAd;QACE,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC;IAEH,YAAC;AAAD,CAAC,AAzXD,IAyXC;AAzXY,sBAAK"} \ No newline at end of file diff --git a/dist/src/models.js b/dist/src/models.js index 4d1ee6d..5e9ccaf 100644 --- a/dist/src/models.js +++ b/dist/src/models.js @@ -114,11 +114,10 @@ var Model = (function () { Model.prototype.defineField = function (name, recipe) { if (recipe === void 0) { recipe = {}; } var field = this._createField(recipe); - var _a = recipe.enumerable, enumerable = _a === void 0 ? true : _a; Object.defineProperty(this, name, { get: function () { return field.value; }, set: function (v) { return field.value = v; }, - enumerable: enumerable, + enumerable: true, configurable: true }); this._fields[name] = field; @@ -161,7 +160,7 @@ var Model = (function () { return this; }; Model.prototype.serialize = function () { - return utils_1.serialize(this); + return this.filter(function (ref) { return ref.field.serializable; }); }; Model.prototype.flatten = function (prefix) { var _this = this; diff --git a/dist/src/models.js.map b/dist/src/models.js.map index 3b36631..210685d 100644 --- a/dist/src/models.js.map +++ b/dist/src/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/fields.js b/dist/tests/fields.js index 452373c..fb6f93d 100644 --- a/dist/tests/fields.js +++ b/dist/tests/fields.js @@ -205,7 +205,7 @@ ava_1["default"]('method `isValid()` returns `true` when no errors exist', funct }); ava_1["default"]('has enumeratable properties', function (t) { var f = new src_1.Field(); - t.deepEqual(Object.keys(f), ['errors', 'value', 'defaultValue', 'fakeValue', 'initialValue', 'type', 'owner']); + t.deepEqual(Object.keys(f), ['errors', 'value', 'defaultValue', 'fakeValue', 'initialValue', 'serializable', 'type', 'owner']); }); ava_1["default"]('method `handle()` handles an error and populates the `errors` property', function (t) { return __awaiter(_this, void 0, void 0, function () { var f, e; diff --git a/dist/tests/fields.js.map b/dist/tests/fields.js.map index 8bd8c88..9e03ca4 100644 --- a/dist/tests/fields.js.map +++ b/dist/tests/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../tests/fields.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iBA8LA;AA9LA,2BAAuB;AACvB,8BAAoC;AAGpC,gBAAI,CAAC,8BAA8B,EAAE,UAAC,CAAC;IACrC,IAAI,CAAC,GAAG,IAAI,WAAK,EAAE,CAAC;IACpB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACtB,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,kDAAkD,EAAE,UAAC,CAAC;IACzD,IAAI,CAAC,GAAG,IAAI,WAAK,EAAE,CAAC;IACpB,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;IAChB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,yDAAyD,EAAE,UAAC,CAAC;IAChE,IAAI,EAAE,GAAG,IAAI,WAAK,CAAC,EAAC,GAAG,YAAE,CAAC,IAAI,MAAM,CAAI,CAAC,SAAI,IAAI,CAAC,WAAW,CAAC,IAAM,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC;IAC1E,IAAI,EAAE,GAAG,IAAI,WAAK,CAAC,EAAC,GAAG,YAAE,CAAC,IAAI,MAAM,CAAI,CAAC,SAAI,IAAI,CAAC,WAAW,CAAC,IAAM,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC;IAC1E,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC;IACjB,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC;IACjB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC5B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,wDAAwD,EAAE,UAAC,CAAC;IAC/D,IAAI,EAAE,GAAG,IAAI,WAAK,CAAC,EAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAC,CAAC,CAAC;IACvC,IAAI,EAAE,GAAG,IAAI,WAAK,CAAC,EAAC,IAAI,EAAE,UAAC,CAAC,IAAK,OAAG,CAAC,SAAM,EAAV,CAAU,EAAC,CAAC,CAAC;IAC9C,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC;IACf,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC;IACf,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,0BAA0B,EAAE,UAAC,CAAC;IACjC,IAAI,EAAE,GAAG,IAAI,WAAK,CAAC,EAAC,YAAY,EAAE,KAAK,EAAC,CAAC,CAAC;IAC1C,IAAI,EAAE,GAAG,IAAI,WAAK,CAAC,EAAC,YAAY,gBAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC;IACxE,IAAI,EAAE,GAAG,IAAI,WAAK,CAAC,EAAC,YAAY,gBAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC;IAChE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,KAAK,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,uBAAuB,EAAE,UAAC,CAAC;IAC9B,IAAI,EAAE,GAAG,IAAI,WAAK,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;IACvC,IAAI,EAAE,GAAG,IAAI,WAAK,CAAC,EAAC,SAAS,gBAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC;IACrE,IAAI,EAAE,GAAG,IAAI,WAAK,CAAC,EAAC,SAAS,gBAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC;IAC7D,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC5B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,kDAAkD,EAAE,UAAC,CAAC;IACzD,IAAI,EAAE,GAAG,IAAI,WAAK,EAAE,CAAC;IACrB,IAAI,EAAE,GAAG,IAAI,WAAK,CAAC,EAAC,YAAY,EAAE,KAAK,EAAC,CAAC,CAAC;IAC1C,IAAI,EAAE,GAAG,IAAI,WAAK,CAAC,EAAC,YAAY,gBAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC;IAChE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACrB,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC;IACjB,EAAE,CAAC,KAAK,EAAE,CAAC;IACX,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtB,EAAE,CAAC,KAAK,EAAE,CAAC;IACX,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,8CAA8C,EAAE,UAAC,CAAC;IACrD,IAAI,EAAE,GAAG,IAAI,WAAK,EAAE,CAAC;IACrB,IAAI,EAAE,GAAG,IAAI,WAAK,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;IACvC,IAAI,EAAE,GAAG,IAAI,WAAK,CAAC,EAAC,SAAS,gBAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC;IAC7D,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC;IACjB,EAAE,CAAC,IAAI,EAAE,CAAC;IACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACrB,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC;IACjB,EAAE,CAAC,IAAI,EAAE,CAAC;IACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtB,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC;IACjB,EAAE,CAAC,IAAI,EAAE,CAAC;IACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,uCAAuC,EAAE,UAAC,CAAC;IAC9C,IAAI,CAAC,GAAG,IAAI,WAAK,EAAE,CAAC;IACpB,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;IAChB,CAAC,CAAC,KAAK,EAAE,CAAC;IACV,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACtB,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,kEAAkE,EAAE,UAAC,CAAC;IACzE,IAAI,CAAC,GAAG,IAAI,WAAK,EAAE,CAAC;IACpB,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;IAChB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC,MAAM,EAAE,CAAC;IACX,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;IAChB,CAAC,CAAC,QAAQ,EAAE,CAAC;IACb,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,uFAAuF,EAAE,UAAC,CAAC;IAC9F,IAAI,EAAE,GAAG,IAAI,WAAK,EAAE,CAAC;IACrB,IAAI,EAAE,GAAG,IAAI,WAAK,EAAE,CAAC;IACrB,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC;IACjB,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC;IACjB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,oEAAoE,EAAE,UAAC,CAAC;IAC3E,IAAI,CAAC,GAAG,IAAI,WAAK,EAAE,CAAC;IACpB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;IAC3B,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;IAChB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,gFAAgF,EAAE,UAAC,CAAC;IACvF,IAAI,EAAE,GAAG,IAAI,WAAK,EAAE,CAAC;IACrB,IAAI,EAAE,GAAG,IAAI,WAAK,CAAC,EAAC,IAAI,EAAE,CAAC,WAAK,CAAC,EAAC,CAAC,CAAC;IACpC,IAAI,EAAE,GAAG,IAAI,WAAK,CAAC,EAAC,IAAI,EAAE;gBAAoB,wBAAK;gBAAxB;;gBAA0B,CAAC;gBAAD,WAAC;YAAD,CAAC,AAA3B,CAAmB,WAAK,GAAI,EAAC,CAAC,CAAC;IAC1D,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;IAC3B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,6EAA6E,EAAE,UAAO,CAAC;QACtF,CAAC;;;;oBAAG,IAAI,WAAK,CAAC;oBAChB,QAAQ,EAAE;wBACR,EAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAC;wBACvC,EAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAC;qBAChD;oBACD,UAAU,EAAE;wBACV,QAAQ,gBAAM,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC;qBAC9C;iBACF,CAAC;gBACF,MAAM,eAAA,CAAC,CAAC,QAAQ,EAAE,EAAA;;gBAAlB,UAAmB;gBACnB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE;oBACpB,EAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAC;oBAClD,EAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,EAAC;iBAC3D,CAAC,CAAC;;;;KACJ,CAAC,CAAC;AAEH,gBAAI,CAAC,oDAAoD,EAAE,UAAC,CAAC;IAC3D,IAAI,CAAC,GAAG,IAAI,WAAK,EAAE,CAAC;IACpB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;IAChC,CAAC,CAAC,UAAU,EAAE,CAAC;IACf,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,oCAAoC,EAAE,UAAC,CAAC;IAC3C,IAAI,CAAC,GAAG,IAAI,WAAK,EAAE,CAAC;IACpB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;IAChC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;IAChB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,uDAAuD,EAAE,UAAC,CAAC;IAC9D,IAAI,CAAC,GAAG,IAAI,WAAK,EAAE,CAAC;IACpB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;IAC3B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;IAChC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,wDAAwD,EAAE,UAAC,CAAC;IAC/D,IAAI,CAAC,GAAG,IAAI,WAAK,EAAE,CAAC;IACpB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;IAChC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,6BAA6B,EAAE,UAAC,CAAC;IACpC,IAAI,CAAC,GAAG,IAAI,WAAK,EAAE,CAAC;IACpB,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AACjH,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,wEAAwE,EAAE,UAAO,CAAC;QACjF,CAAC,EASD,CAAC;;;;oBATG,IAAI,WAAK,CAAC;oBAChB,MAAM,EAAE;wBACN,EAAC,OAAO,EAAE,OAAO,EAAE,KAAK,gBAAM,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAC;wBAC7D,EAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAC;qBACvC;oBACD,QAAQ,EAAE;wBACR,QAAQ,YAAE,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC;qBACtD;iBACF,CAAC;oBACM,IAAI,KAAK,CAAC,MAAM,CAAC;gBACzB,MAAM,eAAA,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAA;;gBAAjB,UAAkB;gBAClB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE;oBACpB,EAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAC;oBAC7C,EAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAC;iBAClD,CAAC,CAAC;;;;KACJ,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../tests/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/models.js b/dist/tests/models.js index 50c7d8e..5d0b0dd 100644 --- a/dist/tests/models.js +++ b/dist/tests/models.js @@ -59,19 +59,6 @@ ava_1["default"]('method `defineField` initializes nullified enumerable property t.is(descriptor.configurable, true); t.is(user.name, null); }); -ava_1["default"]('method `defineField` supports unenumerable property', function (t) { - var user = new (function (_super) { - __extends(User, _super); - function User() { - var _this = _super.call(this) || this; - _this.defineField('name', { enumerable: false }); - return _this; - } - return User; - }(src_1.Model)); - var descriptor = Object.getOwnPropertyDescriptor(user, 'name'); - t.is(descriptor.enumerable, false); -}); ava_1["default"]('method `defineType` defines a custom data type', function (t) { var user = new (function (_super) { __extends(User, _super); @@ -274,6 +261,7 @@ ava_1["default"]('method `serialize` converts model into a serialized data objec function User(data) { var _this = _super.call(this, data) || this; _this.defineField('name', { type: 'String' }); + _this.defineField('description', { serializable: false }); _this.defineField('book', { type: Book }); _this.defineField('books', { type: [Book] }); _this.populate(data); @@ -283,6 +271,7 @@ ava_1["default"]('method `serialize` converts model into a serialized data objec }(src_1.Model)); var user = new User({ name: 'foo', + description: 'foo', book: { title: 'bar' }, diff --git a/dist/tests/models.js.map b/dist/tests/models.js.map index 105bb6a..29f4206 100644 --- a/dist/tests/models.js.map +++ b/dist/tests/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 6720759..5632b56 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.6.1", + "version": "1.7.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", diff --git a/src/fields.ts b/src/fields.ts index e333ae2..63c0452 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -20,7 +20,7 @@ export interface FieldRecipe { handlers?: {[name: string]: (v?, r?: HandlerRecipe) => boolean | Promise}; owner?: Model; failFast?: boolean; - enumerable?: boolean; + serializable?: boolean; } /* @@ -47,6 +47,7 @@ export class Field { readonly defaultValue: any; readonly fakeValue: any; readonly initialValue: any; + readonly serializable: boolean; readonly owner: Model; readonly type: any; public value: any; @@ -96,6 +97,10 @@ export class Field { enumerable: true }); + Object.defineProperty(this, 'serializable', { + get: () => isUndefined(this._recipe.serializable) ? true : !!this._recipe.serializable, + enumerable: true + }); Object.defineProperty(this, 'type', { get: () => this._recipe.type || null, enumerable: true diff --git a/src/models.ts b/src/models.ts index 3fdf3bd..ad65a66 100644 --- a/src/models.ts +++ b/src/models.ts @@ -156,12 +156,11 @@ export abstract class Model { public defineField (name: string, recipe: FieldRecipe = {}): void { let field = this._createField(recipe); - let { enumerable = true } = recipe; Object.defineProperty(this, name, { get: () => field.value, set: (v) => field.value = v, - enumerable, + enumerable: true, configurable: true }); @@ -233,7 +232,7 @@ export abstract class Model { */ public serialize (): {} { - return serialize(this); + return this.filter((ref) => ref.field.serializable); } /* diff --git a/tests/fields.ts b/tests/fields.ts index 0c5ab93..6dc8034 100644 --- a/tests/fields.ts +++ b/tests/fields.ts @@ -168,7 +168,7 @@ test('method `isValid()` returns `true` when no errors exist', (t) => { test('has enumeratable properties', (t) => { let f = new Field(); - t.deepEqual(Object.keys(f), ['errors', 'value', 'defaultValue', 'fakeValue', 'initialValue', 'type', 'owner']); + t.deepEqual(Object.keys(f), ['errors', 'value', 'defaultValue', 'fakeValue', 'initialValue', 'serializable', 'type', 'owner']); }); test('method `handle()` handles an error and populates the `errors` property', async (t) => { diff --git a/tests/models.ts b/tests/models.ts index 6c03cbd..4820ba9 100644 --- a/tests/models.ts +++ b/tests/models.ts @@ -17,18 +17,6 @@ test('method `defineField` initializes nullified enumerable property', (t) => { t.is(user.name, null); }); -test('method `defineField` supports unenumerable property', (t) => { - let user = new class User extends Model { - name: string; - constructor () { - super(); - this.defineField('name', {enumerable: false}); - } - }; - let descriptor = Object.getOwnPropertyDescriptor(user, 'name'); - t.is(descriptor.enumerable, false); -}); - test('method `defineType` defines a custom data type', (t) => { let user = new class User extends Model { name0: string; @@ -214,6 +202,7 @@ test('method `serialize` converts model into a serialized data object', (t) => { constructor (data) { super(data); this.defineField('name', {type: 'String'}); + this.defineField('description', {serializable: false}); this.defineField('book', {type: Book}); this.defineField('books', {type: [Book]}); this.populate(data); @@ -221,6 +210,7 @@ test('method `serialize` converts model into a serialized data object', (t) => { } let user = new User({ name: 'foo', + description: 'foo', book: { title: 'bar' }, From fccc6ecc509da761675d52650e88070511f4306d Mon Sep 17 00:00:00 2001 From: xpeper Date: Thu, 30 Mar 2017 14:10:18 +0200 Subject: [PATCH 161/219] dependencies --- README.md | 2 +- package.json | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 6bada50..ff7b809 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ > Strongly-typed JavaScript object with support for validation and error handling. -This is a light weight open source package for the **server** and **browser** (using module bundler) written with [TypeScript](https://www.typescriptlang.org). It's actively maintained, well tested and ready for production environments. The source code is available on [GitHub](https://github.com/xpepermint/rawmodeljs) where you can also find our [issue tracker](https://github.com/xpepermint/rawmodeljs/issues). +This is a light weight open source package for the **server** and **browser** (using module bundler) written with [TypeScript](https://www.typescriptlang.org). It"s actively maintained, well tested and already used in production environments. The source code is available on [GitHub](https://github.com/xpepermint/rawmodeljs) where you can also find our [issue tracker](https://github.com/xpepermint/rawmodeljs/issues). ## Related Projects diff --git a/package.json b/package.json index 5632b56..0cd2e5e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.7.0", + "version": "1.7.1", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -68,16 +68,16 @@ "author": "Kristijan Sedlak (Xpepermint)", "license": "MIT", "devDependencies": { - "@types/node": "7.0.0", - "ava": "^0.17.0", - "tslint": "^4.3.1", - "typescript": "^2.1.4" + "@types/node": "^7.0.0", + "ava": "^0.18.2", + "tslint": "^4.5.1", + "typescript": "^2.2.2" }, "dependencies": { - "handleable": "^0.20.0", - "lodash.isequal": "^4.4.0", + "handleable": "^0.20.1", + "lodash.isequal": "^4.5.0", "lodash.merge": "^4.6.0", - "typeable": "^2.0.0", - "validatable": "^0.24.0" + "typeable": "^2.0.1", + "validatable": "^0.24.1" } } From 2c9ef7f19dca34d50e9d38d2cb85b77022ba74ff Mon Sep 17 00:00:00 2001 From: xpeper Date: Thu, 30 Mar 2017 14:15:08 +0200 Subject: [PATCH 162/219] dependencies --- dist/example/index.js | 16 +- dist/example/index.js.map | 2 +- dist/src/fields.js | 3 +- dist/src/fields.js.map | 2 +- dist/src/index.js | 1 + dist/src/index.js.map | 2 +- dist/src/models.js | 3 +- dist/src/models.js.map | 2 +- dist/src/utils.js | 1 + dist/src/utils.js.map | 2 +- dist/tests/fields.js | 20 +- dist/tests/fields.js.map | 2 +- dist/tests/index.js | 1 + dist/tests/index.js.map | 2 +- dist/tests/models.js | 18 +- dist/tests/models.js.map | 2 +- yarn.lock | 1269 +++++++++++++++++++------------------ 17 files changed, 712 insertions(+), 636 deletions(-) diff --git a/dist/example/index.js b/dist/example/index.js index 4b18276..14d8cf4 100644 --- a/dist/example/index.js +++ b/dist/example/index.js @@ -1,9 +1,15 @@ "use strict"; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +exports.__esModule = true; var src_1 = require("../src"); var Book = (function (_super) { __extends(Book, _super); diff --git a/dist/example/index.js.map b/dist/example/index.js.map index 8811089..b0c19ae 100644 --- a/dist/example/index.js.map +++ b/dist/example/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../example/index.ts"],"names":[],"mappings":";;;;;;AAAA,8BAA6B;AAM7B;IAAmB,wBAAK;IAGtB,cAAoB,IAAS;QAAT,qBAAA,EAAA,SAAS;QAA7B,YACE,kBAAM,IAAI,CAAC,SAcZ;QAZC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YACxB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QAEH,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;IAChB,CAAC;IACH,WAAC;AAAD,CAAC,AAnBD,CAAmB,WAAK,GAmBvB;AAMD;IAAmB,wBAAK;IAItB,cAAoB,IAAS;QAAT,qBAAA,EAAA,SAAS;QAA7B,YACE,kBAAM,IAAI,CAAC,SAuBZ;QArBC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QACH,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QAEH,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;IAChB,CAAC;IACH,WAAC;AAAD,CAAC,AA7BD,CAAmB,WAAK,GA6BvB;AAMD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;IAClB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE;QACJ,KAAK,EAAE,gBAAgB;KACxB;CACF,CAAC,CAAC;AAEH,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,IAAI,CAAC;IAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IACvD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAClE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../example/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8BAA6B;AAM7B;IAAmB,wBAAK;IAGtB,cAAoB,IAAS;QAAT,qBAAA,EAAA,SAAS;QAA7B,YACE,kBAAM,IAAI,CAAC,SAcZ;QAZC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YACxB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QAEH,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;IAChB,CAAC;IACH,WAAC;AAAD,CAAC,AAnBD,CAAmB,WAAK,GAmBvB;AAMD;IAAmB,wBAAK;IAItB,cAAoB,IAAS;QAAT,qBAAA,EAAA,SAAS;QAA7B,YACE,kBAAM,IAAI,CAAC,SAuBZ;QArBC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QACH,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QAEH,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;IAChB,CAAC;IACH,WAAC;AAAD,CAAC,AA7BD,CAAmB,WAAK,GA6BvB;AAMD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;IAClB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE;QACJ,KAAK,EAAE,gBAAgB;KACxB;CACF,CAAC,CAAC;AAEH,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,IAAI,CAAC;IAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IACvD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAClE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/dist/src/fields.js b/dist/src/fields.js index dc1823a..7342e47 100644 --- a/dist/src/fields.js +++ b/dist/src/fields.js @@ -4,7 +4,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments)).next()); + step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { @@ -34,6 +34,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) { if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; +exports.__esModule = true; var typeable_1 = require("typeable"); var utils_1 = require("./utils"); var validatable_1 = require("validatable"); diff --git a/dist/src/fields.js.map b/dist/src/fields.js.map index d158ed0..183860c 100644 --- a/dist/src/fields.js.map +++ b/dist/src/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/index.js b/dist/src/index.js index 2e55a84..8100419 100644 --- a/dist/src/index.js +++ b/dist/src/index.js @@ -1,4 +1,5 @@ "use strict"; +exports.__esModule = true; var models_1 = require("./models"); exports.Model = models_1.Model; var fields_1 = require("./fields"); diff --git a/dist/src/index.js.map b/dist/src/index.js.map index 2ca4eb0..a37ac46 100644 --- a/dist/src/index.js.map +++ b/dist/src/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,mCAA+B;AAOvB,+BAAK;AANb,mCAA+B;AAMhB,+BAAK"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;AAAA,mCAA+B;AAOvB,+BAAK;AANb,mCAA+B;AAMhB,+BAAK"} \ No newline at end of file diff --git a/dist/src/models.js b/dist/src/models.js index 5e9ccaf..1ae564e 100644 --- a/dist/src/models.js +++ b/dist/src/models.js @@ -4,7 +4,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments)).next()); + step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { @@ -34,6 +34,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) { if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; +exports.__esModule = true; var typeable_1 = require("typeable"); var fields_1 = require("./fields"); var utils_1 = require("./utils"); diff --git a/dist/src/models.js.map b/dist/src/models.js.map index 210685d..ce39a3f 100644 --- a/dist/src/models.js.map +++ b/dist/src/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAoE;AAGpE,mCAAwD;AACxD,iCAAkD;AAiClD;IAaE,eAAoB,MAAwB;QAAxB,uBAAA,EAAA,WAAwB;QAA5C,iBA6BC;QA5BC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;YACpC,KAAK,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI;YAC3C,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;YAClC,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,aAAa,EAAE,EAApB,CAAoB;SAChC,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;YACrC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;YACpC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE;YACzC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE;YACvC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE;YACvC,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;IACL,CAAC;IAMS,6BAAa,GAAvB;QACE,IAAI,IAAI,GAAU,IAAI,CAAC;QACvB,GAAG,CAAC;YACF,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAChB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;YACrB,CAAC;YACD,IAAI,CAAC,CAAC;gBACJ,MAAM,CAAC,IAAI,CAAC;YACd,CAAC;QACH,CAAC,QAAQ,IAAI,EAAE;IACjB,CAAC;IAMS,6BAAa,GAAvB,UAAyB,MAAwB;QAAxB,uBAAA,EAAA,WAAwB;QAC/C,IAAI,IAAI,GAAG,kBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;QAC/D,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACjC,MAAM,CAAC,kBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC9C,CAAC;IAOS,4BAAY,GAAtB,UAAwB,MAAwB;QAAxB,uBAAA,EAAA,WAAwB;QAC9C,MAAM,CAAC,IAAI,cAAK,CACd,aAAK,CAAC,EAAE,EAAE,MAAM,EAAE;YAChB,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;YAChC,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,QAAQ,EAAE,IAAI,CAAC,SAAS;SACzB,CAAC,CACH,CAAC;IACJ,CAAC;IAMS,sCAAsB,GAAhC,UAAkC,OAA6B,EAAE,IAAU;QAAzC,wBAAA,EAAA,6BAA6B;QAAE,qBAAA,EAAA,UAAU;QACzE,IAAI,KAAK,GAAe,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QAElB,MAAM,CAAC,KAAK,CAAC;IACf,CAAC;IAOS,4BAAY,GAAtB,UAAwB,MAAwB;QAAxB,uBAAA,EAAA,WAAwB;QAC9C,MAAM,CAAC,IAAK,IAAI,CAAC,WAAmB,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAMM,wBAAQ,GAAf,UAAiB,IAAoB;QAApB,qBAAA,EAAA,WAAoB;QACnC,IAAI,CAAC,SAAS,GAAG,oBAAS,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAMM,2BAAW,GAAlB,UAAoB,IAAY,EAAE,MAAwB;QAAxB,uBAAA,EAAA,WAAwB;QACxD,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAEtC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE;YAChC,GAAG,EAAE,cAAM,OAAA,KAAK,CAAC,KAAK,EAAX,CAAW;YACtB,GAAG,EAAE,UAAC,CAAC,IAAK,OAAA,KAAK,CAAC,KAAK,GAAG,CAAC,EAAf,CAAe;YAC3B,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IAC7B,CAAC;IAMM,0BAAU,GAAjB,UAAmB,IAAY,EAAE,SAAsB;QACrD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IAChC,CAAC;IAMM,+BAAe,GAAtB,UAAwB,IAAY,EAAE,OAAgE;QACpG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACnC,CAAC;IAMM,6BAAa,GAApB,UAAsB,IAAY,EAAE,OAA8D;QAChG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACjC,CAAC;IAMM,wBAAQ,GAAf;QAAiB,cAAO;aAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;YAAP,yBAAO;;QACtB,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAEpD,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAZ,CAAY,EAAE,IAAI,CAAC,CAAC;QACtD,MAAM,CAAC,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IACtE,CAAC;IAMM,wBAAQ,GAAf;QAAiB,cAAO;aAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;YAAP,yBAAO;;QACtB,MAAM,CAAC,CAAC,sBAAW,CAAC,IAAI,CAAC,QAAQ,OAAb,IAAI,EAAa,IAAI,EAAE,CAAC;IAC9C,CAAC;IAMM,wBAAQ,GAAf,UAAiB,IAAS;QAA1B,iBAMC;QANgB,qBAAA,EAAA,SAAS;QACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;aACd,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAjB,CAAiB,CAAC;aAChC,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,IAAI,CAAC,GAAG,iBAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAlC,CAAkC,CAAC,CAAC;QAEzD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,yBAAS,GAAhB;QACE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,KAAK,CAAC,YAAY,EAAtB,CAAsB,CAAC,CAAC;IACtD,CAAC;IAMM,uBAAO,GAAd,UAAgB,MAAqB;QAArC,iBA6BC;QA7Be,uBAAA,EAAA,WAAqB;QACnC,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAC,IAAI;YACrC,IAAI,KAAK,GAAG,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YACtB,IAAI,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAExB,MAAM,CAAC,IAAI,CAAC,EAAC,IAAI,MAAA,EAAE,KAAK,OAAA,EAAC,CAAC,CAAC;YAE3B,EAAE,CAAC,CAAC,oBAAS,CAAC,KAAK,CAAC,IAAI,oBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACxC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC;oBACpC,MAAM,GAAG,MAAM,CAAC,MAAM,CACpB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CACpB,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC,CAAC,kBAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC;oBAC7D,MAAM,GAAG,MAAM,CAAC,MAAM,CACpB,KAAK;yBACF,GAAG,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAxC,CAAwC,CAAC;yBACvD,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,kBAAO,CAAC,CAAC,CAAC,EAAV,CAAU,CAAC;yBACzB,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAX,CAAW,CAAC,CACjC,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC;IAChB,CAAC;IAMM,uBAAO,GAAd,UAAgB,OAAiC;QAC/C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAMM,sBAAM,GAAb,UAAe,OAAkC;QAC/C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAC5C,CAAC;IAOM,sBAAM,GAAb,UAAe,IAAkC;QAC/C,IAAI,IAAI,GAAG,iBAAS,CAAC,IAAI,CAAC,CAAC;QAE3B,IAAI,CAAC,OAAO,EAAE;aACX,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAA7B,CAA6B,CAAC;aAC7C,MAAM,CAAC,UAAC,KAAK,IAAK,OAAA,CAAC,IAAI,CAAC,KAAK,CAAC,EAAZ,CAAY,CAAC;aAC/B,OAAO,CAAC,UAAC,KAAK;YACb,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,EAAJ,CAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEL,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,qBAAK,GAAL;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAA1B,CAA0B,CAAC,CAAC;QAEjD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,oBAAI,GAAJ;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAzB,CAAyB,CAAC,CAAC;QAEhD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,qBAAK,GAAL;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAA1B,CAA0B,CAAC,CAAC;QAEjD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,sBAAM,GAAN;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAA3B,CAA2B,CAAC,CAAC;QAElD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,wBAAQ,GAAR;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAA7B,CAA6B,CAAC,CAAC;QAEpD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAOD,sBAAM,GAAN,UAAQ,KAAU;QAChB,MAAM,CAAC,eAAO,CACZ,iBAAS,CAAC,IAAI,CAAC,EACf,iBAAS,CAAC,KAAK,CAAC,CACjB,CAAC;IACJ,CAAC;IAMD,yBAAS,GAAT;QAAA,iBAGC;QAFC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7B,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAA9B,CAA8B,CAAC,CAAC;IACpD,CAAC;IAMD,wBAAQ,GAAR;QAAA,iBAGC;QAFC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7B,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAA7B,CAA6B,CAAC,CAAC;IACnD,CAAC;IAMK,wBAAQ,GAAd,UAAgB,EAIV;YAHJ,oCAAa,EAAb,kCAAa;;gBAIT,MAAM;;;;iCAAG,IAAI,CAAC,OAAO;wBAEzB,qBAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;iCAChB,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAApB,CAAoB,CAAC,CACpC,EAAA;;wBAHD,SAGC,CAAC;wBAEF,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;4BAC/B,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;wBACtC,CAAC;wBACD,sBAAO,IAAI,EAAC;;;;KACb;IAMK,sBAAM,GAAZ,UAAc,KAAU,EAAE,EAIpB;YAHJ,oCAAY,EAAZ,iCAAY;;gBAOR,MAAM;;;;wBAHV,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;4BAAC,MAAM,gBAAC,IAAI,EAAC;wBACxB,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;4BAAC,MAAM,gBAAC,IAAI,EAAC;iCAEvB,IAAI,CAAC,OAAO;wBACzB,qBAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;iCAChB,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC,CACvC,EAAA;;wBAHD,SAGC,CAAC;wBAEF,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;4BAC/B,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;wBACtC,CAAC;wBACD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;4BAC3B,MAAM,KAAK,CAAC;wBACd,CAAC;wBACD,sBAAO,IAAI,EAAC;;;;KACb;IAMD,6BAAa,GAAb;QACE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;aAClB,GAAG,CAAC,UAAC,EAAa;gBAAZ,cAAI,EAAE,gBAAK;YAAM,OAAA,CAAC,EAAC,IAAI,MAAA,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAmB,CAAA;QAA/C,CAA+C,CAAC;aACvE,MAAM,CAAC,UAAC,EAAc;gBAAb,cAAI,EAAE,kBAAM;YAAM,OAAA,MAAM,CAAC,MAAM,GAAG,CAAC;QAAjB,CAAiB,CAAC,CAAC;IACnD,CAAC;IAMD,2BAAW,GAAX,UAAa,MAA4B;QAAzC,iBASC;QATY,uBAAA,EAAA,WAA4B;QACvC,MAAM,CAAC,OAAO,CAAC,UAAC,KAAK;YACnB,IAAI,KAAK,GAAG,KAAI,CAAC,QAAQ,OAAb,KAAI,EAAa,KAAK,CAAC,IAAI,CAAC,CAAC;YACzC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gBACV,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,yBAAS,GAAT;QAAA,iBAGC;QAFC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7B,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAA9B,CAA8B,CAAC,CAAC;IACpD,CAAC;IAMD,uBAAO,GAAP;QACE,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC;IAMD,0BAAU,GAAV;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAA/B,CAA+B,CAAC,CAAC;QAEtD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,qBAAK,GAAL,UAAO,IAAS;QAAT,qBAAA,EAAA,SAAS;QACd,MAAM,CAAC,IAAI,CAAC,YAAY,CACtB,aAAK,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,EAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAC,EAAE,IAAI,CAAC,CACzD,CAAC;IACJ,CAAC;IAEH,YAAC;AAAD,CAAC,AApdD,IAodC;AApdqB,sBAAK"} \ No newline at end of file diff --git a/dist/src/utils.js b/dist/src/utils.js index 9e88ce3..57334ea 100644 --- a/dist/src/utils.js +++ b/dist/src/utils.js @@ -1,4 +1,5 @@ "use strict"; +exports.__esModule = true; var merge = require("lodash.merge"); exports.merge = merge; var isEqual = require("lodash.isequal"); diff --git a/dist/src/utils.js.map b/dist/src/utils.js.map index 70baf35..355803b 100644 --- a/dist/src/utils.js.map +++ b/dist/src/utils.js.map @@ -1 +1 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";AAAA,oCAAsC;AAO9B,sBAAK;AANb,wCAA0C;AAYlC,0BAAO;AAMf,mBAA2B,IAAI;IAC7B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC;AAFD,8BAEC"} \ No newline at end of file +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;AAAA,oCAAsC;AAO9B,sBAAK;AANb,wCAA0C;AAYlC,0BAAO;AAMf,mBAA2B,IAAI;IAC7B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC;AAFD,8BAEC"} \ No newline at end of file diff --git a/dist/tests/fields.js b/dist/tests/fields.js index fb6f93d..055b055 100644 --- a/dist/tests/fields.js +++ b/dist/tests/fields.js @@ -1,15 +1,20 @@ "use strict"; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments)).next()); + step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { @@ -40,6 +45,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) { } }; var _this = this; +exports.__esModule = true; var ava_1 = require("ava"); var src_1 = require("../src"); ava_1["default"]('nullifies a value by default', function (t) { @@ -146,7 +152,7 @@ ava_1["default"]('method `isNested()` returns `true` if the field type is un ins var f2 = new src_1.Field({ type: [(function (_super) { __extends(User, _super); function User() { - return _super.apply(this, arguments) || this; + return _super !== null && _super.apply(this, arguments) || this; } return User; }(src_1.Model))] }); diff --git a/dist/tests/fields.js.map b/dist/tests/fields.js.map index 9e03ca4..f79436e 100644 --- a/dist/tests/fields.js.map +++ b/dist/tests/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../tests/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../tests/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/index.js b/dist/tests/index.js index e20b963..6abcc0c 100644 --- a/dist/tests/index.js +++ b/dist/tests/index.js @@ -1,4 +1,5 @@ "use strict"; +exports.__esModule = true; var ava_1 = require("ava"); var objectschema = require("../src"); ava_1["default"]('exposed content', function (t) { diff --git a/dist/tests/index.js.map b/dist/tests/index.js.map index b76ef15..a481f2e 100644 --- a/dist/tests/index.js.map +++ b/dist/tests/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../tests/index.ts"],"names":[],"mappings":";AAAA,2BAAuB;AACvB,qCAAuC;AAEvC,gBAAI,CAAC,iBAAiB,EAAE,UAAC,CAAC;IACxB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../tests/index.ts"],"names":[],"mappings":";;AAAA,2BAAuB;AACvB,qCAAuC;AAEvC,gBAAI,CAAC,iBAAiB,EAAE,UAAC,CAAC;IACxB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/dist/tests/models.js b/dist/tests/models.js index 5d0b0dd..15d7646 100644 --- a/dist/tests/models.js +++ b/dist/tests/models.js @@ -1,15 +1,20 @@ "use strict"; -var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -}; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments)).next()); + step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { @@ -40,6 +45,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) { } }; var _this = this; +exports.__esModule = true; var ava_1 = require("ava"); var src_1 = require("../src"); ava_1["default"]('method `defineField` initializes nullified enumerable property', function (t) { diff --git a/dist/tests/models.js.map b/dist/tests/models.js.map index 29f4206..e5df271 100644 --- a/dist/tests/models.js.map +++ b/dist/tests/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index faa17c2..7b021b1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,9 +2,41 @@ # yarn lockfile v1 -"@types/node@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.0.tgz#c081147b109da5f9c57af70571771be97ce9c0ba" +"@ava/babel-preset-stage-4@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@ava/babel-preset-stage-4/-/babel-preset-stage-4-1.0.0.tgz#a613b5e152f529305422546b072d47facfb26291" + dependencies: + babel-plugin-check-es2015-constants "^6.8.0" + babel-plugin-syntax-trailing-function-commas "^6.20.0" + babel-plugin-transform-async-to-generator "^6.16.0" + babel-plugin-transform-es2015-destructuring "^6.19.0" + babel-plugin-transform-es2015-function-name "^6.9.0" + babel-plugin-transform-es2015-modules-commonjs "^6.18.0" + babel-plugin-transform-es2015-parameters "^6.21.0" + babel-plugin-transform-es2015-spread "^6.8.0" + babel-plugin-transform-es2015-sticky-regex "^6.8.0" + babel-plugin-transform-es2015-unicode-regex "^6.11.0" + babel-plugin-transform-exponentiation-operator "^6.8.0" + package-hash "^1.2.0" + +"@ava/babel-preset-transform-test-files@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@ava/babel-preset-transform-test-files/-/babel-preset-transform-test-files-2.0.1.tgz#d75232cc6d71dc9c7eae4b76a9004fd81501d0c1" + dependencies: + babel-plugin-ava-throws-helper "^1.0.0" + babel-plugin-espower "^2.3.2" + package-hash "^1.2.0" + +"@ava/pretty-format@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@ava/pretty-format/-/pretty-format-1.1.0.tgz#d0a57d25eb9aeab9643bdd1a030642b91c123e28" + dependencies: + ansi-styles "^2.2.1" + esutils "^2.0.2" + +"@types/node@^7.0.0": + version "7.0.12" + resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.12.tgz#ae5f67a19c15f752148004db07cbbb372e69efc9" abbrev@1: version "1.0.9" @@ -106,109 +138,94 @@ asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" -auto-bind@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-0.1.0.tgz#7a29efc8c2388d3d578e02fc2df531c81ffc1ee1" +auto-bind@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-1.1.0.tgz#93b864dc7ee01a326281775d5c75ca0a751e5961" -ava-files@^0.2.0: +ava-init@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/ava-files/-/ava-files-0.2.0.tgz#c7b8b6e2e0cea63b57a6e27e0db145c7c19cfe20" - dependencies: - auto-bind "^0.1.0" - bluebird "^3.4.1" - globby "^6.0.0" - ignore-by-default "^1.0.1" - lodash.flatten "^4.2.0" - multimatch "^2.1.0" - slash "^1.0.0" - -ava-init@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/ava-init/-/ava-init-0.1.6.tgz#ef19ed0b24b6bf359dad6fbadf1a05d836395c91" + resolved "https://registry.yarnpkg.com/ava-init/-/ava-init-0.2.0.tgz#9304c8b4c357d66e3dfdae1fbff47b1199d5c55d" dependencies: arr-exclude "^1.0.0" - cross-spawn "^4.0.0" - pinkie-promise "^2.0.0" - read-pkg-up "^1.0.1" - the-argv "^1.0.0" - write-pkg "^1.0.0" - -ava@^0.17.0: - version "0.17.0" - resolved "https://registry.yarnpkg.com/ava/-/ava-0.17.0.tgz#359e2a89616801ef03929c3cf10a9d4f8e451d02" - dependencies: + execa "^0.5.0" + has-yarn "^1.0.0" + read-pkg-up "^2.0.0" + write-pkg "^2.0.0" + +ava@^0.18.2: + version "0.18.2" + resolved "https://registry.yarnpkg.com/ava/-/ava-0.18.2.tgz#79253d1636077034a2780bb55b5c3e6c3d7f312f" + dependencies: + "@ava/babel-preset-stage-4" "^1.0.0" + "@ava/babel-preset-transform-test-files" "^2.0.0" + "@ava/pretty-format" "^1.1.0" arr-flatten "^1.0.1" array-union "^1.0.1" array-uniq "^1.0.2" arrify "^1.0.0" - auto-bind "^0.1.0" - ava-files "^0.2.0" - ava-init "^0.1.0" + auto-bind "^1.1.0" + ava-init "^0.2.0" babel-code-frame "^6.16.0" babel-core "^6.17.0" - babel-plugin-ava-throws-helper "^0.1.0" - babel-plugin-detective "^2.0.0" - babel-plugin-espower "^2.3.1" - babel-plugin-transform-runtime "^6.15.0" - babel-preset-es2015 "^6.16.0" - babel-preset-es2015-node4 "^2.1.0" - babel-preset-stage-2 "^6.17.0" - babel-runtime "^6.11.6" bluebird "^3.0.0" caching-transform "^1.0.0" chalk "^1.0.0" chokidar "^1.4.2" + clean-stack "^1.1.1" clean-yaml-object "^0.1.0" - cli-cursor "^1.0.2" - cli-spinners "^0.1.2" + cli-cursor "^2.1.0" + cli-spinners "^1.0.0" cli-truncate "^0.2.0" co-with-promise "^4.6.0" + code-excerpt "^2.1.0" common-path-prefix "^1.0.0" convert-source-map "^1.2.0" core-assert "^0.2.0" currently-unhandled "^0.4.1" debug "^2.2.0" + diff "^3.0.1" + dot-prop "^4.1.0" empower-core "^0.6.1" - figures "^1.4.0" + equal-length "^1.0.0" + figures "^2.0.0" find-cache-dir "^0.1.1" fn-name "^2.0.0" get-port "^2.1.0" + globby "^6.0.0" has-flag "^2.0.0" ignore-by-default "^1.0.0" + indent-string "^3.0.0" is-ci "^1.0.7" is-generator-fn "^1.0.0" is-obj "^1.0.0" is-observable "^0.2.0" is-promise "^2.1.0" + jest-snapshot "^18.1.0" last-line-stream "^1.0.0" lodash.debounce "^4.0.3" lodash.difference "^4.3.0" - lodash.isequal "^4.4.0" + lodash.flatten "^4.2.0" + lodash.isequal "^4.5.0" loud-rejection "^1.2.0" matcher "^0.1.1" max-timeout "^1.0.0" - md5-hex "^1.2.0" + md5-hex "^2.0.0" meow "^3.7.0" ms "^0.7.1" - object-assign "^4.0.1" + multimatch "^2.1.0" observable-to-promise "^0.4.0" option-chain "^0.1.0" - package-hash "^1.1.0" - pkg-conf "^1.0.1" + package-hash "^1.2.0" + pkg-conf "^2.0.0" plur "^2.0.0" - power-assert-context-formatter "^1.0.4" - power-assert-renderer-assertion "^1.0.1" - power-assert-renderer-succinct "^1.0.1" pretty-ms "^2.0.0" - repeating "^2.0.0" require-precompiled "^0.1.0" resolve-cwd "^1.0.0" - semver "^5.3.0" - set-immediate-shim "^1.0.1" + slash "^1.0.0" source-map-support "^0.4.0" - stack-utils "^0.4.0" + stack-utils "^1.0.0" strip-ansi "^3.0.1" - strip-bom "^2.0.0" + strip-bom-buf "^1.0.0" time-require "^0.1.2" unique-temp-dir "^1.0.0" update-notifier "^1.0.0" @@ -221,21 +238,21 @@ aws4@^1.2.1: version "1.5.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755" -babel-code-frame@^6.16.0: - version "6.16.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.16.0.tgz#f90e60da0862909d3ce098733b5d3987c97cb8de" +babel-code-frame@^6.16.0, babel-code-frame@^6.20.0: + version "6.20.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.20.0.tgz#b968f839090f9a8bc6d41938fb96cb84f7387b26" dependencies: chalk "^1.1.0" esutils "^2.0.2" js-tokens "^2.0.0" -babel-code-frame@^6.20.0: - version "6.20.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.20.0.tgz#b968f839090f9a8bc6d41938fb96cb84f7387b26" +babel-code-frame@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" dependencies: chalk "^1.1.0" esutils "^2.0.2" - js-tokens "^2.0.0" + js-tokens "^3.0.0" babel-core@^6.17.0, babel-core@^6.18.0: version "6.18.2" @@ -273,56 +290,30 @@ babel-generator@^6.1.0, babel-generator@^6.18.0: lodash "^4.2.0" source-map "^0.5.0" -babel-helper-bindify-decorators@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.18.0.tgz#fc00c573676a6e702fffa00019580892ec8780a5" - dependencies: - babel-runtime "^6.0.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - -babel-helper-builder-binary-assignment-operator-visitor@^6.8.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.18.0.tgz#8ae814989f7a53682152e3401a04fabd0bb333a6" - dependencies: - babel-helper-explode-assignable-expression "^6.18.0" - babel-runtime "^6.0.0" - babel-types "^6.18.0" - -babel-helper-call-delegate@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.18.0.tgz#05b14aafa430884b034097ef29e9f067ea4133bd" - dependencies: - babel-helper-hoist-variables "^6.18.0" - babel-runtime "^6.0.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - -babel-helper-define-map@^6.18.0, babel-helper-define-map@^6.8.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.18.0.tgz#8d6c85dc7fbb4c19be3de40474d18e97c3676ec2" +babel-helper-builder-binary-assignment-operator-visitor@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.22.0.tgz#29df56be144d81bdeac08262bfa41d2c5e91cdcd" dependencies: - babel-helper-function-name "^6.18.0" - babel-runtime "^6.9.0" - babel-types "^6.18.0" - lodash "^4.2.0" + babel-helper-explode-assignable-expression "^6.22.0" + babel-runtime "^6.22.0" + babel-types "^6.22.0" -babel-helper-explode-assignable-expression@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.18.0.tgz#14b8e8c2d03ad735d4b20f1840b24cd1f65239fe" +babel-helper-call-delegate@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.22.0.tgz#119921b56120f17e9dae3f74b4f5cc7bcc1b37ef" dependencies: - babel-runtime "^6.0.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" + babel-helper-hoist-variables "^6.22.0" + babel-runtime "^6.22.0" + babel-traverse "^6.22.0" + babel-types "^6.22.0" -babel-helper-explode-class@^6.8.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.18.0.tgz#c44f76f4fa23b9c5d607cbac5d4115e7a76f62cb" +babel-helper-explode-assignable-expression@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.22.0.tgz#c97bf76eed3e0bae4048121f2b9dae1a4e7d0478" dependencies: - babel-helper-bindify-decorators "^6.18.0" - babel-runtime "^6.0.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" + babel-runtime "^6.22.0" + babel-traverse "^6.22.0" + babel-types "^6.22.0" babel-helper-function-name@^6.18.0, babel-helper-function-name@^6.8.0: version "6.18.0" @@ -341,29 +332,29 @@ babel-helper-get-function-arity@^6.18.0: babel-runtime "^6.0.0" babel-types "^6.18.0" -babel-helper-hoist-variables@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.18.0.tgz#a835b5ab8b46d6de9babefae4d98ea41e866b82a" +babel-helper-get-function-arity@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.22.0.tgz#0beb464ad69dc7347410ac6ade9f03a50634f5ce" dependencies: - babel-runtime "^6.0.0" - babel-types "^6.18.0" + babel-runtime "^6.22.0" + babel-types "^6.22.0" -babel-helper-optimise-call-expression@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.18.0.tgz#9261d0299ee1a4f08a6dd28b7b7c777348fd8f0f" +babel-helper-hoist-variables@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.22.0.tgz#3eacbf731d80705845dd2e9718f600cfb9b4ba72" dependencies: - babel-runtime "^6.0.0" - babel-types "^6.18.0" + babel-runtime "^6.22.0" + babel-types "^6.22.0" -babel-helper-regex@^6.8.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.18.0.tgz#ae0ebfd77de86cb2f1af258e2cc20b5fe893ecc6" +babel-helper-regex@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.22.0.tgz#79f532be1647b1f0ee3474b5f5c3da58001d247d" dependencies: - babel-runtime "^6.9.0" - babel-types "^6.18.0" + babel-runtime "^6.22.0" + babel-types "^6.22.0" lodash "^4.2.0" -babel-helper-remap-async-to-generator@^6.16.0, babel-helper-remap-async-to-generator@^6.16.2: +babel-helper-remap-async-to-generator@^6.16.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.18.0.tgz#336cdf3cab650bb191b02fc16a3708e7be7f9ce5" dependencies: @@ -373,17 +364,6 @@ babel-helper-remap-async-to-generator@^6.16.0, babel-helper-remap-async-to-gener babel-traverse "^6.18.0" babel-types "^6.18.0" -babel-helper-replace-supers@^6.18.0, babel-helper-replace-supers@^6.8.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.18.0.tgz#28ec69877be4144dbd64f4cc3a337e89f29a924e" - dependencies: - babel-helper-optimise-call-expression "^6.18.0" - babel-messages "^6.8.0" - babel-runtime "^6.0.0" - babel-template "^6.16.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - babel-helpers@^6.16.0: version "6.16.0" resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.16.0.tgz#1095ec10d99279460553e67eb3eee9973d3867e3" @@ -391,38 +371,40 @@ babel-helpers@^6.16.0: babel-runtime "^6.0.0" babel-template "^6.16.0" +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + dependencies: + babel-runtime "^6.22.0" + babel-messages@^6.8.0: version "6.8.0" resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.8.0.tgz#bf504736ca967e6d65ef0adb5a2a5f947c8e0eb9" dependencies: babel-runtime "^6.0.0" -babel-plugin-ava-throws-helper@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/babel-plugin-ava-throws-helper/-/babel-plugin-ava-throws-helper-0.1.0.tgz#951107708a12208026bf8ca4cef18a87bc9b0cfe" +babel-plugin-ava-throws-helper@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-ava-throws-helper/-/babel-plugin-ava-throws-helper-1.0.0.tgz#8fe6e79d2fd19838b5c3649f89cfb03fd563e241" dependencies: babel-template "^6.7.0" babel-types "^6.7.2" -babel-plugin-check-es2015-constants@^6.3.13: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.8.0.tgz#dbf024c32ed37bfda8dee1e76da02386a8d26fe7" +babel-plugin-check-es2015-constants@^6.8.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" dependencies: - babel-runtime "^6.0.0" + babel-runtime "^6.22.0" -babel-plugin-detective@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-detective/-/babel-plugin-detective-2.0.0.tgz#6e642e83c22a335279754ebe2d754d2635f49f13" - -babel-plugin-espower@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-espower/-/babel-plugin-espower-2.3.1.tgz#d15e904bc9949b14ac233b7965c2a5dc7a19a6a9" +babel-plugin-espower@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/babel-plugin-espower/-/babel-plugin-espower-2.3.2.tgz#5516b8fcdb26c9f0e1d8160749f6e4c65e71271e" dependencies: babel-generator "^6.1.0" babylon "^6.1.0" call-matcher "^1.0.0" core-js "^2.0.0" - espower-location-detector "^0.1.1" + espower-location-detector "^1.0.0" espurify "^1.6.0" estraverse "^4.1.1" @@ -430,41 +412,13 @@ babel-plugin-syntax-async-functions@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" -babel-plugin-syntax-async-generators@^6.5.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" - -babel-plugin-syntax-class-properties@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" - -babel-plugin-syntax-decorators@^6.13.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" - -babel-plugin-syntax-dynamic-import@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" - babel-plugin-syntax-exponentiation-operator@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" -babel-plugin-syntax-object-rest-spread@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - -babel-plugin-syntax-trailing-function-commas@^6.3.13: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.13.0.tgz#2b84b7d53dd744f94ff1fad7669406274b23f541" - -babel-plugin-transform-async-generator-functions@^6.17.0: - version "6.17.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.17.0.tgz#d0b5a2b2f0940f2b245fa20a00519ed7bc6cae54" - dependencies: - babel-helper-remap-async-to-generator "^6.16.2" - babel-plugin-syntax-async-generators "^6.5.0" - babel-runtime "^6.0.0" +babel-plugin-syntax-trailing-function-commas@^6.20.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" babel-plugin-transform-async-to-generator@^6.16.0: version "6.16.0" @@ -474,90 +428,13 @@ babel-plugin-transform-async-to-generator@^6.16.0: babel-plugin-syntax-async-functions "^6.8.0" babel-runtime "^6.0.0" -babel-plugin-transform-class-properties@^6.18.0: - version "6.19.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.19.0.tgz#1274b349abaadc835164e2004f4a2444a2788d5f" +babel-plugin-transform-es2015-destructuring@^6.19.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" dependencies: - babel-helper-function-name "^6.18.0" - babel-plugin-syntax-class-properties "^6.8.0" - babel-runtime "^6.9.1" - babel-template "^6.15.0" + babel-runtime "^6.22.0" -babel-plugin-transform-decorators@^6.13.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.13.0.tgz#82d65c1470ae83e2d13eebecb0a1c2476d62da9d" - dependencies: - babel-helper-define-map "^6.8.0" - babel-helper-explode-class "^6.8.0" - babel-plugin-syntax-decorators "^6.13.0" - babel-runtime "^6.0.0" - babel-template "^6.8.0" - babel-types "^6.13.0" - -babel-plugin-transform-es2015-arrow-functions@^6.3.13: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.8.0.tgz#5b63afc3181bdc9a8c4d481b5a4f3f7d7fef3d9d" - dependencies: - babel-runtime "^6.0.0" - -babel-plugin-transform-es2015-block-scoped-functions@^6.3.13: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.8.0.tgz#ed95d629c4b5a71ae29682b998f70d9833eb366d" - dependencies: - babel-runtime "^6.0.0" - -babel-plugin-transform-es2015-block-scoping@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.18.0.tgz#3bfdcfec318d46df22525cdea88f1978813653af" - dependencies: - babel-runtime "^6.9.0" - babel-template "^6.15.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - lodash "^4.2.0" - -babel-plugin-transform-es2015-classes@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.18.0.tgz#ffe7a17321bf83e494dcda0ae3fc72df48ffd1d9" - dependencies: - babel-helper-define-map "^6.18.0" - babel-helper-function-name "^6.18.0" - babel-helper-optimise-call-expression "^6.18.0" - babel-helper-replace-supers "^6.18.0" - babel-messages "^6.8.0" - babel-runtime "^6.9.0" - babel-template "^6.14.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - -babel-plugin-transform-es2015-computed-properties@^6.3.13: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.8.0.tgz#f51010fd61b3bd7b6b60a5fdfd307bb7a5279870" - dependencies: - babel-helper-define-map "^6.8.0" - babel-runtime "^6.0.0" - babel-template "^6.8.0" - -babel-plugin-transform-es2015-destructuring@^6.18.0, babel-plugin-transform-es2015-destructuring@^6.6.5: - version "6.19.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.19.0.tgz#ff1d911c4b3f4cab621bd66702a869acd1900533" - dependencies: - babel-runtime "^6.9.0" - -babel-plugin-transform-es2015-duplicate-keys@^6.6.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.8.0.tgz#fd8f7f7171fc108cc1c70c3164b9f15a81c25f7d" - dependencies: - babel-runtime "^6.0.0" - babel-types "^6.8.0" - -babel-plugin-transform-es2015-for-of@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.18.0.tgz#4c517504db64bf8cfc119a6b8f177211f2028a70" - dependencies: - babel-runtime "^6.0.0" - -babel-plugin-transform-es2015-function-name@^6.5.0, babel-plugin-transform-es2015-function-name@^6.9.0: +babel-plugin-transform-es2015-function-name@^6.9.0: version "6.9.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.9.0.tgz#8c135b17dbd064e5bba56ec511baaee2fca82719" dependencies: @@ -565,21 +442,7 @@ babel-plugin-transform-es2015-function-name@^6.5.0, babel-plugin-transform-es201 babel-runtime "^6.9.0" babel-types "^6.9.0" -babel-plugin-transform-es2015-literals@^6.3.13: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.8.0.tgz#50aa2e5c7958fc2ab25d74ec117e0cc98f046468" - dependencies: - babel-runtime "^6.0.0" - -babel-plugin-transform-es2015-modules-amd@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.18.0.tgz#49a054cbb762bdf9ae2d8a807076cfade6141e40" - dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.18.0" - babel-runtime "^6.0.0" - babel-template "^6.8.0" - -babel-plugin-transform-es2015-modules-commonjs@^6.18.0, babel-plugin-transform-es2015-modules-commonjs@^6.7.4: +babel-plugin-transform-es2015-modules-commonjs@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.18.0.tgz#c15ae5bb11b32a0abdcc98a5837baa4ee8d67bcc" dependencies: @@ -588,107 +451,46 @@ babel-plugin-transform-es2015-modules-commonjs@^6.18.0, babel-plugin-transform-e babel-template "^6.16.0" babel-types "^6.18.0" -babel-plugin-transform-es2015-modules-systemjs@^6.18.0: - version "6.19.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.19.0.tgz#50438136eba74527efa00a5b0fefaf1dc4071da6" +babel-plugin-transform-es2015-parameters@^6.21.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.23.0.tgz#3a2aabb70c8af945d5ce386f1a4250625a83ae3b" dependencies: - babel-helper-hoist-variables "^6.18.0" - babel-runtime "^6.11.6" - babel-template "^6.14.0" + babel-helper-call-delegate "^6.22.0" + babel-helper-get-function-arity "^6.22.0" + babel-runtime "^6.22.0" + babel-template "^6.23.0" + babel-traverse "^6.23.0" + babel-types "^6.23.0" -babel-plugin-transform-es2015-modules-umd@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.18.0.tgz#23351770ece5c1f8e83ed67cb1d7992884491e50" +babel-plugin-transform-es2015-spread@^6.8.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" dependencies: - babel-plugin-transform-es2015-modules-amd "^6.18.0" - babel-runtime "^6.0.0" - babel-template "^6.8.0" + babel-runtime "^6.22.0" -babel-plugin-transform-es2015-object-super@^6.3.13: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.8.0.tgz#1b858740a5a4400887c23dcff6f4d56eea4a24c5" +babel-plugin-transform-es2015-sticky-regex@^6.8.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.22.0.tgz#ab316829e866ee3f4b9eb96939757d19a5bc4593" dependencies: - babel-helper-replace-supers "^6.8.0" - babel-runtime "^6.0.0" + babel-helper-regex "^6.22.0" + babel-runtime "^6.22.0" + babel-types "^6.22.0" -babel-plugin-transform-es2015-parameters@^6.18.0, babel-plugin-transform-es2015-parameters@^6.7.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.18.0.tgz#9b2cfe238c549f1635ba27fc1daa858be70608b1" +babel-plugin-transform-es2015-unicode-regex@^6.11.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.22.0.tgz#8d9cc27e7ee1decfe65454fb986452a04a613d20" dependencies: - babel-helper-call-delegate "^6.18.0" - babel-helper-get-function-arity "^6.18.0" - babel-runtime "^6.9.0" - babel-template "^6.16.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - -babel-plugin-transform-es2015-shorthand-properties@^6.18.0, babel-plugin-transform-es2015-shorthand-properties@^6.5.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.18.0.tgz#e2ede3b7df47bf980151926534d1dd0cbea58f43" - dependencies: - babel-runtime "^6.0.0" - babel-types "^6.18.0" - -babel-plugin-transform-es2015-spread@^6.3.13, babel-plugin-transform-es2015-spread@^6.6.5: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.8.0.tgz#0217f737e3b821fa5a669f187c6ed59205f05e9c" - dependencies: - babel-runtime "^6.0.0" - -babel-plugin-transform-es2015-sticky-regex@^6.3.13, babel-plugin-transform-es2015-sticky-regex@^6.5.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.8.0.tgz#e73d300a440a35d5c64f5c2a344dc236e3df47be" - dependencies: - babel-helper-regex "^6.8.0" - babel-runtime "^6.0.0" - babel-types "^6.8.0" - -babel-plugin-transform-es2015-template-literals@^6.6.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.8.0.tgz#86eb876d0a2c635da4ec048b4f7de9dfc897e66b" - dependencies: - babel-runtime "^6.0.0" - -babel-plugin-transform-es2015-typeof-symbol@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.18.0.tgz#0b14c48629c90ff47a0650077f6aa699bee35798" - dependencies: - babel-runtime "^6.0.0" - -babel-plugin-transform-es2015-unicode-regex@^6.3.13, babel-plugin-transform-es2015-unicode-regex@^6.5.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.11.0.tgz#6298ceabaad88d50a3f4f392d8de997260f6ef2c" - dependencies: - babel-helper-regex "^6.8.0" - babel-runtime "^6.0.0" + babel-helper-regex "^6.22.0" + babel-runtime "^6.22.0" regexpu-core "^2.0.0" -babel-plugin-transform-exponentiation-operator@^6.3.13: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.8.0.tgz#db25742e9339eade676ca9acec46f955599a68a4" +babel-plugin-transform-exponentiation-operator@^6.8.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.22.0.tgz#d57c8335281918e54ef053118ce6eb108468084d" dependencies: - babel-helper-builder-binary-assignment-operator-visitor "^6.8.0" + babel-helper-builder-binary-assignment-operator-visitor "^6.22.0" babel-plugin-syntax-exponentiation-operator "^6.8.0" - babel-runtime "^6.0.0" - -babel-plugin-transform-object-rest-spread@^6.16.0: - version "6.19.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.19.0.tgz#f6ac428ee3cb4c6aa00943ed1422ce813603b34c" - dependencies: - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-runtime "^6.0.0" - -babel-plugin-transform-regenerator@^6.16.0: - version "6.21.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.21.0.tgz#75d0c7e7f84f379358f508451c68a2c5fa5a9703" - dependencies: - regenerator-transform "0.9.8" - -babel-plugin-transform-runtime@^6.15.0: - version "6.15.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.15.0.tgz#3d75b4d949ad81af157570273846fb59aeb0d57c" - dependencies: - babel-runtime "^6.9.0" + babel-runtime "^6.22.0" babel-plugin-transform-strict-mode@^6.18.0: version "6.18.0" @@ -697,67 +499,6 @@ babel-plugin-transform-strict-mode@^6.18.0: babel-runtime "^6.0.0" babel-types "^6.18.0" -babel-preset-es2015-node4@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/babel-preset-es2015-node4/-/babel-preset-es2015-node4-2.1.0.tgz#9852f281e2332b57d49c189841ac25466a6ebe98" - dependencies: - babel-plugin-transform-es2015-destructuring "^6.6.5" - babel-plugin-transform-es2015-function-name "^6.5.0" - babel-plugin-transform-es2015-modules-commonjs "^6.7.4" - babel-plugin-transform-es2015-parameters "^6.7.0" - babel-plugin-transform-es2015-shorthand-properties "^6.5.0" - babel-plugin-transform-es2015-spread "^6.6.5" - babel-plugin-transform-es2015-sticky-regex "^6.5.0" - babel-plugin-transform-es2015-unicode-regex "^6.5.0" - -babel-preset-es2015@^6.16.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.18.0.tgz#b8c70df84ec948c43dcf2bf770e988eb7da88312" - dependencies: - babel-plugin-check-es2015-constants "^6.3.13" - babel-plugin-transform-es2015-arrow-functions "^6.3.13" - babel-plugin-transform-es2015-block-scoped-functions "^6.3.13" - babel-plugin-transform-es2015-block-scoping "^6.18.0" - babel-plugin-transform-es2015-classes "^6.18.0" - babel-plugin-transform-es2015-computed-properties "^6.3.13" - babel-plugin-transform-es2015-destructuring "^6.18.0" - babel-plugin-transform-es2015-duplicate-keys "^6.6.0" - babel-plugin-transform-es2015-for-of "^6.18.0" - babel-plugin-transform-es2015-function-name "^6.9.0" - babel-plugin-transform-es2015-literals "^6.3.13" - babel-plugin-transform-es2015-modules-amd "^6.18.0" - babel-plugin-transform-es2015-modules-commonjs "^6.18.0" - babel-plugin-transform-es2015-modules-systemjs "^6.18.0" - babel-plugin-transform-es2015-modules-umd "^6.18.0" - babel-plugin-transform-es2015-object-super "^6.3.13" - babel-plugin-transform-es2015-parameters "^6.18.0" - babel-plugin-transform-es2015-shorthand-properties "^6.18.0" - babel-plugin-transform-es2015-spread "^6.3.13" - babel-plugin-transform-es2015-sticky-regex "^6.3.13" - babel-plugin-transform-es2015-template-literals "^6.6.0" - babel-plugin-transform-es2015-typeof-symbol "^6.18.0" - babel-plugin-transform-es2015-unicode-regex "^6.3.13" - babel-plugin-transform-regenerator "^6.16.0" - -babel-preset-stage-2@^6.17.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.18.0.tgz#9eb7bf9a8e91c68260d5ba7500493caaada4b5b5" - dependencies: - babel-plugin-syntax-dynamic-import "^6.18.0" - babel-plugin-transform-class-properties "^6.18.0" - babel-plugin-transform-decorators "^6.13.0" - babel-preset-stage-3 "^6.17.0" - -babel-preset-stage-3@^6.17.0: - version "6.17.0" - resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.17.0.tgz#b6638e46db6e91e3f889013d8ce143917c685e39" - dependencies: - babel-plugin-syntax-trailing-function-commas "^6.3.13" - babel-plugin-transform-async-generator-functions "^6.17.0" - babel-plugin-transform-async-to-generator "^6.16.0" - babel-plugin-transform-exponentiation-operator "^6.3.13" - babel-plugin-transform-object-rest-spread "^6.16.0" - babel-register@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.18.0.tgz#892e2e03865078dd90ad2c715111ec4449b32a68" @@ -770,14 +511,21 @@ babel-register@^6.18.0: mkdirp "^0.5.1" source-map-support "^0.4.2" -babel-runtime@^6.0.0, babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.9.0, babel-runtime@^6.9.1: +babel-runtime@^6.0.0, babel-runtime@^6.11.6, babel-runtime@^6.9.0, babel-runtime@^6.9.1: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.18.0.tgz#0f4177ffd98492ef13b9f823e9994a02584c9078" dependencies: core-js "^2.4.0" regenerator-runtime "^0.9.5" -babel-template@^6.14.0, babel-template@^6.15.0, babel-template@^6.16.0, babel-template@^6.7.0, babel-template@^6.8.0: +babel-runtime@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.10.0" + +babel-template@^6.16.0, babel-template@^6.8.0: version "6.16.0" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.16.0.tgz#e149dd1a9f03a35f817ddbc4d0481988e7ebc8ca" dependencies: @@ -787,6 +535,16 @@ babel-template@^6.14.0, babel-template@^6.15.0, babel-template@^6.16.0, babel-te babylon "^6.11.0" lodash "^4.2.0" +babel-template@^6.23.0, babel-template@^6.7.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.23.0.tgz#04d4f270adbb3aa704a8143ae26faa529238e638" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.23.0" + babel-types "^6.23.0" + babylon "^6.11.0" + lodash "^4.2.0" + babel-traverse@^6.16.0, babel-traverse@^6.18.0: version "6.19.0" resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.19.0.tgz#68363fb821e26247d52a519a84b2ceab8df4f55a" @@ -801,7 +559,21 @@ babel-traverse@^6.16.0, babel-traverse@^6.18.0: invariant "^2.2.0" lodash "^4.2.0" -babel-types@^6.13.0, babel-types@^6.16.0, babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.7.2, babel-types@^6.8.0, babel-types@^6.9.0: +babel-traverse@^6.22.0, babel-traverse@^6.23.0: + version "6.23.1" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48" + dependencies: + babel-code-frame "^6.22.0" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-types "^6.23.0" + babylon "^6.15.0" + debug "^2.2.0" + globals "^9.0.0" + invariant "^2.2.0" + lodash "^4.2.0" + +babel-types@^6.16.0, babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.9.0: version "6.19.0" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.19.0.tgz#8db2972dbed01f1192a8b602ba1e1e4c516240b9" dependencies: @@ -810,10 +582,23 @@ babel-types@^6.13.0, babel-types@^6.16.0, babel-types@^6.18.0, babel-types@^6.19 lodash "^4.2.0" to-fast-properties "^1.0.1" +babel-types@^6.22.0, babel-types@^6.23.0, babel-types@^6.7.2: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf" + dependencies: + babel-runtime "^6.22.0" + esutils "^2.0.2" + lodash "^4.2.0" + to-fast-properties "^1.0.1" + babylon@^6.1.0, babylon@^6.11.0: version "6.14.1" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.14.1.tgz#956275fab72753ad9b3435d7afe58f8bf0a29815" +babylon@^6.15.0: + version "6.16.1" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3" + balanced-match@^0.4.1: version "0.4.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" @@ -834,7 +619,7 @@ block-stream@*: dependencies: inherits "~2.0.0" -bluebird@^3.0.0, bluebird@^3.4.1: +bluebird@^3.0.0: version "3.4.6" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.6.tgz#01da8d821d87813d158967e743d5fe6c62cf8c0f" @@ -858,6 +643,18 @@ boxen@^0.6.0: string-width "^1.0.1" widest-line "^1.0.0" +boxen@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.0.0.tgz#b2694baf1f605f708ff0177c12193b22f29aaaab" + dependencies: + ansi-align "^1.1.0" + camelcase "^4.0.0" + chalk "^1.1.1" + cli-boxes "^1.0.0" + string-width "^2.0.0" + term-size "^0.1.0" + widest-line "^1.0.0" + brace-expansion@^1.0.0: version "1.1.6" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" @@ -917,6 +714,10 @@ camelcase@^2.0.0, camelcase@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" +camelcase@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + capture-stack-trace@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" @@ -933,7 +734,7 @@ chalk@^0.4.0: has-color "~0.1.0" strip-ansi "~0.1.0" -chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1: +chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: @@ -962,6 +763,10 @@ ci-info@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.0.0.tgz#dc5285f2b4e251821683681c381c3388f46ec534" +clean-stack@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-1.1.1.tgz#a1b3711122df162df7c7cb9b3c0470f28cb58adb" + clean-yaml-object@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz#63fb110dc2ce1a84dc21f6d9334876d010ae8b68" @@ -970,15 +775,15 @@ cli-boxes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" -cli-cursor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" dependencies: - restore-cursor "^1.0.1" + restore-cursor "^2.0.0" -cli-spinners@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c" +cli-spinners@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.0.0.tgz#ef987ed3d48391ac3dab9180b406a742180d6e6a" cli-truncate@^0.2.0: version "0.2.1" @@ -993,6 +798,12 @@ co-with-promise@^4.6.0: dependencies: pinkie-promise "^1.0.0" +code-excerpt@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/code-excerpt/-/code-excerpt-2.1.0.tgz#5dcc081e88f4a7e3b554e9e35d7ef232d47f8147" + dependencies: + convert-to-spaces "^1.0.1" + code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -1039,6 +850,17 @@ configstore@^2.0.0: write-file-atomic "^1.1.2" xdg-basedir "^2.0.0" +configstore@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.0.0.tgz#e1b8669c1803ccc50b545e92f8e6e79aa80e0196" + dependencies: + dot-prop "^4.1.0" + graceful-fs "^4.1.2" + mkdirp "^0.5.0" + unique-string "^1.0.0" + write-file-atomic "^1.1.2" + xdg-basedir "^3.0.0" + console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" @@ -1047,6 +869,10 @@ convert-source-map@^1.1.0, convert-source-map@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.3.0.tgz#e9f3e9c6e2728efc2676696a70eb382f73106a67" +convert-to-spaces@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz#7e3e48bbe6d997b1417ddca2868204b4d3d85715" + core-assert@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/core-assert/-/core-assert-0.2.1.tgz#f85e2cf9bfed28f773cc8b3fa5c5b69bdc02fe3f" @@ -1062,12 +888,19 @@ core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" -create-error-class@^3.0.1: +create-error-class@^3.0.0, create-error-class@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" dependencies: capture-stack-trace "^1.0.0" +cross-spawn-async@^2.1.1: + version "2.2.5" + resolved "https://registry.yarnpkg.com/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz#845ff0c0834a3ded9d160daca6d390906bb288cc" + dependencies: + lru-cache "^4.0.0" + which "^1.2.8" + cross-spawn@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" @@ -1081,6 +914,10 @@ cryptiles@2.x.x: dependencies: boom "2.x.x" +crypto-random-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -1135,7 +972,7 @@ detect-indent@^4.0.0: dependencies: repeating "^2.0.0" -diff@^3.0.1: +diff@^3.0.0, diff@^3.0.1: version "3.2.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" @@ -1145,15 +982,21 @@ dot-prop@^3.0.0: dependencies: is-obj "^1.0.0" +dot-prop@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.1.1.tgz#a8493f0b7b5eeec82525b5c7587fa7de7ca859c1" + dependencies: + is-obj "^1.0.0" + duplexer2@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" dependencies: readable-stream "^2.0.2" -eastasianwidth@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.1.1.tgz#44d656de9da415694467335365fb3147b8572b7c" +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" ecc-jsbn@~0.1.1: version "0.1.1" @@ -1168,6 +1011,10 @@ empower-core@^0.6.1: call-signature "0.0.2" core-js "^2.0.0" +equal-length@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/equal-length/-/equal-length-1.0.1.tgz#21ca112d48ab24b4e1e7ffc0e5339d31fdfc274c" + error-ex@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9" @@ -1178,9 +1025,9 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^ version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" -espower-location-detector@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/espower-location-detector/-/espower-location-detector-0.1.2.tgz#d43be738af3e0b18197eeb5c22b95512dee6b83c" +espower-location-detector@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/espower-location-detector/-/espower-location-detector-1.0.0.tgz#a17b7ecc59d30e179e2bef73fb4137704cb331b5" dependencies: is-url "^1.2.1" path-is-absolute "^1.0.0" @@ -1193,7 +1040,7 @@ espurify@^1.6.0: dependencies: core-js "^2.0.0" -estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: +estraverse@^4.0.0, estraverse@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" @@ -1201,9 +1048,28 @@ esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" -exit-hook@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" +execa@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.4.0.tgz#4eb6467a36a095fabb2970ff9d5e3fb7bce6ebc3" + dependencies: + cross-spawn-async "^2.1.1" + is-stream "^1.1.0" + npm-run-path "^1.0.0" + object-assign "^4.0.1" + path-key "^1.0.0" + strip-eof "^1.0.0" + +execa@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.5.1.tgz#de3fb85cb8d6e91c85bcbceb164581785cb57b36" + dependencies: + cross-spawn "^4.0.0" + get-stream "^2.2.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" expand-brackets@^0.1.4: version "0.1.5" @@ -1231,12 +1097,11 @@ extsprintf@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" -figures@^1.4.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" dependencies: escape-string-regexp "^1.0.5" - object-assign "^4.1.0" filename-regex@^2.0.0: version "2.0.0" @@ -1271,6 +1136,12 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" +find-up@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + findup-sync@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16" @@ -1365,6 +1236,17 @@ get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" +get-stream@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + getpass@^0.1.1: version "0.1.6" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6" @@ -1439,7 +1321,23 @@ got@^5.0.0: unzip-response "^1.0.2" url-parse-lax "^1.0.0" -graceful-fs@^4.1.2: +got@^6.7.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" + dependencies: + create-error-class "^3.0.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-redirect "^1.0.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + lowercase-keys "^1.0.0" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + unzip-response "^2.0.1" + url-parse-lax "^1.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -1447,11 +1345,11 @@ graceful-fs@^4.1.2: version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" -handleable@^0.20.0: - version "0.20.0" - resolved "https://registry.yarnpkg.com/handleable/-/handleable-0.20.0.tgz#eac46cc2c9c86aa9b01a10558f5130c8644e0f8c" +handleable@^0.20.1: + version "0.20.1" + resolved "https://registry.yarnpkg.com/handleable/-/handleable-0.20.1.tgz#2f601cfdb2721483bc3778a239f01244ad9eaff8" dependencies: - lodash.merge "4.6.0" + lodash.merge "^4.6.0" har-validator@~2.0.6: version "2.0.6" @@ -1480,6 +1378,10 @@ has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" +has-yarn@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-1.0.0.tgz#89e25db604b725c8f5976fff0addc921b828a5a7" + hawk@~3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" @@ -1512,7 +1414,7 @@ http-signature@~1.1.0: jsprim "^1.2.2" sshpk "^1.7.0" -ignore-by-default@^1.0.0, ignore-by-default@^1.0.1: +ignore-by-default@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" @@ -1526,6 +1428,10 @@ indent-string@^2.1.0: dependencies: repeating "^2.0.0" +indent-string@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.1.0.tgz#08ff4334603388399b329e6b9538dc7a3cf5de7d" + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -1611,6 +1517,10 @@ is-fullwidth-code-point@^1.0.0: dependencies: number-is-nan "^1.0.0" +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + is-generator-fn@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a" @@ -1678,7 +1588,7 @@ is-retry-allowed@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" -is-stream@^1.0.0: +is-stream@^1.0.0, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -1690,7 +1600,7 @@ is-url@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.2.tgz#498905a593bf47cc2d9e7f738372bbf7696c7f26" -is-utf8@^0.2.0: +is-utf8@^0.2.0, is-utf8@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" @@ -1712,6 +1622,52 @@ isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" +jest-diff@^18.1.0: + version "18.1.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-18.1.0.tgz#4ff79e74dd988c139195b365dc65d87f606f4803" + dependencies: + chalk "^1.1.3" + diff "^3.0.0" + jest-matcher-utils "^18.1.0" + pretty-format "^18.1.0" + +jest-file-exists@^17.0.0: + version "17.0.0" + resolved "https://registry.yarnpkg.com/jest-file-exists/-/jest-file-exists-17.0.0.tgz#7f63eb73a1c43a13f461be261768b45af2cdd169" + +jest-matcher-utils@^18.1.0: + version "18.1.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-18.1.0.tgz#1ac4651955ee2a60cef1e7fcc98cdfd773c0f932" + dependencies: + chalk "^1.1.3" + pretty-format "^18.1.0" + +jest-mock@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-18.0.0.tgz#5c248846ea33fa558b526f5312ab4a6765e489b3" + +jest-snapshot@^18.1.0: + version "18.1.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-18.1.0.tgz#55b96d2ee639c9bce76f87f2a3fd40b71c7a5916" + dependencies: + jest-diff "^18.1.0" + jest-file-exists "^17.0.0" + jest-matcher-utils "^18.1.0" + jest-util "^18.1.0" + natural-compare "^1.4.0" + pretty-format "^18.1.0" + +jest-util@^18.1.0: + version "18.1.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-18.1.0.tgz#3a99c32114ab17f84be094382527006e6d4bfc6a" + dependencies: + chalk "^1.1.1" + diff "^3.0.0" + graceful-fs "^4.1.6" + jest-file-exists "^17.0.0" + jest-mock "^18.0.0" + mkdirp "^0.5.1" + jodid25519@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" @@ -1722,6 +1678,10 @@ js-tokens@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-2.0.0.tgz#79903f5563ee778cc1162e6dcf1a0027c97f9cb5" +js-tokens@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" + jsbn@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd" @@ -1776,11 +1736,21 @@ latest-version@^2.0.0: dependencies: package-json "^2.0.0" +latest-version@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" + dependencies: + package-json "^4.0.0" + lazy-req@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac" -load-json-file@^1.0.0, load-json-file@^1.1.0: +lazy-req@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-2.0.0.tgz#c9450a363ecdda2e6f0c70132ad4f37f8f06f2b4" + +load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" dependencies: @@ -1790,6 +1760,22 @@ load-json-file@^1.0.0, load-json-file@^1.1.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + lodash.debounce@^4.0.3: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -1802,11 +1788,11 @@ lodash.flatten@^4.2.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" -lodash.isequal@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.4.0.tgz#6295768e98e14dc15ce8d362ef6340db82852031" +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" -lodash.merge@4.6.0, lodash.merge@^4.6.0: +lodash.merge@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" @@ -1831,7 +1817,7 @@ lowercase-keys@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" -lru-cache@^4.0.1: +lru-cache@^4.0.0, lru-cache@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" dependencies: @@ -1858,6 +1844,12 @@ md5-hex@^1.2.0, md5-hex@^1.3.0: dependencies: md5-o-matic "^0.1.1" +md5-hex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-2.0.0.tgz#d0588e9f1c74954492ecd24ac0ac6ce997d92e33" + dependencies: + md5-o-matic "^0.1.1" + md5-o-matic@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3" @@ -1905,6 +1897,10 @@ mime-types@^2.1.12, mime-types@~2.1.7: dependencies: mime-db "~1.25.0" +mimic-fn@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" + "minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" @@ -1946,6 +1942,10 @@ nan@^2.3.0: version "2.4.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.4.0.tgz#fb3c59d45fe4effe215f0b890f8adf6eb32d2232" +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + node-pre-gyp@^0.6.29: version "0.6.32" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.32.tgz#fc452b376e7319b3d255f5f34853ef6fd8fe1fd5" @@ -1983,6 +1983,18 @@ normalize-path@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a" +npm-run-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-1.0.0.tgz#f5c32bf595fe81ae927daec52e82f8b000ac3c8f" + dependencies: + path-key "^1.0.0" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + dependencies: + path-key "^2.0.0" + npmlog@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.1.tgz#d14f503b4cd79710375553004ba96e6662fbc0b8" @@ -2030,9 +2042,11 @@ once@~1.3.3: dependencies: wrappy "1" -onetime@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + dependencies: + mimic-fn "^1.0.0" optimist@~0.6.0: version "0.6.1" @@ -2062,7 +2076,21 @@ osenv@^0.1.0: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -package-hash@^1.1.0: +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + +p-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + +package-hash@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-1.2.0.tgz#003e56cd57b736a6ed6114cc2b81542672770e44" dependencies: @@ -2077,6 +2105,15 @@ package-json@^2.0.0: registry-url "^3.0.3" semver "^5.1.0" +package-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.0.tgz#f3c9dc8738f5b59304d54d2cfb3f91d08fdd7998" + dependencies: + got "^6.7.1" + registry-auth-token "^3.0.1" + registry-url "^3.0.3" + semver "^5.1.0" + parse-glob@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" @@ -2106,10 +2143,22 @@ path-exists@^2.0.0: dependencies: pinkie-promise "^2.0.0" +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" +path-key@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-1.0.0.tgz#5d53d578019646c0d68800db4e146e6bdc2ac7af" + +path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + path-type@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" @@ -2118,6 +2167,12 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -2142,14 +2197,12 @@ pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" -pkg-conf@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-1.1.3.tgz#378e56d6fd13e88bfb6f4a25df7a83faabddba5b" +pkg-conf@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.0.0.tgz#071c87650403bccfb9c627f58751bfe47c067279" dependencies: - find-up "^1.0.0" - load-json-file "^1.1.0" - object-assign "^4.0.1" - symbol "^0.2.1" + find-up "^2.0.0" + load-json-file "^2.0.0" pkg-dir@^1.0.0: version "1.0.0" @@ -2167,53 +2220,6 @@ plur@^2.0.0: dependencies: irregular-plurals "^1.0.0" -power-assert-context-formatter@^1.0.4: - version "1.1.1" - resolved "https://registry.yarnpkg.com/power-assert-context-formatter/-/power-assert-context-formatter-1.1.1.tgz#edba352d3ed8a603114d667265acce60d689ccdf" - dependencies: - core-js "^2.0.0" - power-assert-context-traversal "^1.1.1" - -power-assert-context-traversal@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/power-assert-context-traversal/-/power-assert-context-traversal-1.1.1.tgz#88cabca0d13b6359f07d3d3e8afa699264577ed9" - dependencies: - core-js "^2.0.0" - estraverse "^4.1.0" - -power-assert-renderer-assertion@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/power-assert-renderer-assertion/-/power-assert-renderer-assertion-1.1.1.tgz#cbfc0e77e0086a8f96af3f1d8e67b9ee7e28ce98" - dependencies: - power-assert-renderer-base "^1.1.1" - power-assert-util-string-width "^1.1.1" - -power-assert-renderer-base@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/power-assert-renderer-base/-/power-assert-renderer-base-1.1.1.tgz#96a650c6fd05ee1bc1f66b54ad61442c8b3f63eb" - -power-assert-renderer-diagram@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.1.1.tgz#7e0c82cc08a84b155e51b5ae94f59709778a65fb" - dependencies: - core-js "^2.0.0" - power-assert-renderer-base "^1.1.1" - power-assert-util-string-width "^1.1.1" - stringifier "^1.3.0" - -power-assert-renderer-succinct@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/power-assert-renderer-succinct/-/power-assert-renderer-succinct-1.1.1.tgz#c2a468b23822abd6f80e2aba5322347b09df476e" - dependencies: - core-js "^2.0.0" - power-assert-renderer-diagram "^1.1.1" - -power-assert-util-string-width@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/power-assert-util-string-width/-/power-assert-util-string-width-1.1.1.tgz#be659eb7937fdd2e6c9a77268daaf64bd5b7c592" - dependencies: - eastasianwidth "^0.1.1" - prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" @@ -2222,6 +2228,12 @@ preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" +pretty-format@^18.1.0: + version "18.1.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-18.1.0.tgz#fb65a86f7a7f9194963eee91865c1bcf1039e284" + dependencies: + ansi-styles "^2.2.1" + pretty-ms@^0.2.1: version "0.2.2" resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-0.2.2.tgz#da879a682ff33a37011046f13d627f67c73b84f6" @@ -2286,6 +2298,13 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -2294,6 +2313,14 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.5: version "2.2.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e" @@ -2338,18 +2365,14 @@ regenerate@^1.2.1: version "1.3.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" +regenerator-runtime@^0.10.0: + version "0.10.3" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e" + regenerator-runtime@^0.9.5: version "0.9.6" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz#d33eb95d0d2001a4be39659707c51b0cb71ce029" -regenerator-transform@0.9.8: - version "0.9.8" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.8.tgz#0f88bb2bc03932ddb7b6b7312e68078f01026d6c" - dependencies: - babel-runtime "^6.18.0" - babel-types "^6.19.0" - private "^0.1.6" - regex-cache@^0.4.2: version "0.4.3" resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" @@ -2444,12 +2467,12 @@ resolve@^1.1.7: version "1.2.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.2.0.tgz#9589c3f2f6149d1417a40becc1663db6ec6bc26c" -restore-cursor@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" dependencies: - exit-hook "^1.0.0" - onetime "^1.0.0" + onetime "^2.0.0" + signal-exit "^3.0.2" rimraf@2, rimraf@~2.5.1, rimraf@~2.5.4: version "2.5.4" @@ -2457,13 +2480,17 @@ rimraf@2, rimraf@~2.5.1, rimraf@~2.5.4: dependencies: glob "^7.0.5" +safe-buffer@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" + semver-diff@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" dependencies: semver "^5.0.3" -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0: +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -2475,7 +2502,7 @@ set-immediate-shim@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" -signal-exit@^3.0.0: +signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -2497,7 +2524,7 @@ sntp@1.x.x: dependencies: hoek "2.x.x" -sort-keys@^1.1.1: +sort-keys@^1.1.1, sort-keys@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" dependencies: @@ -2527,10 +2554,6 @@ spdx-license-ids@^1.0.2: version "1.2.2" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" -sprintf-js@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - sshpk@^1.7.0: version "1.10.1" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.1.tgz#30e1a5d329244974a1af61511339d595af6638b0" @@ -2546,9 +2569,9 @@ sshpk@^1.7.0: jsbn "~0.1.0" tweetnacl "~0.14.0" -stack-utils@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-0.4.0.tgz#940cb82fccfa84e8ff2f3fdf293fe78016beccd1" +stack-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.0.tgz#2392cd8ddbd222492ed6c047960f7414b46c0f83" string-width@^1.0.1: version "1.0.2" @@ -2558,18 +2581,17 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" +string-width@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^3.0.0" + string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" -stringifier@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/stringifier/-/stringifier-1.3.0.tgz#def18342f6933db0f2dbfc9aa02175b448c17959" - dependencies: - core-js "^2.0.0" - traverse "^0.6.6" - type-name "^2.0.1" - stringstream@~0.0.4: version "0.0.5" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" @@ -2584,12 +2606,26 @@ strip-ansi@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" +strip-bom-buf@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz#1cb45aaf57530f4caf86c7f75179d2c9a51dd572" + dependencies: + is-utf8 "^0.2.1" + strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" dependencies: is-utf8 "^0.2.0" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + strip-indent@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" @@ -2612,10 +2648,6 @@ symbol-observable@^0.2.2: version "0.2.4" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-0.2.4.tgz#95a83db26186d6af7e7a18dbd9760a2f86d08f40" -symbol@^0.2.1: - version "0.2.3" - resolved "https://registry.yarnpkg.com/symbol/-/symbol-0.2.3.tgz#3b9873b8a901e47c6efe21526a3ac372ef28bbc7" - tar-pack@~3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae" @@ -2637,14 +2669,16 @@ tar@~2.2.1: fstream "^1.0.2" inherits "2" +term-size@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-0.1.1.tgz#87360b96396cab5760963714cda0d0cbeecad9ca" + dependencies: + execa "^0.4.0" + text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" -the-argv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/the-argv/-/the-argv-1.0.0.tgz#0084705005730dd84db755253c931ae398db9522" - through2@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" @@ -2665,6 +2699,10 @@ timed-out@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.0.0.tgz#ff88de96030ce960eabd42487db61d3add229273" +timed-out@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + to-fast-properties@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320" @@ -2675,17 +2713,13 @@ tough-cookie@~2.3.0: dependencies: punycode "^1.4.1" -traverse@^0.6.6: - version "0.6.6" - resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" - trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" -tslint@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-4.3.1.tgz#28f679c53ca4b273688bcb6fcf0dde7ff1bb2169" +tslint@^4.5.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-4.5.1.tgz#05356871bef23a434906734006fc188336ba824b" dependencies: babel-code-frame "^6.20.0" colors "^1.1.2" @@ -2694,8 +2728,12 @@ tslint@^4.3.1: glob "^7.1.1" optimist "~0.6.0" resolve "^1.1.7" - underscore.string "^3.3.4" - update-notifier "^1.0.2" + tsutils "^1.1.0" + update-notifier "^2.0.0" + +tsutils@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-1.4.0.tgz#84f8a83df9967d35bf1ff3aa48c7339593d64e19" tunnel-agent@~0.4.1: version "0.4.3" @@ -2705,17 +2743,13 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.4" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.4.tgz#8c9dbfb52795686f166cd2023794bcf103d13c2b" -type-name@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/type-name/-/type-name-2.0.2.tgz#efe7d4123d8ac52afff7f40c7e4dec5266008fb4" - -typeable@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/typeable/-/typeable-2.0.0.tgz#24a622debd12550a40e238d128f06fcbca8d9e69" +typeable@^2.0.0, typeable@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/typeable/-/typeable-2.0.1.tgz#725ea716d37ba0472cb967c0c66c48b3249f88eb" -typescript@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.1.4.tgz#b53b69fb841126acb1dd4b397d21daba87572251" +typescript@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.2.2.tgz#606022508479b55ffa368b58fee963a03dfd7b0c" uid-number@~0.0.6: version "0.0.6" @@ -2725,12 +2759,11 @@ uid2@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82" -underscore.string@^3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.4.tgz#2c2a3f9f83e64762fdc45e6ceac65142864213db" +unique-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" dependencies: - sprintf-js "^1.0.3" - util-deprecate "^1.0.2" + crypto-random-string "^1.0.0" unique-temp-dir@^1.0.0: version "1.0.0" @@ -2744,7 +2777,11 @@ unzip-response@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" -update-notifier@^1.0.0, update-notifier@^1.0.2: +unzip-response@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" + +update-notifier@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a" dependencies: @@ -2757,13 +2794,26 @@ update-notifier@^1.0.0, update-notifier@^1.0.2: semver-diff "^2.0.0" xdg-basedir "^2.0.0" +update-notifier@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.1.0.tgz#ec0c1e53536b76647a24b77cb83966d9315123d9" + dependencies: + boxen "^1.0.0" + chalk "^1.0.0" + configstore "^3.0.0" + is-npm "^1.0.0" + latest-version "^3.0.0" + lazy-req "^2.0.0" + semver-diff "^2.0.0" + xdg-basedir "^3.0.0" + url-parse-lax@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" dependencies: prepend-http "^1.0.1" -util-deprecate@^1.0.2, util-deprecate@~1.0.1: +util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -2775,9 +2825,9 @@ uuid@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" -validatable@^0.24.0: - version "0.24.0" - resolved "https://registry.yarnpkg.com/validatable/-/validatable-0.24.0.tgz#046bd935e5b4cb27eeb690c4ab8be6cc53452982" +validatable@^0.24.1: + version "0.24.1" + resolved "https://registry.yarnpkg.com/validatable/-/validatable-0.24.1.tgz#9b71c46b5fb633e8235cf5ea6bb69070d1fdd14e" dependencies: lodash.merge "^4.6.0" typeable "^2.0.0" @@ -2795,7 +2845,7 @@ verror@1.3.6: dependencies: extsprintf "1.0.2" -which@^1.2.9: +which@^1.2.8, which@^1.2.9: version "1.2.12" resolved "https://registry.yarnpkg.com/which/-/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192" dependencies: @@ -2829,23 +2879,22 @@ write-file-atomic@^1.1.2, write-file-atomic@^1.1.4: imurmurhash "^0.1.4" slide "^1.1.5" -write-json-file@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-1.2.0.tgz#2d5dfe96abc3c889057c93971aa4005efb548134" +write-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-2.0.0.tgz#0eaec981fcf9288dbc2806cbd26e06ab9bdca4ed" dependencies: graceful-fs "^4.1.2" mkdirp "^0.5.1" - object-assign "^4.0.1" pify "^2.0.0" - pinkie-promise "^2.0.0" sort-keys "^1.1.1" write-file-atomic "^1.1.2" -write-pkg@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-1.0.0.tgz#aeb8aa9d4d788e1d893dfb0854968b543a919f57" +write-pkg@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-2.1.0.tgz#353aa44c39c48c21440f5c08ce6abd46141c9c08" dependencies: - write-json-file "^1.1.0" + sort-keys "^1.1.2" + write-json-file "^2.0.0" xdg-basedir@^2.0.0: version "2.0.0" @@ -2853,6 +2902,10 @@ xdg-basedir@^2.0.0: dependencies: os-homedir "^1.0.0" +xdg-basedir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" + xtend@^4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" From ef2f7694ec386af60c158585fd286efb47e420a2 Mon Sep 17 00:00:00 2001 From: xpeper Date: Thu, 30 Mar 2017 14:15:46 +0200 Subject: [PATCH 163/219] version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0cd2e5e..4cb81ba 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.7.1", + "version": "1.7.2", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", From 7224abb57620b69cec48a0d6358baa7267e5f4a3 Mon Sep 17 00:00:00 2001 From: xpeper Date: Thu, 27 Apr 2017 17:52:32 +0200 Subject: [PATCH 164/219] do not invalidate when field value changes --- dist/src/fields.js | 1 - dist/src/fields.js.map | 2 +- dist/tests/fields.js | 10 +- dist/tests/fields.js.map | 2 +- dist/tests/models.js | 13 +- dist/tests/models.js.map | 2 +- package.json | 8 +- src/fields.ts | 2 - tests/fields.ts | 11 +- tests/models.ts | 2 +- yarn.lock | 533 +++++++++++++++++++-------------------- 11 files changed, 285 insertions(+), 301 deletions(-) diff --git a/dist/src/fields.js b/dist/src/fields.js index 7342e47..d6b6b33 100644 --- a/dist/src/fields.js +++ b/dist/src/fields.js @@ -118,7 +118,6 @@ var Field = (function () { data = set.call(this, data); } data = this._cast(data, this.type); - this.invalidate(); this._data = data; }; Field.prototype._cast = function (data, type) { diff --git a/dist/src/fields.js.map b/dist/src/fields.js.map index 183860c..8f758b3 100644 --- a/dist/src/fields.js.map +++ b/dist/src/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/fields.js b/dist/tests/fields.js index 055b055..7bd2031 100644 --- a/dist/tests/fields.js +++ b/dist/tests/fields.js @@ -119,7 +119,11 @@ ava_1["default"]('method `fake()` sets value to the fake value', function (t) { ava_1["default"]('method `clear()` sets value to `null`', function (t) { var f = new src_1.Field(); f.value = 'foo'; + f.errors = [ + { validator: 'foo', message: 'bar', code: 422 } + ]; f.clear(); + t.is(f.errors.length, 1); t.is(f.value, null); }); ava_1["default"]('methods `commit()` and `rollback()` manage committed value state', function (t) { @@ -191,12 +195,6 @@ ava_1["default"]('method `invalidate()` clears the `errors` property', function f.invalidate(); t.deepEqual(f.errors, []); }); -ava_1["default"]('invalidates when the value changes', function (t) { - var f = new src_1.Field(); - f.errors.push({ message: 'foo' }); - f.value = 'foo'; - t.deepEqual(f.errors, []); -}); ava_1["default"]('method `hasErrors()` returns `true` when errors exist', function (t) { var f = new src_1.Field(); t.is(f.hasErrors(), false); diff --git a/dist/tests/fields.js.map b/dist/tests/fields.js.map index f79436e..942498f 100644 --- a/dist/tests/fields.js.map +++ b/dist/tests/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../tests/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../tests/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/models.js b/dist/tests/models.js index 15d7646..96bfd3e 100644 --- a/dist/tests/models.js +++ b/dist/tests/models.js @@ -885,9 +885,9 @@ ava_1["default"]('methods `isValid` and `hasErrors` tell if errors exist', funct }); }); }); ava_1["default"]('method `validate` validates fields and throws an error', function (t) { return __awaiter(_this, void 0, void 0, function () { - var validate, Book, User, user, errors; - return __generator(this, function (_a) { - switch (_a.label) { + var validate, Book, User, user, errors, _a, _b, _c; + return __generator(this, function (_d) { + switch (_d.label) { case 0: validate = [{ validator: 'presence', @@ -924,8 +924,11 @@ ava_1["default"]('method `validate` validates fields and throws an error', funct errors = [{ validator: 'presence', message: 'foo', code: 422 }]; return [4 /*yield*/, user.validate({ quiet: true })]; case 1: - _a.sent(); - t.throws(user.validate()); + _d.sent(); + _b = (_a = t).is; + return [4 /*yield*/, user.validate()["catch"](function () { return false; })]; + case 2: + _b.apply(_a, [_d.sent(), false]); t.deepEqual(user.collectErrors(), [ { path: ['name'], errors: errors }, { path: ['book0'], errors: errors }, diff --git a/dist/tests/models.js.map b/dist/tests/models.js.map index e5df271..aeb524c 100644 --- a/dist/tests/models.js.map +++ b/dist/tests/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 4cb81ba..90bed35 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.7.2", + "version": "1.8.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -68,9 +68,9 @@ "author": "Kristijan Sedlak (Xpepermint)", "license": "MIT", "devDependencies": { - "@types/node": "^7.0.0", - "ava": "^0.18.2", - "tslint": "^4.5.1", + "@types/node": "^7.0.14", + "ava": "^0.19.1", + "tslint": "^5.1.0", "typescript": "^2.2.2" }, "dependencies": { diff --git a/src/fields.ts b/src/fields.ts index 63c0452..61b8571 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -164,8 +164,6 @@ export class Field { data = this._cast(data, this.type); - this.invalidate(); - this._data = data; } diff --git a/tests/fields.ts b/tests/fields.ts index 6dc8034..bdb87fb 100644 --- a/tests/fields.ts +++ b/tests/fields.ts @@ -81,7 +81,11 @@ test('method `fake()` sets value to the fake value', (t) => { test('method `clear()` sets value to `null`', (t) => { let f = new Field(); f.value = 'foo'; + f.errors = [ + {validator: 'foo', message: 'bar', code: 422} + ]; f.clear(); + t.is(f.errors.length, 1); t.is(f.value, null); }); @@ -145,13 +149,6 @@ test('method `invalidate()` clears the `errors` property', (t) => { t.deepEqual(f.errors, []); }); -test('invalidates when the value changes', (t) => { - let f = new Field(); - f.errors.push({message: 'foo'}); - f.value = 'foo'; - t.deepEqual(f.errors, []); -}); - test('method `hasErrors()` returns `true` when errors exist', (t) => { let f = new Field(); t.is(f.hasErrors(), false); diff --git a/tests/models.ts b/tests/models.ts index 4820ba9..0ba0a4b 100644 --- a/tests/models.ts +++ b/tests/models.ts @@ -763,7 +763,7 @@ test('method `validate` validates fields and throws an error', async (t) => { }); let errors = [{validator: 'presence', message: 'foo', code: 422}]; await user.validate({quiet: true}); - t.throws(user.validate()); + t.is(await user.validate().catch(() => false), false); t.deepEqual(user.collectErrors() as {}, [ {path: ['name'], errors}, {path: ['book0'], errors}, diff --git a/yarn.lock b/yarn.lock index 7b021b1..83a4fe7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,10 @@ # yarn lockfile v1 +"@ava/babel-plugin-throws-helper@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@ava/babel-plugin-throws-helper/-/babel-plugin-throws-helper-2.0.0.tgz#2fc1fe3c211a71071a4eca7b8f7af5842cd1ae7c" + "@ava/babel-preset-stage-4@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@ava/babel-preset-stage-4/-/babel-preset-stage-4-1.0.0.tgz#a613b5e152f529305422546b072d47facfb26291" @@ -19,13 +23,12 @@ babel-plugin-transform-exponentiation-operator "^6.8.0" package-hash "^1.2.0" -"@ava/babel-preset-transform-test-files@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@ava/babel-preset-transform-test-files/-/babel-preset-transform-test-files-2.0.1.tgz#d75232cc6d71dc9c7eae4b76a9004fd81501d0c1" +"@ava/babel-preset-transform-test-files@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@ava/babel-preset-transform-test-files/-/babel-preset-transform-test-files-3.0.0.tgz#cded1196a8d8d9381a509240ab92e91a5ec069f7" dependencies: - babel-plugin-ava-throws-helper "^1.0.0" + "@ava/babel-plugin-throws-helper" "^2.0.0" babel-plugin-espower "^2.3.2" - package-hash "^1.2.0" "@ava/pretty-format@^1.1.0": version "1.1.0" @@ -34,9 +37,9 @@ ansi-styles "^2.2.1" esutils "^2.0.2" -"@types/node@^7.0.0": - version "7.0.12" - resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.12.tgz#ae5f67a19c15f752148004db07cbbb372e69efc9" +"@types/node@^7.0.14": + version "7.0.14" + resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.14.tgz#1470fa002a113316ac9d9ad163fc738c7a0de2a4" abbrev@1: version "1.0.9" @@ -56,6 +59,12 @@ ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" +ansi-styles@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.0.0.tgz#5404e93a544c4fec7f048262977bebfe3155e0c1" + dependencies: + color-convert "^1.0.0" + ansi-styles@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" @@ -78,6 +87,12 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.0 || ^1.1.13" +argparse@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" + dependencies: + sprintf-js "~1.0.2" + arr-diff@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" @@ -152,12 +167,12 @@ ava-init@^0.2.0: read-pkg-up "^2.0.0" write-pkg "^2.0.0" -ava@^0.18.2: - version "0.18.2" - resolved "https://registry.yarnpkg.com/ava/-/ava-0.18.2.tgz#79253d1636077034a2780bb55b5c3e6c3d7f312f" +ava@^0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/ava/-/ava-0.19.1.tgz#43dd82435ad19b3980ffca2488f05daab940b273" dependencies: "@ava/babel-preset-stage-4" "^1.0.0" - "@ava/babel-preset-transform-test-files" "^2.0.0" + "@ava/babel-preset-transform-test-files" "^3.0.0" "@ava/pretty-format" "^1.1.0" arr-flatten "^1.0.1" array-union "^1.0.1" @@ -175,7 +190,7 @@ ava@^0.18.2: clean-yaml-object "^0.1.0" cli-cursor "^2.1.0" cli-spinners "^1.0.0" - cli-truncate "^0.2.0" + cli-truncate "^1.0.0" co-with-promise "^4.6.0" code-excerpt "^2.1.0" common-path-prefix "^1.0.0" @@ -184,15 +199,17 @@ ava@^0.18.2: currently-unhandled "^0.4.1" debug "^2.2.0" diff "^3.0.1" + diff-match-patch "^1.0.0" dot-prop "^4.1.0" empower-core "^0.6.1" equal-length "^1.0.0" figures "^2.0.0" find-cache-dir "^0.1.1" fn-name "^2.0.0" - get-port "^2.1.0" + get-port "^3.0.0" globby "^6.0.0" has-flag "^2.0.0" + hullabaloo-config-manager "^1.0.0" ignore-by-default "^1.0.0" indent-string "^3.0.0" is-ci "^1.0.7" @@ -200,7 +217,9 @@ ava@^0.18.2: is-obj "^1.0.0" is-observable "^0.2.0" is-promise "^2.1.0" - jest-snapshot "^18.1.0" + jest-diff "19.0.0" + jest-snapshot "19.0.2" + js-yaml "^3.8.2" last-line-stream "^1.0.0" lodash.debounce "^4.0.3" lodash.difference "^4.3.0" @@ -208,14 +227,14 @@ ava@^0.18.2: lodash.isequal "^4.5.0" loud-rejection "^1.2.0" matcher "^0.1.1" - max-timeout "^1.0.0" md5-hex "^2.0.0" meow "^3.7.0" + mkdirp "^0.5.1" ms "^0.7.1" multimatch "^2.1.0" - observable-to-promise "^0.4.0" + observable-to-promise "^0.5.0" option-chain "^0.1.0" - package-hash "^1.2.0" + package-hash "^2.0.0" pkg-conf "^2.0.0" plur "^2.0.0" pretty-ms "^2.0.0" @@ -226,9 +245,10 @@ ava@^0.18.2: stack-utils "^1.0.0" strip-ansi "^3.0.1" strip-bom-buf "^1.0.0" + supports-color "^3.2.3" time-require "^0.1.2" unique-temp-dir "^1.0.0" - update-notifier "^1.0.0" + update-notifier "^2.1.0" aws-sign2@~0.6.0: version "0.6.0" @@ -238,7 +258,7 @@ aws4@^1.2.1: version "1.5.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755" -babel-code-frame@^6.16.0, babel-code-frame@^6.20.0: +babel-code-frame@^6.16.0: version "6.20.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.20.0.tgz#b968f839090f9a8bc6d41938fb96cb84f7387b26" dependencies: @@ -325,14 +345,7 @@ babel-helper-function-name@^6.18.0, babel-helper-function-name@^6.8.0: babel-traverse "^6.18.0" babel-types "^6.18.0" -babel-helper-get-function-arity@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.18.0.tgz#a5b19695fd3f9cdfc328398b47dafcd7094f9f24" - dependencies: - babel-runtime "^6.0.0" - babel-types "^6.18.0" - -babel-helper-get-function-arity@^6.22.0: +babel-helper-get-function-arity@^6.18.0, babel-helper-get-function-arity@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.22.0.tgz#0beb464ad69dc7347410ac6ade9f03a50634f5ce" dependencies: @@ -383,13 +396,6 @@ babel-messages@^6.8.0: dependencies: babel-runtime "^6.0.0" -babel-plugin-ava-throws-helper@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-ava-throws-helper/-/babel-plugin-ava-throws-helper-1.0.0.tgz#8fe6e79d2fd19838b5c3649f89cfb03fd563e241" - dependencies: - babel-template "^6.7.0" - babel-types "^6.7.2" - babel-plugin-check-es2015-constants@^6.8.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" @@ -511,21 +517,21 @@ babel-register@^6.18.0: mkdirp "^0.5.1" source-map-support "^0.4.2" -babel-runtime@^6.0.0, babel-runtime@^6.11.6, babel-runtime@^6.9.0, babel-runtime@^6.9.1: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.18.0.tgz#0f4177ffd98492ef13b9f823e9994a02584c9078" - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.9.5" - -babel-runtime@^6.22.0: +babel-runtime@^6.0.0, babel-runtime@^6.11.6, babel-runtime@^6.22.0, babel-runtime@^6.9.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" dependencies: core-js "^2.4.0" regenerator-runtime "^0.10.0" -babel-template@^6.16.0, babel-template@^6.8.0: +babel-runtime@^6.9.1: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.18.0.tgz#0f4177ffd98492ef13b9f823e9994a02584c9078" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.9.5" + +babel-template@^6.16.0: version "6.16.0" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.16.0.tgz#e149dd1a9f03a35f817ddbc4d0481988e7ebc8ca" dependencies: @@ -535,7 +541,7 @@ babel-template@^6.16.0, babel-template@^6.8.0: babylon "^6.11.0" lodash "^4.2.0" -babel-template@^6.23.0, babel-template@^6.7.0: +babel-template@^6.23.0, babel-template@^6.8.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.23.0.tgz#04d4f270adbb3aa704a8143ae26faa529238e638" dependencies: @@ -545,21 +551,7 @@ babel-template@^6.23.0, babel-template@^6.7.0: babylon "^6.11.0" lodash "^4.2.0" -babel-traverse@^6.16.0, babel-traverse@^6.18.0: - version "6.19.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.19.0.tgz#68363fb821e26247d52a519a84b2ceab8df4f55a" - dependencies: - babel-code-frame "^6.16.0" - babel-messages "^6.8.0" - babel-runtime "^6.9.0" - babel-types "^6.19.0" - babylon "^6.11.0" - debug "^2.2.0" - globals "^9.0.0" - invariant "^2.2.0" - lodash "^4.2.0" - -babel-traverse@^6.22.0, babel-traverse@^6.23.0: +babel-traverse@^6.16.0, babel-traverse@^6.22.0, babel-traverse@^6.23.0: version "6.23.1" resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48" dependencies: @@ -573,16 +565,21 @@ babel-traverse@^6.22.0, babel-traverse@^6.23.0: invariant "^2.2.0" lodash "^4.2.0" -babel-types@^6.16.0, babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.9.0: +babel-traverse@^6.18.0: version "6.19.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.19.0.tgz#8db2972dbed01f1192a8b602ba1e1e4c516240b9" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.19.0.tgz#68363fb821e26247d52a519a84b2ceab8df4f55a" dependencies: - babel-runtime "^6.9.1" - esutils "^2.0.2" + babel-code-frame "^6.16.0" + babel-messages "^6.8.0" + babel-runtime "^6.9.0" + babel-types "^6.19.0" + babylon "^6.11.0" + debug "^2.2.0" + globals "^9.0.0" + invariant "^2.2.0" lodash "^4.2.0" - to-fast-properties "^1.0.1" -babel-types@^6.22.0, babel-types@^6.23.0, babel-types@^6.7.2: +babel-types@^6.16.0, babel-types@^6.19.0, babel-types@^6.22.0, babel-types@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf" dependencies: @@ -591,6 +588,15 @@ babel-types@^6.22.0, babel-types@^6.23.0, babel-types@^6.7.2: lodash "^4.2.0" to-fast-properties "^1.0.1" +babel-types@^6.18.0, babel-types@^6.9.0: + version "6.19.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.19.0.tgz#8db2972dbed01f1192a8b602ba1e1e4c516240b9" + dependencies: + babel-runtime "^6.9.1" + esutils "^2.0.2" + lodash "^4.2.0" + to-fast-properties "^1.0.1" + babylon@^6.1.0, babylon@^6.11.0: version "6.14.1" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.14.1.tgz#956275fab72753ad9b3435d7afe58f8bf0a29815" @@ -629,20 +635,6 @@ boom@2.x.x: dependencies: hoek "2.x.x" -boxen@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6" - dependencies: - ansi-align "^1.1.0" - camelcase "^2.1.0" - chalk "^1.1.1" - cli-boxes "^1.0.0" - filled-array "^1.0.0" - object-assign "^4.0.1" - repeating "^2.0.0" - string-width "^1.0.1" - widest-line "^1.0.0" - boxen@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.0.0.tgz#b2694baf1f605f708ff0177c12193b22f29aaaab" @@ -710,7 +702,7 @@ camelcase-keys@^2.0.0: camelcase "^2.0.0" map-obj "^1.0.0" -camelcase@^2.0.0, camelcase@^2.1.0: +camelcase@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" @@ -785,12 +777,12 @@ cli-spinners@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.0.0.tgz#ef987ed3d48391ac3dab9180b406a742180d6e6a" -cli-truncate@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" +cli-truncate@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-1.0.0.tgz#21eb91f47b3f6560f004db77a769b4668d9c5518" dependencies: slice-ansi "0.0.4" - string-width "^1.0.1" + string-width "^2.0.0" co-with-promise@^4.6.0: version "4.6.0" @@ -808,6 +800,16 @@ code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" +color-convert@^1.0.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" + dependencies: + color-name "^1.1.1" + +color-name@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.2.tgz#5c8ab72b64bd2215d617ae9559ebb148475cf98d" + colors@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" @@ -836,20 +838,6 @@ concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -configstore@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1" - dependencies: - dot-prop "^3.0.0" - graceful-fs "^4.1.2" - mkdirp "^0.5.0" - object-assign "^4.0.1" - os-tmpdir "^1.0.0" - osenv "^0.1.0" - uuid "^2.0.1" - write-file-atomic "^1.1.2" - xdg-basedir "^2.0.0" - configstore@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.0.0.tgz#e1b8669c1803ccc50b545e92f8e6e79aa80e0196" @@ -888,7 +876,7 @@ core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" -create-error-class@^3.0.0, create-error-class@^3.0.1: +create-error-class@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" dependencies: @@ -972,28 +960,20 @@ detect-indent@^4.0.0: dependencies: repeating "^2.0.0" -diff@^3.0.0, diff@^3.0.1: +diff-match-patch@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.0.tgz#1cc3c83a490d67f95d91e39f6ad1f2e086b63048" + +diff@^3.0.0, diff@^3.0.1, diff@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" -dot-prop@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" - dependencies: - is-obj "^1.0.0" - dot-prop@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.1.1.tgz#a8493f0b7b5eeec82525b5c7587fa7de7ca859c1" dependencies: is-obj "^1.0.0" -duplexer2@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" - dependencies: - readable-stream "^2.0.2" - duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" @@ -1021,6 +1001,10 @@ error-ex@^1.2.0: dependencies: is-arrayish "^0.2.1" +es6-error@^4.0.1, es6-error@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.0.2.tgz#eec5c726eacef51b7f6b73c20db6e1b13b069c98" + escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -1034,6 +1018,10 @@ espower-location-detector@^1.0.0: source-map "^0.5.0" xtend "^4.0.0" +esprima@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + espurify@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/espurify/-/espurify-1.6.0.tgz#6cb993582d9422bd6f2d4b258aadb14833f394f0" @@ -1117,10 +1105,6 @@ fill-range@^2.1.0: repeat-element "^1.1.2" repeat-string "^1.5.2" -filled-array@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/filled-array/-/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84" - find-cache-dir@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" @@ -1226,11 +1210,9 @@ generate-object-property@^1.1.0: dependencies: is-property "^1.0.0" -get-port@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-2.1.0.tgz#8783f9dcebd1eea495a334e1a6a251e78887ab1a" - dependencies: - pinkie-promise "^2.0.0" +get-port@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.1.0.tgz#ef01b18a84ca6486970ff99e54446141a73ffd3e" get-stdin@^4.0.1: version "4.0.1" @@ -1301,26 +1283,6 @@ globby@^6.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" -got@^5.0.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35" - dependencies: - create-error-class "^3.0.1" - duplexer2 "^0.1.4" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - node-status-codes "^1.0.0" - object-assign "^4.0.1" - parse-json "^2.1.0" - pinkie-promise "^2.0.0" - read-all-stream "^3.0.0" - readable-stream "^2.0.5" - timed-out "^3.0.0" - unzip-response "^1.0.2" - url-parse-lax "^1.0.0" - got@^6.7.1: version "6.7.1" resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" @@ -1337,7 +1299,7 @@ got@^6.7.1: unzip-response "^2.0.1" url-parse-lax "^1.0.0" -graceful-fs@^4.1.2, graceful-fs@^4.1.6: +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -1370,6 +1332,10 @@ has-color@~0.1.0: version "0.1.7" resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + has-flag@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" @@ -1414,6 +1380,24 @@ http-signature@~1.1.0: jsprim "^1.2.2" sshpk "^1.7.0" +hullabaloo-config-manager@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hullabaloo-config-manager/-/hullabaloo-config-manager-1.0.1.tgz#c72be7ba249a67c99b6ba3eb1f55837fa01acd8f" + dependencies: + dot-prop "^4.1.0" + es6-error "^4.0.2" + graceful-fs "^4.1.11" + indent-string "^3.1.0" + json5 "^0.5.1" + lodash.clonedeep "^4.5.0" + lodash.clonedeepwith "^4.5.0" + lodash.isequal "^4.5.0" + lodash.merge "^4.6.0" + md5-hex "^2.0.0" + package-hash "^2.0.0" + pkg-dir "^1.0.0" + resolve-from "^2.0.0" + ignore-by-default@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" @@ -1428,7 +1412,7 @@ indent-string@^2.1.0: dependencies: repeating "^2.0.0" -indent-string@^3.0.0: +indent-string@^3.0.0, indent-string@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.1.0.tgz#08ff4334603388399b329e6b9538dc7a3cf5de7d" @@ -1622,52 +1606,71 @@ isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" -jest-diff@^18.1.0: - version "18.1.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-18.1.0.tgz#4ff79e74dd988c139195b365dc65d87f606f4803" +jest-diff@19.0.0, jest-diff@^19.0.0: + version "19.0.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-19.0.0.tgz#d1563cfc56c8b60232988fbc05d4d16ed90f063c" dependencies: chalk "^1.1.3" diff "^3.0.0" - jest-matcher-utils "^18.1.0" - pretty-format "^18.1.0" + jest-matcher-utils "^19.0.0" + pretty-format "^19.0.0" -jest-file-exists@^17.0.0: - version "17.0.0" - resolved "https://registry.yarnpkg.com/jest-file-exists/-/jest-file-exists-17.0.0.tgz#7f63eb73a1c43a13f461be261768b45af2cdd169" +jest-file-exists@^19.0.0: + version "19.0.0" + resolved "https://registry.yarnpkg.com/jest-file-exists/-/jest-file-exists-19.0.0.tgz#cca2e587a11ec92e24cfeab3f8a94d657f3fceb8" -jest-matcher-utils@^18.1.0: - version "18.1.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-18.1.0.tgz#1ac4651955ee2a60cef1e7fcc98cdfd773c0f932" +jest-matcher-utils@^19.0.0: + version "19.0.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-19.0.0.tgz#5ecd9b63565d2b001f61fbf7ec4c7f537964564d" dependencies: chalk "^1.1.3" - pretty-format "^18.1.0" + pretty-format "^19.0.0" -jest-mock@^18.0.0: - version "18.0.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-18.0.0.tgz#5c248846ea33fa558b526f5312ab4a6765e489b3" +jest-message-util@^19.0.0: + version "19.0.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-19.0.0.tgz#721796b89c0e4d761606f9ba8cb828a3b6246416" + dependencies: + chalk "^1.1.1" + micromatch "^2.3.11" + +jest-mock@^19.0.0: + version "19.0.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-19.0.0.tgz#67038641e9607ab2ce08ec4a8cb83aabbc899d01" -jest-snapshot@^18.1.0: - version "18.1.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-18.1.0.tgz#55b96d2ee639c9bce76f87f2a3fd40b71c7a5916" +jest-snapshot@19.0.2: + version "19.0.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-19.0.2.tgz#9c1b216214f7187c38bfd5c70b1efab16b0ff50b" dependencies: - jest-diff "^18.1.0" - jest-file-exists "^17.0.0" - jest-matcher-utils "^18.1.0" - jest-util "^18.1.0" + chalk "^1.1.3" + jest-diff "^19.0.0" + jest-file-exists "^19.0.0" + jest-matcher-utils "^19.0.0" + jest-util "^19.0.2" natural-compare "^1.4.0" - pretty-format "^18.1.0" + pretty-format "^19.0.0" -jest-util@^18.1.0: - version "18.1.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-18.1.0.tgz#3a99c32114ab17f84be094382527006e6d4bfc6a" +jest-util@^19.0.2: + version "19.0.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-19.0.2.tgz#e0a0232a2ab9e6b2b53668bdb3534c2b5977ed41" dependencies: chalk "^1.1.1" - diff "^3.0.0" graceful-fs "^4.1.6" - jest-file-exists "^17.0.0" - jest-mock "^18.0.0" + jest-file-exists "^19.0.0" + jest-message-util "^19.0.0" + jest-mock "^19.0.0" + jest-validate "^19.0.2" + leven "^2.0.0" mkdirp "^0.5.1" +jest-validate@^19.0.2: + version "19.0.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-19.0.2.tgz#dc534df5f1278d5b63df32b14241d4dbf7244c0c" + dependencies: + chalk "^1.1.1" + jest-matcher-utils "^19.0.0" + leven "^2.0.0" + pretty-format "^19.0.0" + jodid25519@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" @@ -1682,6 +1685,13 @@ js-tokens@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" +js-yaml@^3.8.2: + version "3.8.3" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.3.tgz#33a05ec481c850c8875929166fe1beb61c728766" + dependencies: + argparse "^1.0.7" + esprima "^3.1.1" + jsbn@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd" @@ -1702,7 +1712,7 @@ json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" -json5@^0.5.0: +json5@^0.5.0, json5@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" @@ -1730,26 +1740,20 @@ last-line-stream@^1.0.0: dependencies: through2 "^2.0.0" -latest-version@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b" - dependencies: - package-json "^2.0.0" - latest-version@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" dependencies: package-json "^4.0.0" -lazy-req@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac" - lazy-req@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-2.0.0.tgz#c9450a363ecdda2e6f0c70132ad4f37f8f06f2b4" +leven@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" + load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -1776,6 +1780,14 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + +lodash.clonedeepwith@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz#6ee30573a03a1a60d670a62ef33c10cf1afdbdd4" + lodash.debounce@^4.0.3: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -1788,6 +1800,10 @@ lodash.flatten@^4.2.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" +lodash.flattendeep@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" + lodash.isequal@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" @@ -1834,10 +1850,6 @@ matcher@^0.1.1: dependencies: escape-string-regexp "^1.0.4" -max-timeout@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/max-timeout/-/max-timeout-1.0.0.tgz#b68f69a2f99e0b476fd4cb23e2059ca750715e1f" - md5-hex@^1.2.0, md5-hex@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-1.3.0.tgz#d2c4afe983c4370662179b8cad145219135046c4" @@ -1869,7 +1881,7 @@ meow@^3.7.0: redent "^1.0.0" trim-newlines "^1.0.0" -micromatch@^2.1.5: +micromatch@^2.1.5, micromatch@^2.3.11: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" dependencies: @@ -1960,10 +1972,6 @@ node-pre-gyp@^0.6.29: tar "~2.2.1" tar-pack "~3.3.0" -node-status-codes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" - nopt@~3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" @@ -2023,12 +2031,12 @@ object.omit@^2.0.0: for-own "^0.1.4" is-extendable "^0.1.1" -observable-to-promise@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/observable-to-promise/-/observable-to-promise-0.4.0.tgz#28afe71645308f2d41d71f47ad3fece1a377e52b" +observable-to-promise@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/observable-to-promise/-/observable-to-promise-0.5.0.tgz#c828f0f0dc47e9f86af8a4977c5d55076ce7a91f" dependencies: is-observable "^0.2.0" - symbol-observable "^0.2.2" + symbol-observable "^1.0.4" once@^1.3.0: version "1.4.0" @@ -2065,17 +2073,10 @@ os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: +os-tmpdir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" -osenv@^0.1.0: - version "0.1.3" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.3.tgz#83cf05c6d6458fc4d5ac6362ea325d92f2754217" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -2096,14 +2097,14 @@ package-hash@^1.2.0: dependencies: md5-hex "^1.3.0" -package-json@^2.0.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb" +package-hash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-2.0.0.tgz#78ae326c89e05a4d813b68601977af05c00d2a0d" dependencies: - got "^5.0.0" - registry-auth-token "^3.0.1" - registry-url "^3.0.3" - semver "^5.1.0" + graceful-fs "^4.1.11" + lodash.flattendeep "^4.4.0" + md5-hex "^2.0.0" + release-zalgo "^1.0.0" package-json@^4.0.0: version "4.0.0" @@ -2123,7 +2124,7 @@ parse-glob@^3.0.4: is-extglob "^1.0.0" is-glob "^2.0.0" -parse-json@^2.1.0, parse-json@^2.2.0: +parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" dependencies: @@ -2159,6 +2160,10 @@ path-key@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + path-type@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" @@ -2228,11 +2233,11 @@ preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" -pretty-format@^18.1.0: - version "18.1.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-18.1.0.tgz#fb65a86f7a7f9194963eee91865c1bcf1039e284" +pretty-format@^19.0.0: + version "19.0.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-19.0.0.tgz#56530d32acb98a3fa4851c4e2b9d37b420684c84" dependencies: - ansi-styles "^2.2.1" + ansi-styles "^3.0.0" pretty-ms@^0.2.1: version "0.2.2" @@ -2284,13 +2289,6 @@ rc@^1.0.1, rc@^1.1.6, rc@~1.1.6: minimist "^1.2.0" strip-json-comments "~1.0.4" -read-all-stream@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa" - dependencies: - pinkie-promise "^2.0.0" - readable-stream "^2.0.0" - read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -2321,7 +2319,7 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.5: +"readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2, readable-stream@^2.1.5: version "2.2.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e" dependencies: @@ -2410,6 +2408,12 @@ regjsparser@^0.1.4: dependencies: jsesc "~0.5.0" +release-zalgo@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" + dependencies: + es6-error "^4.0.1" + repeat-element@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" @@ -2463,9 +2467,11 @@ resolve-from@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" -resolve@^1.1.7: - version "1.2.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.2.0.tgz#9589c3f2f6149d1417a40becc1663db6ec6bc26c" +resolve@^1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" + dependencies: + path-parse "^1.0.5" restore-cursor@^2.0.0: version "2.0.0" @@ -2490,7 +2496,7 @@ semver-diff@^2.0.0: dependencies: semver "^5.0.3" -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@~5.3.0: +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -2554,6 +2560,10 @@ spdx-license-ids@^1.0.2: version "1.2.2" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + sshpk@^1.7.0: version "1.10.1" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.1.tgz#30e1a5d329244974a1af61511339d595af6638b0" @@ -2644,10 +2654,20 @@ supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" +supports-color@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + dependencies: + has-flag "^1.0.0" + symbol-observable@^0.2.2: version "0.2.4" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-0.2.4.tgz#95a83db26186d6af7e7a18dbd9760a2f86d08f40" +symbol-observable@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" + tar-pack@~3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae" @@ -2695,10 +2715,6 @@ time-require@^0.1.2: pretty-ms "^0.2.1" text-table "^0.2.0" -timed-out@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.0.0.tgz#ff88de96030ce960eabd42487db61d3add229273" - timed-out@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" @@ -2717,23 +2733,23 @@ trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" -tslint@^4.5.1: - version "4.5.1" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-4.5.1.tgz#05356871bef23a434906734006fc188336ba824b" +tslint@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.1.0.tgz#51a47baeeb58956fcd617bd2cf00e2ef0eea2ed9" dependencies: - babel-code-frame "^6.20.0" + babel-code-frame "^6.22.0" colors "^1.1.2" - diff "^3.0.1" + diff "^3.2.0" findup-sync "~0.3.0" glob "^7.1.1" optimist "~0.6.0" - resolve "^1.1.7" - tsutils "^1.1.0" - update-notifier "^2.0.0" + resolve "^1.3.2" + semver "^5.3.0" + tsutils "^1.4.0" -tsutils@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-1.4.0.tgz#84f8a83df9967d35bf1ff3aa48c7339593d64e19" +tsutils@^1.4.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-1.8.0.tgz#bf8118ed8e80cd5c9fc7d75728c7963d44ed2f52" tunnel-agent@~0.4.1: version "0.4.3" @@ -2773,28 +2789,11 @@ unique-temp-dir@^1.0.0: os-tmpdir "^1.0.1" uid2 "0.0.3" -unzip-response@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" - unzip-response@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" -update-notifier@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a" - dependencies: - boxen "^0.6.0" - chalk "^1.0.0" - configstore "^2.0.0" - is-npm "^1.0.0" - latest-version "^2.0.0" - lazy-req "^1.1.0" - semver-diff "^2.0.0" - xdg-basedir "^2.0.0" - -update-notifier@^2.0.0: +update-notifier@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.1.0.tgz#ec0c1e53536b76647a24b77cb83966d9315123d9" dependencies: @@ -2817,10 +2816,6 @@ util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" -uuid@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" - uuid@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" @@ -2896,12 +2891,6 @@ write-pkg@^2.0.0: sort-keys "^1.1.2" write-json-file "^2.0.0" -xdg-basedir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2" - dependencies: - os-homedir "^1.0.0" - xdg-basedir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" From 07c49c8a7eab84f6e45882c3a064e2720c350397 Mon Sep 17 00:00:00 2001 From: xpeper Date: Thu, 27 Apr 2017 17:53:41 +0200 Subject: [PATCH 165/219] version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 90bed35..3a4c9b3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.8.0", + "version": "1.8.1", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", From a685292c424dce22b9e2a116c7e8ceac1e63397e Mon Sep 17 00:00:00 2001 From: xpeper Date: Thu, 27 Apr 2017 17:57:22 +0200 Subject: [PATCH 166/219] throw tests upgrade/fix --- dist/tests/models.js | 25 +++++++++++++++++-------- dist/tests/models.js.map | 2 +- package.json | 2 +- tests/models.ts | 6 +++--- 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/dist/tests/models.js b/dist/tests/models.js index 96bfd3e..1a34e8f 100644 --- a/dist/tests/models.js +++ b/dist/tests/models.js @@ -1127,9 +1127,9 @@ ava_1["default"]('method `clone` returns an exact copy of the original', functio }); ava_1["default"]('method `handle` handles field-related errors', function (t) { return __awaiter(_this, void 0, void 0, function () { var _this = this; - var handle, Book, Country, User, user, problem0, problem1, errors; - return __generator(this, function (_a) { - switch (_a.label) { + var handle, Book, Country, User, user, problem0, problem1, errors, _a, _b, _c, _d, _e, _f, _g, _h, _j; + return __generator(this, function (_k) { + switch (_k.label) { case 0: handle = [{ handler: 'block', @@ -1183,12 +1183,21 @@ ava_1["default"]('method `handle` handles field-related errors', function (t) { problem1 = new Error(); problem1.code = 422; errors = [{ handler: 'block', message: 'foo', code: 422 }]; - t.throws(user.handle(problem0, { quiet: false })); - t.notThrows(user.handle(problem0)); - t.notThrows(user.handle(problem1, { quiet: false })); - return [4 /*yield*/, user.handle(problem0)]; + _b = (_a = t).is; + return [4 /*yield*/, user.handle(problem0, { quiet: false })["catch"](function () { return false; })]; case 1: - _a.sent(); + _b.apply(_a, [_k.sent(), false]); + _e = (_d = t).is; + return [4 /*yield*/, user.handle(problem0).then(function () { return true; })]; + case 2: + _e.apply(_d, [_k.sent(), true]); + _h = (_g = t).is; + return [4 /*yield*/, user.handle(problem1, { quiet: false }).then(function () { return true; })]; + case 3: + _h.apply(_g, [_k.sent(), true]); + return [4 /*yield*/, user.handle(problem0)]; + case 4: + _k.sent(); t.deepEqual(user.collectErrors(), [ { path: ['name'], errors: errors }, { path: ['book0'], errors: errors }, diff --git a/dist/tests/models.js.map b/dist/tests/models.js.map index aeb524c..1b51231 100644 --- a/dist/tests/models.js.map +++ b/dist/tests/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 3a4c9b3..d9041bf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.8.1", + "version": "1.8.2", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", diff --git a/tests/models.ts b/tests/models.ts index 0ba0a4b..a311431 100644 --- a/tests/models.ts +++ b/tests/models.ts @@ -961,9 +961,9 @@ test('method `handle` handles field-related errors', async (t) => { let problem0 = new Error(); let problem1 = new Error() as any; problem1.code = 422; let errors = [{handler: 'block', message: 'foo', code: 422}]; - t.throws(user.handle(problem0, {quiet: false})); - t.notThrows(user.handle(problem0)); - t.notThrows(user.handle(problem1, {quiet: false})); + t.is(await user.handle(problem0, {quiet: false}).catch(() => false), false); + t.is(await user.handle(problem0).then(() => true), true); + t.is(await user.handle(problem1, {quiet: false}).then(() => true), true); await user.handle(problem0); t.deepEqual(user.collectErrors() as {}, [ {path: ['name'], errors}, From 4c1571921fff2761598d3ad093fb327dd89a856f Mon Sep 17 00:00:00 2001 From: Valentin Zwick Date: Wed, 21 Jun 2017 19:01:23 +0200 Subject: [PATCH 167/219] Mark implicit any types explicitely to play nice with consumers using noImplicitAny compiler option without skipLibCheck compiler option --- package.json | 2 +- src/fields.ts | 4 ++-- src/models.ts | 10 +++++----- tsconfig.json | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index d9041bf..96a5cad 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.8.2", + "version": "1.8.3", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", diff --git a/src/fields.ts b/src/fields.ts index 61b8571..3aa3552 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -16,8 +16,8 @@ export interface FieldRecipe { fakeValue?: any; validate?: ValidatorRecipe[]; handle?: HandlerRecipe[]; - validators?: {[name: string]: (v?, r?: ValidatorRecipe) => boolean | Promise}; - handlers?: {[name: string]: (v?, r?: HandlerRecipe) => boolean | Promise}; + validators?: {[name: string]: (v? : any, r?: ValidatorRecipe) => boolean | Promise}; + handlers?: {[name: string]: (v? : any, r?: HandlerRecipe) => boolean | Promise}; owner?: Model; failFast?: boolean; serializable?: boolean; diff --git a/src/models.ts b/src/models.ts index ad65a66..0b4af60 100644 --- a/src/models.ts +++ b/src/models.ts @@ -38,8 +38,8 @@ export interface ModelRecipe { export abstract class Model { protected _fields: {[name: string]: Field}; // model fields protected _types: {[key: string]: (v?) => any}; // custom data types - protected _validators: {[key: string]: (v?, r?: ValidatorRecipe) => boolean | Promise}; // custom validators - protected _handlers: {[key: string]: (v?, r?: HandlerRecipe) => boolean | Promise}; // custom validators + protected _validators: {[key: string]: (v? : any, r?: ValidatorRecipe) => boolean | Promise}; // custom validators + protected _handlers: {[key: string]: (v? : any, r?: HandlerRecipe) => boolean | Promise}; // custom validators protected _failFast: boolean; // stop validating/handling on first error readonly root: Model; public parent: Model; @@ -171,7 +171,7 @@ export abstract class Model { * Defines a new custom data type. */ - public defineType (name: string, converter: (v?) => any): void { + public defineType (name: string, converter: (v? : any) => any): void { this._types[name] = converter; } @@ -179,7 +179,7 @@ export abstract class Model { * Defines a new custom validator. */ - public defineValidator (name: string, handler: (v?, r?: ValidatorRecipe) => boolean | Promise): void { + public defineValidator (name: string, handler: (v? : any, r?: ValidatorRecipe) => boolean | Promise): void { this._validators[name] = handler; } @@ -187,7 +187,7 @@ export abstract class Model { * Defines a new custom validator. */ - public defineHandler (name: string, handler: (e?, r?: HandlerRecipe) => boolean | Promise): void { + public defineHandler (name: string, handler: (e? : any, r?: HandlerRecipe) => boolean | Promise): void { this._handlers[name] = handler; } diff --git a/tsconfig.json b/tsconfig.json index af0fcf9..bb0c8d4 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,7 +2,7 @@ "compilerOptions": { "module": "commonjs", "target": "es3", - "noImplicitAny": false, + "noImplicitAny": true, "removeComments": true, "sourceMap": true, "outDir": "dist", From 4635d750f2462a04a2578a32b4d5c58754fc108a Mon Sep 17 00:00:00 2001 From: Valentin Zwick Date: Wed, 21 Jun 2017 19:11:07 +0200 Subject: [PATCH 168/219] Implicit any on the internals should remain ok. --- tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tsconfig.json b/tsconfig.json index bb0c8d4..af0fcf9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,7 +2,7 @@ "compilerOptions": { "module": "commonjs", "target": "es3", - "noImplicitAny": true, + "noImplicitAny": false, "removeComments": true, "sourceMap": true, "outDir": "dist", From 27a92de36592d8c8af2f172193e633e3bb898850 Mon Sep 17 00:00:00 2001 From: xpeper Date: Wed, 21 Jun 2017 19:17:33 +0200 Subject: [PATCH 169/219] rebuild --- dist/src/fields.d.ts | 4 ++-- dist/src/models.d.ts | 10 +++++----- dist/src/models.js.map | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/dist/src/fields.d.ts b/dist/src/fields.d.ts index 852c9cf..f107db3 100644 --- a/dist/src/fields.d.ts +++ b/dist/src/fields.d.ts @@ -10,10 +10,10 @@ export interface FieldRecipe { validate?: ValidatorRecipe[]; handle?: HandlerRecipe[]; validators?: { - [name: string]: (v?, r?: ValidatorRecipe) => boolean | Promise; + [name: string]: (v?: any, r?: ValidatorRecipe) => boolean | Promise; }; handlers?: { - [name: string]: (v?, r?: HandlerRecipe) => boolean | Promise; + [name: string]: (v?: any, r?: HandlerRecipe) => boolean | Promise; }; owner?: Model; failFast?: boolean; diff --git a/dist/src/models.d.ts b/dist/src/models.d.ts index 463929f..beeaf90 100644 --- a/dist/src/models.d.ts +++ b/dist/src/models.d.ts @@ -21,10 +21,10 @@ export declare abstract class Model { [key: string]: (v?) => any; }; protected _validators: { - [key: string]: (v?, r?: ValidatorRecipe) => boolean | Promise; + [key: string]: (v?: any, r?: ValidatorRecipe) => boolean | Promise; }; protected _handlers: { - [key: string]: (v?, r?: HandlerRecipe) => boolean | Promise; + [key: string]: (v?: any, r?: HandlerRecipe) => boolean | Promise; }; protected _failFast: boolean; readonly root: Model; @@ -37,9 +37,9 @@ export declare abstract class Model { protected _createModel(recipe?: ModelRecipe): any; failFast(fail?: boolean): void; defineField(name: string, recipe?: FieldRecipe): void; - defineType(name: string, converter: (v?) => any): void; - defineValidator(name: string, handler: (v?, r?: ValidatorRecipe) => boolean | Promise): void; - defineHandler(name: string, handler: (e?, r?: HandlerRecipe) => boolean | Promise): void; + defineType(name: string, converter: (v?: any) => any): void; + defineValidator(name: string, handler: (v?: any, r?: ValidatorRecipe) => boolean | Promise): void; + defineHandler(name: string, handler: (e?: any, r?: HandlerRecipe) => boolean | Promise): void; getField(...keys: any[]): Field; hasField(...keys: any[]): boolean; populate(data?: {}): this; diff --git a/dist/src/models.js.map b/dist/src/models.js.map index ce39a3f..6480742 100644 --- a/dist/src/models.js.map +++ b/dist/src/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file From 864e28fdd4ebf51f8be59ae83fd427885ccfda43 Mon Sep 17 00:00:00 2001 From: Valentin Zwick Date: Wed, 21 Jun 2017 19:28:27 +0200 Subject: [PATCH 170/219] Forgot another explicit any --- src/models.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/models.ts b/src/models.ts index 0b4af60..0c347ae 100644 --- a/src/models.ts +++ b/src/models.ts @@ -37,7 +37,7 @@ export interface ModelRecipe { export abstract class Model { protected _fields: {[name: string]: Field}; // model fields - protected _types: {[key: string]: (v?) => any}; // custom data types + protected _types: {[key: string]: (v? : any) => any}; // custom data types protected _validators: {[key: string]: (v? : any, r?: ValidatorRecipe) => boolean | Promise}; // custom validators protected _handlers: {[key: string]: (v? : any, r?: HandlerRecipe) => boolean | Promise}; // custom validators protected _failFast: boolean; // stop validating/handling on first error From 2ef0ee352b247639d97ba2d6ddcef5fdf38f56f9 Mon Sep 17 00:00:00 2001 From: xpeper Date: Wed, 21 Jun 2017 19:52:46 +0200 Subject: [PATCH 171/219] solve noImplicitAny errors --- dist/src/fields.js | 16 +- dist/src/fields.js.map | 2 +- dist/src/index.js.map | 2 +- dist/src/models.d.ts | 2 +- dist/src/models.js | 16 +- dist/src/models.js.map | 2 +- dist/src/utils.js.map | 2 +- dist/tests/fields.js | 12 +- dist/tests/fields.js.map | 2 +- dist/tests/models.js | 68 +- dist/tests/models.js.map | 2 +- package-lock.json | 3122 ++++++++++++++++++++++++++++++++++++++ package.json | 2 +- src/fields.ts | 10 +- src/models.ts | 16 +- src/utils.ts | 2 +- 16 files changed, 3200 insertions(+), 78 deletions(-) create mode 100644 package-lock.json diff --git a/dist/src/fields.js b/dist/src/fields.js index d6b6b33..64b9b49 100644 --- a/dist/src/fields.js +++ b/dist/src/fields.js @@ -8,8 +8,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }); }; var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t; - return { next: verb(0), "throw": verb(1), "return": verb(2) }; + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); @@ -207,16 +207,16 @@ var Field = (function () { var _a; return __generator(this, function (_b) { switch (_b.label) { - case 0: return [4 /*yield*/, Promise.all((typeable_1.toArray(this.value) || []) + case 0: return [4, Promise.all((typeable_1.toArray(this.value) || []) .filter(function (doc) { return doc instanceof models_1.Model; }) .map(function (doc) { return doc.validate({ quiet: true }); }))]; case 1: _b.sent(); _a = this; - return [4 /*yield*/, this._validator.validate(this.value, this._recipe.validate)]; + return [4, this._validator.validate(this.value, this._recipe.validate)]; case 2: _a.errors = _b.sent(); - return [2 /*return*/, this]; + return [2, this]; } }); }); @@ -226,16 +226,16 @@ var Field = (function () { var _a; return __generator(this, function (_b) { switch (_b.label) { - case 0: return [4 /*yield*/, Promise.all((typeable_1.toArray(this.value) || []) + case 0: return [4, Promise.all((typeable_1.toArray(this.value) || []) .filter(function (doc) { return doc instanceof models_1.Model; }) .map(function (doc) { return doc.handle(error); }))["catch"](function () { })]; case 1: _b.sent(); _a = this; - return [4 /*yield*/, this._handler.handle(error, this._recipe.handle)]; + return [4, this._handler.handle(error, this._recipe.handle)]; case 2: _a.errors = _b.sent(); - return [2 /*return*/, this]; + return [2, this]; } }); }); diff --git a/dist/src/fields.js.map b/dist/src/fields.js.map index 8f758b3..454c2f2 100644 --- a/dist/src/fields.js.map +++ b/dist/src/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/index.js.map b/dist/src/index.js.map index a37ac46..7aa8a67 100644 --- a/dist/src/index.js.map +++ b/dist/src/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;AAAA,mCAA+B;AAOvB,+BAAK;AANb,mCAA+B;AAMhB,+BAAK"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;AAAA,mCAA+B;AAOvB,gBAPA,cAAK,CAOA;AANb,mCAA+B;AAMhB,gBANP,cAAK,CAMO"} \ No newline at end of file diff --git a/dist/src/models.d.ts b/dist/src/models.d.ts index beeaf90..efac819 100644 --- a/dist/src/models.d.ts +++ b/dist/src/models.d.ts @@ -18,7 +18,7 @@ export declare abstract class Model { [name: string]: Field; }; protected _types: { - [key: string]: (v?) => any; + [key: string]: (v?: any) => any; }; protected _validators: { [key: string]: (v?: any, r?: ValidatorRecipe) => boolean | Promise; diff --git a/dist/src/models.js b/dist/src/models.js index 1ae564e..2ff81c4 100644 --- a/dist/src/models.js +++ b/dist/src/models.js @@ -8,8 +8,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }); }; var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t; - return { next: verb(0), "throw": verb(1), "return": verb(2) }; + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); @@ -256,14 +256,14 @@ var Model = (function () { switch (_a.label) { case 0: fields = this._fields; - return [4 /*yield*/, Promise.all(Object.keys(fields) + return [4, Promise.all(Object.keys(fields) .map(function (n) { return fields[n].validate(); }))]; case 1: _a.sent(); if (!quiet && this.hasErrors()) { throw this._createValidationError(); } - return [2 /*return*/, this]; + return [2, this]; } }); }); @@ -276,11 +276,11 @@ var Model = (function () { switch (_a.label) { case 0: if (!error) - return [2 /*return*/, this]; + return [2, this]; if (error.code === 422) - return [2 /*return*/, this]; + return [2, this]; fields = this._fields; - return [4 /*yield*/, Promise.all(Object.keys(fields) + return [4, Promise.all(Object.keys(fields) .map(function (n) { return fields[n].handle(error); }))]; case 1: _a.sent(); @@ -290,7 +290,7 @@ var Model = (function () { else if (!this.hasErrors()) { throw error; } - return [2 /*return*/, this]; + return [2, this]; } }); }); diff --git a/dist/src/models.js.map b/dist/src/models.js.map index 6480742..7e1ae11 100644 --- a/dist/src/models.js.map +++ b/dist/src/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAoE;AAGpE,mCAAwD;AACxD,iCAAkD;AAiClD;IAaE,eAAoB,MAAwB;QAAxB,uBAAA,EAAA,WAAwB;QAA5C,iBA6BC;QA5BC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;YACpC,KAAK,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI;YAC3C,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;YAClC,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,aAAa,EAAE,EAApB,CAAoB;SAChC,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;YACrC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;YACpC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE;YACzC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE;YACvC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE;YACvC,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;IACL,CAAC;IAMS,6BAAa,GAAvB;QACE,IAAI,IAAI,GAAU,IAAI,CAAC;QACvB,GAAG,CAAC;YACF,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAChB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;YACrB,CAAC;YACD,IAAI,CAAC,CAAC;gBACJ,MAAM,CAAC,IAAI,CAAC;YACd,CAAC;QACH,CAAC,QAAQ,IAAI,EAAE;IACjB,CAAC;IAMS,6BAAa,GAAvB,UAAyB,MAAwB;QAAxB,uBAAA,EAAA,WAAwB;QAC/C,IAAI,IAAI,GAAG,kBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;QAC/D,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACjC,MAAM,CAAC,kBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC9C,CAAC;IAOS,4BAAY,GAAtB,UAAwB,MAAwB;QAAxB,uBAAA,EAAA,WAAwB;QAC9C,MAAM,CAAC,IAAI,cAAK,CACd,aAAK,CAAC,EAAE,EAAE,MAAM,EAAE;YAChB,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;YAChC,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,QAAQ,EAAE,IAAI,CAAC,SAAS;SACzB,CAAC,CACH,CAAC;IACJ,CAAC;IAMS,sCAAsB,GAAhC,UAAkC,OAA6B,EAAE,IAAU;QAAzC,wBAAA,EAAA,6BAA6B;QAAE,qBAAA,EAAA,UAAU;QACzE,IAAI,KAAK,GAAe,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QAElB,MAAM,CAAC,KAAK,CAAC;IACf,CAAC;IAOS,4BAAY,GAAtB,UAAwB,MAAwB;QAAxB,uBAAA,EAAA,WAAwB;QAC9C,MAAM,CAAC,IAAK,IAAI,CAAC,WAAmB,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAMM,wBAAQ,GAAf,UAAiB,IAAoB;QAApB,qBAAA,EAAA,WAAoB;QACnC,IAAI,CAAC,SAAS,GAAG,oBAAS,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAMM,2BAAW,GAAlB,UAAoB,IAAY,EAAE,MAAwB;QAAxB,uBAAA,EAAA,WAAwB;QACxD,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAEtC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE;YAChC,GAAG,EAAE,cAAM,OAAA,KAAK,CAAC,KAAK,EAAX,CAAW;YACtB,GAAG,EAAE,UAAC,CAAC,IAAK,OAAA,KAAK,CAAC,KAAK,GAAG,CAAC,EAAf,CAAe;YAC3B,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IAC7B,CAAC;IAMM,0BAAU,GAAjB,UAAmB,IAAY,EAAE,SAA2B;QAC1D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IAChC,CAAC;IAMM,+BAAe,GAAtB,UAAwB,IAAY,EAAE,OAAqE;QACzG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACnC,CAAC;IAMM,6BAAa,GAApB,UAAsB,IAAY,EAAE,OAAmE;QACrG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACjC,CAAC;IAMM,wBAAQ,GAAf;QAAiB,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAC7B,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAEpD,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAZ,CAAY,EAAE,IAAI,CAAC,CAAC;QACtD,MAAM,CAAC,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IACtE,CAAC;IAMM,wBAAQ,GAAf;QAAiB,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAC7B,MAAM,CAAC,CAAC,sBAAW,CAAC,IAAI,CAAC,QAAQ,OAAb,IAAI,EAAa,IAAI,EAAE,CAAC;IAC9C,CAAC;IAMM,wBAAQ,GAAf,UAAiB,IAAS;QAA1B,iBAMC;QANgB,qBAAA,EAAA,SAAS;QACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;aACd,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAjB,CAAiB,CAAC;aAChC,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,IAAI,CAAC,GAAG,iBAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAlC,CAAkC,CAAC,CAAC;QAEzD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,yBAAS,GAAhB;QACE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,KAAK,CAAC,YAAY,EAAtB,CAAsB,CAAC,CAAC;IACtD,CAAC;IAMM,uBAAO,GAAd,UAAgB,MAAqB;QAArC,iBA6BC;QA7Be,uBAAA,EAAA,WAAqB;QACnC,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAC,IAAI;YACrC,IAAI,KAAK,GAAG,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YACtB,IAAI,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAExB,MAAM,CAAC,IAAI,CAAC,EAAC,IAAI,MAAA,EAAE,KAAK,OAAA,EAAC,CAAC,CAAC;YAE3B,EAAE,CAAC,CAAC,oBAAS,CAAC,KAAK,CAAC,IAAI,oBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACxC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC;oBACpC,MAAM,GAAG,MAAM,CAAC,MAAM,CACpB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CACpB,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC,CAAC,kBAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC;oBAC7D,MAAM,GAAG,MAAM,CAAC,MAAM,CACpB,KAAK;yBACF,GAAG,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAxC,CAAwC,CAAC;yBACvD,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,kBAAO,CAAC,CAAC,CAAC,EAAV,CAAU,CAAC;yBACzB,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAX,CAAW,CAAC,CACjC,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC;IAChB,CAAC;IAMM,uBAAO,GAAd,UAAgB,OAAiC;QAC/C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAMM,sBAAM,GAAb,UAAe,OAAkC;QAC/C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAC5C,CAAC;IAOM,sBAAM,GAAb,UAAe,IAAkC;QAC/C,IAAI,IAAI,GAAG,iBAAS,CAAC,IAAI,CAAC,CAAC;QAE3B,IAAI,CAAC,OAAO,EAAE;aACX,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAA7B,CAA6B,CAAC;aAC7C,MAAM,CAAC,UAAC,KAAK,IAAK,OAAA,CAAC,IAAI,CAAC,KAAK,CAAC,EAAZ,CAAY,CAAC;aAC/B,OAAO,CAAC,UAAC,KAAK;YACb,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,EAAJ,CAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEL,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,qBAAK,GAAL;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAA1B,CAA0B,CAAC,CAAC;QAEjD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,oBAAI,GAAJ;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAzB,CAAyB,CAAC,CAAC;QAEhD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,qBAAK,GAAL;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAA1B,CAA0B,CAAC,CAAC;QAEjD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,sBAAM,GAAN;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAA3B,CAA2B,CAAC,CAAC;QAElD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,wBAAQ,GAAR;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAA7B,CAA6B,CAAC,CAAC;QAEpD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAOD,sBAAM,GAAN,UAAQ,KAAU;QAChB,MAAM,CAAC,eAAO,CACZ,iBAAS,CAAC,IAAI,CAAC,EACf,iBAAS,CAAC,KAAK,CAAC,CACjB,CAAC;IACJ,CAAC;IAMD,yBAAS,GAAT;QAAA,iBAGC;QAFC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7B,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAA9B,CAA8B,CAAC,CAAC;IACpD,CAAC;IAMD,wBAAQ,GAAR;QAAA,iBAGC;QAFC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7B,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAA7B,CAA6B,CAAC,CAAC;IACnD,CAAC;IAMK,wBAAQ,GAAd,UAAgB,EAIV;YAHJ,oCAAa,EAAb,kCAAa;;gBAIT,MAAM;;;;iCAAG,IAAI,CAAC,OAAO;wBAEzB,WAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;iCAChB,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAApB,CAAoB,CAAC,CACpC,EAAA;;wBAHD,SAGC,CAAC;wBAEF,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;4BAC/B,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;wBACtC,CAAC;wBACD,WAAO,IAAI,EAAC;;;;KACb;IAMK,sBAAM,GAAZ,UAAc,KAAU,EAAE,EAIpB;YAHJ,oCAAY,EAAZ,iCAAY;;gBAOR,MAAM;;;;wBAHV,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;4BAAC,MAAM,KAAC,IAAI,EAAC;wBACxB,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;4BAAC,MAAM,KAAC,IAAI,EAAC;iCAEvB,IAAI,CAAC,OAAO;wBACzB,WAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;iCAChB,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC,CACvC,EAAA;;wBAHD,SAGC,CAAC;wBAEF,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;4BAC/B,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;wBACtC,CAAC;wBACD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;4BAC3B,MAAM,KAAK,CAAC;wBACd,CAAC;wBACD,WAAO,IAAI,EAAC;;;;KACb;IAMD,6BAAa,GAAb;QACE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;aAClB,GAAG,CAAC,UAAC,EAAa;gBAAZ,cAAI,EAAE,gBAAK;YAAM,OAAA,CAAC,EAAC,IAAI,MAAA,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAmB,CAAA;QAA/C,CAA+C,CAAC;aACvE,MAAM,CAAC,UAAC,EAAc;gBAAb,cAAI,EAAE,kBAAM;YAAM,OAAA,MAAM,CAAC,MAAM,GAAG,CAAC;QAAjB,CAAiB,CAAC,CAAC;IACnD,CAAC;IAMD,2BAAW,GAAX,UAAa,MAA4B;QAAzC,iBASC;QATY,uBAAA,EAAA,WAA4B;QACvC,MAAM,CAAC,OAAO,CAAC,UAAC,KAAK;YACnB,IAAI,KAAK,GAAG,KAAI,CAAC,QAAQ,OAAb,KAAI,EAAa,KAAK,CAAC,IAAI,CAAC,CAAC;YACzC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gBACV,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,yBAAS,GAAT;QAAA,iBAGC;QAFC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7B,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAA9B,CAA8B,CAAC,CAAC;IACpD,CAAC;IAMD,uBAAO,GAAP;QACE,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC;IAMD,0BAAU,GAAV;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAA/B,CAA+B,CAAC,CAAC;QAEtD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,qBAAK,GAAL,UAAO,IAAS;QAAT,qBAAA,EAAA,SAAS;QACd,MAAM,CAAC,IAAI,CAAC,YAAY,CACtB,aAAK,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,EAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAC,EAAE,IAAI,CAAC,CACzD,CAAC;IACJ,CAAC;IAEH,YAAC;AAAD,CAAC,AApdD,IAodC;AApdqB,sBAAK"} \ No newline at end of file diff --git a/dist/src/utils.js.map b/dist/src/utils.js.map index 355803b..472bd80 100644 --- a/dist/src/utils.js.map +++ b/dist/src/utils.js.map @@ -1 +1 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;AAAA,oCAAsC;AAO9B,sBAAK;AANb,wCAA0C;AAYlC,0BAAO;AAMf,mBAA2B,IAAI;IAC7B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC;AAFD,8BAEC"} \ No newline at end of file +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;AAAA,oCAAsC;AAO9B,sBAAK;AANb,wCAA0C;AAYlC,0BAAO;AAMf,mBAA2B,IAAS;IAClC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC;AAFD,8BAEC"} \ No newline at end of file diff --git a/dist/tests/fields.js b/dist/tests/fields.js index 7bd2031..f39367e 100644 --- a/dist/tests/fields.js +++ b/dist/tests/fields.js @@ -18,8 +18,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }); }; var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t; - return { next: verb(0), "throw": verb(1), "return": verb(2) }; + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); @@ -178,14 +178,14 @@ ava_1["default"]('method `validate()` validates the value and populates the `err coolness: function () { return this.value === 'cool'; } } }); - return [4 /*yield*/, f.validate()]; + return [4, f.validate()]; case 1: _a.sent(); t.deepEqual(f.errors, [ { validator: 'presence', message: 'foo', code: 422 }, { validator: 'coolness', message: 'is not cool', code: 422 } ]); - return [2 /*return*/]; + return [2]; } }); }); }); @@ -226,14 +226,14 @@ ava_1["default"]('method `handle()` handles an error and populates the `errors` } }); e = new Error('cool'); - return [4 /*yield*/, f.handle(e)]; + return [4, f.handle(e)]; case 1: _a.sent(); t.deepEqual(f.errors, [ { handler: 'block', message: 'foo', code: 422 }, { handler: 'coolness', message: 'cool', code: 422 } ]); - return [2 /*return*/]; + return [2]; } }); }); }); diff --git a/dist/tests/fields.js.map b/dist/tests/fields.js.map index 942498f..d81fd41 100644 --- a/dist/tests/fields.js.map +++ b/dist/tests/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../tests/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../tests/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/models.js b/dist/tests/models.js index 1a34e8f..9af6fd9 100644 --- a/dist/tests/models.js +++ b/dist/tests/models.js @@ -18,8 +18,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }); }; var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t; - return { next: verb(0), "throw": verb(1), "return": verb(2) }; + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); @@ -348,7 +348,7 @@ ava_1["default"]('method `flatten` returns an array of fields', function (t) { r t.deepEqual(Object.keys(user.flatten()[0]), ['path', 'field']); t.deepEqual(user.flatten()[0].path, ['name']); t.is(user.flatten()[0].field.value, 'foo'); - return [2 /*return*/]; + return [2]; }); }); }); ava_1["default"]('method `collect` returns an array of results', function (t) { @@ -881,13 +881,13 @@ ava_1["default"]('methods `isValid` and `hasErrors` tell if errors exist', funct ]); t.is(user0.hasErrors(), true); t.is(user0.isValid(), false); - return [2 /*return*/]; + return [2]; }); }); }); ava_1["default"]('method `validate` validates fields and throws an error', function (t) { return __awaiter(_this, void 0, void 0, function () { - var validate, Book, User, user, errors, _a, _b, _c; - return __generator(this, function (_d) { - switch (_d.label) { + var validate, Book, User, user, errors, _a, _b; + return __generator(this, function (_c) { + switch (_c.label) { case 0: validate = [{ validator: 'presence', @@ -922,13 +922,13 @@ ava_1["default"]('method `validate` validates fields and throws an error', funct books1: [{}] }); errors = [{ validator: 'presence', message: 'foo', code: 422 }]; - return [4 /*yield*/, user.validate({ quiet: true })]; + return [4, user.validate({ quiet: true })]; case 1: - _d.sent(); + _c.sent(); _b = (_a = t).is; - return [4 /*yield*/, user.validate()["catch"](function () { return false; })]; + return [4, user.validate()["catch"](function () { return false; })]; case 2: - _b.apply(_a, [_d.sent(), false]); + _b.apply(_a, [_c.sent(), false]); t.deepEqual(user.collectErrors(), [ { path: ['name'], errors: errors }, { path: ['book0'], errors: errors }, @@ -936,7 +936,7 @@ ava_1["default"]('method `validate` validates fields and throws an error', funct { path: ['book1', 'title'], errors: errors }, { path: ['books1', 0, 'title'], errors: errors }, ]); - return [2 /*return*/]; + return [2]; } }); }); }); @@ -979,7 +979,7 @@ ava_1["default"]('method `defineValidator` defines a custom field validator', fu book: {} }); errors = [{ validator: 'coolness', message: 'foo', code: 422 }]; - return [4 /*yield*/, user.validate({ quiet: true })]; + return [4, user.validate({ quiet: true })]; case 1: _a.sent(); t.deepEqual(user.collectErrors(), [ @@ -987,7 +987,7 @@ ava_1["default"]('method `defineValidator` defines a custom field validator', fu { path: ['book'], errors: errors }, { path: ['book', 'title'], errors: errors }, ]); - return [2 /*return*/]; + return [2]; } }); }); }); @@ -1027,12 +1027,12 @@ ava_1["default"]('method `failFast` configures validator to stop validating fiel book: {} }); errors = [{ validator: 'presence', message: 'foo', code: 422 }]; - return [4 /*yield*/, user.validate({ quiet: true })]; + return [4, user.validate({ quiet: true })]; case 1: _a.sent(); t.is(user.getField('name').errors.length, 1); t.is(user.getField('book', 'title').errors.length, 1); - return [2 /*return*/]; + return [2]; } }); }); }); @@ -1074,7 +1074,7 @@ ava_1["default"]('method `invalidate` clears fields errors', function (t) { retu t.deepEqual(user.getField('name').errors, []); t.deepEqual(user.getField('book', 'title').errors, []); t.deepEqual(user.getField('books', 1, 'title').errors, []); - return [2 /*return*/]; + return [2]; }); }); }); ava_1["default"]('method `clone` returns an exact copy of the original', function (t) { @@ -1127,15 +1127,15 @@ ava_1["default"]('method `clone` returns an exact copy of the original', functio }); ava_1["default"]('method `handle` handles field-related errors', function (t) { return __awaiter(_this, void 0, void 0, function () { var _this = this; - var handle, Book, Country, User, user, problem0, problem1, errors, _a, _b, _c, _d, _e, _f, _g, _h, _j; - return __generator(this, function (_k) { - switch (_k.label) { + var handle, Book, Country, User, user, problem0, problem1, errors, _a, _b, _c, _d, _e, _f; + return __generator(this, function (_g) { + switch (_g.label) { case 0: handle = [{ handler: 'block', message: '%{foo}', block: function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) { - return [2 /*return*/, true]; + return [2, true]; }); }); }, foo: 'foo' }]; @@ -1184,20 +1184,20 @@ ava_1["default"]('method `handle` handles field-related errors', function (t) { problem1.code = 422; errors = [{ handler: 'block', message: 'foo', code: 422 }]; _b = (_a = t).is; - return [4 /*yield*/, user.handle(problem0, { quiet: false })["catch"](function () { return false; })]; + return [4, user.handle(problem0, { quiet: false })["catch"](function () { return false; })]; case 1: - _b.apply(_a, [_k.sent(), false]); - _e = (_d = t).is; - return [4 /*yield*/, user.handle(problem0).then(function () { return true; })]; + _b.apply(_a, [_g.sent(), false]); + _d = (_c = t).is; + return [4, user.handle(problem0).then(function () { return true; })]; case 2: - _e.apply(_d, [_k.sent(), true]); - _h = (_g = t).is; - return [4 /*yield*/, user.handle(problem1, { quiet: false }).then(function () { return true; })]; + _d.apply(_c, [_g.sent(), true]); + _f = (_e = t).is; + return [4, user.handle(problem1, { quiet: false }).then(function () { return true; })]; case 3: - _h.apply(_g, [_k.sent(), true]); - return [4 /*yield*/, user.handle(problem0)]; + _f.apply(_e, [_g.sent(), true]); + return [4, user.handle(problem0)]; case 4: - _k.sent(); + _g.sent(); t.deepEqual(user.collectErrors(), [ { path: ['name'], errors: errors }, { path: ['book0'], errors: errors }, @@ -1205,7 +1205,7 @@ ava_1["default"]('method `handle` handles field-related errors', function (t) { { path: ['book1', 'title'], errors: errors }, { path: ['books1', 0, 'title'], errors: errors }, ]); - return [2 /*return*/]; + return [2]; } }); }); }); @@ -1252,7 +1252,7 @@ ava_1["default"]('method `defineHandler` defines a custom field handler', functi }); problem = new Error('cool'); errors = [{ handler: 'coolness', message: 'foo', code: 422 }]; - return [4 /*yield*/, user.handle(problem)]; + return [4, user.handle(problem)]; case 1: _a.sent(); t.deepEqual(user.collectErrors(), [ @@ -1260,7 +1260,7 @@ ava_1["default"]('method `defineHandler` defines a custom field handler', functi { path: ['book', 'title'], errors: errors }, { path: ['books', 0, 'title'], errors: errors }, ]); - return [2 /*return*/]; + return [2]; } }); }); }); diff --git a/dist/tests/models.js.map b/dist/tests/models.js.map index 1b51231..40d3a3e 100644 --- a/dist/tests/models.js.map +++ b/dist/tests/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iBAw/BA;;AAx/BA,2BAAuB;AACvB,8BAAoC;AAEpC,gBAAI,CAAC,gEAAgE,EAAE,UAAC,CAAC;IACvE,IAAI,IAAI,GAAG;QAAuB,wBAAK;QAErC;YAAA,YACE,iBAAO,SAER;YADC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;;QAC3B,CAAC;QACH,WAAC;IAAD,CAAC,AANc,CAAmB,WAAK,EAMtC,CAAC;IACF,IAAI,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC,CAAC,EAAE,CAAC,OAAO,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC,CAAC,EAAE,CAAC,OAAO,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,gDAAgD,EAAE,UAAC,CAAC;IACvD,IAAI,IAAI,GAAG;QAAuB,wBAAK;QAGrC;YAAA,YACE,iBAAO,SAIR;YAHC,KAAI,CAAC,UAAU,CAAC,MAAM,EAAE,UAAC,CAAC,IAAK,OAAG,CAAC,UAAO,EAAX,CAAW,CAAC,CAAC;YAC5C,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC;;QAC9C,CAAC;QACH,WAAC;IAAD,CAAC,AATc,CAAmB,WAAK,EAStC,CAAC;IACF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC7B,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,2CAA2C,EAAE,UAAC,CAAC;IAClD;QAAmB,wBAAK;QAEtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;IACD;QAAmB,wBAAK;QAItB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC3C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAXD,CAAmB,WAAK,GAWvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,GAAG;QACT,IAAI,EAAE;YACJ,KAAK,EAAE,GAAG;SACX;QACD,KAAK,EAAE;YACL,SAAS;YACT;gBACE,KAAK,EAAE,GAAG;aACX;SACF;KACF,CAAC,CAAC;IACH,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,uDAAuD,EAAE,UAAC,CAAC;IAC9D;QAAmB,wBAAK;QAEtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;IACD;QAAmB,wBAAK;QAItB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC3C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAXD,CAAmB,WAAK,GAWvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE;YACJ,KAAK,EAAE,GAAG;SACX;QACD,KAAK,EAAE;YACL,SAAS;YACT;gBACE,KAAK,EAAE,GAAG;aACX;SACF;KACF,CAAC,CAAC;IACH,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,mEAAmE,EAAE,UAAC,CAAC;IAC1E;QAAmB,wBAAK;QAEtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;IACD;QAAmB,wBAAK;QAEtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE;YACJ,KAAK,EAAE,GAAG;SACX;KACF,CAAC,CAAC;IACH,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,0DAA0D,EAAE,UAAC,CAAC;IACjE;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC3C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,SAAS;YACT;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;IACH,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACtD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,sDAAsD,EAAE,UAAC,CAAC;IAC7D;QAAmB,wBAAK;QACtB,cAAa,IAAS;YAAT,qBAAA,EAAA,SAAS;YAAtB,YACE,iBAAO,SAGR;YAFC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC3C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACtB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAChD,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,iEAAiE,EAAE,UAAC,CAAC;IACxE;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAMZ;YALC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC3C,KAAI,CAAC,WAAW,CAAC,aAAa,EAAE,EAAC,YAAY,EAAE,KAAK,EAAC,CAAC,CAAC;YACvD,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AATD,CAAmB,WAAK,GASvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,KAAK;QAClB,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,SAAS;YACT;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;IACH,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAS,EAAE;QACnC,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,IAAI;YACJ;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,6CAA6C,EAAE,UAAO,CAAC;oBAiBtD,IAAI;;;YAhBW,wBAAK;YACtB,cAAa,IAAI;gBAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;gBAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;gBAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;YACtB,CAAC;YACH,WAAC;QAAD,CAAC,AAND,CAAmB,WAAK;;YAOL,wBAAK;YACtB,cAAa,IAAI;gBAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;gBAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;gBAC3C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;gBACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;gBAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;YACtB,CAAC;YACH,WAAC;QAAD,CAAC,AARD,CAAmB,WAAK;eASb,IAAI,IAAI,CAAC;YAClB,IAAI,EAAE,KAAK;YACX,IAAI,EAAE;gBACJ,KAAK,EAAE,KAAK;aACb;YACD,KAAK,EAAE;gBACL,SAAS;gBACT;oBACE,KAAK,EAAE,KAAK;iBACb;aACF;SACF,CAAC;QACF,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,EAAN,CAAM,CAAC,EAAE;YAC7C,CAAC,MAAM,CAAC;YACR,CAAC,MAAM,CAAC;YACR,CAAC,MAAM,EAAE,OAAO,CAAC;YACjB,CAAC,OAAO,CAAC;YACT,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;SACtB,CAAC,CAAC;QACH,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;;;KAC5C,CAAC,CAAC;AAEH,gBAAI,CAAC,8CAA8C,EAAE,UAAC,CAAC;IACrD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAIZ;YAHC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC3C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;KACF,CAAC,CAAC;IACH,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAC,EAAM;YAAL,cAAI;QAAM,OAAA,IAAI;IAAJ,CAAI,CAAC,CAAC;IAC7C,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE;QACnB,CAAC,MAAM,CAAC;QACR,CAAC,MAAM,CAAC;QACR,CAAC,MAAM,EAAE,OAAO,CAAC;KAClB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,yDAAyD,EAAE,UAAC,CAAC;IAChE;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAIZ;YAHC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC3C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;KACF,CAAC,CAAC;IACH,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAC,EAAM;YAAL,cAAI;QAAM,OAAA,IAAI;IAAJ,CAAI,CAAC,CAAC;IAC1C,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,2FAA2F,EAAE,UAAC,CAAC;IAClG;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC3C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,SAAS;YACT;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;IACH,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAC,EAAa;YAAZ,cAAI,EAAE,gBAAK;QAAM,OAAA,KAAK,CAAC,KAAK,KAAK,KAAK;IAArB,CAAqB,CAAC,CAAC;IACnE,CAAC,CAAC,SAAS,CAAC,MAAa,EAAE;QACzB,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,IAAI;YACJ;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,oDAAoD,EAAE,UAAC,CAAC;IAC3D;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,YAAY,EAAE,KAAK,EAAC,CAAC,CAAC;YACjD,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,YAAY,EAAE,KAAK,EAAC,CAAC,CAAC;YAChD,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAC,CAAC,CAAC;YACzD,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAC,CAAC,CAAC;YACpE,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE;YACJ,KAAK,EAAE,MAAM;SACd;QACD,KAAK,EAAE;YACL;gBACE,KAAK,EAAE,MAAM;aACd;SACF;KACF,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,EAAE,CAAC;IACb,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAS,EAAE;QACnC,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,IAAI;YACJ;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,gDAAgD,EAAE,UAAC,CAAC;IACvD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;YAC9C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAS;YAAT,qBAAA,EAAA,SAAS;YAAtB,YACE,iBAAO,SAKR;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;YAC7C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAC,CAAC,CAAC;YACzD,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAC,CAAC,CAAC;YACpE,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACtB,IAAI,CAAC,IAAI,EAAE,CAAC;IACZ,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAS,EAAE;QACnC,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,IAAI;YACJ;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,sCAAsC,EAAE,UAAC,CAAC;IAC7C;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,YAAY,EAAE,KAAK,EAAC,CAAC,CAAC;YACjD,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,YAAY,EAAE,KAAK,EAAC,CAAC,CAAC;YAChD,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAC,CAAC,CAAC;YACzD,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAC,CAAC,CAAC;YACpE,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE;YACJ,KAAK,EAAE,MAAM;SACd;QACD,KAAK,EAAE;YACL;gBACE,KAAK,EAAE,MAAM;aACd;SACF;KACF,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,EAAE,CAAC;IACb,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAS,EAAE;QACnC,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,6DAA6D,EAAE,UAAC,CAAC;IACpE;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,EAAE,CAAC;IACd,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC7D,IAAI,CAAC,QAAQ,CAAC;QACZ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,KAAK,EAAE,SAAS;SACjB;QACD,KAAK,EAAE;YACL;gBACE,KAAK,EAAE,SAAS;aACjB;SACF;KACF,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,EAAE,CAAC;IAChB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,uEAAuE,EAAE,UAAC,CAAC;IAC9E;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAI,IAAI,GAAG;QACT,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,IAAI;YACJ;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC;IACF,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACpD,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,0EAA0E,EAAE,UAAC,CAAC;IACjF;QAAmB,wBAAK;QAEtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAIZ;YAHC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;QAChB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD;QAAmB,wBAAK;QAItB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAMZ;YALC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;QAChB,CAAC;QACH,WAAC;IAAD,CAAC,AAZD,CAAmB,WAAK,GAYvB;IACD,IAAI,IAAI,GAAG;QACT,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,IAAI;YACJ;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC;IACF,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;IAC/B,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;IACvB,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IAC7B,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAC,KAAK,EAAE,SAAS,EAAS,CAAC;IAC5C,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC;IACjC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,yDAAyD,EAAE,UAAC,CAAC;IAChE;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAS;YAAT,qBAAA,EAAA,SAAS;YAAtB,YACE,iBAAO,SAIR;YAHC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACtB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,yDAAyD,EAAE,UAAC,CAAC;IAChE;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,CAAC,EAAE,CAAC;KACZ,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;IAClD,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;IAC3D,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;QAChC,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;QAC5C,EAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;QACrD,EAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;KAC1D,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,yCAAyC,EAAE,UAAC,CAAC;IAChD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;KAClB,CAAC,CAAC;IAEH,IAAI,CAAC,WAAW,CAAC;QACf,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;QAC5C,EAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;QACrD,EAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;KAC1D,CAAC,CAAC;IACH,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC;AAC7E,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,wDAAwD,EAAE,UAAO,CAAC;oBAiBjE,KAAK,EAIL,KAAK;;;YApBU,wBAAK;YACtB,cAAa,IAAI;gBAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;gBAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;YACtB,CAAC;YACH,WAAC;QAAD,CAAC,AAND,CAAmB,WAAK;;YAOL,wBAAK;YACtB,cAAa,IAAK;gBAAlB,YACE,kBAAM,IAAI,CAAC,SAKZ;gBAJC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;gBACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;gBAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;YACtB,CAAC;YACH,WAAC;QAAD,CAAC,AARD,CAAmB,WAAK;gBASZ,IAAI,IAAI,CAAC;YACnB,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;SAClB,CAAC;gBACU,IAAI,IAAI,EAAE;QACtB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;QAC5B,KAAK,CAAC,WAAW,CAAC;YAChB,EAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;SAC1D,CAAC,CAAC;QACH,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;;;KAC9B,CAAC,CAAC;AAEH,gBAAI,CAAC,wDAAwD,EAAE,UAAO,CAAC;QACjE,QAAQ,cAsBR,IAAI,EAIJ,MAAM;;;;2BA1BK,CAAC;wBACd,SAAS,EAAE,UAAU;wBACrB,OAAO,EAAE,KAAK;qBACf,CAAC;;oBACiB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;wBAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,QAAQ,UAAA,EAAC,CAAC,CAAC;wBACtC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AAND,CAAmB,WAAK;;oBAOL,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAOZ;wBANC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,QAAQ,UAAA,EAAC,CAAC,CAAC;wBACrC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,UAAA,EAAC,CAAC,CAAC;wBAClD,KAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,UAAA,EAAC,CAAC,CAAC;wBACrD,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,UAAA,EAAC,CAAC,CAAC;wBAClD,KAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,UAAA,EAAC,CAAC,CAAC;wBACrD,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AAVD,CAAmB,WAAK;uBAWb,IAAI,IAAI,CAAC;oBAClB,KAAK,EAAE,EAAE;oBACT,MAAM,EAAE,CAAC,EAAE,CAAC;iBACb,CAAC;yBACW,CAAC,EAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAC,CAAC;gBACjE,WAAM,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,EAAA;;gBAAlC,SAAkC,CAAC;gBACnC,KAAA,CAAA,KAAA,CAAC,CAAA,CAAC,EAAE,CAAA;gBAAC,WAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAK,CAAA,CAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,EAAA;;gBAA7C,cAAK,SAAwC,EAAE,KAAK,EAAC,CAAC;gBACtD,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAQ,EAAE;oBACtC,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,QAAA,EAAC;oBACxB,EAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,QAAA,EAAC;oBACzB,EAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,QAAA,EAAC;oBAC1B,EAAC,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,QAAA,EAAC;oBAClC,EAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,QAAA,EAAC;iBACvC,CAAC,CAAC;;;;KACJ,CAAC,CAAC;AAEH,gBAAI,CAAC,2DAA2D,EAAE,UAAO,CAAC;QACpE,SAAS,EAGT,QAAQ,cAqBR,IAAI,EAGJ,MAAM;;;;4BA3BM,UAAU,CAAC;oBACzB,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,KAAK,MAAM,CAAC;gBAC/C,CAAC;2BACc,CAAC;wBACd,SAAS,EAAE,UAAU;wBACrB,OAAO,EAAE,KAAK;qBACf,CAAC;;oBACiB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAIZ;wBAHC,KAAI,CAAC,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;wBAC5C,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,QAAQ,UAAA,EAAC,CAAC,CAAC;wBACtC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AAPD,CAAmB,WAAK;;oBAQL,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;wBAJC,KAAI,CAAC,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;wBAC5C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,QAAQ,UAAA,EAAC,CAAC,CAAC;wBACrC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,UAAA,EAAC,CAAC,CAAC;wBACjD,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AARD,CAAmB,WAAK;uBASb,IAAI,IAAI,CAAC;oBAClB,IAAI,EAAE,EAAE;iBACT,CAAC;yBACW,CAAC,EAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAC,CAAC;gBACjE,WAAM,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,EAAA;;gBAAlC,SAAkC,CAAC;gBACnC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAQ,EAAE;oBACtC,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,QAAA,EAAC;oBACxB,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,QAAA,EAAC;oBACxB,EAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,QAAA,EAAC;iBAClC,CAAC,CAAC;;;;KACJ,CAAC,CAAC;AAEH,gBAAI,CAAC,oFAAoF,EAAE,UAAO,CAAC;QAC7F,QAAQ,cAqBR,IAAI,EAGJ,MAAM;;;;2BAxBK;oBACb,EAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAC;oBACvC,EAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAC;iBACxC;;oBACkB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAIZ;wBAHC,KAAI,CAAC,QAAQ,EAAE,CAAC;wBAChB,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,QAAQ,UAAA,EAAC,CAAC,CAAC;wBACtC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AAPD,CAAmB,WAAK;;oBAQL,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;wBAJC,KAAI,CAAC,QAAQ,EAAE,CAAC;wBAChB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,QAAQ,UAAA,EAAC,CAAC,CAAC;wBACrC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;wBACvC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AARD,CAAmB,WAAK;uBASb,IAAI,IAAI,CAAC;oBAClB,IAAI,EAAE,EAAE;iBACT,CAAC;yBACW,CAAC,EAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAC,CAAC;gBACjE,WAAM,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,EAAA;;gBAAlC,SAAkC,CAAC;gBACnC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC7C,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;;;;KACvD,CAAC,CAAC;AAEH,gBAAI,CAAC,0CAA0C,EAAE,UAAO,CAAC;oBAiBnD,IAAI;;;YAhBW,wBAAK;YACtB,cAAa,IAAI;gBAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;gBAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;YACtB,CAAC;YACH,WAAC;QAAD,CAAC,AAND,CAAmB,WAAK;;YAOL,wBAAK;YACtB,cAAa,IAAI;gBAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;gBAJC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;gBACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;gBAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;YACtB,CAAC;YACH,WAAC;QAAD,CAAC,AARD,CAAmB,WAAK;eASb,IAAI,IAAI,CAAC;YAClB,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;SAClB,CAAC;QACF,IAAI,CAAC,WAAW,CAAC;YACf,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;YAC5C,EAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;YACrD,EAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;SAC1D,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACvD,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;;;KAC5D,CAAC,CAAC;AAEH,gBAAI,CAAC,sDAAsD,EAAE,UAAC,CAAC;IAC7D;QAAmB,wBAAK;QAEtB,cAAa,IAAK;YAAlB,YACE,kBAAM,IAAI,CAAC,SAIZ;YAHC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;QAChB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD;QAAmB,wBAAK;QAItB,cAAa,IAAK;YAAlB,YACE,kBAAM,IAAI,CAAC,SAMZ;YALC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;QAChB,CAAC;QACH,WAAC;IAAD,CAAC,AAZD,CAAmB,WAAK,GAYvB;IACD,IAAI,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;IACxB,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,MAAM,QAAA;QACN,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,IAAI;YACJ;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;IACH,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC1B,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAC,IAAI,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,EAAC,CAAC,CAAC;IAChD,CAAC,CAAC,EAAE,CAAC,MAAM,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,8CAA8C,EAAE,UAAO,CAAC;;QACvD,MAAM,uBAgCN,IAAI,EAKJ,QAAQ,EACR,QAAQ,EACR,MAAM;;;;yBAvCG,CAAC;wBACZ,OAAO,EAAE,OAAO;wBAChB,OAAO,EAAE,QAAQ;wBACjB,KAAK,EAAE;4BAAY,WAAA,IAAI,EAAA;iCAAA;wBACvB,GAAG,EAAE,KAAK;qBACX,CAAC;;oBACiB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;wBAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,MAAM,QAAA,EAAC,CAAC,CAAC;wBACpC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AAND,CAAmB,WAAK;;oBAOF,2BAAK;oBACzB,iBAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;wBAFC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;wBACzB,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,cAAC;gBAAD,CAAC,AAND,CAAsB,WAAK;;oBAOR,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAQZ;wBAPC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,MAAM,QAAA,EAAC,CAAC,CAAC;wBACnC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,MAAM,QAAA,EAAC,CAAC,CAAC;wBAChD,KAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,QAAA,EAAC,CAAC,CAAC;wBACnD,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;wBACxC,KAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;wBAC3C,KAAI,CAAC,WAAW,CAAC,SAAS,EAAE,EAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAC,CAAC,CAAC;wBAC/C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AAXD,CAAmB,WAAK;uBAYb,IAAI,IAAI,CAAC;oBAClB,KAAK,EAAE,EAAE;oBACT,MAAM,EAAE,CAAC,EAAE,CAAC;oBACZ,OAAO,EAAE,EAAE;iBACZ,CAAC;2BACa,IAAI,KAAK,EAAE;2BACX,IAAI,KAAK,EAAS;gBAAE,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;yBAC1C,CAAC,EAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAC,CAAC;gBAC5D,KAAA,CAAA,KAAA,CAAC,CAAA,CAAC,EAAE,CAAA;gBAAC,WAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC,OAAK,CAAA,CAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,EAAA;;gBAAnE,cAAK,SAA8D,EAAE,KAAK,EAAC,CAAC;gBAC5E,KAAA,CAAA,KAAA,CAAC,CAAA,CAAC,EAAE,CAAA;gBAAC,WAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAC,EAAA;;gBAAjD,cAAK,SAA4C,EAAE,IAAI,EAAC,CAAC;gBACzD,KAAA,CAAA,KAAA,CAAC,CAAA,CAAC,EAAE,CAAA;gBAAC,WAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC,IAAI,CAAC,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAC,EAAA;;gBAAjE,cAAK,SAA4D,EAAE,IAAI,EAAC,CAAC;gBACzE,WAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAA;;gBAA3B,SAA2B,CAAC;gBAC5B,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAQ,EAAE;oBACtC,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,QAAA,EAAC;oBACxB,EAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,QAAA,EAAC;oBACzB,EAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,QAAA,EAAC;oBAC1B,EAAC,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,QAAA,EAAC;oBAClC,EAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,QAAA,EAAC;iBACvC,CAAC,CAAC;;;;KACJ,CAAC,CAAC;AAEH,gBAAI,CAAC,uDAAuD,EAAE,UAAO,CAAC;QAChE,OAAO,EAGP,MAAM,cAuBN,IAAI,EAIJ,OAAO,EACP,MAAM;;;;0BA/BI,UAAU,CAAC;oBACvB,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC;gBAC9B,CAAC;yBACY,CAAC;wBACZ,OAAO,EAAE,UAAU;wBACnB,OAAO,EAAE,QAAQ;wBACjB,GAAG,EAAE,KAAK;qBACX,CAAC;;oBACiB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAIZ;wBAHC,KAAI,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;wBACxC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,MAAM,QAAA,EAAC,CAAC,CAAC;wBACpC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AAPD,CAAmB,WAAK;;oBAQL,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAMZ;wBALC,KAAI,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;wBACxC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,MAAM,QAAA,EAAC,CAAC,CAAC;wBACnC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;wBACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;wBAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AATD,CAAmB,WAAK;uBAUb,IAAI,IAAI,CAAC;oBAClB,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,CAAC,EAAE,CAAC;iBACZ,CAAC;0BACY,IAAI,KAAK,CAAC,MAAM,CAAC;yBAClB,CAAC,EAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAC,CAAC;gBAC/D,WAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAA;;gBAA1B,SAA0B,CAAC;gBAC3B,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAQ,EAAE;oBACtC,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,QAAA,EAAC;oBACxB,EAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,QAAA,EAAC;oBACjC,EAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,QAAA,EAAC;iBACtC,CAAC,CAAC;;;;KACJ,CAAC,CAAC"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..e2ef142 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3122 @@ +{ + "name": "rawmodel", + "version": "1.8.3", + "lockfileVersion": 1, + "dependencies": { + "@ava/babel-plugin-throws-helper": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@ava/babel-plugin-throws-helper/-/babel-plugin-throws-helper-2.0.0.tgz", + "integrity": "sha1-L8H+PCEacQcaTsp7j3r1hCzRrnw=", + "dev": true + }, + "@ava/babel-preset-stage-4": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ava/babel-preset-stage-4/-/babel-preset-stage-4-1.1.0.tgz", + "integrity": "sha512-oWqTnIGXW3k72UFidXzW0ONlO7hnO9x02S/QReJ7NBGeiBH9cUHY9+EfV6C8PXC6YJH++WrliEq03wMSJGNZFg==", + "dev": true, + "dependencies": { + "md5-hex": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "dev": true + }, + "package-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-1.2.0.tgz", + "integrity": "sha1-AD5WzVe3NqbtYRTMK4FUJnJ3DkQ=", + "dev": true + } + } + }, + "@ava/babel-preset-transform-test-files": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@ava/babel-preset-transform-test-files/-/babel-preset-transform-test-files-3.0.0.tgz", + "integrity": "sha1-ze0RlqjY2TgaUJJAq5LpGl7Aafc=", + "dev": true + }, + "@ava/pretty-format": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ava/pretty-format/-/pretty-format-1.1.0.tgz", + "integrity": "sha1-0KV9Jeua6rlkO90aAwZCuRwSPig=", + "dev": true + }, + "@types/node": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/@types/node/-/node-7.0.32.tgz", + "integrity": "sha512-7+0Ai8r8Xt6NNVM0Eo+XSqiZsBUYXg2yrCwyBhQzSfFHTGQWzFv/pk9106vPR8HWjKmGK+zzUj244POs4xfO2g==", + "dev": true + }, + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "anymatch": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", + "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", + "dev": true + }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true + }, + "arr-exclude": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/arr-exclude/-/arr-exclude-1.0.0.tgz", + "integrity": "sha1-38fC5VKicHI8zaBM8xKMjL/lxjE=", + "dev": true + }, + "arr-flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.3.tgz", + "integrity": "sha1-onTthawIhJtr14R8RYB0XcUa37E=", + "dev": true + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "auto-bind": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-1.1.0.tgz", + "integrity": "sha1-k7hk3H7gGjJigXddXHXKCnUeWWE=", + "dev": true + }, + "ava": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/ava/-/ava-0.19.1.tgz", + "integrity": "sha1-Q92CQ1rRmzmA/8okiPBdqrlAsnM=", + "dev": true + }, + "ava-init": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ava-init/-/ava-init-0.2.0.tgz", + "integrity": "sha1-kwTItMNX1m49/a4fv/R7EZnVxV0=", + "dev": true + }, + "babel-code-frame": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", + "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", + "dev": true + }, + "babel-core": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", + "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=", + "dev": true + }, + "babel-generator": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", + "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=", + "dev": true, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + } + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true + }, + "babel-helper-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz", + "integrity": "sha1-024i+rEAjXnYhkjjIRaGgShFbOg=", + "dev": true + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true + }, + "babel-plugin-espower": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-2.3.2.tgz", + "integrity": "sha1-VRa4/NsmyfDh2BYHSfbkxl5xJx4=", + "dev": true + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", + "integrity": "sha1-0+MQtA72ZKNmIiAAl8bUQCmPK/4=", + "dev": true + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true + }, + "babel-register": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", + "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=", + "dev": true + }, + "babel-runtime": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", + "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=", + "dev": true + }, + "babel-template": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", + "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=", + "dev": true + }, + "babel-traverse": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", + "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=", + "dev": true + }, + "babel-types": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", + "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=", + "dev": true + }, + "babylon": { + "version": "6.17.4", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", + "integrity": "sha512-kChlV+0SXkjE0vUn9OZ7pBMWRFd8uq3mZe8x1K6jhuNcAFAtEnjchFAqB+dYEXKyd+JpT6eppRR78QAr5gTsUw==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "binary-extensions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", + "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=", + "dev": true + }, + "bluebird": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", + "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", + "dev": true + }, + "boxen": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.1.0.tgz", + "integrity": "sha1-sbad1SIwXoB6md7ud329blFnsQI=", + "dev": true, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true + }, + "buf-compare": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz", + "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "caching-transform": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", + "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", + "dev": true, + "dependencies": { + "md5-hex": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", + "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "dev": true + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "dev": true + } + } + }, + "call-matcher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.0.1.tgz", + "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", + "dev": true + }, + "call-signature": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz", + "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=", + "dev": true + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true + }, + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true + }, + "ci-info": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.0.0.tgz", + "integrity": "sha1-3FKF8rTiUYIWg2gcOBwziPRuxTQ=", + "dev": true + }, + "clean-stack": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", + "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=", + "dev": true + }, + "clean-yaml-object": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", + "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", + "dev": true + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true + }, + "cli-spinners": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.0.0.tgz", + "integrity": "sha1-75h+09SDkaw9q5GAtAanQhgNbmo=", + "dev": true + }, + "cli-truncate": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.0.0.tgz", + "integrity": "sha1-IeuR9Hs/ZWDwBNt3p2m0Zo2cVRg=", + "dev": true + }, + "co-with-promise": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co-with-promise/-/co-with-promise-4.6.0.tgz", + "integrity": "sha1-QT59tvWJOmC5Qs9JLEvsk9tBWrc=", + "dev": true, + "dependencies": { + "pinkie": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz", + "integrity": "sha1-Wkfyi6EBXQIBvae/DzWOR77Ix+Q=", + "dev": true + }, + "pinkie-promise": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz", + "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=", + "dev": true + } + } + }, + "code-excerpt": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.0.tgz", + "integrity": "sha1-XcwIHoj0p+O1VOnjXX7yMtR/gUc=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "color-convert": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", + "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "dev": true + }, + "color-name": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.2.tgz", + "integrity": "sha1-XIq3K2S9IhXWF66VWeuxSEdc+Y0=", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true + }, + "common-path-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-1.0.0.tgz", + "integrity": "sha1-zVL28HEuC6q5fW+XModPIvR3UsA=", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "configstore": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.0.tgz", + "integrity": "sha1-Rd+QcHPibfoc9LLVL1tgVF6qEdE=", + "dev": true + }, + "convert-source-map": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", + "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", + "dev": true + }, + "convert-to-spaces": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz", + "integrity": "sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU=", + "dev": true + }, + "core-assert": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/core-assert/-/core-assert-0.2.1.tgz", + "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=", + "dev": true + }, + "core-js": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", + "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "dev": true + }, + "cross-spawn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "dev": true + }, + "cross-spawn-async": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz", + "integrity": "sha1-hF/wwINKPe2dFg2sptOQkGuyiMw=", + "dev": true + }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true + }, + "date-time": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", + "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=", + "dev": true + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "dev": true, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true + }, + "diff": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", + "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", + "dev": true + }, + "diff-match-patch": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.0.tgz", + "integrity": "sha1-HMPIOkkNZ/ldkeOfatHy4Ia2MEg=", + "dev": true + }, + "dot-prop": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.1.1.tgz", + "integrity": "sha1-qEk/C3te7sglJbXHWH+n3nyoWcE=", + "dev": true + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "empower-core": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-0.6.2.tgz", + "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", + "dev": true + }, + "equal-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/equal-length/-/equal-length-1.0.1.tgz", + "integrity": "sha1-IcoRLUirJLTh5//A5TOdMf38J0w=", + "dev": true + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true + }, + "es6-error": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.0.2.tgz", + "integrity": "sha1-7sXHJurO9Rt/a3PCDbbhsTsGnJg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "espower-location-detector": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/espower-location-detector/-/espower-location-detector-1.0.0.tgz", + "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", + "dev": true + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "espurify": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.7.0.tgz", + "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=", + "dev": true + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "execa": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.5.1.tgz", + "integrity": "sha1-3j+4XLjW6RyFvLzrFkWBeFy1ezY=", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true + }, + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "dev": true + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true + }, + "fn-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", + "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", + "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", + "dev": true, + "optional": true, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "optional": true + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.36", + "bundled": true, + "dev": true, + "optional": true + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "optional": true + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "get-port": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.1.0.tgz", + "integrity": "sha1-7wGxioTKZIaXD/meVERhQac//T4=", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true + }, + "got": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "dev": true, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "handleable": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/handleable/-/handleable-0.20.1.tgz", + "integrity": "sha1-L2Ac/bJyFIO8N3iiOfASRK2er/g=" + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true + }, + "has-color": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", + "dev": true + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "has-yarn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-1.0.0.tgz", + "integrity": "sha1-ieJdtgS3Jcj1l2//Ct3JIbgopac=", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true + }, + "hosted-git-info": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz", + "integrity": "sha1-AHa59GonBQbduq6lZJaJdGBhKmc=", + "dev": true + }, + "hullabaloo-config-manager": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/hullabaloo-config-manager/-/hullabaloo-config-manager-1.1.1.tgz", + "integrity": "sha512-ztKnkZV0TmxnumCDHHgLGNiDnotu4EHCp9YMkznWuo4uTtCyJ+cu+RNcxUeXYKTllpvLFWnbfWry09yzszgg+A==", + "dev": true, + "dependencies": { + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true + } + } + }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", + "dev": true + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.1.0.tgz", + "integrity": "sha1-CP9DNGAziDmbMp5rlTjcejz13n0=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "dev": true + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "dev": true + }, + "irregular-plurals": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.2.0.tgz", + "integrity": "sha1-OPKZg0uowAwwvpxVThNyaXUv86w=", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true + }, + "is-buffer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true + }, + "is-ci": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", + "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true + }, + "is-error": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.1.tgz", + "integrity": "sha1-aEqW2EB2V3yY9M20DG0mpRI78Zw=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-generator-fn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", + "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true + }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "dev": true + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-observable": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", + "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-url": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.2.tgz", + "integrity": "sha1-SYkFpZO/R8wtnn9zg3K792lsfyY=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true + }, + "jest-diff": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-19.0.0.tgz", + "integrity": "sha1-0VY8/FbItgIymI+8BdTRbtkPBjw=", + "dev": true + }, + "jest-file-exists": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/jest-file-exists/-/jest-file-exists-19.0.0.tgz", + "integrity": "sha1-zKLlh6EeyS4kz+qz+KlNZX8/zrg=", + "dev": true + }, + "jest-matcher-utils": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-19.0.0.tgz", + "integrity": "sha1-Xs2bY1ZdKwAfYfv37Ex/U3lkVk0=", + "dev": true + }, + "jest-message-util": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-19.0.0.tgz", + "integrity": "sha1-cheWuJwOTXYWBvm6jLgoo7YkZBY=", + "dev": true + }, + "jest-mock": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-19.0.0.tgz", + "integrity": "sha1-ZwOGQelgerLOCOxKjLg6q7yJnQE=", + "dev": true + }, + "jest-snapshot": { + "version": "19.0.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-19.0.2.tgz", + "integrity": "sha1-nBshYhT3GHw4v9XHCx76sWsP9Qs=", + "dev": true + }, + "jest-util": { + "version": "19.0.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-19.0.2.tgz", + "integrity": "sha1-4KAjKiq55rK1Nmi9s1NMK1l37UE=", + "dev": true + }, + "jest-validate": { + "version": "19.0.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-19.0.2.tgz", + "integrity": "sha1-3FNN9fEnjVtj3zKxQkHU2/ckTAw=", + "dev": true + }, + "js-tokens": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz", + "integrity": "sha1-COnxMkhKLEWjCQfp3E1VZ7fxFNc=", + "dev": true + }, + "js-yaml": { + "version": "3.8.4", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.4.tgz", + "integrity": "sha1-UgtFZPhlc7qWZir4Woyvp7S1pvY=", + "dev": true + }, + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true + }, + "last-line-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/last-line-stream/-/last-line-stream-1.0.0.tgz", + "integrity": "sha1-0bZNafhv8kry0EiDos7uFFIKVgA=", + "dev": true + }, + "latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "dev": true + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "dev": true + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.clonedeepwith": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz", + "integrity": "sha1-buMFc6A6GmDWcKYu8zwQzxr9vdQ=", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", + "dev": true + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "dev": true + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + }, + "lodash.merge": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz", + "integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU=" + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true + }, + "make-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.0.0.tgz", + "integrity": "sha1-l6ARdR6R3YfPre9Ygy67BJNt6Xg=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "matcher": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-0.1.2.tgz", + "integrity": "sha1-7yDL3mTCTFDMYa9bg+4LG4/wAQE=", + "dev": true + }, + "md5-hex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-2.0.0.tgz", + "integrity": "sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM=", + "dev": true + }, + "md5-o-matic": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", + "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "dev": true + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true + } + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true + }, + "ms": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz", + "integrity": "sha1-cIFVpeROM/X9D8U+gdDUCpG+H/8=", + "dev": true + }, + "multimatch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", + "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", + "dev": true + }, + "nan": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", + "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", + "dev": true, + "optional": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "normalize-package-data": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz", + "integrity": "sha1-2Bntoqne29H/pWPqQHHZNngilbs=", + "dev": true + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true + }, + "observable-to-promise": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/observable-to-promise/-/observable-to-promise-0.5.0.tgz", + "integrity": "sha1-yCjw8NxH6fhq+KSXfF1VB2znqR8=", + "dev": true, + "dependencies": { + "symbol-observable": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz", + "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=", + "dev": true + } + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true + }, + "option-chain": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/option-chain/-/option-chain-0.1.1.tgz", + "integrity": "sha1-6bgR4AbxwPVIAvKClb/Ilw+Nz70=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true + }, + "package-hash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-2.0.0.tgz", + "integrity": "sha1-eK4ybIngWk2BO2hgGXevBcANKg0=", + "dev": true + }, + "package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "dev": true + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true + }, + "parse-ms": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", + "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true + }, + "pkg-conf": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.0.0.tgz", + "integrity": "sha1-BxyHZQQDvM+5xif1h1G/5HwGcnk=", + "dev": true + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true + } + } + }, + "plur": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", + "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-format": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-19.0.0.tgz", + "integrity": "sha1-VlMNMqy5ij+khRxOK503tCBoTIQ=", + "dev": true, + "dependencies": { + "ansi-styles": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", + "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=", + "dev": true + } + } + }, + "pretty-ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-2.1.0.tgz", + "integrity": "sha1-QlfCVt8/sLRR1q/6qwIYhBJpgdw=", + "dev": true, + "dependencies": { + "plur": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/plur/-/plur-1.0.0.tgz", + "integrity": "sha1-24XGgU9eXlo7Se/CjWBP7GKXUVY=", + "dev": true + } + } + }, + "private": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", + "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true + } + } + }, + "rc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", + "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", + "dev": true, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true + }, + "readable-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.1.tgz", + "integrity": "sha512-u6cxIvtbZcjq2HH71Zc/SRBUl7vbv62szIqmqqGpK3HY5J1c0kR/LUzKUpeoFgMzapvVAlBD+QY56ilWmHi4Nw==", + "dev": true + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "dependencies": { + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true + } + } + }, + "regenerate": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", + "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=", + "dev": true + }, + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + }, + "regex-cache": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", + "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", + "dev": true + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true + }, + "registry-auth-token": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", + "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", + "dev": true + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true + }, + "release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", + "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true + }, + "require-precompiled": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/require-precompiled/-/require-precompiled-0.1.0.tgz", + "integrity": "sha1-WhtS63Dr7UPrmC6XTIWrWVceVvo=", + "dev": true + }, + "resolve": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", + "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", + "dev": true + }, + "resolve-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-1.0.0.tgz", + "integrity": "sha1-Tq7qQe0EDRcCRX32SkKysH0kb58=", + "dev": true, + "dependencies": { + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "dev": true + } + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true + }, + "safe-buffer": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.0.tgz", + "integrity": "sha512-aSLEDudu6OoRr/2rU609gRmnYboRLxgDG1z9o2Q0os7236FwvcqIOO8r8U5JUEwivZOhDaKlFO4SbPTJYyBEyQ==", + "dev": true + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true + }, + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "dev": true + }, + "source-map-support": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", + "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", + "dev": true + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", + "dev": true + }, + "string_decoder": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.2.tgz", + "integrity": "sha1-sp4fThEl+pehA4K4pTNze3SR4Xk=", + "dev": true, + "dependencies": { + "safe-buffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", + "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", + "dev": true + } + } + }, + "string-width": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz", + "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-bom-buf": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", + "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + } + } + }, + "symbol-observable": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", + "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", + "dev": true + }, + "term-size": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-0.1.1.tgz", + "integrity": "sha1-hzYLljlsq1dgljcUzaDQy+7K2co=", + "dev": true, + "dependencies": { + "execa": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.4.0.tgz", + "integrity": "sha1-TrZGejaglfq7KXD/nV4/t7zm68M=", + "dev": true + }, + "npm-run-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-1.0.0.tgz", + "integrity": "sha1-9cMr9ZX+ga6Sfa7FLoL4sACsPI8=", + "dev": true + }, + "path-key": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-1.0.0.tgz", + "integrity": "sha1-XVPVeAGWRsDWiADbThRua9wqx68=", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true + }, + "time-require": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/time-require/-/time-require-0.1.2.tgz", + "integrity": "sha1-+eEss3D8JgXhFARYK6VO9corLZg=", + "dev": true, + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "dev": true + }, + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "dev": true + }, + "parse-ms": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-0.1.2.tgz", + "integrity": "sha1-3T+iXtbC78e93hKtm0bBY6opIk4=", + "dev": true + }, + "pretty-ms": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-0.2.2.tgz", + "integrity": "sha1-2oeaaC/zOjcBEEbxPWJ/Z8c7hPY=", + "dev": true + }, + "strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", + "dev": true + } + } + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "tslib": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz", + "integrity": "sha1-vIAEFkaRkjp5/oN4u+s9ogF1OOw=", + "dev": true + }, + "tslint": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.4.3.tgz", + "integrity": "sha1-dhyEArgONHt3M6BDkKdXslNYBGc=", + "dev": true + }, + "tsutils": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.4.0.tgz", + "integrity": "sha1-rUzm26Dlo+2934Ymt8oEB4IYn+o=", + "dev": true + }, + "typeable": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/typeable/-/typeable-2.0.1.tgz", + "integrity": "sha1-cl6nFtN7oEcsuWfAxmxIsySfiOs=" + }, + "typescript": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.3.4.tgz", + "integrity": "sha1-PTgyGCgjHkNPKHUUlZw3qCtin0I=", + "dev": true + }, + "uid2": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz", + "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=", + "dev": true + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "dev": true + }, + "unique-temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz", + "integrity": "sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U=", + "dev": true + }, + "unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", + "dev": true + }, + "update-notifier": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.2.0.tgz", + "integrity": "sha1-G1g3z5DAc22IYncytmHBOPht5y8=", + "dev": true + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "validatable": { + "version": "0.24.1", + "resolved": "https://registry.npmjs.org/validatable/-/validatable-0.24.1.tgz", + "integrity": "sha1-m3HEa1+2M+gjXPXqa7aQcNH90U4=" + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true + }, + "which": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", + "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", + "dev": true + }, + "widest-line": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", + "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.1.0.tgz", + "integrity": "sha512-0TZ20a+xcIl4u0+Mj5xDH2yOWdmQiXlKf9Hm+TgDXjTMsEYb+gDrmb8e8UNAzMCitX8NBqG4Z/FUQIyzv/R1JQ==", + "dev": true + }, + "write-json-file": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.2.0.tgz", + "integrity": "sha1-UYYlBruzthnu+reFnx/WxtBTCHY=", + "dev": true, + "dependencies": { + "detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", + "dev": true + } + } + }, + "write-pkg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-2.1.0.tgz", + "integrity": "sha1-NTqkTDnEjCFED1wIzmq9RhQcnAg=", + "dev": true + }, + "xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } +} diff --git a/package.json b/package.json index 96a5cad..073aba6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.8.3", + "version": "1.8.4", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", diff --git a/src/fields.ts b/src/fields.ts index 3aa3552..c9c183f 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -16,8 +16,8 @@ export interface FieldRecipe { fakeValue?: any; validate?: ValidatorRecipe[]; handle?: HandlerRecipe[]; - validators?: {[name: string]: (v? : any, r?: ValidatorRecipe) => boolean | Promise}; - handlers?: {[name: string]: (v? : any, r?: HandlerRecipe) => boolean | Promise}; + validators?: {[name: string]: (v?: any, r?: ValidatorRecipe) => boolean | Promise}; + handlers?: {[name: string]: (v?: any, r?: HandlerRecipe) => boolean | Promise}; owner?: Model; failFast?: boolean; serializable?: boolean; @@ -152,7 +152,7 @@ export class Field { * Sets current field value. */ - protected _setValue (data) { + protected _setValue (data: any) { if (isFunction(data)) { data = data.call(this); } @@ -171,7 +171,7 @@ export class Field { * Converts a `value` into specified `type`. */ - protected _cast (data, type) { + protected _cast (data: any, type: any) { let converter = type; if (!isValue(data)) { @@ -293,7 +293,7 @@ export class Field { * Returns `true` when `data` equals to the current value. */ - public equals (data): boolean { + public equals (data: any): boolean { let value = data instanceof Field ? data.value : data; return isEqual( diff --git a/src/models.ts b/src/models.ts index 0c347ae..869b73c 100644 --- a/src/models.ts +++ b/src/models.ts @@ -37,9 +37,9 @@ export interface ModelRecipe { export abstract class Model { protected _fields: {[name: string]: Field}; // model fields - protected _types: {[key: string]: (v? : any) => any}; // custom data types - protected _validators: {[key: string]: (v? : any, r?: ValidatorRecipe) => boolean | Promise}; // custom validators - protected _handlers: {[key: string]: (v? : any, r?: HandlerRecipe) => boolean | Promise}; // custom validators + protected _types: {[key: string]: (v?: any) => any}; // custom data types + protected _validators: {[key: string]: (v?: any, r?: ValidatorRecipe) => boolean | Promise}; // custom validators + protected _handlers: {[key: string]: (v?: any, r?: HandlerRecipe) => boolean | Promise}; // custom validators protected _failFast: boolean; // stop validating/handling on first error readonly root: Model; public parent: Model; @@ -171,7 +171,7 @@ export abstract class Model { * Defines a new custom data type. */ - public defineType (name: string, converter: (v? : any) => any): void { + public defineType (name: string, converter: (v?: any) => any): void { this._types[name] = converter; } @@ -179,7 +179,7 @@ export abstract class Model { * Defines a new custom validator. */ - public defineValidator (name: string, handler: (v? : any, r?: ValidatorRecipe) => boolean | Promise): void { + public defineValidator (name: string, handler: (v?: any, r?: ValidatorRecipe) => boolean | Promise): void { this._validators[name] = handler; } @@ -187,7 +187,7 @@ export abstract class Model { * Defines a new custom validator. */ - public defineHandler (name: string, handler: (e? : any, r?: HandlerRecipe) => boolean | Promise): void { + public defineHandler (name: string, handler: (e?: any, r?: HandlerRecipe) => boolean | Promise): void { this._handlers[name] = handler; } @@ -195,7 +195,7 @@ export abstract class Model { * Returns a value at path. */ - public getField (...keys): Field { + public getField (...keys: any[]): Field { keys = [].concat(isArray(keys[0]) ? keys[0] : keys); let lastKey = keys.pop(); @@ -211,7 +211,7 @@ export abstract class Model { * Returns `true` if the field exists. */ - public hasField (...keys): boolean { + public hasField (...keys: any[]): boolean { return !isUndefined(this.getField(...keys)); } diff --git a/src/utils.ts b/src/utils.ts index f0ad019..4bcfe94 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -17,6 +17,6 @@ export {isEqual}; * Returns a duplicated data object (useful to remove data bindings). */ -export function serialize (data) { +export function serialize (data: any) { return JSON.parse(JSON.stringify(data)); } From 7c63b7285ae5f70ec853998b263fe54e13cb0c90 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 22 Jul 2017 00:57:06 +0200 Subject: [PATCH 172/219] dependencies, module interface --- dist/src/index.d.ts | 6 +- dist/src/index.js | 10 +- dist/src/index.js.map | 2 +- dist/src/models.js.map | 2 +- dist/tests/fields.js.map | 2 +- dist/tests/models.js.map | 2 +- package-lock.json | 2291 +++++++++++++++++++++++++++++--------- package.json | 10 +- src/index.ts | 11 +- 9 files changed, 1793 insertions(+), 543 deletions(-) diff --git a/dist/src/index.d.ts b/dist/src/index.d.ts index 2a1144f..a63048d 100644 --- a/dist/src/index.d.ts +++ b/dist/src/index.d.ts @@ -1,3 +1,3 @@ -import { Model } from './models'; -import { Field } from './fields'; -export { Model, Field }; +export * from './models'; +export * from './fields'; +export * from './utils'; diff --git a/dist/src/index.js b/dist/src/index.js index 8100419..e82a597 100644 --- a/dist/src/index.js +++ b/dist/src/index.js @@ -1,7 +1,9 @@ "use strict"; +function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; +} exports.__esModule = true; -var models_1 = require("./models"); -exports.Model = models_1.Model; -var fields_1 = require("./fields"); -exports.Field = fields_1.Field; +__export(require("./models")); +__export(require("./fields")); +__export(require("./utils")); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/src/index.js.map b/dist/src/index.js.map index 7aa8a67..3f0fe92 100644 --- a/dist/src/index.js.map +++ b/dist/src/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;AAAA,mCAA+B;AAOvB,gBAPA,cAAK,CAOA;AANb,mCAA+B;AAMhB,gBANP,cAAK,CAMO"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;AAAA,8BAAyB;AACzB,8BAAyB;AACzB,6BAAwB"} \ No newline at end of file diff --git a/dist/src/models.js.map b/dist/src/models.js.map index 7e1ae11..a7877df 100644 --- a/dist/src/models.js.map +++ b/dist/src/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/fields.js.map b/dist/tests/fields.js.map index d81fd41..f5d1534 100644 --- a/dist/tests/fields.js.map +++ b/dist/tests/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../tests/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../tests/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/models.js.map b/dist/tests/models.js.map index 40d3a3e..f4cbba4 100644 --- a/dist/tests/models.js.map +++ b/dist/tests/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index e2ef142..47ad573 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,7 +1,8 @@ { "name": "rawmodel", - "version": "1.8.3", + "version": "1.8.5", "lockfileVersion": 1, + "requires": true, "dependencies": { "@ava/babel-plugin-throws-helper": { "version": "2.0.0", @@ -14,18 +15,38 @@ "resolved": "https://registry.npmjs.org/@ava/babel-preset-stage-4/-/babel-preset-stage-4-1.1.0.tgz", "integrity": "sha512-oWqTnIGXW3k72UFidXzW0ONlO7hnO9x02S/QReJ7NBGeiBH9cUHY9+EfV6C8PXC6YJH++WrliEq03wMSJGNZFg==", "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-to-generator": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "package-hash": "1.2.0" + }, "dependencies": { "md5-hex": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", - "dev": true + "dev": true, + "requires": { + "md5-o-matic": "0.1.1" + } }, "package-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-1.2.0.tgz", "integrity": "sha1-AD5WzVe3NqbtYRTMK4FUJnJ3DkQ=", - "dev": true + "dev": true, + "requires": { + "md5-hex": "1.3.0" + } } } }, @@ -33,24 +54,51 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@ava/babel-preset-transform-test-files/-/babel-preset-transform-test-files-3.0.0.tgz", "integrity": "sha1-ze0RlqjY2TgaUJJAq5LpGl7Aafc=", - "dev": true + "dev": true, + "requires": { + "@ava/babel-plugin-throws-helper": "2.0.0", + "babel-plugin-espower": "2.3.2" + } }, - "@ava/pretty-format": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@ava/pretty-format/-/pretty-format-1.1.0.tgz", - "integrity": "sha1-0KV9Jeua6rlkO90aAwZCuRwSPig=", - "dev": true + "@ava/write-file-atomic": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ava/write-file-atomic/-/write-file-atomic-2.2.0.tgz", + "integrity": "sha512-BTNB3nGbEfJT+69wuqXFr/bQH7Vr7ihx2xGOMNqPgDGhwspoZhiWumDDZNjBy7AScmqS5CELIOGtPVXESyrnDA==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "@concordance/react": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@concordance/react/-/react-1.0.0.tgz", + "integrity": "sha512-htrsRaQX8Iixlsek8zQU7tE8wcsTQJ5UhZkSPEA8slCDAisKpC/2VgU/ucPn32M5/LjGGXRaUEKvEw1Wiuu4zQ==", + "dev": true, + "requires": { + "arrify": "1.0.1" + } }, "@types/node": { - "version": "7.0.32", - "resolved": "https://registry.npmjs.org/@types/node/-/node-7.0.32.tgz", - "integrity": "sha512-7+0Ai8r8Xt6NNVM0Eo+XSqiZsBUYXg2yrCwyBhQzSfFHTGQWzFv/pk9106vPR8HWjKmGK+zzUj244POs4xfO2g==", + "version": "8.0.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.14.tgz", + "integrity": "sha512-lrtgE/5FeTdcuxgsDbLUIFJ33dTp4TkbKkTDZt/ueUMeqmGYqJRQd908q5Yj9EzzWSMonEhMr1q/CQlgVGEt4w==", "dev": true }, "ansi-align": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "dev": true, + "requires": { + "string-width": "2.1.1" + } + }, + "ansi-escapes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz", + "integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=", "dev": true }, "ansi-regex": { @@ -60,28 +108,41 @@ "dev": true }, "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", + "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } }, "anymatch": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", - "dev": true + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11" + } }, "argparse": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } }, "arr-diff": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } }, "arr-exclude": { "version": "1.0.0", @@ -90,9 +151,9 @@ "dev": true }, "arr-flatten": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.3.tgz", - "integrity": "sha1-onTthawIhJtr14R8RYB0XcUa37E=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, "array-differ": { @@ -111,7 +172,10 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } }, "array-uniq": { "version": "1.0.3", @@ -144,34 +208,195 @@ "dev": true }, "ava": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/ava/-/ava-0.19.1.tgz", - "integrity": "sha1-Q92CQ1rRmzmA/8okiPBdqrlAsnM=", - "dev": true + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/ava/-/ava-0.21.0.tgz", + "integrity": "sha512-+ZjahyjqyzkPLlFZe2OoLmiE3aaQ2jK5h74wrkuX5I+J6LpNAPoQ8X/EhqEtKEjuWwmniLAjnVjZ7OY8rWdJwA==", + "dev": true, + "requires": { + "@ava/babel-preset-stage-4": "1.1.0", + "@ava/babel-preset-transform-test-files": "3.0.0", + "@ava/write-file-atomic": "2.2.0", + "@concordance/react": "1.0.0", + "ansi-escapes": "2.0.0", + "ansi-styles": "3.1.0", + "arr-flatten": "1.1.0", + "array-union": "1.0.2", + "array-uniq": "1.0.3", + "arrify": "1.0.1", + "auto-bind": "1.1.0", + "ava-init": "0.2.1", + "babel-core": "6.25.0", + "bluebird": "3.5.0", + "caching-transform": "1.0.1", + "chalk": "2.0.1", + "chokidar": "1.7.0", + "clean-stack": "1.3.0", + "clean-yaml-object": "0.1.0", + "cli-cursor": "2.1.0", + "cli-spinners": "1.0.0", + "cli-truncate": "1.0.0", + "co-with-promise": "4.6.0", + "code-excerpt": "2.1.0", + "common-path-prefix": "1.0.0", + "concordance": "3.0.0", + "convert-source-map": "1.5.0", + "core-assert": "0.2.1", + "currently-unhandled": "0.4.1", + "debug": "2.6.8", + "dot-prop": "4.1.1", + "empower-core": "0.6.2", + "equal-length": "1.0.1", + "figures": "2.0.0", + "find-cache-dir": "1.0.0", + "fn-name": "2.0.1", + "get-port": "3.1.0", + "globby": "6.1.0", + "has-flag": "2.0.0", + "hullabaloo-config-manager": "1.1.1", + "ignore-by-default": "1.0.1", + "import-local": "0.1.1", + "indent-string": "3.1.0", + "is-ci": "1.0.10", + "is-generator-fn": "1.0.0", + "is-obj": "1.0.1", + "is-observable": "0.2.0", + "is-promise": "2.1.0", + "js-yaml": "3.9.0", + "last-line-stream": "1.0.0", + "lodash.clonedeepwith": "4.5.0", + "lodash.debounce": "4.0.8", + "lodash.difference": "4.5.0", + "lodash.flatten": "4.4.0", + "loud-rejection": "1.6.0", + "make-dir": "1.0.0", + "matcher": "1.0.0", + "md5-hex": "2.0.0", + "meow": "3.7.0", + "ms": "2.0.0", + "multimatch": "2.1.0", + "observable-to-promise": "0.5.0", + "option-chain": "1.0.0", + "package-hash": "2.0.0", + "pkg-conf": "2.0.0", + "plur": "2.1.2", + "pretty-ms": "2.1.0", + "require-precompiled": "0.1.0", + "resolve-cwd": "2.0.0", + "safe-buffer": "5.1.1", + "slash": "1.0.0", + "source-map-support": "0.4.15", + "stack-utils": "1.0.1", + "strip-ansi": "4.0.0", + "strip-bom-buf": "1.0.0", + "supports-color": "4.2.0", + "time-require": "0.1.2", + "trim-off-newlines": "1.0.1", + "unique-temp-dir": "1.0.0", + "update-notifier": "2.2.0" + } }, "ava-init": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/ava-init/-/ava-init-0.2.0.tgz", - "integrity": "sha1-kwTItMNX1m49/a4fv/R7EZnVxV0=", - "dev": true + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ava-init/-/ava-init-0.2.1.tgz", + "integrity": "sha512-lXwK5LM+2g1euDRqW1mcSX/tqzY1QU7EjKpqayFPPtNRmbSYZ8RzPO5tqluTToijmtjp2M+pNpVdbcHssC4glg==", + "dev": true, + "requires": { + "arr-exclude": "1.0.0", + "execa": "0.7.0", + "has-yarn": "1.0.0", + "read-pkg-up": "2.0.0", + "write-pkg": "3.1.0" + } }, "babel-code-frame": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", - "dev": true + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } }, "babel-core": { "version": "6.25.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=", - "dev": true + "dev": true, + "requires": { + "babel-code-frame": "6.22.0", + "babel-generator": "6.25.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.24.1", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0", + "babylon": "6.17.4", + "convert-source-map": "1.5.0", + "debug": "2.6.8", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.7", + "slash": "1.0.0", + "source-map": "0.5.6" + } }, "babel-generator": { "version": "6.25.0", "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=", "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.23.0", + "babel-types": "6.25.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.6", + "trim-right": "1.0.1" + }, "dependencies": { "jsesc": { "version": "1.3.0", @@ -185,73 +410,135 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", - "dev": true + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "6.24.1", + "babel-runtime": "6.23.0", + "babel-types": "6.25.0" + } }, "babel-helper-call-delegate": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", - "dev": true + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.23.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0" + } }, "babel-helper-explode-assignable-expression": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0" + } }, "babel-helper-function-name": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "dev": true + "dev": true, + "requires": { + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0" + } }, "babel-helper-get-function-arity": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-types": "6.25.0" + } }, "babel-helper-hoist-variables": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-types": "6.25.0" + } }, "babel-helper-regex": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz", "integrity": "sha1-024i+rEAjXnYhkjjIRaGgShFbOg=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-types": "6.25.0", + "lodash": "4.17.4" + } }, "babel-helper-remap-async-to-generator": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", - "dev": true + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0" + } }, "babel-helpers": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-template": "6.25.0" + } }, "babel-messages": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0" + } }, "babel-plugin-check-es2015-constants": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0" + } }, "babel-plugin-espower": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-2.3.2.tgz", "integrity": "sha1-VRa4/NsmyfDh2BYHSfbkxl5xJx4=", - "dev": true + "dev": true, + "requires": { + "babel-generator": "6.25.0", + "babylon": "6.17.4", + "call-matcher": "1.0.1", + "core-js": "2.4.1", + "espower-location-detector": "1.0.0", + "espurify": "1.7.0", + "estraverse": "4.2.0" + } }, "babel-plugin-syntax-async-functions": { "version": "6.13.0", @@ -275,91 +562,177 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", - "dev": true + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-es2015-destructuring": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-es2015-function-name": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "dev": true + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.23.0", + "babel-types": "6.25.0" + } }, "babel-plugin-transform-es2015-modules-commonjs": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", "integrity": "sha1-0+MQtA72ZKNmIiAAl8bUQCmPK/4=", - "dev": true + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0", + "babel-types": "6.25.0" + } }, "babel-plugin-transform-es2015-parameters": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "dev": true + "dev": true, + "requires": { + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.23.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0" + } }, "babel-plugin-transform-es2015-spread": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-es2015-sticky-regex": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "dev": true + "dev": true, + "requires": { + "babel-helper-regex": "6.24.1", + "babel-runtime": "6.23.0", + "babel-types": "6.25.0" + } }, "babel-plugin-transform-es2015-unicode-regex": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "dev": true + "dev": true, + "requires": { + "babel-helper-regex": "6.24.1", + "babel-runtime": "6.23.0", + "regexpu-core": "2.0.0" + } }, "babel-plugin-transform-exponentiation-operator": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", - "dev": true + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", + "babel-plugin-syntax-exponentiation-operator": "6.13.0", + "babel-runtime": "6.23.0" + } }, "babel-plugin-transform-strict-mode": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-types": "6.25.0" + } }, "babel-register": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=", - "dev": true + "dev": true, + "requires": { + "babel-core": "6.25.0", + "babel-runtime": "6.23.0", + "core-js": "2.4.1", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.15" + } }, "babel-runtime": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=", - "dev": true + "dev": true, + "requires": { + "core-js": "2.4.1", + "regenerator-runtime": "0.10.5" + } }, "babel-template": { "version": "6.25.0", "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0", + "babylon": "6.17.4", + "lodash": "4.17.4" + } }, "babel-traverse": { "version": "6.25.0", "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=", - "dev": true + "dev": true, + "requires": { + "babel-code-frame": "6.22.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.23.0", + "babel-types": "6.25.0", + "babylon": "6.17.4", + "debug": "2.6.8", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } }, "babel-types": { "version": "6.25.0", "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } }, "babylon": { "version": "6.17.4", @@ -386,10 +759,19 @@ "dev": true }, "boxen": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.1.0.tgz", - "integrity": "sha1-sbad1SIwXoB6md7ud329blFnsQI=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.2.0.tgz", + "integrity": "sha512-tfKK3nq0qXXOxvXEYW1k1XNRrDuQzO2oFPvLD3Fs1I58n0leuTNlftBmu3seUCyZvDfiqgRaxlqZs9WJAbSA7g==", "dev": true, + "requires": { + "ansi-align": "2.0.0", + "camelcase": "4.1.0", + "chalk": "2.0.1", + "cli-boxes": "1.0.0", + "string-width": "2.1.1", + "term-size": "1.2.0", + "widest-line": "1.0.0" + }, "dependencies": { "camelcase": { "version": "4.1.0", @@ -403,13 +785,22 @@ "version": "1.1.8", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dev": true + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } }, "braces": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } }, "buf-compare": { "version": "1.0.1", @@ -428,18 +819,31 @@ "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", "dev": true, + "requires": { + "md5-hex": "1.3.0", + "mkdirp": "0.5.1", + "write-file-atomic": "1.3.4" + }, "dependencies": { "md5-hex": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", - "dev": true + "dev": true, + "requires": { + "md5-o-matic": "0.1.1" + } }, "write-file-atomic": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } } } }, @@ -447,7 +851,13 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.0.1.tgz", "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", - "dev": true + "dev": true, + "requires": { + "core-js": "2.4.1", + "deep-equal": "1.0.1", + "espurify": "1.7.0", + "estraverse": "4.2.0" + } }, "call-signature": { "version": "0.0.2", @@ -465,7 +875,11 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true + "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + } }, "capture-stack-trace": { "version": "1.0.0", @@ -474,24 +888,32 @@ "dev": true }, "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", + "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", "dev": true, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } + "requires": { + "ansi-styles": "3.1.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.2.0" } }, "chokidar": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true + "dev": true, + "requires": { + "anymatch": "1.3.0", + "async-each": "1.0.1", + "fsevents": "1.1.2", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } }, "ci-info": { "version": "1.0.0", @@ -521,7 +943,10 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true + "dev": true, + "requires": { + "restore-cursor": "2.0.0" + } }, "cli-spinners": { "version": "1.0.0", @@ -533,33 +958,29 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.0.0.tgz", "integrity": "sha1-IeuR9Hs/ZWDwBNt3p2m0Zo2cVRg=", - "dev": true + "dev": true, + "requires": { + "slice-ansi": "0.0.4", + "string-width": "2.1.1" + } }, "co-with-promise": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co-with-promise/-/co-with-promise-4.6.0.tgz", "integrity": "sha1-QT59tvWJOmC5Qs9JLEvsk9tBWrc=", "dev": true, - "dependencies": { - "pinkie": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz", - "integrity": "sha1-Wkfyi6EBXQIBvae/DzWOR77Ix+Q=", - "dev": true - }, - "pinkie-promise": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz", - "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=", - "dev": true - } + "requires": { + "pinkie-promise": "1.0.0" } }, "code-excerpt": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.0.tgz", "integrity": "sha1-XcwIHoj0p+O1VOnjXX7yMtR/gUc=", - "dev": true + "dev": true, + "requires": { + "convert-to-spaces": "1.0.2" + } }, "code-point-at": { "version": "1.1.0", @@ -571,12 +992,15 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", - "dev": true + "dev": true, + "requires": { + "color-name": "1.1.3" + } }, "color-name": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.2.tgz", - "integrity": "sha1-XIq3K2S9IhXWF66VWeuxSEdc+Y0=", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "colors": { @@ -586,9 +1010,9 @@ "dev": true }, "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", "dev": true }, "common-path-prefix": { @@ -609,11 +1033,38 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "concordance": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/concordance/-/concordance-3.0.0.tgz", + "integrity": "sha512-CZBzJ3/l5QJjlZM20WY7+5GP5pMTw+1UEbThcpMw8/rojsi5sBCiD8ZbBLtD+jYpRGAkwuKuqk108c154V9eyQ==", + "dev": true, + "requires": { + "date-time": "2.1.0", + "esutils": "2.0.2", + "fast-diff": "1.1.1", + "function-name-support": "0.2.0", + "js-string-escape": "1.0.1", + "lodash.clonedeep": "4.5.0", + "lodash.flattendeep": "4.4.0", + "lodash.merge": "4.6.0", + "md5-hex": "2.0.0", + "semver": "5.3.0", + "well-known-symbols": "1.0.0" + } + }, "configstore": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.0.tgz", - "integrity": "sha1-Rd+QcHPibfoc9LLVL1tgVF6qEdE=", - "dev": true + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", + "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==", + "dev": true, + "requires": { + "dot-prop": "4.1.1", + "graceful-fs": "4.1.11", + "make-dir": "1.0.0", + "unique-string": "1.0.0", + "write-file-atomic": "2.1.0", + "xdg-basedir": "3.0.0" + } }, "convert-source-map": { "version": "1.5.0", @@ -631,7 +1082,11 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/core-assert/-/core-assert-0.2.1.tgz", "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=", - "dev": true + "dev": true, + "requires": { + "buf-compare": "1.0.1", + "is-error": "2.2.1" + } }, "core-js": { "version": "2.4.1", @@ -649,19 +1104,21 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "dev": true + "dev": true, + "requires": { + "capture-stack-trace": "1.0.0" + } }, "cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", - "dev": true - }, - "cross-spawn-async": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz", - "integrity": "sha1-hF/wwINKPe2dFg2sptOQkGuyiMw=", - "dev": true + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.2.14" + } }, "crypto-random-string": { "version": "1.0.0", @@ -673,26 +1130,27 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true + "dev": true, + "requires": { + "array-find-index": "1.0.2" + } }, "date-time": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", - "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=", - "dev": true + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz", + "integrity": "sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==", + "dev": true, + "requires": { + "time-zone": "1.0.0" + } }, "debug": { "version": "2.6.8", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", "dev": true, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } + "requires": { + "ms": "2.0.0" } }, "decamelize": { @@ -717,25 +1175,25 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true + "dev": true, + "requires": { + "repeating": "2.0.1" + } }, "diff": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", - "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", - "dev": true - }, - "diff-match-patch": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.0.tgz", - "integrity": "sha1-HMPIOkkNZ/ldkeOfatHy4Ia2MEg=", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.0.tgz", + "integrity": "sha512-w0XZubFWn0Adlsapj9EAWX0FqWdO4tz8kc3RiYdWLh4k/V8PTb6i0SMgXt0vRM3zyKnT8tKO7mUlieRQHIjMNg==", "dev": true }, "dot-prop": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.1.1.tgz", "integrity": "sha1-qEk/C3te7sglJbXHWH+n3nyoWcE=", - "dev": true + "dev": true, + "requires": { + "is-obj": "1.0.1" + } }, "duplexer3": { "version": "0.1.4", @@ -747,7 +1205,11 @@ "version": "0.6.2", "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-0.6.2.tgz", "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", - "dev": true + "dev": true, + "requires": { + "call-signature": "0.0.2", + "core-js": "2.4.1" + } }, "equal-length": { "version": "1.0.1", @@ -759,7 +1221,10 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } }, "es6-error": { "version": "4.0.2", @@ -777,19 +1242,28 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/espower-location-detector/-/espower-location-detector-1.0.0.tgz", "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", - "dev": true + "dev": true, + "requires": { + "is-url": "1.2.2", + "path-is-absolute": "1.0.1", + "source-map": "0.5.6", + "xtend": "4.0.1" + } }, "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", "dev": true }, "espurify": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.7.0.tgz", "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=", - "dev": true + "dev": true, + "requires": { + "core-js": "2.4.1" + } }, "estraverse": { "version": "4.2.0", @@ -804,34 +1278,61 @@ "dev": true }, "execa": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.5.1.tgz", - "integrity": "sha1-3j+4XLjW6RyFvLzrFkWBeFy1ezY=", - "dev": true + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } }, "expand-brackets": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } }, "expand-range": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true + "dev": true, + "requires": { + "fill-range": "2.2.3" + } }, "extglob": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "fast-diff": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.1.tgz", + "integrity": "sha1-CuoOTmBbaiGJ8Ok21Lf7rxt8/Zs=", "dev": true }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } }, "filename-regex": { "version": "2.0.1", @@ -843,19 +1344,34 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "dev": true + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } }, "find-cache-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "1.0.1", + "make-dir": "1.0.0", + "pkg-dir": "2.0.0" + } }, "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true + "dev": true, + "requires": { + "locate-path": "2.0.0" + } }, "fn-name": { "version": "2.0.1", @@ -873,7 +1389,10 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true + "dev": true, + "requires": { + "for-in": "1.0.2" + } }, "fs.realpath": { "version": "1.0.0", @@ -887,6 +1406,10 @@ "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", "dev": true, "optional": true, + "requires": { + "nan": "2.6.2", + "node-pre-gyp": "0.6.36" + }, "dependencies": { "abbrev": { "version": "1.1.0", @@ -898,7 +1421,11 @@ "version": "4.11.8", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } }, "ansi-regex": { "version": "2.1.1", @@ -915,7 +1442,11 @@ "version": "1.1.4", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } }, "asn1": { "version": "0.2.3", @@ -956,22 +1487,35 @@ "version": "1.0.1", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } }, "block-stream": { "version": "0.0.9", "bundled": true, - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3" + } }, "boom": { "version": "2.10.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "hoek": "2.16.3" + } }, "brace-expansion": { "version": "1.1.7", "bundled": true, - "dev": true + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } }, "buffer-shims": { "version": "1.0.0", @@ -998,7 +1542,10 @@ "combined-stream": { "version": "1.0.5", "bundled": true, - "dev": true + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } }, "concat-map": { "version": "0.0.1", @@ -1019,13 +1566,19 @@ "version": "2.0.5", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "boom": "2.10.1" + } }, "dashdash": { "version": "1.14.1", "bundled": true, "dev": true, "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -1039,7 +1592,10 @@ "version": "2.6.8", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "ms": "2.0.0" + } }, "deep-extend": { "version": "0.4.2", @@ -1062,7 +1618,10 @@ "version": "0.1.1", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "jsbn": "0.1.1" + } }, "extend": { "version": "3.0.1", @@ -1085,7 +1644,12 @@ "version": "2.1.4", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } }, "fs.realpath": { "version": "1.0.0", @@ -1095,25 +1659,49 @@ "fstream": { "version": "1.0.11", "bundled": true, - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } }, "fstream-ignore": { "version": "1.0.5", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } }, "gauge": { "version": "2.7.4", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } }, "getpass": { "version": "0.1.7", "bundled": true, "dev": true, "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -1126,7 +1714,15 @@ "glob": { "version": "7.1.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } }, "graceful-fs": { "version": "4.1.11", @@ -1143,7 +1739,11 @@ "version": "4.2.1", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } }, "has-unicode": { "version": "2.0.1", @@ -1155,7 +1755,13 @@ "version": "3.1.3", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } }, "hoek": { "version": "2.16.3", @@ -1166,12 +1772,21 @@ "version": "1.1.1", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } }, "inflight": { "version": "1.0.6", "bundled": true, - "dev": true + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } }, "inherits": { "version": "2.0.3", @@ -1187,7 +1802,10 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "is-typedarray": { "version": "1.0.0", @@ -1210,7 +1828,10 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "jsbn": "0.1.1" + } }, "jsbn": { "version": "0.1.1", @@ -1228,7 +1849,10 @@ "version": "1.0.1", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "jsonify": "0.0.0" + } }, "json-stringify-safe": { "version": "5.0.1", @@ -1247,6 +1871,12 @@ "bundled": true, "dev": true, "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -1264,12 +1894,18 @@ "mime-types": { "version": "2.1.15", "bundled": true, - "dev": true + "dev": true, + "requires": { + "mime-db": "1.27.0" + } }, "minimatch": { "version": "3.0.4", "bundled": true, - "dev": true + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } }, "minimist": { "version": "0.0.8", @@ -1279,7 +1915,10 @@ "mkdirp": { "version": "0.5.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "minimist": "0.0.8" + } }, "ms": { "version": "2.0.0", @@ -1291,19 +1930,40 @@ "version": "0.6.36", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } }, "nopt": { "version": "4.0.1", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } }, "npmlog": { "version": "4.1.0", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } }, "number-is-nan": { "version": "1.0.1", @@ -1325,7 +1985,10 @@ "once": { "version": "1.4.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "wrappy": "1.0.2" + } }, "os-homedir": { "version": "1.0.2", @@ -1343,7 +2006,11 @@ "version": "0.1.4", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } }, "path-is-absolute": { "version": "1.0.1", @@ -1378,6 +2045,12 @@ "bundled": true, "dev": true, "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, "dependencies": { "minimist": { "version": "1.2.0", @@ -1390,18 +2063,54 @@ "readable-stream": { "version": "2.2.9", "bundled": true, - "dev": true + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } }, "request": { "version": "2.81.0", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } }, "rimraf": { "version": "2.6.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "glob": "7.1.2" + } }, "safe-buffer": { "version": "5.0.1", @@ -1430,13 +2139,27 @@ "version": "1.0.9", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "hoek": "2.16.3" + } }, "sshpk": { "version": "1.13.0", "bundled": true, "dev": true, "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -1449,12 +2172,20 @@ "string_decoder": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } }, "string-width": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } }, "stringstream": { "version": "0.0.5", @@ -1465,7 +2196,10 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } }, "strip-json-comments": { "version": "2.0.1", @@ -1476,25 +2210,46 @@ "tar": { "version": "2.2.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } }, "tar-pack": { "version": "3.4.0", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } }, "tough-cookie": { "version": "2.3.2", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "punycode": "1.4.1" + } }, "tunnel-agent": { "version": "0.6.0", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } }, "tweetnacl": { "version": "0.14.5", @@ -1523,13 +2278,19 @@ "version": "1.3.6", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } }, "wide-align": { "version": "1.1.2", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "string-width": "1.0.2" + } }, "wrappy": { "version": "1.0.2", @@ -1538,6 +2299,12 @@ } } }, + "function-name-support": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/function-name-support/-/function-name-support-0.2.0.tgz", + "integrity": "sha1-VdO/qm6v1QWlD5vIH99XVkoLsHE=", + "dev": true + }, "get-port": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.1.0.tgz", @@ -1551,28 +2318,43 @@ "dev": true }, "get-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", - "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } }, "glob-base": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } }, "glob-parent": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true + "dev": true, + "requires": { + "is-glob": "2.0.1" + } }, "globals": { "version": "9.18.0", @@ -1584,20 +2366,49 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true + "dev": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + } + } }, "got": { "version": "6.7.1", "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", "dev": true, - "dependencies": { - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - } + "requires": { + "create-error-class": "3.0.2", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.0", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "unzip-response": "2.0.1", + "url-parse-lax": "1.0.0" } }, "graceful-fs": { @@ -1606,22 +2417,22 @@ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true - }, "handleable": { "version": "0.20.1", "resolved": "https://registry.npmjs.org/handleable/-/handleable-0.20.1.tgz", - "integrity": "sha1-L2Ac/bJyFIO8N3iiOfASRK2er/g=" + "integrity": "sha1-L2Ac/bJyFIO8N3iiOfASRK2er/g=", + "requires": { + "lodash.merge": "4.6.0" + } }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } }, "has-color": { "version": "0.1.7", @@ -1645,12 +2456,16 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } }, "hosted-git-info": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz", - "integrity": "sha1-AHa59GonBQbduq6lZJaJdGBhKmc=", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", "dev": true }, "hullabaloo-config-manager": { @@ -1658,13 +2473,21 @@ "resolved": "https://registry.npmjs.org/hullabaloo-config-manager/-/hullabaloo-config-manager-1.1.1.tgz", "integrity": "sha512-ztKnkZV0TmxnumCDHHgLGNiDnotu4EHCp9YMkznWuo4uTtCyJ+cu+RNcxUeXYKTllpvLFWnbfWry09yzszgg+A==", "dev": true, - "dependencies": { - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true - } + "requires": { + "dot-prop": "4.1.1", + "es6-error": "4.0.2", + "graceful-fs": "4.1.11", + "indent-string": "3.1.0", + "json5": "0.5.1", + "lodash.clonedeep": "4.5.0", + "lodash.clonedeepwith": "4.5.0", + "lodash.isequal": "4.5.0", + "lodash.merge": "4.6.0", + "md5-hex": "2.0.0", + "package-hash": "2.0.0", + "pkg-dir": "2.0.0", + "resolve-from": "3.0.0", + "safe-buffer": "5.1.1" } }, "ignore-by-default": { @@ -1679,6 +2502,16 @@ "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", "dev": true }, + "import-local": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-0.1.1.tgz", + "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=", + "dev": true, + "requires": { + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" + } + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -1695,7 +2528,11 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } }, "inherits": { "version": "2.0.3", @@ -1713,12 +2550,15 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", - "dev": true + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } }, "irregular-plurals": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.2.0.tgz", - "integrity": "sha1-OPKZg0uowAwwvpxVThNyaXUv86w=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.3.0.tgz", + "integrity": "sha512-njf5A+Mxb3kojuHd1DzISjjIl+XhyzovXEOyPPSzdQozq/Lf2tN27mOrAAsxEPZxpn6I4MGzs1oo9TxXxPFpaA==", "dev": true }, "is-arrayish": { @@ -1731,7 +2571,10 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true + "dev": true, + "requires": { + "binary-extensions": "1.8.0" + } }, "is-buffer": { "version": "1.1.5", @@ -1743,13 +2586,19 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } }, "is-ci": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", - "dev": true + "dev": true, + "requires": { + "ci-info": "1.0.0" + } }, "is-dotfile": { "version": "1.0.3", @@ -1761,7 +2610,10 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } }, "is-error": { "version": "2.2.1", @@ -1785,7 +2637,10 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "is-fullwidth-code-point": { "version": "2.0.0", @@ -1803,7 +2658,10 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } }, "is-npm": { "version": "1.0.0", @@ -1815,7 +2673,10 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true + "dev": true, + "requires": { + "kind-of": "3.2.2" + } }, "is-obj": { "version": "1.0.1", @@ -1827,7 +2688,10 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", - "dev": true + "dev": true, + "requires": { + "symbol-observable": "0.2.4" + } }, "is-plain-obj": { "version": "1.1.0", @@ -1899,67 +2763,32 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true - }, - "jest-diff": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-19.0.0.tgz", - "integrity": "sha1-0VY8/FbItgIymI+8BdTRbtkPBjw=", - "dev": true - }, - "jest-file-exists": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/jest-file-exists/-/jest-file-exists-19.0.0.tgz", - "integrity": "sha1-zKLlh6EeyS4kz+qz+KlNZX8/zrg=", - "dev": true - }, - "jest-matcher-utils": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-19.0.0.tgz", - "integrity": "sha1-Xs2bY1ZdKwAfYfv37Ex/U3lkVk0=", - "dev": true - }, - "jest-message-util": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-19.0.0.tgz", - "integrity": "sha1-cheWuJwOTXYWBvm6jLgoo7YkZBY=", - "dev": true - }, - "jest-mock": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-19.0.0.tgz", - "integrity": "sha1-ZwOGQelgerLOCOxKjLg6q7yJnQE=", - "dev": true - }, - "jest-snapshot": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-19.0.2.tgz", - "integrity": "sha1-nBshYhT3GHw4v9XHCx76sWsP9Qs=", - "dev": true - }, - "jest-util": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-19.0.2.tgz", - "integrity": "sha1-4KAjKiq55rK1Nmi9s1NMK1l37UE=", - "dev": true + "dev": true, + "requires": { + "isarray": "1.0.0" + } }, - "jest-validate": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-19.0.2.tgz", - "integrity": "sha1-3FNN9fEnjVtj3zKxQkHU2/ckTAw=", + "js-string-escape": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", + "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=", "dev": true }, "js-tokens": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz", - "integrity": "sha1-COnxMkhKLEWjCQfp3E1VZ7fxFNc=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true }, "js-yaml": { - "version": "3.8.4", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.4.tgz", - "integrity": "sha1-UgtFZPhlc7qWZir4Woyvp7S1pvY=", - "dev": true + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.9.0.tgz", + "integrity": "sha512-0LoUNELX4S+iofCT8f4uEHIiRBR+c2AINyC8qRWfC6QNruLtxVZRJaPcu/xwMgFIgDxF25tGHaDjvxzJCNE9yw==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } }, "jsesc": { "version": "0.5.0", @@ -1977,37 +2806,50 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } }, "last-line-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/last-line-stream/-/last-line-stream-1.0.0.tgz", "integrity": "sha1-0bZNafhv8kry0EiDos7uFFIKVgA=", - "dev": true + "dev": true, + "requires": { + "through2": "2.0.3" + } }, "latest-version": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", - "dev": true - }, - "leven": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", - "dev": true + "dev": true, + "requires": { + "package-json": "4.0.1" + } }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } }, "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } }, "lodash": { "version": "4.17.4", @@ -2065,13 +2907,20 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "dev": true + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } }, "loud-rejection": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true + "dev": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } }, "lowercase-keys": { "version": "1.0.0", @@ -2083,13 +2932,20 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", - "dev": true + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } }, "make-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.0.0.tgz", "integrity": "sha1-l6ARdR6R3YfPre9Ygy67BJNt6Xg=", - "dev": true + "dev": true, + "requires": { + "pify": "2.3.0" + } }, "map-obj": { "version": "1.0.1", @@ -2098,16 +2954,22 @@ "dev": true }, "matcher": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-0.1.2.tgz", - "integrity": "sha1-7yDL3mTCTFDMYa9bg+4LG4/wAQE=", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.0.0.tgz", + "integrity": "sha1-qvDEgW62m5IJRnQXViXzRmsOPhk=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } }, "md5-hex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-2.0.0.tgz", "integrity": "sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM=", - "dev": true + "dev": true, + "requires": { + "md5-o-matic": "0.1.1" + } }, "md5-o-matic": { "version": "0.1.1", @@ -2120,18 +2982,41 @@ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, "dependencies": { "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } }, "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } }, "minimist": { "version": "1.2.0", @@ -2143,31 +3028,66 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } }, "path-type": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", "dev": true }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } }, "read-pkg-up": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } }, "strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } } } }, @@ -2175,7 +3095,22 @@ "version": "2.3.11", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.3" + } }, "mimic-fn": { "version": "1.1.0", @@ -2187,7 +3122,10 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } }, "minimist": { "version": "0.0.8", @@ -2199,19 +3137,28 @@ "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true + "dev": true, + "requires": { + "minimist": "0.0.8" + } }, "ms": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz", - "integrity": "sha1-cIFVpeROM/X9D8U+gdDUCpG+H/8=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, "multimatch": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", - "dev": true + "dev": true, + "requires": { + "array-differ": "1.0.0", + "array-union": "1.0.2", + "arrify": "1.0.1", + "minimatch": "3.0.4" + } }, "nan": { "version": "2.6.2", @@ -2220,29 +3167,35 @@ "dev": true, "optional": true }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, "normalize-package-data": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz", - "integrity": "sha1-2Bntoqne29H/pWPqQHHZNngilbs=", - "dev": true + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.3.0", + "validate-npm-package-license": "3.0.1" + } }, "normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true + "dev": true, + "requires": { + "remove-trailing-separator": "1.0.2" + } }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true + "dev": true, + "requires": { + "path-key": "2.0.1" + } }, "number-is-nan": { "version": "1.0.1", @@ -2260,13 +3213,21 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } }, "observable-to-promise": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/observable-to-promise/-/observable-to-promise-0.5.0.tgz", "integrity": "sha1-yCjw8NxH6fhq+KSXfF1VB2znqR8=", "dev": true, + "requires": { + "is-observable": "0.2.0", + "symbol-observable": "1.0.4" + }, "dependencies": { "symbol-observable": { "version": "1.0.4", @@ -2280,18 +3241,24 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true + "dev": true, + "requires": { + "wrappy": "1.0.2" + } }, "onetime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } }, "option-chain": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/option-chain/-/option-chain-0.1.1.tgz", - "integrity": "sha1-6bgR4AbxwPVIAvKClb/Ilw+Nz70=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/option-chain/-/option-chain-1.0.0.tgz", + "integrity": "sha1-k41zvU4Xg/lI00AjZEraI2aeMPI=", "dev": true }, "os-homedir": { @@ -2322,31 +3289,55 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true + "dev": true, + "requires": { + "p-limit": "1.1.0" + } }, "package-hash": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-2.0.0.tgz", "integrity": "sha1-eK4ybIngWk2BO2hgGXevBcANKg0=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "lodash.flattendeep": "4.4.0", + "md5-hex": "2.0.0", + "release-zalgo": "1.0.0" + } }, "package-json": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", - "dev": true + "dev": true, + "requires": { + "got": "6.7.1", + "registry-auth-token": "3.3.1", + "registry-url": "3.1.0", + "semver": "5.3.0" + } }, "parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true + "dev": true, + "requires": { + "error-ex": "1.3.1" + } }, "parse-ms": { "version": "1.0.1", @@ -2382,7 +3373,10 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true + "dev": true, + "requires": { + "pify": "2.3.0" + } }, "pify": { "version": "2.3.0", @@ -2391,48 +3385,47 @@ "dev": true }, "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz", + "integrity": "sha1-Wkfyi6EBXQIBvae/DzWOR77Ix+Q=", "dev": true }, "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz", + "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=", + "dev": true, + "requires": { + "pinkie": "1.0.0" + } }, "pkg-conf": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.0.0.tgz", "integrity": "sha1-BxyHZQQDvM+5xif1h1G/5HwGcnk=", - "dev": true + "dev": true, + "requires": { + "find-up": "2.1.0", + "load-json-file": "2.0.0" + } }, "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "dev": true, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true - } + "requires": { + "find-up": "2.1.0" } }, "plur": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", - "dev": true + "dev": true, + "requires": { + "irregular-plurals": "1.3.0" + } }, "prepend-http": { "version": "1.0.4", @@ -2446,25 +3439,16 @@ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", "dev": true }, - "pretty-format": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-19.0.0.tgz", - "integrity": "sha1-VlMNMqy5ij+khRxOK503tCBoTIQ=", - "dev": true, - "dependencies": { - "ansi-styles": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", - "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=", - "dev": true - } - } - }, "pretty-ms": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-2.1.0.tgz", "integrity": "sha1-QlfCVt8/sLRR1q/6qwIYhBJpgdw=", "dev": true, + "requires": { + "is-finite": "1.0.2", + "parse-ms": "1.0.1", + "plur": "1.0.0" + }, "dependencies": { "plur": { "version": "1.0.0", @@ -2497,18 +3481,28 @@ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, "dependencies": { "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, + "requires": { + "kind-of": "3.2.2" + }, "dependencies": { "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } } } }, @@ -2516,7 +3510,10 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } } } }, @@ -2525,6 +3522,12 @@ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", "dev": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, "dependencies": { "minimist": { "version": "1.2.0", @@ -2538,37 +3541,68 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } }, "read-pkg-up": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } }, "readable-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.1.tgz", - "integrity": "sha512-u6cxIvtbZcjq2HH71Zc/SRBUl7vbv62szIqmqqGpK3HY5J1c0kR/LUzKUpeoFgMzapvVAlBD+QY56ilWmHi4Nw==", - "dev": true + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } }, "readdirp": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.3", + "set-immediate-shim": "1.0.1" + } }, "redent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", "dev": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + }, "dependencies": { "indent-string": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true + "dev": true, + "requires": { + "repeating": "2.0.1" + } } } }, @@ -2588,25 +3622,41 @@ "version": "0.4.3", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", - "dev": true + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3", + "is-primitive": "2.0.0" + } }, "regexpu-core": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", - "dev": true + "dev": true, + "requires": { + "regenerate": "1.3.2", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } }, "registry-auth-token": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", - "dev": true + "dev": true, + "requires": { + "rc": "1.2.1", + "safe-buffer": "5.1.1" + } }, "registry-url": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "dev": true + "dev": true, + "requires": { + "rc": "1.2.1" + } }, "regjsgen": { "version": "0.2.0", @@ -2618,13 +3668,19 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "dev": true + "dev": true, + "requires": { + "jsesc": "0.5.0" + } }, "release-zalgo": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", - "dev": true + "dev": true, + "requires": { + "es6-error": "4.0.2" + } }, "remove-trailing-separator": { "version": "1.0.2", @@ -2648,7 +3704,10 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true + "dev": true, + "requires": { + "is-finite": "1.0.2" + } }, "require-precompiled": { "version": "0.1.0", @@ -2660,20 +3719,18 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", - "dev": true + "dev": true, + "requires": { + "path-parse": "1.0.5" + } }, "resolve-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-1.0.0.tgz", - "integrity": "sha1-Tq7qQe0EDRcCRX32SkKysH0kb58=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", "dev": true, - "dependencies": { - "resolve-from": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", - "dev": true - } + "requires": { + "resolve-from": "3.0.0" } }, "resolve-from": { @@ -2686,12 +3743,16 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true + "dev": true, + "requires": { + "onetime": "2.0.1", + "signal-exit": "3.0.2" + } }, "safe-buffer": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.0.tgz", - "integrity": "sha512-aSLEDudu6OoRr/2rU609gRmnYboRLxgDG1z9o2Q0os7236FwvcqIOO8r8U5JUEwivZOhDaKlFO4SbPTJYyBEyQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", "dev": true }, "semver": { @@ -2704,7 +3765,10 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", - "dev": true + "dev": true, + "requires": { + "semver": "5.3.0" + } }, "set-immediate-shim": { "version": "1.0.1", @@ -2712,6 +3776,21 @@ "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", "dev": true }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", @@ -2737,10 +3816,13 @@ "dev": true }, "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "dev": true, + "requires": { + "is-plain-obj": "1.1.0" + } }, "source-map": { "version": "0.5.6", @@ -2752,13 +3834,19 @@ "version": "0.4.15", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", - "dev": true + "dev": true, + "requires": { + "source-map": "0.5.6" + } }, "spdx-correct": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", - "dev": true + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } }, "spdx-expression-parse": { "version": "1.0.4", @@ -2785,30 +3873,40 @@ "dev": true }, "string_decoder": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.2.tgz", - "integrity": "sha1-sp4fThEl+pehA4K4pTNze3SR4Xk=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, - "dependencies": { - "safe-buffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", - "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", - "dev": true - } + "requires": { + "safe-buffer": "5.1.1" } }, "string-width": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz", - "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=", - "dev": true + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + } + } }, "strip-bom": { "version": "3.0.0", @@ -2820,7 +3918,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", - "dev": true + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } }, "strip-eof": { "version": "1.0.0", @@ -2832,7 +3933,10 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } }, "strip-json-comments": { "version": "2.0.1", @@ -2841,17 +3945,12 @@ "dev": true }, "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.0.tgz", + "integrity": "sha512-Ts0Mu/A1S1aZxEJNG88I4Oc9rcZSBFNac5e27yh4j2mqbhZSSzR1Ah79EYwSn9Zuh7lrlGD2cVGzw1RKGzyLSg==", "dev": true, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - } + "requires": { + "has-flag": "2.0.0" } }, "symbol-observable": { @@ -2861,29 +3960,12 @@ "dev": true }, "term-size": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-0.1.1.tgz", - "integrity": "sha1-hzYLljlsq1dgljcUzaDQy+7K2co=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", "dev": true, - "dependencies": { - "execa": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.4.0.tgz", - "integrity": "sha1-TrZGejaglfq7KXD/nV4/t7zm68M=", - "dev": true - }, - "npm-run-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-1.0.0.tgz", - "integrity": "sha1-9cMr9ZX+ga6Sfa7FLoL4sACsPI8=", - "dev": true - }, - "path-key": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-1.0.0.tgz", - "integrity": "sha1-XVPVeAGWRsDWiADbThRua9wqx68=", - "dev": true - } + "requires": { + "execa": "0.7.0" } }, "text-table": { @@ -2896,13 +3978,23 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true + "dev": true, + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + } }, "time-require": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/time-require/-/time-require-0.1.2.tgz", "integrity": "sha1-+eEss3D8JgXhFARYK6VO9corLZg=", "dev": true, + "requires": { + "chalk": "0.4.0", + "date-time": "0.1.1", + "pretty-ms": "0.2.2", + "text-table": "0.2.0" + }, "dependencies": { "ansi-styles": { "version": "1.0.0", @@ -2914,6 +4006,17 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "dev": true, + "requires": { + "ansi-styles": "1.0.0", + "has-color": "0.1.7", + "strip-ansi": "0.1.1" + } + }, + "date-time": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", + "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=", "dev": true }, "parse-ms": { @@ -2926,7 +4029,10 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-0.2.2.tgz", "integrity": "sha1-2oeaaC/zOjcBEEbxPWJ/Z8c7hPY=", - "dev": true + "dev": true, + "requires": { + "parse-ms": "0.1.2" + } }, "strip-ansi": { "version": "0.1.1", @@ -2936,6 +4042,12 @@ } } }, + "time-zone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", + "integrity": "sha1-mcW/VZWJZq9tBtg73zgA3IL67F0=", + "dev": true + }, "timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", @@ -2954,6 +4066,12 @@ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", "dev": true }, + "trim-off-newlines": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", + "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", + "dev": true + }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", @@ -2967,16 +4085,31 @@ "dev": true }, "tslint": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.4.3.tgz", - "integrity": "sha1-dhyEArgONHt3M6BDkKdXslNYBGc=", - "dev": true + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.5.0.tgz", + "integrity": "sha1-EOjas+MGH6YelELozuOYKs8gpqo=", + "dev": true, + "requires": { + "babel-code-frame": "6.22.0", + "colors": "1.1.2", + "commander": "2.11.0", + "diff": "3.3.0", + "glob": "7.1.2", + "minimatch": "3.0.4", + "resolve": "1.3.3", + "semver": "5.3.0", + "tslib": "1.7.1", + "tsutils": "2.7.1" + } }, "tsutils": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.4.0.tgz", - "integrity": "sha1-rUzm26Dlo+2934Ymt8oEB4IYn+o=", - "dev": true + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.7.1.tgz", + "integrity": "sha1-QRoOlGZSWisoaSYKVWINcpIVXiQ=", + "dev": true, + "requires": { + "tslib": "1.7.1" + } }, "typeable": { "version": "2.0.1", @@ -2984,9 +4117,9 @@ "integrity": "sha1-cl6nFtN7oEcsuWfAxmxIsySfiOs=" }, "typescript": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.3.4.tgz", - "integrity": "sha1-PTgyGCgjHkNPKHUUlZw3qCtin0I=", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.4.2.tgz", + "integrity": "sha1-+DlfhdRZJ2BnyYiqQYN6j4KHCEQ=", "dev": true }, "uid2": { @@ -2999,13 +4132,21 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", - "dev": true + "dev": true, + "requires": { + "crypto-random-string": "1.0.0" + } }, "unique-temp-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz", "integrity": "sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U=", - "dev": true + "dev": true, + "requires": { + "mkdirp": "0.5.1", + "os-tmpdir": "1.0.2", + "uid2": "0.0.3" + } }, "unzip-response": { "version": "2.0.1", @@ -3017,13 +4158,62 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.2.0.tgz", "integrity": "sha1-G1g3z5DAc22IYncytmHBOPht5y8=", - "dev": true + "dev": true, + "requires": { + "boxen": "1.2.0", + "chalk": "1.1.3", + "configstore": "3.1.1", + "import-lazy": "2.1.0", + "is-npm": "1.0.0", + "latest-version": "3.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } }, "url-parse-lax": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "dev": true + "dev": true, + "requires": { + "prepend-http": "1.0.4" + } }, "util-deprecate": { "version": "1.0.2", @@ -3034,37 +4224,74 @@ "validatable": { "version": "0.24.1", "resolved": "https://registry.npmjs.org/validatable/-/validatable-0.24.1.tgz", - "integrity": "sha1-m3HEa1+2M+gjXPXqa7aQcNH90U4=" + "integrity": "sha1-m3HEa1+2M+gjXPXqa7aQcNH90U4=", + "requires": { + "lodash.merge": "4.6.0", + "typeable": "2.0.1" + } }, "validate-npm-package-license": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "well-known-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-1.0.0.tgz", + "integrity": "sha1-c8eK6Bp3Jqj6WY4ogIAcixYiVRg=", "dev": true }, "which": { "version": "1.2.14", "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", - "dev": true + "dev": true, + "requires": { + "isexe": "2.0.0" + } }, "widest-line": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", "dev": true, + "requires": { + "string-width": "1.0.2" + }, "dependencies": { "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } } } }, @@ -3078,27 +4305,53 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.1.0.tgz", "integrity": "sha512-0TZ20a+xcIl4u0+Mj5xDH2yOWdmQiXlKf9Hm+TgDXjTMsEYb+gDrmb8e8UNAzMCitX8NBqG4Z/FUQIyzv/R1JQ==", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } }, "write-json-file": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.2.0.tgz", "integrity": "sha1-UYYlBruzthnu+reFnx/WxtBTCHY=", "dev": true, + "requires": { + "detect-indent": "5.0.0", + "graceful-fs": "4.1.11", + "make-dir": "1.0.0", + "pify": "2.3.0", + "sort-keys": "1.1.2", + "write-file-atomic": "2.1.0" + }, "dependencies": { "detect-indent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", "dev": true + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "1.1.0" + } } } }, "write-pkg": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-2.1.0.tgz", - "integrity": "sha1-NTqkTDnEjCFED1wIzmq9RhQcnAg=", - "dev": true + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-3.1.0.tgz", + "integrity": "sha1-AwqZlMyZk9JbTnWp8aGSNgcpHOk=", + "dev": true, + "requires": { + "sort-keys": "2.0.0", + "write-json-file": "2.2.0" + } }, "xdg-basedir": { "version": "3.0.0", diff --git a/package.json b/package.json index 073aba6..7fec917 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.8.4", + "version": "1.8.5", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -68,10 +68,10 @@ "author": "Kristijan Sedlak (Xpepermint)", "license": "MIT", "devDependencies": { - "@types/node": "^7.0.14", - "ava": "^0.19.1", - "tslint": "^5.1.0", - "typescript": "^2.2.2" + "@types/node": "^8.0.14", + "ava": "^0.21.0", + "tslint": "^5.5.0", + "typescript": "^2.4.2" }, "dependencies": { "handleable": "^0.20.1", diff --git a/src/index.ts b/src/index.ts index 82434b6..a63048d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,8 +1,3 @@ -import {Model} from './models'; -import {Field} from './fields'; - -/* -* Exposing public classes. -*/ - -export {Model, Field}; +export * from './models'; +export * from './fields'; +export * from './utils'; From 4e7eaf98fb3c5819992d64175c947ac24bf2e753 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 23 Jul 2017 18:41:16 +0200 Subject: [PATCH 173/219] serializable reflects enumerable object configuration key --- README.md | 4 ++-- dist/src/models.js | 2 +- dist/src/models.js.map | 2 +- package.json | 2 +- src/models.ts | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index ff7b809..00c1769 100644 --- a/README.md +++ b/README.md @@ -389,7 +389,7 @@ class User extends Model { this.defineField('name', { type: 'String', // field type casting - serializable: true, // when set to `false` the field is not serializable + serializable: true, // when set to `false` the field is not enumerable get (v) { return v }, // custom getter set (v) { return v }, // custom setter validate: [ // value validator recipes @@ -473,7 +473,7 @@ model.collectErrors(); // => {path: ['name'], errors: [{validator: 'absence', me | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ | name | String | Yes | - | Property name. -| serializable | Boolean | No | true | When set to `false` the field is not serializable. +| serializable | Boolean | No | true | When set to `false` the field is not enumerable and thus not included into serialized object. | type | String, Model | No | - | Data type (pass a Model to create a nested structure; check [typeable.js](https://github.com/xpepermint/validatablejs) for more). | get | Function | No | - | Custom getter. | set | Function | No | - | Custom setter. diff --git a/dist/src/models.js b/dist/src/models.js index 2ff81c4..738a784 100644 --- a/dist/src/models.js +++ b/dist/src/models.js @@ -118,7 +118,7 @@ var Model = (function () { Object.defineProperty(this, name, { get: function () { return field.value; }, set: function (v) { return field.value = v; }, - enumerable: true, + enumerable: typeof recipe.serializable !== "undefined" ? recipe.serializable : true, configurable: true }); this._fields[name] = field; diff --git a/dist/src/models.js.map b/dist/src/models.js.map index a7877df..95af735 100644 --- a/dist/src/models.js.map +++ b/dist/src/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 7fec917..771ab72 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.8.5", + "version": "1.9.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", diff --git a/src/models.ts b/src/models.ts index 869b73c..6050413 100644 --- a/src/models.ts +++ b/src/models.ts @@ -160,7 +160,7 @@ export abstract class Model { Object.defineProperty(this, name, { get: () => field.value, set: (v) => field.value = v, - enumerable: true, + enumerable: typeof recipe.serializable !== "undefined" ? recipe.serializable : true, configurable: true }); From 3036d4673515136862795fe687dfcfa6bf0272c8 Mon Sep 17 00:00:00 2001 From: xpeper Date: Wed, 6 Sep 2017 19:54:53 +0200 Subject: [PATCH 174/219] documentation upgrade --- README.md | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 00c1769..a0e906a 100644 --- a/README.md +++ b/README.md @@ -776,8 +776,8 @@ catch (e) { | ['Float'] | An array of float numbers. | 'Date' | A date. | ['Date'] | An array of dates. -| Function | Custom type. -| [Function] | Custom type. + +**NOTE:** Field data type should always represent a `value`. This means that you should never assign a `function` to a field. If you need to handle dynamic field values, please use [field value transformations](#field-value-transformation) instead. You can also define your own data type by using the `defineType` method. ### Built-in Validators diff --git a/package.json b/package.json index 771ab72..7210b92 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.9.0", + "version": "1.9.1", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", From 3db9b6efcbf25cca937622907d10c43e9028c207 Mon Sep 17 00:00:00 2001 From: xpeper Date: Fri, 22 Sep 2017 13:13:14 +0200 Subject: [PATCH 175/219] dependencies --- package-lock.json | 576 +++++++++++++++++++++++----------------------- package.json | 16 +- 2 files changed, 297 insertions(+), 295 deletions(-) diff --git a/package-lock.json b/package-lock.json index 47ad573..782dfcd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.8.5", + "version": "1.9.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -21,7 +21,7 @@ "babel-plugin-transform-async-to-generator": "6.24.1", "babel-plugin-transform-es2015-destructuring": "6.23.0", "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", "babel-plugin-transform-es2015-parameters": "6.24.1", "babel-plugin-transform-es2015-spread": "6.22.0", "babel-plugin-transform-es2015-sticky-regex": "6.24.1", @@ -81,9 +81,9 @@ } }, "@types/node": { - "version": "8.0.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.14.tgz", - "integrity": "sha512-lrtgE/5FeTdcuxgsDbLUIFJ33dTp4TkbKkTDZt/ueUMeqmGYqJRQd908q5Yj9EzzWSMonEhMr1q/CQlgVGEt4w==", + "version": "8.0.29", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.29.tgz", + "integrity": "sha512-C5h3jl321dtwQJJAl6poPm7YmDneEv1cpRMZxJ7vlH03XN6OQix4LxTHBBZBj/aPVhlO2dO5fbfgdxYkn2ArKw==", "dev": true }, "ansi-align": { @@ -108,22 +108,22 @@ "dev": true }, "ansi-styles": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", - "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { "color-convert": "1.9.0" } }, "anymatch": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", - "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "dev": true, "requires": { - "arrify": "1.0.1", - "micromatch": "2.3.11" + "micromatch": "2.3.11", + "normalize-path": "2.1.1" } }, "argparse": { @@ -208,9 +208,9 @@ "dev": true }, "ava": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/ava/-/ava-0.21.0.tgz", - "integrity": "sha512-+ZjahyjqyzkPLlFZe2OoLmiE3aaQ2jK5h74wrkuX5I+J6LpNAPoQ8X/EhqEtKEjuWwmniLAjnVjZ7OY8rWdJwA==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/ava/-/ava-0.22.0.tgz", + "integrity": "sha512-dYxvVDL9CeIcgaQ/FojaBVaL/rnIsXdgPVliDOMe1O5nSsIZEsPYDIzmZ1KnO/cuxeQx1PQbtW6qziiEwQZusg==", "dev": true, "requires": { "@ava/babel-preset-stage-4": "1.1.0", @@ -218,23 +218,23 @@ "@ava/write-file-atomic": "2.2.0", "@concordance/react": "1.0.0", "ansi-escapes": "2.0.0", - "ansi-styles": "3.1.0", + "ansi-styles": "3.2.0", "arr-flatten": "1.1.0", "array-union": "1.0.2", "array-uniq": "1.0.3", "arrify": "1.0.1", "auto-bind": "1.1.0", "ava-init": "0.2.1", - "babel-core": "6.25.0", + "babel-core": "6.26.0", "bluebird": "3.5.0", "caching-transform": "1.0.1", - "chalk": "2.0.1", + "chalk": "2.1.0", "chokidar": "1.7.0", "clean-stack": "1.3.0", "clean-yaml-object": "0.1.0", "cli-cursor": "2.1.0", - "cli-spinners": "1.0.0", - "cli-truncate": "1.0.0", + "cli-spinners": "1.0.1", + "cli-truncate": "1.1.0", "co-with-promise": "4.6.0", "code-excerpt": "2.1.0", "common-path-prefix": "1.0.0", @@ -243,25 +243,25 @@ "core-assert": "0.2.1", "currently-unhandled": "0.4.1", "debug": "2.6.8", - "dot-prop": "4.1.1", + "dot-prop": "4.2.0", "empower-core": "0.6.2", "equal-length": "1.0.1", "figures": "2.0.0", "find-cache-dir": "1.0.0", "fn-name": "2.0.1", - "get-port": "3.1.0", + "get-port": "3.2.0", "globby": "6.1.0", "has-flag": "2.0.0", "hullabaloo-config-manager": "1.1.1", "ignore-by-default": "1.0.1", "import-local": "0.1.1", - "indent-string": "3.1.0", + "indent-string": "3.2.0", "is-ci": "1.0.10", "is-generator-fn": "1.0.0", "is-obj": "1.0.1", "is-observable": "0.2.0", "is-promise": "2.1.0", - "js-yaml": "3.9.0", + "js-yaml": "3.10.0", "last-line-stream": "1.0.0", "lodash.clonedeepwith": "4.5.0", "lodash.debounce": "4.0.8", @@ -284,11 +284,11 @@ "resolve-cwd": "2.0.0", "safe-buffer": "5.1.1", "slash": "1.0.0", - "source-map-support": "0.4.15", + "source-map-support": "0.4.18", "stack-utils": "1.0.1", "strip-ansi": "4.0.0", "strip-bom-buf": "1.0.0", - "supports-color": "4.2.0", + "supports-color": "4.4.0", "time-require": "0.1.2", "trim-off-newlines": "1.0.1", "unique-temp-dir": "1.0.0", @@ -309,9 +309,9 @@ } }, "babel-code-frame": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", - "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { "chalk": "1.1.3", @@ -356,21 +356,21 @@ } }, "babel-core": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", - "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", "dev": true, "requires": { - "babel-code-frame": "6.22.0", - "babel-generator": "6.25.0", + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.0", "babel-helpers": "6.24.1", "babel-messages": "6.23.0", - "babel-register": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", "convert-source-map": "1.5.0", "debug": "2.6.8", "json5": "0.5.1", @@ -379,22 +379,22 @@ "path-is-absolute": "1.0.1", "private": "0.1.7", "slash": "1.0.0", - "source-map": "0.5.6" + "source-map": "0.5.7" } }, "babel-generator": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", - "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", "dev": true, "requires": { "babel-messages": "6.23.0", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", "detect-indent": "4.0.0", "jsesc": "1.3.0", "lodash": "4.17.4", - "source-map": "0.5.6", + "source-map": "0.5.7", "trim-right": "1.0.1" }, "dependencies": { @@ -413,8 +413,8 @@ "dev": true, "requires": { "babel-helper-explode-assignable-expression": "6.24.1", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-call-delegate": { @@ -424,9 +424,9 @@ "dev": true, "requires": { "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.23.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-explode-assignable-expression": { @@ -435,9 +435,9 @@ "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", "dev": true, "requires": { - "babel-runtime": "6.23.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-function-name": { @@ -447,10 +447,10 @@ "dev": true, "requires": { "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-get-function-arity": { @@ -459,8 +459,8 @@ "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", "dev": true, "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-hoist-variables": { @@ -469,18 +469,18 @@ "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", "dev": true, "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helper-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz", - "integrity": "sha1-024i+rEAjXnYhkjjIRaGgShFbOg=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", "dev": true, "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", "lodash": "4.17.4" } }, @@ -491,10 +491,10 @@ "dev": true, "requires": { "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-helpers": { @@ -503,8 +503,8 @@ "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", "dev": true, "requires": { - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" } }, "babel-messages": { @@ -513,7 +513,7 @@ "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "dev": true, "requires": { - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-check-es2015-constants": { @@ -522,7 +522,7 @@ "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", "dev": true, "requires": { - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-espower": { @@ -531,10 +531,10 @@ "integrity": "sha1-VRa4/NsmyfDh2BYHSfbkxl5xJx4=", "dev": true, "requires": { - "babel-generator": "6.25.0", - "babylon": "6.17.4", + "babel-generator": "6.26.0", + "babylon": "6.18.0", "call-matcher": "1.0.1", - "core-js": "2.4.1", + "core-js": "2.5.1", "espower-location-detector": "1.0.0", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -566,7 +566,7 @@ "requires": { "babel-helper-remap-async-to-generator": "6.24.1", "babel-plugin-syntax-async-functions": "6.13.0", - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-destructuring": { @@ -575,7 +575,7 @@ "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", "dev": true, "requires": { - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-function-name": { @@ -585,20 +585,20 @@ "dev": true, "requires": { "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", - "integrity": "sha1-0+MQtA72ZKNmIiAAl8bUQCmPK/4=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", "dev": true, "requires": { "babel-plugin-transform-strict-mode": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-parameters": { @@ -609,10 +609,10 @@ "requires": { "babel-helper-call-delegate": "6.24.1", "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-spread": { @@ -621,7 +621,7 @@ "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", "dev": true, "requires": { - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-es2015-sticky-regex": { @@ -630,9 +630,9 @@ "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", "dev": true, "requires": { - "babel-helper-regex": "6.24.1", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-plugin-transform-es2015-unicode-regex": { @@ -641,8 +641,8 @@ "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", "dev": true, "requires": { - "babel-helper-regex": "6.24.1", - "babel-runtime": "6.23.0", + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", "regexpu-core": "2.0.0" } }, @@ -654,7 +654,7 @@ "requires": { "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", "babel-plugin-syntax-exponentiation-operator": "6.13.0", - "babel-runtime": "6.23.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-strict-mode": { @@ -663,59 +663,59 @@ "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", "dev": true, "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" } }, "babel-register": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", - "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", "dev": true, "requires": { - "babel-core": "6.25.0", - "babel-runtime": "6.23.0", - "core-js": "2.4.1", + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.1", "home-or-tmp": "2.0.0", "lodash": "4.17.4", "mkdirp": "0.5.1", - "source-map-support": "0.4.15" + "source-map-support": "0.4.18" } }, "babel-runtime": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "core-js": "2.4.1", - "regenerator-runtime": "0.10.5" + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" } }, "babel-template": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", - "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "dev": true, "requires": { - "babel-runtime": "6.23.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", "lodash": "4.17.4" } }, "babel-traverse": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", - "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "dev": true, "requires": { - "babel-code-frame": "6.22.0", + "babel-code-frame": "6.26.0", "babel-messages": "6.23.0", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", "debug": "2.6.8", "globals": "9.18.0", "invariant": "2.2.2", @@ -723,21 +723,21 @@ } }, "babel-types": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", - "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "dev": true, "requires": { - "babel-runtime": "6.23.0", + "babel-runtime": "6.26.0", "esutils": "2.0.2", "lodash": "4.17.4", "to-fast-properties": "1.0.3" } }, "babylon": { - "version": "6.17.4", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", - "integrity": "sha512-kChlV+0SXkjE0vUn9OZ7pBMWRFd8uq3mZe8x1K6jhuNcAFAtEnjchFAqB+dYEXKyd+JpT6eppRR78QAr5gTsUw==", + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true }, "balanced-match": { @@ -747,9 +747,9 @@ "dev": true }, "binary-extensions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", - "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz", + "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=", "dev": true }, "bluebird": { @@ -759,14 +759,14 @@ "dev": true }, "boxen": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.2.0.tgz", - "integrity": "sha512-tfKK3nq0qXXOxvXEYW1k1XNRrDuQzO2oFPvLD3Fs1I58n0leuTNlftBmu3seUCyZvDfiqgRaxlqZs9WJAbSA7g==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.2.1.tgz", + "integrity": "sha1-DxHn/jRO25OXl3/BPt5/ZNlWSB0=", "dev": true, "requires": { "ansi-align": "2.0.0", "camelcase": "4.1.0", - "chalk": "2.0.1", + "chalk": "2.1.0", "cli-boxes": "1.0.0", "string-width": "2.1.1", "term-size": "1.2.0", @@ -853,7 +853,7 @@ "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", "dev": true, "requires": { - "core-js": "2.4.1", + "core-js": "2.5.1", "deep-equal": "1.0.1", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -888,14 +888,14 @@ "dev": true }, "chalk": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", - "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", + "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", "dev": true, "requires": { - "ansi-styles": "3.1.0", + "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "supports-color": "4.2.0" + "supports-color": "4.4.0" } }, "chokidar": { @@ -904,7 +904,7 @@ "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", "dev": true, "requires": { - "anymatch": "1.3.0", + "anymatch": "1.3.2", "async-each": "1.0.1", "fsevents": "1.1.2", "glob-parent": "2.0.0", @@ -916,9 +916,9 @@ } }, "ci-info": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.0.0.tgz", - "integrity": "sha1-3FKF8rTiUYIWg2gcOBwziPRuxTQ=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.1.tgz", + "integrity": "sha512-vHDDF/bP9RYpTWtUhpJRhCFdvvp3iDWvEbuDbWgvjUrNGV1MXJrE0MPcwGtEled04m61iwdBLUIHZtDgzWS4ZQ==", "dev": true }, "clean-stack": { @@ -949,18 +949,18 @@ } }, "cli-spinners": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.0.0.tgz", - "integrity": "sha1-75h+09SDkaw9q5GAtAanQhgNbmo=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.0.1.tgz", + "integrity": "sha1-JnUyHBAPGVsCh3rEmemRH6NLl4M=", "dev": true }, "cli-truncate": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.0.0.tgz", - "integrity": "sha1-IeuR9Hs/ZWDwBNt3p2m0Zo2cVRg=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.1.0.tgz", + "integrity": "sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA==", "dev": true, "requires": { - "slice-ansi": "0.0.4", + "slice-ansi": "1.0.0", "string-width": "2.1.1" } }, @@ -1041,14 +1041,14 @@ "requires": { "date-time": "2.1.0", "esutils": "2.0.2", - "fast-diff": "1.1.1", + "fast-diff": "1.1.2", "function-name-support": "0.2.0", "js-string-escape": "1.0.1", "lodash.clonedeep": "4.5.0", "lodash.flattendeep": "4.4.0", "lodash.merge": "4.6.0", "md5-hex": "2.0.0", - "semver": "5.3.0", + "semver": "5.4.1", "well-known-symbols": "1.0.0" } }, @@ -1058,11 +1058,11 @@ "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==", "dev": true, "requires": { - "dot-prop": "4.1.1", + "dot-prop": "4.2.0", "graceful-fs": "4.1.11", "make-dir": "1.0.0", "unique-string": "1.0.0", - "write-file-atomic": "2.1.0", + "write-file-atomic": "2.3.0", "xdg-basedir": "3.0.0" } }, @@ -1089,9 +1089,9 @@ } }, "core-js": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=", "dev": true }, "core-util-is": { @@ -1117,7 +1117,7 @@ "requires": { "lru-cache": "4.1.1", "shebang-command": "1.2.0", - "which": "1.2.14" + "which": "1.3.0" } }, "crypto-random-string": { @@ -1181,15 +1181,15 @@ } }, "diff": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.0.tgz", - "integrity": "sha512-w0XZubFWn0Adlsapj9EAWX0FqWdO4tz8kc3RiYdWLh4k/V8PTb6i0SMgXt0vRM3zyKnT8tKO7mUlieRQHIjMNg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", + "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==", "dev": true }, "dot-prop": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.1.1.tgz", - "integrity": "sha1-qEk/C3te7sglJbXHWH+n3nyoWcE=", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", "dev": true, "requires": { "is-obj": "1.0.1" @@ -1208,7 +1208,7 @@ "dev": true, "requires": { "call-signature": "0.0.2", - "core-js": "2.4.1" + "core-js": "2.5.1" } }, "equal-length": { @@ -1246,7 +1246,7 @@ "requires": { "is-url": "1.2.2", "path-is-absolute": "1.0.1", - "source-map": "0.5.6", + "source-map": "0.5.7", "xtend": "4.0.1" } }, @@ -1262,7 +1262,7 @@ "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=", "dev": true, "requires": { - "core-js": "2.4.1" + "core-js": "2.5.1" } }, "estraverse": { @@ -1320,9 +1320,9 @@ } }, "fast-diff": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.1.tgz", - "integrity": "sha1-CuoOTmBbaiGJ8Ok21Lf7rxt8/Zs=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", + "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", "dev": true }, "figures": { @@ -1407,7 +1407,7 @@ "dev": true, "optional": true, "requires": { - "nan": "2.6.2", + "nan": "2.7.0", "node-pre-gyp": "0.6.36" }, "dependencies": { @@ -2169,14 +2169,6 @@ } } }, - "string_decoder": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, "string-width": { "version": "1.0.2", "bundled": true, @@ -2187,6 +2179,14 @@ "strip-ansi": "3.0.1" } }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, "stringstream": { "version": "0.0.5", "bundled": true, @@ -2306,9 +2306,9 @@ "dev": true }, "get-port": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.1.0.tgz", - "integrity": "sha1-7wGxioTKZIaXD/meVERhQac//T4=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", "dev": true }, "get-stdin": { @@ -2418,9 +2418,9 @@ "dev": true }, "handleable": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/handleable/-/handleable-0.20.1.tgz", - "integrity": "sha1-L2Ac/bJyFIO8N3iiOfASRK2er/g=", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/handleable/-/handleable-0.20.2.tgz", + "integrity": "sha512-9crf8n7AU3mcaqB4/iHPEA3T7SYo/LVdqeq+Fm1Q0RVcAGb1NkqibQNrRiptynTmbxT/Ulkn0R3oSqrvrUZQww==", "requires": { "lodash.merge": "4.6.0" } @@ -2474,10 +2474,10 @@ "integrity": "sha512-ztKnkZV0TmxnumCDHHgLGNiDnotu4EHCp9YMkznWuo4uTtCyJ+cu+RNcxUeXYKTllpvLFWnbfWry09yzszgg+A==", "dev": true, "requires": { - "dot-prop": "4.1.1", + "dot-prop": "4.2.0", "es6-error": "4.0.2", "graceful-fs": "4.1.11", - "indent-string": "3.1.0", + "indent-string": "3.2.0", "json5": "0.5.1", "lodash.clonedeep": "4.5.0", "lodash.clonedeepwith": "4.5.0", @@ -2519,9 +2519,9 @@ "dev": true }, "indent-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.1.0.tgz", - "integrity": "sha1-CP9DNGAziDmbMp5rlTjcejz13n0=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", "dev": true }, "inflight": { @@ -2573,7 +2573,7 @@ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "binary-extensions": "1.8.0" + "binary-extensions": "1.10.0" } }, "is-buffer": { @@ -2597,7 +2597,7 @@ "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", "dev": true, "requires": { - "ci-info": "1.0.0" + "ci-info": "1.1.1" } }, "is-dotfile": { @@ -2781,9 +2781,9 @@ "dev": true }, "js-yaml": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.9.0.tgz", - "integrity": "sha512-0LoUNELX4S+iofCT8f4uEHIiRBR+c2AINyC8qRWfC6QNruLtxVZRJaPcu/xwMgFIgDxF25tGHaDjvxzJCNE9yw==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", "dev": true, "requires": { "argparse": "1.0.9", @@ -3109,7 +3109,7 @@ "normalize-path": "2.1.1", "object.omit": "2.0.1", "parse-glob": "3.0.4", - "regex-cache": "0.4.3" + "regex-cache": "0.4.4" } }, "mimic-fn": { @@ -3161,9 +3161,9 @@ } }, "nan": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", - "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.7.0.tgz", + "integrity": "sha1-2Vv3IeyHfgjbJ27T/G63j5CDrUY=", "dev": true, "optional": true }, @@ -3175,7 +3175,7 @@ "requires": { "hosted-git-info": "2.5.0", "is-builtin-module": "1.0.0", - "semver": "5.3.0", + "semver": "5.4.1", "validate-npm-package-license": "3.0.1" } }, @@ -3185,7 +3185,7 @@ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "remove-trailing-separator": "1.0.2" + "remove-trailing-separator": "1.1.0" } }, "npm-run-path": { @@ -3315,7 +3315,7 @@ "got": "6.7.1", "registry-auth-token": "3.3.1", "registry-url": "3.1.0", - "semver": "5.3.0" + "semver": "5.4.1" } }, "parse-glob": { @@ -3607,25 +3607,24 @@ } }, "regenerate": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", - "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", "dev": true }, "regenerator-runtime": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", + "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", "dev": true }, "regex-cache": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", - "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { - "is-equal-shallow": "0.1.3", - "is-primitive": "2.0.0" + "is-equal-shallow": "0.1.3" } }, "regexpu-core": { @@ -3634,7 +3633,7 @@ "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", "dev": true, "requires": { - "regenerate": "1.3.2", + "regenerate": "1.3.3", "regjsgen": "0.2.0", "regjsparser": "0.1.5" } @@ -3683,9 +3682,9 @@ } }, "remove-trailing-separator": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", - "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", "dev": true }, "repeat-element": { @@ -3716,9 +3715,9 @@ "dev": true }, "resolve": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", - "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", + "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", "dev": true, "requires": { "path-parse": "1.0.5" @@ -3756,9 +3755,9 @@ "dev": true }, "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", "dev": true }, "semver-diff": { @@ -3767,7 +3766,7 @@ "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", "dev": true, "requires": { - "semver": "5.3.0" + "semver": "5.4.1" } }, "set-immediate-shim": { @@ -3804,10 +3803,13 @@ "dev": true }, "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0" + } }, "slide": { "version": "1.1.6", @@ -3825,18 +3827,18 @@ } }, "source-map": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "source-map-support": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", - "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "dev": true, "requires": { - "source-map": "0.5.6" + "source-map": "0.5.7" } }, "spdx-correct": { @@ -3872,15 +3874,6 @@ "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", "dev": true }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -3891,6 +3884,15 @@ "strip-ansi": "4.0.0" } }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -3945,9 +3947,9 @@ "dev": true }, "supports-color": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.0.tgz", - "integrity": "sha512-Ts0Mu/A1S1aZxEJNG88I4Oc9rcZSBFNac5e27yh4j2mqbhZSSzR1Ah79EYwSn9Zuh7lrlGD2cVGzw1RKGzyLSg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", + "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", "dev": true, "requires": { "has-flag": "2.0.0" @@ -4085,41 +4087,41 @@ "dev": true }, "tslint": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.5.0.tgz", - "integrity": "sha1-EOjas+MGH6YelELozuOYKs8gpqo=", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.7.0.tgz", + "integrity": "sha1-wl4NDJL6EgHCvDDoROCOaCtPNVI=", "dev": true, "requires": { - "babel-code-frame": "6.22.0", + "babel-code-frame": "6.26.0", "colors": "1.1.2", "commander": "2.11.0", - "diff": "3.3.0", + "diff": "3.3.1", "glob": "7.1.2", "minimatch": "3.0.4", - "resolve": "1.3.3", - "semver": "5.3.0", + "resolve": "1.4.0", + "semver": "5.4.1", "tslib": "1.7.1", - "tsutils": "2.7.1" + "tsutils": "2.8.2" } }, "tsutils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.7.1.tgz", - "integrity": "sha1-QRoOlGZSWisoaSYKVWINcpIVXiQ=", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.8.2.tgz", + "integrity": "sha1-LBSGukMSYIRbCsb5Aq/Z1wio6mo=", "dev": true, "requires": { "tslib": "1.7.1" } }, "typeable": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/typeable/-/typeable-2.0.1.tgz", - "integrity": "sha1-cl6nFtN7oEcsuWfAxmxIsySfiOs=" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/typeable/-/typeable-2.0.2.tgz", + "integrity": "sha512-4Jl8crCfaEa93MsWQ8JImIjZ6tC/1xMONacNyO2Xjp4xrBkLwTuzx7x8y6qqoXFKBKogpzIRzLv8IvkZSWEsOg==" }, "typescript": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.4.2.tgz", - "integrity": "sha1-+DlfhdRZJ2BnyYiqQYN6j4KHCEQ=", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.5.2.tgz", + "integrity": "sha1-A4qV99m7tCCxvzW6MdTFwd0//jQ=", "dev": true }, "uid2": { @@ -4160,7 +4162,7 @@ "integrity": "sha1-G1g3z5DAc22IYncytmHBOPht5y8=", "dev": true, "requires": { - "boxen": "1.2.0", + "boxen": "1.2.1", "chalk": "1.1.3", "configstore": "3.1.1", "import-lazy": "2.1.0", @@ -4222,12 +4224,12 @@ "dev": true }, "validatable": { - "version": "0.24.1", - "resolved": "https://registry.npmjs.org/validatable/-/validatable-0.24.1.tgz", - "integrity": "sha1-m3HEa1+2M+gjXPXqa7aQcNH90U4=", + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/validatable/-/validatable-0.24.2.tgz", + "integrity": "sha512-34Y3ZisfCBtZ8HVVXTLQyi9geAnCjk6tQ+z4HuGzygRlSFg9YwOB91dOnlWpLCdeYAdaKpkBC/Eng/gluZxZPQ==", "requires": { "lodash.merge": "4.6.0", - "typeable": "2.0.1" + "typeable": "2.0.2" } }, "validate-npm-package-license": { @@ -4247,9 +4249,9 @@ "dev": true }, "which": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", - "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { "isexe": "2.0.0" @@ -4302,14 +4304,14 @@ "dev": true }, "write-file-atomic": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.1.0.tgz", - "integrity": "sha512-0TZ20a+xcIl4u0+Mj5xDH2yOWdmQiXlKf9Hm+TgDXjTMsEYb+gDrmb8e8UNAzMCitX8NBqG4Z/FUQIyzv/R1JQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", + "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", "dev": true, "requires": { "graceful-fs": "4.1.11", "imurmurhash": "0.1.4", - "slide": "1.1.6" + "signal-exit": "3.0.2" } }, "write-json-file": { @@ -4323,7 +4325,7 @@ "make-dir": "1.0.0", "pify": "2.3.0", "sort-keys": "1.1.2", - "write-file-atomic": "2.1.0" + "write-file-atomic": "2.3.0" }, "dependencies": { "detect-indent": { diff --git a/package.json b/package.json index 7210b92..e2f41a1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.9.1", + "version": "1.10.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -68,16 +68,16 @@ "author": "Kristijan Sedlak (Xpepermint)", "license": "MIT", "devDependencies": { - "@types/node": "^8.0.14", - "ava": "^0.21.0", - "tslint": "^5.5.0", - "typescript": "^2.4.2" + "@types/node": "^8.0.29", + "ava": "^0.22.0", + "tslint": "^5.7.0", + "typescript": "^2.5.2" }, "dependencies": { - "handleable": "^0.20.1", + "handleable": "^0.20.2", "lodash.isequal": "^4.5.0", "lodash.merge": "^4.6.0", - "typeable": "^2.0.1", - "validatable": "^0.24.1" + "typeable": "^2.0.2", + "validatable": "^0.24.2" } } From bb012156f0a2b59fe0c09fec0a0547de49daf93c Mon Sep 17 00:00:00 2001 From: xpeper Date: Fri, 22 Sep 2017 13:28:51 +0200 Subject: [PATCH 176/219] version bump --- .travis.yml | 1 + package-lock.json | 22 +++++++++++----------- package.json | 8 ++++---- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/.travis.yml b/.travis.yml index 34e25b3..53fc891 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,6 @@ language: node_js node_js: + - "8" - "7" - "6" - "5" diff --git a/package-lock.json b/package-lock.json index 782dfcd..65ee0c6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.9.1", + "version": "1.10.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -2418,9 +2418,9 @@ "dev": true }, "handleable": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/handleable/-/handleable-0.20.2.tgz", - "integrity": "sha512-9crf8n7AU3mcaqB4/iHPEA3T7SYo/LVdqeq+Fm1Q0RVcAGb1NkqibQNrRiptynTmbxT/Ulkn0R3oSqrvrUZQww==", + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/handleable/-/handleable-0.21.0.tgz", + "integrity": "sha512-dmuOfVqbRS8rhExpL8o97nLhTpt3xsBBa2Z4uO6hevUz0eWGDvTqs2yqginJyRAnvafce9SMUAPyiiBxa34x2A==", "requires": { "lodash.merge": "4.6.0" } @@ -4114,9 +4114,9 @@ } }, "typeable": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/typeable/-/typeable-2.0.2.tgz", - "integrity": "sha512-4Jl8crCfaEa93MsWQ8JImIjZ6tC/1xMONacNyO2Xjp4xrBkLwTuzx7x8y6qqoXFKBKogpzIRzLv8IvkZSWEsOg==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/typeable/-/typeable-2.2.0.tgz", + "integrity": "sha512-46BxIAEtGdIOQm2NiUfaAGzRJiRkvIQEuDeaKg/Ix5zcngGxmRA/QSNc9s/Nf6x35aPoknvtWxoTORlzyV4vuA==" }, "typescript": { "version": "2.5.2", @@ -4224,12 +4224,12 @@ "dev": true }, "validatable": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/validatable/-/validatable-0.24.2.tgz", - "integrity": "sha512-34Y3ZisfCBtZ8HVVXTLQyi9geAnCjk6tQ+z4HuGzygRlSFg9YwOB91dOnlWpLCdeYAdaKpkBC/Eng/gluZxZPQ==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/validatable/-/validatable-0.27.0.tgz", + "integrity": "sha512-zfdtidDEuXN4PKZVcjWdzHJ26dj8P5DCbsqNFhBXSzrOrJa6Q+ySJ/I0KH/5WnsMTuJPXqIxK7MlUcdZQggT4g==", "requires": { "lodash.merge": "4.6.0", - "typeable": "2.0.2" + "typeable": "2.2.0" } }, "validate-npm-package-license": { diff --git a/package.json b/package.json index e2f41a1..c72bfbe 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.10.0", + "version": "1.11.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -74,10 +74,10 @@ "typescript": "^2.5.2" }, "dependencies": { - "handleable": "^0.20.2", + "handleable": "^0.21.0", "lodash.isequal": "^4.5.0", "lodash.merge": "^4.6.0", - "typeable": "^2.0.2", - "validatable": "^0.24.2" + "typeable": "^2.2.0", + "validatable": "^0.27.0" } } From 27c896545b062068b742f3213ea5f25eb40829ab Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 23 Sep 2017 23:27:45 +0200 Subject: [PATCH 177/219] enumerable field --- README.md | 8 +++++--- dist/src/fields.d.ts | 2 ++ dist/src/fields.js | 4 ++++ dist/src/fields.js.map | 2 +- dist/src/models.js | 2 +- dist/src/models.js.map | 2 +- dist/tests/fields.js | 2 +- dist/tests/fields.js.map | 2 +- dist/tests/models.js | 24 ++++++++++++++++++++++++ dist/tests/models.js.map | 2 +- package-lock.json | 20 ++++++++++---------- package.json | 2 +- src/fields.ts | 6 ++++++ src/models.ts | 2 +- tests/fields.ts | 2 +- tests/models.ts | 21 +++++++++++++++++++++ 16 files changed, 81 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index a0e906a..e870e51 100644 --- a/README.md +++ b/README.md @@ -389,7 +389,8 @@ class User extends Model { this.defineField('name', { type: 'String', // field type casting - serializable: true, // when set to `false` the field is not enumerable + serializable: true, // when set to `false` the field is not present in serialized object (returned by `.serialize()`) + enumerable: true, // when set to `false` the field is not enumerable (ignored by `Object.keys()`) get (v) { return v }, // custom getter set (v) { return v }, // custom setter validate: [ // value validator recipes @@ -466,14 +467,15 @@ model.collectErrors(); // => {path: ['name'], errors: [{validator: 'absence', me > Sets initial value of each model field to the current value of a field. This is how field change tracking is restarted. -**Model.prototype.defineField(name, {type, serializable, get, set, defaultValue, fakeValue, validate})**: Void +**Model.prototype.defineField(name, {type, serializable, enumerable, get, set, defaultValue, fakeValue, validate})**: Void > Defines a new model property. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ | name | String | Yes | - | Property name. -| serializable | Boolean | No | true | When set to `false` the field is not enumerable and thus not included into serialized object. +| serializable | Boolean | No | true | When set to `false` the field is not present in serialized object (returned by `.serialize()`). +| enumerable | Boolean | No | true | When set to `false` the field is not enumerable (ignored by `Object.keys()`). | type | String, Model | No | - | Data type (pass a Model to create a nested structure; check [typeable.js](https://github.com/xpepermint/validatablejs) for more). | get | Function | No | - | Custom getter. | set | Function | No | - | Custom setter. diff --git a/dist/src/fields.d.ts b/dist/src/fields.d.ts index f107db3..2b3ff05 100644 --- a/dist/src/fields.d.ts +++ b/dist/src/fields.d.ts @@ -18,6 +18,7 @@ export interface FieldRecipe { owner?: Model; failFast?: boolean; serializable?: boolean; + enumerable?: boolean; } export interface FieldError { message: string; @@ -35,6 +36,7 @@ export declare class Field { readonly fakeValue: any; readonly initialValue: any; readonly serializable: boolean; + readonly enumerable: boolean; readonly owner: Model; readonly type: any; value: any; diff --git a/dist/src/fields.js b/dist/src/fields.js index 64b9b49..b3dd743 100644 --- a/dist/src/fields.js +++ b/dist/src/fields.js @@ -82,6 +82,10 @@ var Field = (function () { get: function () { return typeable_1.isUndefined(_this._recipe.serializable) ? true : !!_this._recipe.serializable; }, enumerable: true }); + Object.defineProperty(this, 'enumerable', { + get: function () { return typeable_1.isUndefined(_this._recipe.enumerable) ? true : !!_this._recipe.enumerable; }, + enumerable: true + }); Object.defineProperty(this, 'type', { get: function () { return _this._recipe.type || null; }, enumerable: true diff --git a/dist/src/fields.js.map b/dist/src/fields.js.map index 454c2f2..13ab34b 100644 --- a/dist/src/fields.js.map +++ b/dist/src/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/models.js b/dist/src/models.js index 738a784..7cbb183 100644 --- a/dist/src/models.js +++ b/dist/src/models.js @@ -118,7 +118,7 @@ var Model = (function () { Object.defineProperty(this, name, { get: function () { return field.value; }, set: function (v) { return field.value = v; }, - enumerable: typeof recipe.serializable !== "undefined" ? recipe.serializable : true, + enumerable: recipe.enumerable !== false, configurable: true }); this._fields[name] = field; diff --git a/dist/src/models.js.map b/dist/src/models.js.map index 95af735..1826658 100644 --- a/dist/src/models.js.map +++ b/dist/src/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/fields.js b/dist/tests/fields.js index f39367e..2af8db4 100644 --- a/dist/tests/fields.js +++ b/dist/tests/fields.js @@ -209,7 +209,7 @@ ava_1["default"]('method `isValid()` returns `true` when no errors exist', funct }); ava_1["default"]('has enumeratable properties', function (t) { var f = new src_1.Field(); - t.deepEqual(Object.keys(f), ['errors', 'value', 'defaultValue', 'fakeValue', 'initialValue', 'serializable', 'type', 'owner']); + t.deepEqual(Object.keys(f), ['errors', 'value', 'defaultValue', 'fakeValue', 'initialValue', 'serializable', 'enumerable', 'type', 'owner']); }); ava_1["default"]('method `handle()` handles an error and populates the `errors` property', function (t) { return __awaiter(_this, void 0, void 0, function () { var f, e; diff --git a/dist/tests/fields.js.map b/dist/tests/fields.js.map index f5d1534..4389c28 100644 --- a/dist/tests/fields.js.map +++ b/dist/tests/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../tests/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../tests/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/models.js b/dist/tests/models.js index 9af6fd9..870cb8a 100644 --- a/dist/tests/models.js +++ b/dist/tests/models.js @@ -1264,4 +1264,28 @@ ava_1["default"]('method `defineHandler` defines a custom field handler', functi } }); }); }); +ava_1["default"]('property `enumerable` handles field visibility', function (t) { + var User0 = (function (_super) { + __extends(User0, _super); + function User0(data) { + var _this = _super.call(this, data) || this; + _this.defineField('name', { enumerable: true }); + return _this; + } + return User0; + }(src_1.Model)); + var User1 = (function (_super) { + __extends(User1, _super); + function User1(data) { + var _this = _super.call(this, data) || this; + _this.defineField('name', { enumerable: false }); + return _this; + } + return User1; + }(src_1.Model)); + var user0 = new User0({}); + var user1 = new User1({}); + t.deepEqual(Object.keys(user0), ['name']); + t.deepEqual(Object.keys(user1), []); +}); //# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/dist/tests/models.js.map b/dist/tests/models.js.map index f4cbba4..d428402 100644 --- a/dist/tests/models.js.map +++ b/dist/tests/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iBAw/BA;;AAx/BA,2BAAuB;AACvB,8BAAoC;AAEpC,gBAAI,CAAC,gEAAgE,EAAE,UAAC,CAAC;IACvE,IAAI,IAAI,GAAG;QAAuB,wBAAK;QAErC;YAAA,YACE,iBAAO,SAER;YADC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;;QAC3B,CAAC;QACH,WAAC;IAAD,CAAC,AANc,CAAmB,WAAK,EAMtC,CAAC;IACF,IAAI,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC,CAAC,EAAE,CAAC,OAAO,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC,CAAC,EAAE,CAAC,OAAO,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,gDAAgD,EAAE,UAAC,CAAC;IACvD,IAAI,IAAI,GAAG;QAAuB,wBAAK;QAGrC;YAAA,YACE,iBAAO,SAIR;YAHC,KAAI,CAAC,UAAU,CAAC,MAAM,EAAE,UAAC,CAAC,IAAK,OAAG,CAAC,UAAO,EAAX,CAAW,CAAC,CAAC;YAC5C,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC;;QAC9C,CAAC;QACH,WAAC;IAAD,CAAC,AATc,CAAmB,WAAK,EAStC,CAAC;IACF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC7B,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,2CAA2C,EAAE,UAAC,CAAC;IAClD;QAAmB,wBAAK;QAEtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;IACD;QAAmB,wBAAK;QAItB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC3C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAXD,CAAmB,WAAK,GAWvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,GAAG;QACT,IAAI,EAAE;YACJ,KAAK,EAAE,GAAG;SACX;QACD,KAAK,EAAE;YACL,SAAS;YACT;gBACE,KAAK,EAAE,GAAG;aACX;SACF;KACF,CAAC,CAAC;IACH,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,uDAAuD,EAAE,UAAC,CAAC;IAC9D;QAAmB,wBAAK;QAEtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;IACD;QAAmB,wBAAK;QAItB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC3C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAXD,CAAmB,WAAK,GAWvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE;YACJ,KAAK,EAAE,GAAG;SACX;QACD,KAAK,EAAE;YACL,SAAS;YACT;gBACE,KAAK,EAAE,GAAG;aACX;SACF;KACF,CAAC,CAAC;IACH,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,mEAAmE,EAAE,UAAC,CAAC;IAC1E;QAAmB,wBAAK;QAEtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;IACD;QAAmB,wBAAK;QAEtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE;YACJ,KAAK,EAAE,GAAG;SACX;KACF,CAAC,CAAC;IACH,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,0DAA0D,EAAE,UAAC,CAAC;IACjE;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC3C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,SAAS;YACT;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;IACH,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACtD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,sDAAsD,EAAE,UAAC,CAAC;IAC7D;QAAmB,wBAAK;QACtB,cAAa,IAAS;YAAT,qBAAA,EAAA,SAAS;YAAtB,YACE,iBAAO,SAGR;YAFC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC3C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACtB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAChD,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,iEAAiE,EAAE,UAAC,CAAC;IACxE;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAMZ;YALC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC3C,KAAI,CAAC,WAAW,CAAC,aAAa,EAAE,EAAC,YAAY,EAAE,KAAK,EAAC,CAAC,CAAC;YACvD,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AATD,CAAmB,WAAK,GASvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,KAAK;QAClB,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,SAAS;YACT;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;IACH,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAS,EAAE;QACnC,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,IAAI;YACJ;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,6CAA6C,EAAE,UAAO,CAAC;;;QAC1D;YAAmB,wBAAK;YACtB,cAAa,IAAI;gBAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;gBAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;gBAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;YACtB,CAAC;YACH,WAAC;QAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;QACD;YAAmB,wBAAK;YACtB,cAAa,IAAI;gBAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;gBAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;gBAC3C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;gBACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;gBAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;YACtB,CAAC;YACH,WAAC;QAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;QACG,IAAI,GAAG,IAAI,IAAI,CAAC;YAClB,IAAI,EAAE,KAAK;YACX,IAAI,EAAE;gBACJ,KAAK,EAAE,KAAK;aACb;YACD,KAAK,EAAE;gBACL,SAAS;gBACT;oBACE,KAAK,EAAE,KAAK;iBACb;aACF;SACF,CAAC,CAAC;QACH,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,EAAN,CAAM,CAAC,EAAE;YAC7C,CAAC,MAAM,CAAC;YACR,CAAC,MAAM,CAAC;YACR,CAAC,MAAM,EAAE,OAAO,CAAC;YACjB,CAAC,OAAO,CAAC;YACT,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;SACtB,CAAC,CAAC;QACH,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;;;KAC5C,CAAC,CAAC;AAEH,gBAAI,CAAC,8CAA8C,EAAE,UAAC,CAAC;IACrD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAIZ;YAHC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC3C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;KACF,CAAC,CAAC;IACH,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAC,EAAM;YAAL,cAAI;QAAM,OAAA,IAAI;IAAJ,CAAI,CAAC,CAAC;IAC7C,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE;QACnB,CAAC,MAAM,CAAC;QACR,CAAC,MAAM,CAAC;QACR,CAAC,MAAM,EAAE,OAAO,CAAC;KAClB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,yDAAyD,EAAE,UAAC,CAAC;IAChE;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAIZ;YAHC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC3C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;KACF,CAAC,CAAC;IACH,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAC,EAAM;YAAL,cAAI;QAAM,OAAA,IAAI;IAAJ,CAAI,CAAC,CAAC;IAC1C,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,2FAA2F,EAAE,UAAC,CAAC;IAClG;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC3C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,SAAS;YACT;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;IACH,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAC,EAAa;YAAZ,cAAI,EAAE,gBAAK;QAAM,OAAA,KAAK,CAAC,KAAK,KAAK,KAAK;IAArB,CAAqB,CAAC,CAAC;IACnE,CAAC,CAAC,SAAS,CAAC,MAAa,EAAE;QACzB,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,IAAI;YACJ;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,oDAAoD,EAAE,UAAC,CAAC;IAC3D;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,YAAY,EAAE,KAAK,EAAC,CAAC,CAAC;YACjD,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,YAAY,EAAE,KAAK,EAAC,CAAC,CAAC;YAChD,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAC,CAAC,CAAC;YACzD,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAC,CAAC,CAAC;YACpE,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE;YACJ,KAAK,EAAE,MAAM;SACd;QACD,KAAK,EAAE;YACL;gBACE,KAAK,EAAE,MAAM;aACd;SACF;KACF,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,EAAE,CAAC;IACb,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAS,EAAE;QACnC,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,IAAI;YACJ;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,gDAAgD,EAAE,UAAC,CAAC;IACvD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;YAC9C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAS;YAAT,qBAAA,EAAA,SAAS;YAAtB,YACE,iBAAO,SAKR;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;YAC7C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAC,CAAC,CAAC;YACzD,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAC,CAAC,CAAC;YACpE,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACtB,IAAI,CAAC,IAAI,EAAE,CAAC;IACZ,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAS,EAAE;QACnC,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,IAAI;YACJ;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,sCAAsC,EAAE,UAAC,CAAC;IAC7C;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,YAAY,EAAE,KAAK,EAAC,CAAC,CAAC;YACjD,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,YAAY,EAAE,KAAK,EAAC,CAAC,CAAC;YAChD,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAC,CAAC,CAAC;YACzD,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAC,CAAC,CAAC;YACpE,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE;YACJ,KAAK,EAAE,MAAM;SACd;QACD,KAAK,EAAE;YACL;gBACE,KAAK,EAAE,MAAM;aACd;SACF;KACF,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,EAAE,CAAC;IACb,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAS,EAAE;QACnC,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,6DAA6D,EAAE,UAAC,CAAC;IACpE;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,EAAE,CAAC;IACd,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC7D,IAAI,CAAC,QAAQ,CAAC;QACZ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,KAAK,EAAE,SAAS;SACjB;QACD,KAAK,EAAE;YACL;gBACE,KAAK,EAAE,SAAS;aACjB;SACF;KACF,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,EAAE,CAAC;IAChB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,uEAAuE,EAAE,UAAC,CAAC;IAC9E;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAI,IAAI,GAAG;QACT,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,IAAI;YACJ;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC;IACF,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACpD,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,0EAA0E,EAAE,UAAC,CAAC;IACjF;QAAmB,wBAAK;QAEtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAIZ;YAHC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;QAChB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD;QAAmB,wBAAK;QAItB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAMZ;YALC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;QAChB,CAAC;QACH,WAAC;IAAD,CAAC,AAZD,CAAmB,WAAK,GAYvB;IACD,IAAI,IAAI,GAAG;QACT,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,IAAI;YACJ;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC;IACF,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;IAC/B,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;IACvB,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IAC7B,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAC,KAAK,EAAE,SAAS,EAAS,CAAC;IAC5C,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC;IACjC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,yDAAyD,EAAE,UAAC,CAAC;IAChE;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAS;YAAT,qBAAA,EAAA,SAAS;YAAtB,YACE,iBAAO,SAIR;YAHC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACtB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,yDAAyD,EAAE,UAAC,CAAC;IAChE;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,CAAC,EAAE,CAAC;KACZ,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;IAClD,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;IAC3D,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;QAChC,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;QAC5C,EAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;QACrD,EAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;KAC1D,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,yCAAyC,EAAE,UAAC,CAAC;IAChD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;KAClB,CAAC,CAAC;IAEH,IAAI,CAAC,WAAW,CAAC;QACf,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;QAC5C,EAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;QACrD,EAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;KAC1D,CAAC,CAAC;IACH,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC;AAC7E,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,wDAAwD,EAAE,UAAO,CAAC;;;QACrE;YAAmB,wBAAK;YACtB,cAAa,IAAI;gBAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;gBAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;YACtB,CAAC;YACH,WAAC;QAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;QACD;YAAmB,wBAAK;YACtB,cAAa,IAAK;gBAAlB,YACE,kBAAM,IAAI,CAAC,SAKZ;gBAJC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;gBACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;gBAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;YACtB,CAAC;YACH,WAAC;QAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;QACG,KAAK,GAAG,IAAI,IAAI,CAAC;YACnB,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;SAClB,CAAC,CAAC;QACC,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;QAC5B,KAAK,CAAC,WAAW,CAAC;YAChB,EAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;SAC1D,CAAC,CAAC;QACH,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;;;KAC9B,CAAC,CAAC;AAEH,gBAAI,CAAC,wDAAwD,EAAE,UAAO,CAAC;;;;;gBACjE,QAAQ,GAAG,CAAC;wBACd,SAAS,EAAE,UAAU;wBACrB,OAAO,EAAE,KAAK;qBACf,CAAC,CAAC;gBACH;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;wBAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,QAAQ,UAAA,EAAC,CAAC,CAAC;wBACtC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;gBACD;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAOZ;wBANC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,QAAQ,UAAA,EAAC,CAAC,CAAC;wBACrC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,UAAA,EAAC,CAAC,CAAC;wBAClD,KAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,UAAA,EAAC,CAAC,CAAC;wBACrD,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,UAAA,EAAC,CAAC,CAAC;wBAClD,KAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,UAAA,EAAC,CAAC,CAAC;wBACrD,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AAVD,CAAmB,WAAK,GAUvB;gBACG,IAAI,GAAG,IAAI,IAAI,CAAC;oBAClB,KAAK,EAAE,EAAE;oBACT,MAAM,EAAE,CAAC,EAAE,CAAC;iBACb,CAAC,CAAC;gBACC,MAAM,GAAG,CAAC,EAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAC,CAAC,CAAC;gBAClE,WAAM,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,EAAA;;gBAAlC,SAAkC,CAAC;gBACnC,KAAA,CAAA,KAAA,CAAC,CAAA,CAAC,EAAE,CAAA;gBAAC,WAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAK,CAAA,CAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,EAAA;;gBAA7C,cAAK,SAAwC,EAAE,KAAK,EAAC,CAAC;gBACtD,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAQ,EAAE;oBACtC,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,QAAA,EAAC;oBACxB,EAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,QAAA,EAAC;oBACzB,EAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,QAAA,EAAC;oBAC1B,EAAC,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,QAAA,EAAC;oBAClC,EAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,QAAA,EAAC;iBACvC,CAAC,CAAC;;;;KACJ,CAAC,CAAC;AAEH,gBAAI,CAAC,2DAA2D,EAAE,UAAO,CAAC;;;;;gBACpE,SAAS,GAAG,UAAU,CAAC;oBACzB,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,KAAK,MAAM,CAAC;gBAC/C,CAAC,CAAC;gBACE,QAAQ,GAAG,CAAC;wBACd,SAAS,EAAE,UAAU;wBACrB,OAAO,EAAE,KAAK;qBACf,CAAC,CAAC;gBACH;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAIZ;wBAHC,KAAI,CAAC,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;wBAC5C,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,QAAQ,UAAA,EAAC,CAAC,CAAC;wBACtC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;gBACD;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;wBAJC,KAAI,CAAC,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;wBAC5C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,QAAQ,UAAA,EAAC,CAAC,CAAC;wBACrC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,UAAA,EAAC,CAAC,CAAC;wBACjD,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;gBACG,IAAI,GAAG,IAAI,IAAI,CAAC;oBAClB,IAAI,EAAE,EAAE;iBACT,CAAC,CAAC;gBACC,MAAM,GAAG,CAAC,EAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAC,CAAC,CAAC;gBAClE,WAAM,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,EAAA;;gBAAlC,SAAkC,CAAC;gBACnC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAQ,EAAE;oBACtC,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,QAAA,EAAC;oBACxB,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,QAAA,EAAC;oBACxB,EAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,QAAA,EAAC;iBAClC,CAAC,CAAC;;;;KACJ,CAAC,CAAC;AAEH,gBAAI,CAAC,oFAAoF,EAAE,UAAO,CAAC;;;;;gBAC7F,QAAQ,GAAG;oBACb,EAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAC;oBACvC,EAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAC;iBACxC,CAAC;gBACF;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAIZ;wBAHC,KAAI,CAAC,QAAQ,EAAE,CAAC;wBAChB,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,QAAQ,UAAA,EAAC,CAAC,CAAC;wBACtC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;gBACD;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;wBAJC,KAAI,CAAC,QAAQ,EAAE,CAAC;wBAChB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,QAAQ,UAAA,EAAC,CAAC,CAAC;wBACrC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;wBACvC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;gBACG,IAAI,GAAG,IAAI,IAAI,CAAC;oBAClB,IAAI,EAAE,EAAE;iBACT,CAAC,CAAC;gBACC,MAAM,GAAG,CAAC,EAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAC,CAAC,CAAC;gBAClE,WAAM,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,EAAA;;gBAAlC,SAAkC,CAAC;gBACnC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC7C,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;;;;KACvD,CAAC,CAAC;AAEH,gBAAI,CAAC,0CAA0C,EAAE,UAAO,CAAC;;;QACvD;YAAmB,wBAAK;YACtB,cAAa,IAAI;gBAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;gBAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;YACtB,CAAC;YACH,WAAC;QAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;QACD;YAAmB,wBAAK;YACtB,cAAa,IAAI;gBAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;gBAJC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;gBACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;gBAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;YACtB,CAAC;YACH,WAAC;QAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;QACG,IAAI,GAAG,IAAI,IAAI,CAAC;YAClB,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;SAClB,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC;YACf,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;YAC5C,EAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;YACrD,EAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;SAC1D,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACvD,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;;;KAC5D,CAAC,CAAC;AAEH,gBAAI,CAAC,sDAAsD,EAAE,UAAC,CAAC;IAC7D;QAAmB,wBAAK;QAEtB,cAAa,IAAK;YAAlB,YACE,kBAAM,IAAI,CAAC,SAIZ;YAHC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;QAChB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD;QAAmB,wBAAK;QAItB,cAAa,IAAK;YAAlB,YACE,kBAAM,IAAI,CAAC,SAMZ;YALC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;QAChB,CAAC;QACH,WAAC;IAAD,CAAC,AAZD,CAAmB,WAAK,GAYvB;IACD,IAAI,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;IACxB,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,MAAM,QAAA;QACN,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,IAAI;YACJ;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;IACH,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC1B,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAC,IAAI,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,EAAC,CAAC,CAAC;IAChD,CAAC,CAAC,EAAE,CAAC,MAAM,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,8CAA8C,EAAE,UAAO,CAAC;;;;;;gBACvD,MAAM,GAAG,CAAC;wBACZ,OAAO,EAAE,OAAO;wBAChB,OAAO,EAAE,QAAQ;wBACjB,KAAK,EAAE;4BAAY,WAAA,IAAI,EAAA;iCAAA;wBACvB,GAAG,EAAE,KAAK;qBACX,CAAC,CAAC;gBACH;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;wBAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,MAAM,QAAA,EAAC,CAAC,CAAC;wBACpC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;gBACD;oBAAsB,2BAAK;oBACzB,iBAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;wBAFC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;wBACzB,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,cAAC;gBAAD,CAAC,AAND,CAAsB,WAAK,GAM1B;gBACD;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAQZ;wBAPC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,MAAM,QAAA,EAAC,CAAC,CAAC;wBACnC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,MAAM,QAAA,EAAC,CAAC,CAAC;wBAChD,KAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,QAAA,EAAC,CAAC,CAAC;wBACnD,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;wBACxC,KAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;wBAC3C,KAAI,CAAC,WAAW,CAAC,SAAS,EAAE,EAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAC,CAAC,CAAC;wBAC/C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AAXD,CAAmB,WAAK,GAWvB;gBACG,IAAI,GAAG,IAAI,IAAI,CAAC;oBAClB,KAAK,EAAE,EAAE;oBACT,MAAM,EAAE,CAAC,EAAE,CAAC;oBACZ,OAAO,EAAE,EAAE;iBACZ,CAAC,CAAC;gBACC,QAAQ,GAAG,IAAI,KAAK,EAAE,CAAC;gBACvB,QAAQ,GAAG,IAAI,KAAK,EAAS,CAAC;gBAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;gBACnD,MAAM,GAAG,CAAC,EAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAC,CAAC,CAAC;gBAC7D,KAAA,CAAA,KAAA,CAAC,CAAA,CAAC,EAAE,CAAA;gBAAC,WAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC,OAAK,CAAA,CAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,EAAA;;gBAAnE,cAAK,SAA8D,EAAE,KAAK,EAAC,CAAC;gBAC5E,KAAA,CAAA,KAAA,CAAC,CAAA,CAAC,EAAE,CAAA;gBAAC,WAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAC,EAAA;;gBAAjD,cAAK,SAA4C,EAAE,IAAI,EAAC,CAAC;gBACzD,KAAA,CAAA,KAAA,CAAC,CAAA,CAAC,EAAE,CAAA;gBAAC,WAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC,IAAI,CAAC,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAC,EAAA;;gBAAjE,cAAK,SAA4D,EAAE,IAAI,EAAC,CAAC;gBACzE,WAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAA;;gBAA3B,SAA2B,CAAC;gBAC5B,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAQ,EAAE;oBACtC,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,QAAA,EAAC;oBACxB,EAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,QAAA,EAAC;oBACzB,EAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,QAAA,EAAC;oBAC1B,EAAC,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,QAAA,EAAC;oBAClC,EAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,QAAA,EAAC;iBACvC,CAAC,CAAC;;;;KACJ,CAAC,CAAC;AAEH,gBAAI,CAAC,uDAAuD,EAAE,UAAO,CAAC;;;;;gBAChE,OAAO,GAAG,UAAU,CAAC;oBACvB,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC;gBAC9B,CAAC,CAAC;gBACE,MAAM,GAAG,CAAC;wBACZ,OAAO,EAAE,UAAU;wBACnB,OAAO,EAAE,QAAQ;wBACjB,GAAG,EAAE,KAAK;qBACX,CAAC,CAAC;gBACH;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAIZ;wBAHC,KAAI,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;wBACxC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,MAAM,QAAA,EAAC,CAAC,CAAC;wBACpC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;gBACD;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAMZ;wBALC,KAAI,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;wBACxC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,MAAM,QAAA,EAAC,CAAC,CAAC;wBACnC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;wBACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;wBAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AATD,CAAmB,WAAK,GASvB;gBACG,IAAI,GAAG,IAAI,IAAI,CAAC;oBAClB,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,CAAC,EAAE,CAAC;iBACZ,CAAC,CAAC;gBACC,OAAO,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC5B,MAAM,GAAG,CAAC,EAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAC,CAAC,CAAC;gBAChE,WAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAA;;gBAA1B,SAA0B,CAAC;gBAC3B,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAQ,EAAE;oBACtC,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,QAAA,EAAC;oBACxB,EAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,QAAA,EAAC;oBACjC,EAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,QAAA,EAAC;iBACtC,CAAC,CAAC;;;;KACJ,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 65ee0c6..e2b420c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.10.0", + "version": "1.12.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -81,9 +81,9 @@ } }, "@types/node": { - "version": "8.0.29", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.29.tgz", - "integrity": "sha512-C5h3jl321dtwQJJAl6poPm7YmDneEv1cpRMZxJ7vlH03XN6OQix4LxTHBBZBj/aPVhlO2dO5fbfgdxYkn2ArKw==", + "version": "8.0.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.30.tgz", + "integrity": "sha512-IaQtG3DWe9gRsmk1DqNnYyRVjGDVcBdZywkRVF2f62Boe8XKmlR7lNcwC6pk4V4W8nk+Zu+vdGMsOdRTDj1JPA==", "dev": true }, "ansi-align": { @@ -242,7 +242,7 @@ "convert-source-map": "1.5.0", "core-assert": "0.2.1", "currently-unhandled": "0.4.1", - "debug": "2.6.8", + "debug": "2.6.9", "dot-prop": "4.2.0", "empower-core": "0.6.2", "equal-length": "1.0.1", @@ -372,7 +372,7 @@ "babel-types": "6.26.0", "babylon": "6.18.0", "convert-source-map": "1.5.0", - "debug": "2.6.8", + "debug": "2.6.9", "json5": "0.5.1", "lodash": "4.17.4", "minimatch": "3.0.4", @@ -716,7 +716,7 @@ "babel-runtime": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "debug": "2.6.8", + "debug": "2.6.9", "globals": "9.18.0", "invariant": "2.2.2", "lodash": "4.17.4" @@ -1145,9 +1145,9 @@ } }, "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" diff --git a/package.json b/package.json index c72bfbe..bdfe72a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.11.0", + "version": "1.12.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", diff --git a/src/fields.ts b/src/fields.ts index c9c183f..c232d9d 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -21,6 +21,7 @@ export interface FieldRecipe { owner?: Model; failFast?: boolean; serializable?: boolean; + enumerable?: boolean; } /* @@ -48,6 +49,7 @@ export class Field { readonly fakeValue: any; readonly initialValue: any; readonly serializable: boolean; + readonly enumerable: boolean; readonly owner: Model; readonly type: any; public value: any; @@ -101,6 +103,10 @@ export class Field { get: () => isUndefined(this._recipe.serializable) ? true : !!this._recipe.serializable, enumerable: true }); + Object.defineProperty(this, 'enumerable', { + get: () => isUndefined(this._recipe.enumerable) ? true : !!this._recipe.enumerable, + enumerable: true + }); Object.defineProperty(this, 'type', { get: () => this._recipe.type || null, enumerable: true diff --git a/src/models.ts b/src/models.ts index 6050413..fb8ad1b 100644 --- a/src/models.ts +++ b/src/models.ts @@ -160,7 +160,7 @@ export abstract class Model { Object.defineProperty(this, name, { get: () => field.value, set: (v) => field.value = v, - enumerable: typeof recipe.serializable !== "undefined" ? recipe.serializable : true, + enumerable: recipe.enumerable !== false, configurable: true }); diff --git a/tests/fields.ts b/tests/fields.ts index bdb87fb..be3152f 100644 --- a/tests/fields.ts +++ b/tests/fields.ts @@ -165,7 +165,7 @@ test('method `isValid()` returns `true` when no errors exist', (t) => { test('has enumeratable properties', (t) => { let f = new Field(); - t.deepEqual(Object.keys(f), ['errors', 'value', 'defaultValue', 'fakeValue', 'initialValue', 'serializable', 'type', 'owner']); + t.deepEqual(Object.keys(f), ['errors', 'value', 'defaultValue', 'fakeValue', 'initialValue', 'serializable', 'enumerable', 'type', 'owner']); }); test('method `handle()` handles an error and populates the `errors` property', async (t) => { diff --git a/tests/models.ts b/tests/models.ts index a311431..73502d7 100644 --- a/tests/models.ts +++ b/tests/models.ts @@ -1014,3 +1014,24 @@ test('method `defineHandler` defines a custom field handler', async (t) => { {path: ['books', 0, 'title'], errors}, ]); }); + +test('property `enumerable` handles field visibility', (t) => { + class User0 extends Model { + name: string; + constructor (data) { + super(data); + this.defineField('name', {enumerable: true}); + } + } + class User1 extends Model { + name: string; + constructor (data) { + super(data); + this.defineField('name', {enumerable: false}); + } + } + let user0 = new User0({}); + let user1 = new User1({}); + t.deepEqual(Object.keys(user0), ['name']); + t.deepEqual(Object.keys(user1), []); +}); From f3d486183821ed27a88b56dc15323c3d279c8bb5 Mon Sep 17 00:00:00 2001 From: xpeper Date: Mon, 25 Sep 2017 17:35:40 +0200 Subject: [PATCH 178/219] handling invalid values in `populate` --- dist/src/models.js | 3 +++ dist/src/models.js.map | 2 +- dist/tests/models.js | 3 +++ dist/tests/models.js.map | 2 +- package.json | 2 +- src/models.ts | 6 +++++- tests/models.ts | 3 +++ 7 files changed, 17 insertions(+), 4 deletions(-) diff --git a/dist/src/models.js b/dist/src/models.js index 7cbb183..3009fc2 100644 --- a/dist/src/models.js +++ b/dist/src/models.js @@ -155,6 +155,9 @@ var Model = (function () { Model.prototype.populate = function (data) { var _this = this; if (data === void 0) { data = {}; } + if (!typeable_1.isObject(data)) { + data = {}; + } Object.keys(data) .filter(function (n) { return !!_this._fields[n]; }) .forEach(function (name) { return _this[name] = utils_1.serialize(data[name]); }); diff --git a/dist/src/models.js.map b/dist/src/models.js.map index 1826658..59291d0 100644 --- a/dist/src/models.js.map +++ b/dist/src/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/models.js b/dist/tests/models.js index 870cb8a..0d92c63 100644 --- a/dist/tests/models.js +++ b/dist/tests/models.js @@ -117,6 +117,9 @@ ava_1["default"]('method `populate` deeply populates fields', function (t) { } ] }); + user.populate(null); + user.populate(false); + user.populate(""); t.is(user.name, '100'); t.is(user.book.title, '200'); t.is(user.books[0], null); diff --git a/dist/tests/models.js.map b/dist/tests/models.js.map index d428402..e2d3d9f 100644 --- a/dist/tests/models.js.map +++ b/dist/tests/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iBAghCA;;AAhhCA,2BAAuB;AACvB,8BAAoC;AAEpC,gBAAI,CAAC,gEAAgE,EAAE,UAAC,CAAC;IACvE,IAAI,IAAI,GAAG;QAAuB,wBAAK;QAErC;YAAA,YACE,iBAAO,SAER;YADC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;;QAC3B,CAAC;QACH,WAAC;IAAD,CAAC,AANc,CAAmB,WAAK,EAMtC,CAAC;IACF,IAAI,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC,CAAC,EAAE,CAAC,OAAO,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC,CAAC,EAAE,CAAC,OAAO,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,gDAAgD,EAAE,UAAC,CAAC;IACvD,IAAI,IAAI,GAAG;QAAuB,wBAAK;QAGrC;YAAA,YACE,iBAAO,SAIR;YAHC,KAAI,CAAC,UAAU,CAAC,MAAM,EAAE,UAAC,CAAC,IAAK,OAAG,CAAC,UAAO,EAAX,CAAW,CAAC,CAAC;YAC5C,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC;;QAC9C,CAAC;QACH,WAAC;IAAD,CAAC,AATc,CAAmB,WAAK,EAStC,CAAC;IACF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC7B,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,2CAA2C,EAAE,UAAC,CAAC;IAClD;QAAmB,wBAAK;QAEtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;IACD;QAAmB,wBAAK;QAItB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC3C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAXD,CAAmB,WAAK,GAWvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,GAAG;QACT,IAAI,EAAE;YACJ,KAAK,EAAE,GAAG;SACX;QACD,KAAK,EAAE;YACL,SAAS;YACT;gBACE,KAAK,EAAE,GAAG;aACX;SACF;KACF,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACpB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACrB,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,uDAAuD,EAAE,UAAC,CAAC;IAC9D;QAAmB,wBAAK;QAEtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;IACD;QAAmB,wBAAK;QAItB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC3C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAXD,CAAmB,WAAK,GAWvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE;YACJ,KAAK,EAAE,GAAG;SACX;QACD,KAAK,EAAE;YACL,SAAS;YACT;gBACE,KAAK,EAAE,GAAG;aACX;SACF;KACF,CAAC,CAAC;IACH,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,mEAAmE,EAAE,UAAC,CAAC;IAC1E;QAAmB,wBAAK;QAEtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;IACD;QAAmB,wBAAK;QAEtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE;YACJ,KAAK,EAAE,GAAG;SACX;KACF,CAAC,CAAC;IACH,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,0DAA0D,EAAE,UAAC,CAAC;IACjE;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC3C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,SAAS;YACT;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;IACH,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACtD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,sDAAsD,EAAE,UAAC,CAAC;IAC7D;QAAmB,wBAAK;QACtB,cAAa,IAAS;YAAT,qBAAA,EAAA,SAAS;YAAtB,YACE,iBAAO,SAGR;YAFC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC3C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACtB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAChD,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,iEAAiE,EAAE,UAAC,CAAC;IACxE;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAMZ;YALC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC3C,KAAI,CAAC,WAAW,CAAC,aAAa,EAAE,EAAC,YAAY,EAAE,KAAK,EAAC,CAAC,CAAC;YACvD,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AATD,CAAmB,WAAK,GASvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,KAAK;QAClB,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,SAAS;YACT;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;IACH,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAS,EAAE;QACnC,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,IAAI;YACJ;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,6CAA6C,EAAE,UAAO,CAAC;;;QAC1D;YAAmB,wBAAK;YACtB,cAAa,IAAI;gBAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;gBAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;gBAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;YACtB,CAAC;YACH,WAAC;QAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;QACD;YAAmB,wBAAK;YACtB,cAAa,IAAI;gBAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;gBAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;gBAC3C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;gBACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;gBAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;YACtB,CAAC;YACH,WAAC;QAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;QACG,IAAI,GAAG,IAAI,IAAI,CAAC;YAClB,IAAI,EAAE,KAAK;YACX,IAAI,EAAE;gBACJ,KAAK,EAAE,KAAK;aACb;YACD,KAAK,EAAE;gBACL,SAAS;gBACT;oBACE,KAAK,EAAE,KAAK;iBACb;aACF;SACF,CAAC,CAAC;QACH,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,EAAN,CAAM,CAAC,EAAE;YAC7C,CAAC,MAAM,CAAC;YACR,CAAC,MAAM,CAAC;YACR,CAAC,MAAM,EAAE,OAAO,CAAC;YACjB,CAAC,OAAO,CAAC;YACT,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;SACtB,CAAC,CAAC;QACH,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;;;KAC5C,CAAC,CAAC;AAEH,gBAAI,CAAC,8CAA8C,EAAE,UAAC,CAAC;IACrD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAIZ;YAHC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC3C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;KACF,CAAC,CAAC;IACH,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAC,EAAM;YAAL,cAAI;QAAM,OAAA,IAAI;IAAJ,CAAI,CAAC,CAAC;IAC7C,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE;QACnB,CAAC,MAAM,CAAC;QACR,CAAC,MAAM,CAAC;QACR,CAAC,MAAM,EAAE,OAAO,CAAC;KAClB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,yDAAyD,EAAE,UAAC,CAAC;IAChE;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAIZ;YAHC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC3C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;KACF,CAAC,CAAC;IACH,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAC,EAAM;YAAL,cAAI;QAAM,OAAA,IAAI;IAAJ,CAAI,CAAC,CAAC;IAC1C,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,2FAA2F,EAAE,UAAC,CAAC;IAClG;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC3C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,SAAS;YACT;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;IACH,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAC,EAAa;YAAZ,cAAI,EAAE,gBAAK;QAAM,OAAA,KAAK,CAAC,KAAK,KAAK,KAAK;IAArB,CAAqB,CAAC,CAAC;IACnE,CAAC,CAAC,SAAS,CAAC,MAAa,EAAE;QACzB,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,IAAI;YACJ;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,oDAAoD,EAAE,UAAC,CAAC;IAC3D;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,YAAY,EAAE,KAAK,EAAC,CAAC,CAAC;YACjD,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,YAAY,EAAE,KAAK,EAAC,CAAC,CAAC;YAChD,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAC,CAAC,CAAC;YACzD,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAC,CAAC,CAAC;YACpE,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE;YACJ,KAAK,EAAE,MAAM;SACd;QACD,KAAK,EAAE;YACL;gBACE,KAAK,EAAE,MAAM;aACd;SACF;KACF,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,EAAE,CAAC;IACb,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAS,EAAE;QACnC,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,IAAI;YACJ;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,gDAAgD,EAAE,UAAC,CAAC;IACvD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;YAC9C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAS;YAAT,qBAAA,EAAA,SAAS;YAAtB,YACE,iBAAO,SAKR;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;YAC7C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAC,CAAC,CAAC;YACzD,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAC,CAAC,CAAC;YACpE,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACtB,IAAI,CAAC,IAAI,EAAE,CAAC;IACZ,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAS,EAAE;QACnC,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,IAAI;YACJ;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,sCAAsC,EAAE,UAAC,CAAC;IAC7C;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,YAAY,EAAE,KAAK,EAAC,CAAC,CAAC;YACjD,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,YAAY,EAAE,KAAK,EAAC,CAAC,CAAC;YAChD,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAC,CAAC,CAAC;YACzD,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAC,CAAC,CAAC;YACpE,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE;YACJ,KAAK,EAAE,MAAM;SACd;QACD,KAAK,EAAE;YACL;gBACE,KAAK,EAAE,MAAM;aACd;SACF;KACF,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,EAAE,CAAC;IACb,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAS,EAAE;QACnC,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,6DAA6D,EAAE,UAAC,CAAC;IACpE;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,EAAE,CAAC;IACd,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC7D,IAAI,CAAC,QAAQ,CAAC;QACZ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,KAAK,EAAE,SAAS;SACjB;QACD,KAAK,EAAE;YACL;gBACE,KAAK,EAAE,SAAS;aACjB;SACF;KACF,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,EAAE,CAAC;IAChB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,uEAAuE,EAAE,UAAC,CAAC;IAC9E;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAI,IAAI,GAAG;QACT,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,IAAI;YACJ;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC;IACF,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACpD,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,0EAA0E,EAAE,UAAC,CAAC;IACjF;QAAmB,wBAAK;QAEtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAIZ;YAHC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;QAChB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD;QAAmB,wBAAK;QAItB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAMZ;YALC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;QAChB,CAAC;QACH,WAAC;IAAD,CAAC,AAZD,CAAmB,WAAK,GAYvB;IACD,IAAI,IAAI,GAAG;QACT,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,IAAI;YACJ;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC;IACF,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;IAC/B,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;IACvB,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IAC7B,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAC,KAAK,EAAE,SAAS,EAAS,CAAC;IAC5C,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC;IACjC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,yDAAyD,EAAE,UAAC,CAAC;IAChE;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAS;YAAT,qBAAA,EAAA,SAAS;YAAtB,YACE,iBAAO,SAIR;YAHC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACtB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,yDAAyD,EAAE,UAAC,CAAC;IAChE;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,CAAC,EAAE,CAAC;KACZ,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;IAClD,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;IAC3D,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;QAChC,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;QAC5C,EAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;QACrD,EAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;KAC1D,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,yCAAyC,EAAE,UAAC,CAAC;IAChD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;KAClB,CAAC,CAAC;IAEH,IAAI,CAAC,WAAW,CAAC;QACf,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;QAC5C,EAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;QACrD,EAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;KAC1D,CAAC,CAAC;IACH,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC;AAC7E,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,wDAAwD,EAAE,UAAO,CAAC;;;QACrE;YAAmB,wBAAK;YACtB,cAAa,IAAI;gBAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;gBAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;YACtB,CAAC;YACH,WAAC;QAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;QACD;YAAmB,wBAAK;YACtB,cAAa,IAAK;gBAAlB,YACE,kBAAM,IAAI,CAAC,SAKZ;gBAJC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;gBACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;gBAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;YACtB,CAAC;YACH,WAAC;QAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;QACG,KAAK,GAAG,IAAI,IAAI,CAAC;YACnB,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;SAClB,CAAC,CAAC;QACC,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;QAC5B,KAAK,CAAC,WAAW,CAAC;YAChB,EAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;SAC1D,CAAC,CAAC;QACH,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;;;KAC9B,CAAC,CAAC;AAEH,gBAAI,CAAC,wDAAwD,EAAE,UAAO,CAAC;;;;;gBACjE,QAAQ,GAAG,CAAC;wBACd,SAAS,EAAE,UAAU;wBACrB,OAAO,EAAE,KAAK;qBACf,CAAC,CAAC;gBACH;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;wBAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,QAAQ,UAAA,EAAC,CAAC,CAAC;wBACtC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;gBACD;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAOZ;wBANC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,QAAQ,UAAA,EAAC,CAAC,CAAC;wBACrC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,UAAA,EAAC,CAAC,CAAC;wBAClD,KAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,UAAA,EAAC,CAAC,CAAC;wBACrD,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,UAAA,EAAC,CAAC,CAAC;wBAClD,KAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,UAAA,EAAC,CAAC,CAAC;wBACrD,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AAVD,CAAmB,WAAK,GAUvB;gBACG,IAAI,GAAG,IAAI,IAAI,CAAC;oBAClB,KAAK,EAAE,EAAE;oBACT,MAAM,EAAE,CAAC,EAAE,CAAC;iBACb,CAAC,CAAC;gBACC,MAAM,GAAG,CAAC,EAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAC,CAAC,CAAC;gBAClE,WAAM,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,EAAA;;gBAAlC,SAAkC,CAAC;gBACnC,KAAA,CAAA,KAAA,CAAC,CAAA,CAAC,EAAE,CAAA;gBAAC,WAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAK,CAAA,CAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,EAAA;;gBAA7C,cAAK,SAAwC,EAAE,KAAK,EAAC,CAAC;gBACtD,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAQ,EAAE;oBACtC,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,QAAA,EAAC;oBACxB,EAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,QAAA,EAAC;oBACzB,EAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,QAAA,EAAC;oBAC1B,EAAC,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,QAAA,EAAC;oBAClC,EAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,QAAA,EAAC;iBACvC,CAAC,CAAC;;;;KACJ,CAAC,CAAC;AAEH,gBAAI,CAAC,2DAA2D,EAAE,UAAO,CAAC;;;;;gBACpE,SAAS,GAAG,UAAU,CAAC;oBACzB,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,KAAK,MAAM,CAAC;gBAC/C,CAAC,CAAC;gBACE,QAAQ,GAAG,CAAC;wBACd,SAAS,EAAE,UAAU;wBACrB,OAAO,EAAE,KAAK;qBACf,CAAC,CAAC;gBACH;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAIZ;wBAHC,KAAI,CAAC,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;wBAC5C,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,QAAQ,UAAA,EAAC,CAAC,CAAC;wBACtC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;gBACD;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;wBAJC,KAAI,CAAC,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;wBAC5C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,QAAQ,UAAA,EAAC,CAAC,CAAC;wBACrC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,UAAA,EAAC,CAAC,CAAC;wBACjD,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;gBACG,IAAI,GAAG,IAAI,IAAI,CAAC;oBAClB,IAAI,EAAE,EAAE;iBACT,CAAC,CAAC;gBACC,MAAM,GAAG,CAAC,EAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAC,CAAC,CAAC;gBAClE,WAAM,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,EAAA;;gBAAlC,SAAkC,CAAC;gBACnC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAQ,EAAE;oBACtC,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,QAAA,EAAC;oBACxB,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,QAAA,EAAC;oBACxB,EAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,QAAA,EAAC;iBAClC,CAAC,CAAC;;;;KACJ,CAAC,CAAC;AAEH,gBAAI,CAAC,oFAAoF,EAAE,UAAO,CAAC;;;;;gBAC7F,QAAQ,GAAG;oBACb,EAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAC;oBACvC,EAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAC;iBACxC,CAAC;gBACF;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAIZ;wBAHC,KAAI,CAAC,QAAQ,EAAE,CAAC;wBAChB,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,QAAQ,UAAA,EAAC,CAAC,CAAC;wBACtC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;gBACD;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;wBAJC,KAAI,CAAC,QAAQ,EAAE,CAAC;wBAChB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,QAAQ,UAAA,EAAC,CAAC,CAAC;wBACrC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;wBACvC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;gBACG,IAAI,GAAG,IAAI,IAAI,CAAC;oBAClB,IAAI,EAAE,EAAE;iBACT,CAAC,CAAC;gBACC,MAAM,GAAG,CAAC,EAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAC,CAAC,CAAC;gBAClE,WAAM,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,EAAA;;gBAAlC,SAAkC,CAAC;gBACnC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC7C,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;;;;KACvD,CAAC,CAAC;AAEH,gBAAI,CAAC,0CAA0C,EAAE,UAAO,CAAC;;;QACvD;YAAmB,wBAAK;YACtB,cAAa,IAAI;gBAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;gBAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;YACtB,CAAC;YACH,WAAC;QAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;QACD;YAAmB,wBAAK;YACtB,cAAa,IAAI;gBAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;gBAJC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;gBACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;gBAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;YACtB,CAAC;YACH,WAAC;QAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;QACG,IAAI,GAAG,IAAI,IAAI,CAAC;YAClB,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;SAClB,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC;YACf,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;YAC5C,EAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;YACrD,EAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC;SAC1D,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACvD,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;;;KAC5D,CAAC,CAAC;AAEH,gBAAI,CAAC,sDAAsD,EAAE,UAAC,CAAC;IAC7D;QAAmB,wBAAK;QAEtB,cAAa,IAAK;YAAlB,YACE,kBAAM,IAAI,CAAC,SAIZ;YAHC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;QAChB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD;QAAmB,wBAAK;QAItB,cAAa,IAAK;YAAlB,YACE,kBAAM,IAAI,CAAC,SAMZ;YALC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;QAChB,CAAC;QACH,WAAC;IAAD,CAAC,AAZD,CAAmB,WAAK,GAYvB;IACD,IAAI,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;IACxB,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;QAClB,MAAM,QAAA;QACN,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,IAAI;YACJ;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;IACH,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC1B,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAC,IAAI,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,EAAC,CAAC,CAAC;IAChD,CAAC,CAAC,EAAE,CAAC,MAAM,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,8CAA8C,EAAE,UAAO,CAAC;;;;;;gBACvD,MAAM,GAAG,CAAC;wBACZ,OAAO,EAAE,OAAO;wBAChB,OAAO,EAAE,QAAQ;wBACjB,KAAK,EAAE;4BAAY,WAAA,IAAI,EAAA;iCAAA;wBACvB,GAAG,EAAE,KAAK;qBACX,CAAC,CAAC;gBACH;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;wBAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,MAAM,QAAA,EAAC,CAAC,CAAC;wBACpC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;gBACD;oBAAsB,2BAAK;oBACzB,iBAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;wBAFC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;wBACzB,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,cAAC;gBAAD,CAAC,AAND,CAAsB,WAAK,GAM1B;gBACD;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAQZ;wBAPC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,MAAM,QAAA,EAAC,CAAC,CAAC;wBACnC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,MAAM,QAAA,EAAC,CAAC,CAAC;wBAChD,KAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,QAAA,EAAC,CAAC,CAAC;wBACnD,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;wBACxC,KAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;wBAC3C,KAAI,CAAC,WAAW,CAAC,SAAS,EAAE,EAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAC,CAAC,CAAC;wBAC/C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AAXD,CAAmB,WAAK,GAWvB;gBACG,IAAI,GAAG,IAAI,IAAI,CAAC;oBAClB,KAAK,EAAE,EAAE;oBACT,MAAM,EAAE,CAAC,EAAE,CAAC;oBACZ,OAAO,EAAE,EAAE;iBACZ,CAAC,CAAC;gBACC,QAAQ,GAAG,IAAI,KAAK,EAAE,CAAC;gBACvB,QAAQ,GAAG,IAAI,KAAK,EAAS,CAAC;gBAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;gBACnD,MAAM,GAAG,CAAC,EAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAC,CAAC,CAAC;gBAC7D,KAAA,CAAA,KAAA,CAAC,CAAA,CAAC,EAAE,CAAA;gBAAC,WAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC,OAAK,CAAA,CAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,EAAA;;gBAAnE,cAAK,SAA8D,EAAE,KAAK,EAAC,CAAC;gBAC5E,KAAA,CAAA,KAAA,CAAC,CAAA,CAAC,EAAE,CAAA;gBAAC,WAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAC,EAAA;;gBAAjD,cAAK,SAA4C,EAAE,IAAI,EAAC,CAAC;gBACzD,KAAA,CAAA,KAAA,CAAC,CAAA,CAAC,EAAE,CAAA;gBAAC,WAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC,IAAI,CAAC,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAC,EAAA;;gBAAjE,cAAK,SAA4D,EAAE,IAAI,EAAC,CAAC;gBACzE,WAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAA;;gBAA3B,SAA2B,CAAC;gBAC5B,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAQ,EAAE;oBACtC,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,QAAA,EAAC;oBACxB,EAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,QAAA,EAAC;oBACzB,EAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,QAAA,EAAC;oBAC1B,EAAC,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,QAAA,EAAC;oBAClC,EAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,QAAA,EAAC;iBACvC,CAAC,CAAC;;;;KACJ,CAAC,CAAC;AAEH,gBAAI,CAAC,uDAAuD,EAAE,UAAO,CAAC;;;;;gBAChE,OAAO,GAAG,UAAU,CAAC;oBACvB,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC;gBAC9B,CAAC,CAAC;gBACE,MAAM,GAAG,CAAC;wBACZ,OAAO,EAAE,UAAU;wBACnB,OAAO,EAAE,QAAQ;wBACjB,GAAG,EAAE,KAAK;qBACX,CAAC,CAAC;gBACH;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAIZ;wBAHC,KAAI,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;wBACxC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,MAAM,QAAA,EAAC,CAAC,CAAC;wBACpC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;gBACD;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAMZ;wBALC,KAAI,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;wBACxC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,MAAM,QAAA,EAAC,CAAC,CAAC;wBACnC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;wBACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;wBAC1C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AATD,CAAmB,WAAK,GASvB;gBACG,IAAI,GAAG,IAAI,IAAI,CAAC;oBAClB,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,CAAC,EAAE,CAAC;iBACZ,CAAC,CAAC;gBACC,OAAO,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC5B,MAAM,GAAG,CAAC,EAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAC,CAAC,CAAC;gBAChE,WAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAA;;gBAA1B,SAA0B,CAAC;gBAC3B,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAQ,EAAE;oBACtC,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,QAAA,EAAC;oBACxB,EAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,QAAA,EAAC;oBACjC,EAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,QAAA,EAAC;iBACtC,CAAC,CAAC;;;;KACJ,CAAC,CAAC;AAEH,gBAAI,CAAC,gDAAgD,EAAE,UAAC,CAAC;IACvD;QAAoB,yBAAK;QAEvB,eAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAEZ;YADC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,UAAU,EAAE,IAAI,EAAC,CAAC,CAAC;;QAC/C,CAAC;QACH,YAAC;IAAD,CAAC,AAND,CAAoB,WAAK,GAMxB;IACD;QAAoB,yBAAK;QAEvB,eAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAEZ;YADC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAC,UAAU,EAAE,KAAK,EAAC,CAAC,CAAC;;QAChD,CAAC;QACH,YAAC;IAAD,CAAC,AAND,CAAoB,WAAK,GAMxB;IACD,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1B,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/package.json b/package.json index bdfe72a..76e3008 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.12.0", + "version": "1.13.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", diff --git a/src/models.ts b/src/models.ts index fb8ad1b..6994875 100644 --- a/src/models.ts +++ b/src/models.ts @@ -1,4 +1,4 @@ -import {isArray, isUndefined, isPresent, toBoolean} from 'typeable'; +import {isArray, isUndefined, isPresent, toBoolean, isObject} from 'typeable'; import {ValidatorRecipe} from 'validatable'; import {HandlerRecipe} from 'handleable'; import {Field, FieldRecipe, FieldError} from './fields'; @@ -220,6 +220,10 @@ export abstract class Model { */ public populate (data = {}): this { + if (!isObject(data)) { + data = {}; + } + Object.keys(data) .filter((n) => !!this._fields[n]) .forEach((name) => this[name] = serialize(data[name])); diff --git a/tests/models.ts b/tests/models.ts index 73502d7..86457fb 100644 --- a/tests/models.ts +++ b/tests/models.ts @@ -67,6 +67,9 @@ test('method `populate` deeply populates fields', (t) => { } ] }); + user.populate(null); // should not break + user.populate(false); // should not break + user.populate(""); // should not break t.is(user.name, '100'); t.is(user.book.title, '200'); t.is(user.books[0], null); From 1a171446d2f5d998e72f3a8965655c4be56b0f56 Mon Sep 17 00:00:00 2001 From: xpeper Date: Mon, 25 Sep 2017 17:53:37 +0200 Subject: [PATCH 179/219] populate can accept any value --- dist/src/models.js | 5 +---- dist/src/models.js.map | 2 +- dist/tests/models.js | 2 ++ dist/tests/models.js.map | 2 +- package.json | 2 +- src/models.ts | 8 ++------ tests/models.ts | 2 ++ 7 files changed, 10 insertions(+), 13 deletions(-) diff --git a/dist/src/models.js b/dist/src/models.js index 3009fc2..229b5b8 100644 --- a/dist/src/models.js +++ b/dist/src/models.js @@ -155,10 +155,7 @@ var Model = (function () { Model.prototype.populate = function (data) { var _this = this; if (data === void 0) { data = {}; } - if (!typeable_1.isObject(data)) { - data = {}; - } - Object.keys(data) + Object.keys(data || {}) .filter(function (n) { return !!_this._fields[n]; }) .forEach(function (name) { return _this[name] = utils_1.serialize(data[name]); }); return this; diff --git a/dist/src/models.js.map b/dist/src/models.js.map index 59291d0..c6f0455 100644 --- a/dist/src/models.js.map +++ b/dist/src/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/models.js b/dist/tests/models.js index 0d92c63..7ecde91 100644 --- a/dist/tests/models.js +++ b/dist/tests/models.js @@ -120,6 +120,8 @@ ava_1["default"]('method `populate` deeply populates fields', function (t) { user.populate(null); user.populate(false); user.populate(""); + user.populate(true); + user.populate(100); t.is(user.name, '100'); t.is(user.book.title, '200'); t.is(user.books[0], null); diff --git a/dist/tests/models.js.map b/dist/tests/models.js.map index e2d3d9f..e2ae996 100644 --- a/dist/tests/models.js.map +++ b/dist/tests/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 76e3008..31609a2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.13.0", + "version": "1.14.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", diff --git a/src/models.ts b/src/models.ts index 6994875..3de2a2c 100644 --- a/src/models.ts +++ b/src/models.ts @@ -1,4 +1,4 @@ -import {isArray, isUndefined, isPresent, toBoolean, isObject} from 'typeable'; +import {isArray, isUndefined, isPresent, toBoolean} from 'typeable'; import {ValidatorRecipe} from 'validatable'; import {HandlerRecipe} from 'handleable'; import {Field, FieldRecipe, FieldError} from './fields'; @@ -220,11 +220,7 @@ export abstract class Model { */ public populate (data = {}): this { - if (!isObject(data)) { - data = {}; - } - - Object.keys(data) + Object.keys(data || {}) .filter((n) => !!this._fields[n]) .forEach((name) => this[name] = serialize(data[name])); diff --git a/tests/models.ts b/tests/models.ts index 86457fb..e951acd 100644 --- a/tests/models.ts +++ b/tests/models.ts @@ -70,6 +70,8 @@ test('method `populate` deeply populates fields', (t) => { user.populate(null); // should not break user.populate(false); // should not break user.populate(""); // should not break + user.populate(true); // should not break + user.populate(100); // should not break t.is(user.name, '100'); t.is(user.book.title, '200'); t.is(user.books[0], null); From e36ba60cf286cad72bd0a955f0ef2e9364e2001a Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 30 Sep 2017 19:50:30 +0200 Subject: [PATCH 180/219] dependencies --- README.md | 9 +- package-lock.json | 22 +- package.json | 8 +- yarn.lock | 2904 --------------------------------------------- 4 files changed, 18 insertions(+), 2925 deletions(-) delete mode 100644 yarn.lock diff --git a/README.md b/README.md index e870e51..4fae2c3 100644 --- a/README.md +++ b/README.md @@ -68,10 +68,9 @@ let model = new User({ model.name; // => 'John Smith' ``` -Examples are also available inside the `./example` folder. You should also check the links below: +Examples are available inside the `./example` folder. You should also check the links below: -* [graphql-example](https://github.com/xpepermint/graphql-example): A GraphQL application example (intuitive rootValue resolvers using rawmodel.js) -* [vue-example](https://github.com/xpepermint/vue-example): Vue.js example application (server-side rendering, router, vuex store, forms validation with rawmodel.js) +* [RawModel & ExpressJS](https://gist.github.com/xpepermint/887a76bb3b1730709a760053a5ffff97): Using RawModel in ExpressJS actions to validate input data and handling data-related errors. ## Usage @@ -249,7 +248,7 @@ class User extends Model { } let user = new User(); -user.validate().then((err) => { +user.validate().catch((err) => { user.collectErrors(); // -> [{path: ['name'], errors: [{validator: 'presence', message: 'is must be present', code: 422}]}] }); ``` @@ -365,8 +364,6 @@ graphql(schema, '{hello}', root).then((response) => { }); ``` -See [graphql-example](https://github.com/xpepermint/graphql-example) for more. - ## API ### Model Class diff --git a/package-lock.json b/package-lock.json index e2b420c..4613bd7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.12.0", + "version": "1.15.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -2418,9 +2418,9 @@ "dev": true }, "handleable": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/handleable/-/handleable-0.21.0.tgz", - "integrity": "sha512-dmuOfVqbRS8rhExpL8o97nLhTpt3xsBBa2Z4uO6hevUz0eWGDvTqs2yqginJyRAnvafce9SMUAPyiiBxa34x2A==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/handleable/-/handleable-0.22.0.tgz", + "integrity": "sha512-BfBjura70y5AMbRjsfen6jKXkRl0fxdfoVtnrfMx41i73stOnbDtcN5hOUfueUqhpIENzeYSZWjn1AkCUnVePA==", "requires": { "lodash.merge": "4.6.0" } @@ -4114,9 +4114,9 @@ } }, "typeable": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/typeable/-/typeable-2.2.0.tgz", - "integrity": "sha512-46BxIAEtGdIOQm2NiUfaAGzRJiRkvIQEuDeaKg/Ix5zcngGxmRA/QSNc9s/Nf6x35aPoknvtWxoTORlzyV4vuA==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/typeable/-/typeable-2.3.0.tgz", + "integrity": "sha512-+f/MX31R7c7bJJ5Ct4OFI737BcCszvsZGNAO7K+AvFACMACYdSeE63ZjI5UGdYZ6SNskiC57YfSwXD9LcFZBug==" }, "typescript": { "version": "2.5.2", @@ -4224,12 +4224,12 @@ "dev": true }, "validatable": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/validatable/-/validatable-0.27.0.tgz", - "integrity": "sha512-zfdtidDEuXN4PKZVcjWdzHJ26dj8P5DCbsqNFhBXSzrOrJa6Q+ySJ/I0KH/5WnsMTuJPXqIxK7MlUcdZQggT4g==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/validatable/-/validatable-0.28.0.tgz", + "integrity": "sha512-TFO+RtBPTUT+gKbihuRJR6vR53MdSR9JYiRoviICtG69SD0qucnj95vrmQr8df3rvw6s+iYlMYhPw7MmfYzZ2A==", "requires": { "lodash.merge": "4.6.0", - "typeable": "2.2.0" + "typeable": "2.3.0" } }, "validate-npm-package-license": { diff --git a/package.json b/package.json index 31609a2..9a7e160 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.14.0", + "version": "1.15.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -74,10 +74,10 @@ "typescript": "^2.5.2" }, "dependencies": { - "handleable": "^0.21.0", + "handleable": "^0.22.0", "lodash.isequal": "^4.5.0", "lodash.merge": "^4.6.0", - "typeable": "^2.2.0", - "validatable": "^0.27.0" + "typeable": "^2.3.0", + "validatable": "^0.28.0" } } diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 83a4fe7..0000000 --- a/yarn.lock +++ /dev/null @@ -1,2904 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ava/babel-plugin-throws-helper@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@ava/babel-plugin-throws-helper/-/babel-plugin-throws-helper-2.0.0.tgz#2fc1fe3c211a71071a4eca7b8f7af5842cd1ae7c" - -"@ava/babel-preset-stage-4@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@ava/babel-preset-stage-4/-/babel-preset-stage-4-1.0.0.tgz#a613b5e152f529305422546b072d47facfb26291" - dependencies: - babel-plugin-check-es2015-constants "^6.8.0" - babel-plugin-syntax-trailing-function-commas "^6.20.0" - babel-plugin-transform-async-to-generator "^6.16.0" - babel-plugin-transform-es2015-destructuring "^6.19.0" - babel-plugin-transform-es2015-function-name "^6.9.0" - babel-plugin-transform-es2015-modules-commonjs "^6.18.0" - babel-plugin-transform-es2015-parameters "^6.21.0" - babel-plugin-transform-es2015-spread "^6.8.0" - babel-plugin-transform-es2015-sticky-regex "^6.8.0" - babel-plugin-transform-es2015-unicode-regex "^6.11.0" - babel-plugin-transform-exponentiation-operator "^6.8.0" - package-hash "^1.2.0" - -"@ava/babel-preset-transform-test-files@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@ava/babel-preset-transform-test-files/-/babel-preset-transform-test-files-3.0.0.tgz#cded1196a8d8d9381a509240ab92e91a5ec069f7" - dependencies: - "@ava/babel-plugin-throws-helper" "^2.0.0" - babel-plugin-espower "^2.3.2" - -"@ava/pretty-format@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@ava/pretty-format/-/pretty-format-1.1.0.tgz#d0a57d25eb9aeab9643bdd1a030642b91c123e28" - dependencies: - ansi-styles "^2.2.1" - esutils "^2.0.2" - -"@types/node@^7.0.14": - version "7.0.14" - resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.14.tgz#1470fa002a113316ac9d9ad163fc738c7a0de2a4" - -abbrev@1: - version "1.0.9" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" - -ansi-align@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba" - dependencies: - string-width "^1.0.1" - -ansi-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.0.0.tgz#c5061b6e0ef8a81775e50f5d66151bf6bf371107" - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - -ansi-styles@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.0.0.tgz#5404e93a544c4fec7f048262977bebfe3155e0c1" - dependencies: - color-convert "^1.0.0" - -ansi-styles@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" - -anymatch@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" - dependencies: - arrify "^1.0.0" - micromatch "^2.1.5" - -aproba@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0" - -are-we-there-yet@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3" - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.0 || ^1.1.13" - -argparse@^1.0.7: - version "1.0.9" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" - dependencies: - sprintf-js "~1.0.2" - -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - dependencies: - arr-flatten "^1.0.1" - -arr-exclude@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/arr-exclude/-/arr-exclude-1.0.0.tgz#dfc7c2e552a270723ccda04cf3128c8cbfe5c631" - -arr-flatten@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b" - -array-differ@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" - -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1, array-uniq@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - -arrify@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - -asn1@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" - -assert-plus@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" - -assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - -async-each@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - -auto-bind@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-1.1.0.tgz#93b864dc7ee01a326281775d5c75ca0a751e5961" - -ava-init@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/ava-init/-/ava-init-0.2.0.tgz#9304c8b4c357d66e3dfdae1fbff47b1199d5c55d" - dependencies: - arr-exclude "^1.0.0" - execa "^0.5.0" - has-yarn "^1.0.0" - read-pkg-up "^2.0.0" - write-pkg "^2.0.0" - -ava@^0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/ava/-/ava-0.19.1.tgz#43dd82435ad19b3980ffca2488f05daab940b273" - dependencies: - "@ava/babel-preset-stage-4" "^1.0.0" - "@ava/babel-preset-transform-test-files" "^3.0.0" - "@ava/pretty-format" "^1.1.0" - arr-flatten "^1.0.1" - array-union "^1.0.1" - array-uniq "^1.0.2" - arrify "^1.0.0" - auto-bind "^1.1.0" - ava-init "^0.2.0" - babel-code-frame "^6.16.0" - babel-core "^6.17.0" - bluebird "^3.0.0" - caching-transform "^1.0.0" - chalk "^1.0.0" - chokidar "^1.4.2" - clean-stack "^1.1.1" - clean-yaml-object "^0.1.0" - cli-cursor "^2.1.0" - cli-spinners "^1.0.0" - cli-truncate "^1.0.0" - co-with-promise "^4.6.0" - code-excerpt "^2.1.0" - common-path-prefix "^1.0.0" - convert-source-map "^1.2.0" - core-assert "^0.2.0" - currently-unhandled "^0.4.1" - debug "^2.2.0" - diff "^3.0.1" - diff-match-patch "^1.0.0" - dot-prop "^4.1.0" - empower-core "^0.6.1" - equal-length "^1.0.0" - figures "^2.0.0" - find-cache-dir "^0.1.1" - fn-name "^2.0.0" - get-port "^3.0.0" - globby "^6.0.0" - has-flag "^2.0.0" - hullabaloo-config-manager "^1.0.0" - ignore-by-default "^1.0.0" - indent-string "^3.0.0" - is-ci "^1.0.7" - is-generator-fn "^1.0.0" - is-obj "^1.0.0" - is-observable "^0.2.0" - is-promise "^2.1.0" - jest-diff "19.0.0" - jest-snapshot "19.0.2" - js-yaml "^3.8.2" - last-line-stream "^1.0.0" - lodash.debounce "^4.0.3" - lodash.difference "^4.3.0" - lodash.flatten "^4.2.0" - lodash.isequal "^4.5.0" - loud-rejection "^1.2.0" - matcher "^0.1.1" - md5-hex "^2.0.0" - meow "^3.7.0" - mkdirp "^0.5.1" - ms "^0.7.1" - multimatch "^2.1.0" - observable-to-promise "^0.5.0" - option-chain "^0.1.0" - package-hash "^2.0.0" - pkg-conf "^2.0.0" - plur "^2.0.0" - pretty-ms "^2.0.0" - require-precompiled "^0.1.0" - resolve-cwd "^1.0.0" - slash "^1.0.0" - source-map-support "^0.4.0" - stack-utils "^1.0.0" - strip-ansi "^3.0.1" - strip-bom-buf "^1.0.0" - supports-color "^3.2.3" - time-require "^0.1.2" - unique-temp-dir "^1.0.0" - update-notifier "^2.1.0" - -aws-sign2@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" - -aws4@^1.2.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755" - -babel-code-frame@^6.16.0: - version "6.20.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.20.0.tgz#b968f839090f9a8bc6d41938fb96cb84f7387b26" - dependencies: - chalk "^1.1.0" - esutils "^2.0.2" - js-tokens "^2.0.0" - -babel-code-frame@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" - dependencies: - chalk "^1.1.0" - esutils "^2.0.2" - js-tokens "^3.0.0" - -babel-core@^6.17.0, babel-core@^6.18.0: - version "6.18.2" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.18.2.tgz#d8bb14dd6986fa4f3566a26ceda3964fa0e04e5b" - dependencies: - babel-code-frame "^6.16.0" - babel-generator "^6.18.0" - babel-helpers "^6.16.0" - babel-messages "^6.8.0" - babel-register "^6.18.0" - babel-runtime "^6.9.1" - babel-template "^6.16.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - babylon "^6.11.0" - convert-source-map "^1.1.0" - debug "^2.1.1" - json5 "^0.5.0" - lodash "^4.2.0" - minimatch "^3.0.2" - path-is-absolute "^1.0.0" - private "^0.1.6" - slash "^1.0.0" - source-map "^0.5.0" - -babel-generator@^6.1.0, babel-generator@^6.18.0: - version "6.19.0" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.19.0.tgz#9b2f244204777a3d6810ec127c673c87b349fac5" - dependencies: - babel-messages "^6.8.0" - babel-runtime "^6.9.0" - babel-types "^6.19.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.2.0" - source-map "^0.5.0" - -babel-helper-builder-binary-assignment-operator-visitor@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.22.0.tgz#29df56be144d81bdeac08262bfa41d2c5e91cdcd" - dependencies: - babel-helper-explode-assignable-expression "^6.22.0" - babel-runtime "^6.22.0" - babel-types "^6.22.0" - -babel-helper-call-delegate@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.22.0.tgz#119921b56120f17e9dae3f74b4f5cc7bcc1b37ef" - dependencies: - babel-helper-hoist-variables "^6.22.0" - babel-runtime "^6.22.0" - babel-traverse "^6.22.0" - babel-types "^6.22.0" - -babel-helper-explode-assignable-expression@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.22.0.tgz#c97bf76eed3e0bae4048121f2b9dae1a4e7d0478" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.22.0" - babel-types "^6.22.0" - -babel-helper-function-name@^6.18.0, babel-helper-function-name@^6.8.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.18.0.tgz#68ec71aeba1f3e28b2a6f0730190b754a9bf30e6" - dependencies: - babel-helper-get-function-arity "^6.18.0" - babel-runtime "^6.0.0" - babel-template "^6.8.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - -babel-helper-get-function-arity@^6.18.0, babel-helper-get-function-arity@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.22.0.tgz#0beb464ad69dc7347410ac6ade9f03a50634f5ce" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.22.0" - -babel-helper-hoist-variables@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.22.0.tgz#3eacbf731d80705845dd2e9718f600cfb9b4ba72" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.22.0" - -babel-helper-regex@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.22.0.tgz#79f532be1647b1f0ee3474b5f5c3da58001d247d" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.22.0" - lodash "^4.2.0" - -babel-helper-remap-async-to-generator@^6.16.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.18.0.tgz#336cdf3cab650bb191b02fc16a3708e7be7f9ce5" - dependencies: - babel-helper-function-name "^6.18.0" - babel-runtime "^6.0.0" - babel-template "^6.16.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - -babel-helpers@^6.16.0: - version "6.16.0" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.16.0.tgz#1095ec10d99279460553e67eb3eee9973d3867e3" - dependencies: - babel-runtime "^6.0.0" - babel-template "^6.16.0" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - dependencies: - babel-runtime "^6.22.0" - -babel-messages@^6.8.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.8.0.tgz#bf504736ca967e6d65ef0adb5a2a5f947c8e0eb9" - dependencies: - babel-runtime "^6.0.0" - -babel-plugin-check-es2015-constants@^6.8.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-espower@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/babel-plugin-espower/-/babel-plugin-espower-2.3.2.tgz#5516b8fcdb26c9f0e1d8160749f6e4c65e71271e" - dependencies: - babel-generator "^6.1.0" - babylon "^6.1.0" - call-matcher "^1.0.0" - core-js "^2.0.0" - espower-location-detector "^1.0.0" - espurify "^1.6.0" - estraverse "^4.1.1" - -babel-plugin-syntax-async-functions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - -babel-plugin-syntax-exponentiation-operator@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" - -babel-plugin-syntax-trailing-function-commas@^6.20.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" - -babel-plugin-transform-async-to-generator@^6.16.0: - version "6.16.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.16.0.tgz#19ec36cb1486b59f9f468adfa42ce13908ca2999" - dependencies: - babel-helper-remap-async-to-generator "^6.16.0" - babel-plugin-syntax-async-functions "^6.8.0" - babel-runtime "^6.0.0" - -babel-plugin-transform-es2015-destructuring@^6.19.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-function-name@^6.9.0: - version "6.9.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.9.0.tgz#8c135b17dbd064e5bba56ec511baaee2fca82719" - dependencies: - babel-helper-function-name "^6.8.0" - babel-runtime "^6.9.0" - babel-types "^6.9.0" - -babel-plugin-transform-es2015-modules-commonjs@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.18.0.tgz#c15ae5bb11b32a0abdcc98a5837baa4ee8d67bcc" - dependencies: - babel-plugin-transform-strict-mode "^6.18.0" - babel-runtime "^6.0.0" - babel-template "^6.16.0" - babel-types "^6.18.0" - -babel-plugin-transform-es2015-parameters@^6.21.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.23.0.tgz#3a2aabb70c8af945d5ce386f1a4250625a83ae3b" - dependencies: - babel-helper-call-delegate "^6.22.0" - babel-helper-get-function-arity "^6.22.0" - babel-runtime "^6.22.0" - babel-template "^6.23.0" - babel-traverse "^6.23.0" - babel-types "^6.23.0" - -babel-plugin-transform-es2015-spread@^6.8.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-sticky-regex@^6.8.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.22.0.tgz#ab316829e866ee3f4b9eb96939757d19a5bc4593" - dependencies: - babel-helper-regex "^6.22.0" - babel-runtime "^6.22.0" - babel-types "^6.22.0" - -babel-plugin-transform-es2015-unicode-regex@^6.11.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.22.0.tgz#8d9cc27e7ee1decfe65454fb986452a04a613d20" - dependencies: - babel-helper-regex "^6.22.0" - babel-runtime "^6.22.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-exponentiation-operator@^6.8.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.22.0.tgz#d57c8335281918e54ef053118ce6eb108468084d" - dependencies: - babel-helper-builder-binary-assignment-operator-visitor "^6.22.0" - babel-plugin-syntax-exponentiation-operator "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-strict-mode@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.18.0.tgz#df7cf2991fe046f44163dcd110d5ca43bc652b9d" - dependencies: - babel-runtime "^6.0.0" - babel-types "^6.18.0" - -babel-register@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.18.0.tgz#892e2e03865078dd90ad2c715111ec4449b32a68" - dependencies: - babel-core "^6.18.0" - babel-runtime "^6.11.6" - core-js "^2.4.0" - home-or-tmp "^2.0.0" - lodash "^4.2.0" - mkdirp "^0.5.1" - source-map-support "^0.4.2" - -babel-runtime@^6.0.0, babel-runtime@^6.11.6, babel-runtime@^6.22.0, babel-runtime@^6.9.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.10.0" - -babel-runtime@^6.9.1: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.18.0.tgz#0f4177ffd98492ef13b9f823e9994a02584c9078" - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.9.5" - -babel-template@^6.16.0: - version "6.16.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.16.0.tgz#e149dd1a9f03a35f817ddbc4d0481988e7ebc8ca" - dependencies: - babel-runtime "^6.9.0" - babel-traverse "^6.16.0" - babel-types "^6.16.0" - babylon "^6.11.0" - lodash "^4.2.0" - -babel-template@^6.23.0, babel-template@^6.8.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.23.0.tgz#04d4f270adbb3aa704a8143ae26faa529238e638" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.23.0" - babel-types "^6.23.0" - babylon "^6.11.0" - lodash "^4.2.0" - -babel-traverse@^6.16.0, babel-traverse@^6.22.0, babel-traverse@^6.23.0: - version "6.23.1" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48" - dependencies: - babel-code-frame "^6.22.0" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-types "^6.23.0" - babylon "^6.15.0" - debug "^2.2.0" - globals "^9.0.0" - invariant "^2.2.0" - lodash "^4.2.0" - -babel-traverse@^6.18.0: - version "6.19.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.19.0.tgz#68363fb821e26247d52a519a84b2ceab8df4f55a" - dependencies: - babel-code-frame "^6.16.0" - babel-messages "^6.8.0" - babel-runtime "^6.9.0" - babel-types "^6.19.0" - babylon "^6.11.0" - debug "^2.2.0" - globals "^9.0.0" - invariant "^2.2.0" - lodash "^4.2.0" - -babel-types@^6.16.0, babel-types@^6.19.0, babel-types@^6.22.0, babel-types@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf" - dependencies: - babel-runtime "^6.22.0" - esutils "^2.0.2" - lodash "^4.2.0" - to-fast-properties "^1.0.1" - -babel-types@^6.18.0, babel-types@^6.9.0: - version "6.19.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.19.0.tgz#8db2972dbed01f1192a8b602ba1e1e4c516240b9" - dependencies: - babel-runtime "^6.9.1" - esutils "^2.0.2" - lodash "^4.2.0" - to-fast-properties "^1.0.1" - -babylon@^6.1.0, babylon@^6.11.0: - version "6.14.1" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.14.1.tgz#956275fab72753ad9b3435d7afe58f8bf0a29815" - -babylon@^6.15.0: - version "6.16.1" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3" - -balanced-match@^0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" - -bcrypt-pbkdf@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz#3ca76b85241c7170bf7d9703e7b9aa74630040d4" - dependencies: - tweetnacl "^0.14.3" - -binary-extensions@^1.0.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" - -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - dependencies: - inherits "~2.0.0" - -bluebird@^3.0.0: - version "3.4.6" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.6.tgz#01da8d821d87813d158967e743d5fe6c62cf8c0f" - -boom@2.x.x: - version "2.10.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" - dependencies: - hoek "2.x.x" - -boxen@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.0.0.tgz#b2694baf1f605f708ff0177c12193b22f29aaaab" - dependencies: - ansi-align "^1.1.0" - camelcase "^4.0.0" - chalk "^1.1.1" - cli-boxes "^1.0.0" - string-width "^2.0.0" - term-size "^0.1.0" - widest-line "^1.0.0" - -brace-expansion@^1.0.0: - version "1.1.6" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" - dependencies: - balanced-match "^0.4.1" - concat-map "0.0.1" - -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - -buf-compare@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/buf-compare/-/buf-compare-1.0.1.tgz#fef28da8b8113a0a0db4430b0b6467b69730b34a" - -buffer-shims@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" - -builtin-modules@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - -caching-transform@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-1.0.1.tgz#6dbdb2f20f8d8fbce79f3e94e9d1742dcdf5c0a1" - dependencies: - md5-hex "^1.2.0" - mkdirp "^0.5.1" - write-file-atomic "^1.1.4" - -call-matcher@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/call-matcher/-/call-matcher-1.0.0.tgz#eafa31036dbfaa9c0d1716f12ddacfd9c69ef22f" - dependencies: - core-js "^2.0.0" - deep-equal "^1.0.0" - espurify "^1.6.0" - estraverse "^4.0.0" - -call-signature@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/call-signature/-/call-signature-0.0.2.tgz#a84abc825a55ef4cb2b028bd74e205a65b9a4996" - -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" - -camelcase@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - -camelcase@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - -capture-stack-trace@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" - -caseless@~0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" - -chalk@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" - dependencies: - ansi-styles "~1.0.0" - has-color "~0.1.0" - strip-ansi "~0.1.0" - -chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chokidar@^1.4.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2" - dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - optionalDependencies: - fsevents "^1.0.0" - -ci-info@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.0.0.tgz#dc5285f2b4e251821683681c381c3388f46ec534" - -clean-stack@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-1.1.1.tgz#a1b3711122df162df7c7cb9b3c0470f28cb58adb" - -clean-yaml-object@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz#63fb110dc2ce1a84dc21f6d9334876d010ae8b68" - -cli-boxes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" - -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - dependencies: - restore-cursor "^2.0.0" - -cli-spinners@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.0.0.tgz#ef987ed3d48391ac3dab9180b406a742180d6e6a" - -cli-truncate@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-1.0.0.tgz#21eb91f47b3f6560f004db77a769b4668d9c5518" - dependencies: - slice-ansi "0.0.4" - string-width "^2.0.0" - -co-with-promise@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co-with-promise/-/co-with-promise-4.6.0.tgz#413e7db6f5893a60b942cf492c4bec93db415ab7" - dependencies: - pinkie-promise "^1.0.0" - -code-excerpt@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/code-excerpt/-/code-excerpt-2.1.0.tgz#5dcc081e88f4a7e3b554e9e35d7ef232d47f8147" - dependencies: - convert-to-spaces "^1.0.1" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - -color-convert@^1.0.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" - dependencies: - color-name "^1.1.1" - -color-name@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.2.tgz#5c8ab72b64bd2215d617ae9559ebb148475cf98d" - -colors@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" - -combined-stream@^1.0.5, combined-stream@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" - dependencies: - delayed-stream "~1.0.0" - -commander@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" - dependencies: - graceful-readlink ">= 1.0.0" - -common-path-prefix@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-1.0.0.tgz#cd52f6f0712e0baab97d6f9732874f22f47752c0" - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - -configstore@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.0.0.tgz#e1b8669c1803ccc50b545e92f8e6e79aa80e0196" - dependencies: - dot-prop "^4.1.0" - graceful-fs "^4.1.2" - mkdirp "^0.5.0" - unique-string "^1.0.0" - write-file-atomic "^1.1.2" - xdg-basedir "^3.0.0" - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - -convert-source-map@^1.1.0, convert-source-map@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.3.0.tgz#e9f3e9c6e2728efc2676696a70eb382f73106a67" - -convert-to-spaces@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz#7e3e48bbe6d997b1417ddca2868204b4d3d85715" - -core-assert@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/core-assert/-/core-assert-0.2.1.tgz#f85e2cf9bfed28f773cc8b3fa5c5b69bdc02fe3f" - dependencies: - buf-compare "^1.0.0" - is-error "^2.2.0" - -core-js@^2.0.0, core-js@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" - -core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - -create-error-class@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" - dependencies: - capture-stack-trace "^1.0.0" - -cross-spawn-async@^2.1.1: - version "2.2.5" - resolved "https://registry.yarnpkg.com/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz#845ff0c0834a3ded9d160daca6d390906bb288cc" - dependencies: - lru-cache "^4.0.0" - which "^1.2.8" - -cross-spawn@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - -cryptiles@2.x.x: - version "2.0.5" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" - dependencies: - boom "2.x.x" - -crypto-random-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" - -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - dependencies: - array-find-index "^1.0.1" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - dependencies: - assert-plus "^1.0.0" - -date-time@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/date-time/-/date-time-0.1.1.tgz#ed2f6d93d9790ce2fd66d5b5ff3edd5bbcbf3b07" - -debug@^2.1.1, debug@^2.2.0: - version "2.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" - dependencies: - ms "0.7.2" - -debug@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" - dependencies: - ms "0.7.1" - -decamelize@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - -deep-equal@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" - -deep-extend@~0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - dependencies: - repeating "^2.0.0" - -diff-match-patch@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.0.tgz#1cc3c83a490d67f95d91e39f6ad1f2e086b63048" - -diff@^3.0.0, diff@^3.0.1, diff@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" - -dot-prop@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.1.1.tgz#a8493f0b7b5eeec82525b5c7587fa7de7ca859c1" - dependencies: - is-obj "^1.0.0" - -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - -ecc-jsbn@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" - dependencies: - jsbn "~0.1.0" - -empower-core@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/empower-core/-/empower-core-0.6.1.tgz#6c187f502fcef7554d57933396aac655483772b1" - dependencies: - call-signature "0.0.2" - core-js "^2.0.0" - -equal-length@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/equal-length/-/equal-length-1.0.1.tgz#21ca112d48ab24b4e1e7ffc0e5339d31fdfc274c" - -error-ex@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9" - dependencies: - is-arrayish "^0.2.1" - -es6-error@^4.0.1, es6-error@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.0.2.tgz#eec5c726eacef51b7f6b73c20db6e1b13b069c98" - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - -espower-location-detector@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/espower-location-detector/-/espower-location-detector-1.0.0.tgz#a17b7ecc59d30e179e2bef73fb4137704cb331b5" - dependencies: - is-url "^1.2.1" - path-is-absolute "^1.0.0" - source-map "^0.5.0" - xtend "^4.0.0" - -esprima@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - -espurify@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/espurify/-/espurify-1.6.0.tgz#6cb993582d9422bd6f2d4b258aadb14833f394f0" - dependencies: - core-js "^2.0.0" - -estraverse@^4.0.0, estraverse@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - -esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - -execa@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.4.0.tgz#4eb6467a36a095fabb2970ff9d5e3fb7bce6ebc3" - dependencies: - cross-spawn-async "^2.1.1" - is-stream "^1.1.0" - npm-run-path "^1.0.0" - object-assign "^4.0.1" - path-key "^1.0.0" - strip-eof "^1.0.0" - -execa@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.5.1.tgz#de3fb85cb8d6e91c85bcbceb164581785cb57b36" - dependencies: - cross-spawn "^4.0.0" - get-stream "^2.2.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - dependencies: - is-posix-bracket "^0.1.0" - -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - dependencies: - fill-range "^2.1.0" - -extend@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" - -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - dependencies: - is-extglob "^1.0.0" - -extsprintf@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - dependencies: - escape-string-regexp "^1.0.5" - -filename-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775" - -fill-range@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^1.1.3" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - -find-cache-dir@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" - dependencies: - commondir "^1.0.1" - mkdirp "^0.5.1" - pkg-dir "^1.0.0" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - dependencies: - locate-path "^2.0.0" - -findup-sync@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16" - dependencies: - glob "~5.0.0" - -fn-name@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7" - -for-in@^0.1.5: - version "0.1.6" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.6.tgz#c9f96e89bfad18a545af5ec3ed352a1d9e5b4dc8" - -for-own@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.4.tgz#0149b41a39088c7515f51ebe1c1386d45f935072" - dependencies: - for-in "^0.1.5" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - -form-data@~2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4" - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.12" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - -fsevents@^1.0.0: - version "1.0.15" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.0.15.tgz#fa63f590f3c2ad91275e4972a6cea545fb0aae44" - dependencies: - nan "^2.3.0" - node-pre-gyp "^0.6.29" - -fstream-ignore@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" - dependencies: - fstream "^1.0.0" - inherits "2" - minimatch "^3.0.0" - -fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822" - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - -gauge@~2.7.1: - version "2.7.2" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.2.tgz#15cecc31b02d05345a5d6b0e171cdb3ad2307774" - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - supports-color "^0.2.0" - wide-align "^1.1.0" - -generate-function@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" - -generate-object-property@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" - dependencies: - is-property "^1.0.0" - -get-port@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.1.0.tgz#ef01b18a84ca6486970ff99e54446141a73ffd3e" - -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - -get-stream@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" - dependencies: - object-assign "^4.0.1" - pinkie-promise "^2.0.0" - -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - -getpass@^0.1.1: - version "0.1.6" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6" - dependencies: - assert-plus "^1.0.0" - -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - dependencies: - is-glob "^2.0.0" - -glob@^7.0.3, glob@^7.0.5, glob@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.2" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@~5.0.0: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^9.0.0: - version "9.14.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.14.0.tgz#8859936af0038741263053b39d0e76ca241e4034" - -globby@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -got@^6.7.1: - version "6.7.1" - resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" - dependencies: - create-error-class "^3.0.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - unzip-response "^2.0.1" - url-parse-lax "^1.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" - -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - -handleable@^0.20.1: - version "0.20.1" - resolved "https://registry.yarnpkg.com/handleable/-/handleable-0.20.1.tgz#2f601cfdb2721483bc3778a239f01244ad9eaff8" - dependencies: - lodash.merge "^4.6.0" - -har-validator@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" - dependencies: - chalk "^1.1.1" - commander "^2.9.0" - is-my-json-valid "^2.12.4" - pinkie-promise "^2.0.0" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - dependencies: - ansi-regex "^2.0.0" - -has-color@~0.1.0: - version "0.1.7" - resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" - -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - -has-yarn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-1.0.0.tgz#89e25db604b725c8f5976fff0addc921b828a5a7" - -hawk@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" - dependencies: - boom "2.x.x" - cryptiles "2.x.x" - hoek "2.x.x" - sntp "1.x.x" - -hoek@2.x.x: - version "2.16.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" - -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - -hosted-git-info@^2.1.4: - version "2.1.5" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b" - -http-signature@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" - dependencies: - assert-plus "^0.2.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -hullabaloo-config-manager@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hullabaloo-config-manager/-/hullabaloo-config-manager-1.0.1.tgz#c72be7ba249a67c99b6ba3eb1f55837fa01acd8f" - dependencies: - dot-prop "^4.1.0" - es6-error "^4.0.2" - graceful-fs "^4.1.11" - indent-string "^3.1.0" - json5 "^0.5.1" - lodash.clonedeep "^4.5.0" - lodash.clonedeepwith "^4.5.0" - lodash.isequal "^4.5.0" - lodash.merge "^4.6.0" - md5-hex "^2.0.0" - package-hash "^2.0.0" - pkg-dir "^1.0.0" - resolve-from "^2.0.0" - -ignore-by-default@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - dependencies: - repeating "^2.0.0" - -indent-string@^3.0.0, indent-string@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.1.0.tgz#08ff4334603388399b329e6b9538dc7a3cf5de7d" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -ini@~1.3.0: - version "1.3.4" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" - -invariant@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" - dependencies: - loose-envify "^1.0.0" - -irregular-plurals@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-1.2.0.tgz#38f299834ba8c00c30be9c554e137269752ff3ac" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - dependencies: - binary-extensions "^1.0.0" - -is-buffer@^1.0.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b" - -is-builtin-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" - dependencies: - builtin-modules "^1.0.0" - -is-ci@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e" - dependencies: - ci-info "^1.0.0" - -is-dotfile@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - dependencies: - is-primitive "^2.0.0" - -is-error@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-error/-/is-error-2.2.1.tgz#684a96d84076577c98f4cdb40c6d26a5123bf19c" - -is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - -is-finite@^1.0.0, is-finite@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - -is-generator-fn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a" - -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - dependencies: - is-extglob "^1.0.0" - -is-my-json-valid@^2.12.4: - version "2.15.0" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b" - dependencies: - generate-function "^2.0.0" - generate-object-property "^1.1.0" - jsonpointer "^4.0.0" - xtend "^4.0.0" - -is-npm@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" - -is-number@^2.0.2, is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - dependencies: - kind-of "^3.0.2" - -is-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - -is-observable@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-0.2.0.tgz#b361311d83c6e5d726cabf5e250b0237106f5ae2" - dependencies: - symbol-observable "^0.2.2" - -is-plain-obj@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - -is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - -is-property@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" - -is-redirect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" - -is-retry-allowed@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" - -is-stream@^1.0.0, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - -is-url@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.2.tgz#498905a593bf47cc2d9e7f738372bbf7696c7f26" - -is-utf8@^0.2.0, is-utf8@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - -isexe@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0" - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - dependencies: - isarray "1.0.0" - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - -jest-diff@19.0.0, jest-diff@^19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-19.0.0.tgz#d1563cfc56c8b60232988fbc05d4d16ed90f063c" - dependencies: - chalk "^1.1.3" - diff "^3.0.0" - jest-matcher-utils "^19.0.0" - pretty-format "^19.0.0" - -jest-file-exists@^19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/jest-file-exists/-/jest-file-exists-19.0.0.tgz#cca2e587a11ec92e24cfeab3f8a94d657f3fceb8" - -jest-matcher-utils@^19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-19.0.0.tgz#5ecd9b63565d2b001f61fbf7ec4c7f537964564d" - dependencies: - chalk "^1.1.3" - pretty-format "^19.0.0" - -jest-message-util@^19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-19.0.0.tgz#721796b89c0e4d761606f9ba8cb828a3b6246416" - dependencies: - chalk "^1.1.1" - micromatch "^2.3.11" - -jest-mock@^19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-19.0.0.tgz#67038641e9607ab2ce08ec4a8cb83aabbc899d01" - -jest-snapshot@19.0.2: - version "19.0.2" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-19.0.2.tgz#9c1b216214f7187c38bfd5c70b1efab16b0ff50b" - dependencies: - chalk "^1.1.3" - jest-diff "^19.0.0" - jest-file-exists "^19.0.0" - jest-matcher-utils "^19.0.0" - jest-util "^19.0.2" - natural-compare "^1.4.0" - pretty-format "^19.0.0" - -jest-util@^19.0.2: - version "19.0.2" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-19.0.2.tgz#e0a0232a2ab9e6b2b53668bdb3534c2b5977ed41" - dependencies: - chalk "^1.1.1" - graceful-fs "^4.1.6" - jest-file-exists "^19.0.0" - jest-message-util "^19.0.0" - jest-mock "^19.0.0" - jest-validate "^19.0.2" - leven "^2.0.0" - mkdirp "^0.5.1" - -jest-validate@^19.0.2: - version "19.0.2" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-19.0.2.tgz#dc534df5f1278d5b63df32b14241d4dbf7244c0c" - dependencies: - chalk "^1.1.1" - jest-matcher-utils "^19.0.0" - leven "^2.0.0" - pretty-format "^19.0.0" - -jodid25519@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" - dependencies: - jsbn "~0.1.0" - -js-tokens@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-2.0.0.tgz#79903f5563ee778cc1162e6dcf1a0027c97f9cb5" - -js-tokens@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" - -js-yaml@^3.8.2: - version "3.8.3" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.3.tgz#33a05ec481c850c8875929166fe1beb61c728766" - dependencies: - argparse "^1.0.7" - esprima "^3.1.1" - -jsbn@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd" - -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - -json5@^0.5.0, json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - -jsonpointer@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.0.tgz#6661e161d2fc445f19f98430231343722e1fcbd5" - -jsprim@^1.2.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252" - dependencies: - extsprintf "1.0.2" - json-schema "0.2.3" - verror "1.3.6" - -kind-of@^3.0.2: - version "3.0.4" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.0.4.tgz#7b8ecf18a4e17f8269d73b501c9f232c96887a74" - dependencies: - is-buffer "^1.0.2" - -last-line-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/last-line-stream/-/last-line-stream-1.0.0.tgz#d1b64d69f86ff24af2d04883a2ceee14520a5600" - dependencies: - through2 "^2.0.0" - -latest-version@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" - dependencies: - package-json "^4.0.0" - -lazy-req@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-2.0.0.tgz#c9450a363ecdda2e6f0c70132ad4f37f8f06f2b4" - -leven@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" - -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - -lodash.clonedeepwith@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz#6ee30573a03a1a60d670a62ef33c10cf1afdbdd4" - -lodash.debounce@^4.0.3: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - -lodash.difference@^4.3.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" - -lodash.flatten@^4.2.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" - -lodash.flattendeep@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" - -lodash.isequal@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - -lodash.merge@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" - -lodash@^4.2.0: - version "4.17.2" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.2.tgz#34a3055babe04ce42467b607d700072c7ff6bf42" - -loose-envify@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.0.tgz#6b26248c42f6d4fa4b0d8542f78edfcde35642a8" - dependencies: - js-tokens "^2.0.0" - -loud-rejection@^1.0.0, loud-rejection@^1.2.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - -lowercase-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" - -lru-cache@^4.0.0, lru-cache@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" - dependencies: - pseudomap "^1.0.1" - yallist "^2.0.0" - -map-obj@^1.0.0, map-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - -matcher@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/matcher/-/matcher-0.1.2.tgz#ef20cbde64c24c50cc61af5b83ee0b1b8ff00101" - dependencies: - escape-string-regexp "^1.0.4" - -md5-hex@^1.2.0, md5-hex@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-1.3.0.tgz#d2c4afe983c4370662179b8cad145219135046c4" - dependencies: - md5-o-matic "^0.1.1" - -md5-hex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-2.0.0.tgz#d0588e9f1c74954492ecd24ac0ac6ce997d92e33" - dependencies: - md5-o-matic "^0.1.1" - -md5-o-matic@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3" - -meow@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - -micromatch@^2.1.5, micromatch@^2.3.11: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -mime-db@~1.25.0: - version "1.25.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.25.0.tgz#c18dbd7c73a5dbf6f44a024dc0d165a1e7b1c392" - -mime-types@^2.1.12, mime-types@~2.1.7: - version "2.1.13" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.13.tgz#e07aaa9c6c6b9a7ca3012c69003ad25a39e92a88" - dependencies: - mime-db "~1.25.0" - -mimic-fn@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" - -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" - dependencies: - brace-expansion "^1.0.0" - -minimist@0.0.8, minimist@~0.0.1: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - -minimist@^1.1.3, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - -"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - dependencies: - minimist "0.0.8" - -ms@0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" - -ms@0.7.2, ms@^0.7.1: - version "0.7.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" - -multimatch@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" - dependencies: - array-differ "^1.0.0" - array-union "^1.0.1" - arrify "^1.0.0" - minimatch "^3.0.0" - -nan@^2.3.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.4.0.tgz#fb3c59d45fe4effe215f0b890f8adf6eb32d2232" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - -node-pre-gyp@^0.6.29: - version "0.6.32" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.32.tgz#fc452b376e7319b3d255f5f34853ef6fd8fe1fd5" - dependencies: - mkdirp "~0.5.1" - nopt "~3.0.6" - npmlog "^4.0.1" - rc "~1.1.6" - request "^2.79.0" - rimraf "~2.5.4" - semver "~5.3.0" - tar "~2.2.1" - tar-pack "~3.3.0" - -nopt@~3.0.6: - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - dependencies: - abbrev "1" - -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: - version "2.3.5" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df" - dependencies: - hosted-git-info "^2.1.4" - is-builtin-module "^1.0.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a" - -npm-run-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-1.0.0.tgz#f5c32bf595fe81ae927daec52e82f8b000ac3c8f" - dependencies: - path-key "^1.0.0" - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - dependencies: - path-key "^2.0.0" - -npmlog@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.1.tgz#d14f503b4cd79710375553004ba96e6662fbc0b8" - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.1" - set-blocking "~2.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - -oauth-sign@~0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" - -object-assign@^4.0.1, object-assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" - -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - -observable-to-promise@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/observable-to-promise/-/observable-to-promise-0.5.0.tgz#c828f0f0dc47e9f86af8a4977c5d55076ce7a91f" - dependencies: - is-observable "^0.2.0" - symbol-observable "^1.0.4" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - dependencies: - wrappy "1" - -once@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" - dependencies: - wrappy "1" - -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - dependencies: - mimic-fn "^1.0.0" - -optimist@~0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - -option-chain@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/option-chain/-/option-chain-0.1.1.tgz#e9b811e006f1c0f54802f28295bfc8970f8dcfbd" - dependencies: - object-assign "^4.0.1" - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - -os-tmpdir@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - -p-limit@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - dependencies: - p-limit "^1.1.0" - -package-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-1.2.0.tgz#003e56cd57b736a6ed6114cc2b81542672770e44" - dependencies: - md5-hex "^1.3.0" - -package-hash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-2.0.0.tgz#78ae326c89e05a4d813b68601977af05c00d2a0d" - dependencies: - graceful-fs "^4.1.11" - lodash.flattendeep "^4.4.0" - md5-hex "^2.0.0" - release-zalgo "^1.0.0" - -package-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.0.tgz#f3c9dc8738f5b59304d54d2cfb3f91d08fdd7998" - dependencies: - got "^6.7.1" - registry-auth-token "^3.0.1" - registry-url "^3.0.3" - semver "^5.1.0" - -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - dependencies: - error-ex "^1.2.0" - -parse-ms@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-0.1.2.tgz#dd3fa25ed6c2efc7bdde12ad9b46c163aa29224e" - -parse-ms@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-1.0.1.tgz#56346d4749d78f23430ca0c713850aef91aa361d" - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - -path-key@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-1.0.0.tgz#5d53d578019646c0d68800db4e146e6bdc2ac7af" - -path-key@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - -path-parse@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" - -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - dependencies: - pify "^2.0.0" - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - -pinkie-promise@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-1.0.0.tgz#d1da67f5482563bb7cf57f286ae2822ecfbf3670" - dependencies: - pinkie "^1.0.0" - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - dependencies: - pinkie "^2.0.0" - -pinkie@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-1.0.0.tgz#5a47f28ba1015d0201bda7bf0f358e47bec8c7e4" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - -pkg-conf@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.0.0.tgz#071c87650403bccfb9c627f58751bfe47c067279" - dependencies: - find-up "^2.0.0" - load-json-file "^2.0.0" - -pkg-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" - dependencies: - find-up "^1.0.0" - -plur@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/plur/-/plur-1.0.0.tgz#db85c6814f5e5e5a3b49efc28d604fec62975156" - -plur@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/plur/-/plur-2.1.2.tgz#7482452c1a0f508e3e344eaec312c91c29dc655a" - dependencies: - irregular-plurals "^1.0.0" - -prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - -pretty-format@^19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-19.0.0.tgz#56530d32acb98a3fa4851c4e2b9d37b420684c84" - dependencies: - ansi-styles "^3.0.0" - -pretty-ms@^0.2.1: - version "0.2.2" - resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-0.2.2.tgz#da879a682ff33a37011046f13d627f67c73b84f6" - dependencies: - parse-ms "^0.1.0" - -pretty-ms@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-2.1.0.tgz#4257c256df3fb0b451d6affaab021884126981dc" - dependencies: - is-finite "^1.0.1" - parse-ms "^1.0.0" - plur "^1.0.0" - -private@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.6.tgz#55c6a976d0f9bafb9924851350fe47b9b5fbb7c1" - -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" - -pseudomap@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - -punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - -qs@~6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442" - -randomatic@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" - dependencies: - is-number "^2.0.2" - kind-of "^3.0.2" - -rc@^1.0.1, rc@^1.1.6, rc@~1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9" - dependencies: - deep-extend "~0.4.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~1.0.4" - -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - -"readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2, readable-stream@^2.1.5: - version "2.2.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e" - dependencies: - buffer-shims "^1.0.0" - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - -readable-stream@~2.1.4: - version "2.1.5" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" - dependencies: - buffer-shims "^1.0.0" - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - -readdirp@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" - dependencies: - graceful-fs "^4.1.2" - minimatch "^3.0.2" - readable-stream "^2.0.2" - set-immediate-shim "^1.0.1" - -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" - -regenerate@^1.2.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" - -regenerator-runtime@^0.10.0: - version "0.10.3" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e" - -regenerator-runtime@^0.9.5: - version "0.9.6" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz#d33eb95d0d2001a4be39659707c51b0cb71ce029" - -regex-cache@^0.4.2: - version "0.4.3" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" - dependencies: - is-equal-shallow "^0.1.3" - is-primitive "^2.0.0" - -regexpu-core@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -registry-auth-token@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.1.0.tgz#997c08256e0c7999837b90e944db39d8a790276b" - dependencies: - rc "^1.1.6" - -registry-url@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" - dependencies: - rc "^1.0.1" - -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - dependencies: - jsesc "~0.5.0" - -release-zalgo@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" - dependencies: - es6-error "^4.0.1" - -repeat-element@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" - -repeat-string@^1.5.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - dependencies: - is-finite "^1.0.0" - -request@^2.79.0: - version "2.79.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.11.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~2.0.6" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - qs "~6.3.0" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "~0.4.1" - uuid "^3.0.0" - -require-precompiled@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/require-precompiled/-/require-precompiled-0.1.0.tgz#5a1b52eb70ebed43eb982e974c85ab59571e56fa" - -resolve-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-1.0.0.tgz#4eaeea41ed040d1702457df64a42b2b07d246f9f" - dependencies: - resolve-from "^2.0.0" - -resolve-from@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" - -resolve@^1.3.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" - dependencies: - path-parse "^1.0.5" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -rimraf@2, rimraf@~2.5.1, rimraf@~2.5.4: - version "2.5.4" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" - dependencies: - glob "^7.0.5" - -safe-buffer@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" - -semver-diff@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" - dependencies: - semver "^5.0.3" - -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" - -set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - -set-immediate-shim@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - -slice-ansi@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" - -slide@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - -sntp@1.x.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" - dependencies: - hoek "2.x.x" - -sort-keys@^1.1.1, sort-keys@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - dependencies: - is-plain-obj "^1.0.0" - -source-map-support@^0.4.0, source-map-support@^0.4.2: - version "0.4.6" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.6.tgz#32552aa64b458392a85eab3b0b5ee61527167aeb" - dependencies: - source-map "^0.5.3" - -source-map@^0.5.0, source-map@^0.5.3: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" - -spdx-correct@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" - dependencies: - spdx-license-ids "^1.0.2" - -spdx-expression-parse@~1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" - -spdx-license-ids@^1.0.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - -sshpk@^1.7.0: - version "1.10.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.1.tgz#30e1a5d329244974a1af61511339d595af6638b0" - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - dashdash "^1.12.0" - getpass "^0.1.1" - optionalDependencies: - bcrypt-pbkdf "^1.0.0" - ecc-jsbn "~0.1.1" - jodid25519 "^1.0.0" - jsbn "~0.1.0" - tweetnacl "~0.14.0" - -stack-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.0.tgz#2392cd8ddbd222492ed6c047960f7414b46c0f83" - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e" - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^3.0.0" - -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - -stringstream@~0.0.4: - version "0.0.5" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" - -strip-bom-buf@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz#1cb45aaf57530f4caf86c7f75179d2c9a51dd572" - dependencies: - is-utf8 "^0.2.1" - -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - dependencies: - is-utf8 "^0.2.0" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - -strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - dependencies: - get-stdin "^4.0.1" - -strip-json-comments@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" - -supports-color@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - -supports-color@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - dependencies: - has-flag "^1.0.0" - -symbol-observable@^0.2.2: - version "0.2.4" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-0.2.4.tgz#95a83db26186d6af7e7a18dbd9760a2f86d08f40" - -symbol-observable@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" - -tar-pack@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae" - dependencies: - debug "~2.2.0" - fstream "~1.0.10" - fstream-ignore "~1.0.5" - once "~1.3.3" - readable-stream "~2.1.4" - rimraf "~2.5.1" - tar "~2.2.1" - uid-number "~0.0.6" - -tar@~2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" - dependencies: - block-stream "*" - fstream "^1.0.2" - inherits "2" - -term-size@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-0.1.1.tgz#87360b96396cab5760963714cda0d0cbeecad9ca" - dependencies: - execa "^0.4.0" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - -through2@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" - dependencies: - readable-stream "^2.1.5" - xtend "~4.0.1" - -time-require@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/time-require/-/time-require-0.1.2.tgz#f9e12cb370fc2605e11404582ba54ef5ca2b2d98" - dependencies: - chalk "^0.4.0" - date-time "^0.1.1" - pretty-ms "^0.2.1" - text-table "^0.2.0" - -timed-out@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - -to-fast-properties@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320" - -tough-cookie@~2.3.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" - dependencies: - punycode "^1.4.1" - -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - -tslint@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.1.0.tgz#51a47baeeb58956fcd617bd2cf00e2ef0eea2ed9" - dependencies: - babel-code-frame "^6.22.0" - colors "^1.1.2" - diff "^3.2.0" - findup-sync "~0.3.0" - glob "^7.1.1" - optimist "~0.6.0" - resolve "^1.3.2" - semver "^5.3.0" - tsutils "^1.4.0" - -tsutils@^1.4.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-1.8.0.tgz#bf8118ed8e80cd5c9fc7d75728c7963d44ed2f52" - -tunnel-agent@~0.4.1: - version "0.4.3" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.4" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.4.tgz#8c9dbfb52795686f166cd2023794bcf103d13c2b" - -typeable@^2.0.0, typeable@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/typeable/-/typeable-2.0.1.tgz#725ea716d37ba0472cb967c0c66c48b3249f88eb" - -typescript@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.2.2.tgz#606022508479b55ffa368b58fee963a03dfd7b0c" - -uid-number@~0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - -uid2@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82" - -unique-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" - dependencies: - crypto-random-string "^1.0.0" - -unique-temp-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz#6dce95b2681ca003eebfb304a415f9cbabcc5385" - dependencies: - mkdirp "^0.5.1" - os-tmpdir "^1.0.1" - uid2 "0.0.3" - -unzip-response@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" - -update-notifier@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.1.0.tgz#ec0c1e53536b76647a24b77cb83966d9315123d9" - dependencies: - boxen "^1.0.0" - chalk "^1.0.0" - configstore "^3.0.0" - is-npm "^1.0.0" - latest-version "^3.0.0" - lazy-req "^2.0.0" - semver-diff "^2.0.0" - xdg-basedir "^3.0.0" - -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - dependencies: - prepend-http "^1.0.1" - -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - -uuid@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" - -validatable@^0.24.1: - version "0.24.1" - resolved "https://registry.yarnpkg.com/validatable/-/validatable-0.24.1.tgz#9b71c46b5fb633e8235cf5ea6bb69070d1fdd14e" - dependencies: - lodash.merge "^4.6.0" - typeable "^2.0.0" - -validate-npm-package-license@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" - dependencies: - spdx-correct "~1.0.0" - spdx-expression-parse "~1.0.0" - -verror@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" - dependencies: - extsprintf "1.0.2" - -which@^1.2.8, which@^1.2.9: - version "1.2.12" - resolved "https://registry.yarnpkg.com/which/-/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192" - dependencies: - isexe "^1.1.1" - -wide-align@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad" - dependencies: - string-width "^1.0.1" - -widest-line@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c" - dependencies: - string-width "^1.0.1" - -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - -write-file-atomic@^1.1.2, write-file-atomic@^1.1.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.2.0.tgz#14c66d4e4cb3ca0565c28cf3b7a6f3e4d5938fab" - dependencies: - graceful-fs "^4.1.2" - imurmurhash "^0.1.4" - slide "^1.1.5" - -write-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-2.0.0.tgz#0eaec981fcf9288dbc2806cbd26e06ab9bdca4ed" - dependencies: - graceful-fs "^4.1.2" - mkdirp "^0.5.1" - pify "^2.0.0" - sort-keys "^1.1.1" - write-file-atomic "^1.1.2" - -write-pkg@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-2.1.0.tgz#353aa44c39c48c21440f5c08ce6abd46141c9c08" - dependencies: - sort-keys "^1.1.2" - write-json-file "^2.0.0" - -xdg-basedir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" - -xtend@^4.0.0, xtend@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - -yallist@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.0.0.tgz#306c543835f09ee1a4cb23b7bce9ab341c91cdd4" From 580f2cf4683f6d04bf2348c92b0e92c549ede53e Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 14 Oct 2017 21:03:30 +0200 Subject: [PATCH 181/219] constructor null value --- dist/src/fields.js | 3 +++ dist/src/fields.js.map | 2 +- dist/src/models.js | 4 +++- dist/src/models.js.map | 2 +- dist/tests/models.js | 22 ++++++++++++---------- dist/tests/models.js.map | 2 +- package.json | 2 +- src/fields.ts | 4 ++++ src/models.ts | 6 +++++- tests/models.ts | 22 ++++++++++++---------- 10 files changed, 43 insertions(+), 26 deletions(-) diff --git a/dist/src/fields.js b/dist/src/fields.js index b3dd743..aae73da 100644 --- a/dist/src/fields.js +++ b/dist/src/fields.js @@ -43,6 +43,9 @@ var models_1 = require("./models"); var Field = (function () { function Field(recipe) { var _this = this; + if (!recipe) { + recipe = {}; + } this.errors = []; Object.defineProperty(this, '_recipe', { value: Object.freeze(recipe || {}) diff --git a/dist/src/fields.js.map b/dist/src/fields.js.map index 13ab34b..d053e2f 100644 --- a/dist/src/fields.js.map +++ b/dist/src/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/models.js b/dist/src/models.js index 229b5b8..2fa6a6a 100644 --- a/dist/src/models.js +++ b/dist/src/models.js @@ -40,8 +40,10 @@ var fields_1 = require("./fields"); var utils_1 = require("./utils"); var Model = (function () { function Model(recipe) { - if (recipe === void 0) { recipe = {}; } var _this = this; + if (!recipe) { + recipe = {}; + } Object.defineProperty(this, 'parent', { value: recipe.parent || this.parent || null, writable: true diff --git a/dist/src/models.js.map b/dist/src/models.js.map index c6f0455..574b6b5 100644 --- a/dist/src/models.js.map +++ b/dist/src/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/models.js b/dist/tests/models.js index 7ecde91..aa97b17 100644 --- a/dist/tests/models.js +++ b/dist/tests/models.js @@ -105,7 +105,7 @@ ava_1["default"]('method `populate` deeply populates fields', function (t) { } return User; }(src_1.Model)); - var user = new User({ + var user0 = new User({ name: 100, book: { title: 200 @@ -117,15 +117,17 @@ ava_1["default"]('method `populate` deeply populates fields', function (t) { } ] }); - user.populate(null); - user.populate(false); - user.populate(""); - user.populate(true); - user.populate(100); - t.is(user.name, '100'); - t.is(user.book.title, '200'); - t.is(user.books[0], null); - t.is(user.books[1].title, '300'); + var user1 = new User(null); + user0.populate(null); + user0.populate(false); + user0.populate(""); + user0.populate(true); + user0.populate(100); + t.is(user0.name, '100'); + t.is(user0.book.title, '200'); + t.is(user0.books[0], null); + t.is(user0.books[1].title, '300'); + t.is(user1.name, null); }); ava_1["default"]('property `parent` holds an instance of a parent model', function (t) { var Book = (function (_super) { diff --git a/dist/tests/models.js.map b/dist/tests/models.js.map index e2ae996..c0641eb 100644 --- a/dist/tests/models.js.map +++ b/dist/tests/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 9a7e160..b2b9ceb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.15.0", + "version": "1.16.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", diff --git a/src/fields.ts b/src/fields.ts index c232d9d..1d38eb5 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -60,6 +60,10 @@ export class Field { */ public constructor (recipe?: FieldRecipe) { + if (!recipe) { + recipe = {}; + } + this.errors = []; Object.defineProperty(this, '_recipe', { diff --git a/src/models.ts b/src/models.ts index 3de2a2c..cb8c34a 100644 --- a/src/models.ts +++ b/src/models.ts @@ -48,7 +48,11 @@ export abstract class Model { * Class constructor. */ - public constructor (recipe: ModelRecipe = {}) { + public constructor (recipe?: ModelRecipe) { + if (!recipe) { + recipe = {}; + } + Object.defineProperty(this, 'parent', { value: recipe.parent || this.parent || null, writable: true diff --git a/tests/models.ts b/tests/models.ts index e951acd..8982925 100644 --- a/tests/models.ts +++ b/tests/models.ts @@ -55,7 +55,7 @@ test('method `populate` deeply populates fields', (t) => { this.populate(data); } } - let user = new User({ + let user0 = new User({ name: 100, book: { title: 200 @@ -67,15 +67,17 @@ test('method `populate` deeply populates fields', (t) => { } ] }); - user.populate(null); // should not break - user.populate(false); // should not break - user.populate(""); // should not break - user.populate(true); // should not break - user.populate(100); // should not break - t.is(user.name, '100'); - t.is(user.book.title, '200'); - t.is(user.books[0], null); - t.is(user.books[1].title, '300'); + let user1 = new User(null); + user0.populate(null); // should not break + user0.populate(false); // should not break + user0.populate(""); // should not break + user0.populate(true); // should not break + user0.populate(100); // should not break + t.is(user0.name, '100'); + t.is(user0.book.title, '200'); + t.is(user0.books[0], null); + t.is(user0.books[1].title, '300'); + t.is(user1.name, null); }); test('property `parent` holds an instance of a parent model', (t) => { From 30e8e26ac20ad83840e12b09c0c9d71b5c0dfd35 Mon Sep 17 00:00:00 2001 From: xpeper Date: Wed, 18 Oct 2017 10:30:23 +0200 Subject: [PATCH 182/219] latest typescript utils fix --- dist/src/fields.js.map | 2 +- dist/src/models.js.map | 2 +- dist/src/utils.d.ts | 4 +- dist/src/utils.js.map | 2 +- package-lock.json | 240 ++++++++++++++++++++++------------------- package.json | 8 +- src/utils.ts | 4 +- 7 files changed, 142 insertions(+), 120 deletions(-) diff --git a/dist/src/fields.js.map b/dist/src/fields.js.map index d053e2f..a91c541 100644 --- a/dist/src/fields.js.map +++ b/dist/src/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/models.js.map b/dist/src/models.js.map index 574b6b5..a1b7272 100644 --- a/dist/src/models.js.map +++ b/dist/src/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/utils.d.ts b/dist/src/utils.d.ts index a72619e..1f2d71b 100644 --- a/dist/src/utils.d.ts +++ b/dist/src/utils.d.ts @@ -1,5 +1,5 @@ -import * as merge from 'lodash.merge'; -import * as isEqual from 'lodash.isequal'; +import merge = require('lodash.merge'); +import isEqual = require('lodash.isequal'); export { merge }; export { isEqual }; export declare function serialize(data: any): any; diff --git a/dist/src/utils.js.map b/dist/src/utils.js.map index 472bd80..6e71bd7 100644 --- a/dist/src/utils.js.map +++ b/dist/src/utils.js.map @@ -1 +1 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;AAAA,oCAAsC;AAO9B,sBAAK;AANb,wCAA0C;AAYlC,0BAAO;AAMf,mBAA2B,IAAS;IAClC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC;AAFD,8BAEC"} \ No newline at end of file +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;AAAA,oCAAuC;AAO/B,sBAAK;AANb,wCAA2C;AAYnC,0BAAO;AAMf,mBAA2B,IAAS;IAClC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC;AAFD,8BAEC"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 4613bd7..0368e07 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.15.0", + "version": "1.17.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -80,10 +80,34 @@ "arrify": "1.0.1" } }, + "@types/lodash": { + "version": "4.14.77", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.77.tgz", + "integrity": "sha512-sRCTcVQkIiQqRoQcazgN2PvRLS7d9BnSl8elRZR5UYlpm6XgU8F4j/0csz8WoaKKTUqa6rSuOy3Vph7AHfX7KQ==", + "dev": true + }, + "@types/lodash.isequal": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/@types/lodash.isequal/-/lodash.isequal-4.5.2.tgz", + "integrity": "sha512-RBgio5IF9ND5Sw7pIivcC47oLY65f5UQCblnjVoGLR5wykwSRd/q0k6aUroXMGZfu8jnyJbNhzNC+NcFUnJ8pA==", + "dev": true, + "requires": { + "@types/lodash": "4.14.77" + } + }, + "@types/lodash.merge": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/@types/lodash.merge/-/lodash.merge-4.6.3.tgz", + "integrity": "sha512-bOCCutkbehfCeiSqJO5XcVKjsJvX28dgvjhs4aMmBAHAsOy2oOJQwHuIZ0elI1E94qQIdEsCvz8oLgUumd6teA==", + "dev": true, + "requires": { + "@types/lodash": "4.14.77" + } + }, "@types/node": { - "version": "8.0.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.30.tgz", - "integrity": "sha512-IaQtG3DWe9gRsmk1DqNnYyRVjGDVcBdZywkRVF2f62Boe8XKmlR7lNcwC6pk4V4W8nk+Zu+vdGMsOdRTDj1JPA==", + "version": "8.0.44", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.44.tgz", + "integrity": "sha512-56TeARKE2uMi7xWhpRRws/QdnpSVx9i7E8esGiPYoj90jnonGfmV1vwRLvHWYjPxF5u5l7p5fgdKwdse+VeAQQ==", "dev": true }, "ansi-align": { @@ -226,14 +250,14 @@ "auto-bind": "1.1.0", "ava-init": "0.2.1", "babel-core": "6.26.0", - "bluebird": "3.5.0", + "bluebird": "3.5.1", "caching-transform": "1.0.1", - "chalk": "2.1.0", + "chalk": "2.2.0", "chokidar": "1.7.0", "clean-stack": "1.3.0", "clean-yaml-object": "0.1.0", "cli-cursor": "2.1.0", - "cli-spinners": "1.0.1", + "cli-spinners": "1.1.0", "cli-truncate": "1.1.0", "co-with-promise": "4.6.0", "code-excerpt": "2.1.0", @@ -288,11 +312,11 @@ "stack-utils": "1.0.1", "strip-ansi": "4.0.0", "strip-bom-buf": "1.0.0", - "supports-color": "4.4.0", + "supports-color": "4.5.0", "time-require": "0.1.2", "trim-off-newlines": "1.0.1", "unique-temp-dir": "1.0.0", - "update-notifier": "2.2.0" + "update-notifier": "2.3.0" } }, "ava-init": { @@ -377,7 +401,7 @@ "lodash": "4.17.4", "minimatch": "3.0.4", "path-is-absolute": "1.0.1", - "private": "0.1.7", + "private": "0.1.8", "slash": "1.0.0", "source-map": "0.5.7" } @@ -753,20 +777,20 @@ "dev": true }, "bluebird": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", - "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", "dev": true }, "boxen": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.2.1.tgz", - "integrity": "sha1-DxHn/jRO25OXl3/BPt5/ZNlWSB0=", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.2.2.tgz", + "integrity": "sha1-Px1AMsMP/qnUsCwyLq8up0HcvOU=", "dev": true, "requires": { "ansi-align": "2.0.0", "camelcase": "4.1.0", - "chalk": "2.1.0", + "chalk": "2.2.0", "cli-boxes": "1.0.0", "string-width": "2.1.1", "term-size": "1.2.0", @@ -888,14 +912,14 @@ "dev": true }, "chalk": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", - "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.0.tgz", + "integrity": "sha512-0BMM/2hG3ZaoPfR6F+h/oWpZtsh3b/s62TjSM6MGCJWEbJDN1acqCXvyhhZsDSVFklpebUoQ5O1kKC7lOzrn9g==", "dev": true, "requires": { "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "supports-color": "4.4.0" + "supports-color": "4.5.0" } }, "chokidar": { @@ -949,9 +973,9 @@ } }, "cli-spinners": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.0.1.tgz", - "integrity": "sha1-JnUyHBAPGVsCh3rEmemRH6NLl4M=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.1.0.tgz", + "integrity": "sha1-8YR7FohE2RemceudFH499JfJDQY=", "dev": true }, "cli-truncate": { @@ -1181,9 +1205,9 @@ } }, "diff": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", - "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", + "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", "dev": true }, "dot-prop": { @@ -2356,6 +2380,15 @@ "is-glob": "2.0.1" } }, + "global-dirs": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.0.tgz", + "integrity": "sha1-ENNAOeDfBCcuJizyQiT3IJQ0308=", + "dev": true, + "requires": { + "ini": "1.3.4" + } + }, "globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", @@ -2556,9 +2589,9 @@ } }, "irregular-plurals": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.3.0.tgz", - "integrity": "sha512-njf5A+Mxb3kojuHd1DzISjjIl+XhyzovXEOyPPSzdQozq/Lf2tN27mOrAAsxEPZxpn6I4MGzs1oo9TxXxPFpaA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.4.0.tgz", + "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=", "dev": true }, "is-arrayish": { @@ -2663,6 +2696,16 @@ "is-extglob": "1.0.0" } }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "dev": true, + "requires": { + "global-dirs": "0.1.0", + "is-path-inside": "1.0.0" + } + }, "is-npm": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", @@ -2693,6 +2736,15 @@ "symbol-observable": "0.2.4" } }, + "is-path-inside": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", + "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -3357,6 +3409,12 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", @@ -3424,7 +3482,7 @@ "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", "dev": true, "requires": { - "irregular-plurals": "1.3.0" + "irregular-plurals": "1.4.0" } }, "prepend-http": { @@ -3459,9 +3517,9 @@ } }, "private": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", - "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", "dev": true }, "process-nextick-args": { @@ -3518,9 +3576,9 @@ } }, "rc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", - "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz", + "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=", "dev": true, "requires": { "deep-extend": "0.4.2", @@ -3644,7 +3702,7 @@ "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", "dev": true, "requires": { - "rc": "1.2.1", + "rc": "1.2.2", "safe-buffer": "5.1.1" } }, @@ -3654,7 +3712,7 @@ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "dev": true, "requires": { - "rc": "1.2.1" + "rc": "1.2.2" } }, "regjsgen": { @@ -3947,9 +4005,9 @@ "dev": true }, "supports-color": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", - "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", "dev": true, "requires": { "has-flag": "2.0.0" @@ -4081,9 +4139,9 @@ "dev": true }, "tslib": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz", - "integrity": "sha1-vIAEFkaRkjp5/oN4u+s9ogF1OOw=", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.8.0.tgz", + "integrity": "sha512-ymKWWZJST0/CkgduC2qkzjMOWr4bouhuURNXCn/inEX0L57BnRG6FhX76o7FOnsjHazCjfU2LKeSrlS2sIKQJg==", "dev": true }, "tslint": { @@ -4095,22 +4153,22 @@ "babel-code-frame": "6.26.0", "colors": "1.1.2", "commander": "2.11.0", - "diff": "3.3.1", + "diff": "3.4.0", "glob": "7.1.2", "minimatch": "3.0.4", "resolve": "1.4.0", "semver": "5.4.1", - "tslib": "1.7.1", - "tsutils": "2.8.2" + "tslib": "1.8.0", + "tsutils": "2.12.1" } }, "tsutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.8.2.tgz", - "integrity": "sha1-LBSGukMSYIRbCsb5Aq/Z1wio6mo=", + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.12.1.tgz", + "integrity": "sha1-9Nlc4zkciXHkblTEzw7bCiHdWyQ=", "dev": true, "requires": { - "tslib": "1.7.1" + "tslib": "1.8.0" } }, "typeable": { @@ -4119,9 +4177,9 @@ "integrity": "sha512-+f/MX31R7c7bJJ5Ct4OFI737BcCszvsZGNAO7K+AvFACMACYdSeE63ZjI5UGdYZ6SNskiC57YfSwXD9LcFZBug==" }, "typescript": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.5.2.tgz", - "integrity": "sha1-A4qV99m7tCCxvzW6MdTFwd0//jQ=", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.5.3.tgz", + "integrity": "sha512-ptLSQs2S4QuS6/OD1eAKG+S5G8QQtrU5RT32JULdZQtM1L3WTi34Wsu48Yndzi8xsObRAB9RPt/KhA9wlpEF6w==", "dev": true }, "uid2": { @@ -4157,55 +4215,20 @@ "dev": true }, "update-notifier": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.2.0.tgz", - "integrity": "sha1-G1g3z5DAc22IYncytmHBOPht5y8=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.3.0.tgz", + "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", "dev": true, "requires": { - "boxen": "1.2.1", - "chalk": "1.1.3", + "boxen": "1.2.2", + "chalk": "2.2.0", "configstore": "3.1.1", "import-lazy": "2.1.0", + "is-installed-globally": "0.1.0", "is-npm": "1.0.0", "latest-version": "3.1.0", "semver-diff": "2.1.0", "xdg-basedir": "3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } } }, "url-parse-lax": { @@ -4315,16 +4338,16 @@ } }, "write-json-file": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.2.0.tgz", - "integrity": "sha1-UYYlBruzthnu+reFnx/WxtBTCHY=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.3.0.tgz", + "integrity": "sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8=", "dev": true, "requires": { "detect-indent": "5.0.0", "graceful-fs": "4.1.11", "make-dir": "1.0.0", - "pify": "2.3.0", - "sort-keys": "1.1.2", + "pify": "3.0.0", + "sort-keys": "2.0.0", "write-file-atomic": "2.3.0" }, "dependencies": { @@ -4334,14 +4357,11 @@ "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", "dev": true }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "dev": true, - "requires": { - "is-plain-obj": "1.1.0" - } + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true } } }, @@ -4352,7 +4372,7 @@ "dev": true, "requires": { "sort-keys": "2.0.0", - "write-json-file": "2.2.0" + "write-json-file": "2.3.0" } }, "xdg-basedir": { diff --git a/package.json b/package.json index b2b9ceb..9166c1b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.16.0", + "version": "1.17.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -68,10 +68,12 @@ "author": "Kristijan Sedlak (Xpepermint)", "license": "MIT", "devDependencies": { - "@types/node": "^8.0.29", + "@types/lodash.isequal": "^4.5.2", + "@types/lodash.merge": "^4.6.3", + "@types/node": "^8.0.44", "ava": "^0.22.0", "tslint": "^5.7.0", - "typescript": "^2.5.2" + "typescript": "^2.5.3" }, "dependencies": { "handleable": "^0.22.0", diff --git a/src/utils.ts b/src/utils.ts index 4bcfe94..c244219 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,5 +1,5 @@ -import * as merge from 'lodash.merge'; -import * as isEqual from 'lodash.isequal'; +import merge = require('lodash.merge'); +import isEqual = require('lodash.isequal'); /* * Deeply combines multiple values. From ecdedb471918c5ccda2d9056dc3e8a4055a43ba5 Mon Sep 17 00:00:00 2001 From: xpeper Date: Wed, 18 Oct 2017 11:52:45 +0200 Subject: [PATCH 183/219] dependencies --- package-lock.json | 30 +++++++++++++----------------- package.json | 14 +++++++------- 2 files changed, 20 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0368e07..c4d51fc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.17.0", + "version": "1.18.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -83,14 +83,12 @@ "@types/lodash": { "version": "4.14.77", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.77.tgz", - "integrity": "sha512-sRCTcVQkIiQqRoQcazgN2PvRLS7d9BnSl8elRZR5UYlpm6XgU8F4j/0csz8WoaKKTUqa6rSuOy3Vph7AHfX7KQ==", - "dev": true + "integrity": "sha512-sRCTcVQkIiQqRoQcazgN2PvRLS7d9BnSl8elRZR5UYlpm6XgU8F4j/0csz8WoaKKTUqa6rSuOy3Vph7AHfX7KQ==" }, "@types/lodash.isequal": { "version": "4.5.2", "resolved": "https://registry.npmjs.org/@types/lodash.isequal/-/lodash.isequal-4.5.2.tgz", "integrity": "sha512-RBgio5IF9ND5Sw7pIivcC47oLY65f5UQCblnjVoGLR5wykwSRd/q0k6aUroXMGZfu8jnyJbNhzNC+NcFUnJ8pA==", - "dev": true, "requires": { "@types/lodash": "4.14.77" } @@ -99,7 +97,6 @@ "version": "4.6.3", "resolved": "https://registry.npmjs.org/@types/lodash.merge/-/lodash.merge-4.6.3.tgz", "integrity": "sha512-bOCCutkbehfCeiSqJO5XcVKjsJvX28dgvjhs4aMmBAHAsOy2oOJQwHuIZ0elI1E94qQIdEsCvz8oLgUumd6teA==", - "dev": true, "requires": { "@types/lodash": "4.14.77" } @@ -107,8 +104,7 @@ "@types/node": { "version": "8.0.44", "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.44.tgz", - "integrity": "sha512-56TeARKE2uMi7xWhpRRws/QdnpSVx9i7E8esGiPYoj90jnonGfmV1vwRLvHWYjPxF5u5l7p5fgdKwdse+VeAQQ==", - "dev": true + "integrity": "sha512-56TeARKE2uMi7xWhpRRws/QdnpSVx9i7E8esGiPYoj90jnonGfmV1vwRLvHWYjPxF5u5l7p5fgdKwdse+VeAQQ==" }, "ansi-align": { "version": "2.0.0", @@ -2451,9 +2447,9 @@ "dev": true }, "handleable": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/handleable/-/handleable-0.22.0.tgz", - "integrity": "sha512-BfBjura70y5AMbRjsfen6jKXkRl0fxdfoVtnrfMx41i73stOnbDtcN5hOUfueUqhpIENzeYSZWjn1AkCUnVePA==", + "version": "0.22.1", + "resolved": "https://registry.npmjs.org/handleable/-/handleable-0.22.1.tgz", + "integrity": "sha512-eLRn71O4qkaCpgapAadMRUnspavEIFwVe3VEhY6Y5sIEb9g3B401LCZp2k4otOR1WzOlLN3VlsPDFUxWe8YWmg==", "requires": { "lodash.merge": "4.6.0" } @@ -4172,9 +4168,9 @@ } }, "typeable": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/typeable/-/typeable-2.3.0.tgz", - "integrity": "sha512-+f/MX31R7c7bJJ5Ct4OFI737BcCszvsZGNAO7K+AvFACMACYdSeE63ZjI5UGdYZ6SNskiC57YfSwXD9LcFZBug==" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/typeable/-/typeable-2.3.1.tgz", + "integrity": "sha512-AuBrCEQAwsdFrFN1/C2UoTwSs/8U7Q/THJsMRdRZBRCEdrLJDFTfBS4MbrD3ZsfzYE78cC/0/QU6C7ki9GYz2w==" }, "typescript": { "version": "2.5.3", @@ -4247,12 +4243,12 @@ "dev": true }, "validatable": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/validatable/-/validatable-0.28.0.tgz", - "integrity": "sha512-TFO+RtBPTUT+gKbihuRJR6vR53MdSR9JYiRoviICtG69SD0qucnj95vrmQr8df3rvw6s+iYlMYhPw7MmfYzZ2A==", + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/validatable/-/validatable-0.29.1.tgz", + "integrity": "sha512-397B/9YmcUURLAarRtmrVtsIMSlr7N/rK62oZDgCbj/HXwJtTZohST9eWi81BhCU6X1jQ17FI8RuxyU4x1SQwA==", "requires": { "lodash.merge": "4.6.0", - "typeable": "2.3.0" + "typeable": "2.3.1" } }, "validate-npm-package-license": { diff --git a/package.json b/package.json index 9166c1b..0cd1ea6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.17.0", + "version": "1.18.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -68,18 +68,18 @@ "author": "Kristijan Sedlak (Xpepermint)", "license": "MIT", "devDependencies": { - "@types/lodash.isequal": "^4.5.2", - "@types/lodash.merge": "^4.6.3", - "@types/node": "^8.0.44", "ava": "^0.22.0", "tslint": "^5.7.0", "typescript": "^2.5.3" }, "dependencies": { - "handleable": "^0.22.0", + "@types/lodash.isequal": "^4.5.2", + "@types/lodash.merge": "^4.6.3", + "@types/node": "^8.0.44", + "handleable": "^0.22.1", "lodash.isequal": "^4.5.0", "lodash.merge": "^4.6.0", - "typeable": "^2.3.0", - "validatable": "^0.28.0" + "typeable": "^2.3.1", + "validatable": "^0.29.1" } } From 7a7bf3cf93f395e21a7d978a40f3bfc6b215e4fd Mon Sep 17 00:00:00 2001 From: xpeper Date: Thu, 19 Oct 2017 12:33:08 +0200 Subject: [PATCH 184/219] error message now optional, dependencies upgraded --- README.md | 66 ++++++++++++++++++++-------------------- dist/src/fields.d.ts | 3 +- dist/src/fields.js.map | 2 +- dist/tests/fields.js | 12 +++++--- dist/tests/fields.js.map | 2 +- package-lock.json | 14 ++++----- package.json | 6 ++-- src/fields.ts | 3 +- tests/fields.ts | 12 +++++--- 9 files changed, 63 insertions(+), 57 deletions(-) diff --git a/README.md b/README.md index 4fae2c3..b28cac4 100644 --- a/README.md +++ b/README.md @@ -237,10 +237,11 @@ class User extends Model { this.defineField('name', { validate: [ // field validation setup { // validator recipe - validator: 'presence', // validator name - message: '%{it} must be present', // error message - condition () { return true }, // optional condition which switches the validation on/off - it: 'it' // optional custom variable for the `message` + validator: 'presence', // [required] validator name + message: '%{it} must be present', // [optional] error message + code: 422, // [optional] error code + condition () { return true }, // [optional] condition which switches the validation on/off + it: 'it' // [optional] custom variable for the `message` } ] }); @@ -292,11 +293,12 @@ class User extends Model { this.defineField('name', { handle: [ // field error handling setup { // handler recipe - handler: 'block', // handler name - message: '%{is} unknown', // error message - block (error) { return true }, // block handler-specific option - condition () { return true }, // optional condition which switches the handling on/off - is: 'is' // optional custom variable for the `message` + handler: 'block', // [required] handler name + message: '%{is} unknown', // [optional] error message + code: 422, // [optional] error code + block (error) { return true }, // [optional] handler-specific function + condition () { return true }, // [optional] condition which switches the handling on/off + is: 'is' // [optional] custom variable for the `message` } ] }); @@ -385,30 +387,32 @@ class User extends Model { super(data); // initializing the Model this.defineField('name', { - type: 'String', // field type casting - serializable: true, // when set to `false` the field is not present in serialized object (returned by `.serialize()`) - enumerable: true, // when set to `false` the field is not enumerable (ignored by `Object.keys()`) - get (v) { return v }, // custom getter - set (v) { return v }, // custom setter - validate: [ // value validator recipes + type: 'String', // [optional] field type casting + serializable: true, // [optional] when set to `false` the field is not present in serialized object (returned by `.serialize()`) + enumerable: true, // [optional] when set to `false` the field is not enumerable (ignored by `Object.keys()`) + get (v) { return v }, // [optional] custom getter + set (v) { return v }, // [optional] custom setter + validate: [ // [optional] value validator recipes { // validator recipe (check validatable.js for more) - validator: 'presence', // validator name - condition () { return true }, // optional condition which switches the validation on/off - message: '%{it} must be present', // error message - it: 'it' // custom variable for the `message` + validator: 'presence', // [required] validator name + condition () { return true }, // [optional] condition which switches the validation on/off + message: '%{it} must be present', // [optional] error message + code: 422, // [optional] error code + it: 'it' // [optional] custom variable for the `message` } ], - handle: [ // error handling recipies + handle: [ // [optional] error handling recipies { // handler recipe - handler: 'block', // handler name - condition () { return true }, // optional condition which switches the handling on/off - message: '%{is} unknown', // error message - block (error) { return true }, // block handler-specific option - is: 'is' // optional custom variable for the `message` + handler: 'block', // [optional] handler name + condition () { return true }, // [optional] condition which switches the handling on/off + message: '%{is} unknown', // [optional] error message + code: 422, // [optional] error code + block (error) { return true }, // [optional] handler-specific function + is: 'is' // [optional] custom variable for the `message` } ], - defaultValue: 'Noname', // field default value (value or function) - fakeValue: 'Noname', // field fake value (value or function) + defaultValue: 'Noname', // [optional] field default value (value or function) + fakeValue: 'Noname', // [optional] field fake value (value or function) }); this.populate(data); @@ -427,9 +431,9 @@ model.applyErrors([ path: ['books', 1, 'title'], // field path errors: [ { - validator: 'presence', + validator: 'presence', // or handler: '' message: 'is required', - code: 422 + code: 422, } ] } @@ -827,10 +831,6 @@ let recipe = { }; ``` -**BSONObjectID** - -> Validates that the specified field is a valid hex-encoded representation of a [MongoDB ObjectID](http://docs.mongodb.org/manual/reference/object-id/). - **numberSize** > Validates the size of a number. diff --git a/dist/src/fields.d.ts b/dist/src/fields.d.ts index 2b3ff05..9773f61 100644 --- a/dist/src/fields.d.ts +++ b/dist/src/fields.d.ts @@ -21,8 +21,7 @@ export interface FieldRecipe { enumerable?: boolean; } export interface FieldError { - message: string; - name?: string; + message?: string; code?: number; [key: string]: any; } diff --git a/dist/src/fields.js.map b/dist/src/fields.js.map index a91c541..c68f6ae 100644 --- a/dist/src/fields.js.map +++ b/dist/src/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/fields.js b/dist/tests/fields.js index 2af8db4..74b0a4d 100644 --- a/dist/tests/fields.js +++ b/dist/tests/fields.js @@ -172,7 +172,8 @@ ava_1["default"]('method `validate()` validates the value and populates the `err f = new src_1.Field({ validate: [ { validator: 'presence', message: 'foo' }, - { validator: 'coolness', message: 'is not cool' } + { validator: 'coolness', message: 'is not cool' }, + { validator: 'coolness', code: 999 }, ], validators: { coolness: function () { return this.value === 'cool'; } @@ -183,7 +184,8 @@ ava_1["default"]('method `validate()` validates the value and populates the `err _a.sent(); t.deepEqual(f.errors, [ { validator: 'presence', message: 'foo', code: 422 }, - { validator: 'coolness', message: 'is not cool', code: 422 } + { validator: 'coolness', message: 'is not cool', code: 422 }, + { validator: 'coolness', message: undefined, code: 999 } ]); return [2]; } @@ -219,7 +221,8 @@ ava_1["default"]('method `handle()` handles an error and populates the `errors` f = new src_1.Field({ handle: [ { handler: 'block', block: function () { return true; }, message: 'foo' }, - { handler: 'coolness', message: 'cool' } + { handler: 'coolness', message: 'cool' }, + { handler: 'coolness', code: 999 } ], handlers: { coolness: function (error) { return error.message === 'cool'; } @@ -231,7 +234,8 @@ ava_1["default"]('method `handle()` handles an error and populates the `errors` _a.sent(); t.deepEqual(f.errors, [ { handler: 'block', message: 'foo', code: 422 }, - { handler: 'coolness', message: 'cool', code: 422 } + { handler: 'coolness', message: 'cool', code: 422 }, + { handler: 'coolness', message: undefined, code: 999 }, ]); return [2]; } diff --git a/dist/tests/fields.js.map b/dist/tests/fields.js.map index 4389c28..6e7e2ce 100644 --- a/dist/tests/fields.js.map +++ b/dist/tests/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../tests/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../tests/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index c4d51fc..4132832 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.18.0", + "version": "1.19.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -2447,9 +2447,9 @@ "dev": true }, "handleable": { - "version": "0.22.1", - "resolved": "https://registry.npmjs.org/handleable/-/handleable-0.22.1.tgz", - "integrity": "sha512-eLRn71O4qkaCpgapAadMRUnspavEIFwVe3VEhY6Y5sIEb9g3B401LCZp2k4otOR1WzOlLN3VlsPDFUxWe8YWmg==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/handleable/-/handleable-0.23.0.tgz", + "integrity": "sha512-T+qRZGh2Qz5eu2VfXuGuqW04kmwM4Hjikmq50ai2swxv/Ai0GLreDO7PdbLtx3QdiT0pUrUUNnZU4k9YB4ai6w==", "requires": { "lodash.merge": "4.6.0" } @@ -4243,9 +4243,9 @@ "dev": true }, "validatable": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/validatable/-/validatable-0.29.1.tgz", - "integrity": "sha512-397B/9YmcUURLAarRtmrVtsIMSlr7N/rK62oZDgCbj/HXwJtTZohST9eWi81BhCU6X1jQ17FI8RuxyU4x1SQwA==", + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/validatable/-/validatable-0.30.0.tgz", + "integrity": "sha512-u/Xwd0KrG6yBGGxh2vNZd7+R4enLVM23ZknL9NAaqz1BGcx3YTW9+27lifvkPaxkJIjBUrjl4FtRydzb6y+9LA==", "requires": { "lodash.merge": "4.6.0", "typeable": "2.3.1" diff --git a/package.json b/package.json index 0cd1ea6..07f9870 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.18.0", + "version": "1.19.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -76,10 +76,10 @@ "@types/lodash.isequal": "^4.5.2", "@types/lodash.merge": "^4.6.3", "@types/node": "^8.0.44", - "handleable": "^0.22.1", + "handleable": "^0.23.0", "lodash.isequal": "^4.5.0", "lodash.merge": "^4.6.0", "typeable": "^2.3.1", - "validatable": "^0.29.1" + "validatable": "^0.30.0" } } diff --git a/src/fields.ts b/src/fields.ts index 1d38eb5..2c1227a 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -29,8 +29,7 @@ export interface FieldRecipe { */ export interface FieldError { - message: string; - name?: string; + message?: string; code?: number; [key: string]: any; } diff --git a/tests/fields.ts b/tests/fields.ts index be3152f..7cf2da9 100644 --- a/tests/fields.ts +++ b/tests/fields.ts @@ -129,7 +129,8 @@ test('method `validate()` validates the value and populates the `errors` propert let f = new Field({ validate: [ {validator: 'presence', message: 'foo'}, - {validator: 'coolness', message: 'is not cool'} + {validator: 'coolness', message: 'is not cool'}, // custom with message + {validator: 'coolness', code: 999}, // custom with code ], validators: { coolness () { return this.value === 'cool'; } // custom validators @@ -138,7 +139,8 @@ test('method `validate()` validates the value and populates the `errors` propert await f.validate(); t.deepEqual(f.errors, [ {validator: 'presence', message: 'foo', code: 422}, - {validator: 'coolness', message: 'is not cool', code: 422} + {validator: 'coolness', message: 'is not cool', code: 422}, + {validator: 'coolness', message: undefined, code: 999} ]); }); @@ -172,7 +174,8 @@ test('method `handle()` handles an error and populates the `errors` property', a let f = new Field({ handle: [ {handler: 'block', block () { return true; }, message: 'foo'}, - {handler: 'coolness', message: 'cool'} // custom + {handler: 'coolness', message: 'cool'}, // custom with message + {handler: 'coolness', code: 999} // custom with code ], handlers: { coolness (error) { return error.message === 'cool'; } // custom validators @@ -182,6 +185,7 @@ test('method `handle()` handles an error and populates the `errors` property', a await f.handle(e); t.deepEqual(f.errors, [ {handler: 'block', message: 'foo', code: 422}, - {handler: 'coolness', message: 'cool', code: 422} + {handler: 'coolness', message: 'cool', code: 422}, + {handler: 'coolness', message: undefined, code: 999}, ]); }); From a151a7f2cd53401276caa549d0f4333f2de058e2 Mon Sep 17 00:00:00 2001 From: xpeper Date: Thu, 19 Oct 2017 12:53:45 +0200 Subject: [PATCH 185/219] additional validation tests --- dist/tests/models.js | 13 ++++++++----- dist/tests/models.js.map | 2 +- tests/models.ts | 13 ++++++++----- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/dist/tests/models.js b/dist/tests/models.js index aa97b17..92ad8a2 100644 --- a/dist/tests/models.js +++ b/dist/tests/models.js @@ -896,10 +896,10 @@ ava_1["default"]('method `validate` validates fields and throws an error', funct return __generator(this, function (_c) { switch (_c.label) { case 0: - validate = [{ - validator: 'presence', - message: 'foo' - }]; + validate = [ + { validator: 'presence', message: 'foo' }, + { validator: 'presence', code: 999 }, + ]; Book = (function (_super) { __extends(Book, _super); function Book(data) { @@ -928,7 +928,10 @@ ava_1["default"]('method `validate` validates fields and throws an error', funct book1: {}, books1: [{}] }); - errors = [{ validator: 'presence', message: 'foo', code: 422 }]; + errors = [ + { validator: 'presence', message: 'foo', code: 422 }, + { validator: 'presence', message: undefined, code: 999 }, + ]; return [4, user.validate({ quiet: true })]; case 1: _c.sent(); diff --git a/dist/tests/models.js.map b/dist/tests/models.js.map index c0641eb..b4f2fdd 100644 --- a/dist/tests/models.js.map +++ b/dist/tests/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/models.ts b/tests/models.ts index 8982925..3d7a00b 100644 --- a/tests/models.ts +++ b/tests/models.ts @@ -742,10 +742,10 @@ test('methods `isValid` and `hasErrors` tell if errors exist', async (t) => { }); test('method `validate` validates fields and throws an error', async (t) => { - let validate = [{ - validator: 'presence', - message: 'foo' - }]; + let validate = [ + { validator: 'presence', message: 'foo' }, + { validator: 'presence', code: 999 }, + ]; class Book extends Model { constructor (data) { super(data); @@ -768,7 +768,10 @@ test('method `validate` validates fields and throws an error', async (t) => { book1: {}, books1: [{}] }); - let errors = [{validator: 'presence', message: 'foo', code: 422}]; + let errors = [ + {validator: 'presence', message: 'foo', code: 422}, + {validator: 'presence', message: undefined, code: 999}, + ]; await user.validate({quiet: true}); t.is(await user.validate().catch(() => false), false); t.deepEqual(user.collectErrors() as {}, [ From edea7f35ab388915e7d246a1a6753798c046a598 Mon Sep 17 00:00:00 2001 From: xpeper Date: Thu, 19 Oct 2017 23:52:14 +0200 Subject: [PATCH 186/219] handling `undefined` when serializing a value --- dist/src/utils.js | 7 ++++++- dist/src/utils.js.map | 2 +- dist/tests/models.js | 9 ++++++--- dist/tests/models.js.map | 2 +- package.json | 2 +- src/utils.ts | 6 +++++- tests/models.ts | 12 ++++++++---- 7 files changed, 28 insertions(+), 12 deletions(-) diff --git a/dist/src/utils.js b/dist/src/utils.js index 57334ea..fb6c9eb 100644 --- a/dist/src/utils.js +++ b/dist/src/utils.js @@ -5,7 +5,12 @@ exports.merge = merge; var isEqual = require("lodash.isequal"); exports.isEqual = isEqual; function serialize(data) { - return JSON.parse(JSON.stringify(data)); + if (typeof data === 'undefined') { + return data; + } + else { + return JSON.parse(JSON.stringify(data)); + } } exports.serialize = serialize; //# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/dist/src/utils.js.map b/dist/src/utils.js.map index 6e71bd7..7ad38e8 100644 --- a/dist/src/utils.js.map +++ b/dist/src/utils.js.map @@ -1 +1 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;AAAA,oCAAuC;AAO/B,sBAAK;AANb,wCAA2C;AAYnC,0BAAO;AAMf,mBAA2B,IAAS;IAClC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC;AAFD,8BAEC"} \ No newline at end of file +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;AAAA,oCAAuC;AAO/B,sBAAK;AANb,wCAA2C;AAYnC,0BAAO;AAMf,mBAA2B,IAAS;IAClC,EAAE,CAAC,CAAC,OAAO,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAAC,IAAI,CAAC,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAND,8BAMC"} \ No newline at end of file diff --git a/dist/tests/models.js b/dist/tests/models.js index 92ad8a2..4b53a1e 100644 --- a/dist/tests/models.js +++ b/dist/tests/models.js @@ -98,7 +98,8 @@ ava_1["default"]('method `populate` deeply populates fields', function (t) { function User(data) { var _this = _super.call(this, data) || this; _this.defineField('name', { type: 'String' }); - _this.defineField('book', { type: Book }); + _this.defineField('book0', { type: Book }); + _this.defineField('book1', { type: Book }); _this.defineField('books', { type: [Book] }); _this.populate(data); return _this; @@ -107,9 +108,10 @@ ava_1["default"]('method `populate` deeply populates fields', function (t) { }(src_1.Model)); var user0 = new User({ name: 100, - book: { + book0: { title: 200 }, + book1: undefined, books: [ undefined, { @@ -124,7 +126,8 @@ ava_1["default"]('method `populate` deeply populates fields', function (t) { user0.populate(true); user0.populate(100); t.is(user0.name, '100'); - t.is(user0.book.title, '200'); + t.is(user0.book0.title, '200'); + t.is(user0.book1, null); t.is(user0.books[0], null); t.is(user0.books[1].title, '300'); t.is(user1.name, null); diff --git a/dist/tests/models.js.map b/dist/tests/models.js.map index b4f2fdd..a0ff3c9 100644 --- a/dist/tests/models.js.map +++ b/dist/tests/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 07f9870..1353eb6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.19.0", + "version": "1.20.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", diff --git a/src/utils.ts b/src/utils.ts index c244219..a82a2bd 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -18,5 +18,9 @@ export {isEqual}; */ export function serialize (data: any) { - return JSON.parse(JSON.stringify(data)); + if (typeof data === 'undefined') { + return data; + } else { + return JSON.parse(JSON.stringify(data)); + } } diff --git a/tests/models.ts b/tests/models.ts index 3d7a00b..866bcc6 100644 --- a/tests/models.ts +++ b/tests/models.ts @@ -45,21 +45,24 @@ test('method `populate` deeply populates fields', (t) => { } class User extends Model { name: string; - book: Book; + book0: Book; + book1: Book; books: Book[]; constructor (data) { super(data); this.defineField('name', {type: 'String'}); - this.defineField('book', {type: Book}); + this.defineField('book0', {type: Book}); + this.defineField('book1', {type: Book}); this.defineField('books', {type: [Book]}); this.populate(data); } } let user0 = new User({ name: 100, - book: { + book0: { title: 200 }, + book1: undefined, books: [ undefined, { @@ -74,7 +77,8 @@ test('method `populate` deeply populates fields', (t) => { user0.populate(true); // should not break user0.populate(100); // should not break t.is(user0.name, '100'); - t.is(user0.book.title, '200'); + t.is(user0.book0.title, '200'); + t.is(user0.book1, null); t.is(user0.books[0], null); t.is(user0.books[1].title, '300'); t.is(user1.name, null); From 2f89215a72428d89b9e25c42c19fce8d4daec16c Mon Sep 17 00:00:00 2001 From: xpeper Date: Tue, 24 Oct 2017 17:45:19 +0200 Subject: [PATCH 187/219] serialization strategies --- README.md | 42 +++++++++++++++++++++++++++++++++++----- dist/src/fields.d.ts | 4 ++-- dist/src/fields.js | 2 +- dist/src/fields.js.map | 2 +- dist/src/models.d.ts | 8 ++++++-- dist/src/models.js | 12 ++++++++++-- dist/src/models.js.map | 2 +- dist/tests/models.js | 32 ++++++++++++++++++++++-------- dist/tests/models.js.map | 2 +- package.json | 7 +++++-- src/fields.ts | 6 +++--- src/models.ts | 17 ++++++++++++---- tests/models.ts | 37 +++++++++++++++++++++++++---------- 13 files changed, 131 insertions(+), 42 deletions(-) diff --git a/README.md b/README.md index b28cac4..3707de5 100644 --- a/README.md +++ b/README.md @@ -74,6 +74,8 @@ Examples are available inside the `./example` folder. You should also check the ## Usage +Below we explain some of the most important features that this package provides. You should check the API section to see a complete list of features. + ### Defining Fields Model fields are defined using the `defineField` method. The code below is an example of a basic model class with a property `name` of type `Any`. @@ -207,7 +209,7 @@ Note that the logic above applies also the the `Field` class. ### Serialization & Filtering -Model class provides useful methods for object serialization and filtering. +Model provides useful methods for object serialization and filtering (check the API for more methods). ```js let user = new User({ @@ -221,7 +223,33 @@ user.scroll(function (field) { // argument is an instance of a field }); ``` -The code above is only a quick example of what's possible. Please check the API section for all available methods. +Fields are serializable by default and are thus included in the result object returned by the `serialize()` method. We can customize the output and include or exclude fields for different occasions by using serialization strategies. + +```js +class User extends Model { + public id: string; + public name: string; + + public constructor (data = {}) { + super(data); + this.defineField('id', { + serializable: ['output'], // list serialization strategy names + }); + this.defineField('name', { + serializable: ['input', 'output'], // list serialization strategy names + }); + this.populate(data); + } +} + +let user = new User({ + 'id': 100, + 'name': 'John Smith', +}); +user.serialize(); // -> {"id": 100, "name": "John Smith"} +user.serialize('input'); // -> {"name": "John Smith"} +user.serialize('output'); // -> {"id": 100, "name": "John Smith"} +``` ### Validation @@ -388,7 +416,7 @@ class User extends Model { this.defineField('name', { type: 'String', // [optional] field type casting - serializable: true, // [optional] when set to `false` the field is not present in serialized object (returned by `.serialize()`) + serializable: ['input', 'output'], // [optional] serialization strategies enumerable: true, // [optional] when set to `false` the field is not enumerable (ignored by `Object.keys()`) get (v) { return v }, // [optional] custom getter set (v) { return v }, // [optional] custom setter @@ -475,7 +503,7 @@ model.collectErrors(); // => {path: ['name'], errors: [{validator: 'absence', me | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ | name | String | Yes | - | Property name. -| serializable | Boolean | No | true | When set to `false` the field is not present in serialized object (returned by `.serialize()`). +| serializable | String[] | No | undefined | Serialization strategies (returned by `.serialize()`). | enumerable | Boolean | No | true | When set to `false` the field is not enumerable (ignored by `Object.keys()`). | type | String, Model | No | - | Data type (pass a Model to create a nested structure; check [typeable.js](https://github.com/xpepermint/validatablejs) for more). | get | Function | No | - | Custom getter. @@ -624,10 +652,14 @@ catch (e) { |--------|------|----------|---------|------------ | handler | Function | Yes | - | A handler method which is executed for each field. -**Model.prototype.serialize()**: Object +**Model.prototype.serialize(strategy)**: Object > Converts a model into serialized data object. +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| strategy | String | No | - | When the strategy name is provided, the output will include only the fields where the `serializable` option includes this strategy name. If the parameter is not provided then all fields are included in the result. + **Model.prototype.validate({quiet})**: Promise(Model) > Validates model fields, populates model with possible errors and throws a validation error if not all fields are valid unless the `quiet` is set to `true`. diff --git a/dist/src/fields.d.ts b/dist/src/fields.d.ts index 9773f61..ec48aed 100644 --- a/dist/src/fields.d.ts +++ b/dist/src/fields.d.ts @@ -17,7 +17,7 @@ export interface FieldRecipe { }; owner?: Model; failFast?: boolean; - serializable?: boolean; + serializable?: string[]; enumerable?: boolean; } export interface FieldError { @@ -34,7 +34,7 @@ export declare class Field { readonly defaultValue: any; readonly fakeValue: any; readonly initialValue: any; - readonly serializable: boolean; + readonly serializable: string[]; readonly enumerable: boolean; readonly owner: Model; readonly type: any; diff --git a/dist/src/fields.js b/dist/src/fields.js index aae73da..2a08f5f 100644 --- a/dist/src/fields.js +++ b/dist/src/fields.js @@ -82,7 +82,7 @@ var Field = (function () { enumerable: true }); Object.defineProperty(this, 'serializable', { - get: function () { return typeable_1.isUndefined(_this._recipe.serializable) ? true : !!_this._recipe.serializable; }, + get: function () { return !typeable_1.isArray(_this._recipe.serializable) ? [] : _this._recipe.serializable; }, enumerable: true }); Object.defineProperty(this, 'enumerable', { diff --git a/dist/src/fields.js.map b/dist/src/fields.js.map index c68f6ae..bf0205d 100644 --- a/dist/src/fields.js.map +++ b/dist/src/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/models.d.ts b/dist/src/models.d.ts index efac819..4197ee8 100644 --- a/dist/src/models.d.ts +++ b/dist/src/models.d.ts @@ -43,11 +43,15 @@ export declare abstract class Model { getField(...keys: any[]): Field; hasField(...keys: any[]): boolean; populate(data?: {}): this; - serialize(): {}; + serialize(strategy?: string): { + [key: string]: any; + }; flatten(prefix?: string[]): FieldRef[]; collect(handler: (field: FieldRef) => any): any[]; scroll(handler: (field: FieldRef) => void): number; - filter(test: (field: FieldRef) => boolean): {}; + filter(test: (field: FieldRef) => boolean): { + [key: string]: any; + }; reset(): this; fake(): this; clear(): this; diff --git a/dist/src/models.js b/dist/src/models.js index 2fa6a6a..df4c73c 100644 --- a/dist/src/models.js +++ b/dist/src/models.js @@ -162,8 +162,16 @@ var Model = (function () { .forEach(function (name) { return _this[name] = utils_1.serialize(data[name]); }); return this; }; - Model.prototype.serialize = function () { - return this.filter(function (ref) { return ref.field.serializable; }); + Model.prototype.serialize = function (strategy) { + return this.filter(function (ref) { + if (typeable_1.isString(strategy)) { + return (typeable_1.isArray(ref.field.serializable) + && ref.field.serializable.indexOf(strategy) !== -1); + } + else { + return true; + } + }); }; Model.prototype.flatten = function (prefix) { var _this = this; diff --git a/dist/src/models.js.map b/dist/src/models.js.map index a1b7272..45b1456 100644 --- a/dist/src/models.js.map +++ b/dist/src/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/models.js b/dist/tests/models.js index 4b53a1e..a809203 100644 --- a/dist/tests/models.js +++ b/dist/tests/models.js @@ -122,7 +122,7 @@ ava_1["default"]('method `populate` deeply populates fields', function (t) { var user1 = new User(null); user0.populate(null); user0.populate(false); - user0.populate(""); + user0.populate(''); user0.populate(true); user0.populate(100); t.is(user0.name, '100'); @@ -267,6 +267,7 @@ ava_1["default"]('method `serialize` converts model into a serialized data objec function Book(data) { var _this = _super.call(this, data) || this; _this.defineField('title', { type: 'String' }); + _this.defineField('description', { serializable: ['output'] }); _this.populate(data); return _this; } @@ -276,9 +277,10 @@ ava_1["default"]('method `serialize` converts model into a serialized data objec __extends(User, _super); function User(data) { var _this = _super.call(this, data) || this; - _this.defineField('name', { type: 'String' }); - _this.defineField('description', { serializable: false }); - _this.defineField('book', { type: Book }); + _this.defineField('id', { serializable: [] }); + _this.defineField('name', { type: 'String', serializable: null }); + _this.defineField('description', { serializable: ['input', 'output'] }); + _this.defineField('book', { type: Book, serializable: ['output'] }); _this.defineField('books', { type: [Book] }); _this.populate(data); return _this; @@ -286,8 +288,9 @@ ava_1["default"]('method `serialize` converts model into a serialized data objec return User; }(src_1.Model)); var user = new User({ + id: 'id', name: 'foo', - description: 'foo', + description: 'des', book: { title: 'bar' }, @@ -299,17 +302,30 @@ ava_1["default"]('method `serialize` converts model into a serialized data objec ] }); t.deepEqual(user.serialize(), { + id: 'id', name: 'foo', + description: 'des', book: { - title: 'bar' + title: 'bar', + description: null }, books: [ null, { - title: 'baz' - } + title: 'baz', + description: null + }, ] }); + t.deepEqual(user.serialize('input'), { + description: 'des' + }); + t.deepEqual(user.serialize('output'), { + description: 'des', + book: { + description: null + } + }); }); ava_1["default"]('method `flatten` returns an array of fields', function (t) { return __awaiter(_this, void 0, void 0, function () { var Book, User, user; diff --git a/dist/tests/models.js.map b/dist/tests/models.js.map index a0ff3c9..c80dab2 100644 --- a/dist/tests/models.js.map +++ b/dist/tests/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 1353eb6..a4db3fe 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.20.0", + "version": "1.21.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -63,7 +63,10 @@ "tracking", "change", "field", - "fields" + "fields", + "serialize", + "serialization", + "serializable" ], "author": "Kristijan Sedlak (Xpepermint)", "license": "MIT", diff --git a/src/fields.ts b/src/fields.ts index 2c1227a..42cd37b 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -20,7 +20,7 @@ export interface FieldRecipe { handlers?: {[name: string]: (v?: any, r?: HandlerRecipe) => boolean | Promise}; owner?: Model; failFast?: boolean; - serializable?: boolean; + serializable?: string[]; enumerable?: boolean; } @@ -47,7 +47,7 @@ export class Field { readonly defaultValue: any; readonly fakeValue: any; readonly initialValue: any; - readonly serializable: boolean; + readonly serializable: string[]; readonly enumerable: boolean; readonly owner: Model; readonly type: any; @@ -103,7 +103,7 @@ export class Field { }); Object.defineProperty(this, 'serializable', { - get: () => isUndefined(this._recipe.serializable) ? true : !!this._recipe.serializable, + get: () => !isArray(this._recipe.serializable) ? [] : this._recipe.serializable, enumerable: true }); Object.defineProperty(this, 'enumerable', { diff --git a/src/models.ts b/src/models.ts index cb8c34a..756a1a9 100644 --- a/src/models.ts +++ b/src/models.ts @@ -1,4 +1,4 @@ -import {isArray, isUndefined, isPresent, toBoolean} from 'typeable'; +import {isArray, isUndefined, isPresent, isString, toBoolean} from 'typeable'; import {ValidatorRecipe} from 'validatable'; import {HandlerRecipe} from 'handleable'; import {Field, FieldRecipe, FieldError} from './fields'; @@ -235,8 +235,17 @@ export abstract class Model { * Converts this class into serialized data object. */ - public serialize (): {} { - return this.filter((ref) => ref.field.serializable); + public serialize (strategy?: string): {[key: string]: any} { + return this.filter((ref) => { + if (isString(strategy)) { + return ( + isArray(ref.field.serializable) + && ref.field.serializable.indexOf(strategy) !== -1 + ); + } else { + return true; + } + }); } /* @@ -295,7 +304,7 @@ export abstract class Model { * pass the provided `test`. */ - public filter (test: (field: FieldRef) => boolean): {} { + public filter (test: (field: FieldRef) => boolean): {[key: string]: any} { let data = serialize(this); this.flatten() diff --git a/tests/models.ts b/tests/models.ts index 866bcc6..4d255e0 100644 --- a/tests/models.ts +++ b/tests/models.ts @@ -73,7 +73,7 @@ test('method `populate` deeply populates fields', (t) => { let user1 = new User(null); user0.populate(null); // should not break user0.populate(false); // should not break - user0.populate(""); // should not break + user0.populate(''); // should not break user0.populate(true); // should not break user0.populate(100); // should not break t.is(user0.name, '100'); @@ -206,22 +206,25 @@ test('method `serialize` converts model into a serialized data object', (t) => { constructor (data) { super(data); this.defineField('title', {type: 'String'}); + this.defineField('description', {serializable: ['output']}); // only for these strategies this.populate(data); } } class User extends Model { constructor (data) { super(data); - this.defineField('name', {type: 'String'}); - this.defineField('description', {serializable: false}); - this.defineField('book', {type: Book}); + this.defineField('id', {serializable: []}); // never + this.defineField('name', {type: 'String', serializable: null}); + this.defineField('description', {serializable: ['input', 'output']}); // only for these strategies + this.defineField('book', {type: Book, serializable: ['output']}); this.defineField('books', {type: [Book]}); this.populate(data); } } let user = new User({ + id: 'id', name: 'foo', - description: 'foo', + description: 'des', book: { title: 'bar' }, @@ -232,17 +235,31 @@ test('method `serialize` converts model into a serialized data object', (t) => { } ] }); - t.deepEqual(user.serialize() as any, { + + t.deepEqual(user.serialize(), { + id: 'id', name: 'foo', + description: 'des', book: { - title: 'bar' + title: 'bar', + description: null, }, books: [ null, { - title: 'baz' - } - ] + title: 'baz', + description: null, + }, + ], + }); + t.deepEqual(user.serialize('input'), { + description: 'des', + }); + t.deepEqual(user.serialize('output'), { + description: 'des', + book: { + description: null, + }, }); }); From a49f63194a8bd6d86e0b8d4720f5f0de319b7352 Mon Sep 17 00:00:00 2001 From: xpeper Date: Tue, 24 Oct 2017 22:15:30 +0200 Subject: [PATCH 188/219] no reset on fakeValue, defaultValue sets initial value --- README.md | 2 +- dist/src/fields.js | 3 +-- dist/src/fields.js.map | 2 +- dist/src/models.js | 4 ++-- dist/src/models.js.map | 2 +- dist/tests/fields.js | 2 +- dist/tests/fields.js.map | 2 +- dist/tests/models.js.map | 2 +- package.json | 2 +- src/fields.ts | 4 ++-- src/models.ts | 4 ++-- tests/fields.ts | 2 +- tests/models.ts | 6 +++--- 13 files changed, 18 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 3707de5..cb0c06a 100644 --- a/README.md +++ b/README.md @@ -544,7 +544,7 @@ model.collectErrors(); // => {path: ['name'], errors: [{validator: 'absence', me **Model.prototype.fake()**: Model -> Sets each model field to its fake value if a fake value generator is registered, otherwise the default value is used. +> Sets each model field to its fake value if the fake value generator is defined. **Model.prototype.filter(handler)**: Object diff --git a/dist/src/fields.js b/dist/src/fields.js index 2a08f5f..9f45eff 100644 --- a/dist/src/fields.js +++ b/dist/src/fields.js @@ -51,7 +51,6 @@ var Field = (function () { value: Object.freeze(recipe || {}) }); Object.defineProperty(this, '_data', { - value: this._getDefaultValue(), writable: true }); Object.defineProperty(this, '_initialData', { @@ -97,6 +96,7 @@ var Field = (function () { get: function () { return _this._recipe.owner || null; }, enumerable: true }); + this.value = this._getDefaultValue(); } Field.prototype._createValidator = function () { var _a = this._recipe, validators = _a.validators, failFast = _a.failFast; @@ -167,7 +167,6 @@ var Field = (function () { return this; }; Field.prototype.fake = function () { - this.reset(); if (this.fakeValue) { this.value = this.fakeValue; } diff --git a/dist/src/fields.js.map b/dist/src/fields.js.map index bf0205d..34e6427 100644 --- a/dist/src/fields.js.map +++ b/dist/src/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/models.js b/dist/src/models.js index df4c73c..b630312 100644 --- a/dist/src/models.js +++ b/dist/src/models.js @@ -189,9 +189,9 @@ var Model = (function () { } else if (typeable_1.isArray(type) && type[0].prototype instanceof Model) { fields = fields.concat(value - .map(function (f, i) { return (f ? f.flatten(path.concat([i])) : null); }) + .map(function (f, i) { return (f && f instanceof Model ? f.flatten(path.concat([i])) : null); }) .filter(function (f) { return typeable_1.isArray(f); }) - .reduce(function (a, b) { return a.concat(b); })); + .reduce(function (a, b) { return a.concat(b); }, [])); } } }); diff --git a/dist/src/models.js.map b/dist/src/models.js.map index 45b1456..dc3a401 100644 --- a/dist/src/models.js.map +++ b/dist/src/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/fields.js b/dist/tests/fields.js index 74b0a4d..9803cfe 100644 --- a/dist/tests/fields.js +++ b/dist/tests/fields.js @@ -108,7 +108,7 @@ ava_1["default"]('method `fake()` sets value to the fake value', function (t) { var f2 = new src_1.Field({ fakeValue: function () { return Math.random(); } }); f0.value = 'foo'; f0.fake(); - t.is(f0.value, null); + t.is(f0.value, 'foo'); f1.value = 'bar'; f1.fake(); t.is(f1.value, 'foo'); diff --git a/dist/tests/fields.js.map b/dist/tests/fields.js.map index 6e7e2ce..b682d1b 100644 --- a/dist/tests/fields.js.map +++ b/dist/tests/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../tests/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../tests/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/models.js.map b/dist/tests/models.js.map index c80dab2..af52ade 100644 --- a/dist/tests/models.js.map +++ b/dist/tests/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index a4db3fe..c5c97d8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.21.0", + "version": "1.22.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", diff --git a/src/fields.ts b/src/fields.ts index 42cd37b..982dce6 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -70,7 +70,6 @@ export class Field { }); Object.defineProperty(this, '_data', { // current value - value: this._getDefaultValue(), writable: true }); Object.defineProperty(this, '_initialData', { // last commited value @@ -118,6 +117,8 @@ export class Field { get: () => this._recipe.owner || null, enumerable: true }); + + this.value = this._getDefaultValue(); } /* @@ -249,7 +250,6 @@ export class Field { */ public fake (): this { - this.reset(); if (this.fakeValue) { this.value = this.fakeValue; diff --git a/src/models.ts b/src/models.ts index 756a1a9..c3d5fdd 100644 --- a/src/models.ts +++ b/src/models.ts @@ -272,9 +272,9 @@ export abstract class Model { else if (isArray(type) && type[0].prototype instanceof Model) { fields = fields.concat( value - .map((f, i) => (f ? f.flatten(path.concat([i])) : null)) + .map((f, i) => (f && f instanceof Model ? f.flatten(path.concat([i])) : null)) .filter((f) => isArray(f)) - .reduce((a, b) => a.concat(b)) + .reduce((a, b) => a.concat(b), []) ); } } diff --git a/tests/fields.ts b/tests/fields.ts index 7cf2da9..c9433a4 100644 --- a/tests/fields.ts +++ b/tests/fields.ts @@ -69,7 +69,7 @@ test('method `fake()` sets value to the fake value', (t) => { let f2 = new Field({fakeValue () { return Math.random(); }}); f0.value = 'foo'; f0.fake(); - t.is(f0.value, null); + t.is(f0.value, 'foo'); f1.value = 'bar'; f1.fake(); t.is(f1.value, 'foo'); diff --git a/tests/models.ts b/tests/models.ts index 4d255e0..e1b49d1 100644 --- a/tests/models.ts +++ b/tests/models.ts @@ -432,7 +432,7 @@ test('method `reset` sets fields to their default values', (t) => { ] }); user.reset(); - t.deepEqual(user.serialize() as any, { + t.deepEqual(user.serialize(), { name: 'bar', book: { title: 'foo' @@ -465,7 +465,7 @@ test('method `fake` sets fields to their fake values', (t) => { } let user = new User(); user.fake(); - t.deepEqual(user.serialize() as any, { + t.deepEqual(user.serialize(), { name: 'bar', book: { title: 'foo' @@ -508,7 +508,7 @@ test('method `clear` sets fields to `null`', (t) => { ] }); user.clear(); - t.deepEqual(user.serialize() as any, { + t.deepEqual(user.serialize(), { name: null, book: null, books: null From e688e42a5877132908eae062e9c7ae0f6bbdf84c Mon Sep 17 00:00:00 2001 From: xpeper Date: Tue, 24 Oct 2017 22:35:12 +0200 Subject: [PATCH 189/219] cast defaultValues --- dist/src/fields.js | 35 ++++++++++++++++++----------------- dist/src/fields.js.map | 2 +- dist/tests/fields.js | 24 +++++++++++++++++++----- dist/tests/fields.js.map | 2 +- package.json | 2 +- src/fields.ts | 39 ++++++++++++++++++++------------------- tests/fields.ts | 24 +++++++++++++++++++----- 7 files changed, 79 insertions(+), 49 deletions(-) diff --git a/dist/src/fields.js b/dist/src/fields.js index 9f45eff..ddf3060 100644 --- a/dist/src/fields.js +++ b/dist/src/fields.js @@ -47,10 +47,27 @@ var Field = (function () { recipe = {}; } this.errors = []; + Object.defineProperty(this, 'serializable', { + get: function () { return !typeable_1.isArray(_this._recipe.serializable) ? [] : _this._recipe.serializable; }, + enumerable: true + }); + Object.defineProperty(this, 'enumerable', { + get: function () { return typeable_1.isUndefined(_this._recipe.enumerable) ? true : !!_this._recipe.enumerable; }, + enumerable: true + }); + Object.defineProperty(this, 'type', { + get: function () { return _this._recipe.type || null; }, + enumerable: true + }); + Object.defineProperty(this, 'owner', { + get: function () { return _this._recipe.owner || null; }, + enumerable: true + }); Object.defineProperty(this, '_recipe', { value: Object.freeze(recipe || {}) }); Object.defineProperty(this, '_data', { + value: this._getDefaultValue(), writable: true }); Object.defineProperty(this, '_initialData', { @@ -80,23 +97,6 @@ var Field = (function () { get: function () { return _this._initialData; }, enumerable: true }); - Object.defineProperty(this, 'serializable', { - get: function () { return !typeable_1.isArray(_this._recipe.serializable) ? [] : _this._recipe.serializable; }, - enumerable: true - }); - Object.defineProperty(this, 'enumerable', { - get: function () { return typeable_1.isUndefined(_this._recipe.enumerable) ? true : !!_this._recipe.enumerable; }, - enumerable: true - }); - Object.defineProperty(this, 'type', { - get: function () { return _this._recipe.type || null; }, - enumerable: true - }); - Object.defineProperty(this, 'owner', { - get: function () { return _this._recipe.owner || null; }, - enumerable: true - }); - this.value = this._getDefaultValue(); } Field.prototype._createValidator = function () { var _a = this._recipe, validators = _a.validators, failFast = _a.failFast; @@ -149,6 +149,7 @@ var Field = (function () { else if (!typeable_1.isUndefined(defaultValue)) { data = defaultValue; } + data = this._cast(data, this.type); return data; }; Field.prototype._getFakeValue = function () { diff --git a/dist/src/fields.js.map b/dist/src/fields.js.map index 34e6427..2c198c7 100644 --- a/dist/src/fields.js.map +++ b/dist/src/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/fields.js b/dist/tests/fields.js index 9803cfe..15d1a4e 100644 --- a/dist/tests/fields.js +++ b/dist/tests/fields.js @@ -145,10 +145,14 @@ ava_1["default"]('method `equals()` returns `true` when the provided `data` equa t.is(f0.equals(f1.value), true); }); ava_1["default"]('method `isChanged()` returns `true` if the value have been changed', function (t) { - var f = new src_1.Field(); - t.is(f.isChanged(), false); - f.value = 'foo'; - t.is(f.isChanged(), true); + var f0 = new src_1.Field(); + var f1 = new src_1.Field({ type: 'String', defaultValue: 'foo' }); + var f2 = new src_1.Field({ type: ['String'], defaultValue: ['foo'] }); + t.is(f0.isChanged(), false); + f0.value = 'foo'; + t.is(f0.isChanged(), true); + t.is(f1.isChanged(), false); + t.is(f2.isChanged(), false); }); ava_1["default"]('method `isNested()` returns `true` if the field type is un instance of a Model', function (t) { var f0 = new src_1.Field(); @@ -211,7 +215,17 @@ ava_1["default"]('method `isValid()` returns `true` when no errors exist', funct }); ava_1["default"]('has enumeratable properties', function (t) { var f = new src_1.Field(); - t.deepEqual(Object.keys(f), ['errors', 'value', 'defaultValue', 'fakeValue', 'initialValue', 'serializable', 'enumerable', 'type', 'owner']); + t.deepEqual(Object.keys(f), [ + 'errors', + 'serializable', + 'enumerable', + 'type', + 'owner', + 'value', + 'defaultValue', + 'fakeValue', + 'initialValue', + ]); }); ava_1["default"]('method `handle()` handles an error and populates the `errors` property', function (t) { return __awaiter(_this, void 0, void 0, function () { var f, e; diff --git a/dist/tests/fields.js.map b/dist/tests/fields.js.map index b682d1b..9ad2d6c 100644 --- a/dist/tests/fields.js.map +++ b/dist/tests/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../tests/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../tests/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index c5c97d8..c32604c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.22.0", + "version": "1.23.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", diff --git a/src/fields.ts b/src/fields.ts index 982dce6..9cd7d66 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -65,11 +65,29 @@ export class Field { this.errors = []; + Object.defineProperty(this, 'serializable', { + get: () => !isArray(this._recipe.serializable) ? [] : this._recipe.serializable, + enumerable: true + }); + Object.defineProperty(this, 'enumerable', { + get: () => isUndefined(this._recipe.enumerable) ? true : !!this._recipe.enumerable, + enumerable: true + }); + Object.defineProperty(this, 'type', { + get: () => this._recipe.type || null, + enumerable: true + }); + Object.defineProperty(this, 'owner', { + get: () => this._recipe.owner || null, + enumerable: true + }); + Object.defineProperty(this, '_recipe', { value: Object.freeze(recipe || {}) }); Object.defineProperty(this, '_data', { // current value + value: this._getDefaultValue(), writable: true }); Object.defineProperty(this, '_initialData', { // last commited value @@ -100,25 +118,6 @@ export class Field { get: () => this._initialData, enumerable: true }); - - Object.defineProperty(this, 'serializable', { - get: () => !isArray(this._recipe.serializable) ? [] : this._recipe.serializable, - enumerable: true - }); - Object.defineProperty(this, 'enumerable', { - get: () => isUndefined(this._recipe.enumerable) ? true : !!this._recipe.enumerable, - enumerable: true - }); - Object.defineProperty(this, 'type', { - get: () => this._recipe.type || null, - enumerable: true - }); - Object.defineProperty(this, 'owner', { - get: () => this._recipe.owner || null, - enumerable: true - }); - - this.value = this._getDefaultValue(); } /* @@ -214,6 +213,8 @@ export class Field { data = defaultValue; } + data = this._cast(data, this.type); + return data; } diff --git a/tests/fields.ts b/tests/fields.ts index c9433a4..f1e5d65 100644 --- a/tests/fields.ts +++ b/tests/fields.ts @@ -110,10 +110,14 @@ test('method `equals()` returns `true` when the provided `data` equals to the cu }); test('method `isChanged()` returns `true` if the value have been changed', (t) => { - let f = new Field(); - t.is(f.isChanged(), false); - f.value = 'foo'; - t.is(f.isChanged(), true); + let f0 = new Field(); + let f1 = new Field({type: 'String', defaultValue: 'foo'}); + let f2 = new Field({type: ['String'], defaultValue: ['foo']}); + t.is(f0.isChanged(), false); + f0.value = 'foo'; + t.is(f0.isChanged(), true); + t.is(f1.isChanged(), false); + t.is(f2.isChanged(), false); }); test('method `isNested()` returns `true` if the field type is un instance of a Model', (t) => { @@ -167,7 +171,17 @@ test('method `isValid()` returns `true` when no errors exist', (t) => { test('has enumeratable properties', (t) => { let f = new Field(); - t.deepEqual(Object.keys(f), ['errors', 'value', 'defaultValue', 'fakeValue', 'initialValue', 'serializable', 'enumerable', 'type', 'owner']); + t.deepEqual(Object.keys(f), [ + 'errors', + 'serializable', + 'enumerable', + 'type', + 'owner', + 'value', + 'defaultValue', + 'fakeValue', + 'initialValue', + ]); }); test('method `handle()` handles an error and populates the `errors` property', async (t) => { From 24684974fd69675ac3abda3a7959a3ccee03d72a Mon Sep 17 00:00:00 2001 From: xpeper Date: Wed, 25 Oct 2017 00:19:02 +0200 Subject: [PATCH 190/219] data normalization, do not normalize when serialize --- dist/src/fields.js | 4 +-- dist/src/models.js | 30 +++++++++++----- dist/src/models.js.map | 2 +- dist/src/utils.d.ts | 2 +- dist/src/utils.js | 6 ++-- dist/src/utils.js.map | 2 +- dist/tests/models.js | 6 ++-- dist/tests/models.js.map | 2 +- package-lock.json | 76 +++++++++++++++++++++++++++++++++++++++- package.json | 3 +- src/fields.ts | 8 ++--- src/models.ts | 71 ++++++++++++++++++++++--------------- src/utils.ts | 7 ++-- tests/models.ts | 8 ++--- 14 files changed, 166 insertions(+), 61 deletions(-) diff --git a/dist/src/fields.js b/dist/src/fields.js index ddf3060..4cb48c6 100644 --- a/dist/src/fields.js +++ b/dist/src/fields.js @@ -186,7 +186,7 @@ var Field = (function () { .filter(function (v) { return v && v.commit; }) .forEach(function (v) { return v.commit(); }); } - this._initialData = utils_1.serialize(this.value); + this._initialData = utils_1.normalize(this.value); return this; }; Field.prototype.rollback = function () { @@ -195,7 +195,7 @@ var Field = (function () { }; Field.prototype.equals = function (data) { var value = data instanceof Field ? data.value : data; - return utils_1.isEqual(utils_1.serialize(this.value), utils_1.serialize(value)); + return utils_1.isEqual(utils_1.normalize(this.value), utils_1.normalize(value)); }; Field.prototype.isChanged = function () { return !this.equals(this.initialValue); diff --git a/dist/src/models.js b/dist/src/models.js index b630312..2a0f54c 100644 --- a/dist/src/models.js +++ b/dist/src/models.js @@ -159,19 +159,33 @@ var Model = (function () { if (data === void 0) { data = {}; } Object.keys(data || {}) .filter(function (n) { return !!_this._fields[n]; }) - .forEach(function (name) { return _this[name] = utils_1.serialize(data[name]); }); + .forEach(function (name) { return _this[name] = utils_1.normalize(data[name]); }); return this; }; Model.prototype.serialize = function (strategy) { - return this.filter(function (ref) { - if (typeable_1.isString(strategy)) { - return (typeable_1.isArray(ref.field.serializable) - && ref.field.serializable.indexOf(strategy) !== -1); + var _this = this; + var data = {}; + function toObject(value) { + if (value instanceof Model) { + return value.serialize(strategy); + } + else if (typeable_1.isArray(value)) { + return value.map(function (v) { return toObject(v); }); } else { - return true; + return value; + } + } + Object.keys(this._fields).forEach(function (name) { + var field = _this._fields[name]; + if (typeable_1.isString(strategy) + && typeable_1.isArray(field.serializable) + && field.serializable.indexOf(strategy) !== -1 + || !typeable_1.isString(strategy)) { + data[name] = toObject(field.value); } }); + return data; }; Model.prototype.flatten = function (prefix) { var _this = this; @@ -204,7 +218,7 @@ var Model = (function () { return this.flatten().map(handler).length; }; Model.prototype.filter = function (test) { - var data = utils_1.serialize(this); + var data = this.serialize(); this.flatten() .sort(function (a, b) { return b.path.length - a.path.length; }) .filter(function (field) { return !test(field); }) @@ -246,7 +260,7 @@ var Model = (function () { return this; }; Model.prototype.equals = function (value) { - return utils_1.isEqual(utils_1.serialize(this), utils_1.serialize(value)); + return utils_1.isEqual(utils_1.normalize(this), utils_1.normalize(value)); }; Model.prototype.isChanged = function () { var _this = this; diff --git a/dist/src/models.js.map b/dist/src/models.js.map index dc3a401..ba46dfa 100644 --- a/dist/src/models.js.map +++ b/dist/src/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAA8E;AAG9E,mCAAwD;AACxD,iCAAkD;AAiClD;IAaE,eAAoB,MAAoB;QAAxC,iBAiCC;QAhCC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,GAAG,EAAE,CAAC;QACd,CAAC;QAED,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;YACpC,KAAK,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI;YAC3C,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;YAClC,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,aAAa,EAAE,EAApB,CAAoB;SAChC,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;YACrC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;YACpC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE;YACzC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE;YACvC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE;YACvC,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;IACL,CAAC;IAMS,6BAAa,GAAvB;QACE,IAAI,IAAI,GAAU,IAAI,CAAC;QACvB,GAAG,CAAC;YACF,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAChB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;YACrB,CAAC;YACD,IAAI,CAAC,CAAC;gBACJ,MAAM,CAAC,IAAI,CAAC;YACd,CAAC;QACH,CAAC,QAAQ,IAAI,EAAE;IACjB,CAAC;IAMS,6BAAa,GAAvB,UAAyB,MAAwB;QAAxB,uBAAA,EAAA,WAAwB;QAC/C,IAAI,IAAI,GAAG,kBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QAC/D,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACjC,MAAM,CAAC,kBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9C,CAAC;IAOS,4BAAY,GAAtB,UAAwB,MAAwB;QAAxB,uBAAA,EAAA,WAAwB;QAC9C,MAAM,CAAC,IAAI,cAAK,CACd,aAAK,CAAC,EAAE,EAAE,MAAM,EAAE;YAChB,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;YAChC,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,QAAQ,EAAE,IAAI,CAAC,SAAS;SACzB,CAAC,CACH,CAAC;IACJ,CAAC;IAMS,sCAAsB,GAAhC,UAAkC,OAA6B,EAAE,IAAU;QAAzC,wBAAA,EAAA,6BAA6B;QAAE,qBAAA,EAAA,UAAU;QACzE,IAAI,KAAK,GAAe,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QAElB,MAAM,CAAC,KAAK,CAAC;IACf,CAAC;IAOS,4BAAY,GAAtB,UAAwB,MAAwB;QAAxB,uBAAA,EAAA,WAAwB;QAC9C,MAAM,CAAC,IAAK,IAAI,CAAC,WAAmB,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAMM,wBAAQ,GAAf,UAAiB,IAAoB;QAApB,qBAAA,EAAA,WAAoB;QACnC,IAAI,CAAC,SAAS,GAAG,oBAAS,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAMM,2BAAW,GAAlB,UAAoB,IAAY,EAAE,MAAwB;QAAxB,uBAAA,EAAA,WAAwB;QACxD,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAEtC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE;YAChC,GAAG,EAAE,cAAM,OAAA,KAAK,CAAC,KAAK,EAAX,CAAW;YACtB,GAAG,EAAE,UAAC,CAAC,IAAK,OAAA,KAAK,CAAC,KAAK,GAAG,CAAC,EAAf,CAAe;YAC3B,UAAU,EAAE,MAAM,CAAC,UAAU,KAAK,KAAK;YACvC,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IAC7B,CAAC;IAMM,0BAAU,GAAjB,UAAmB,IAAY,EAAE,SAA2B;QAC1D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IAChC,CAAC;IAMM,+BAAe,GAAtB,UAAwB,IAAY,EAAE,OAAqE;QACzG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACnC,CAAC;IAMM,6BAAa,GAApB,UAAsB,IAAY,EAAE,OAAmE;QACrG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACjC,CAAC;IAMM,wBAAQ,GAAf;QAAiB,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAC7B,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAEpD,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAZ,CAAY,EAAE,IAAI,CAAC,CAAC;QACtD,MAAM,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACtE,CAAC;IAMM,wBAAQ,GAAf;QAAiB,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAC7B,MAAM,CAAC,CAAC,sBAAW,CAAC,IAAI,CAAC,QAAQ,OAAb,IAAI,EAAa,IAAI,EAAE,CAAC;IAC9C,CAAC;IAMM,wBAAQ,GAAf,UAAiB,IAAS;QAA1B,iBAMC;QANgB,qBAAA,EAAA,SAAS;QACxB,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAjB,CAAiB,CAAC;aAChC,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,IAAI,CAAC,GAAG,iBAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAlC,CAAkC,CAAC,CAAC;QAEzD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,yBAAS,GAAhB,UAAkB,QAAiB;QACjC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAC,GAAG;YACrB,EAAE,CAAC,CAAC,mBAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACvB,MAAM,CAAC,CACL,kBAAO,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC;uBAC5B,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CACnD,CAAC;YACJ,CAAC;YAAC,IAAI,CAAC,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAMM,uBAAO,GAAd,UAAgB,MAAqB;QAArC,iBA6BC;QA7Be,uBAAA,EAAA,WAAqB;QACnC,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAC,IAAI;YACrC,IAAI,KAAK,GAAG,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YACtB,IAAI,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAExB,MAAM,CAAC,IAAI,CAAC,EAAC,IAAI,MAAA,EAAE,KAAK,OAAA,EAAC,CAAC,CAAC;YAE3B,EAAE,CAAC,CAAC,oBAAS,CAAC,KAAK,CAAC,IAAI,oBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACxC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC;oBACpC,MAAM,GAAG,MAAM,CAAC,MAAM,CACpB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CACpB,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC,CAAC,kBAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC;oBAC7D,MAAM,GAAG,MAAM,CAAC,MAAM,CACpB,KAAK;yBACF,GAAG,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAA9D,CAA8D,CAAC;yBAC7E,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,kBAAO,CAAC,CAAC,CAAC,EAAV,CAAU,CAAC;yBACzB,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAX,CAAW,EAAE,EAAE,CAAC,CACrC,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC;IAChB,CAAC;IAMM,uBAAO,GAAd,UAAgB,OAAiC;QAC/C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAMM,sBAAM,GAAb,UAAe,OAAkC;QAC/C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAC5C,CAAC;IAOM,sBAAM,GAAb,UAAe,IAAkC;QAC/C,IAAI,IAAI,GAAG,iBAAS,CAAC,IAAI,CAAC,CAAC;QAE3B,IAAI,CAAC,OAAO,EAAE;aACX,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAA7B,CAA6B,CAAC;aAC7C,MAAM,CAAC,UAAC,KAAK,IAAK,OAAA,CAAC,IAAI,CAAC,KAAK,CAAC,EAAZ,CAAY,CAAC;aAC/B,OAAO,CAAC,UAAC,KAAK;YACb,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,EAAJ,CAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEL,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,qBAAK,GAAL;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAA1B,CAA0B,CAAC,CAAC;QAEjD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,oBAAI,GAAJ;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAzB,CAAyB,CAAC,CAAC;QAEhD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,qBAAK,GAAL;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAA1B,CAA0B,CAAC,CAAC;QAEjD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,sBAAM,GAAN;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAA3B,CAA2B,CAAC,CAAC;QAElD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,wBAAQ,GAAR;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAA7B,CAA6B,CAAC,CAAC;QAEpD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAOD,sBAAM,GAAN,UAAQ,KAAU;QAChB,MAAM,CAAC,eAAO,CACZ,iBAAS,CAAC,IAAI,CAAC,EACf,iBAAS,CAAC,KAAK,CAAC,CACjB,CAAC;IACJ,CAAC;IAMD,yBAAS,GAAT;QAAA,iBAGC;QAFC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7B,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAA9B,CAA8B,CAAC,CAAC;IACpD,CAAC;IAMD,wBAAQ,GAAR;QAAA,iBAGC;QAFC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7B,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAA7B,CAA6B,CAAC,CAAC;IACnD,CAAC;IAMK,wBAAQ,GAAd,UAAgB,EAIV;YAHJ,oCAAa,EAAb,kCAAa;;;;;;wBAIT,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;wBAE1B,WAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;iCAChB,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAApB,CAAoB,CAAC,CACpC,EAAA;;wBAHD,SAGC,CAAC;wBAEF,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;4BAC/B,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;wBACtC,CAAC;wBACD,WAAO,IAAI,EAAC;;;;KACb;IAMK,sBAAM,GAAZ,UAAc,KAAU,EAAE,EAIpB;YAHJ,oCAAY,EAAZ,iCAAY;;;;;;wBAIZ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;4BAAC,MAAM,KAAC,IAAI,EAAC;wBACxB,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;4BAAC,MAAM,KAAC,IAAI,EAAC;wBAEhC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;wBAC1B,WAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;iCAChB,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC,CACvC,EAAA;;wBAHD,SAGC,CAAC;wBAEF,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;4BAC/B,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;wBACtC,CAAC;wBACD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;4BAC3B,MAAM,KAAK,CAAC;wBACd,CAAC;wBACD,WAAO,IAAI,EAAC;;;;KACb;IAMD,6BAAa,GAAb;QACE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;aAClB,GAAG,CAAC,UAAC,EAAa;gBAAZ,cAAI,EAAE,gBAAK;YAAM,OAAA,CAAC,EAAC,IAAI,MAAA,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAmB,CAAA;QAA/C,CAA+C,CAAC;aACvE,MAAM,CAAC,UAAC,EAAc;gBAAb,cAAI,EAAE,kBAAM;YAAM,OAAA,MAAM,CAAC,MAAM,GAAG,CAAC;QAAjB,CAAiB,CAAC,CAAC;IACnD,CAAC;IAMD,2BAAW,GAAX,UAAa,MAA4B;QAAzC,iBASC;QATY,uBAAA,EAAA,WAA4B;QACvC,MAAM,CAAC,OAAO,CAAC,UAAC,KAAK;YACnB,IAAI,KAAK,GAAG,KAAI,CAAC,QAAQ,OAAb,KAAI,EAAa,KAAK,CAAC,IAAI,CAAC,CAAC;YACzC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gBACV,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,yBAAS,GAAT;QAAA,iBAGC;QAFC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7B,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAA9B,CAA8B,CAAC,CAAC;IACpD,CAAC;IAMD,uBAAO,GAAP;QACE,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC;IAMD,0BAAU,GAAV;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAA/B,CAA+B,CAAC,CAAC;QAEtD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMD,qBAAK,GAAL,UAAO,IAAS;QAAT,qBAAA,EAAA,SAAS;QACd,MAAM,CAAC,IAAI,CAAC,YAAY,CACtB,aAAK,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,EAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAC,EAAE,IAAI,CAAC,CACzD,CAAC;IACJ,CAAC;IAEH,YAAC;AAAD,CAAC,AAjeD,IAieC;AAjeqB,sBAAK"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAA8E;AAG9E,mCAAwD;AACxD,iCAAkD;AAiClD;IAaE,eAAoB,MAAoB;QAAxC,iBAiCC;QAhCC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,GAAG,EAAE,CAAC;QACd,CAAC;QAED,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;YACpC,KAAK,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI;YAC3C,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;YAClC,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,aAAa,EAAE,EAApB,CAAoB;SAChC,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;YACrC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;YACpC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE;YACzC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE;YACvC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE;YACvC,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;IACL,CAAC;IAMS,6BAAa,GAAvB;QACE,IAAI,IAAI,GAAU,IAAI,CAAC;QACvB,GAAG,CAAC;YACF,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAChB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;YACrB,CAAC;YACD,IAAI,CAAC,CAAC;gBACJ,MAAM,CAAC,IAAI,CAAC;YACd,CAAC;QACH,CAAC,QAAQ,IAAI,EAAE;IACjB,CAAC;IAMS,6BAAa,GAAvB,UAAyB,MAAwB;QAAxB,uBAAA,EAAA,WAAwB;QAC/C,IAAI,IAAI,GAAG,kBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QAC/D,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACjC,MAAM,CAAC,kBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9C,CAAC;IAOS,4BAAY,GAAtB,UAAwB,MAAwB;QAAxB,uBAAA,EAAA,WAAwB;QAC9C,MAAM,CAAC,IAAI,cAAK,CACd,aAAK,CAAC,EAAE,EAAE,MAAM,EAAE;YAChB,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;YAChC,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,QAAQ,EAAE,IAAI,CAAC,SAAS;SACzB,CAAC,CACH,CAAC;IACJ,CAAC;IAMS,sCAAsB,GAAhC,UAAkC,OAA6B,EAAE,IAAU;QAAzC,wBAAA,EAAA,6BAA6B;QAAE,qBAAA,EAAA,UAAU;QACzE,IAAI,KAAK,GAAe,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QAElB,MAAM,CAAC,KAAK,CAAC;IACf,CAAC;IAOS,4BAAY,GAAtB,UAAwB,MAAwB;QAAxB,uBAAA,EAAA,WAAwB;QAC9C,MAAM,CAAC,IAAK,IAAI,CAAC,WAAmB,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAMM,wBAAQ,GAAf,UAAiB,IAAoB;QAApB,qBAAA,EAAA,WAAoB;QACnC,IAAI,CAAC,SAAS,GAAG,oBAAS,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAMM,2BAAW,GAAlB,UAAoB,IAAY,EAAE,MAAwB;QAAxB,uBAAA,EAAA,WAAwB;QACxD,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAEtC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE;YAChC,GAAG,EAAE,cAAM,OAAA,KAAK,CAAC,KAAK,EAAX,CAAW;YACtB,GAAG,EAAE,UAAC,CAAC,IAAK,OAAA,KAAK,CAAC,KAAK,GAAG,CAAC,EAAf,CAAe;YAC3B,UAAU,EAAE,MAAM,CAAC,UAAU,KAAK,KAAK;YACvC,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IAC7B,CAAC;IAMM,0BAAU,GAAjB,UAAmB,IAAY,EAAE,SAA2B;QAC1D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IAChC,CAAC;IAMM,+BAAe,GAAtB,UAAwB,IAAY,EAAE,OAAqE;QACzG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACnC,CAAC;IAMM,6BAAa,GAApB,UAAsB,IAAY,EAAE,OAAmE;QACrG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACjC,CAAC;IAMM,wBAAQ,GAAf;QAAiB,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAC7B,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAEpD,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAZ,CAAY,EAAE,IAAI,CAAC,CAAC;QACtD,MAAM,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACtE,CAAC;IAMM,wBAAQ,GAAf;QAAiB,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAC7B,MAAM,CAAC,CAAC,sBAAW,CAAC,IAAI,CAAC,QAAQ,OAAb,IAAI,EAAa,IAAI,EAAE,CAAC;IAC9C,CAAC;IAMM,wBAAQ,GAAf,UAAiB,IAAS;QAA1B,iBAMC;QANgB,qBAAA,EAAA,SAAS;QACxB,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAjB,CAAiB,CAAC;aAChC,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,IAAI,CAAC,GAAG,iBAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAlC,CAAkC,CAAC,CAAC;QAEzD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,yBAAS,GAAhB,UAAkB,QAAiB;QAAnC,iBA0BC;QAzBC,IAAM,IAAI,GAAG,EAAE,CAAC;QAEhB,kBAAkB,KAAK;YACrB,EAAE,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC;gBAC3B,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACnC,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAC,kBAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,QAAQ,CAAC,CAAC,CAAC,EAAX,CAAW,CAAC,CAAC;YACvC,CAAC;YAAC,IAAI,CAAC,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAC,IAAI;YACrC,IAAI,KAAK,GAAG,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/B,EAAE,CAAC,CACD,mBAAQ,CAAC,QAAQ,CAAC;mBACf,kBAAO,CAAC,KAAK,CAAC,YAAY,CAAC;mBAC3B,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;mBAC3C,CAAC,mBAAQ,CAAC,QAAQ,CACvB,CAAC,CAAC,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,uBAAO,GAAd,UAAgB,MAAqB;QAArC,iBA6BC;QA7Be,uBAAA,EAAA,WAAqB;QACnC,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAC,IAAI;YACrC,IAAI,KAAK,GAAG,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YACtB,IAAI,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAExB,MAAM,CAAC,IAAI,CAAC,EAAC,IAAI,MAAA,EAAE,KAAK,OAAA,EAAC,CAAC,CAAC;YAE3B,EAAE,CAAC,CAAC,oBAAS,CAAC,KAAK,CAAC,IAAI,oBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACxC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC;oBACpC,MAAM,GAAG,MAAM,CAAC,MAAM,CACpB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CACpB,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC,CAAC,kBAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC;oBAC7D,MAAM,GAAG,MAAM,CAAC,MAAM,CACpB,KAAK;yBACF,GAAG,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAA9D,CAA8D,CAAC;yBAC7E,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,kBAAO,CAAC,CAAC,CAAC,EAAV,CAAU,CAAC;yBACzB,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAX,CAAW,EAAE,EAAE,CAAC,CACrC,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC;IAChB,CAAC;IAMM,uBAAO,GAAd,UAAgB,OAAiC;QAC/C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAMM,sBAAM,GAAb,UAAe,OAAkC;QAC/C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAC5C,CAAC;IAOM,sBAAM,GAAb,UAAe,IAAkC;QAC/C,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAE5B,IAAI,CAAC,OAAO,EAAE;aACX,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAA7B,CAA6B,CAAC;aAC7C,MAAM,CAAC,UAAC,KAAK,IAAK,OAAA,CAAC,IAAI,CAAC,KAAK,CAAC,EAAZ,CAAY,CAAC;aAC/B,OAAO,CAAC,UAAC,KAAK;YACb,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,EAAJ,CAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEL,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,qBAAK,GAAZ;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAA1B,CAA0B,CAAC,CAAC;QAEjD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,oBAAI,GAAX;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAzB,CAAyB,CAAC,CAAC;QAEhD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,qBAAK,GAAZ;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAA1B,CAA0B,CAAC,CAAC;QAEjD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,sBAAM,GAAb;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAA3B,CAA2B,CAAC,CAAC;QAElD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,wBAAQ,GAAf;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAA7B,CAA6B,CAAC,CAAC;QAEpD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAOM,sBAAM,GAAb,UAAe,KAAU;QACvB,MAAM,CAAC,eAAO,CACZ,iBAAS,CAAC,IAAI,CAAC,EACf,iBAAS,CAAC,KAAK,CAAC,CACjB,CAAC;IACJ,CAAC;IAMM,yBAAS,GAAhB;QAAA,iBAGC;QAFC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7B,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAA9B,CAA8B,CAAC,CAAC;IACpD,CAAC;IAMM,wBAAQ,GAAf;QAAA,iBAGC;QAFC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7B,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAA7B,CAA6B,CAAC,CAAC;IACnD,CAAC;IAMY,wBAAQ,GAArB,UAAuB,EAIjB;YAHJ,oCAAa,EAAb,kCAAa;;;;;;wBAIT,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;wBAE1B,WAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;iCAChB,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAApB,CAAoB,CAAC,CACpC,EAAA;;wBAHD,SAGC,CAAC;wBAEF,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;4BAC/B,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;wBACtC,CAAC;wBACD,WAAO,IAAI,EAAC;;;;KACb;IAMY,sBAAM,GAAnB,UAAqB,KAAU,EAAE,EAI3B;YAHJ,oCAAY,EAAZ,iCAAY;;;;;;wBAIZ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;4BAAC,MAAM,KAAC,IAAI,EAAC;wBACxB,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;4BAAC,MAAM,KAAC,IAAI,EAAC;wBAEhC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;wBAC1B,WAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;iCAChB,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC,CACvC,EAAA;;wBAHD,SAGC,CAAC;wBAEF,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;4BAC/B,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;wBACtC,CAAC;wBACD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;4BAC3B,MAAM,KAAK,CAAC;wBACd,CAAC;wBACD,WAAO,IAAI,EAAC;;;;KACb;IAMM,6BAAa,GAApB;QACE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;aAClB,GAAG,CAAC,UAAC,EAAa;gBAAZ,cAAI,EAAE,gBAAK;YAAM,OAAA,CAAC,EAAC,IAAI,MAAA,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAmB,CAAA;QAA/C,CAA+C,CAAC;aACvE,MAAM,CAAC,UAAC,EAAc;gBAAb,cAAI,EAAE,kBAAM;YAAM,OAAA,MAAM,CAAC,MAAM,GAAG,CAAC;QAAjB,CAAiB,CAAC,CAAC;IACnD,CAAC;IAMM,2BAAW,GAAlB,UAAoB,MAA4B;QAAhD,iBASC;QATmB,uBAAA,EAAA,WAA4B;QAC9C,MAAM,CAAC,OAAO,CAAC,UAAC,KAAK;YACnB,IAAI,KAAK,GAAG,KAAI,CAAC,QAAQ,OAAb,KAAI,EAAa,KAAK,CAAC,IAAI,CAAC,CAAC;YACzC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gBACV,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,yBAAS,GAAhB;QAAA,iBAGC;QAFC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7B,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAA9B,CAA8B,CAAC,CAAC;IACpD,CAAC;IAMM,uBAAO,GAAd;QACE,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC;IAMM,0BAAU,GAAjB;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAA/B,CAA+B,CAAC,CAAC;QAEtD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,qBAAK,GAAZ,UAAc,IAAS;QAAT,qBAAA,EAAA,SAAS;QACrB,MAAM,CAAC,IAAI,CAAC,YAAY,CACtB,aAAK,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,EAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAC,EAAE,IAAI,CAAC,CACzD,CAAC;IACJ,CAAC;IAEH,YAAC;AAAD,CAAC,AAhfD,IAgfC;AAhfqB,sBAAK"} \ No newline at end of file diff --git a/dist/src/utils.d.ts b/dist/src/utils.d.ts index 1f2d71b..d1b6097 100644 --- a/dist/src/utils.d.ts +++ b/dist/src/utils.d.ts @@ -2,4 +2,4 @@ import merge = require('lodash.merge'); import isEqual = require('lodash.isequal'); export { merge }; export { isEqual }; -export declare function serialize(data: any): any; +export declare function normalize(data: any): any; diff --git a/dist/src/utils.js b/dist/src/utils.js index fb6c9eb..cff358a 100644 --- a/dist/src/utils.js +++ b/dist/src/utils.js @@ -4,13 +4,13 @@ var merge = require("lodash.merge"); exports.merge = merge; var isEqual = require("lodash.isequal"); exports.isEqual = isEqual; -function serialize(data) { +function normalize(data) { if (typeof data === 'undefined') { - return data; + return undefined; } else { return JSON.parse(JSON.stringify(data)); } } -exports.serialize = serialize; +exports.normalize = normalize; //# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/dist/src/utils.js.map b/dist/src/utils.js.map index 7ad38e8..a406f3c 100644 --- a/dist/src/utils.js.map +++ b/dist/src/utils.js.map @@ -1 +1 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;AAAA,oCAAuC;AAO/B,sBAAK;AANb,wCAA2C;AAYnC,0BAAO;AAMf,mBAA2B,IAAS;IAClC,EAAE,CAAC,CAAC,OAAO,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAAC,IAAI,CAAC,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAND,8BAMC"} \ No newline at end of file +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;AAAA,oCAAuC;AAO/B,sBAAK;AANb,wCAA2C;AAYnC,0BAAO;AAMf,mBAA2B,IAAS;IAClC,EAAE,CAAC,CAAC,OAAO,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,SAAS,CAAC;IACnB,CAAC;IAAC,IAAI,CAAC,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAND,8BAMC"} \ No newline at end of file diff --git a/dist/tests/models.js b/dist/tests/models.js index a809203..8c3a96e 100644 --- a/dist/tests/models.js +++ b/dist/tests/models.js @@ -277,7 +277,7 @@ ava_1["default"]('method `serialize` converts model into a serialized data objec __extends(User, _super); function User(data) { var _this = _super.call(this, data) || this; - _this.defineField('id', { serializable: [] }); + _this.defineField('id', { type: function (v) { return new Object(v); }, serializable: [] }); _this.defineField('name', { type: 'String', serializable: null }); _this.defineField('description', { serializable: ['input', 'output'] }); _this.defineField('book', { type: Book, serializable: ['output'] }); @@ -288,7 +288,7 @@ ava_1["default"]('method `serialize` converts model into a serialized data objec return User; }(src_1.Model)); var user = new User({ - id: 'id', + id: new Object('59efbadde01a49055b39711f'), name: 'foo', description: 'des', book: { @@ -302,7 +302,7 @@ ava_1["default"]('method `serialize` converts model into a serialized data objec ] }); t.deepEqual(user.serialize(), { - id: 'id', + id: new Object('59efbadde01a49055b39711f'), name: 'foo', description: 'des', book: { diff --git a/dist/tests/models.js.map b/dist/tests/models.js.map index af52ade..6a4d161 100644 --- a/dist/tests/models.js.map +++ b/dist/tests/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 4132832..f55abde 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.19.0", + "version": "1.24.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -822,12 +822,24 @@ "repeat-element": "1.1.2" } }, + "bson": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.4.tgz", + "integrity": "sha1-k8ENOeqltYQVy8QFLz5T5WKwtyw=", + "dev": true + }, "buf-compare": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz", "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", "dev": true }, + "buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "dev": true + }, "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", @@ -1252,6 +1264,12 @@ "integrity": "sha1-7sXHJurO9Rt/a3PCDbbhsTsGnJg=", "dev": true }, + "es6-promise": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.2.1.tgz", + "integrity": "sha1-7FYjOGgDKQkgcXDDlEjiREndH8Q=", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -3190,6 +3208,44 @@ "minimist": "0.0.8" } }, + "mongodb": { + "version": "2.2.33", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.2.33.tgz", + "integrity": "sha1-tTfEcdNKZlG0jzb9vyl1A0Dgi1A=", + "dev": true, + "requires": { + "es6-promise": "3.2.1", + "mongodb-core": "2.1.17", + "readable-stream": "2.2.7" + }, + "dependencies": { + "readable-stream": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.7.tgz", + "integrity": "sha1-BwV6y+JGeyIELTb5jFrVBwVOlbE=", + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + } + } + }, + "mongodb-core": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-2.1.17.tgz", + "integrity": "sha1-pBizN6FKFJkPtRC5I97mqBMXPfg=", + "dev": true, + "requires": { + "bson": "1.0.4", + "require_optional": "1.0.1" + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -3768,6 +3824,24 @@ "integrity": "sha1-WhtS63Dr7UPrmC6XTIWrWVceVvo=", "dev": true }, + "require_optional": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", + "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", + "dev": true, + "requires": { + "resolve-from": "2.0.0", + "semver": "5.4.1" + }, + "dependencies": { + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "dev": true + } + } + }, "resolve": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", diff --git a/package.json b/package.json index c32604c..db042ea 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.23.0", + "version": "1.24.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -72,6 +72,7 @@ "license": "MIT", "devDependencies": { "ava": "^0.22.0", + "mongodb": "2.2.33", "tslint": "^5.7.0", "typescript": "^2.5.3" }, diff --git a/src/fields.ts b/src/fields.ts index 9cd7d66..6330ad8 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -1,5 +1,5 @@ import {isFunction, isUndefined, isPresent, isArray, toArray, isValue, cast} from 'typeable'; -import {serialize, isEqual, merge} from './utils'; +import {normalize, isEqual, merge} from './utils'; import {Validator, ValidatorRecipe} from 'validatable'; import {Handler, HandlerRecipe} from 'handleable'; import {Model} from './models'; @@ -284,7 +284,7 @@ export class Field { .forEach((v) => v.commit()); } - this._initialData = serialize(this.value); + this._initialData = normalize(this.value); return this; } @@ -307,8 +307,8 @@ export class Field { let value = data instanceof Field ? data.value : data; return isEqual( - serialize(this.value), - serialize(value) + normalize(this.value), + normalize(value) ); } diff --git a/src/models.ts b/src/models.ts index c3d5fdd..d713afe 100644 --- a/src/models.ts +++ b/src/models.ts @@ -2,7 +2,7 @@ import {isArray, isUndefined, isPresent, isString, toBoolean} from 'typeable'; import {ValidatorRecipe} from 'validatable'; import {HandlerRecipe} from 'handleable'; import {Field, FieldRecipe, FieldError} from './fields'; -import {serialize, isEqual, merge} from './utils'; +import {normalize, isEqual, merge} from './utils'; /* * Flattened field reference type definition. @@ -226,7 +226,7 @@ export abstract class Model { public populate (data = {}): this { Object.keys(data || {}) .filter((n) => !!this._fields[n]) - .forEach((name) => this[name] = serialize(data[name])); + .forEach((name) => this[name] = normalize(data[name])); return this; } @@ -236,16 +236,31 @@ export abstract class Model { */ public serialize (strategy?: string): {[key: string]: any} { - return this.filter((ref) => { - if (isString(strategy)) { - return ( - isArray(ref.field.serializable) - && ref.field.serializable.indexOf(strategy) !== -1 - ); + const data = {}; + + function toObject(value) { + if (value instanceof Model) { + return value.serialize(strategy); + } else if (isArray(value)) { + return value.map((v) => toObject(v)); } else { - return true; + return value; + } + } + + Object.keys(this._fields).forEach((name) => { + let field = this._fields[name]; + if ( + isString(strategy) + && isArray(field.serializable) + && field.serializable.indexOf(strategy) !== -1 + || !isString(strategy) + ) { + data[name] = toObject(field.value); } }); + + return data; } /* @@ -305,7 +320,7 @@ export abstract class Model { */ public filter (test: (field: FieldRef) => boolean): {[key: string]: any} { - let data = serialize(this); + let data = this.serialize(); this.flatten() .sort((a, b) => b.path.length - a.path.length) @@ -323,7 +338,7 @@ export abstract class Model { * Sets each model field to its default value. */ - reset (): this { + public reset (): this { Object.keys(this._fields) .forEach((name) => this._fields[name].reset()); @@ -334,7 +349,7 @@ export abstract class Model { * Resets fields then sets fields to their fake values. */ - fake (): this { + public fake (): this { Object.keys(this._fields) .forEach((name) => this._fields[name].fake()); @@ -345,7 +360,7 @@ export abstract class Model { * Sets all fileds to `null`. */ - clear (): this { + public clear (): this { Object.keys(this._fields) .forEach((name) => this._fields[name].clear()); @@ -356,7 +371,7 @@ export abstract class Model { * Resets information about changed fields by setting initial value of each field. */ - commit (): this { + public commit (): this { Object.keys(this._fields) .forEach((name) => this._fields[name].commit()); @@ -367,7 +382,7 @@ export abstract class Model { * Sets each field to its initial value (value before last commit). */ - rollback (): this { + public rollback (): this { Object.keys(this._fields) .forEach((name) => this._fields[name].rollback()); @@ -379,10 +394,10 @@ export abstract class Model { * same field values as the original model. */ - equals (value: any): boolean { + public equals (value: any): boolean { return isEqual( - serialize(this), - serialize(value) + normalize(this), + normalize(value) ); } @@ -390,7 +405,7 @@ export abstract class Model { * Returns `true` if at least one field has been changed. */ - isChanged (): boolean { + public isChanged (): boolean { return Object.keys(this._fields) .some((name) => this._fields[name].isChanged()); } @@ -399,7 +414,7 @@ export abstract class Model { * Returns `true` if nested fields exist. */ - isNested (): boolean { + public isNested (): boolean { return Object.keys(this._fields) .some((name) => this._fields[name].isNested()); } @@ -408,7 +423,7 @@ export abstract class Model { * Validates fields and throws an error. */ - async validate ({ + public async validate ({ quiet = false }: { quiet?: boolean @@ -430,7 +445,7 @@ export abstract class Model { * Handles the error and throws an error if the error can not be handled. */ - async handle (error: any, { + public async handle (error: any, { quiet = true }: { quiet?: boolean @@ -457,7 +472,7 @@ export abstract class Model { * Returns a list of all fields with errors. */ - collectErrors (): FieldErrorRef[] { + public collectErrors (): FieldErrorRef[] { return this.flatten() .map(({path, field}) => ({path, errors: field.errors} as FieldErrorRef)) .filter(({path, errors}) => errors.length > 0); @@ -467,7 +482,7 @@ export abstract class Model { * Sets fields errors. */ - applyErrors (errors: FieldErrorRef[] = []): this { + public applyErrors (errors: FieldErrorRef[] = []): this { errors.forEach((error) => { let field = this.getField(...error.path); if (field) { @@ -482,7 +497,7 @@ export abstract class Model { * Returns `true` when errors exist (inverse of `isValid`). */ - hasErrors (): boolean { + public hasErrors (): boolean { return Object.keys(this._fields) .some((name) => this._fields[name].hasErrors()); } @@ -491,7 +506,7 @@ export abstract class Model { * Returns `true` when no errors exist (inverse of `hasErrors`). */ - isValid (): boolean { + public isValid (): boolean { return !this.hasErrors(); } @@ -499,7 +514,7 @@ export abstract class Model { * Removes fields errors. */ - invalidate (): this { + public invalidate (): this { Object.keys(this._fields) .forEach((name) => this._fields[name].invalidate()); @@ -510,7 +525,7 @@ export abstract class Model { * Returns a new Model instance which is the exact copy of the original. */ - clone (data = {}): this { + public clone (data = {}): this { return this._createModel( merge({}, this.serialize(), {parent: this.parent}, data) ); diff --git a/src/utils.ts b/src/utils.ts index a82a2bd..acdece1 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -14,13 +14,14 @@ export {merge}; export {isEqual}; /* -* Returns a duplicated data object (useful to remove data bindings). +* Converts the provided data to primitive data type. */ -export function serialize (data: any) { +export function normalize (data: any) { if (typeof data === 'undefined') { - return data; + return undefined; } else { return JSON.parse(JSON.stringify(data)); } } + diff --git a/tests/models.ts b/tests/models.ts index e1b49d1..6ea4d78 100644 --- a/tests/models.ts +++ b/tests/models.ts @@ -1,4 +1,5 @@ import test from 'ava'; +import {ObjectId} from 'mongodb'; import {Model, Field} from '../src'; test('method `defineField` initializes nullified enumerable property', (t) => { @@ -213,7 +214,7 @@ test('method `serialize` converts model into a serialized data object', (t) => { class User extends Model { constructor (data) { super(data); - this.defineField('id', {serializable: []}); // never + this.defineField('id', {type: (v) => new Object(v), serializable: []}); // never this.defineField('name', {type: 'String', serializable: null}); this.defineField('description', {serializable: ['input', 'output']}); // only for these strategies this.defineField('book', {type: Book, serializable: ['output']}); @@ -222,7 +223,7 @@ test('method `serialize` converts model into a serialized data object', (t) => { } } let user = new User({ - id: 'id', + id: new Object('59efbadde01a49055b39711f'), name: 'foo', description: 'des', book: { @@ -235,9 +236,8 @@ test('method `serialize` converts model into a serialized data object', (t) => { } ] }); - t.deepEqual(user.serialize(), { - id: 'id', + id: new Object('59efbadde01a49055b39711f'), name: 'foo', description: 'des', book: { From 50a2c6170f1461cced72b0b8cf192120faaf0630 Mon Sep 17 00:00:00 2001 From: xpeper Date: Wed, 25 Oct 2017 00:20:24 +0200 Subject: [PATCH 191/219] version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index db042ea..6de3ccb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.24.0", + "version": "1.24.1", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", From bd081a1f5d8c818b09e1c74e7093d6fb6b662424 Mon Sep 17 00:00:00 2001 From: xpeper Date: Thu, 26 Oct 2017 22:58:00 +0200 Subject: [PATCH 192/219] updating mongo uniquenes handler --- package-lock.json | 8 ++++---- package.json | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index f55abde..bacc4c0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.24.0", + "version": "1.25.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -2465,9 +2465,9 @@ "dev": true }, "handleable": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/handleable/-/handleable-0.23.0.tgz", - "integrity": "sha512-T+qRZGh2Qz5eu2VfXuGuqW04kmwM4Hjikmq50ai2swxv/Ai0GLreDO7PdbLtx3QdiT0pUrUUNnZU4k9YB4ai6w==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/handleable/-/handleable-0.24.0.tgz", + "integrity": "sha512-tft3G0oIDKnRAzPgBuCOmzl/Lszrbo+R39MZProMrkaRs3uFBemHyfUjXuv2TP9ECEgx+Z0AYl+b7IXhiYuwXw==", "requires": { "lodash.merge": "4.6.0" } diff --git a/package.json b/package.json index 6de3ccb..1d51c29 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.24.1", + "version": "1.25.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -80,7 +80,7 @@ "@types/lodash.isequal": "^4.5.2", "@types/lodash.merge": "^4.6.3", "@types/node": "^8.0.44", - "handleable": "^0.23.0", + "handleable": "^0.24.0", "lodash.isequal": "^4.5.0", "lodash.merge": "^4.6.0", "typeable": "^2.3.1", From b525f7fe3b6f9de022f526e2d74e18a04830ec11 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 29 Oct 2017 13:41:38 +0100 Subject: [PATCH 193/219] population strategies, model type uses populate --- README.md | 216 ++++++++++++++++++++++----------------- dist/src/fields.d.ts | 4 +- dist/src/fields.js | 34 +++--- dist/src/fields.js.map | 2 +- dist/src/models.d.ts | 2 +- dist/src/models.js | 27 ++++- dist/src/models.js.map | 2 +- dist/tests/fields.js | 1 + dist/tests/fields.js.map | 2 +- dist/tests/models.js | 61 ++++++++--- dist/tests/models.js.map | 2 +- src/fields.ts | 52 +++++----- src/models.ts | 33 +++++- tests/fields.ts | 1 + tests/models.ts | 67 +++++++++--- 15 files changed, 330 insertions(+), 176 deletions(-) diff --git a/README.md b/README.md index cb0c06a..9ae07b5 100644 --- a/README.md +++ b/README.md @@ -48,13 +48,13 @@ This package uses promises thus you need to use [Promise polyfill](https://githu The code below shows a basic usage example. ```js -import {Model} from 'rawmodel'; +import { Model } from 'rawmodel'; // defining a basic model class User extends Model { public name: string; - public constructor (data = {}) { + public constructor(data = {}) { super(data); this.defineField('name'); this.populate(data); @@ -78,16 +78,16 @@ Below we explain some of the most important features that this package provides. ### Defining Fields -Model fields are defined using the `defineField` method. The code below is an example of a basic model class with a property `name` of type `Any`. +Model fields are defined using the `defineField` method. The code below is an example of a basic model class with a `name` field of type `Any`. ```js -import {Model} from 'rawmodel'; +import { Model } from 'rawmodel'; class User extends Model { public name: string; // typescript property definition for field `name` - public constructor (data = {}) { - super(data); + public constructor() { + super(); this.defineField('name'); // definition of the `name` field } } @@ -103,123 +103,129 @@ Each field has a built-in system for type casting thus we can force a value to b ```js this.defineField('name', { - type: 'String' // automatically cast values to `String` + type: 'String', // automatically cast values to `String` }); ``` -Please see the API section for a list of all supported types. +Common types are supported by default. A `Model` also represents a type. You can define your own types using the `defineType` method. Please see the API section for a list of all supported types and further details. ### Nested Models -Each model also represents a type. This way you can create complex nested structures by nesting models as shown in the example below. - -> Make sure that you preserve the constructor's initial parameter structure on nested models. +As mentioned above, a model also represents a type object. This way you can create complex nested structures by nesting models as shown in the example below. ```js -import {Model, ModelRecipe} from 'rawmodel'; +import { Model } from 'rawmodel'; class Book extends Model { public title: string; - public constructor (data = {}) { - super(data); + public constructor() { + super(); this.defineField('title'); - this.populate(data); } } class User extends Model { public book: Book; - public constructor (data = {}) { - super(data); - this.defineField('book', {type: Book}); - this.populate(data); + public constructor() { + super(); + this.defineField('book', { + type: Book, + }); } } ``` ### Field Default Value -We can set a `defaultValue` options for each field which will populate a field when it is created. +We can set a `defaultValue` for each field which will automatically populate a field on creation. -The `defaultValue` can also be a method which returns a value. Note that this function shares the context of a field instance thus you have access to all the features of the `Field` class. +The `defaultValue` can also be a method which returns a dynamic value. Note that this function shares the context of a field instance, thus you have access to all the features of the `Field` class. ```js this.defineField('name', { - defaultValue () { return this.value } + defaultValue () { return this.value }, }); ``` ### Field Fake Value -We can set a `fakeValue` options for each field which will populate a field when calling the `fake()` method. +Similar to default values, we can set a `fakeValue` for each field, to populate a field with fake data when calling the `fake()` method. -The `fakeValue` can also be a method which returns a value. Note that this function shares the context of a field instance thus you have access to all the features of the `Field` class. +The `fakeValue` can also be a method which returns a dynamic value. Note that this function shares the context of a field instance, thus you have access to all the features of the `Field` class. ```js this.defineField('name', { - fakeValue () { return this.value } + fakeValue () { return this.value }, }); ``` ### Field Value Transformation -A field can have a custom getter and a custom setter. +A field can have a custom `getter` and a custom `setter`. -These methods all share the context of a field instance thus you have access to all the features of the `Field` class. +These methods all share the context of a field instance, thus you have access to all the features of the `Field` class. ```js this.defineField('name', { get (value) { return value }, - set (value) { return value } + set (value) { return value }, }); ``` -### Commits & Rollbacks +### Value Assignments -RawModel tracks changes for all fields and provides a mechanism for committing values and rollbacks. +Model fields are like properties of a Javascript Object. We can easily assign a value to a field through its setter method (e.g. `model.name = 'value';`). Instead of assigning fields one by one, we can use the `populate()` method as shown below. -The example below explains how to setup and use these features. +```js +this.populate({ + 'name': 'John Smith', + 'age': 35, +}); +``` + +We can allow only selected fields to be populated by using population strategies (e.g. when populating received form data). ```js class User extends Model { + public id: string; public name: string; public constructor (data = {}) { super(data); - this.defineField('name'); - this.populate(data); // populate model with initial values - this.commit(); // restart change tracking + this.defineField('id', { + populatable: ['internal'], // list population strategy names + }); + this.defineField('name', { + populatable: ['input', 'internal'], // list population strategy names + }); } } -let user = new User({ - name: 'John Smith' // initial value -}); -user.name = 'Mandy Taylor'; // changing field's value -user.isChanged(); // -> true -user.commit(); // set `initialValue` of each field to the value of `value` -user.isChanged(); // -> false -user.name = 'Tina Fey'; // changing field's value -user.rollback(); // -> reset `value` of each field to its `initialValue` (last committed value) +let data = { + id: 100, + name: 'John Smith' +}; +let user = new User(); +user.populate(data); // -> { "id": 100, "name": "John Smith" } +user.populate(data, 'internal'); // -> { "id": 100, "name": "John Smith" } +user.serialize(data, 'input'); // -> { id: null, "name": "John Smith" } ``` -Note that the logic above applies also the the `Field` class. - ### Serialization & Filtering Model provides useful methods for object serialization and filtering (check the API for more methods). ```js let user = new User({ - name: 'John Smith' // initial value + name: 'John Smith', // initial value }); user.scroll(function (field) { // argument is an instance of a field // do something useful }).then((count) => { // number of processed fields - user.serialize(); // -> {"name": "John Smith"} + user.serialize(); // -> { "name": "John Smith" } }); ``` @@ -246,9 +252,34 @@ let user = new User({ 'id': 100, 'name': 'John Smith', }); -user.serialize(); // -> {"id": 100, "name": "John Smith"} -user.serialize('input'); // -> {"name": "John Smith"} -user.serialize('output'); // -> {"id": 100, "name": "John Smith"} +user.serialize(); // -> { "id": 100, "name": "John Smith" } +user.serialize('input'); // -> { "name": "John Smith" } +user.serialize('output'); // -> { "id": 100, "name": "John Smith" } +``` + +### Commits & Rollbacks + +RawModel tracks changes for all fields and provides a mechanism for committing values and rollbacks. + +The example below explains how to setup and use these features. + +```js +class User extends Model { + public name: string; + + public constructor () { + super(); + this.defineField('name'); + } +} + +let user = new User(); +user.name = 'Mandy Taylor'; // changing field's value +user.isChanged(); // -> true +user.commit(); // set `initialValue` of each field to the value of `value` +user.isChanged(); // -> false +user.name = 'Tina Fey'; // changing field's value +user.rollback(); // -> reset `value` of each field to its `initialValue` (last committed value) ``` ### Validation @@ -270,8 +301,8 @@ class User extends Model { code: 422, // [optional] error code condition () { return true }, // [optional] condition which switches the validation on/off it: 'it' // [optional] custom variable for the `message` - } - ] + }, + ], }); } } @@ -299,9 +330,9 @@ class User extends Model { validate: [ { validator: 'coolness', - message: 'must be cool' - } - ] + message: 'must be cool', + }, + ], }); } } @@ -326,9 +357,9 @@ class User extends Model { code: 422, // [optional] error code block (error) { return true }, // [optional] handler-specific function condition () { return true }, // [optional] condition which switches the handling on/off - is: 'is' // [optional] custom variable for the `message` - } - ] + is: 'is', // [optional] custom variable for the `message` + }, + ], }); } } @@ -336,7 +367,7 @@ class User extends Model { let error = new Error(); let user = new User(); user.handle(error).then(() => { - user.collectErrors(); // -> [{path: ['name'], errors: [{handler: 'block', message: 'is unknown', code: 422}]}] + user.collectErrors(); // -> [{ path: ['name'], errors: [{ handler: 'block', message: 'is unknown', code: 422 }] }] }); ``` @@ -348,8 +379,8 @@ RawModel already includes some useful built-in handlers but it's super simple to class User extends Model { public name: string; - public constructor (data = {}) { - super(data); + public constructor () { + super(); this.defineHandler('coolness', function (e) { return e.message === 'cool'; @@ -359,9 +390,9 @@ class User extends Model { handle: [ // field error handling setup { // handler recipe handler: 'coolness', // handler name - message: 'cool' // error message - } - ] + message: 'cool', // error message + }, + ], }); } } @@ -372,11 +403,11 @@ class User extends Model { RawModel.js can be a perfect framework for writing GraphQL resolvers. An instance of a root model, in our case the `App` class, can represent GraphQL's `rootValue`. ```js -import {Model, ModelRecipe} from 'rawmodel'; -import {graphql, buildSchema} from 'graphql'; +import { Model } from 'rawmodel'; +import { graphql, buildSchema } from 'graphql'; class App extends Model { // root resolver - public hello () { // `hello` field resolver + public hello() { // `hello` field resolver return 'Hello World!'; } } @@ -387,9 +418,9 @@ const schema = buildSchema(` } `); -var root = new App(); // root resolver +const root = new App(); // root resolver -graphql(schema, '{hello}', root).then((response) => { +graphql(schema, '{ hello }', root).then((response) => { console.log(response); }); ``` @@ -398,24 +429,20 @@ graphql(schema, '{hello}', root).then((response) => { ### Model Class -**Model({parent, ...data})** +**Model()** > Abstract class which represents a strongly-typed JavaScript object. -| Option | Type | Required | Default | Description -|--------|------|----------|---------|------------ -| parent | Model | No | - | Parent model instance. -| data | Object | No | - | Data for populating model fields. - ```js class User extends Model { public name: string; - public constructor (data = {}) { - super(data); // initializing the Model + public constructor () { + super(); // initializing the Model this.defineField('name', { type: 'String', // [optional] field type casting + populatable: ['input', 'internal'], // [optional] population strategies serializable: ['input', 'output'], // [optional] serialization strategies enumerable: true, // [optional] when set to `false` the field is not enumerable (ignored by `Object.keys()`) get (v) { return v }, // [optional] custom getter @@ -442,9 +469,6 @@ class User extends Model { defaultValue: 'Noname', // [optional] field default value (value or function) fakeValue: 'Noname', // [optional] field fake value (value or function) }); - - this.populate(data); - this.commit(); } } ``` @@ -462,9 +486,9 @@ model.applyErrors([ validator: 'presence', // or handler: '' message: 'is required', code: 422, - } - ] - } + }, + ], + }, ]); ``` @@ -489,21 +513,22 @@ model.applyErrors([ > Returns a list of errors for all the fields ({path, errors}[]). ```js -model.collectErrors(); // => {path: ['name'], errors: [{validator: 'absence', message: 'must be blank', code: 422}]} +model.collectErrors(); // => { path: ['name'], errors: [{ validator: 'absence', message: 'must be blank', code: 422 }] } ``` **Model.prototype.commit()**: Model > Sets initial value of each model field to the current value of a field. This is how field change tracking is restarted. -**Model.prototype.defineField(name, {type, serializable, enumerable, get, set, defaultValue, fakeValue, validate})**: Void +**Model.prototype.defineField(name, { type, populatable, serializable, enumerable, get, set, defaultValue, fakeValue, validate })**: Void > Defines a new model property. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ | name | String | Yes | - | Property name. -| serializable | String[] | No | undefined | Serialization strategies (returned by `.serialize()`). +| populatable | String[] | No | undefined | Population strategies (used by `.populate()`). +| serializable | String[] | No | undefined | Serialization strategies (used by `.serialize()`). | enumerable | Boolean | No | true | When set to `false` the field is not enumerable (ignored by `Object.keys()`). | type | String, Model | No | - | Data type (pass a Model to create a nested structure; check [typeable.js](https://github.com/xpepermint/validatablejs) for more). | get | Function | No | - | Custom getter. @@ -570,7 +595,7 @@ user.flatten(); // -> [{path: [...], field: ...}, ...] |--------|------|----------|---------|------------ | keys | Array | Yes | - | Path to a field (e.g. `['book', 0, 'title']`). -**Model.prototype.handle(error, {quiet}): Promise(Model)** +**Model.prototype.handle(error, { quiet }): Promise(Model)** > Tries to handle the `error` against each field handlers and populates model with possible errors. @@ -624,13 +649,14 @@ catch (e) { > Parent model instance. -**Model.prototype.populate(data)**: Model +**Model.prototype.populate(data, strategy)**: Model > Applies data to a model. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ | data | Object | Yes | - | Data object. +| strategy | String | No | - | When the strategy name is provided, only the fields where the `populatable` option includes this strategy name are populated. If the parameter is not provided then all fields are included in the process. **Model.prototype.reset()**: Model @@ -660,7 +686,7 @@ catch (e) { |--------|------|----------|---------|------------ | strategy | String | No | - | When the strategy name is provided, the output will include only the fields where the `serializable` option includes this strategy name. If the parameter is not provided then all fields are included in the result. -**Model.prototype.validate({quiet})**: Promise(Model) +**Model.prototype.validate({ quiet })**: Promise(Model) > Validates model fields, populates model with possible errors and throws a validation error if not all fields are valid unless the `quiet` is set to `true`. @@ -679,7 +705,7 @@ catch (e) { ### Field Class -**Field({type, get, set, defaultValue, fakeValue, validate, validators, handle, handlers, owner, failFast})** +**Field({ type, get, set, defaultValue, fakeValue, validate, validators, handle, handlers, owner, failFast })** > A model field. @@ -697,6 +723,10 @@ catch (e) { | owner | Model | No | - | An instance of a Model which owns the field. | failFast | Boolean | No | false | Stops validation on the first error when set to `true`. +**Field.prototype.cast(value)**: Any + +> Returns transformed value based on field's type. + **Field.prototype.clear()**: Field > Sets field and related sub fields to `null`. @@ -859,7 +889,7 @@ catch (e) { let recipe = { validator: 'block', message: 'must be present', - async block (value, recipe) { return true } + async block (value, recipe) { return true }, }; ``` @@ -988,7 +1018,7 @@ let recipe = { let recipe = { handler: 'block', message: 'is unknown error', - async block (error, recipe) { return true } + async block (error, recipe) { return true }, }; ``` @@ -1004,7 +1034,7 @@ let recipe = { let recipe = { handler: 'mongoUniqueness', message: 'is unknown error', - indexName: 'uniqueEmail' // make sure that this index name exists in your MongoDB collection + indexName: 'uniqueEmail', // make sure that this index name exists in your MongoDB collection }; ``` diff --git a/dist/src/fields.d.ts b/dist/src/fields.d.ts index ec48aed..e784fb2 100644 --- a/dist/src/fields.d.ts +++ b/dist/src/fields.d.ts @@ -17,6 +17,7 @@ export interface FieldRecipe { }; owner?: Model; failFast?: boolean; + populatable?: string[]; serializable?: string[]; enumerable?: boolean; } @@ -34,6 +35,7 @@ export declare class Field { readonly defaultValue: any; readonly fakeValue: any; readonly initialValue: any; + readonly populatable: string[]; readonly serializable: string[]; readonly enumerable: boolean; readonly owner: Model; @@ -45,9 +47,9 @@ export declare class Field { protected _createHandler(): Handler; protected _getValue(): any; protected _setValue(data: any): void; - protected _cast(data: any, type: any): any; protected _getDefaultValue(): any; protected _getFakeValue(): any; + cast(data: any): any; reset(): this; fake(): this; clear(): this; diff --git a/dist/src/fields.js b/dist/src/fields.js index 4cb48c6..01ada23 100644 --- a/dist/src/fields.js +++ b/dist/src/fields.js @@ -47,6 +47,10 @@ var Field = (function () { recipe = {}; } this.errors = []; + Object.defineProperty(this, 'populatable', { + get: function () { return !typeable_1.isArray(_this._recipe.populatable) ? [] : _this._recipe.populatable; }, + enumerable: true + }); Object.defineProperty(this, 'serializable', { get: function () { return !typeable_1.isArray(_this._recipe.serializable) ? [] : _this._recipe.serializable; }, enumerable: true @@ -124,22 +128,9 @@ var Field = (function () { if (typeable_1.isFunction(set)) { data = set.call(this, data); } - data = this._cast(data, this.type); + data = this.cast(data); this._data = data; }; - Field.prototype._cast = function (data, type) { - var _this = this; - var converter = type; - if (!typeable_1.isValue(data)) { - return null; - } - if (this.isNested()) { - var Klass_1 = typeable_1.isArray(type) ? type[0] : type; - var toModel = function (d) { return new Klass_1(utils_1.merge({}, d, { parent: _this.owner })); }; - converter = typeable_1.isArray(type) ? [toModel] : toModel; - } - return typeable_1.cast(data, converter); - }; Field.prototype._getDefaultValue = function () { var data = null; var defaultValue = this._recipe.defaultValue; @@ -149,7 +140,7 @@ var Field = (function () { else if (!typeable_1.isUndefined(defaultValue)) { data = defaultValue; } - data = this._cast(data, this.type); + data = this.cast(data); return data; }; Field.prototype._getFakeValue = function () { @@ -163,6 +154,19 @@ var Field = (function () { } return data; }; + Field.prototype.cast = function (data) { + var _this = this; + var converter = this.type; + if (!typeable_1.isValue(data)) { + return null; + } + if (this.isNested()) { + var Klass_1 = typeable_1.isArray(this.type) ? this.type[0] : this.type; + var toModel = function (d) { return new Klass_1({ parent: _this.owner }).populate(utils_1.merge({}, d)); }; + converter = typeable_1.isArray(this.type) ? [toModel] : toModel; + } + return typeable_1.cast(data, converter); + }; Field.prototype.reset = function () { this.value = this._getDefaultValue(); return this; diff --git a/dist/src/fields.js.map b/dist/src/fields.js.map index 2c198c7..49a071a 100644 --- a/dist/src/fields.js.map +++ b/dist/src/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/models.d.ts b/dist/src/models.d.ts index 4197ee8..9a59a09 100644 --- a/dist/src/models.d.ts +++ b/dist/src/models.d.ts @@ -42,7 +42,7 @@ export declare abstract class Model { defineHandler(name: string, handler: (e?: any, r?: HandlerRecipe) => boolean | Promise): void; getField(...keys: any[]): Field; hasField(...keys: any[]): boolean; - populate(data?: {}): this; + populate(data?: {}, strategy?: string): this; serialize(strategy?: string): { [key: string]: any; }; diff --git a/dist/src/models.js b/dist/src/models.js index 2a0f54c..9e1ddb3 100644 --- a/dist/src/models.js +++ b/dist/src/models.js @@ -154,12 +154,33 @@ var Model = (function () { } return !typeable_1.isUndefined(this.getField.apply(this, keys)); }; - Model.prototype.populate = function (data) { + Model.prototype.populate = function (data, strategy) { var _this = this; if (data === void 0) { data = {}; } + function toValue(value) { + if (value instanceof Model) { + var data_1 = utils_1.normalize(value); + return value.reset().populate(data_1, strategy); + } + else if (typeable_1.isArray(value)) { + return value.map(function (v) { return toValue(v); }); + } + else { + return value; + } + } Object.keys(data || {}) - .filter(function (n) { return !!_this._fields[n]; }) - .forEach(function (name) { return _this[name] = utils_1.normalize(data[name]); }); + .filter(function (n) { return (!!_this._fields[n]); }) + .forEach(function (name) { + var field = _this._fields[name]; + var value = field.cast(data[name]); + if (typeable_1.isString(strategy) + && typeable_1.isArray(field.populatable) + && field.populatable.indexOf(strategy) !== -1 + || !typeable_1.isString(strategy)) { + _this[name] = toValue(value); + } + }); return this; }; Model.prototype.serialize = function (strategy) { diff --git a/dist/src/models.js.map b/dist/src/models.js.map index ba46dfa..86e6cd9 100644 --- a/dist/src/models.js.map +++ b/dist/src/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/fields.js b/dist/tests/fields.js index 15d1a4e..69c70c0 100644 --- a/dist/tests/fields.js +++ b/dist/tests/fields.js @@ -217,6 +217,7 @@ ava_1["default"]('has enumeratable properties', function (t) { var f = new src_1.Field(); t.deepEqual(Object.keys(f), [ 'errors', + 'populatable', 'serializable', 'enumerable', 'type', diff --git a/dist/tests/fields.js.map b/dist/tests/fields.js.map index 9ad2d6c..66e36d4 100644 --- a/dist/tests/fields.js.map +++ b/dist/tests/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../tests/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../tests/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/models.js b/dist/tests/models.js index 8c3a96e..f7c4665 100644 --- a/dist/tests/models.js +++ b/dist/tests/models.js @@ -82,55 +82,86 @@ ava_1["default"]('method `defineType` defines a custom data type', function (t) t.is(user.name0, 'foo-cool'); t.deepEqual(user.name1, ['foo-cool']); }); -ava_1["default"]('method `populate` deeply populates fields', function (t) { +ava_1["default"]('method `populate` deeply assignes data', function (t) { var Book = (function (_super) { __extends(Book, _super); - function Book(data) { - var _this = _super.call(this, data) || this; + function Book() { + var _this = _super.call(this) || this; + _this.defineField('id', { type: 'Integer', populatable: ['output'] }); _this.defineField('title', { type: 'String' }); - _this.populate(data); + _this.defineField('description', { type: 'String', populatable: ['input'] }); return _this; } return Book; }(src_1.Model)); var User = (function (_super) { __extends(User, _super); - function User(data) { - var _this = _super.call(this, data) || this; + function User() { + var _this = _super.call(this) || this; + _this.defineField('id', { type: 'Integer', populatable: ['output'] }); _this.defineField('name', { type: 'String' }); - _this.defineField('book0', { type: Book }); + _this.defineField('email', { type: 'String', populatable: ['input'] }); + _this.defineField('book0', { type: Book, populatable: ['output'] }); _this.defineField('book1', { type: Book }); - _this.defineField('books', { type: [Book] }); - _this.populate(data); + _this.defineField('books', { type: [Book], populatable: ['input'] }); return _this; } return User; }(src_1.Model)); - var user0 = new User({ + var data = { + id: '100', name: 100, + email: 'foo@bar.com', book0: { - title: 200 + id: '200', + title: 200, + description: 'fake' }, book1: undefined, books: [ undefined, { - title: 300 - } + id: '300', + title: 300, + description: 'fake' + }, ] - }); - var user1 = new User(null); + }; + var user0 = new User(); + var user1 = new User(); + var user2 = new User(); user0.populate(null); user0.populate(false); user0.populate(''); user0.populate(true); user0.populate(100); + user0.populate(data); + user1.populate(data, 'input'); + user2.populate(data, 'output'); + t.is(user0.id, 100); t.is(user0.name, '100'); + t.is(user0.book0.id, 200); t.is(user0.book0.title, '200'); t.is(user0.book1, null); t.is(user0.books[0], null); t.is(user0.books[1].title, '300'); + t.is(user1.id, null); t.is(user1.name, null); + t.is(user1.email, 'foo@bar.com'); + t.is(user1.book0, null); + t.is(user1.book1, null); + t.is(user1.books[0], null); + t.is(user1.books[1].id, null); + t.is(user1.books[1].title, null); + t.is(user1.books[1].description, 'fake'); + t.is(user2.id, 100); + t.is(user2.name, null); + t.is(user2.email, null); + t.is(user2.book0.id, 200); + t.is(user2.book0.title, null); + t.is(user2.book0.description, null); + t.is(user2.book1, null); + t.is(user2.books, null); }); ava_1["default"]('property `parent` holds an instance of a parent model', function (t) { var Book = (function (_super) { diff --git a/dist/tests/models.js.map b/dist/tests/models.js.map index 6a4d161..1f227ef 100644 --- a/dist/tests/models.js.map +++ b/dist/tests/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/fields.ts b/src/fields.ts index 6330ad8..57deb71 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -20,6 +20,7 @@ export interface FieldRecipe { handlers?: {[name: string]: (v?: any, r?: HandlerRecipe) => boolean | Promise}; owner?: Model; failFast?: boolean; + populatable?: string[]; serializable?: string[]; enumerable?: boolean; } @@ -47,6 +48,7 @@ export class Field { readonly defaultValue: any; readonly fakeValue: any; readonly initialValue: any; + readonly populatable: string[]; readonly serializable: string[]; readonly enumerable: boolean; readonly owner: Model; @@ -65,6 +67,10 @@ export class Field { this.errors = []; + Object.defineProperty(this, 'populatable', { + get: () => !isArray(this._recipe.populatable) ? [] : this._recipe.populatable, + enumerable: true + }); Object.defineProperty(this, 'serializable', { get: () => !isArray(this._recipe.serializable) ? [] : this._recipe.serializable, enumerable: true @@ -171,33 +177,11 @@ export class Field { data = set.call(this, data); } - data = this._cast(data, this.type); + data = this.cast(data); this._data = data; } - /* - * Converts a `value` into specified `type`. - */ - - protected _cast (data: any, type: any) { - let converter = type; - - if (!isValue(data)) { - return null; - } - - if (this.isNested()) { - let Klass = isArray(type) ? type[0] : type; - let toModel = (d) => new Klass( - merge({}, d, {parent: this.owner}) - ); - converter = isArray(type) ? [toModel] : toModel; - } - - return cast(data, converter); - } - /* * Returns the default value of a field. */ @@ -213,7 +197,7 @@ export class Field { data = defaultValue; } - data = this._cast(data, this.type); + data = this.cast(data); return data; } @@ -236,6 +220,26 @@ export class Field { return data; } + /* + * Converts a `value` into field's type. + */ + + public cast (data: any) { + let converter = this.type; + + if (!isValue(data)) { + return null; + } + + if (this.isNested()) { + let Klass = isArray(this.type) ? this.type[0] : this.type; + let toModel = (d) => new Klass({parent: this.owner}).populate(merge({}, d)); + converter = isArray(this.type) ? [toModel] : toModel; + } + + return cast(data, converter); + } + /* * Sets data to the default value. */ diff --git a/src/models.ts b/src/models.ts index d713afe..8e75296 100644 --- a/src/models.ts +++ b/src/models.ts @@ -220,13 +220,38 @@ export abstract class Model { } /* - * Deeply applies data to the fields. + * Deeply assignes data to model fields. */ - public populate (data = {}): this { + public populate (data = {}, strategy?: string): this { + + function toValue(value) { + if (value instanceof Model) { + let data = normalize(value); + return value.reset().populate(data, strategy); + } else if (isArray(value)) { + return value.map((v) => toValue(v)); + } else { + return value; + } + } + Object.keys(data || {}) - .filter((n) => !!this._fields[n]) - .forEach((name) => this[name] = normalize(data[name])); + .filter((n) => ( + !!this._fields[n] + )) + .forEach((name) => { + let field = this._fields[name]; + let value = field.cast(data[name]); + if ( + isString(strategy) + && isArray(field.populatable) + && field.populatable.indexOf(strategy) !== -1 + || !isString(strategy) + ) { + this[name] = toValue(value); + } + }); return this; } diff --git a/tests/fields.ts b/tests/fields.ts index f1e5d65..2e3cd9b 100644 --- a/tests/fields.ts +++ b/tests/fields.ts @@ -173,6 +173,7 @@ test('has enumeratable properties', (t) => { let f = new Field(); t.deepEqual(Object.keys(f), [ 'errors', + 'populatable', 'serializable', 'enumerable', 'type', diff --git a/tests/models.ts b/tests/models.ts index 6ea4d78..3ece8c8 100644 --- a/tests/models.ts +++ b/tests/models.ts @@ -35,54 +35,89 @@ test('method `defineType` defines a custom data type', (t) => { t.deepEqual(user.name1, ['foo-cool']); }); -test('method `populate` deeply populates fields', (t) => { +test('method `populate` deeply assignes data', (t) => { class Book extends Model { + id: number; title: string; - constructor (data) { - super(data); + description: string; + constructor () { + super(); + this.defineField('id', {type: 'Integer', populatable: ['output'] }); this.defineField('title', {type: 'String'}); - this.populate(data); + this.defineField('description', {type: 'String', populatable: ['input'] }); } } class User extends Model { + id: number; name: string; + email: string; book0: Book; book1: Book; books: Book[]; - constructor (data) { - super(data); + constructor () { + super(); + this.defineField('id', {type: 'Integer', populatable: ['output'] }); this.defineField('name', {type: 'String'}); - this.defineField('book0', {type: Book}); + this.defineField('email', {type: 'String', populatable: ['input'] }); + this.defineField('book0', {type: Book, populatable: ['output']}); this.defineField('book1', {type: Book}); - this.defineField('books', {type: [Book]}); - this.populate(data); + this.defineField('books', {type: [Book], populatable: ['input']}); } } - let user0 = new User({ + let data = { + id: '100', name: 100, + email: 'foo@bar.com', book0: { - title: 200 + id: '200', + title: 200, + description: 'fake', }, book1: undefined, books: [ undefined, { - title: 300 - } - ] - }); - let user1 = new User(null); + id: '300', + title: 300, + description: 'fake', + }, + ], + }; + let user0 = new User(); + let user1 = new User(); + let user2 = new User(); user0.populate(null); // should not break user0.populate(false); // should not break user0.populate(''); // should not break user0.populate(true); // should not break user0.populate(100); // should not break + user0.populate(data); + user1.populate(data, 'input'); + user2.populate(data, 'output'); + t.is(user0.id, 100); t.is(user0.name, '100'); + t.is(user0.book0.id, 200); t.is(user0.book0.title, '200'); t.is(user0.book1, null); t.is(user0.books[0], null); t.is(user0.books[1].title, '300'); + t.is(user1.id, null); t.is(user1.name, null); + t.is(user1.email, 'foo@bar.com'); + t.is(user1.book0, null); + t.is(user1.book1, null); + t.is(user1.books[0], null); + t.is(user1.books[1].id, null); + t.is(user1.books[1].title, null); + t.is(user1.books[1].description, 'fake'); + t.is(user2.id, 100); + t.is(user2.name, null); + t.is(user2.email, null); + t.is(user2.book0.id, 200); + t.is(user2.book0.title, null); + t.is(user2.book0.description, null); + t.is(user2.book1, null); + t.is(user2.books, null); }); test('property `parent` holds an instance of a parent model', (t) => { From faa9f2b23fc16556bf71d58d9bc3053def8d8239 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 29 Oct 2017 14:20:32 +0100 Subject: [PATCH 194/219] refactoring, tslint --- dist/src/fields.js.map | 2 +- dist/src/models.js | 3 +- dist/src/models.js.map | 2 +- dist/src/utils.js.map | 2 +- dist/tests/fields.js | 4 +- dist/tests/fields.js.map | 2 +- dist/tests/models.js | 20 +- dist/tests/models.js.map | 2 +- src/fields.ts | 261 +++++++++++------------ src/models.ts | 413 +++++++++++++++++------------------- src/utils.ts | 22 +- tests/fields.ts | 110 +++++----- tests/models.ts | 436 +++++++++++++++++++-------------------- tslint.json | 79 ++----- 14 files changed, 624 insertions(+), 734 deletions(-) diff --git a/dist/src/fields.js.map b/dist/src/fields.js.map index 49a071a..e77e083 100644 --- a/dist/src/fields.js.map +++ b/dist/src/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/models.js b/dist/src/models.js index 9e1ddb3..7765c04 100644 --- a/dist/src/models.js +++ b/dist/src/models.js @@ -378,7 +378,8 @@ var Model = (function () { }; Model.prototype.clone = function (data) { if (data === void 0) { data = {}; } - return this._createModel(utils_1.merge({}, this.serialize(), { parent: this.parent }, data)); + return this._createModel({ parent: this.parent }) + .populate(utils_1.merge({}, this.serialize(), data)); }; return Model; }()); diff --git a/dist/src/models.js.map b/dist/src/models.js.map index 86e6cd9..6659b41 100644 --- a/dist/src/models.js.map +++ b/dist/src/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAA8E;AAG9E,mCAAwD;AACxD,iCAAkD;AAiClD;IAaE,eAAoB,MAAoB;QAAxC,iBAiCC;QAhCC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,GAAG,EAAE,CAAC;QACd,CAAC;QAED,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;YACpC,KAAK,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI;YAC3C,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;YAClC,GAAG,EAAE,cAAM,OAAA,KAAI,CAAC,aAAa,EAAE,EAApB,CAAoB;SAChC,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;YACrC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;YACpC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE;YACzC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE;YACvC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE;YACvC,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;IACL,CAAC;IAMS,6BAAa,GAAvB;QACE,IAAI,IAAI,GAAU,IAAI,CAAC;QACvB,GAAG,CAAC;YACF,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAChB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;YACrB,CAAC;YACD,IAAI,CAAC,CAAC;gBACJ,MAAM,CAAC,IAAI,CAAC;YACd,CAAC;QACH,CAAC,QAAQ,IAAI,EAAE;IACjB,CAAC;IAMS,6BAAa,GAAvB,UAAyB,MAAwB;QAAxB,uBAAA,EAAA,WAAwB;QAC/C,IAAI,IAAI,GAAG,kBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QAC/D,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACjC,MAAM,CAAC,kBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9C,CAAC;IAOS,4BAAY,GAAtB,UAAwB,MAAwB;QAAxB,uBAAA,EAAA,WAAwB;QAC9C,MAAM,CAAC,IAAI,cAAK,CACd,aAAK,CAAC,EAAE,EAAE,MAAM,EAAE;YAChB,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;YAChC,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,QAAQ,EAAE,IAAI,CAAC,SAAS;SACzB,CAAC,CACH,CAAC;IACJ,CAAC;IAMS,sCAAsB,GAAhC,UAAkC,OAA6B,EAAE,IAAU;QAAzC,wBAAA,EAAA,6BAA6B;QAAE,qBAAA,EAAA,UAAU;QACzE,IAAI,KAAK,GAAe,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QAElB,MAAM,CAAC,KAAK,CAAC;IACf,CAAC;IAOS,4BAAY,GAAtB,UAAwB,MAAwB;QAAxB,uBAAA,EAAA,WAAwB;QAC9C,MAAM,CAAC,IAAK,IAAI,CAAC,WAAmB,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAMM,wBAAQ,GAAf,UAAiB,IAAoB;QAApB,qBAAA,EAAA,WAAoB;QACnC,IAAI,CAAC,SAAS,GAAG,oBAAS,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAMM,2BAAW,GAAlB,UAAoB,IAAY,EAAE,MAAwB;QAAxB,uBAAA,EAAA,WAAwB;QACxD,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAEtC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE;YAChC,GAAG,EAAE,cAAM,OAAA,KAAK,CAAC,KAAK,EAAX,CAAW;YACtB,GAAG,EAAE,UAAC,CAAC,IAAK,OAAA,KAAK,CAAC,KAAK,GAAG,CAAC,EAAf,CAAe;YAC3B,UAAU,EAAE,MAAM,CAAC,UAAU,KAAK,KAAK;YACvC,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IAC7B,CAAC;IAMM,0BAAU,GAAjB,UAAmB,IAAY,EAAE,SAA2B;QAC1D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IAChC,CAAC;IAMM,+BAAe,GAAtB,UAAwB,IAAY,EAAE,OAAqE;QACzG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACnC,CAAC;IAMM,6BAAa,GAApB,UAAsB,IAAY,EAAE,OAAmE;QACrG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACjC,CAAC;IAMM,wBAAQ,GAAf;QAAiB,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAC7B,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAEpD,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAZ,CAAY,EAAE,IAAI,CAAC,CAAC;QACtD,MAAM,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACtE,CAAC;IAMM,wBAAQ,GAAf;QAAiB,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAC7B,MAAM,CAAC,CAAC,sBAAW,CAAC,IAAI,CAAC,QAAQ,OAAb,IAAI,EAAa,IAAI,EAAE,CAAC;IAC9C,CAAC;IAMM,wBAAQ,GAAf,UAAiB,IAAS,EAAE,QAAiB;QAA7C,iBA+BC;QA/BgB,qBAAA,EAAA,SAAS;QAExB,iBAAiB,KAAK;YACpB,EAAE,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC;gBAC3B,IAAI,MAAI,GAAG,iBAAS,CAAC,KAAK,CAAC,CAAC;gBAC5B,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,MAAI,EAAE,QAAQ,CAAC,CAAC;YAChD,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAC,kBAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,OAAO,CAAC,CAAC,CAAC,EAAV,CAAU,CAAC,CAAC;YACtC,CAAC;YAAC,IAAI,CAAC,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CACb,CAAC,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAClB,EAFc,CAEd,CAAC;aACD,OAAO,CAAC,UAAC,IAAI;YACZ,IAAI,KAAK,GAAG,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACnC,EAAE,CAAC,CACD,mBAAQ,CAAC,QAAQ,CAAC;mBACf,kBAAO,CAAC,KAAK,CAAC,WAAW,CAAC;mBAC1B,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;mBAC1C,CAAC,mBAAQ,CAAC,QAAQ,CACvB,CAAC,CAAC,CAAC;gBACD,KAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEL,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,yBAAS,GAAhB,UAAkB,QAAiB;QAAnC,iBA0BC;QAzBC,IAAM,IAAI,GAAG,EAAE,CAAC;QAEhB,kBAAkB,KAAK;YACrB,EAAE,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC;gBAC3B,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACnC,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAC,kBAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,QAAQ,CAAC,CAAC,CAAC,EAAX,CAAW,CAAC,CAAC;YACvC,CAAC;YAAC,IAAI,CAAC,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAC,IAAI;YACrC,IAAI,KAAK,GAAG,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/B,EAAE,CAAC,CACD,mBAAQ,CAAC,QAAQ,CAAC;mBACf,kBAAO,CAAC,KAAK,CAAC,YAAY,CAAC;mBAC3B,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;mBAC3C,CAAC,mBAAQ,CAAC,QAAQ,CACvB,CAAC,CAAC,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,uBAAO,GAAd,UAAgB,MAAqB;QAArC,iBA6BC;QA7Be,uBAAA,EAAA,WAAqB;QACnC,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAC,IAAI;YACrC,IAAI,KAAK,GAAG,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YACtB,IAAI,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAExB,MAAM,CAAC,IAAI,CAAC,EAAC,IAAI,MAAA,EAAE,KAAK,OAAA,EAAC,CAAC,CAAC;YAE3B,EAAE,CAAC,CAAC,oBAAS,CAAC,KAAK,CAAC,IAAI,oBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACxC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC;oBACpC,MAAM,GAAG,MAAM,CAAC,MAAM,CACpB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CACpB,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC,CAAC,kBAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC;oBAC7D,MAAM,GAAG,MAAM,CAAC,MAAM,CACpB,KAAK;yBACF,GAAG,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAA9D,CAA8D,CAAC;yBAC7E,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,kBAAO,CAAC,CAAC,CAAC,EAAV,CAAU,CAAC;yBACzB,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAX,CAAW,EAAE,EAAE,CAAC,CACrC,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC;IAChB,CAAC;IAMM,uBAAO,GAAd,UAAgB,OAAiC;QAC/C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAMM,sBAAM,GAAb,UAAe,OAAkC;QAC/C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAC5C,CAAC;IAOM,sBAAM,GAAb,UAAe,IAAkC;QAC/C,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAE5B,IAAI,CAAC,OAAO,EAAE;aACX,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAA7B,CAA6B,CAAC;aAC7C,MAAM,CAAC,UAAC,KAAK,IAAK,OAAA,CAAC,IAAI,CAAC,KAAK,CAAC,EAAZ,CAAY,CAAC;aAC/B,OAAO,CAAC,UAAC,KAAK;YACb,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,EAAJ,CAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEL,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,qBAAK,GAAZ;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAA1B,CAA0B,CAAC,CAAC;QAEjD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,oBAAI,GAAX;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAzB,CAAyB,CAAC,CAAC;QAEhD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,qBAAK,GAAZ;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAA1B,CAA0B,CAAC,CAAC;QAEjD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,sBAAM,GAAb;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAA3B,CAA2B,CAAC,CAAC;QAElD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,wBAAQ,GAAf;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAA7B,CAA6B,CAAC,CAAC;QAEpD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAOM,sBAAM,GAAb,UAAe,KAAU;QACvB,MAAM,CAAC,eAAO,CACZ,iBAAS,CAAC,IAAI,CAAC,EACf,iBAAS,CAAC,KAAK,CAAC,CACjB,CAAC;IACJ,CAAC;IAMM,yBAAS,GAAhB;QAAA,iBAGC;QAFC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7B,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAA9B,CAA8B,CAAC,CAAC;IACpD,CAAC;IAMM,wBAAQ,GAAf;QAAA,iBAGC;QAFC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7B,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAA7B,CAA6B,CAAC,CAAC;IACnD,CAAC;IAMY,wBAAQ,GAArB,UAAuB,EAIjB;YAHJ,oCAAa,EAAb,kCAAa;;;;;;wBAIT,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;wBAE1B,WAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;iCAChB,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAApB,CAAoB,CAAC,CACpC,EAAA;;wBAHD,SAGC,CAAC;wBAEF,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;4BAC/B,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;wBACtC,CAAC;wBACD,WAAO,IAAI,EAAC;;;;KACb;IAMY,sBAAM,GAAnB,UAAqB,KAAU,EAAE,EAI3B;YAHJ,oCAAY,EAAZ,iCAAY;;;;;;wBAIZ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;4BAAC,MAAM,KAAC,IAAI,EAAC;wBACxB,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;4BAAC,MAAM,KAAC,IAAI,EAAC;wBAEhC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;wBAC1B,WAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;iCAChB,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC,CACvC,EAAA;;wBAHD,SAGC,CAAC;wBAEF,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;4BAC/B,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;wBACtC,CAAC;wBACD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;4BAC3B,MAAM,KAAK,CAAC;wBACd,CAAC;wBACD,WAAO,IAAI,EAAC;;;;KACb;IAMM,6BAAa,GAApB;QACE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;aAClB,GAAG,CAAC,UAAC,EAAa;gBAAZ,cAAI,EAAE,gBAAK;YAAM,OAAA,CAAC,EAAC,IAAI,MAAA,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAmB,CAAA;QAA/C,CAA+C,CAAC;aACvE,MAAM,CAAC,UAAC,EAAc;gBAAb,cAAI,EAAE,kBAAM;YAAM,OAAA,MAAM,CAAC,MAAM,GAAG,CAAC;QAAjB,CAAiB,CAAC,CAAC;IACnD,CAAC;IAMM,2BAAW,GAAlB,UAAoB,MAA4B;QAAhD,iBASC;QATmB,uBAAA,EAAA,WAA4B;QAC9C,MAAM,CAAC,OAAO,CAAC,UAAC,KAAK;YACnB,IAAI,KAAK,GAAG,KAAI,CAAC,QAAQ,OAAb,KAAI,EAAa,KAAK,CAAC,IAAI,CAAC,CAAC;YACzC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gBACV,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,yBAAS,GAAhB;QAAA,iBAGC;QAFC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC7B,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAA9B,CAA8B,CAAC,CAAC;IACpD,CAAC;IAMM,uBAAO,GAAd;QACE,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC;IAMM,0BAAU,GAAjB;QAAA,iBAKC;QAJC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACtB,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAA/B,CAA+B,CAAC,CAAC;QAEtD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAMM,qBAAK,GAAZ,UAAc,IAAS;QAAT,qBAAA,EAAA,SAAS;QACrB,MAAM,CAAC,IAAI,CAAC,YAAY,CACtB,aAAK,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,EAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAC,EAAE,IAAI,CAAC,CACzD,CAAC;IACJ,CAAC;IAEH,YAAC;AAAD,CAAC,AAzgBD,IAygBC;AAzgBqB,sBAAK"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/utils.js.map b/dist/src/utils.js.map index a406f3c..8afbe49 100644 --- a/dist/src/utils.js.map +++ b/dist/src/utils.js.map @@ -1 +1 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;AAAA,oCAAuC;AAO/B,sBAAK;AANb,wCAA2C;AAYnC,0BAAO;AAMf,mBAA2B,IAAS;IAClC,EAAE,CAAC,CAAC,OAAO,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,SAAS,CAAC;IACnB,CAAC;IAAC,IAAI,CAAC,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAND,8BAMC"} \ No newline at end of file +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;AAAA,oCAAuC;AAM/B,sBAAK;AALb,wCAA2C;AAUnC,0BAAO;AAKf,mBAA2B,IAAS;IAClC,EAAE,CAAC,CAAC,OAAO,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,SAAS,CAAC;IACnB,CAAC;IAAC,IAAI,CAAC,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAND,8BAMC"} \ No newline at end of file diff --git a/dist/tests/fields.js b/dist/tests/fields.js index 69c70c0..3e1b28b 100644 --- a/dist/tests/fields.js +++ b/dist/tests/fields.js @@ -189,7 +189,7 @@ ava_1["default"]('method `validate()` validates the value and populates the `err t.deepEqual(f.errors, [ { validator: 'presence', message: 'foo', code: 422 }, { validator: 'coolness', message: 'is not cool', code: 422 }, - { validator: 'coolness', message: undefined, code: 999 } + { validator: 'coolness', message: undefined, code: 999 }, ]); return [2]; } @@ -237,7 +237,7 @@ ava_1["default"]('method `handle()` handles an error and populates the `errors` handle: [ { handler: 'block', block: function () { return true; }, message: 'foo' }, { handler: 'coolness', message: 'cool' }, - { handler: 'coolness', code: 999 } + { handler: 'coolness', code: 999 }, ], handlers: { coolness: function (error) { return error.message === 'cool'; } diff --git a/dist/tests/fields.js.map b/dist/tests/fields.js.map index 66e36d4..0ddd325 100644 --- a/dist/tests/fields.js.map +++ b/dist/tests/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../tests/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../tests/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/models.js b/dist/tests/models.js index f7c4665..1cbc5b5 100644 --- a/dist/tests/models.js +++ b/dist/tests/models.js @@ -527,7 +527,7 @@ ava_1["default"]('method `filter` converts a model into serialized object with o null, { title: 'bar' - } + }, ] }); }); @@ -562,7 +562,7 @@ ava_1["default"]('method `reset` sets fields to their default values', function books: [ { title: 'fake' - } + }, ] }); user.reset(); @@ -575,7 +575,7 @@ ava_1["default"]('method `reset` sets fields to their default values', function null, { title: 'foo' - } + }, ] }); }); @@ -705,7 +705,7 @@ ava_1["default"]('methods `commit()` and `rollback()` manage committed states', books: [ { title: 'baz-new' - } + }, ] }); user.rollback(); @@ -784,7 +784,7 @@ ava_1["default"]('method `isChanged` returns `true` if at least one field has be null, { title: 'baz' - } + }, ] }; var user0 = new User(data); @@ -860,7 +860,7 @@ ava_1["default"]('method `collectErrors` returns an array of field errors', func t.deepEqual(user.collectErrors(), [ { path: ['name'], errors: [{ message: 'foo' }] }, { path: ['book', 'title'], errors: [{ message: 'bar' }] }, - { path: ['books', 0, 'title'], errors: [{ message: 'baz' }] } + { path: ['books', 0, 'title'], errors: [{ message: 'baz' }] }, ]); }); ava_1["default"]('method `applyErrors` sets fields errors', function (t) { @@ -893,7 +893,7 @@ ava_1["default"]('method `applyErrors` sets fields errors', function (t) { user.applyErrors([ { path: ['name'], errors: [{ message: 'foo' }] }, { path: ['book', 'title'], errors: [{ message: 'bar' }] }, - { path: ['books', 1, 'title'], errors: [{ message: 'baz' }] } + { path: ['books', 1, 'title'], errors: [{ message: 'baz' }] }, ]); t.deepEqual(user.getField('name').errors, [{ message: 'foo' }]); t.deepEqual(user.getField('book', 'title').errors, [{ message: 'bar' }]); @@ -934,7 +934,7 @@ ava_1["default"]('methods `isValid` and `hasErrors` tell if errors exist', funct t.is(user0.isValid(), true); t.is(user1.isValid(), true); user0.applyErrors([ - { path: ['books', 1, 'title'], errors: [{ message: 'baz' }] } + { path: ['books', 1, 'title'], errors: [{ message: 'baz' }] }, ]); t.is(user0.hasErrors(), true); t.is(user0.isValid(), false); @@ -1058,7 +1058,7 @@ ava_1["default"]('method `failFast` configures validator to stop validating fiel case 0: validate = [ { validator: 'presence', message: 'foo' }, - { validator: 'presence', message: 'foo' } + { validator: 'presence', message: 'foo' }, ]; Book = (function (_super) { __extends(Book, _super); @@ -1128,7 +1128,7 @@ ava_1["default"]('method `invalidate` clears fields errors', function (t) { retu user.applyErrors([ { path: ['name'], errors: [{ message: 'foo' }] }, { path: ['book', 'title'], errors: [{ message: 'bar' }] }, - { path: ['books', 1, 'title'], errors: [{ message: 'baz' }] } + { path: ['books', 1, 'title'], errors: [{ message: 'baz' }] }, ]); user.invalidate(); t.deepEqual(user.getField('name').errors, []); diff --git a/dist/tests/models.js.map b/dist/tests/models.js.map index 1f227ef..6cad61d 100644 --- a/dist/tests/models.js.map +++ b/dist/tests/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iBA+kCA;;AA/kCA,2BAAuB;AAEvB,8BAAsC;AAEtC,gBAAI,CAAC,gEAAgE,EAAE,UAAC,CAAC;IACvE,IAAM,IAAI,GAAG;QAAuB,wBAAK;QAEvC;YAAA,YACE,iBAAO,SAER;YADC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;;QAC3B,CAAC;QACH,WAAC;IAAD,CAAC,AANgB,CAAmB,WAAK,EAMxC,CAAC;IACF,IAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC,CAAC,EAAE,CAAC,OAAO,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC,CAAC,EAAE,CAAC,OAAO,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,gDAAgD,EAAE,UAAC,CAAC;IACvD,IAAM,IAAI,GAAG;QAAuB,wBAAK;QAGvC;YAAA,YACE,iBAAO,SAIR;YAHC,KAAI,CAAC,UAAU,CAAC,MAAM,EAAE,UAAC,CAAC,IAAK,OAAG,CAAC,UAAO,EAAX,CAAW,CAAC,CAAC;YAC5C,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YAC5C,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;;QAChD,CAAC;QACH,WAAC;IAAD,CAAC,AATgB,CAAmB,WAAK,EASxC,CAAC;IACF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC7B,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,wCAAwC,EAAE,UAAC,CAAC;IAC/C;QAAmB,wBAAK;QAItB;YAAA,YACE,iBAAO,SAIR;YAHC,KAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACrE,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC7C,KAAI,CAAC,WAAW,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;;QAC9E,CAAC;QACH,WAAC;IAAD,CAAC,AAVD,CAAmB,WAAK,GAUvB;IACD;QAAmB,wBAAK;QAOtB;YAAA,YACE,iBAAO,SAOR;YANC,KAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACrE,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC5C,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACtE,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACnE,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACzC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;;QACtE,CAAC;QACH,WAAC;IAAD,CAAC,AAhBD,CAAmB,WAAK,GAgBvB;IACD,IAAM,IAAI,GAAG;QACX,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,GAAG;QACT,KAAK,EAAE,aAAa;QACpB,KAAK,EAAE;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,MAAM;SACpB;QACD,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE;YACL,SAAS;YACT;gBACE,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,GAAG;gBACV,WAAW,EAAE,MAAM;aACpB;SACF;KACF,CAAC;IACF,IAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;IACzB,IAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;IACzB,IAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;IACzB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtB,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACpB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrB,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9B,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACpB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC1B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACrB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACjC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACpB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC1B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,uDAAuD,EAAE,UAAC,CAAC;IAC9D;QAAmB,wBAAK;QAEtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC9C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;IACD;QAAmB,wBAAK;QAItB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAXD,CAAmB,WAAK,GAWvB;IACD,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC;QACpB,IAAI,EAAE;YACJ,KAAK,EAAE,GAAG;SACX;QACD,KAAK,EAAE;YACL,SAAS;YACT;gBACE,KAAK,EAAE,GAAG;aACX;SACF;KACF,CAAC,CAAC;IACH,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,mEAAmE,EAAE,UAAC,CAAC;IAC1E;QAAmB,wBAAK;QAEtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;IACD;QAAmB,wBAAK;QAEtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;IACD,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC;QACpB,IAAI,EAAE;YACJ,KAAK,EAAE,GAAG;SACX;KACF,CAAC,CAAC;IACH,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,0DAA0D,EAAE,UAAC,CAAC;IACjE;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC9C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC;QACpB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,SAAS;YACT;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;IACH,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACtD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,sDAAsD,EAAE,UAAC,CAAC;IAC7D;QAAmB,wBAAK;QACtB,cAAa,IAAS;YAAT,qBAAA,EAAA,SAAS;YAAtB,YACE,iBAAO,SAGR;YAFC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD,IAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACxB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAChD,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,iEAAiE,EAAE,UAAC,CAAC;IACxE;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAIZ;YAHC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC9C,KAAI,CAAC,WAAW,CAAC,aAAa,EAAE,EAAE,YAAY,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC9D,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAOZ;YANC,KAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,UAAC,CAAC,IAAK,OAAA,IAAI,MAAM,CAAC,CAAC,CAAC,EAAb,CAAa,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;YACzE,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;YACjE,KAAI,CAAC,WAAW,CAAC,aAAa,EAAE,EAAE,YAAY,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;YACvE,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACnE,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAVD,CAAmB,WAAK,GAUvB;IACD,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC;QACpB,EAAE,EAAE,IAAI,MAAM,CAAC,0BAA0B,CAAC;QAC1C,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,KAAK;QAClB,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,SAAS;YACT;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;IACH,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;QAC5B,EAAE,EAAE,IAAI,MAAM,CAAC,0BAA0B,CAAC;QAC1C,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,KAAK;QAClB,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;YACZ,WAAW,EAAE,IAAI;SAClB;QACD,KAAK,EAAE;YACL,IAAI;YACJ;gBACE,KAAK,EAAE,KAAK;gBACZ,WAAW,EAAE,IAAI;aAClB;SACF;KACF,CAAC,CAAC;IACH,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;QACnC,WAAW,EAAE,KAAK;KACnB,CAAC,CAAC;IACH,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;QACpC,WAAW,EAAE,KAAK;QAClB,IAAI,EAAE;YACJ,WAAW,EAAE,IAAI;SAClB;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,6CAA6C,EAAE,UAAO,CAAC;;;QAC1D;YAAmB,wBAAK;YACtB,cAAa,IAAI;gBAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;gBAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC9C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;YACtB,CAAC;YACH,WAAC;QAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;QACD;YAAmB,wBAAK;YACtB,cAAa,IAAI;gBAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;gBAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC7C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBACzC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;YACtB,CAAC;YACH,WAAC;QAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;QACK,IAAI,GAAG,IAAI,IAAI,CAAC;YACpB,IAAI,EAAE,KAAK;YACX,IAAI,EAAE;gBACJ,KAAK,EAAE,KAAK;aACb;YACD,KAAK,EAAE;gBACL,SAAS;gBACT;oBACE,KAAK,EAAE,KAAK;iBACb;aACF;SACF,CAAC,CAAC;QACH,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,EAAN,CAAM,CAAC,EAAE;YAC7C,CAAC,MAAM,CAAC;YACR,CAAC,MAAM,CAAC;YACR,CAAC,MAAM,EAAE,OAAO,CAAC;YACjB,CAAC,OAAO,CAAC;YACT,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;SACtB,CAAC,CAAC;QACH,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;;;KAC5C,CAAC,CAAC;AAEH,gBAAI,CAAC,8CAA8C,EAAE,UAAC,CAAC;IACrD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC9C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAIZ;YAHC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;IACD,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC;QACpB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;KACF,CAAC,CAAC;IACH,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAC,EAAQ;YAAN,cAAI;QAAO,OAAA,IAAI;IAAJ,CAAI,CAAC,CAAC;IACjD,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE;QACnB,CAAC,MAAM,CAAC;QACR,CAAC,MAAM,CAAC;QACR,CAAC,MAAM,EAAE,OAAO,CAAC;KAClB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,yDAAyD,EAAE,UAAC,CAAC;IAChE;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC9C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAIZ;YAHC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;IACD,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC;QACpB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;KACF,CAAC,CAAC;IACH,IAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAC,EAAQ;YAAN,cAAI;QAAO,OAAA,IAAI;IAAJ,CAAI,CAAC,CAAC;IAC9C,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,2FAA2F,EAAE,UAAC,CAAC;IAClG;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC9C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC;QACpB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,SAAS;YACT;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;IACH,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAC,EAAe;YAAb,cAAI,EAAE,gBAAK;QAAO,OAAA,KAAK,CAAC,KAAK,KAAK,KAAK;IAArB,CAAqB,CAAC,CAAC;IACvE,CAAC,CAAC,SAAS,CAAC,MAAa,EAAE;QACzB,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,IAAI;YACJ;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,oDAAoD,EAAE,UAAC,CAAC;IAC3D;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;YACnD,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;YAClD,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;YAC3D,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACtE,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC;QACpB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE;YACJ,KAAK,EAAE,MAAM;SACd;QACD,KAAK,EAAE;YACL;gBACE,KAAK,EAAE,MAAM;aACd;SACF;KACF,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,EAAE,CAAC;IACb,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;QAC5B,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,IAAI;YACJ;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,gDAAgD,EAAE,UAAC,CAAC;IACvD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YAChD,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAS;YAAT,qBAAA,EAAA,SAAS;YAAtB,YACE,iBAAO,SAKR;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YAC/C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;YAC3D,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACtE,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACxB,IAAI,CAAC,IAAI,EAAE,CAAC;IACZ,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;QAC5B,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,IAAI;YACJ;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,sCAAsC,EAAE,UAAC,CAAC;IAC7C;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;YACnD,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;YAClD,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;YAC3D,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACtE,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC;QACpB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE;YACJ,KAAK,EAAE,MAAM;SACd;QACD,KAAK,EAAE;YACL;gBACE,KAAK,EAAE,MAAM;aACd;SACF;KACF,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,EAAE,CAAC;IACb,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;QAC5B,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,6DAA6D,EAAE,UAAC,CAAC;IACpE;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC;QACpB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,EAAE,CAAC;IACd,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC7D,IAAI,CAAC,QAAQ,CAAC;QACZ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,KAAK,EAAE,SAAS;SACjB;QACD,KAAK,EAAE;YACL;gBACE,KAAK,EAAE,SAAS;aACjB;SACF;KACF,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,EAAE,CAAC;IAChB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,uEAAuE,EAAE,UAAC,CAAC;IAC9E;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAM,IAAI,GAAG;QACX,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,IAAI;YACJ;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC;IACF,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACpD,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,0EAA0E,EAAE,UAAC,CAAC;IACjF;QAAmB,wBAAK;QAEtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAIZ;YAHC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;QAChB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD;QAAmB,wBAAK;QAItB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAMZ;YALC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;QAChB,CAAC;QACH,WAAC;IAAD,CAAC,AAZD,CAAmB,WAAK,GAYvB;IACD,IAAM,IAAI,GAAG;QACX,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,IAAI;YACJ;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC;IACF,IAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;IAC/B,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;IACvB,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IAC7B,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAU,CAAC;IAC9C,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC;IACjC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,yDAAyD,EAAE,UAAC,CAAC;IAChE;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAS;YAAT,qBAAA,EAAA,SAAS;YAAtB,YACE,iBAAO,SAIR;YAHC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;IACD,IAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACxB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,yDAAyD,EAAE,UAAC,CAAC;IAChE;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC;QACpB,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,CAAC,EAAE,CAAC;KACZ,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IACpD,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7D,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;QAChC,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;QAChD,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;QACzD,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;KAC9D,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,yCAAyC,EAAE,UAAC,CAAC;IAChD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;YAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;IACD;QAAmB,wBAAK;QACtB,cAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;YAJC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;QACtB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC;QACpB,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;KAClB,CAAC,CAAC;IAEH,IAAI,CAAC,WAAW,CAAC;QACf,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;QAChD,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;QACzD,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;KAC9D,CAAC,CAAC;IACH,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/E,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,wDAAwD,EAAE,UAAO,CAAC;;;QACrE;YAAmB,wBAAK;YACtB,cAAa,IAAI;gBAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;gBAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;YACtB,CAAC;YACH,WAAC;QAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;QACD;YAAmB,wBAAK;YACtB,cAAa,IAAK;gBAAlB,YACE,kBAAM,IAAI,CAAC,SAKZ;gBAJC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBACzC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;YACtB,CAAC;YACH,WAAC;QAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;QACK,KAAK,GAAG,IAAI,IAAI,CAAC;YACrB,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;SAClB,CAAC,CAAC;QACG,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACzB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;QAC5B,KAAK,CAAC,WAAW,CAAC;YAChB,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAC;SAC7D,CAAC,CAAC;QACH,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;;;KAC9B,CAAC,CAAC;AAEH,gBAAI,CAAC,wDAAwD,EAAE,UAAO,CAAC;;;;;gBAC/D,QAAQ,GAAG;oBACf,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE;oBACzC,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE;iBACrC,CAAC;gBACF;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;wBAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;wBACxC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;gBACD;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAOZ;wBANC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;wBACvC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;wBACpD,KAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;wBACvD,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;wBACpD,KAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;wBACvD,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AAVD,CAAmB,WAAK,GAUvB;gBACK,IAAI,GAAG,IAAI,IAAI,CAAC;oBACpB,KAAK,EAAE,EAAE;oBACT,MAAM,EAAE,CAAC,EAAE,CAAC;iBACb,CAAC,CAAC;gBACG,MAAM,GAAG;oBACb,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE;oBACpD,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE;iBACzD,CAAC;gBACF,WAAM,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,EAAA;;gBAAlC,SAAkC,CAAC;gBACnC,KAAA,CAAA,KAAA,CAAC,CAAA,CAAC,EAAE,CAAA;gBAAC,WAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAK,CAAA,CAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,EAAA;;gBAA7C,cAAK,SAAwC,EAAE,KAAK,EAAC,CAAC;gBACtD,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAQ,EAAE;oBACtC,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,QAAA,EAAE;oBAC1B,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,QAAA,EAAE;oBAC3B,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,QAAA,EAAE;oBAC5B,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,QAAA,EAAE;oBACpC,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,QAAA,EAAE;iBACzC,CAAC,CAAC;;;;KACJ,CAAC,CAAC;AAEH,gBAAI,CAAC,2DAA2D,EAAE,UAAO,CAAC;;;;;gBAClE,SAAS,GAAG,UAAU,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,KAAK,MAAM,CAAC;gBAC/C,CAAC,CAAC;gBACI,QAAQ,GAAG,CAAC;wBAChB,SAAS,EAAE,UAAU;wBACrB,OAAO,EAAE,KAAK;qBACf,CAAC,CAAC;gBACH;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAIZ;wBAHC,KAAI,CAAC,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;wBAC5C,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;wBACxC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;gBACD;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;wBAJC,KAAI,CAAC,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;wBAC5C,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;wBACvC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;wBACnD,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;gBACK,IAAI,GAAG,IAAI,IAAI,CAAC;oBACpB,IAAI,EAAE,EAAE;iBACT,CAAC,CAAC;gBACG,MAAM,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;gBACtE,WAAM,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,EAAA;;gBAAlC,SAAkC,CAAC;gBACnC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAQ,EAAE;oBACtC,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,QAAA,EAAC;oBACxB,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,QAAA,EAAC;oBACxB,EAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,QAAA,EAAC;iBAClC,CAAC,CAAC;;;;KACJ,CAAC,CAAC;AAEH,gBAAI,CAAC,oFAAoF,EAAE,UAAO,CAAC;;;;;gBAC3F,QAAQ,GAAG;oBACf,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE;oBACzC,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE;iBAC1C,CAAC;gBACF;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAIZ;wBAHC,KAAI,CAAC,QAAQ,EAAE,CAAC;wBAChB,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;wBACxC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;gBACD;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;wBAJC,KAAI,CAAC,QAAQ,EAAE,CAAC;wBAChB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;wBACvC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;wBACzC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;gBACK,IAAI,GAAG,IAAI,IAAI,CAAC;oBACpB,IAAI,EAAE,EAAE;iBACT,CAAC,CAAC;gBACG,MAAM,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;gBACtE,WAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA;;gBAApC,SAAoC,CAAC;gBACrC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC7C,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;;;;KACvD,CAAC,CAAC;AAEH,gBAAI,CAAC,0CAA0C,EAAE,UAAO,CAAC;;;QACvD;YAAmB,wBAAK;YACtB,cAAa,IAAI;gBAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;gBAFC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;YACtB,CAAC;YACH,WAAC;QAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;QACD;YAAmB,wBAAK;YACtB,cAAa,IAAI;gBAAjB,YACE,kBAAM,IAAI,CAAC,SAKZ;gBAJC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBACzC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;YACtB,CAAC;YACH,WAAC;QAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;QACK,IAAI,GAAG,IAAI,IAAI,CAAC;YACpB,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;SAClB,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC;YACf,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAC,CAAC,EAAE;YAC/C,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAC,CAAC,EAAE;YACxD,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAC,CAAC,EAAE;SAC7D,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACvD,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;;;KAC5D,CAAC,CAAC;AAEH,gBAAI,CAAC,sDAAsD,EAAE,UAAC,CAAC;IAC7D;QAAmB,wBAAK;QAEtB,cAAa,IAAK;YAAlB,YACE,kBAAM,IAAI,CAAC,SAIZ;YAHC,KAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;QAChB,CAAC;QACH,WAAC;IAAD,CAAC,AARD,CAAmB,WAAK,GAQvB;IACD;QAAmB,wBAAK;QAItB,cAAa,IAAK;YAAlB,YACE,kBAAM,IAAI,CAAC,SAMZ;YALC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;QAChB,CAAC;QACH,WAAC;IAAD,CAAC,AAZD,CAAmB,WAAK,GAYvB;IACD,IAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;IAC1B,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC;QACpB,MAAM,QAAA;QACN,IAAI,EAAE,KAAK;QACX,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;SACb;QACD,KAAK,EAAE;YACL,IAAI;YACJ;gBACE,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC,CAAC;IACH,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC5B,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAC,CAAC,CAAC;IACpD,CAAC,CAAC,EAAE,CAAC,MAAM,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEH,gBAAI,CAAC,8CAA8C,EAAE,UAAO,CAAC;;;;;;gBACrD,MAAM,GAAG,CAAC;wBACd,OAAO,EAAE,OAAO;wBAChB,OAAO,EAAE,QAAQ;wBACjB,KAAK,EAAE;4BAAY,WAAA,IAAI,EAAA;iCAAA;wBACvB,GAAG,EAAE,KAAK;qBACX,CAAC,CAAC;gBACH;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;wBAFC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;wBACtC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AAND,CAAmB,WAAK,GAMvB;gBACD;oBAAsB,2BAAK;oBACzB,iBAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAGZ;wBAFC,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;wBACzB,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,cAAC;gBAAD,CAAC,AAND,CAAsB,WAAK,GAM1B;gBACD;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAQZ;wBAPC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;wBACrC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;wBAClD,KAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;wBACrD,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC1C,KAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBAC7C,KAAI,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;wBACjD,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AAXD,CAAmB,WAAK,GAWvB;gBACK,IAAI,GAAG,IAAI,IAAI,CAAC;oBACpB,KAAK,EAAE,EAAE;oBACT,MAAM,EAAE,CAAC,EAAE,CAAC;oBACZ,OAAO,EAAE,EAAE;iBACZ,CAAC,CAAC;gBACG,QAAQ,GAAG,IAAI,KAAK,EAAE,CAAC;gBACvB,QAAQ,GAAG,IAAI,KAAK,EAAS,CAAC;gBAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;gBACnD,MAAM,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;gBACjE,KAAA,CAAA,KAAA,CAAC,CAAA,CAAC,EAAE,CAAA;gBAAC,WAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,OAAK,CAAA,CAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,EAAA;;gBAArE,cAAK,SAAgE,EAAE,KAAK,EAAC,CAAC;gBAC9E,KAAA,CAAA,KAAA,CAAC,CAAA,CAAC,EAAE,CAAA;gBAAC,WAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAC,EAAA;;gBAAjD,cAAK,SAA4C,EAAE,IAAI,EAAC,CAAC;gBACzD,KAAA,CAAA,KAAA,CAAC,CAAA,CAAC,EAAE,CAAA;gBAAC,WAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAC,EAAA;;gBAAnE,cAAK,SAA8D,EAAE,IAAI,EAAC,CAAC;gBAC3E,WAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAA;;gBAA3B,SAA2B,CAAC;gBAC5B,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAQ,EAAE;oBACtC,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,QAAA,EAAE;oBAC1B,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,QAAA,EAAE;oBAC3B,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,QAAA,EAAE;oBAC5B,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,QAAA,EAAE;oBACpC,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,QAAA,EAAE;iBACzC,CAAC,CAAC;;;;KACJ,CAAC,CAAC;AAEH,gBAAI,CAAC,uDAAuD,EAAE,UAAO,CAAC;;;;;gBAC9D,OAAO,GAAG,UAAU,CAAC;oBACzB,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC;gBAC9B,CAAC,CAAC;gBACI,MAAM,GAAG,CAAC;wBACd,OAAO,EAAE,UAAU;wBACnB,OAAO,EAAE,QAAQ;wBACjB,GAAG,EAAE,KAAK;qBACX,CAAC,CAAC;gBACH;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAIZ;wBAHC,KAAI,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;wBACxC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;wBACtC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AAPD,CAAmB,WAAK,GAOvB;gBACD;oBAAmB,wBAAK;oBACtB,cAAa,IAAI;wBAAjB,YACE,kBAAM,IAAI,CAAC,SAMZ;wBALC,KAAI,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;wBACxC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;wBACrC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;wBACzC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBAC5C,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;oBACtB,CAAC;oBACH,WAAC;gBAAD,CAAC,AATD,CAAmB,WAAK,GASvB;gBACK,IAAI,GAAG,IAAI,IAAI,CAAC;oBACpB,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,CAAC,EAAE,CAAC;iBACZ,CAAC,CAAC;gBACG,OAAO,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC5B,MAAM,GAAG,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;gBACpE,WAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAA;;gBAA1B,SAA0B,CAAC;gBAC3B,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAQ,EAAE;oBACtC,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,QAAA,EAAE;oBAC1B,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,QAAA,EAAE;oBACnC,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,QAAA,EAAE;iBACxC,CAAC,CAAC;;;;KACJ,CAAC,CAAC;AAEH,gBAAI,CAAC,gDAAgD,EAAE,UAAC,CAAC;IACvD;QAAoB,yBAAK;QAEvB,eAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAEZ;YADC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;;QACjD,CAAC;QACH,YAAC;IAAD,CAAC,AAND,CAAoB,WAAK,GAMxB;IACD;QAAoB,yBAAK;QAEvB,eAAa,IAAI;YAAjB,YACE,kBAAM,IAAI,CAAC,SAEZ;YADC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;;QAClD,CAAC;QACH,YAAC;IAAD,CAAC,AAND,CAAoB,WAAK,GAMxB;IACD,IAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5B,IAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/src/fields.ts b/src/fields.ts index 57deb71..eab633b 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -1,13 +1,12 @@ -import {isFunction, isUndefined, isPresent, isArray, toArray, isValue, cast} from 'typeable'; -import {normalize, isEqual, merge} from './utils'; -import {Validator, ValidatorRecipe} from 'validatable'; -import {Handler, HandlerRecipe} from 'handleable'; -import {Model} from './models'; - -/* -* Field definition interface. -*/ - +import { isFunction, isUndefined, isPresent, isArray, toArray, isValue, cast } from 'typeable'; +import { normalize, isEqual, merge } from './utils'; +import { Validator, ValidatorRecipe } from 'validatable'; +import { Handler, HandlerRecipe } from 'handleable'; +import { Model } from './models'; + +/** + * Field definition interface. + */ export interface FieldRecipe { type?: any; get?: (v: any) => any; @@ -25,20 +24,18 @@ export interface FieldRecipe { enumerable?: boolean; } -/* -* Field error interface. -*/ - +/** + * Field error interface. + */ export interface FieldError { message?: string; code?: number; [key: string]: any; } -/* -* Field class. -*/ - +/** + * Field class. + */ export class Field { protected _data: any; protected _initialData: any; @@ -56,11 +53,10 @@ export class Field { public value: any; public errors: FieldError[]; - /* - * Class constructor. - */ - - public constructor (recipe?: FieldRecipe) { + /** + * Class constructor. + */ + public constructor(recipe?: FieldRecipe) { if (!recipe) { recipe = {}; } @@ -126,36 +122,33 @@ export class Field { }); } - /* - * Returns a new validator instance. - */ - - protected _createValidator () { - let {validators, failFast} = this._recipe; - let context = this; + /** + * Returns a new validator instance. + */ + protected _createValidator() { + const { validators, failFast } = this._recipe; + const context = this; - return new Validator({validators, failFast, context}); + return new Validator({ validators, failFast, context }); } - /* - * Returns a new handler instance. - */ - - protected _createHandler () { - let {handlers, failFast} = this._recipe; - let context = this; + /** + * Returns a new handler instance. + */ + protected _createHandler() { + const { handlers, failFast } = this._recipe; + const context = this; - return new Handler({handlers, failFast, context}); + return new Handler({ handlers, failFast, context }); } - /* - * Returns current field value. - */ - - protected _getValue () { + /** + * Returns current field value. + */ + protected _getValue() { let data = this._data; - let {get} = this._recipe; + const { get } = this._recipe; if (isFunction(get)) { data = get.call(this, data); } @@ -163,16 +156,15 @@ export class Field { return data; } - /* - * Sets current field value. - */ - - protected _setValue (data: any) { + /** + * Sets current field value. + */ + protected _setValue(data: any) { if (isFunction(data)) { data = data.call(this); } - let {set} = this._recipe; + const { set } = this._recipe; if (isFunction(set)) { data = set.call(this, data); } @@ -182,14 +174,13 @@ export class Field { this._data = data; } - /* - * Returns the default value of a field. - */ - - protected _getDefaultValue () { + /** + * Returns the default value of a field. + */ + protected _getDefaultValue() { let data = null; - let {defaultValue} = this._recipe; + const { defaultValue } = this._recipe; if (isFunction(defaultValue)) { data = defaultValue.call(this); } @@ -202,14 +193,13 @@ export class Field { return data; } - /* - * Returns the fake value of a field. - */ - - protected _getFakeValue () { + /** + * Returns the fake value of a field. + */ + protected _getFakeValue() { let data = null; - let {fakeValue} = this._recipe; + const { fakeValue } = this._recipe; if (isFunction(fakeValue)) { data = fakeValue.call(this); } @@ -220,11 +210,10 @@ export class Field { return data; } - /* - * Converts a `value` into field's type. - */ - - public cast (data: any) { + /** + * Converts a `value` into field's type. + */ + public cast(data: any) { let converter = this.type; if (!isValue(data)) { @@ -232,29 +221,27 @@ export class Field { } if (this.isNested()) { - let Klass = isArray(this.type) ? this.type[0] : this.type; - let toModel = (d) => new Klass({parent: this.owner}).populate(merge({}, d)); + const Klass = isArray(this.type) ? this.type[0] : this.type; + const toModel = (d) => new Klass({ parent: this.owner }).populate(merge({}, d)); converter = isArray(this.type) ? [toModel] : toModel; } return cast(data, converter); } - /* - * Sets data to the default value. - */ - - public reset (): this { + /** + * Sets data to the default value. + */ + public reset(): this { this.value = this._getDefaultValue(); return this; } - /* - * Resets the value then sets data to the fake value. - */ - - public fake (): this { + /** + * Resets the value then sets data to the fake value. + */ + public fake(): this { if (this.fakeValue) { this.value = this.fakeValue; @@ -267,21 +254,19 @@ export class Field { return this; } - /* - * Sets data to `null`. - */ - - public clear (): this { + /** + * Sets data to `null`. + */ + public clear(): this { this.value = null; return this; } - /* - * Set's the initial value to the current value. - */ - - public commit (): this { + /** + * Set's the initial value to the current value. + */ + public commit(): this { if (isValue(this.value)) { toArray(this.value) .filter((v) => v && v.commit) @@ -293,22 +278,20 @@ export class Field { return this; } - /* - * Sets value to the initial value. - */ - - public rollback (): this { + /** + * Sets value to the initial value. + */ + public rollback(): this { this.value = this.initialValue; return this; } - /* - * Returns `true` when `data` equals to the current value. - */ - - public equals (data: any): boolean { - let value = data instanceof Field ? data.value : data; + /** + * Returns `true` when `data` equals to the current value. + */ + public equals(data: any): boolean { + const value = data instanceof Field ? data.value : data; return isEqual( normalize(this.value), @@ -316,19 +299,17 @@ export class Field { ); } - /* - * Returns `true` if the value has been changed. - */ - - public isChanged (): boolean { + /** + * Returns `true` if the value has been changed. + */ + public isChanged(): boolean { return !this.equals(this.initialValue); } - /* - * Returns `true` if the data is a Model. - */ - - public isNested (): boolean { + /** + * Returns `true` if the data is a Model. + */ + public isNested(): boolean { let type = this.type; if (isArray(type)) type = type[0]; @@ -342,14 +323,13 @@ export class Field { ); } - /* - * Validates the field by populating the `errors` property. - * - * IMPORTANT: Array null values for nested objects are not treated as an object - * but as an empty item thus isValid() for [null] succeeds. - */ - - public async validate (): Promise { + /** + * Validates the field by populating the `errors` property. + * + * IMPORTANT: Array null values for nested objects are not treated as an object + * but as an empty item thus isValid() for [null] succeeds. + */ + public async validate(): Promise { await Promise.all( // validate related models (toArray(this.value) || []) .filter((doc) => doc instanceof Model) @@ -364,14 +344,13 @@ export class Field { return this; } - /* - * Handles the field by populating the `errors` property. - * - * IMPORTANT: Array null values for nested objects are not treated as an object - * but as an empty item thus isValid() for [null] succeeds. - */ - - public async handle (error: any): Promise { + /** + * Handles the field by populating the `errors` property. + * + * IMPORTANT: Array null values for nested objects are not treated as an object + * but as an empty item thus isValid() for [null] succeeds. + */ + public async handle(error: any): Promise { await Promise.all( // handle related models (toArray(this.value) || []) .filter((doc) => doc instanceof Model) @@ -386,11 +365,10 @@ export class Field { return this; } - /* - * Clears errors. - */ - - public invalidate (): this { + /** + * Clears errors. + */ + public invalidate(): this { (toArray(this.value) || []) // invalidate related models .filter((doc) => doc instanceof Model) .forEach((doc) => doc.invalidate()); @@ -400,11 +378,10 @@ export class Field { return this; } - /* - * Returns `true` when errors exist (inverse of `isValid`). - */ - - public hasErrors (): boolean { + /** + * Returns `true` when errors exist (inverse of `isValid`). + */ + public hasErrors(): boolean { if (this.errors.length > 0) { return true; } @@ -419,12 +396,10 @@ export class Field { return false; } - /* - * Returns `true` when the value is valid (inverse of `hasErrors`). - */ - - public isValid (): boolean { + /** + * Returns `true` when the value is valid (inverse of `hasErrors`). + */ + public isValid(): boolean { return !this.hasErrors(); } - } diff --git a/src/models.ts b/src/models.ts index 8e75296..0c42b95 100644 --- a/src/models.ts +++ b/src/models.ts @@ -1,54 +1,49 @@ -import {isArray, isUndefined, isPresent, isString, toBoolean} from 'typeable'; -import {ValidatorRecipe} from 'validatable'; -import {HandlerRecipe} from 'handleable'; -import {Field, FieldRecipe, FieldError} from './fields'; -import {normalize, isEqual, merge} from './utils'; - -/* -* Flattened field reference type definition. -*/ - +import { isArray, isUndefined, isPresent, isString, toBoolean } from 'typeable'; +import { ValidatorRecipe } from 'validatable'; +import { HandlerRecipe } from 'handleable'; +import { Field, FieldRecipe, FieldError } from './fields'; +import { normalize, isEqual, merge } from './utils'; + +/** + * Flattened field reference type definition. + */ export interface FieldRef { path: (string | number)[]; field: Field; } -/* -* Field error type definition. -*/ - +/** + * Field error type definition. + */ export interface FieldErrorRef { path: (string | number)[]; errors: FieldError[]; } -/* -* Model recipe interface. -*/ - +/** + * Model recipe interface. + */ export interface ModelRecipe { parent?: Model; [key: string]: any; } -/* -* The core schema object class. -*/ - +/** + * The core schema object class. + */ export abstract class Model { - protected _fields: {[name: string]: Field}; // model fields - protected _types: {[key: string]: (v?: any) => any}; // custom data types - protected _validators: {[key: string]: (v?: any, r?: ValidatorRecipe) => boolean | Promise}; // custom validators - protected _handlers: {[key: string]: (v?: any, r?: HandlerRecipe) => boolean | Promise}; // custom validators + protected _fields: { [name: string]: Field }; // model fields + protected _types: { [key: string]: (v?: any) => any }; // custom data types + protected _validators: { [key: string]: (v?: any, r?: ValidatorRecipe) => boolean | Promise }; // custom validators + protected _handlers: { [key: string]: (v?: any, r?: HandlerRecipe) => boolean | Promise }; // custom validators protected _failFast: boolean; // stop validating/handling on first error readonly root: Model; public parent: Model; - /* - * Class constructor. - */ - - public constructor (recipe?: ModelRecipe) { + /** + * Class constructor. + */ + public constructor(recipe?: ModelRecipe) { if (!recipe) { recipe = {}; } @@ -83,11 +78,10 @@ export abstract class Model { }); } - /* - * Loops up on the tree and returns the first model in the tree. - */ - - protected _getRootModel () { + /** + * Loops up on the tree and returns the first model in the tree. + */ + protected _getRootModel() { let root: Model = this; do { if (root.parent) { @@ -99,22 +93,20 @@ export abstract class Model { } while (true); } - /* - * Returns the appropriate field type. - */ - - protected _getFieldType (recipe: FieldRecipe = {}) { + /** + * Returns the appropriate field type. + */ + protected _getFieldType(recipe: FieldRecipe = {}) { let type = isArray(recipe.type) ? recipe.type[0] : recipe.type; type = this._types[type] || type; return isArray(recipe.type) ? [type] : type; } - /* - * Creates a new field instance. This method is especially useful when - * extending this class. - */ - - protected _createField (recipe: FieldRecipe = {}) { + /** + * Creates a new field instance. This method is especially useful when + * extending this class. + */ + protected _createField(recipe: FieldRecipe = {}) { return new Field( merge({}, recipe, { type: this._getFieldType(recipe), @@ -126,40 +118,36 @@ export abstract class Model { ); } - /* - * Creates a new validation error instance. - */ - - protected _createValidationError (message = 'Validation failed', code = 422): FieldError { - let error: FieldError = new Error(message); + /** + * Creates a new validation error instance. + */ + protected _createValidationError(message = 'Validation failed', code = 422): FieldError { + const error: FieldError = new Error(message); error.code = code; return error; } - /* - * Creates a new model instance. This method is especially useful when - * extending this class. - */ - - protected _createModel (recipe: ModelRecipe = {}) { + /** + * Creates a new model instance. This method is especially useful when + * extending this class. + */ + protected _createModel(recipe: ModelRecipe = {}) { return new (this.constructor as any)(recipe); } - /* - * Configures validator to stop validating field on the first error. - */ - - public failFast (fail: boolean = true): void { + /** + * Configures validator to stop validating field on the first error. + */ + public failFast(fail: boolean = true): void { this._failFast = toBoolean(fail); } - /* - * Defines a new model property. - */ - - public defineField (name: string, recipe: FieldRecipe = {}): void { - let field = this._createField(recipe); + /** + * Defines a new model property. + */ + public defineField(name: string, recipe: FieldRecipe = {}): void { + const field = this._createField(recipe); Object.defineProperty(this, name, { get: () => field.value, @@ -171,63 +159,57 @@ export abstract class Model { this._fields[name] = field; } - /* - * Defines a new custom data type. - */ - - public defineType (name: string, converter: (v?: any) => any): void { + /** + * Defines a new custom data type. + */ + public defineType(name: string, converter: (v?: any) => any): void { this._types[name] = converter; } - /* - * Defines a new custom validator. - */ - - public defineValidator (name: string, handler: (v?: any, r?: ValidatorRecipe) => boolean | Promise): void { + /** + * Defines a new custom validator. + */ + public defineValidator(name: string, handler: (v?: any, r?: ValidatorRecipe) => boolean | Promise): void { this._validators[name] = handler; } - /* - * Defines a new custom validator. - */ - - public defineHandler (name: string, handler: (e?: any, r?: HandlerRecipe) => boolean | Promise): void { + /** + * Defines a new custom validator. + */ + public defineHandler(name: string, handler: (e?: any, r?: HandlerRecipe) => boolean | Promise): void { this._handlers[name] = handler; } - /* - * Returns a value at path. - */ - - public getField (...keys: any[]): Field { + /** + * Returns a value at path. + */ + public getField(...keys: any[]): Field { keys = [].concat(isArray(keys[0]) ? keys[0] : keys); - let lastKey = keys.pop(); + const lastKey = keys.pop(); if (keys.length === 0) { return this._fields[lastKey]; } - let field = keys.reduce((a, c) => (a[c] || {}), this); + const field = keys.reduce((a, c) => (a[c] || {}), this); return field instanceof Model ? field.getField(lastKey) : undefined; } - /* - * Returns `true` if the field exists. - */ - - public hasField (...keys: any[]): boolean { + /** + * Returns `true` if the field exists. + */ + public hasField(...keys: any[]): boolean { return !isUndefined(this.getField(...keys)); } - /* - * Deeply assignes data to model fields. - */ - - public populate (data = {}, strategy?: string): this { + /** + * Deeply assignes data to model fields. + */ + public populate(data = {}, strategy?: string): this { function toValue(value) { if (value instanceof Model) { - let data = normalize(value); + const data = normalize(value); return value.reset().populate(data, strategy); } else if (isArray(value)) { return value.map((v) => toValue(v)); @@ -241,8 +223,8 @@ export abstract class Model { !!this._fields[n] )) .forEach((name) => { - let field = this._fields[name]; - let value = field.cast(data[name]); + const field = this._fields[name]; + const value = field.cast(data[name]); if ( isString(strategy) && isArray(field.populatable) @@ -256,11 +238,10 @@ export abstract class Model { return this; } - /* - * Converts this class into serialized data object. - */ - - public serialize (strategy?: string): {[key: string]: any} { + /** + * Converts this class into serialized data object. + */ + public serialize(strategy?: string): { [key: string]: any } { const data = {}; function toObject(value) { @@ -274,7 +255,7 @@ export abstract class Model { } Object.keys(this._fields).forEach((name) => { - let field = this._fields[name]; + const field = this._fields[name]; if ( isString(strategy) && isArray(field.serializable) @@ -288,18 +269,17 @@ export abstract class Model { return data; } - /* - * Scrolls through the model and returns an array of fields. - */ - - public flatten (prefix: string[] = []): FieldRef[] { + /** + * Scrolls through the model and returns an array of fields. + */ + public flatten(prefix: string[] = []): FieldRef[] { let fields = []; Object.keys(this._fields).forEach((name) => { - let field = this._fields[name]; - let type = field.type; - let path = (prefix || []).concat(name); - let value = field.value; + const field = this._fields[name]; + const type = field.type; + const path = (prefix || []).concat(name); + const value = field.value; fields.push({path, field}); @@ -323,137 +303,125 @@ export abstract class Model { return fields; } - /* - * Scrolls through object fields and collects results. - */ - - public collect (handler: (field: FieldRef) => any): any[] { + /** + * Scrolls through object fields and collects results. + */ + public collect(handler: (field: FieldRef) => any): any[] { return this.flatten().map(handler); } - /* - * Scrolls through model fields and executes a handler on each field. - */ - - public scroll (handler: (field: FieldRef) => void): number { + /** + * Scrolls through model fields and executes a handler on each field. + */ + public scroll(handler: (field: FieldRef) => void): number { return this.flatten().map(handler).length; } - /* - * Converts this class into serialized data object with only the keys that - * pass the provided `test`. - */ - - public filter (test: (field: FieldRef) => boolean): {[key: string]: any} { - let data = this.serialize(); + /** + * Converts this class into serialized data object with only the keys that + * pass the provided `test`. + */ + public filter(test: (field: FieldRef) => boolean): {[key: string]: any} { + const data = this.serialize(); this.flatten() .sort((a, b) => b.path.length - a.path.length) .filter((field) => !test(field)) .forEach((field) => { - let names = field.path.concat(); - let lastName = names.pop(); + const names = field.path.concat(); + const lastName = names.pop(); delete names.reduce((o, k) => o[k], data)[lastName]; }); return data; } - /* - * Sets each model field to its default value. - */ - - public reset (): this { + /** + * Sets each model field to its default value. + */ + public reset(): this { Object.keys(this._fields) .forEach((name) => this._fields[name].reset()); return this; } - /* - * Resets fields then sets fields to their fake values. - */ - - public fake (): this { + /** + * Resets fields then sets fields to their fake values. + */ + public fake(): this { Object.keys(this._fields) .forEach((name) => this._fields[name].fake()); return this; } - /* - * Sets all fileds to `null`. - */ - - public clear (): this { + /** + * Sets all fileds to `null`. + */ + public clear(): this { Object.keys(this._fields) .forEach((name) => this._fields[name].clear()); return this; } - /* - * Resets information about changed fields by setting initial value of each field. - */ - - public commit (): this { + /** + * Resets information about changed fields by setting initial value of each field. + */ + public commit(): this { Object.keys(this._fields) .forEach((name) => this._fields[name].commit()); return this; } - /* - * Sets each field to its initial value (value before last commit). - */ - - public rollback (): this { + /** + * Sets each field to its initial value (value before last commit). + */ + public rollback(): this { Object.keys(this._fields) .forEach((name) => this._fields[name].rollback()); return this; } - /* - * Returns `true` when the `value` represents an object with the - * same field values as the original model. - */ - - public equals (value: any): boolean { + /** + * Returns `true` when the `value` represents an object with the + * same field values as the original model. + */ + public equals(value: any): boolean { return isEqual( normalize(this), normalize(value) ); } - /* - * Returns `true` if at least one field has been changed. - */ - - public isChanged (): boolean { + /** + * Returns `true` if at least one field has been changed. + */ + public isChanged(): boolean { return Object.keys(this._fields) .some((name) => this._fields[name].isChanged()); } - /* - * Returns `true` if nested fields exist. - */ - - public isNested (): boolean { + /** + * Returns `true` if nested fields exist. + */ + public isNested(): boolean { return Object.keys(this._fields) .some((name) => this._fields[name].isNested()); } - /* - * Validates fields and throws an error. - */ - - public async validate ({ + /** + * Validates fields and throws an error. + */ + public async validate({ quiet = false }: { quiet?: boolean } = {}): Promise { - let fields = this._fields; + const fields = this._fields; await Promise.all( Object.keys(fields) @@ -466,11 +434,10 @@ export abstract class Model { return this; } - /* - * Handles the error and throws an error if the error can not be handled. - */ - - public async handle (error: any, { + /** + * Handles the error and throws an error if the error can not be handled. + */ + public async handle(error: any, { quiet = true }: { quiet?: boolean @@ -478,7 +445,7 @@ export abstract class Model { if (!error) return this; // blank values are valid if (error.code === 422) return this; // validation errors are ignored - let fields = this._fields; + const fields = this._fields; await Promise.all( Object.keys(fields) .map((n) => fields[n].handle(error)) @@ -493,23 +460,21 @@ export abstract class Model { return this; } - /* - * Returns a list of all fields with errors. - */ - - public collectErrors (): FieldErrorRef[] { + /** + * Returns a list of all fields with errors. + */ + public collectErrors(): FieldErrorRef[] { return this.flatten() .map(({path, field}) => ({path, errors: field.errors} as FieldErrorRef)) .filter(({path, errors}) => errors.length > 0); } - /* - * Sets fields errors. - */ - - public applyErrors (errors: FieldErrorRef[] = []): this { + /** + * Sets fields errors. + */ + public applyErrors(errors: FieldErrorRef[] = []): this { errors.forEach((error) => { - let field = this.getField(...error.path); + const field = this.getField(...error.path); if (field) { field.errors = error.errors; } @@ -518,42 +483,36 @@ export abstract class Model { return this; } - /* - * Returns `true` when errors exist (inverse of `isValid`). - */ - - public hasErrors (): boolean { + /** + * Returns `true` when errors exist (inverse of `isValid`). + */ + public hasErrors(): boolean { return Object.keys(this._fields) .some((name) => this._fields[name].hasErrors()); } - /* - * Returns `true` when no errors exist (inverse of `hasErrors`). - */ - - public isValid (): boolean { + /** + * Returns `true` when no errors exist (inverse of `hasErrors`). + */ + public isValid(): boolean { return !this.hasErrors(); } - /* - * Removes fields errors. - */ - - public invalidate (): this { + /** + * Removes fields errors. + */ + public invalidate(): this { Object.keys(this._fields) .forEach((name) => this._fields[name].invalidate()); return this; } - /* - * Returns a new Model instance which is the exact copy of the original. - */ - - public clone (data = {}): this { - return this._createModel( - merge({}, this.serialize(), {parent: this.parent}, data) - ); + /** + * Returns a new Model instance which is the exact copy of the original. + */ + public clone(data = {}): this { + return this._createModel({ parent: this.parent }) + .populate(merge({}, this.serialize(), data)); } - } diff --git a/src/utils.ts b/src/utils.ts index acdece1..70c7b71 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,22 +1,19 @@ import merge = require('lodash.merge'); import isEqual = require('lodash.isequal'); -/* -* Deeply combines multiple values. -*/ - +/** + * Deeply combines multiple values. + */ export {merge}; -/* -* Deeply checks if two objects are equal. -*/ - +/** + * Deeply checks if two objects are equal. + */ export {isEqual}; -/* -* Converts the provided data to primitive data type. -*/ - +/** + * Converts the provided data to primitive data type. + */ export function normalize (data: any) { if (typeof data === 'undefined') { return undefined; @@ -24,4 +21,3 @@ export function normalize (data: any) { return JSON.parse(JSON.stringify(data)); } } - diff --git a/tests/fields.ts b/tests/fields.ts index 2e3cd9b..a09e81d 100644 --- a/tests/fields.ts +++ b/tests/fields.ts @@ -1,21 +1,21 @@ import test from 'ava'; -import {Field, Model} from '../src'; -import {Validator} from 'validatable'; +import { Field, Model } from '../src'; +import { Validator } from 'validatable'; test('nullifies a value by default', (t) => { - let f = new Field(); + const f = new Field(); t.is(f.value, null); }); test('provides getter and setter for the current value', (t) => { - let f = new Field(); + const f = new Field(); f.value = 'foo'; t.is(f.value, 'foo'); }); test('supports custom getter and setter for the current value', (t) => { - let f0 = new Field({get (v) { return `${v}-${this.constructor.name}`; }}); - let f1 = new Field({set (v) { return `${v}-${this.constructor.name}`; }}); + const f0 = new Field({get (v) { return `${v}-${this.constructor.name}`; }}); + const f1 = new Field({set (v) { return `${v}-${this.constructor.name}`; }}); f0.value = 'foo'; f1.value = 'foo'; t.is(f0.value, 'foo-Field'); @@ -23,8 +23,8 @@ test('supports custom getter and setter for the current value', (t) => { }); test('can automatically cast a value to a specific data type', (t) => { - let f0 = new Field({type: ['String']}); - let f1 = new Field({type: (v) => `${v}-foo`}); // custom type + const f0 = new Field({ type: ['String'] }); + const f1 = new Field({ type: (v) => `${v}-foo` }); // custom type f0.value = 100; f1.value = 100; t.deepEqual(f0.value, ['100']); @@ -32,9 +32,9 @@ test('can automatically cast a value to a specific data type', (t) => { }); test('can have a default value', (t) => { - let f0 = new Field({defaultValue: 'foo'}); - let f1 = new Field({defaultValue () { return this.constructor.name; }}); - let f2 = new Field({defaultValue () { return Math.random(); }}); + const f0 = new Field({ defaultValue: 'foo' }); + const f1 = new Field({ defaultValue () { return this.constructor.name; } }); + const f2 = new Field({ defaultValue () { return Math.random(); } }); t.is(f0.value, 'foo'); t.is(f1.value, 'Field'); t.is(f0.defaultValue, 'foo'); @@ -43,18 +43,18 @@ test('can have a default value', (t) => { }); test('can have a fake value', (t) => { - let f0 = new Field({fakeValue: 'foo'}); - let f1 = new Field({fakeValue () { return this.constructor.name; }}); - let f2 = new Field({fakeValue () { return Math.random(); }}); + const f0 = new Field({ fakeValue: 'foo' }); + const f1 = new Field({ fakeValue () { return this.constructor.name; } }); + const f2 = new Field({ fakeValue () { return Math.random(); } }); t.is(f0.fakeValue, 'foo'); t.is(f1.fakeValue, 'Field'); t.is(f2.fakeValue !== f2.fakeValue, true); // dynamic values }); test('method `reset()` sets value to the default value', (t) => { - let f0 = new Field(); - let f1 = new Field({defaultValue: 'foo'}); - let f2 = new Field({defaultValue () { return Math.random(); }}); + const f0 = new Field(); + const f1 = new Field({ defaultValue: 'foo' }); + const f2 = new Field({ defaultValue () { return Math.random(); } }); t.is(f0.value, null); f1.value = 'bar'; f1.reset(); @@ -64,9 +64,9 @@ test('method `reset()` sets value to the default value', (t) => { }); test('method `fake()` sets value to the fake value', (t) => { - let f0 = new Field(); - let f1 = new Field({fakeValue: 'foo'}); - let f2 = new Field({fakeValue () { return Math.random(); }}); + const f0 = new Field(); + const f1 = new Field({ fakeValue: 'foo' }); + const f2 = new Field({ fakeValue () { return Math.random(); } }); f0.value = 'foo'; f0.fake(); t.is(f0.value, 'foo'); @@ -79,7 +79,7 @@ test('method `fake()` sets value to the fake value', (t) => { }); test('method `clear()` sets value to `null`', (t) => { - let f = new Field(); + const f = new Field(); f.value = 'foo'; f.errors = [ {validator: 'foo', message: 'bar', code: 422} @@ -90,7 +90,7 @@ test('method `clear()` sets value to `null`', (t) => { }); test('methods `commit()` and `rollback()` manage committed value state', (t) => { - let f = new Field(); + const f = new Field(); f.value = 'foo'; t.is(f.initialValue, null); f.commit(); @@ -101,8 +101,8 @@ test('methods `commit()` and `rollback()` manage committed value state', (t) => }); test('method `equals()` returns `true` when the provided `data` equals to the current value', (t) => { - let f0 = new Field(); - let f1 = new Field(); + const f0 = new Field(); + const f1 = new Field(); f0.value = 'foo'; f1.value = 'foo'; t.is(f0.equals(f1), true); @@ -110,9 +110,9 @@ test('method `equals()` returns `true` when the provided `data` equals to the cu }); test('method `isChanged()` returns `true` if the value have been changed', (t) => { - let f0 = new Field(); - let f1 = new Field({type: 'String', defaultValue: 'foo'}); - let f2 = new Field({type: ['String'], defaultValue: ['foo']}); + const f0 = new Field(); + const f1 = new Field({ type: 'String', defaultValue: 'foo' }); + const f2 = new Field({ type: ['String'], defaultValue: ['foo'] }); t.is(f0.isChanged(), false); f0.value = 'foo'; t.is(f0.isChanged(), true); @@ -121,56 +121,56 @@ test('method `isChanged()` returns `true` if the value have been changed', (t) = }); test('method `isNested()` returns `true` if the field type is un instance of a Model', (t) => { - let f0 = new Field(); - let f1 = new Field({type: [Model]}); - let f2 = new Field({type: [class User extends Model {}]}); + const f0 = new Field(); + const f1 = new Field({ type: [Model] }); + const f2 = new Field({ type: [class User extends Model {}] }); t.is(f0.isNested(), false); t.is(f1.isNested(), true); t.is(f2.isNested(), true); }); test('method `validate()` validates the value and populates the `errors` property', async (t) => { - let f = new Field({ + const f = new Field({ validate: [ - {validator: 'presence', message: 'foo'}, - {validator: 'coolness', message: 'is not cool'}, // custom with message - {validator: 'coolness', code: 999}, // custom with code + { validator: 'presence', message: 'foo' }, + { validator: 'coolness', message: 'is not cool' }, // custom with message + { validator: 'coolness', code: 999 }, // custom with code ], validators: { - coolness () { return this.value === 'cool'; } // custom validators - } + coolness () { return this.value === 'cool'; }, // custom validators + }, }); await f.validate(); t.deepEqual(f.errors, [ - {validator: 'presence', message: 'foo', code: 422}, - {validator: 'coolness', message: 'is not cool', code: 422}, - {validator: 'coolness', message: undefined, code: 999} + { validator: 'presence', message: 'foo', code: 422 }, + { validator: 'coolness', message: 'is not cool', code: 422 }, + { validator: 'coolness', message: undefined, code: 999 }, ]); }); test('method `invalidate()` clears the `errors` property', (t) => { - let f = new Field(); - f.errors.push({message: 'foo'}); + const f = new Field(); + f.errors.push({ message: 'foo' }); f.invalidate(); t.deepEqual(f.errors, []); }); test('method `hasErrors()` returns `true` when errors exist', (t) => { - let f = new Field(); + const f = new Field(); t.is(f.hasErrors(), false); - f.errors.push({message: 'foo'}); + f.errors.push({ message: 'foo' }); t.is(f.hasErrors(), true); }); test('method `isValid()` returns `true` when no errors exist', (t) => { - let f = new Field(); + const f = new Field(); t.is(f.isValid(), true); - f.errors.push({message: 'foo'}); + f.errors.push({ message: 'foo' }); t.is(f.isValid(), false); }); test('has enumeratable properties', (t) => { - let f = new Field(); + const f = new Field(); t.deepEqual(Object.keys(f), [ 'errors', 'populatable', @@ -186,21 +186,21 @@ test('has enumeratable properties', (t) => { }); test('method `handle()` handles an error and populates the `errors` property', async (t) => { - let f = new Field({ + const f = new Field({ handle: [ - {handler: 'block', block () { return true; }, message: 'foo'}, - {handler: 'coolness', message: 'cool'}, // custom with message - {handler: 'coolness', code: 999} // custom with code + { handler: 'block', block () { return true; }, message: 'foo' }, + { handler: 'coolness', message: 'cool' }, // custom with message + { handler: 'coolness', code: 999 }, // custom with code ], handlers: { coolness (error) { return error.message === 'cool'; } // custom validators - } + }, }); - let e = new Error('cool'); + const e = new Error('cool'); await f.handle(e); t.deepEqual(f.errors, [ - {handler: 'block', message: 'foo', code: 422}, - {handler: 'coolness', message: 'cool', code: 422}, - {handler: 'coolness', message: undefined, code: 999}, + { handler: 'block', message: 'foo', code: 422 }, + { handler: 'coolness', message: 'cool', code: 422 }, + { handler: 'coolness', message: undefined, code: 999 }, ]); }); diff --git a/tests/models.ts b/tests/models.ts index 3ece8c8..f2bcfa3 100644 --- a/tests/models.ts +++ b/tests/models.ts @@ -1,16 +1,16 @@ import test from 'ava'; -import {ObjectId} from 'mongodb'; -import {Model, Field} from '../src'; +import { ObjectId } from 'mongodb'; +import { Model, Field } from '../src'; test('method `defineField` initializes nullified enumerable property', (t) => { - let user = new class User extends Model { + const user = new class User extends Model { name: string; constructor () { super(); this.defineField('name'); } }; - let descriptor = Object.getOwnPropertyDescriptor(user, 'name'); + const descriptor = Object.getOwnPropertyDescriptor(user, 'name'); t.is(typeof descriptor.get, 'function'); t.is(typeof descriptor.set, 'function'); t.is(descriptor.enumerable, true); @@ -19,14 +19,14 @@ test('method `defineField` initializes nullified enumerable property', (t) => { }); test('method `defineType` defines a custom data type', (t) => { - let user = new class User extends Model { + const user = new class User extends Model { name0: string; name1: string[]; constructor () { super(); this.defineType('cool', (v) => `${v}-cool`); - this.defineField('name0', {type: 'cool'}); - this.defineField('name1', {type: ['cool']}); + this.defineField('name0', { type: 'cool' }); + this.defineField('name1', { type: ['cool'] }); } }; user.name0 = 'foo'; @@ -42,9 +42,9 @@ test('method `populate` deeply assignes data', (t) => { description: string; constructor () { super(); - this.defineField('id', {type: 'Integer', populatable: ['output'] }); - this.defineField('title', {type: 'String'}); - this.defineField('description', {type: 'String', populatable: ['input'] }); + this.defineField('id', { type: 'Integer', populatable: ['output'] }); + this.defineField('title', { type: 'String'}); + this.defineField('description', { type: 'String', populatable: ['input'] }); } } class User extends Model { @@ -56,15 +56,15 @@ test('method `populate` deeply assignes data', (t) => { books: Book[]; constructor () { super(); - this.defineField('id', {type: 'Integer', populatable: ['output'] }); - this.defineField('name', {type: 'String'}); - this.defineField('email', {type: 'String', populatable: ['input'] }); - this.defineField('book0', {type: Book, populatable: ['output']}); - this.defineField('book1', {type: Book}); - this.defineField('books', {type: [Book], populatable: ['input']}); + this.defineField('id', { type: 'Integer', populatable: ['output'] }); + this.defineField('name', { type: 'String'}); + this.defineField('email', { type: 'String', populatable: ['input'] }); + this.defineField('book0', { type: Book, populatable: ['output'] }); + this.defineField('book1', { type: Book}); + this.defineField('books', { type: [Book], populatable: ['input'] }); } } - let data = { + const data = { id: '100', name: 100, email: 'foo@bar.com', @@ -83,9 +83,9 @@ test('method `populate` deeply assignes data', (t) => { }, ], }; - let user0 = new User(); - let user1 = new User(); - let user2 = new User(); + const user0 = new User(); + const user1 = new User(); + const user2 = new User(); user0.populate(null); // should not break user0.populate(false); // should not break user0.populate(''); // should not break @@ -125,7 +125,7 @@ test('property `parent` holds an instance of a parent model', (t) => { title: string; constructor (data) { super(data); - this.defineField('title', {type: 'String'}); + this.defineField('title', { type: 'String' }); this.populate(data); } } @@ -135,13 +135,13 @@ test('property `parent` holds an instance of a parent model', (t) => { books: Book[]; constructor (data) { super(data); - this.defineField('name', {type: 'String'}); - this.defineField('book', {type: Book}); - this.defineField('books', {type: [Book]}); + this.defineField('name', { type: 'String' }); + this.defineField('book', { type: Book }); + this.defineField('books', { type: [Book] }); this.populate(data); } } - let user = new User({ + const user = new User({ book: { title: 200 }, @@ -171,11 +171,11 @@ test('property `root` return the first model in a tree of nested models', (t) => book: Book; constructor (data) { super(data); - this.defineField('book', {type: Book}); + this.defineField('book', { type: Book }); this.populate(data); } } - let user = new User({ + const user = new User({ book: { title: 200 } @@ -188,20 +188,20 @@ test('method `getField` returns an instance of a field at path', (t) => { class Book extends Model { constructor (data) { super(data); - this.defineField('title', {type: 'String'}); + this.defineField('title', { type: 'String' }); this.populate(data); } } class User extends Model { constructor (data) { super(data); - this.defineField('name', {type: 'String'}); - this.defineField('book', {type: Book}); - this.defineField('books', {type: [Book]}); + this.defineField('name', { type: 'String' }); + this.defineField('book', { type: Book }); + this.defineField('books', { type: [Book] }); this.populate(data); } } - let user = new User({ + const user = new User({ name: 'foo', book: { title: 'bar' @@ -228,11 +228,11 @@ test('method `hasField` returns `true` if the field exists', (t) => { class User extends Model { constructor (data = {}) { super(); - this.defineField('name', {type: 'String'}); + this.defineField('name', { type: 'String' }); this.populate(data); } } - let user = new User(); + const user = new User(); t.is(user.hasField(['name']), true); t.is(user.hasField(['book', 'title']), false); }); @@ -241,23 +241,23 @@ test('method `serialize` converts model into a serialized data object', (t) => { class Book extends Model { constructor (data) { super(data); - this.defineField('title', {type: 'String'}); - this.defineField('description', {serializable: ['output']}); // only for these strategies + this.defineField('title', { type: 'String' }); + this.defineField('description', { serializable: ['output'] }); // only for these strategies this.populate(data); } } class User extends Model { constructor (data) { super(data); - this.defineField('id', {type: (v) => new Object(v), serializable: []}); // never - this.defineField('name', {type: 'String', serializable: null}); - this.defineField('description', {serializable: ['input', 'output']}); // only for these strategies - this.defineField('book', {type: Book, serializable: ['output']}); - this.defineField('books', {type: [Book]}); + this.defineField('id', { type: (v) => new Object(v), serializable: [] }); // never + this.defineField('name', { type: 'String', serializable: null }); + this.defineField('description', { serializable: ['input', 'output'] }); // only for these strategies + this.defineField('book', { type: Book, serializable: ['output'] }); + this.defineField('books', { type: [Book] }); this.populate(data); } } - let user = new User({ + const user = new User({ id: new Object('59efbadde01a49055b39711f'), name: 'foo', description: 'des', @@ -302,20 +302,20 @@ test('method `flatten` returns an array of fields', async (t) => { class Book extends Model { constructor (data) { super(data); - this.defineField('title', {type: 'String'}); + this.defineField('title', { type: 'String' }); this.populate(data); } } class User extends Model { constructor (data) { super(data); - this.defineField('name', {type: 'String'}); - this.defineField('book', {type: Book}); - this.defineField('books', {type: [Book]}); + this.defineField('name', { type: 'String' }); + this.defineField('book', { type: Book }); + this.defineField('books', { type: [Book] }); this.populate(data); } } - let user = new User({ + const user = new User({ name: 'foo', book: { title: 'bar' @@ -343,25 +343,25 @@ test('method `collect` returns an array of results', (t) => { class Book extends Model { constructor (data) { super(data); - this.defineField('title', {type: 'String'}); + this.defineField('title', { type: 'String' }); this.populate(data); } } class User extends Model { constructor (data) { super(data); - this.defineField('name', {type: 'String'}); - this.defineField('book', {type: Book}); + this.defineField('name', { type: 'String' }); + this.defineField('book', { type: Book }); this.populate(data); } } - let user = new User({ + const user = new User({ name: 'foo', book: { title: 'bar' } }); - let results = user.collect(({path}) => path); + const results = user.collect(({ path }) => path); t.deepEqual(results, [ ['name'], ['book'], @@ -373,25 +373,25 @@ test('method `scroll` runs the provided handler on each field', (t) => { class Book extends Model { constructor (data) { super(data); - this.defineField('title', {type: 'String'}); + this.defineField('title', { type: 'String' }); this.populate(data); } } class User extends Model { constructor (data) { super(data); - this.defineField('name', {type: 'String'}); - this.defineField('book', {type: Book}); + this.defineField('name', { type: 'String' }); + this.defineField('book', { type: Book }); this.populate(data); } } - let user = new User({ + const user = new User({ name: 'foo', book: { title: 'bar' } }); - let count = user.scroll(({path}) => null); + const count = user.scroll(({ path }) => null); t.deepEqual(count, 3); }); @@ -399,20 +399,20 @@ test('method `filter` converts a model into serialized object with only keys tha class Book extends Model { constructor (data) { super(data); - this.defineField('title', {type: 'String'}); + this.defineField('title', { type: 'String' }); this.populate(data); } } class User extends Model { constructor (data) { super(data); - this.defineField('name', {type: 'String'}); - this.defineField('book', {type: Book}); - this.defineField('books', {type: [Book]}); + this.defineField('name', { type: 'String' }); + this.defineField('book', { type: Book }); + this.defineField('books', { type: [Book] }); this.populate(data); } } - let user = new User({ + const user = new User({ name: 'foo', book: { title: 'bar' @@ -424,17 +424,17 @@ test('method `filter` converts a model into serialized object with only keys tha } ] }); - let result = user.filter(({path, field}) => field.value !== 'foo'); + const result = user.filter(({ path, field }) => field.value !== 'foo'); t.deepEqual(result as any, { book: { - title: 'bar' + title: 'bar', }, books: [ null, { - title: 'bar' - } - ] + title: 'bar', + }, + ], }); }); @@ -442,42 +442,42 @@ test('method `reset` sets fields to their default values', (t) => { class Book extends Model { constructor (data) { super(data); - this.defineField('title', {defaultValue: 'foo'}); + this.defineField('title', { defaultValue: 'foo' }); this.populate(data); } } class User extends Model { constructor (data) { super(data); - this.defineField('name', {defaultValue: 'bar'}); - this.defineField('book', {type: Book, defaultValue: {}}); - this.defineField('books', {type: [Book], defaultValue: [null, {}]}); + this.defineField('name', { defaultValue: 'bar' }); + this.defineField('book', { type: Book, defaultValue: {} }); + this.defineField('books', { type: [Book], defaultValue: [null, {}] }); this.populate(data); } } - let user = new User({ + const user = new User({ name: 'fake', book: { - title: 'fake' + title: 'fake', }, books: [ { - title: 'fake' - } - ] + title: 'fake', + }, + ], }); user.reset(); t.deepEqual(user.serialize(), { name: 'bar', book: { - title: 'foo' + title: 'foo', }, books: [ null, { - title: 'foo' - } - ] + title: 'foo', + }, + ], }); }); @@ -485,20 +485,20 @@ test('method `fake` sets fields to their fake values', (t) => { class Book extends Model { constructor (data) { super(data); - this.defineField('title', {fakeValue: 'foo'}); + this.defineField('title', { fakeValue: 'foo' }); this.populate(data); } } class User extends Model { constructor (data = {}) { super(); - this.defineField('name', {fakeValue: 'bar'}); - this.defineField('book', {type: Book, defaultValue: {}}); - this.defineField('books', {type: [Book], defaultValue: [null, {}]}); + this.defineField('name', { fakeValue: 'bar' }); + this.defineField('book', { type: Book, defaultValue: {} }); + this.defineField('books', { type: [Book], defaultValue: [null, {}] }); this.populate(data); } } - let user = new User(); + const user = new User(); user.fake(); t.deepEqual(user.serialize(), { name: 'bar', @@ -518,20 +518,20 @@ test('method `clear` sets fields to `null`', (t) => { class Book extends Model { constructor (data) { super(data); - this.defineField('title', {defaultValue: 'foo'}); + this.defineField('title', { defaultValue: 'foo' }); this.populate(data); } } class User extends Model { constructor (data) { super(data); - this.defineField('name', {defaultValue: 'bar'}); - this.defineField('book', {type: Book, defaultValue: {}}); - this.defineField('books', {type: [Book], defaultValue: [null, {}]}); + this.defineField('name', { defaultValue: 'bar' }); + this.defineField('book', { type: Book, defaultValue: {} }); + this.defineField('books', { type: [Book], defaultValue: [null, {}] }); this.populate(data); } } - let user = new User({ + const user = new User({ name: 'fake', book: { title: 'fake' @@ -562,12 +562,12 @@ test('methods `commit()` and `rollback()` manage committed states', (t) => { constructor (data) { super(data); this.defineField('name'); - this.defineField('book', {type: Book}); - this.defineField('books', {type: [Book]}); + this.defineField('book', { type: Book }); + this.defineField('books', { type: [Book] }); this.populate(data); } } - let user = new User({ + const user = new User({ name: 'foo', book: { title: 'bar' @@ -585,13 +585,13 @@ test('methods `commit()` and `rollback()` manage committed states', (t) => { user.populate({ name: 'foo-new', book: { - title: 'bar-new' + title: 'bar-new', }, books: [ { - title: 'baz-new' - } - ] + title: 'baz-new', + }, + ], }); user.rollback(); t.is(user.getField('name').value, 'foo'); @@ -611,20 +611,20 @@ test('method `equals` returns `true` when the passing object looks the same', (t constructor (data) { super(data); this.defineField('name'); - this.defineField('book', {type: Book}); - this.defineField('books', {type: [Book]}); + this.defineField('book', { type: Book }); + this.defineField('books', { type: [Book] }); this.populate(data); } } - let data = { + const data = { name: 'foo', book: { - title: 'bar' + title: 'bar', }, books: [ null, { - title: 'baz' + title: 'baz', } ] }; @@ -648,32 +648,32 @@ test('method `isChanged` returns `true` if at least one field has been changed', constructor (data) { super(data); this.defineField('name'); - this.defineField('book', {type: Book}); - this.defineField('books', {type: [Book]}); + this.defineField('book', { type: Book }); + this.defineField('books', { type: [Book] }); this.populate(data); this.commit(); } } - let data = { + const data = { name: 'foo', book: { - title: 'bar' + title: 'bar', }, books: [ null, { - title: 'baz' - } - ] + title: 'baz', + }, + ], }; - let user0 = new User(data); - let user1 = new User(data); - let user2 = new User(data); - let user3 = new User(data); + const user0 = new User(data); + const user1 = new User(data); + const user2 = new User(data); + const user3 = new User(data); t.is(user0.isChanged(), false); user0.name = 'foo-new'; user1.book.title = 'bar-new'; - user2.books[0] = {title: 'baz-new'} as Book; + user2.books[0] = { title: 'baz-new' } as Book; user3.books[1].title = 'baz-new'; t.is(user0.isChanged(), true); t.is(user1.isChanged(), true); @@ -693,11 +693,11 @@ test('method `isNested` returns `true` if nested fields exist', (t) => { constructor (data = {}) { super(); this.defineField('name'); - this.defineField('books', {type: [Book]}); + this.defineField('books', { type: [Book] }); this.populate(data); } } - let user = new User(); + const user = new User(); t.is(user.isNested(), true); }); @@ -713,22 +713,22 @@ test('method `collectErrors` returns an array of field errors', (t) => { constructor (data) { super(data); this.defineField('name'); - this.defineField('book', {type: Book}); - this.defineField('books', {type: [Book]}); + this.defineField('book', { type: Book }); + this.defineField('books', { type: [Book] }); this.populate(data); } } - let user = new User({ + const user = new User({ book: {}, books: [{}] }); - user.getField('name').errors = [{message: 'foo'}]; - user.getField('book', 'title').errors = [{message: 'bar'}]; - user.getField('books', 0, 'title').errors = [{message: 'baz'}]; + user.getField('name').errors = [{ message: 'foo' }]; + user.getField('book', 'title').errors = [{ message: 'bar' }]; + user.getField('books', 0, 'title').errors = [{ message: 'baz' }]; t.deepEqual(user.collectErrors(), [ - {path: ['name'], errors: [{message: 'foo'}]}, - {path: ['book', 'title'], errors: [{message: 'bar'}]}, - {path: ['books', 0, 'title'], errors: [{message: 'baz'}]} + { path: ['name'], errors: [{ message: 'foo' }] }, + { path: ['book', 'title'], errors: [{ message: 'bar' }] }, + { path: ['books', 0, 'title'], errors: [{ message: 'baz' }] }, ]); }); @@ -744,24 +744,24 @@ test('method `applyErrors` sets fields errors', (t) => { constructor (data) { super(data); this.defineField('name'); - this.defineField('book', {type: Book}); - this.defineField('books', {type: [Book]}); + this.defineField('book', { type: Book }); + this.defineField('books', { type: [Book] }); this.populate(data); } } - let user = new User({ + const user = new User({ book: {}, books: [null, {}] }); user.applyErrors([ - {path: ['name'], errors: [{message: 'foo'}]}, - {path: ['book', 'title'], errors: [{message: 'bar'}]}, - {path: ['books', 1, 'title'], errors: [{message: 'baz'}]} + { path: ['name'], errors: [{ message: 'foo' }] }, + { path: ['book', 'title'], errors: [{ message: 'bar' }] }, + { path: ['books', 1, 'title'], errors: [{ message: 'baz' }] }, ]); - t.deepEqual(user.getField('name').errors, [{message: 'foo'}]); - t.deepEqual(user.getField('book', 'title').errors, [{message: 'bar'}]); - t.deepEqual(user.getField('books', 1, 'title').errors, [{message: 'baz'}]); + t.deepEqual(user.getField('name').errors, [{ message: 'foo' }]); + t.deepEqual(user.getField('book', 'title').errors, [{ message: 'bar' }]); + t.deepEqual(user.getField('books', 1, 'title').errors, [{ message: 'baz' }]); }); test('methods `isValid` and `hasErrors` tell if errors exist', async (t) => { @@ -776,74 +776,74 @@ test('methods `isValid` and `hasErrors` tell if errors exist', async (t) => { constructor (data?) { super(data); this.defineField('name'); - this.defineField('book', {type: Book}); - this.defineField('books', {type: [Book]}); + this.defineField('book', { type: Book }); + this.defineField('books', { type: [Book] }); this.populate(data); } } - let user0 = new User({ + const user0 = new User({ book: {}, books: [null, {}] }); - let user1 = new User(); + const user1 = new User(); t.is(user0.hasErrors(), false); t.is(user1.hasErrors(), false); t.is(user0.isValid(), true); t.is(user1.isValid(), true); user0.applyErrors([ - {path: ['books', 1, 'title'], errors: [{message: 'baz'}]} + { path: ['books', 1, 'title'], errors: [{ message: 'baz' }]}, ]); t.is(user0.hasErrors(), true); t.is(user0.isValid(), false); }); test('method `validate` validates fields and throws an error', async (t) => { - let validate = [ + const validate = [ { validator: 'presence', message: 'foo' }, { validator: 'presence', code: 999 }, ]; class Book extends Model { constructor (data) { super(data); - this.defineField('title', {validate}); + this.defineField('title', { validate }); this.populate(data); } } class User extends Model { constructor (data) { super(data); - this.defineField('name', {validate}); - this.defineField('book0', {type: Book, validate}); - this.defineField('books0', {type: [Book], validate}); - this.defineField('book1', {type: Book, validate}); - this.defineField('books1', {type: [Book], validate}); + this.defineField('name', { validate }); + this.defineField('book0', { type: Book, validate }); + this.defineField('books0', { type: [Book], validate }); + this.defineField('book1', { type: Book, validate }); + this.defineField('books1', { type: [Book], validate }); this.populate(data); } } - let user = new User({ + const user = new User({ book1: {}, books1: [{}] }); - let errors = [ - {validator: 'presence', message: 'foo', code: 422}, - {validator: 'presence', message: undefined, code: 999}, + const errors = [ + { validator: 'presence', message: 'foo', code: 422 }, + { validator: 'presence', message: undefined, code: 999 }, ]; await user.validate({quiet: true}); t.is(await user.validate().catch(() => false), false); t.deepEqual(user.collectErrors() as {}, [ - {path: ['name'], errors}, - {path: ['book0'], errors}, - {path: ['books0'], errors}, - {path: ['book1', 'title'], errors}, - {path: ['books1', 0, 'title'], errors}, + { path: ['name'], errors }, + { path: ['book0'], errors }, + { path: ['books0'], errors }, + { path: ['book1', 'title'], errors }, + { path: ['books1', 0, 'title'], errors }, ]); }); test('method `defineValidator` defines a custom field validator', async (t) => { - let validator = function (v) { + const validator = function (v) { return this.value === 'cool' && v === 'cool'; }; - let validate = [{ + const validate = [{ validator: 'coolness', message: 'foo' }]; @@ -851,7 +851,7 @@ test('method `defineValidator` defines a custom field validator', async (t) => { constructor (data) { super(data); this.defineValidator('coolness', validator); - this.defineField('title', {validate}); + this.defineField('title', { validate }); this.populate(data); } } @@ -859,15 +859,15 @@ test('method `defineValidator` defines a custom field validator', async (t) => { constructor (data) { super(data); this.defineValidator('coolness', validator); - this.defineField('name', {validate}); - this.defineField('book', {type: Book, validate}); + this.defineField('name', { validate }); + this.defineField('book', { type: Book, validate }); this.populate(data); } } - let user = new User({ + const user = new User({ book: {} }); - let errors = [{validator: 'coolness', message: 'foo', code: 422}]; + const errors = [{ validator: 'coolness', message: 'foo', code: 422 }]; await user.validate({quiet: true}); t.deepEqual(user.collectErrors() as {}, [ {path: ['name'], errors}, @@ -877,15 +877,15 @@ test('method `defineValidator` defines a custom field validator', async (t) => { }); test('method `failFast` configures validator to stop validating field on the first error', async (t) => { - let validate = [ - {validator: 'presence', message: 'foo'}, - {validator: 'presence', message: 'foo'} + const validate = [ + { validator: 'presence', message: 'foo' }, + { validator: 'presence', message: 'foo' }, ]; class Book extends Model { constructor (data) { super(data); this.failFast(); - this.defineField('title', {validate}); + this.defineField('title', { validate }); this.populate(data); } } @@ -893,16 +893,16 @@ test('method `failFast` configures validator to stop validating field on the fir constructor (data) { super(data); this.failFast(); - this.defineField('name', {validate}); - this.defineField('book', {type: Book}); + this.defineField('name', { validate }); + this.defineField('book', { type: Book }); this.populate(data); } } - let user = new User({ + const user = new User({ book: {} }); - let errors = [{validator: 'presence', message: 'foo', code: 422}]; - await user.validate({quiet: true}); + const errors = [{ validator: 'presence', message: 'foo', code: 422 }]; + await user.validate({ quiet: true }); t.is(user.getField('name').errors.length, 1); t.is(user.getField('book', 'title').errors.length, 1); }); @@ -919,19 +919,19 @@ test('method `invalidate` clears fields errors', async (t) => { constructor (data) { super(data); this.defineField('name'); - this.defineField('book', {type: Book}); - this.defineField('books', {type: [Book]}); + this.defineField('book', { type: Book }); + this.defineField('books', { type: [Book] }); this.populate(data); } } - let user = new User({ + const user = new User({ book: {}, books: [null, {}] }); user.applyErrors([ - {path: ['name'], errors: [{message: 'foo'}]}, - {path: ['book', 'title'], errors: [{message: 'bar'}]}, - {path: ['books', 1, 'title'], errors: [{message: 'baz'}]} + { path: ['name'], errors: [{ message: 'foo'}] }, + { path: ['book', 'title'], errors: [{ message: 'bar'}] }, + { path: ['books', 1, 'title'], errors: [{ message: 'baz'}] }, ]); user.invalidate(); t.deepEqual(user.getField('name').errors, []); @@ -956,14 +956,14 @@ test('method `clone` returns an exact copy of the original', (t) => { constructor (data?) { super(data); this.defineField('name'); - this.defineField('book', {type: Book}); - this.defineField('books', {type: [Book]}); + this.defineField('book', { type: Book }); + this.defineField('books', { type: [Book] }); this.populate(data); this.commit(); } } - let parent = new Book(); - let user = new User({ + const parent = new Book(); + const user = new User({ parent, // fake parent name: 'foo', book: { @@ -976,8 +976,8 @@ test('method `clone` returns an exact copy of the original', (t) => { } ] }); - let clone0 = user.clone(); - let clone1 = user.clone({book: {title: 'foo'}}); + const clone0 = user.clone(); + const clone1 = user.clone({book: { title: 'foo' }}); t.is(clone0 !== user, true); t.is(clone0.equals(user), true); t.is(clone0.book.parent, clone0); @@ -987,7 +987,7 @@ test('method `clone` returns an exact copy of the original', (t) => { }); test('method `handle` handles field-related errors', async (t) => { - let handle = [{ + const handle = [{ handler: 'block', message: '%{foo}', block: async () => true, @@ -996,7 +996,7 @@ test('method `handle` handles field-related errors', async (t) => { class Book extends Model { constructor (data) { super(data); - this.defineField('title', {handle}); + this.defineField('title', { handle }); this.populate(data); } } @@ -1010,41 +1010,41 @@ test('method `handle` handles field-related errors', async (t) => { class User extends Model { constructor (data) { super(data); - this.defineField('name', {handle}); - this.defineField('book0', {type: Book, handle}); - this.defineField('books0', {type: [Book], handle}); - this.defineField('book1', {type: Book}); - this.defineField('books1', {type: [Book]}); - this.defineField('country', {type: [Country]}); + this.defineField('name', { handle }); + this.defineField('book0', { type: Book, handle }); + this.defineField('books0', { type: [Book], handle }); + this.defineField('book1', { type: Book }); + this.defineField('books1', { type: [Book] }); + this.defineField('country', { type: [Country] }); this.populate(data); } } - let user = new User({ + const user = new User({ book1: {}, books1: [{}], country: {} }); - let problem0 = new Error(); - let problem1 = new Error() as any; problem1.code = 422; - let errors = [{handler: 'block', message: 'foo', code: 422}]; - t.is(await user.handle(problem0, {quiet: false}).catch(() => false), false); + const problem0 = new Error(); + const problem1 = new Error() as any; problem1.code = 422; + const errors = [{ handler: 'block', message: 'foo', code: 422 }]; + t.is(await user.handle(problem0, { quiet: false }).catch(() => false), false); t.is(await user.handle(problem0).then(() => true), true); - t.is(await user.handle(problem1, {quiet: false}).then(() => true), true); + t.is(await user.handle(problem1, { quiet: false }).then(() => true), true); await user.handle(problem0); t.deepEqual(user.collectErrors() as {}, [ - {path: ['name'], errors}, - {path: ['book0'], errors}, - {path: ['books0'], errors}, - {path: ['book1', 'title'], errors}, - {path: ['books1', 0, 'title'], errors}, + { path: ['name'], errors }, + { path: ['book0'], errors }, + { path: ['books0'], errors }, + { path: ['book1', 'title'], errors }, + { path: ['books1', 0, 'title'], errors }, ]); }); test('method `defineHandler` defines a custom field handler', async (t) => { - let handler = function (e) { + const handler = function (e) { return e.message === 'cool'; }; - let handle = [{ + const handle = [{ handler: 'coolness', message: '%{foo}', foo: 'foo' @@ -1053,7 +1053,7 @@ test('method `defineHandler` defines a custom field handler', async (t) => { constructor (data) { super(data); this.defineHandler('coolness', handler); - this.defineField('title', {handle}); + this.defineField('title', { handle }); this.populate(data); } } @@ -1061,23 +1061,23 @@ test('method `defineHandler` defines a custom field handler', async (t) => { constructor (data) { super(data); this.defineHandler('coolness', handler); - this.defineField('name', {handle}); - this.defineField('book', {type: Book}); - this.defineField('books', {type: [Book]}); + this.defineField('name', { handle }); + this.defineField('book', { type: Book }); + this.defineField('books', { type: [Book] }); this.populate(data); } } - let user = new User({ + const user = new User({ book: {}, books: [{}] }); - let problem = new Error('cool'); - let errors = [{handler: 'coolness', message: 'foo', code: 422}]; + const problem = new Error('cool'); + const errors = [{ handler: 'coolness', message: 'foo', code: 422 }]; await user.handle(problem); t.deepEqual(user.collectErrors() as {}, [ - {path: ['name'], errors}, - {path: ['book', 'title'], errors}, - {path: ['books', 0, 'title'], errors}, + { path: ['name'], errors }, + { path: ['book', 'title'], errors }, + { path: ['books', 0, 'title'], errors }, ]); }); @@ -1086,18 +1086,18 @@ test('property `enumerable` handles field visibility', (t) => { name: string; constructor (data) { super(data); - this.defineField('name', {enumerable: true}); + this.defineField('name', { enumerable: true }); } } class User1 extends Model { name: string; constructor (data) { super(data); - this.defineField('name', {enumerable: false}); + this.defineField('name', { enumerable: false }); } } - let user0 = new User0({}); - let user1 = new User1({}); + const user0 = new User0({}); + const user1 = new User1({}); t.deepEqual(Object.keys(user0), ['name']); t.deepEqual(Object.keys(user1), []); }); diff --git a/tslint.json b/tslint.json index 67a4e16..88f5b48 100644 --- a/tslint.json +++ b/tslint.json @@ -1,5 +1,5 @@ { - "jsRules": { + "rules": { "class-name": true, "comment-format": [ true, @@ -9,71 +9,30 @@ true, "spaces" ], - "no-duplicate-variable": true, - "no-eval": true, - "no-trailing-whitespace": true, - "no-unsafe-finally": true, "one-line": [ true, "check-open-brace", "check-whitespace" ], + "no-var-keyword": true, "quotemark": [ true, - "double" + "single", + "avoid-escape" ], "semicolon": [ true, - "always" - ], - "triple-equals": [ - true, - "allow-null-check" - ], - "variable-name": [ - true, - "ban-keywords" + "always", + "ignore-bound-class-methods" ], "whitespace": [ true, "check-branch", "check-decl", "check-operator", + "check-module", "check-separator", "check-type" - ] - }, - "rules": { - "class-name": true, - "comment-format": [ - true, - "check-space" - ], - "indent": [ - true, - "spaces" - ], - "no-eval": true, - "no-internal-module": true, - "no-trailing-whitespace": true, - "no-unsafe-finally": true, - "no-var-keyword": true, - "one-line": [ - true, - "check-open-brace", - "check-whitespace" - ], - "quotemark": [ - true, - "single" - ], - "semicolon": [ - true, - "always" - ], - "triple-equals": [ - true, - "allow-null-check" ], "typedef-whitespace": [ true, @@ -83,19 +42,19 @@ "parameter": "nospace", "property-declaration": "nospace", "variable-declaration": "nospace" + }, + { + "call-signature": "onespace", + "index-signature": "onespace", + "parameter": "onespace", + "property-declaration": "onespace", + "variable-declaration": "onespace" } ], - "variable-name": [ - true, - "ban-keywords" - ], - "whitespace": [ - true, - "check-branch", - "check-decl", - "check-operator", - "check-separator", - "check-type" - ] + "no-internal-module": true, + "no-trailing-whitespace": true, + "no-null-keyword": false, + "prefer-const": true, + "jsdoc-format": true } } From b6025bb4badd7a6a45135ee0a9b7ef8d600ad845 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 29 Oct 2017 14:22:28 +0100 Subject: [PATCH 195/219] version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1d51c29..095b5d6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.25.0", + "version": "1.26.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", From e0ac606670cc1a7ff81fd74165cee1d8b379ed09 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 29 Oct 2017 15:44:18 +0100 Subject: [PATCH 196/219] tests refactoring, model recipe --- README.md | 54 ++++++++------ dist/src/fields.js | 2 +- dist/src/fields.js.map | 2 +- dist/tests/models.js | 40 +++-------- dist/tests/models.js.map | 2 +- package.json | 2 +- src/fields.ts | 2 +- src/models.ts | 2 +- tests/models.ts | 150 ++++++++++++++++----------------------- 9 files changed, 107 insertions(+), 149 deletions(-) diff --git a/README.md b/README.md index 9ae07b5..5b7285c 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ class User extends Model { // usage example let model = new User({ - name: 'John Smith' + 'name': 'John Smith' }); model.name; // => 'John Smith' ``` @@ -86,8 +86,8 @@ import { Model } from 'rawmodel'; class User extends Model { public name: string; // typescript property definition for field `name` - public constructor() { - super(); + public constructor(data = {}) { + super(data); this.defineField('name'); // definition of the `name` field } } @@ -119,8 +119,8 @@ import { Model } from 'rawmodel'; class Book extends Model { public title: string; - public constructor() { - super(); + public constructor(data = {}) { + super(data); this.defineField('title'); } } @@ -128,8 +128,8 @@ class Book extends Model { class User extends Model { public book: Book; - public constructor() { - super(); + public constructor(data = {}) { + super(data); this.defineField('book', { type: Book, }); @@ -192,7 +192,7 @@ class User extends Model { public id: string; public name: string; - public constructor (data = {}) { + public constructor(data = {}) { super(data); this.defineField('id', { populatable: ['internal'], // list population strategy names @@ -204,8 +204,8 @@ class User extends Model { } let data = { - id: 100, - name: 'John Smith' + 'id': 100, + 'name': 'John Smith' }; let user = new User(); user.populate(data); // -> { "id": 100, "name": "John Smith" } @@ -219,7 +219,7 @@ Model provides useful methods for object serialization and filtering (check the ```js let user = new User({ - name: 'John Smith', // initial value + 'name': 'John Smith', // initial value }); user.scroll(function (field) { // argument is an instance of a field @@ -236,7 +236,7 @@ class User extends Model { public id: string; public name: string; - public constructor (data = {}) { + public constructor(data = {}) { super(data); this.defineField('id', { serializable: ['output'], // list serialization strategy names @@ -267,8 +267,8 @@ The example below explains how to setup and use these features. class User extends Model { public name: string; - public constructor () { - super(); + public constructor(data = {}) { + super(data); this.defineField('name'); } } @@ -290,7 +290,7 @@ RawModel provides a simple mechanism for validating fields. class User extends Model { public name: string; - public constructor (data = {}) { + public constructor(data = {}) { super(data); this.defineField('name', { @@ -300,7 +300,7 @@ class User extends Model { message: '%{it} must be present', // [optional] error message code: 422, // [optional] error code condition () { return true }, // [optional] condition which switches the validation on/off - it: 'it' // [optional] custom variable for the `message` + it: 'it', // [optional] custom variable for the `message` }, ], }); @@ -319,7 +319,7 @@ It already includes some useful built-in validators but it's super simple to def class User extends Model { public name: string; - constructor (data = {}) { + constructor(data = {}) { super(data); this.defineValidator('coolness', function (v) { @@ -346,7 +346,7 @@ RawModel provides a mechanism for handling field-related errors. The logic is al class User extends Model { public name: string; - public constructor (data = {}) { + public constructor(data = {}) { super(data); this.defineField('name', { @@ -379,8 +379,8 @@ RawModel already includes some useful built-in handlers but it's super simple to class User extends Model { public name: string; - public constructor () { - super(); + public constructor(data = {}) { + super(data); this.defineHandler('coolness', function (e) { return e.message === 'cool'; @@ -429,16 +429,21 @@ graphql(schema, '{ hello }', root).then((response) => { ### Model Class -**Model()** +**Model({ parent, ...data })** > Abstract class which represents a strongly-typed JavaScript object. +| Option | Type | Required | Default | Description +|--------|------|----------|---------|------------ +| parent | Model | Only when used as a submodel | - | Parent model instance. +| data | Object | No | - | Data for populating model fields. + ```js class User extends Model { public name: string; - public constructor () { - super(); // initializing the Model + public constructor({ parent, ...data } = {}) { + super({ parent }); // initializing the Model this.defineField('name', { type: 'String', // [optional] field type casting @@ -469,6 +474,9 @@ class User extends Model { defaultValue: 'Noname', // [optional] field default value (value or function) fakeValue: 'Noname', // [optional] field fake value (value or function) }); + + this.populate(data); // [optional] a good practice to enable data population from model constructor + this.commit(); // [optional] a good practice to commit default data } } ``` diff --git a/dist/src/fields.js b/dist/src/fields.js index 01ada23..d615b22 100644 --- a/dist/src/fields.js +++ b/dist/src/fields.js @@ -162,7 +162,7 @@ var Field = (function () { } if (this.isNested()) { var Klass_1 = typeable_1.isArray(this.type) ? this.type[0] : this.type; - var toModel = function (d) { return new Klass_1({ parent: _this.owner }).populate(utils_1.merge({}, d)); }; + var toModel = function (d) { return new Klass_1(utils_1.merge({ parent: _this.owner }, d)).populate(d); }; converter = typeable_1.isArray(this.type) ? [toModel] : toModel; } return typeable_1.cast(data, converter); diff --git a/dist/src/fields.js.map b/dist/src/fields.js.map index e77e083..5096e65 100644 --- a/dist/src/fields.js.map +++ b/dist/src/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/models.js b/dist/tests/models.js index 1cbc5b5..43c478f 100644 --- a/dist/tests/models.js +++ b/dist/tests/models.js @@ -85,8 +85,9 @@ ava_1["default"]('method `defineType` defines a custom data type', function (t) ava_1["default"]('method `populate` deeply assignes data', function (t) { var Book = (function (_super) { __extends(Book, _super); - function Book() { - var _this = _super.call(this) || this; + function Book(data) { + if (data === void 0) { data = {}; } + var _this = _super.call(this, data) || this; _this.defineField('id', { type: 'Integer', populatable: ['output'] }); _this.defineField('title', { type: 'String' }); _this.defineField('description', { type: 'String', populatable: ['input'] }); @@ -96,14 +97,16 @@ ava_1["default"]('method `populate` deeply assignes data', function (t) { }(src_1.Model)); var User = (function (_super) { __extends(User, _super); - function User() { - var _this = _super.call(this) || this; + function User(data) { + if (data === void 0) { data = {}; } + var _this = _super.call(this, data) || this; _this.defineField('id', { type: 'Integer', populatable: ['output'] }); _this.defineField('name', { type: 'String' }); _this.defineField('email', { type: 'String', populatable: ['input'] }); _this.defineField('book0', { type: Book, populatable: ['output'] }); _this.defineField('book1', { type: Book }); _this.defineField('books', { type: [Book], populatable: ['input'] }); + _this.populate(data); return _this; } return User; @@ -169,7 +172,6 @@ ava_1["default"]('property `parent` holds an instance of a parent model', functi function Book(data) { var _this = _super.call(this, data) || this; _this.defineField('title', { type: 'String' }); - _this.populate(data); return _this; } return Book; @@ -208,7 +210,6 @@ ava_1["default"]('property `root` return the first model in a tree of nested mod function Book(data) { var _this = _super.call(this, data) || this; _this.defineField('title'); - _this.populate(data); return _this; } return Book; @@ -237,7 +238,6 @@ ava_1["default"]('method `getField` returns an instance of a field at path', fun function Book(data) { var _this = _super.call(this, data) || this; _this.defineField('title', { type: 'String' }); - _this.populate(data); return _this; } return Book; @@ -281,9 +281,8 @@ ava_1["default"]('method `hasField` returns `true` if the field exists', functio __extends(User, _super); function User(data) { if (data === void 0) { data = {}; } - var _this = _super.call(this) || this; + var _this = _super.call(this, data) || this; _this.defineField('name', { type: 'String' }); - _this.populate(data); return _this; } return User; @@ -299,7 +298,6 @@ ava_1["default"]('method `serialize` converts model into a serialized data objec var _this = _super.call(this, data) || this; _this.defineField('title', { type: 'String' }); _this.defineField('description', { serializable: ['output'] }); - _this.populate(data); return _this; } return Book; @@ -366,7 +364,6 @@ ava_1["default"]('method `flatten` returns an array of fields', function (t) { r function Book(data) { var _this = _super.call(this, data) || this; _this.defineField('title', { type: 'String' }); - _this.populate(data); return _this; } return Book; @@ -414,7 +411,6 @@ ava_1["default"]('method `collect` returns an array of results', function (t) { function Book(data) { var _this = _super.call(this, data) || this; _this.defineField('title', { type: 'String' }); - _this.populate(data); return _this; } return Book; @@ -452,7 +448,6 @@ ava_1["default"]('method `scroll` runs the provided handler on each field', func function Book(data) { var _this = _super.call(this, data) || this; _this.defineField('title', { type: 'String' }); - _this.populate(data); return _this; } return Book; @@ -486,7 +481,6 @@ ava_1["default"]('method `filter` converts a model into serialized object with o function Book(data) { var _this = _super.call(this, data) || this; _this.defineField('title', { type: 'String' }); - _this.populate(data); return _this; } return Book; @@ -537,7 +531,6 @@ ava_1["default"]('method `reset` sets fields to their default values', function function Book(data) { var _this = _super.call(this, data) || this; _this.defineField('title', { defaultValue: 'foo' }); - _this.populate(data); return _this; } return Book; @@ -585,7 +578,6 @@ ava_1["default"]('method `fake` sets fields to their fake values', function (t) function Book(data) { var _this = _super.call(this, data) || this; _this.defineField('title', { fakeValue: 'foo' }); - _this.populate(data); return _this; } return Book; @@ -624,7 +616,6 @@ ava_1["default"]('method `clear` sets fields to `null`', function (t) { function Book(data) { var _this = _super.call(this, data) || this; _this.defineField('title', { defaultValue: 'foo' }); - _this.populate(data); return _this; } return Book; @@ -665,7 +656,6 @@ ava_1["default"]('methods `commit()` and `rollback()` manage committed states', function Book(data) { var _this = _super.call(this, data) || this; _this.defineField('title'); - _this.populate(data); return _this; } return Book; @@ -719,7 +709,6 @@ ava_1["default"]('method `equals` returns `true` when the passing object looks t function Book(data) { var _this = _super.call(this, data) || this; _this.defineField('title'); - _this.populate(data); return _this; } return Book; @@ -756,8 +745,6 @@ ava_1["default"]('method `isChanged` returns `true` if at least one field has be function Book(data) { var _this = _super.call(this, data) || this; _this.defineField('title'); - _this.populate(data); - _this.commit(); return _this; } return Book; @@ -807,7 +794,6 @@ ava_1["default"]('method `isNested` returns `true` if nested fields exist', func function Book(data) { var _this = _super.call(this, data) || this; _this.defineField('title'); - _this.populate(data); return _this; } return Book; @@ -833,7 +819,6 @@ ava_1["default"]('method `collectErrors` returns an array of field errors', func function Book(data) { var _this = _super.call(this, data) || this; _this.defineField('title'); - _this.populate(data); return _this; } return Book; @@ -869,7 +854,6 @@ ava_1["default"]('method `applyErrors` sets fields errors', function (t) { function Book(data) { var _this = _super.call(this, data) || this; _this.defineField('title'); - _this.populate(data); return _this; } return Book; @@ -907,7 +891,6 @@ ava_1["default"]('methods `isValid` and `hasErrors` tell if errors exist', funct function Book(data) { var _this = _super.call(this, data) || this; _this.defineField('title'); - _this.populate(data); return _this; } return Book; @@ -955,7 +938,6 @@ ava_1["default"]('method `validate` validates fields and throws an error', funct function Book(data) { var _this = _super.call(this, data) || this; _this.defineField('title', { validate: validate }); - _this.populate(data); return _this; } return Book; @@ -1018,7 +1000,6 @@ ava_1["default"]('method `defineValidator` defines a custom field validator', fu var _this = _super.call(this, data) || this; _this.defineValidator('coolness', validator); _this.defineField('title', { validate: validate }); - _this.populate(data); return _this; } return Book; @@ -1066,7 +1047,6 @@ ava_1["default"]('method `failFast` configures validator to stop validating fiel var _this = _super.call(this, data) || this; _this.failFast(); _this.defineField('title', { validate: validate }); - _this.populate(data); return _this; } return Book; @@ -1104,7 +1084,6 @@ ava_1["default"]('method `invalidate` clears fields errors', function (t) { retu function Book(data) { var _this = _super.call(this, data) || this; _this.defineField('title'); - _this.populate(data); return _this; } return Book; @@ -1143,7 +1122,6 @@ ava_1["default"]('method `clone` returns an exact copy of the original', functio function Book(data) { var _this = _super.call(this, data) || this; _this.defineField('title'); - _this.populate(data); _this.commit(); return _this; } @@ -1204,7 +1182,6 @@ ava_1["default"]('method `handle` handles field-related errors', function (t) { function Book(data) { var _this = _super.call(this, data) || this; _this.defineField('title', { handle: handle }); - _this.populate(data); return _this; } return Book; @@ -1288,7 +1265,6 @@ ava_1["default"]('method `defineHandler` defines a custom field handler', functi var _this = _super.call(this, data) || this; _this.defineHandler('coolness', handler); _this.defineField('title', { handle: handle }); - _this.populate(data); return _this; } return Book; diff --git a/dist/tests/models.js.map b/dist/tests/models.js.map index 6cad61d..cf7d601 100644 --- a/dist/tests/models.js.map +++ b/dist/tests/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 095b5d6..d8dbbae 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.26.0", + "version": "1.27.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", diff --git a/src/fields.ts b/src/fields.ts index eab633b..0961441 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -222,7 +222,7 @@ export class Field { if (this.isNested()) { const Klass = isArray(this.type) ? this.type[0] : this.type; - const toModel = (d) => new Klass({ parent: this.owner }).populate(merge({}, d)); + const toModel = (d) => new Klass(merge({ parent: this.owner }, d)).populate(d); converter = isArray(this.type) ? [toModel] : toModel; } diff --git a/src/models.ts b/src/models.ts index 0c42b95..c326a42 100644 --- a/src/models.ts +++ b/src/models.ts @@ -21,7 +21,7 @@ export interface FieldErrorRef { } /** - * Model recipe interface. + * Model recipe interface (can be used also for pasing data). */ export interface ModelRecipe { parent?: Model; diff --git a/tests/models.ts b/tests/models.ts index f2bcfa3..df9cbd0 100644 --- a/tests/models.ts +++ b/tests/models.ts @@ -5,7 +5,7 @@ import { Model, Field } from '../src'; test('method `defineField` initializes nullified enumerable property', (t) => { const user = new class User extends Model { name: string; - constructor () { + constructor() { super(); this.defineField('name'); } @@ -22,7 +22,7 @@ test('method `defineType` defines a custom data type', (t) => { const user = new class User extends Model { name0: string; name1: string[]; - constructor () { + constructor() { super(); this.defineType('cool', (v) => `${v}-cool`); this.defineField('name0', { type: 'cool' }); @@ -40,8 +40,8 @@ test('method `populate` deeply assignes data', (t) => { id: number; title: string; description: string; - constructor () { - super(); + constructor(data = {}) { + super(data); this.defineField('id', { type: 'Integer', populatable: ['output'] }); this.defineField('title', { type: 'String'}); this.defineField('description', { type: 'String', populatable: ['input'] }); @@ -54,14 +54,15 @@ test('method `populate` deeply assignes data', (t) => { book0: Book; book1: Book; books: Book[]; - constructor () { - super(); + constructor(data = {}) { + super(data); this.defineField('id', { type: 'Integer', populatable: ['output'] }); this.defineField('name', { type: 'String'}); this.defineField('email', { type: 'String', populatable: ['input'] }); this.defineField('book0', { type: Book, populatable: ['output'] }); this.defineField('book1', { type: Book}); this.defineField('books', { type: [Book], populatable: ['input'] }); + this.populate(data); } } const data = { @@ -123,17 +124,16 @@ test('method `populate` deeply assignes data', (t) => { test('property `parent` holds an instance of a parent model', (t) => { class Book extends Model { title: string; - constructor (data) { + constructor(data) { super(data); this.defineField('title', { type: 'String' }); - this.populate(data); } } class User extends Model { name: string; book: Book; books: Book[]; - constructor (data) { + constructor(data) { super(data); this.defineField('name', { type: 'String' }); this.defineField('book', { type: Book }); @@ -161,15 +161,14 @@ test('property `parent` holds an instance of a parent model', (t) => { test('property `root` return the first model in a tree of nested models', (t) => { class Book extends Model { title: string; - constructor (data) { + constructor(data) { super(data); this.defineField('title'); - this.populate(data); } } class User extends Model { book: Book; - constructor (data) { + constructor(data) { super(data); this.defineField('book', { type: Book }); this.populate(data); @@ -186,14 +185,13 @@ test('property `root` return the first model in a tree of nested models', (t) => test('method `getField` returns an instance of a field at path', (t) => { class Book extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('title', { type: 'String' }); - this.populate(data); } } class User extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('name', { type: 'String' }); this.defineField('book', { type: Book }); @@ -226,10 +224,9 @@ test('method `getField` returns an instance of a field at path', (t) => { test('method `hasField` returns `true` if the field exists', (t) => { class User extends Model { - constructor (data = {}) { - super(); + constructor(data = {}) { + super(data); this.defineField('name', { type: 'String' }); - this.populate(data); } } const user = new User(); @@ -239,15 +236,14 @@ test('method `hasField` returns `true` if the field exists', (t) => { test('method `serialize` converts model into a serialized data object', (t) => { class Book extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('title', { type: 'String' }); this.defineField('description', { serializable: ['output'] }); // only for these strategies - this.populate(data); } } class User extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('id', { type: (v) => new Object(v), serializable: [] }); // never this.defineField('name', { type: 'String', serializable: null }); @@ -300,14 +296,13 @@ test('method `serialize` converts model into a serialized data object', (t) => { test('method `flatten` returns an array of fields', async (t) => { class Book extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('title', { type: 'String' }); - this.populate(data); } } class User extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('name', { type: 'String' }); this.defineField('book', { type: Book }); @@ -341,14 +336,13 @@ test('method `flatten` returns an array of fields', async (t) => { test('method `collect` returns an array of results', (t) => { class Book extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('title', { type: 'String' }); - this.populate(data); } } class User extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('name', { type: 'String' }); this.defineField('book', { type: Book }); @@ -371,14 +365,13 @@ test('method `collect` returns an array of results', (t) => { test('method `scroll` runs the provided handler on each field', (t) => { class Book extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('title', { type: 'String' }); - this.populate(data); } } class User extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('name', { type: 'String' }); this.defineField('book', { type: Book }); @@ -397,14 +390,13 @@ test('method `scroll` runs the provided handler on each field', (t) => { test('method `filter` converts a model into serialized object with only keys that pass the test', (t) => { class Book extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('title', { type: 'String' }); - this.populate(data); } } class User extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('name', { type: 'String' }); this.defineField('book', { type: Book }); @@ -440,14 +432,13 @@ test('method `filter` converts a model into serialized object with only keys tha test('method `reset` sets fields to their default values', (t) => { class Book extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('title', { defaultValue: 'foo' }); - this.populate(data); } } class User extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('name', { defaultValue: 'bar' }); this.defineField('book', { type: Book, defaultValue: {} }); @@ -483,14 +474,13 @@ test('method `reset` sets fields to their default values', (t) => { test('method `fake` sets fields to their fake values', (t) => { class Book extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('title', { fakeValue: 'foo' }); - this.populate(data); } } class User extends Model { - constructor (data = {}) { + constructor(data = {}) { super(); this.defineField('name', { fakeValue: 'bar' }); this.defineField('book', { type: Book, defaultValue: {} }); @@ -516,14 +506,13 @@ test('method `fake` sets fields to their fake values', (t) => { test('method `clear` sets fields to `null`', (t) => { class Book extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('title', { defaultValue: 'foo' }); - this.populate(data); } } class User extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('name', { defaultValue: 'bar' }); this.defineField('book', { type: Book, defaultValue: {} }); @@ -552,14 +541,13 @@ test('method `clear` sets fields to `null`', (t) => { test('methods `commit()` and `rollback()` manage committed states', (t) => { class Book extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('title'); - this.populate(data); } } class User extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('name'); this.defineField('book', { type: Book }); @@ -601,14 +589,13 @@ test('methods `commit()` and `rollback()` manage committed states', (t) => { test('method `equals` returns `true` when the passing object looks the same', (t) => { class Book extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('title'); - this.populate(data); } } class User extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('name'); this.defineField('book', { type: Book }); @@ -634,18 +621,16 @@ test('method `equals` returns `true` when the passing object looks the same', (t test('method `isChanged` returns `true` if at least one field has been changed', (t) => { class Book extends Model { title: string; - constructor (data) { + constructor(data) { super(data); this.defineField('title'); - this.populate(data); - this.commit(); } } class User extends Model { name: string; book: Book; books: Book[]; - constructor (data) { + constructor(data) { super(data); this.defineField('name'); this.defineField('book', { type: Book }); @@ -683,14 +668,13 @@ test('method `isChanged` returns `true` if at least one field has been changed', test('method `isNested` returns `true` if nested fields exist', (t) => { class Book extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('title'); - this.populate(data); } } class User extends Model { - constructor (data = {}) { + constructor(data = {}) { super(); this.defineField('name'); this.defineField('books', { type: [Book] }); @@ -703,14 +687,13 @@ test('method `isNested` returns `true` if nested fields exist', (t) => { test('method `collectErrors` returns an array of field errors', (t) => { class Book extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('title'); - this.populate(data); } } class User extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('name'); this.defineField('book', { type: Book }); @@ -734,14 +717,13 @@ test('method `collectErrors` returns an array of field errors', (t) => { test('method `applyErrors` sets fields errors', (t) => { class Book extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('title'); - this.populate(data); } } class User extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('name'); this.defineField('book', { type: Book }); @@ -766,14 +748,13 @@ test('method `applyErrors` sets fields errors', (t) => { test('methods `isValid` and `hasErrors` tell if errors exist', async (t) => { class Book extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('title'); - this.populate(data); } } class User extends Model { - constructor (data?) { + constructor(data?) { super(data); this.defineField('name'); this.defineField('book', { type: Book }); @@ -803,14 +784,13 @@ test('method `validate` validates fields and throws an error', async (t) => { { validator: 'presence', code: 999 }, ]; class Book extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('title', { validate }); - this.populate(data); } } class User extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('name', { validate }); this.defineField('book0', { type: Book, validate }); @@ -848,15 +828,14 @@ test('method `defineValidator` defines a custom field validator', async (t) => { message: 'foo' }]; class Book extends Model { - constructor (data) { + constructor(data) { super(data); this.defineValidator('coolness', validator); this.defineField('title', { validate }); - this.populate(data); } } class User extends Model { - constructor (data) { + constructor(data) { super(data); this.defineValidator('coolness', validator); this.defineField('name', { validate }); @@ -882,15 +861,14 @@ test('method `failFast` configures validator to stop validating field on the fir { validator: 'presence', message: 'foo' }, ]; class Book extends Model { - constructor (data) { + constructor(data) { super(data); this.failFast(); this.defineField('title', { validate }); - this.populate(data); } } class User extends Model { - constructor (data) { + constructor(data) { super(data); this.failFast(); this.defineField('name', { validate }); @@ -909,14 +887,13 @@ test('method `failFast` configures validator to stop validating field on the fir test('method `invalidate` clears fields errors', async (t) => { class Book extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('title'); - this.populate(data); } } class User extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('name'); this.defineField('book', { type: Book }); @@ -942,10 +919,9 @@ test('method `invalidate` clears fields errors', async (t) => { test('method `clone` returns an exact copy of the original', (t) => { class Book extends Model { title: string; - constructor (data?) { + constructor(data?) { super(data); this.defineField('title'); - this.populate(data); this.commit(); } } @@ -953,7 +929,7 @@ test('method `clone` returns an exact copy of the original', (t) => { name: string; book: Book; books: Book[]; - constructor (data?) { + constructor(data?) { super(data); this.defineField('name'); this.defineField('book', { type: Book }); @@ -994,21 +970,20 @@ test('method `handle` handles field-related errors', async (t) => { foo: 'foo' }]; class Book extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('title', { handle }); - this.populate(data); } } class Country extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('code'); // this field is nested and without handler this.populate(data); } } class User extends Model { - constructor (data) { + constructor(data) { super(data); this.defineField('name', { handle }); this.defineField('book0', { type: Book, handle }); @@ -1050,15 +1025,14 @@ test('method `defineHandler` defines a custom field handler', async (t) => { foo: 'foo' }]; class Book extends Model { - constructor (data) { + constructor(data) { super(data); this.defineHandler('coolness', handler); this.defineField('title', { handle }); - this.populate(data); } } class User extends Model { - constructor (data) { + constructor(data) { super(data); this.defineHandler('coolness', handler); this.defineField('name', { handle }); @@ -1084,14 +1058,14 @@ test('method `defineHandler` defines a custom field handler', async (t) => { test('property `enumerable` handles field visibility', (t) => { class User0 extends Model { name: string; - constructor (data) { + constructor(data) { super(data); this.defineField('name', { enumerable: true }); } } class User1 extends Model { name: string; - constructor (data) { + constructor(data) { super(data); this.defineField('name', { enumerable: false }); } From 9d5a528143f95c65317c97e7d87274022ed3309e Mon Sep 17 00:00:00 2001 From: xpeper Date: Mon, 4 Dec 2017 19:36:26 +0100 Subject: [PATCH 197/219] dependencies --- dist/src/models.js | 12 +- package-lock.json | 472 +++++++++++++++++++++++++-------------------- package.json | 18 +- 3 files changed, 282 insertions(+), 220 deletions(-) diff --git a/dist/src/models.js b/dist/src/models.js index 7765c04..6f1fb21 100644 --- a/dist/src/models.js +++ b/dist/src/models.js @@ -297,14 +297,14 @@ var Model = (function () { var _b = (_a === void 0 ? {} : _a).quiet, quiet = _b === void 0 ? false : _b; return __awaiter(this, void 0, void 0, function () { var fields; - return __generator(this, function (_a) { - switch (_a.label) { + return __generator(this, function (_c) { + switch (_c.label) { case 0: fields = this._fields; return [4, Promise.all(Object.keys(fields) .map(function (n) { return fields[n].validate(); }))]; case 1: - _a.sent(); + _c.sent(); if (!quiet && this.hasErrors()) { throw this._createValidationError(); } @@ -317,8 +317,8 @@ var Model = (function () { var _b = (_a === void 0 ? {} : _a).quiet, quiet = _b === void 0 ? true : _b; return __awaiter(this, void 0, void 0, function () { var fields; - return __generator(this, function (_a) { - switch (_a.label) { + return __generator(this, function (_c) { + switch (_c.label) { case 0: if (!error) return [2, this]; @@ -328,7 +328,7 @@ var Model = (function () { return [4, Promise.all(Object.keys(fields) .map(function (n) { return fields[n].handle(error); }))]; case 1: - _a.sent(); + _c.sent(); if (!quiet && this.hasErrors()) { throw this._createValidationError(); } diff --git a/package-lock.json b/package-lock.json index bacc4c0..ea74b25 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.25.0", + "version": "1.27.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -80,17 +80,22 @@ "arrify": "1.0.1" } }, + "@types/events": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-1.1.0.tgz", + "integrity": "sha512-y3bR98mzYOo0pAZuiLari+cQyiKk3UXRuT45h1RjhfeCzqkjaVsfZJNaxdgtk7/3tzOm1ozLTqEqMP3VbI48jw==" + }, "@types/lodash": { - "version": "4.14.77", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.77.tgz", - "integrity": "sha512-sRCTcVQkIiQqRoQcazgN2PvRLS7d9BnSl8elRZR5UYlpm6XgU8F4j/0csz8WoaKKTUqa6rSuOy3Vph7AHfX7KQ==" + "version": "4.14.87", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.87.tgz", + "integrity": "sha512-AqRC+aEF4N0LuNHtcjKtvF9OTfqZI0iaBoe3dA6m/W+/YZJBZjBmW/QIZ8fBeXC6cnytSY9tBoFBqZ9uSCeVsw==" }, "@types/lodash.isequal": { "version": "4.5.2", "resolved": "https://registry.npmjs.org/@types/lodash.isequal/-/lodash.isequal-4.5.2.tgz", "integrity": "sha512-RBgio5IF9ND5Sw7pIivcC47oLY65f5UQCblnjVoGLR5wykwSRd/q0k6aUroXMGZfu8jnyJbNhzNC+NcFUnJ8pA==", "requires": { - "@types/lodash": "4.14.77" + "@types/lodash": "4.14.87" } }, "@types/lodash.merge": { @@ -98,13 +103,16 @@ "resolved": "https://registry.npmjs.org/@types/lodash.merge/-/lodash.merge-4.6.3.tgz", "integrity": "sha512-bOCCutkbehfCeiSqJO5XcVKjsJvX28dgvjhs4aMmBAHAsOy2oOJQwHuIZ0elI1E94qQIdEsCvz8oLgUumd6teA==", "requires": { - "@types/lodash": "4.14.77" + "@types/lodash": "4.14.87" } }, "@types/node": { - "version": "8.0.44", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.44.tgz", - "integrity": "sha512-56TeARKE2uMi7xWhpRRws/QdnpSVx9i7E8esGiPYoj90jnonGfmV1vwRLvHWYjPxF5u5l7p5fgdKwdse+VeAQQ==" + "version": "8.0.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.54.tgz", + "integrity": "sha512-qetMdTv3Ytz9u9ESLdcYs45LPI0mczYZIbC184n7kY0jczOqPNQsabBfVCh+na3B2shAfvC459JqHV771A8Rxg==", + "requires": { + "@types/events": "1.1.0" + } }, "ansi-align": { "version": "2.0.0", @@ -116,9 +124,9 @@ } }, "ansi-escapes": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz", - "integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", "dev": true }, "ansi-regex": { @@ -133,7 +141,7 @@ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "1.9.1" } }, "anymatch": { @@ -228,16 +236,16 @@ "dev": true }, "ava": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/ava/-/ava-0.22.0.tgz", - "integrity": "sha512-dYxvVDL9CeIcgaQ/FojaBVaL/rnIsXdgPVliDOMe1O5nSsIZEsPYDIzmZ1KnO/cuxeQx1PQbtW6qziiEwQZusg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/ava/-/ava-0.24.0.tgz", + "integrity": "sha512-o/ykNzsWB5qgh1cR9jzVw0E1y4E219aXl9njNFGSamSCsD7VhPd3aoZabNZuG1PSVMZmQ8RuwKnTuz/loNhKnw==", "dev": true, "requires": { "@ava/babel-preset-stage-4": "1.1.0", "@ava/babel-preset-transform-test-files": "3.0.0", "@ava/write-file-atomic": "2.2.0", "@concordance/react": "1.0.0", - "ansi-escapes": "2.0.0", + "ansi-escapes": "3.0.0", "ansi-styles": "3.2.0", "arr-flatten": "1.1.0", "array-union": "1.0.2", @@ -246,9 +254,11 @@ "auto-bind": "1.1.0", "ava-init": "0.2.1", "babel-core": "6.26.0", + "babel-generator": "6.26.0", + "babel-plugin-syntax-object-rest-spread": "6.13.0", "bluebird": "3.5.1", "caching-transform": "1.0.1", - "chalk": "2.2.0", + "chalk": "2.3.0", "chokidar": "1.7.0", "clean-stack": "1.3.0", "clean-yaml-object": "0.1.0", @@ -259,10 +269,10 @@ "code-excerpt": "2.1.0", "common-path-prefix": "1.0.0", "concordance": "3.0.0", - "convert-source-map": "1.5.0", + "convert-source-map": "1.5.1", "core-assert": "0.2.1", "currently-unhandled": "0.4.1", - "debug": "2.6.9", + "debug": "3.1.0", "dot-prop": "4.2.0", "empower-core": "0.6.2", "equal-length": "1.0.1", @@ -279,7 +289,7 @@ "is-ci": "1.0.10", "is-generator-fn": "1.0.0", "is-obj": "1.0.1", - "is-observable": "0.2.0", + "is-observable": "1.0.0", "is-promise": "2.1.0", "js-yaml": "3.10.0", "last-line-stream": "1.0.0", @@ -288,27 +298,28 @@ "lodash.difference": "4.5.0", "lodash.flatten": "4.4.0", "loud-rejection": "1.6.0", - "make-dir": "1.0.0", + "make-dir": "1.1.0", "matcher": "1.0.0", "md5-hex": "2.0.0", "meow": "3.7.0", - "ms": "2.0.0", + "ms": "2.1.1", "multimatch": "2.1.0", "observable-to-promise": "0.5.0", "option-chain": "1.0.0", "package-hash": "2.0.0", "pkg-conf": "2.0.0", "plur": "2.1.2", - "pretty-ms": "2.1.0", + "pretty-ms": "3.1.0", "require-precompiled": "0.1.0", "resolve-cwd": "2.0.0", "safe-buffer": "5.1.1", + "semver": "5.4.1", "slash": "1.0.0", - "source-map-support": "0.4.18", + "source-map-support": "0.5.0", "stack-utils": "1.0.1", "strip-ansi": "4.0.0", "strip-bom-buf": "1.0.0", - "supports-color": "4.5.0", + "supports-color": "5.0.1", "time-require": "0.1.2", "trim-off-newlines": "1.0.1", "unique-temp-dir": "1.0.0", @@ -391,7 +402,7 @@ "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "convert-source-map": "1.5.0", + "convert-source-map": "1.5.1", "debug": "2.6.9", "json5": "0.5.1", "lodash": "4.17.4", @@ -400,6 +411,23 @@ "private": "0.1.8", "slash": "1.0.0", "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } } }, "babel-generator": { @@ -572,6 +600,12 @@ "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", "dev": true }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, "babel-plugin-syntax-trailing-function-commas": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", @@ -700,6 +734,17 @@ "lodash": "4.17.4", "mkdirp": "0.5.1", "source-map-support": "0.4.18" + }, + "dependencies": { + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + } } }, "babel-runtime": { @@ -740,6 +785,23 @@ "globals": "9.18.0", "invariant": "2.2.2", "lodash": "4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } } }, "babel-types": { @@ -767,9 +829,9 @@ "dev": true }, "binary-extensions": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz", - "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", "dev": true }, "bluebird": { @@ -779,18 +841,18 @@ "dev": true }, "boxen": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.2.2.tgz", - "integrity": "sha1-Px1AMsMP/qnUsCwyLq8up0HcvOU=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", "dev": true, "requires": { "ansi-align": "2.0.0", "camelcase": "4.1.0", - "chalk": "2.2.0", + "chalk": "2.3.0", "cli-boxes": "1.0.0", "string-width": "2.1.1", "term-size": "1.2.0", - "widest-line": "1.0.0" + "widest-line": "2.0.0" }, "dependencies": { "camelcase": { @@ -920,14 +982,25 @@ "dev": true }, "chalk": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.0.tgz", - "integrity": "sha512-0BMM/2hG3ZaoPfR6F+h/oWpZtsh3b/s62TjSM6MGCJWEbJDN1acqCXvyhhZsDSVFklpebUoQ5O1kKC7lOzrn9g==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", "dev": true, "requires": { "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", "supports-color": "4.5.0" + }, + "dependencies": { + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } } }, "chokidar": { @@ -938,7 +1011,7 @@ "requires": { "anymatch": "1.3.2", "async-each": "1.0.1", - "fsevents": "1.1.2", + "fsevents": "1.1.3", "glob-parent": "2.0.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", @@ -948,9 +1021,9 @@ } }, "ci-info": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.1.tgz", - "integrity": "sha512-vHDDF/bP9RYpTWtUhpJRhCFdvvp3iDWvEbuDbWgvjUrNGV1MXJrE0MPcwGtEled04m61iwdBLUIHZtDgzWS4ZQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz", + "integrity": "sha512-uTGIPNx/nSpBdsF6xnseRXLLtfr9VLqkz8ZqHXr3Y7b6SftyRxBGjwMtJj1OhNbmlc1wZzLNAlAcvyIiE8a6ZA==", "dev": true }, "clean-stack": { @@ -1014,16 +1087,10 @@ "convert-to-spaces": "1.0.2" } }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, "color-convert": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", - "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "dev": true, "requires": { "color-name": "1.1.3" @@ -1035,16 +1102,10 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - }, "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", + "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==", "dev": true }, "common-path-prefix": { @@ -1092,16 +1153,16 @@ "requires": { "dot-prop": "4.2.0", "graceful-fs": "4.1.11", - "make-dir": "1.0.0", + "make-dir": "1.1.0", "unique-string": "1.0.0", "write-file-atomic": "2.3.0", "xdg-basedir": "3.0.0" } }, "convert-source-map": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", - "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", "dev": true }, "convert-to-spaces": { @@ -1177,12 +1238,20 @@ } }, "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "requires": { "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } } }, "decamelize": { @@ -1398,7 +1467,7 @@ "dev": true, "requires": { "commondir": "1.0.1", - "make-dir": "1.0.0", + "make-dir": "1.1.0", "pkg-dir": "2.0.0" } }, @@ -1439,14 +1508,14 @@ "dev": true }, "fsevents": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", - "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", "dev": true, "optional": true, "requires": { - "nan": "2.7.0", - "node-pre-gyp": "0.6.36" + "nan": "2.8.0", + "node-pre-gyp": "0.6.39" }, "dependencies": { "abbrev": { @@ -1604,7 +1673,6 @@ "version": "2.0.5", "bundled": true, "dev": true, - "optional": true, "requires": { "boom": "2.10.1" } @@ -1652,6 +1720,12 @@ "dev": true, "optional": true }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, "ecc-jsbn": { "version": "0.1.1", "bundled": true, @@ -1793,7 +1867,6 @@ "version": "3.1.3", "bundled": true, "dev": true, - "optional": true, "requires": { "boom": "2.10.1", "cryptiles": "2.0.5", @@ -1965,11 +2038,13 @@ "optional": true }, "node-pre-gyp": { - "version": "0.6.36", + "version": "0.6.39", "bundled": true, "dev": true, "optional": true, "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", "mkdirp": "0.5.1", "nopt": "4.0.1", "npmlog": "4.1.0", @@ -2177,7 +2252,6 @@ "version": "1.0.9", "bundled": true, "dev": true, - "optional": true, "requires": { "hoek": "2.16.3" } @@ -2395,12 +2469,12 @@ } }, "global-dirs": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.0.tgz", - "integrity": "sha1-ENNAOeDfBCcuJizyQiT3IJQ0308=", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", "dev": true, "requires": { - "ini": "1.3.4" + "ini": "1.3.5" } }, "globals": { @@ -2465,9 +2539,9 @@ "dev": true }, "handleable": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/handleable/-/handleable-0.24.0.tgz", - "integrity": "sha512-tft3G0oIDKnRAzPgBuCOmzl/Lszrbo+R39MZProMrkaRs3uFBemHyfUjXuv2TP9ECEgx+Z0AYl+b7IXhiYuwXw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/handleable/-/handleable-0.25.0.tgz", + "integrity": "sha512-+wvB8+Aeuk4/q3FQyGd+kw/J83Nc27CA3FF3w7S9Zpou4R31mz5KcwDAYdRRKzk2iHVpPfzCD4uMVf70J2BaIw==", "requires": { "lodash.merge": "4.6.0" } @@ -2588,9 +2662,9 @@ "dev": true }, "ini": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true }, "invariant": { @@ -2620,13 +2694,13 @@ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "binary-extensions": "1.10.0" + "binary-extensions": "1.11.0" } }, "is-buffer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", - "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, "is-builtin-module": { @@ -2644,7 +2718,7 @@ "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", "dev": true, "requires": { - "ci-info": "1.1.1" + "ci-info": "1.1.2" } }, "is-dotfile": { @@ -2716,8 +2790,8 @@ "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", "dev": true, "requires": { - "global-dirs": "0.1.0", - "is-path-inside": "1.0.0" + "global-dirs": "0.1.1", + "is-path-inside": "1.0.1" } }, "is-npm": { @@ -2742,18 +2816,18 @@ "dev": true }, "is-observable": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", - "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.0.0.tgz", + "integrity": "sha512-DVW97O/RiM3rTIuicUIcbJVqaQRDTwiXLYEWcCYLL5o8DOKCxpoPGroPXH3bVGUTJ2rvaFYnSXwwkakFpyTBzA==", "dev": true, "requires": { - "symbol-observable": "0.2.4" + "symbol-observable": "1.1.0" } }, "is-path-inside": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", - "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "dev": true, "requires": { "path-is-inside": "1.0.2" @@ -2874,7 +2948,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "1.1.6" } }, "last-line-stream": { @@ -3005,12 +3079,20 @@ } }, "make-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.0.0.tgz", - "integrity": "sha1-l6ARdR6R3YfPre9Ygy67BJNt6Xg=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", + "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", "dev": true, "requires": { - "pify": "2.3.0" + "pify": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } } }, "map-obj": { @@ -3247,9 +3329,9 @@ } }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true }, "multimatch": { @@ -3265,9 +3347,9 @@ } }, "nan": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.7.0.tgz", - "integrity": "sha1-2Vv3IeyHfgjbJ27T/G63j5CDrUY=", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", "dev": true, "optional": true }, @@ -3330,14 +3412,25 @@ "dev": true, "requires": { "is-observable": "0.2.0", - "symbol-observable": "1.0.4" + "symbol-observable": "1.1.0" }, "dependencies": { - "symbol-observable": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz", - "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=", - "dev": true + "is-observable": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", + "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", + "dev": true, + "requires": { + "symbol-observable": "0.2.4" + }, + "dependencies": { + "symbol-observable": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", + "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", + "dev": true + } + } } } }, @@ -3550,22 +3643,13 @@ "dev": true }, "pretty-ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-2.1.0.tgz", - "integrity": "sha1-QlfCVt8/sLRR1q/6qwIYhBJpgdw=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-3.1.0.tgz", + "integrity": "sha1-6crJx2v27lL+lC3ZxsQhMVOxKIE=", "dev": true, "requires": { - "is-finite": "1.0.2", "parse-ms": "1.0.1", - "plur": "1.0.0" - }, - "dependencies": { - "plur": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/plur/-/plur-1.0.0.tgz", - "integrity": "sha1-24XGgU9eXlo7Se/CjWBP7GKXUVY=", - "dev": true - } + "plur": "2.1.2" } }, "private": { @@ -3611,7 +3695,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "1.1.6" } } } @@ -3622,7 +3706,7 @@ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "1.1.6" } } } @@ -3634,7 +3718,7 @@ "dev": true, "requires": { "deep-extend": "0.4.2", - "ini": "1.3.4", + "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" }, @@ -3843,9 +3927,9 @@ } }, "resolve": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", - "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", "dev": true, "requires": { "path-parse": "1.0.5" @@ -3961,12 +4045,20 @@ "dev": true }, "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.0.tgz", + "integrity": "sha512-vUoN3I7fHQe0R/SJLKRdKYuEdRGogsviXFkHHo17AWaTGv17VLnxw+CFXvqy+y4ORZ3doWLQcxRYfwKrsd/H7Q==", "dev": true, "requires": { - "source-map": "0.5.7" + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "spdx-correct": { @@ -4075,18 +4167,18 @@ "dev": true }, "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.0.1.tgz", + "integrity": "sha512-7FQGOlSQ+AQxBNXJpVDj8efTA/FtyB5wcNE1omXXJ0cq6jm1jjDwuROlYDbnzHqdNPqliWFhcioCWSyav+xBnA==", "dev": true, "requires": { "has-flag": "2.0.0" } }, "symbol-observable": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", - "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.1.0.tgz", + "integrity": "sha512-dQoid9tqQ+uotGhuTKEY11X4xhyYePVnqGSoSm3OGKh2E8LZ6RPULp1uXTctk33IeERlrRJYoVSBglsL05F5Uw==", "dev": true }, "term-size": { @@ -4215,41 +4307,42 @@ "dev": true }, "tslint": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.7.0.tgz", - "integrity": "sha1-wl4NDJL6EgHCvDDoROCOaCtPNVI=", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.8.0.tgz", + "integrity": "sha1-H0mtWy53x2w69N3K5VKuTjYS6xM=", "dev": true, "requires": { "babel-code-frame": "6.26.0", - "colors": "1.1.2", - "commander": "2.11.0", + "builtin-modules": "1.1.1", + "chalk": "2.3.0", + "commander": "2.12.2", "diff": "3.4.0", "glob": "7.1.2", "minimatch": "3.0.4", - "resolve": "1.4.0", + "resolve": "1.5.0", "semver": "5.4.1", "tslib": "1.8.0", - "tsutils": "2.12.1" + "tsutils": "2.13.0" } }, "tsutils": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.12.1.tgz", - "integrity": "sha1-9Nlc4zkciXHkblTEzw7bCiHdWyQ=", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.13.0.tgz", + "integrity": "sha512-FuWzNJbMsp3gcZMbI3b5DomhW4Ia41vMxjN63nKWI0t7f+I3UmHfRl0TrXJTwI2LUduDG+eR1Mksp3pvtlyCFQ==", "dev": true, "requires": { "tslib": "1.8.0" } }, "typeable": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/typeable/-/typeable-2.3.1.tgz", - "integrity": "sha512-AuBrCEQAwsdFrFN1/C2UoTwSs/8U7Q/THJsMRdRZBRCEdrLJDFTfBS4MbrD3ZsfzYE78cC/0/QU6C7ki9GYz2w==" + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/typeable/-/typeable-2.4.0.tgz", + "integrity": "sha512-YXOjhd5h2q7FY2NdjOd5UzKouPhLvvPsDIS40P5jC6idI/PMxpZuUk7vheINknd2Z4DlmGbqSA4mSfTcYR6C3g==" }, "typescript": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.5.3.tgz", - "integrity": "sha512-ptLSQs2S4QuS6/OD1eAKG+S5G8QQtrU5RT32JULdZQtM1L3WTi34Wsu48Yndzi8xsObRAB9RPt/KhA9wlpEF6w==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.6.2.tgz", + "integrity": "sha1-PFtv1/beCRQmkCfwPAlGdY92c6Q=", "dev": true }, "uid2": { @@ -4290,8 +4383,8 @@ "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", "dev": true, "requires": { - "boxen": "1.2.2", - "chalk": "2.2.0", + "boxen": "1.3.0", + "chalk": "2.3.0", "configstore": "3.1.1", "import-lazy": "2.1.0", "is-installed-globally": "0.1.0", @@ -4317,12 +4410,12 @@ "dev": true }, "validatable": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/validatable/-/validatable-0.30.0.tgz", - "integrity": "sha512-u/Xwd0KrG6yBGGxh2vNZd7+R4enLVM23ZknL9NAaqz1BGcx3YTW9+27lifvkPaxkJIjBUrjl4FtRydzb6y+9LA==", + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/validatable/-/validatable-0.31.0.tgz", + "integrity": "sha512-Wuqx1xODdIXqGr+HMZXdkxY1e+rgZ5itKRzYw1GVKcu6xXOezZjwOf2bgmmMFNrLUW0M9trpA1DpPGQl0bpfxQ==", "requires": { "lodash.merge": "4.6.0", - "typeable": "2.3.1" + "typeable": "2.4.0" } }, "validate-npm-package-license": { @@ -4351,43 +4444,12 @@ } }, "widest-line": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", - "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", + "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", "dev": true, "requires": { - "string-width": "1.0.2" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - } + "string-width": "2.1.1" } }, "wrappy": { @@ -4415,7 +4477,7 @@ "requires": { "detect-indent": "5.0.0", "graceful-fs": "4.1.11", - "make-dir": "1.0.0", + "make-dir": "1.1.0", "pify": "3.0.0", "sort-keys": "2.0.0", "write-file-atomic": "2.3.0" diff --git a/package.json b/package.json index d8dbbae..09fe3fe 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.27.0", + "version": "1.28.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -71,19 +71,19 @@ "author": "Kristijan Sedlak (Xpepermint)", "license": "MIT", "devDependencies": { - "ava": "^0.22.0", - "mongodb": "2.2.33", - "tslint": "^5.7.0", - "typescript": "^2.5.3" + "ava": "^0.24.0", + "mongodb": "^2.2.33", + "tslint": "^5.8.0", + "typescript": "^2.6.2" }, "dependencies": { "@types/lodash.isequal": "^4.5.2", "@types/lodash.merge": "^4.6.3", - "@types/node": "^8.0.44", - "handleable": "^0.24.0", + "@types/node": "^8.0.54", + "handleable": "^0.25.0", "lodash.isequal": "^4.5.0", "lodash.merge": "^4.6.0", - "typeable": "^2.3.1", - "validatable": "^0.30.0" + "typeable": "^2.4.0", + "validatable": "^0.31.0" } } From 8d0385ef2f77bb38495815133cd345ed36ab20eb Mon Sep 17 00:00:00 2001 From: xpeper Date: Fri, 19 Jan 2018 16:35:26 +0100 Subject: [PATCH 198/219] validator array values --- dist/example/index.js.map | 2 +- example/index.ts | 4 +-- package-lock.json | 60 ++++++++++----------------------------- package.json | 6 ++-- 4 files changed, 21 insertions(+), 51 deletions(-) diff --git a/dist/example/index.js.map b/dist/example/index.js.map index b0c19ae..dc54c6d 100644 --- a/dist/example/index.js.map +++ b/dist/example/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../example/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8BAA6B;AAM7B;IAAmB,wBAAK;IAGtB,cAAoB,IAAS;QAAT,qBAAA,EAAA,SAAS;QAA7B,YACE,kBAAM,IAAI,CAAC,SAcZ;QAZC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YACxB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QAEH,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;IAChB,CAAC;IACH,WAAC;AAAD,CAAC,AAnBD,CAAmB,WAAK,GAmBvB;AAMD;IAAmB,wBAAK;IAItB,cAAoB,IAAS;QAAT,qBAAA,EAAA,SAAS;QAA7B,YACE,kBAAM,IAAI,CAAC,SAuBZ;QArBC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QACH,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QAEH,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;IAChB,CAAC;IACH,WAAC;AAAD,CAAC,AA7BD,CAAmB,WAAK,GA6BvB;AAMD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;IAClB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE;QACJ,KAAK,EAAE,gBAAgB;KACxB;CACF,CAAC,CAAC;AAEH,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,IAAI,CAAC;IAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IACvD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAClE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../example/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8BAA+B;AAM/B;IAAmB,wBAAK;IAGtB,cAAoB,IAAS;QAAT,qBAAA,EAAA,SAAS;QAA7B,YACE,kBAAM,IAAI,CAAC,SAcZ;QAZC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YACxB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QAEH,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;IAChB,CAAC;IACH,WAAC;AAAD,CAAC,AAnBD,CAAmB,WAAK,GAmBvB;AAMD;IAAmB,wBAAK;IAItB,cAAoB,IAAS;QAAT,qBAAA,EAAA,SAAS;QAA7B,YACE,kBAAM,IAAI,CAAC,SAuBZ;QArBC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QACH,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QAEH,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;IAChB,CAAC;IACH,WAAC;AAAD,CAAC,AA7BD,CAAmB,WAAK,GA6BvB;AAMD,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC;IACpB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE;QACJ,KAAK,EAAE,gBAAgB;KACxB;CACF,CAAC,CAAC;AAEH,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,IAAI,CAAC;IAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IACvD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAClE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/example/index.ts b/example/index.ts index 4197a83..29490f3 100644 --- a/example/index.ts +++ b/example/index.ts @@ -1,4 +1,4 @@ -import {Model} from '../src'; +import { Model } from '../src'; /* * Book model @@ -64,7 +64,7 @@ class User extends Model { * Usage */ -let user = new User({ +const user = new User({ name: 'John Smith', book: { title: 'True Detective' diff --git a/package-lock.json b/package-lock.json index ea74b25..d6c5f85 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.27.0", + "version": "1.28.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -896,12 +896,6 @@ "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", "dev": true }, - "buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", @@ -1333,12 +1327,6 @@ "integrity": "sha1-7sXHJurO9Rt/a3PCDbbhsTsGnJg=", "dev": true }, - "es6-promise": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.2.1.tgz", - "integrity": "sha1-7FYjOGgDKQkgcXDDlEjiREndH8Q=", - "dev": true - }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -3291,37 +3279,18 @@ } }, "mongodb": { - "version": "2.2.33", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.2.33.tgz", - "integrity": "sha1-tTfEcdNKZlG0jzb9vyl1A0Dgi1A=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.0.1.tgz", + "integrity": "sha1-J47oAGJX7CJ5hZSmJZVGgl1t4bI=", "dev": true, "requires": { - "es6-promise": "3.2.1", - "mongodb-core": "2.1.17", - "readable-stream": "2.2.7" - }, - "dependencies": { - "readable-stream": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.7.tgz", - "integrity": "sha1-BwV6y+JGeyIELTb5jFrVBwVOlbE=", - "dev": true, - "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - } + "mongodb-core": "3.0.1" } }, "mongodb-core": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-2.1.17.tgz", - "integrity": "sha1-pBizN6FKFJkPtRC5I97mqBMXPfg=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.0.1.tgz", + "integrity": "sha1-/23Dbulv9ZaVPYCmhA1nMbyS7+0=", "dev": true, "requires": { "bson": "1.0.4", @@ -4307,9 +4276,9 @@ "dev": true }, "tslint": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.8.0.tgz", - "integrity": "sha1-H0mtWy53x2w69N3K5VKuTjYS6xM=", + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.9.1.tgz", + "integrity": "sha1-ElX4ej/1frCw4fDmEKi0dIBGya4=", "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -4318,6 +4287,7 @@ "commander": "2.12.2", "diff": "3.4.0", "glob": "7.1.2", + "js-yaml": "3.10.0", "minimatch": "3.0.4", "resolve": "1.5.0", "semver": "5.4.1", @@ -4410,9 +4380,9 @@ "dev": true }, "validatable": { - "version": "0.31.0", - "resolved": "https://registry.npmjs.org/validatable/-/validatable-0.31.0.tgz", - "integrity": "sha512-Wuqx1xODdIXqGr+HMZXdkxY1e+rgZ5itKRzYw1GVKcu6xXOezZjwOf2bgmmMFNrLUW0M9trpA1DpPGQl0bpfxQ==", + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/validatable/-/validatable-0.32.0.tgz", + "integrity": "sha512-AEx/5gmEWtxG8M/TA0LFpAIkhSYJf9O7e2j8ER0WmU2xeAJzRGykYDct9dwMneye9SrmzImdMgqbT3236ySWug==", "requires": { "lodash.merge": "4.6.0", "typeable": "2.4.0" diff --git a/package.json b/package.json index 09fe3fe..f3f4f7a 100644 --- a/package.json +++ b/package.json @@ -72,8 +72,8 @@ "license": "MIT", "devDependencies": { "ava": "^0.24.0", - "mongodb": "^2.2.33", - "tslint": "^5.8.0", + "mongodb": "3.0.1", + "tslint": "^5.9.1", "typescript": "^2.6.2" }, "dependencies": { @@ -84,6 +84,6 @@ "lodash.isequal": "^4.5.0", "lodash.merge": "^4.6.0", "typeable": "^2.4.0", - "validatable": "^0.31.0" + "validatable": "^0.32.0" } } From 78ba199d5a696dedeff7843e4d4fc18708532378 Mon Sep 17 00:00:00 2001 From: xpeper Date: Fri, 19 Jan 2018 16:37:46 +0100 Subject: [PATCH 199/219] version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f3f4f7a..9ec5bc2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.28.0", + "version": "1.29.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", From 513806dd07fc10118693e014331669d4ca109b5b Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 20 Jan 2018 15:10:49 +0100 Subject: [PATCH 200/219] minor type casting refactoring --- README.md | 41 ++++++++++++++++++++--------------------- dist/src/fields.js | 8 +++----- dist/src/fields.js.map | 2 +- src/fields.ts | 12 ++++-------- 4 files changed, 28 insertions(+), 35 deletions(-) diff --git a/README.md b/README.md index 5b7285c..39d17ff 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ class User extends Model { } // usage example -let model = new User({ +const model = new User({ 'name': 'John Smith' }); model.name; // => 'John Smith' @@ -92,18 +92,18 @@ class User extends Model { } } -let user = new User(); +const user = new User(); user.name = 'John Smith'; user.name; // -> "John Smith" ``` ### Type Casting -Each field has a built-in system for type casting thus we can force a value to be automatically converted to a specific type. +Each field has a built-in system for type casting, thus we can force a value to be automatically converted to a specific type when setting a value. ```js this.defineField('name', { - type: 'String', // automatically cast values to `String` + type: 'String', // automatically cast value to `String` }); ``` @@ -141,7 +141,7 @@ class User extends Model { We can set a `defaultValue` for each field which will automatically populate a field on creation. -The `defaultValue` can also be a method which returns a dynamic value. Note that this function shares the context of a field instance, thus you have access to all the features of the `Field` class. +The `defaultValue` can also be a method which returns a dynamic value. This function shares the context of a field instance thus you have access to all the features of the `Field` class. ```js this.defineField('name', { @@ -153,7 +153,7 @@ this.defineField('name', { Similar to default values, we can set a `fakeValue` for each field, to populate a field with fake data when calling the `fake()` method. -The `fakeValue` can also be a method which returns a dynamic value. Note that this function shares the context of a field instance, thus you have access to all the features of the `Field` class. +The `fakeValue` can also be a method which returns a dynamic value. This function shares the context of a field instance, thus you have access to all the features of the `Field` class. ```js this.defineField('name', { @@ -161,11 +161,10 @@ this.defineField('name', { }); ``` -### Field Value Transformation -A field can have a custom `getter` and a custom `setter`. +### Field Value Transformation -These methods all share the context of a field instance, thus you have access to all the features of the `Field` class. +A field can have a custom `getter` and a custom `setter`. These methods all share the context of a field instance, thus you have access to all the features of the `Field` class. ```js this.defineField('name', { @@ -176,7 +175,7 @@ this.defineField('name', { ### Value Assignments -Model fields are like properties of a Javascript Object. We can easily assign a value to a field through its setter method (e.g. `model.name = 'value';`). Instead of assigning fields one by one, we can use the `populate()` method as shown below. +Model's fields are like properties of a Javascript Object. We can easily assign a value to a field through its setter method (e.g. `model.name = 'value';`). Instead of assigning fields one by one, we can use the `populate()` method as shown below. ```js this.populate({ @@ -203,11 +202,11 @@ class User extends Model { } } -let data = { +const data = { 'id': 100, 'name': 'John Smith' }; -let user = new User(); +const user = new User(); user.populate(data); // -> { "id": 100, "name": "John Smith" } user.populate(data, 'internal'); // -> { "id": 100, "name": "John Smith" } user.serialize(data, 'input'); // -> { id: null, "name": "John Smith" } @@ -218,7 +217,7 @@ user.serialize(data, 'input'); // -> { id: null, "name": "John Smith" } Model provides useful methods for object serialization and filtering (check the API for more methods). ```js -let user = new User({ +const user = new User({ 'name': 'John Smith', // initial value }); @@ -248,7 +247,7 @@ class User extends Model { } } -let user = new User({ +const user = new User({ 'id': 100, 'name': 'John Smith', }); @@ -273,7 +272,7 @@ class User extends Model { } } -let user = new User(); +const user = new User(); user.name = 'Mandy Taylor'; // changing field's value user.isChanged(); // -> true user.commit(); // set `initialValue` of each field to the value of `value` @@ -307,7 +306,7 @@ class User extends Model { } } -let user = new User(); +const user = new User(); user.validate().catch((err) => { user.collectErrors(); // -> [{path: ['name'], errors: [{validator: 'presence', message: 'is must be present', code: 422}]}] }); @@ -364,8 +363,8 @@ class User extends Model { } } -let error = new Error(); -let user = new User(); +const error = new Error(); +lconstet user = new User(); user.handle(error).then(() => { user.collectErrors(); // -> [{ path: ['name'], errors: [{ handler: 'block', message: 'is unknown', code: 422 }] }] }); @@ -894,7 +893,7 @@ catch (e) { | block | Function,Promise | Yes | - | Synchronous or asynchronous function (e.g. `async () => true`) ```js -let recipe = { +const recipe = { validator: 'block', message: 'must be present', async block (value, recipe) { return true }, @@ -1023,7 +1022,7 @@ let recipe = { | block | Function,Promise | Yes | Synchronous or asynchronous function (e.g. `async () => true`). ```js -let recipe = { +const recipe = { handler: 'block', message: 'is unknown error', async block (error, recipe) { return true }, @@ -1039,7 +1038,7 @@ let recipe = { | indexName | String | Yes | - | MongoDB collection's unique index name. ```js -let recipe = { +const recipe = { handler: 'mongoUniqueness', message: 'is unknown error', indexName: 'uniqueEmail', // make sure that this index name exists in your MongoDB collection diff --git a/dist/src/fields.js b/dist/src/fields.js index d615b22..3ec2ecc 100644 --- a/dist/src/fields.js +++ b/dist/src/fields.js @@ -71,11 +71,11 @@ var Field = (function () { value: Object.freeze(recipe || {}) }); Object.defineProperty(this, '_data', { - value: this._getDefaultValue(), + value: this.cast(this._getDefaultValue()), writable: true }); Object.defineProperty(this, '_initialData', { - value: this._getDefaultValue(), + value: this.cast(this._getDefaultValue()), writable: true }); Object.defineProperty(this, '_validator', { @@ -128,8 +128,7 @@ var Field = (function () { if (typeable_1.isFunction(set)) { data = set.call(this, data); } - data = this.cast(data); - this._data = data; + this._data = this.cast(data); }; Field.prototype._getDefaultValue = function () { var data = null; @@ -140,7 +139,6 @@ var Field = (function () { else if (!typeable_1.isUndefined(defaultValue)) { data = defaultValue; } - data = this.cast(data); return data; }; Field.prototype._getFakeValue = function () { diff --git a/dist/src/fields.js.map b/dist/src/fields.js.map index 5096e65..b37a69f 100644 --- a/dist/src/fields.js.map +++ b/dist/src/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/fields.ts b/src/fields.ts index 0961441..2b521f3 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -89,11 +89,11 @@ export class Field { }); Object.defineProperty(this, '_data', { // current value - value: this._getDefaultValue(), + value: this.cast(this._getDefaultValue()), writable: true }); Object.defineProperty(this, '_initialData', { // last commited value - value: this._getDefaultValue(), + value: this.cast(this._getDefaultValue()), writable: true }); Object.defineProperty(this, '_validator', { // validatable.js instance @@ -153,7 +153,7 @@ export class Field { data = get.call(this, data); } - return data; + return data; // do not cast value to preserve type instances } /** @@ -169,9 +169,7 @@ export class Field { data = set.call(this, data); } - data = this.cast(data); - - this._data = data; + this._data = this.cast(data); // cast only when setting value to preserve data instance } /** @@ -188,8 +186,6 @@ export class Field { data = defaultValue; } - data = this.cast(data); - return data; } From f634be142750bc2d2b1d82f2d2ec6bf515bec6e2 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 20 Jan 2018 15:42:05 +0100 Subject: [PATCH 201/219] nullable fields --- README.md | 11 +++++++++++ dist/example/index.js | 16 ++++++++++------ dist/example/index.js.map | 2 +- dist/src/fields.d.ts | 3 +++ dist/src/fields.js | 17 ++++++++++++++++- dist/src/fields.js.map | 2 +- dist/tests/fields.js | 27 +++++++++++++++++++++------ dist/tests/fields.js.map | 2 +- dist/tests/models.js | 3 +++ dist/tests/models.js.map | 2 +- example/index.ts | 31 ++++++++++++++++++------------- src/fields.ts | 27 +++++++++++++++++++++++++-- tests/fields.ts | 30 +++++++++++++++++++++++------- tests/models.ts | 7 +++++-- 14 files changed, 139 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index 39d17ff..6a84cb6 100644 --- a/README.md +++ b/README.md @@ -161,6 +161,17 @@ this.defineField('name', { }); ``` +### Field Null Value + +By default all defined fields are set to `null`. Similar to default and fake value we can set a `nullValue` option for each field, to automatically replace `null` values. + +The `nullValue` can also be a method which returns a dynamic value. Note that this function shares the context of a field instance, thus you have access to all the features of the `Field` class. + +```js +this.defineField('name', { + nullValue () { return '' }, // replace `null` value +}); +``` ### Field Value Transformation diff --git a/dist/example/index.js b/dist/example/index.js index 14d8cf4..21065e7 100644 --- a/dist/example/index.js +++ b/dist/example/index.js @@ -22,7 +22,7 @@ var Book = (function (_super) { { validator: 'presence', message: 'must be present' - } + }, ] }); _this.populate(data); @@ -42,7 +42,7 @@ var User = (function (_super) { { validator: 'presence', message: 'must be present' - } + }, ] }); _this.defineField('book', { @@ -54,6 +54,10 @@ var User = (function (_super) { } ] }); + _this.defineField('books', { + type: [Book], + nullValue: [] + }); _this.populate(data); _this.commit(); return _this; @@ -64,11 +68,11 @@ var user = new User({ name: 'John Smith', book: { title: 'True Detective' - } + }, + books: null }); user.validate({ quiet: true }).then(function () { - process.stdout.write('user.name: ' + user.name + '\n'); - process.stdout.write('user.book.title:' + user.book.title + '\n'); - process.stdout.write('user.isValid():' + user.isValid() + '\n'); + var data = user.serialize(); + process.stdout.write(JSON.stringify(data, null, 2) + '\n'); }); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/example/index.js.map b/dist/example/index.js.map index dc54c6d..e40c7ca 100644 --- a/dist/example/index.js.map +++ b/dist/example/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../example/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8BAA+B;AAM/B;IAAmB,wBAAK;IAGtB,cAAoB,IAAS;QAAT,qBAAA,EAAA,SAAS;QAA7B,YACE,kBAAM,IAAI,CAAC,SAcZ;QAZC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YACxB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QAEH,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;IAChB,CAAC;IACH,WAAC;AAAD,CAAC,AAnBD,CAAmB,WAAK,GAmBvB;AAMD;IAAmB,wBAAK;IAItB,cAAoB,IAAS;QAAT,qBAAA,EAAA,SAAS;QAA7B,YACE,kBAAM,IAAI,CAAC,SAuBZ;QArBC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QACH,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QAEH,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;IAChB,CAAC;IACH,WAAC;AAAD,CAAC,AA7BD,CAAmB,WAAK,GA6BvB;AAMD,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC;IACpB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE;QACJ,KAAK,EAAE,gBAAgB;KACxB;CACF,CAAC,CAAC;AAEH,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,IAAI,CAAC;IAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IACvD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAClE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../example/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8BAA+B;AAM/B;IAAmB,wBAAK;IAGtB,cAAoB,IAAS;QAAT,qBAAA,EAAA,SAAS;QAA7B,YACE,kBAAM,IAAI,CAAC,SAcZ;QAZC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YACxB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QAEH,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;IAChB,CAAC;IACH,WAAC;AAAD,CAAC,AAnBD,CAAmB,WAAK,GAmBvB;AAMD;IAAmB,wBAAK;IAKtB,cAAoB,IAAS;QAAT,qBAAA,EAAA,SAAS;QAA7B,YACE,kBAAM,IAAI,CAAC,SA2BZ;QAzBC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QACH,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QACH,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YACxB,IAAI,EAAE,CAAC,IAAI,CAAC;YACZ,SAAS,EAAE,EAAE;SACd,CAAC,CAAC;QAEH,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;IAChB,CAAC;IACH,WAAC;AAAD,CAAC,AAlCD,CAAmB,WAAK,GAkCvB;AAMD,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC;IACpB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE;QACJ,KAAK,EAAE,gBAAgB;KACxB;IACD,KAAK,EAAE,IAAI;CACZ,CAAC,CAAC;AAEH,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,IAAI,CAAC;IAChC,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC7D,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/dist/src/fields.d.ts b/dist/src/fields.d.ts index e784fb2..ee005df 100644 --- a/dist/src/fields.d.ts +++ b/dist/src/fields.d.ts @@ -7,6 +7,7 @@ export interface FieldRecipe { set?: (v: any) => void; defaultValue?: any; fakeValue?: any; + nullValue?: any; validate?: ValidatorRecipe[]; handle?: HandlerRecipe[]; validators?: { @@ -34,6 +35,7 @@ export declare class Field { protected _recipe: FieldRecipe; readonly defaultValue: any; readonly fakeValue: any; + readonly nullValue: any; readonly initialValue: any; readonly populatable: string[]; readonly serializable: string[]; @@ -49,6 +51,7 @@ export declare class Field { protected _setValue(data: any): void; protected _getDefaultValue(): any; protected _getFakeValue(): any; + protected _getNullValue(): any; cast(data: any): any; reset(): this; fake(): this; diff --git a/dist/src/fields.js b/dist/src/fields.js index 3ec2ecc..4176e73 100644 --- a/dist/src/fields.js +++ b/dist/src/fields.js @@ -97,6 +97,10 @@ var Field = (function () { get: function () { return _this._getFakeValue(); }, enumerable: true }); + Object.defineProperty(this, 'nullValue', { + get: function () { return _this._getNullValue(); }, + enumerable: true + }); Object.defineProperty(this, 'initialValue', { get: function () { return _this._initialData; }, enumerable: true @@ -152,11 +156,22 @@ var Field = (function () { } return data; }; + Field.prototype._getNullValue = function () { + var data = null; + var nullValue = this._recipe.nullValue; + if (typeable_1.isFunction(nullValue)) { + data = nullValue.call(this); + } + else if (!typeable_1.isUndefined(nullValue)) { + data = nullValue; + } + return data; + }; Field.prototype.cast = function (data) { var _this = this; var converter = this.type; if (!typeable_1.isValue(data)) { - return null; + return this._getNullValue(); } if (this.isNested()) { var Klass_1 = typeable_1.isArray(this.type) ? this.type[0] : this.type; diff --git a/dist/src/fields.js.map b/dist/src/fields.js.map index b37a69f..1433a81 100644 --- a/dist/src/fields.js.map +++ b/dist/src/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/fields.js b/dist/tests/fields.js index 3e1b28b..28ebe1a 100644 --- a/dist/tests/fields.js +++ b/dist/tests/fields.js @@ -91,6 +91,16 @@ ava_1["default"]('can have a fake value', function (t) { t.is(f1.fakeValue, 'Field'); t.is(f2.fakeValue !== f2.fakeValue, true); }); +ava_1["default"]('can have a null value', function (t) { + var f0 = new src_1.Field({ nullValue: 'foo' }); + var f1 = new src_1.Field({ nullValue: function () { return this.constructor.name; } }); + var f2 = new src_1.Field({ nullValue: function () { return Math.random(); } }); + t.is(f0.value, 'foo'); + t.is(f1.value, 'Field'); + t.is(f0.nullValue, 'foo'); + t.is(f1.nullValue, 'Field'); + t.is(f2.nullValue !== f2.nullValue, true); +}); ava_1["default"]('method `reset()` sets value to the default value', function (t) { var f0 = new src_1.Field(); var f1 = new src_1.Field({ defaultValue: 'foo' }); @@ -117,14 +127,18 @@ ava_1["default"]('method `fake()` sets value to the fake value', function (t) { t.is(f2.value !== f1.value, true); }); ava_1["default"]('method `clear()` sets value to `null`', function (t) { - var f = new src_1.Field(); - f.value = 'foo'; - f.errors = [ + var f0 = new src_1.Field(); + var f1 = new src_1.Field({ nullValue: 'null' }); + f0.value = 'foo'; + f0.errors = [ { validator: 'foo', message: 'bar', code: 422 } ]; - f.clear(); - t.is(f.errors.length, 1); - t.is(f.value, null); + f0.clear(); + f1.value = 'foo'; + f1.clear(); + t.is(f0.errors.length, 1); + t.is(f0.value, null); + t.is(f1.value, 'null'); }); ava_1["default"]('methods `commit()` and `rollback()` manage committed value state', function (t) { var f = new src_1.Field(); @@ -225,6 +239,7 @@ ava_1["default"]('has enumeratable properties', function (t) { 'value', 'defaultValue', 'fakeValue', + 'nullValue', 'initialValue', ]); }); diff --git a/dist/tests/fields.js.map b/dist/tests/fields.js.map index 0ddd325..53a2b31 100644 --- a/dist/tests/fields.js.map +++ b/dist/tests/fields.js.map @@ -1 +1 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../tests/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../tests/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/models.js b/dist/tests/models.js index 43c478f..ef062f9 100644 --- a/dist/tests/models.js +++ b/dist/tests/models.js @@ -625,6 +625,7 @@ ava_1["default"]('method `clear` sets fields to `null`', function (t) { function User(data) { var _this = _super.call(this, data) || this; _this.defineField('name', { defaultValue: 'bar' }); + _this.defineField('description', { nullValue: 'null' }); _this.defineField('book', { type: Book, defaultValue: {} }); _this.defineField('books', { type: [Book], defaultValue: [null, {}] }); _this.populate(data); @@ -634,6 +635,7 @@ ava_1["default"]('method `clear` sets fields to `null`', function (t) { }(src_1.Model)); var user = new User({ name: 'fake', + description: 'fake', book: { title: 'fake' }, @@ -646,6 +648,7 @@ ava_1["default"]('method `clear` sets fields to `null`', function (t) { user.clear(); t.deepEqual(user.serialize(), { name: null, + description: 'null', book: null, books: null }); diff --git a/dist/tests/models.js.map b/dist/tests/models.js.map index cf7d601..f9ead1d 100644 --- a/dist/tests/models.js.map +++ b/dist/tests/models.js.map @@ -1 +1 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/example/index.ts b/example/index.ts index 29490f3..2fda97b 100644 --- a/example/index.ts +++ b/example/index.ts @@ -15,9 +15,9 @@ class Book extends Model { validate: [ { validator: 'presence', - message: 'must be present' - } - ] + message: 'must be present', + }, + ], }); this.populate(data); @@ -32,6 +32,7 @@ class Book extends Model { class User extends Model { public name: string; public book: Book; + public books: [Book]; public constructor (data = {}) { super(data); @@ -41,18 +42,22 @@ class User extends Model { validate: [ { validator: 'presence', - message: 'must be present' - } - ] + message: 'must be present', + }, + ], }); this.defineField('book', { type: Book, validate: [ { validator: 'presence', - message: 'must be present' + message: 'must be present', } - ] + ], + }); + this.defineField('books', { + type: [Book], + nullValue: [], }); this.populate(data); @@ -67,12 +72,12 @@ class User extends Model { const user = new User({ name: 'John Smith', book: { - title: 'True Detective' - } + title: 'True Detective', + }, + books: null, }); user.validate({quiet: true}).then(() => { - process.stdout.write('user.name: ' + user.name + '\n'); - process.stdout.write('user.book.title:' + user.book.title + '\n'); - process.stdout.write('user.isValid():' + user.isValid() + '\n'); + const data = user.serialize(); + process.stdout.write(JSON.stringify(data, null, 2) + '\n'); }); diff --git a/src/fields.ts b/src/fields.ts index 2b521f3..c83615d 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -13,6 +13,7 @@ export interface FieldRecipe { set?: (v: any) => void; defaultValue?: any; fakeValue?: any; + nullValue?: any; validate?: ValidatorRecipe[]; handle?: HandlerRecipe[]; validators?: {[name: string]: (v?: any, r?: ValidatorRecipe) => boolean | Promise}; @@ -44,6 +45,7 @@ export class Field { protected _recipe: FieldRecipe; readonly defaultValue: any; readonly fakeValue: any; + readonly nullValue: any; readonly initialValue: any; readonly populatable: string[]; readonly serializable: string[]; @@ -116,6 +118,10 @@ export class Field { get: () => this._getFakeValue(), enumerable: true }); + Object.defineProperty(this, 'nullValue', { + get: () => this._getNullValue(), + enumerable: true + }); Object.defineProperty(this, 'initialValue', { get: () => this._initialData, enumerable: true @@ -207,13 +213,30 @@ export class Field { } /** - * Converts a `value` into field's type. + * Returns the null value of a field. + */ + protected _getNullValue() { + let data = null; + + const { nullValue } = this._recipe; + if (isFunction(nullValue)) { + data = nullValue.call(this); + } + else if (!isUndefined(nullValue)) { + data = nullValue; + } + + return data; + } + + /** + * Converts a `data` into field's type. */ public cast(data: any) { let converter = this.type; if (!isValue(data)) { - return null; + return this._getNullValue(); } if (this.isNested()) { diff --git a/tests/fields.ts b/tests/fields.ts index a09e81d..03cc368 100644 --- a/tests/fields.ts +++ b/tests/fields.ts @@ -51,6 +51,17 @@ test('can have a fake value', (t) => { t.is(f2.fakeValue !== f2.fakeValue, true); // dynamic values }); +test('can have a null value', (t) => { + const f0 = new Field({ nullValue: 'foo' }); + const f1 = new Field({ nullValue () { return this.constructor.name; } }); + const f2 = new Field({ nullValue () { return Math.random(); } }); + t.is(f0.value, 'foo'); // `null` is replaced + t.is(f1.value, 'Field'); // `null` is replaced + t.is(f0.nullValue, 'foo'); + t.is(f1.nullValue, 'Field'); + t.is(f2.nullValue !== f2.nullValue, true); // dynamic values +}); + test('method `reset()` sets value to the default value', (t) => { const f0 = new Field(); const f1 = new Field({ defaultValue: 'foo' }); @@ -79,14 +90,18 @@ test('method `fake()` sets value to the fake value', (t) => { }); test('method `clear()` sets value to `null`', (t) => { - const f = new Field(); - f.value = 'foo'; - f.errors = [ - {validator: 'foo', message: 'bar', code: 422} + const f0 = new Field(); + const f1 = new Field({ nullValue: 'null' }); + f0.value = 'foo'; + f0.errors = [ + { validator: 'foo', message: 'bar', code: 422 } ]; - f.clear(); - t.is(f.errors.length, 1); - t.is(f.value, null); + f0.clear(); + f1.value = 'foo'; + f1.clear(); + t.is(f0.errors.length, 1); + t.is(f0.value, null); + t.is(f1.value, 'null'); }); test('methods `commit()` and `rollback()` manage committed value state', (t) => { @@ -181,6 +196,7 @@ test('has enumeratable properties', (t) => { 'value', 'defaultValue', 'fakeValue', + 'nullValue', 'initialValue', ]); }); diff --git a/tests/models.ts b/tests/models.ts index df9cbd0..06acc9b 100644 --- a/tests/models.ts +++ b/tests/models.ts @@ -515,6 +515,7 @@ test('method `clear` sets fields to `null`', (t) => { constructor(data) { super(data); this.defineField('name', { defaultValue: 'bar' }); + this.defineField('description', { nullValue: 'null' }); this.defineField('book', { type: Book, defaultValue: {} }); this.defineField('books', { type: [Book], defaultValue: [null, {}] }); this.populate(data); @@ -522,18 +523,20 @@ test('method `clear` sets fields to `null`', (t) => { } const user = new User({ name: 'fake', + description: 'fake', book: { - title: 'fake' + title: 'fake', }, books: [ { - title: 'fake' + title: 'fake', } ] }); user.clear(); t.deepEqual(user.serialize(), { name: null, + description: 'null', book: null, books: null }); From 1b8880d3159646742a8b8cdeb8a140010e13687d Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 20 Jan 2018 15:42:48 +0100 Subject: [PATCH 202/219] version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9ec5bc2..89ed6d9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.29.0", + "version": "1.30.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", From 3a83e2d07b34fdc6d7cd1e3ba17c2f2dbea11c3e Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 21 Jan 2018 00:44:58 +0100 Subject: [PATCH 203/219] dependencies --- package-lock.json | 8 ++++---- package.json | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index d6c5f85..b2d6d77 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.28.0", + "version": "1.30.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -4380,9 +4380,9 @@ "dev": true }, "validatable": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/validatable/-/validatable-0.32.0.tgz", - "integrity": "sha512-AEx/5gmEWtxG8M/TA0LFpAIkhSYJf9O7e2j8ER0WmU2xeAJzRGykYDct9dwMneye9SrmzImdMgqbT3236ySWug==", + "version": "0.34.0", + "resolved": "https://registry.npmjs.org/validatable/-/validatable-0.34.0.tgz", + "integrity": "sha512-TlyiyFqUgQn5XfrsfApYZ298dFyuV6Da2kHU5Tx0jo4yKspkkbS6TciwMrdUTQRnqHH/uL1eSEl8SQRGkOFXug==", "requires": { "lodash.merge": "4.6.0", "typeable": "2.4.0" diff --git a/package.json b/package.json index 89ed6d9..2eec097 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.30.0", + "version": "1.31.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -84,6 +84,6 @@ "lodash.isequal": "^4.5.0", "lodash.merge": "^4.6.0", "typeable": "^2.4.0", - "validatable": "^0.32.0" + "validatable": "^0.34.0" } } From 1b3a25ed4e6b81ea4b3dd2332423c8e0d68854bd Mon Sep 17 00:00:00 2001 From: xpeper Date: Sun, 21 Jan 2018 00:59:15 +0100 Subject: [PATCH 204/219] readme --- README.md | 4 ++++ package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6a84cb6..f3dc2d6 100644 --- a/README.md +++ b/README.md @@ -948,6 +948,10 @@ const recipe = { | allowUtf8LocalPart | Boolean | No | false | When set to false, the validator will not allow any non-English UTF8 character in email address' local part. | requireTld | Boolean | No | true | When set to false, email addresses without having TLD in their domain will also be matched. +**stringETHAddress** + +> Checks if the string represents an ethereum address. + **stringExclusion** > Checks if the string does not contain the seed. diff --git a/package.json b/package.json index 2eec097..0968350 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.31.0", + "version": "1.31.1", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", From cc4baf6671bb5540fbb78872724757bf5eee3f21 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 24 Mar 2018 20:01:32 +0100 Subject: [PATCH 205/219] removing dist from git --- .gitignore | 3 +- .npmignore | 3 + README.md | 2 +- dist/example/index.d.ts | 0 dist/example/index.js | 78 --- dist/example/index.js.map | 1 - dist/src/fields.d.ts | 69 -- dist/src/fields.js | 294 -------- dist/src/fields.js.map | 1 - dist/src/index.d.ts | 3 - dist/src/index.js | 9 - dist/src/index.js.map | 1 - dist/src/models.d.ts | 75 --- dist/src/models.js | 387 ----------- dist/src/models.js.map | 1 - dist/src/utils.d.ts | 5 - dist/src/utils.js | 16 - dist/src/utils.js.map | 1 - dist/tests/fields.d.ts | 0 dist/tests/fields.js | 274 -------- dist/tests/fields.js.map | 1 - dist/tests/index.d.ts | 0 dist/tests/index.js | 9 - dist/tests/index.js.map | 1 - dist/tests/models.d.ts | 0 dist/tests/models.js | 1330 ------------------------------------- dist/tests/models.js.map | 1 - package.json | 2 +- 28 files changed, 7 insertions(+), 2560 deletions(-) create mode 100644 .npmignore delete mode 100644 dist/example/index.d.ts delete mode 100644 dist/example/index.js delete mode 100644 dist/example/index.js.map delete mode 100644 dist/src/fields.d.ts delete mode 100644 dist/src/fields.js delete mode 100644 dist/src/fields.js.map delete mode 100644 dist/src/index.d.ts delete mode 100644 dist/src/index.js delete mode 100644 dist/src/index.js.map delete mode 100644 dist/src/models.d.ts delete mode 100644 dist/src/models.js delete mode 100644 dist/src/models.js.map delete mode 100644 dist/src/utils.d.ts delete mode 100644 dist/src/utils.js delete mode 100644 dist/src/utils.js.map delete mode 100644 dist/tests/fields.d.ts delete mode 100644 dist/tests/fields.js delete mode 100644 dist/tests/fields.js.map delete mode 100644 dist/tests/index.d.ts delete mode 100644 dist/tests/index.js delete mode 100644 dist/tests/index.js.map delete mode 100644 dist/tests/models.d.ts delete mode 100644 dist/tests/models.js delete mode 100644 dist/tests/models.js.map diff --git a/.gitignore b/.gitignore index 6423b8b..ef909f4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .DS_Store -node_modules .vscode +dist +node_modules diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..8d89e52 --- /dev/null +++ b/.npmignore @@ -0,0 +1,3 @@ +.DS_Store +.vscode +node_modules diff --git a/README.md b/README.md index f3dc2d6..c4b5866 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ > Strongly-typed JavaScript object with support for validation and error handling. -This is a light weight open source package for the **server** and **browser** (using module bundler) written with [TypeScript](https://www.typescriptlang.org). It"s actively maintained, well tested and already used in production environments. The source code is available on [GitHub](https://github.com/xpepermint/rawmodeljs) where you can also find our [issue tracker](https://github.com/xpepermint/rawmodeljs/issues). +This is a light weight open source package for the **server** and **browser** (using module bundler) written with [TypeScript](https://www.typescriptlang.org). It's actively maintained, well tested and already used in production environments. The source code is available on [GitHub](https://github.com/xpepermint/rawmodeljs) where you can also find our [issue tracker](https://github.com/xpepermint/rawmodeljs/issues). ## Related Projects diff --git a/dist/example/index.d.ts b/dist/example/index.d.ts deleted file mode 100644 index e69de29..0000000 diff --git a/dist/example/index.js b/dist/example/index.js deleted file mode 100644 index 21065e7..0000000 --- a/dist/example/index.js +++ /dev/null @@ -1,78 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -exports.__esModule = true; -var src_1 = require("../src"); -var Book = (function (_super) { - __extends(Book, _super); - function Book(data) { - if (data === void 0) { data = {}; } - var _this = _super.call(this, data) || this; - _this.defineField('title', { - type: 'String', - validate: [ - { - validator: 'presence', - message: 'must be present' - }, - ] - }); - _this.populate(data); - _this.commit(); - return _this; - } - return Book; -}(src_1.Model)); -var User = (function (_super) { - __extends(User, _super); - function User(data) { - if (data === void 0) { data = {}; } - var _this = _super.call(this, data) || this; - _this.defineField('name', { - type: 'String', - validate: [ - { - validator: 'presence', - message: 'must be present' - }, - ] - }); - _this.defineField('book', { - type: Book, - validate: [ - { - validator: 'presence', - message: 'must be present' - } - ] - }); - _this.defineField('books', { - type: [Book], - nullValue: [] - }); - _this.populate(data); - _this.commit(); - return _this; - } - return User; -}(src_1.Model)); -var user = new User({ - name: 'John Smith', - book: { - title: 'True Detective' - }, - books: null -}); -user.validate({ quiet: true }).then(function () { - var data = user.serialize(); - process.stdout.write(JSON.stringify(data, null, 2) + '\n'); -}); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/example/index.js.map b/dist/example/index.js.map deleted file mode 100644 index e40c7ca..0000000 --- a/dist/example/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../example/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8BAA+B;AAM/B;IAAmB,wBAAK;IAGtB,cAAoB,IAAS;QAAT,qBAAA,EAAA,SAAS;QAA7B,YACE,kBAAM,IAAI,CAAC,SAcZ;QAZC,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YACxB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QAEH,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;IAChB,CAAC;IACH,WAAC;AAAD,CAAC,AAnBD,CAAmB,WAAK,GAmBvB;AAMD;IAAmB,wBAAK;IAKtB,cAAoB,IAAS;QAAT,qBAAA,EAAA,SAAS;QAA7B,YACE,kBAAM,IAAI,CAAC,SA2BZ;QAzBC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QACH,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,iBAAiB;iBAC3B;aACF;SACF,CAAC,CAAC;QACH,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YACxB,IAAI,EAAE,CAAC,IAAI,CAAC;YACZ,SAAS,EAAE,EAAE;SACd,CAAC,CAAC;QAEH,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,KAAI,CAAC,MAAM,EAAE,CAAC;;IAChB,CAAC;IACH,WAAC;AAAD,CAAC,AAlCD,CAAmB,WAAK,GAkCvB;AAMD,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC;IACpB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE;QACJ,KAAK,EAAE,gBAAgB;KACxB;IACD,KAAK,EAAE,IAAI;CACZ,CAAC,CAAC;AAEH,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,IAAI,CAAC;IAChC,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC7D,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/dist/src/fields.d.ts b/dist/src/fields.d.ts deleted file mode 100644 index ee005df..0000000 --- a/dist/src/fields.d.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { Validator, ValidatorRecipe } from 'validatable'; -import { Handler, HandlerRecipe } from 'handleable'; -import { Model } from './models'; -export interface FieldRecipe { - type?: any; - get?: (v: any) => any; - set?: (v: any) => void; - defaultValue?: any; - fakeValue?: any; - nullValue?: any; - validate?: ValidatorRecipe[]; - handle?: HandlerRecipe[]; - validators?: { - [name: string]: (v?: any, r?: ValidatorRecipe) => boolean | Promise; - }; - handlers?: { - [name: string]: (v?: any, r?: HandlerRecipe) => boolean | Promise; - }; - owner?: Model; - failFast?: boolean; - populatable?: string[]; - serializable?: string[]; - enumerable?: boolean; -} -export interface FieldError { - message?: string; - code?: number; - [key: string]: any; -} -export declare class Field { - protected _data: any; - protected _initialData: any; - protected _validator: Validator; - protected _handler: Handler; - protected _recipe: FieldRecipe; - readonly defaultValue: any; - readonly fakeValue: any; - readonly nullValue: any; - readonly initialValue: any; - readonly populatable: string[]; - readonly serializable: string[]; - readonly enumerable: boolean; - readonly owner: Model; - readonly type: any; - value: any; - errors: FieldError[]; - constructor(recipe?: FieldRecipe); - protected _createValidator(): Validator; - protected _createHandler(): Handler; - protected _getValue(): any; - protected _setValue(data: any): void; - protected _getDefaultValue(): any; - protected _getFakeValue(): any; - protected _getNullValue(): any; - cast(data: any): any; - reset(): this; - fake(): this; - clear(): this; - commit(): this; - rollback(): this; - equals(data: any): boolean; - isChanged(): boolean; - isNested(): boolean; - validate(): Promise; - handle(error: any): Promise; - invalidate(): this; - hasErrors(): boolean; - isValid(): boolean; -} diff --git a/dist/src/fields.js b/dist/src/fields.js deleted file mode 100644 index 4176e73..0000000 --- a/dist/src/fields.js +++ /dev/null @@ -1,294 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [0, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -exports.__esModule = true; -var typeable_1 = require("typeable"); -var utils_1 = require("./utils"); -var validatable_1 = require("validatable"); -var handleable_1 = require("handleable"); -var models_1 = require("./models"); -var Field = (function () { - function Field(recipe) { - var _this = this; - if (!recipe) { - recipe = {}; - } - this.errors = []; - Object.defineProperty(this, 'populatable', { - get: function () { return !typeable_1.isArray(_this._recipe.populatable) ? [] : _this._recipe.populatable; }, - enumerable: true - }); - Object.defineProperty(this, 'serializable', { - get: function () { return !typeable_1.isArray(_this._recipe.serializable) ? [] : _this._recipe.serializable; }, - enumerable: true - }); - Object.defineProperty(this, 'enumerable', { - get: function () { return typeable_1.isUndefined(_this._recipe.enumerable) ? true : !!_this._recipe.enumerable; }, - enumerable: true - }); - Object.defineProperty(this, 'type', { - get: function () { return _this._recipe.type || null; }, - enumerable: true - }); - Object.defineProperty(this, 'owner', { - get: function () { return _this._recipe.owner || null; }, - enumerable: true - }); - Object.defineProperty(this, '_recipe', { - value: Object.freeze(recipe || {}) - }); - Object.defineProperty(this, '_data', { - value: this.cast(this._getDefaultValue()), - writable: true - }); - Object.defineProperty(this, '_initialData', { - value: this.cast(this._getDefaultValue()), - writable: true - }); - Object.defineProperty(this, '_validator', { - value: this._createValidator() - }); - Object.defineProperty(this, '_handler', { - value: this._createHandler() - }); - Object.defineProperty(this, 'value', { - get: function () { return _this._getValue(); }, - set: function (v) { return _this._setValue(v); }, - enumerable: true - }); - Object.defineProperty(this, 'defaultValue', { - get: function () { return _this._getDefaultValue(); }, - enumerable: true - }); - Object.defineProperty(this, 'fakeValue', { - get: function () { return _this._getFakeValue(); }, - enumerable: true - }); - Object.defineProperty(this, 'nullValue', { - get: function () { return _this._getNullValue(); }, - enumerable: true - }); - Object.defineProperty(this, 'initialValue', { - get: function () { return _this._initialData; }, - enumerable: true - }); - } - Field.prototype._createValidator = function () { - var _a = this._recipe, validators = _a.validators, failFast = _a.failFast; - var context = this; - return new validatable_1.Validator({ validators: validators, failFast: failFast, context: context }); - }; - Field.prototype._createHandler = function () { - var _a = this._recipe, handlers = _a.handlers, failFast = _a.failFast; - var context = this; - return new handleable_1.Handler({ handlers: handlers, failFast: failFast, context: context }); - }; - Field.prototype._getValue = function () { - var data = this._data; - var get = this._recipe.get; - if (typeable_1.isFunction(get)) { - data = get.call(this, data); - } - return data; - }; - Field.prototype._setValue = function (data) { - if (typeable_1.isFunction(data)) { - data = data.call(this); - } - var set = this._recipe.set; - if (typeable_1.isFunction(set)) { - data = set.call(this, data); - } - this._data = this.cast(data); - }; - Field.prototype._getDefaultValue = function () { - var data = null; - var defaultValue = this._recipe.defaultValue; - if (typeable_1.isFunction(defaultValue)) { - data = defaultValue.call(this); - } - else if (!typeable_1.isUndefined(defaultValue)) { - data = defaultValue; - } - return data; - }; - Field.prototype._getFakeValue = function () { - var data = null; - var fakeValue = this._recipe.fakeValue; - if (typeable_1.isFunction(fakeValue)) { - data = fakeValue.call(this); - } - else if (!typeable_1.isUndefined(fakeValue)) { - data = fakeValue; - } - return data; - }; - Field.prototype._getNullValue = function () { - var data = null; - var nullValue = this._recipe.nullValue; - if (typeable_1.isFunction(nullValue)) { - data = nullValue.call(this); - } - else if (!typeable_1.isUndefined(nullValue)) { - data = nullValue; - } - return data; - }; - Field.prototype.cast = function (data) { - var _this = this; - var converter = this.type; - if (!typeable_1.isValue(data)) { - return this._getNullValue(); - } - if (this.isNested()) { - var Klass_1 = typeable_1.isArray(this.type) ? this.type[0] : this.type; - var toModel = function (d) { return new Klass_1(utils_1.merge({ parent: _this.owner }, d)).populate(d); }; - converter = typeable_1.isArray(this.type) ? [toModel] : toModel; - } - return typeable_1.cast(data, converter); - }; - Field.prototype.reset = function () { - this.value = this._getDefaultValue(); - return this; - }; - Field.prototype.fake = function () { - if (this.fakeValue) { - this.value = this.fakeValue; - } - (typeable_1.toArray(this.value) || []) - .filter(function (doc) { return doc instanceof models_1.Model; }) - .map(function (doc) { return doc.fake(); }); - return this; - }; - Field.prototype.clear = function () { - this.value = null; - return this; - }; - Field.prototype.commit = function () { - if (typeable_1.isValue(this.value)) { - typeable_1.toArray(this.value) - .filter(function (v) { return v && v.commit; }) - .forEach(function (v) { return v.commit(); }); - } - this._initialData = utils_1.normalize(this.value); - return this; - }; - Field.prototype.rollback = function () { - this.value = this.initialValue; - return this; - }; - Field.prototype.equals = function (data) { - var value = data instanceof Field ? data.value : data; - return utils_1.isEqual(utils_1.normalize(this.value), utils_1.normalize(value)); - }; - Field.prototype.isChanged = function () { - return !this.equals(this.initialValue); - }; - Field.prototype.isNested = function () { - var type = this.type; - if (typeable_1.isArray(type)) - type = type[0]; - return (typeable_1.isPresent(type) - && typeable_1.isPresent(type.prototype) - && (type.prototype instanceof models_1.Model - || type.prototype.constructor === models_1.Model)); - }; - Field.prototype.validate = function () { - return __awaiter(this, void 0, void 0, function () { - var _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: return [4, Promise.all((typeable_1.toArray(this.value) || []) - .filter(function (doc) { return doc instanceof models_1.Model; }) - .map(function (doc) { return doc.validate({ quiet: true }); }))]; - case 1: - _b.sent(); - _a = this; - return [4, this._validator.validate(this.value, this._recipe.validate)]; - case 2: - _a.errors = _b.sent(); - return [2, this]; - } - }); - }); - }; - Field.prototype.handle = function (error) { - return __awaiter(this, void 0, void 0, function () { - var _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: return [4, Promise.all((typeable_1.toArray(this.value) || []) - .filter(function (doc) { return doc instanceof models_1.Model; }) - .map(function (doc) { return doc.handle(error); }))["catch"](function () { })]; - case 1: - _b.sent(); - _a = this; - return [4, this._handler.handle(error, this._recipe.handle)]; - case 2: - _a.errors = _b.sent(); - return [2, this]; - } - }); - }); - }; - Field.prototype.invalidate = function () { - (typeable_1.toArray(this.value) || []) - .filter(function (doc) { return doc instanceof models_1.Model; }) - .forEach(function (doc) { return doc.invalidate(); }); - this.errors = []; - return this; - }; - Field.prototype.hasErrors = function () { - if (this.errors.length > 0) { - return true; - } - else if (!this.isNested()) { - return false; - } - else if (typeable_1.isPresent(this.value)) { - return typeable_1.toArray(this.value) - .filter(function (f) { return !!f; }) - .some(function (f) { return f.hasErrors(); }); - } - return false; - }; - Field.prototype.isValid = function () { - return !this.hasErrors(); - }; - return Field; -}()); -exports.Field = Field; -//# sourceMappingURL=fields.js.map \ No newline at end of file diff --git a/dist/src/fields.js.map b/dist/src/fields.js.map deleted file mode 100644 index 1433a81..0000000 --- a/dist/src/fields.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/index.d.ts b/dist/src/index.d.ts deleted file mode 100644 index a63048d..0000000 --- a/dist/src/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './models'; -export * from './fields'; -export * from './utils'; diff --git a/dist/src/index.js b/dist/src/index.js deleted file mode 100644 index e82a597..0000000 --- a/dist/src/index.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict"; -function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} -exports.__esModule = true; -__export(require("./models")); -__export(require("./fields")); -__export(require("./utils")); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/src/index.js.map b/dist/src/index.js.map deleted file mode 100644 index 3f0fe92..0000000 --- a/dist/src/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;AAAA,8BAAyB;AACzB,8BAAyB;AACzB,6BAAwB"} \ No newline at end of file diff --git a/dist/src/models.d.ts b/dist/src/models.d.ts deleted file mode 100644 index 9a59a09..0000000 --- a/dist/src/models.d.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { ValidatorRecipe } from 'validatable'; -import { HandlerRecipe } from 'handleable'; -import { Field, FieldRecipe, FieldError } from './fields'; -export interface FieldRef { - path: (string | number)[]; - field: Field; -} -export interface FieldErrorRef { - path: (string | number)[]; - errors: FieldError[]; -} -export interface ModelRecipe { - parent?: Model; - [key: string]: any; -} -export declare abstract class Model { - protected _fields: { - [name: string]: Field; - }; - protected _types: { - [key: string]: (v?: any) => any; - }; - protected _validators: { - [key: string]: (v?: any, r?: ValidatorRecipe) => boolean | Promise; - }; - protected _handlers: { - [key: string]: (v?: any, r?: HandlerRecipe) => boolean | Promise; - }; - protected _failFast: boolean; - readonly root: Model; - parent: Model; - constructor(recipe?: ModelRecipe); - protected _getRootModel(): Model; - protected _getFieldType(recipe?: FieldRecipe): any; - protected _createField(recipe?: FieldRecipe): Field; - protected _createValidationError(message?: string, code?: number): FieldError; - protected _createModel(recipe?: ModelRecipe): any; - failFast(fail?: boolean): void; - defineField(name: string, recipe?: FieldRecipe): void; - defineType(name: string, converter: (v?: any) => any): void; - defineValidator(name: string, handler: (v?: any, r?: ValidatorRecipe) => boolean | Promise): void; - defineHandler(name: string, handler: (e?: any, r?: HandlerRecipe) => boolean | Promise): void; - getField(...keys: any[]): Field; - hasField(...keys: any[]): boolean; - populate(data?: {}, strategy?: string): this; - serialize(strategy?: string): { - [key: string]: any; - }; - flatten(prefix?: string[]): FieldRef[]; - collect(handler: (field: FieldRef) => any): any[]; - scroll(handler: (field: FieldRef) => void): number; - filter(test: (field: FieldRef) => boolean): { - [key: string]: any; - }; - reset(): this; - fake(): this; - clear(): this; - commit(): this; - rollback(): this; - equals(value: any): boolean; - isChanged(): boolean; - isNested(): boolean; - validate({quiet}?: { - quiet?: boolean; - }): Promise; - handle(error: any, {quiet}?: { - quiet?: boolean; - }): Promise; - collectErrors(): FieldErrorRef[]; - applyErrors(errors?: FieldErrorRef[]): this; - hasErrors(): boolean; - isValid(): boolean; - invalidate(): this; - clone(data?: {}): this; -} diff --git a/dist/src/models.js b/dist/src/models.js deleted file mode 100644 index 6f1fb21..0000000 --- a/dist/src/models.js +++ /dev/null @@ -1,387 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [0, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -exports.__esModule = true; -var typeable_1 = require("typeable"); -var fields_1 = require("./fields"); -var utils_1 = require("./utils"); -var Model = (function () { - function Model(recipe) { - var _this = this; - if (!recipe) { - recipe = {}; - } - Object.defineProperty(this, 'parent', { - value: recipe.parent || this.parent || null, - writable: true - }); - Object.defineProperty(this, 'root', { - get: function () { return _this._getRootModel(); } - }); - Object.defineProperty(this, '_fields', { - value: {}, - writable: true - }); - Object.defineProperty(this, '_types', { - value: {}, - writable: true - }); - Object.defineProperty(this, '_validators', { - value: {}, - writable: true - }); - Object.defineProperty(this, '_handlers', { - value: {}, - writable: true - }); - Object.defineProperty(this, '_failFast', { - value: false, - writable: true - }); - } - Model.prototype._getRootModel = function () { - var root = this; - do { - if (root.parent) { - root = root.parent; - } - else { - return root; - } - } while (true); - }; - Model.prototype._getFieldType = function (recipe) { - if (recipe === void 0) { recipe = {}; } - var type = typeable_1.isArray(recipe.type) ? recipe.type[0] : recipe.type; - type = this._types[type] || type; - return typeable_1.isArray(recipe.type) ? [type] : type; - }; - Model.prototype._createField = function (recipe) { - if (recipe === void 0) { recipe = {}; } - return new fields_1.Field(utils_1.merge({}, recipe, { - type: this._getFieldType(recipe), - owner: this, - validators: this._validators, - handlers: this._handlers, - failFast: this._failFast - })); - }; - Model.prototype._createValidationError = function (message, code) { - if (message === void 0) { message = 'Validation failed'; } - if (code === void 0) { code = 422; } - var error = new Error(message); - error.code = code; - return error; - }; - Model.prototype._createModel = function (recipe) { - if (recipe === void 0) { recipe = {}; } - return new this.constructor(recipe); - }; - Model.prototype.failFast = function (fail) { - if (fail === void 0) { fail = true; } - this._failFast = typeable_1.toBoolean(fail); - }; - Model.prototype.defineField = function (name, recipe) { - if (recipe === void 0) { recipe = {}; } - var field = this._createField(recipe); - Object.defineProperty(this, name, { - get: function () { return field.value; }, - set: function (v) { return field.value = v; }, - enumerable: recipe.enumerable !== false, - configurable: true - }); - this._fields[name] = field; - }; - Model.prototype.defineType = function (name, converter) { - this._types[name] = converter; - }; - Model.prototype.defineValidator = function (name, handler) { - this._validators[name] = handler; - }; - Model.prototype.defineHandler = function (name, handler) { - this._handlers[name] = handler; - }; - Model.prototype.getField = function () { - var keys = []; - for (var _i = 0; _i < arguments.length; _i++) { - keys[_i] = arguments[_i]; - } - keys = [].concat(typeable_1.isArray(keys[0]) ? keys[0] : keys); - var lastKey = keys.pop(); - if (keys.length === 0) { - return this._fields[lastKey]; - } - var field = keys.reduce(function (a, c) { return (a[c] || {}); }, this); - return field instanceof Model ? field.getField(lastKey) : undefined; - }; - Model.prototype.hasField = function () { - var keys = []; - for (var _i = 0; _i < arguments.length; _i++) { - keys[_i] = arguments[_i]; - } - return !typeable_1.isUndefined(this.getField.apply(this, keys)); - }; - Model.prototype.populate = function (data, strategy) { - var _this = this; - if (data === void 0) { data = {}; } - function toValue(value) { - if (value instanceof Model) { - var data_1 = utils_1.normalize(value); - return value.reset().populate(data_1, strategy); - } - else if (typeable_1.isArray(value)) { - return value.map(function (v) { return toValue(v); }); - } - else { - return value; - } - } - Object.keys(data || {}) - .filter(function (n) { return (!!_this._fields[n]); }) - .forEach(function (name) { - var field = _this._fields[name]; - var value = field.cast(data[name]); - if (typeable_1.isString(strategy) - && typeable_1.isArray(field.populatable) - && field.populatable.indexOf(strategy) !== -1 - || !typeable_1.isString(strategy)) { - _this[name] = toValue(value); - } - }); - return this; - }; - Model.prototype.serialize = function (strategy) { - var _this = this; - var data = {}; - function toObject(value) { - if (value instanceof Model) { - return value.serialize(strategy); - } - else if (typeable_1.isArray(value)) { - return value.map(function (v) { return toObject(v); }); - } - else { - return value; - } - } - Object.keys(this._fields).forEach(function (name) { - var field = _this._fields[name]; - if (typeable_1.isString(strategy) - && typeable_1.isArray(field.serializable) - && field.serializable.indexOf(strategy) !== -1 - || !typeable_1.isString(strategy)) { - data[name] = toObject(field.value); - } - }); - return data; - }; - Model.prototype.flatten = function (prefix) { - var _this = this; - if (prefix === void 0) { prefix = []; } - var fields = []; - Object.keys(this._fields).forEach(function (name) { - var field = _this._fields[name]; - var type = field.type; - var path = (prefix || []).concat(name); - var value = field.value; - fields.push({ path: path, field: field }); - if (typeable_1.isPresent(value) && typeable_1.isPresent(type)) { - if (type.prototype instanceof Model) { - fields = fields.concat(value.flatten(path)); - } - else if (typeable_1.isArray(type) && type[0].prototype instanceof Model) { - fields = fields.concat(value - .map(function (f, i) { return (f && f instanceof Model ? f.flatten(path.concat([i])) : null); }) - .filter(function (f) { return typeable_1.isArray(f); }) - .reduce(function (a, b) { return a.concat(b); }, [])); - } - } - }); - return fields; - }; - Model.prototype.collect = function (handler) { - return this.flatten().map(handler); - }; - Model.prototype.scroll = function (handler) { - return this.flatten().map(handler).length; - }; - Model.prototype.filter = function (test) { - var data = this.serialize(); - this.flatten() - .sort(function (a, b) { return b.path.length - a.path.length; }) - .filter(function (field) { return !test(field); }) - .forEach(function (field) { - var names = field.path.concat(); - var lastName = names.pop(); - delete names.reduce(function (o, k) { return o[k]; }, data)[lastName]; - }); - return data; - }; - Model.prototype.reset = function () { - var _this = this; - Object.keys(this._fields) - .forEach(function (name) { return _this._fields[name].reset(); }); - return this; - }; - Model.prototype.fake = function () { - var _this = this; - Object.keys(this._fields) - .forEach(function (name) { return _this._fields[name].fake(); }); - return this; - }; - Model.prototype.clear = function () { - var _this = this; - Object.keys(this._fields) - .forEach(function (name) { return _this._fields[name].clear(); }); - return this; - }; - Model.prototype.commit = function () { - var _this = this; - Object.keys(this._fields) - .forEach(function (name) { return _this._fields[name].commit(); }); - return this; - }; - Model.prototype.rollback = function () { - var _this = this; - Object.keys(this._fields) - .forEach(function (name) { return _this._fields[name].rollback(); }); - return this; - }; - Model.prototype.equals = function (value) { - return utils_1.isEqual(utils_1.normalize(this), utils_1.normalize(value)); - }; - Model.prototype.isChanged = function () { - var _this = this; - return Object.keys(this._fields) - .some(function (name) { return _this._fields[name].isChanged(); }); - }; - Model.prototype.isNested = function () { - var _this = this; - return Object.keys(this._fields) - .some(function (name) { return _this._fields[name].isNested(); }); - }; - Model.prototype.validate = function (_a) { - var _b = (_a === void 0 ? {} : _a).quiet, quiet = _b === void 0 ? false : _b; - return __awaiter(this, void 0, void 0, function () { - var fields; - return __generator(this, function (_c) { - switch (_c.label) { - case 0: - fields = this._fields; - return [4, Promise.all(Object.keys(fields) - .map(function (n) { return fields[n].validate(); }))]; - case 1: - _c.sent(); - if (!quiet && this.hasErrors()) { - throw this._createValidationError(); - } - return [2, this]; - } - }); - }); - }; - Model.prototype.handle = function (error, _a) { - var _b = (_a === void 0 ? {} : _a).quiet, quiet = _b === void 0 ? true : _b; - return __awaiter(this, void 0, void 0, function () { - var fields; - return __generator(this, function (_c) { - switch (_c.label) { - case 0: - if (!error) - return [2, this]; - if (error.code === 422) - return [2, this]; - fields = this._fields; - return [4, Promise.all(Object.keys(fields) - .map(function (n) { return fields[n].handle(error); }))]; - case 1: - _c.sent(); - if (!quiet && this.hasErrors()) { - throw this._createValidationError(); - } - else if (!this.hasErrors()) { - throw error; - } - return [2, this]; - } - }); - }); - }; - Model.prototype.collectErrors = function () { - return this.flatten() - .map(function (_a) { - var path = _a.path, field = _a.field; - return ({ path: path, errors: field.errors }); - }) - .filter(function (_a) { - var path = _a.path, errors = _a.errors; - return errors.length > 0; - }); - }; - Model.prototype.applyErrors = function (errors) { - var _this = this; - if (errors === void 0) { errors = []; } - errors.forEach(function (error) { - var field = _this.getField.apply(_this, error.path); - if (field) { - field.errors = error.errors; - } - }); - return this; - }; - Model.prototype.hasErrors = function () { - var _this = this; - return Object.keys(this._fields) - .some(function (name) { return _this._fields[name].hasErrors(); }); - }; - Model.prototype.isValid = function () { - return !this.hasErrors(); - }; - Model.prototype.invalidate = function () { - var _this = this; - Object.keys(this._fields) - .forEach(function (name) { return _this._fields[name].invalidate(); }); - return this; - }; - Model.prototype.clone = function (data) { - if (data === void 0) { data = {}; } - return this._createModel({ parent: this.parent }) - .populate(utils_1.merge({}, this.serialize(), data)); - }; - return Model; -}()); -exports.Model = Model; -//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/dist/src/models.js.map b/dist/src/models.js.map deleted file mode 100644 index 6659b41..0000000 --- a/dist/src/models.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/utils.d.ts b/dist/src/utils.d.ts deleted file mode 100644 index d1b6097..0000000 --- a/dist/src/utils.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import merge = require('lodash.merge'); -import isEqual = require('lodash.isequal'); -export { merge }; -export { isEqual }; -export declare function normalize(data: any): any; diff --git a/dist/src/utils.js b/dist/src/utils.js deleted file mode 100644 index cff358a..0000000 --- a/dist/src/utils.js +++ /dev/null @@ -1,16 +0,0 @@ -"use strict"; -exports.__esModule = true; -var merge = require("lodash.merge"); -exports.merge = merge; -var isEqual = require("lodash.isequal"); -exports.isEqual = isEqual; -function normalize(data) { - if (typeof data === 'undefined') { - return undefined; - } - else { - return JSON.parse(JSON.stringify(data)); - } -} -exports.normalize = normalize; -//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/dist/src/utils.js.map b/dist/src/utils.js.map deleted file mode 100644 index 8afbe49..0000000 --- a/dist/src/utils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;AAAA,oCAAuC;AAM/B,sBAAK;AALb,wCAA2C;AAUnC,0BAAO;AAKf,mBAA2B,IAAS;IAClC,EAAE,CAAC,CAAC,OAAO,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,SAAS,CAAC;IACnB,CAAC;IAAC,IAAI,CAAC,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAND,8BAMC"} \ No newline at end of file diff --git a/dist/tests/fields.d.ts b/dist/tests/fields.d.ts deleted file mode 100644 index e69de29..0000000 diff --git a/dist/tests/fields.js b/dist/tests/fields.js deleted file mode 100644 index 28ebe1a..0000000 --- a/dist/tests/fields.js +++ /dev/null @@ -1,274 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [0, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -var _this = this; -exports.__esModule = true; -var ava_1 = require("ava"); -var src_1 = require("../src"); -ava_1["default"]('nullifies a value by default', function (t) { - var f = new src_1.Field(); - t.is(f.value, null); -}); -ava_1["default"]('provides getter and setter for the current value', function (t) { - var f = new src_1.Field(); - f.value = 'foo'; - t.is(f.value, 'foo'); -}); -ava_1["default"]('supports custom getter and setter for the current value', function (t) { - var f0 = new src_1.Field({ get: function (v) { return v + "-" + this.constructor.name; } }); - var f1 = new src_1.Field({ set: function (v) { return v + "-" + this.constructor.name; } }); - f0.value = 'foo'; - f1.value = 'foo'; - t.is(f0.value, 'foo-Field'); - t.is(f1.value, 'foo-Field'); -}); -ava_1["default"]('can automatically cast a value to a specific data type', function (t) { - var f0 = new src_1.Field({ type: ['String'] }); - var f1 = new src_1.Field({ type: function (v) { return v + "-foo"; } }); - f0.value = 100; - f1.value = 100; - t.deepEqual(f0.value, ['100']); - t.deepEqual(f1.value, '100-foo'); -}); -ava_1["default"]('can have a default value', function (t) { - var f0 = new src_1.Field({ defaultValue: 'foo' }); - var f1 = new src_1.Field({ defaultValue: function () { return this.constructor.name; } }); - var f2 = new src_1.Field({ defaultValue: function () { return Math.random(); } }); - t.is(f0.value, 'foo'); - t.is(f1.value, 'Field'); - t.is(f0.defaultValue, 'foo'); - t.is(f1.defaultValue, 'Field'); - t.is(f2.defaultValue !== f2.defaultValue, true); -}); -ava_1["default"]('can have a fake value', function (t) { - var f0 = new src_1.Field({ fakeValue: 'foo' }); - var f1 = new src_1.Field({ fakeValue: function () { return this.constructor.name; } }); - var f2 = new src_1.Field({ fakeValue: function () { return Math.random(); } }); - t.is(f0.fakeValue, 'foo'); - t.is(f1.fakeValue, 'Field'); - t.is(f2.fakeValue !== f2.fakeValue, true); -}); -ava_1["default"]('can have a null value', function (t) { - var f0 = new src_1.Field({ nullValue: 'foo' }); - var f1 = new src_1.Field({ nullValue: function () { return this.constructor.name; } }); - var f2 = new src_1.Field({ nullValue: function () { return Math.random(); } }); - t.is(f0.value, 'foo'); - t.is(f1.value, 'Field'); - t.is(f0.nullValue, 'foo'); - t.is(f1.nullValue, 'Field'); - t.is(f2.nullValue !== f2.nullValue, true); -}); -ava_1["default"]('method `reset()` sets value to the default value', function (t) { - var f0 = new src_1.Field(); - var f1 = new src_1.Field({ defaultValue: 'foo' }); - var f2 = new src_1.Field({ defaultValue: function () { return Math.random(); } }); - t.is(f0.value, null); - f1.value = 'bar'; - f1.reset(); - t.is(f1.value, 'foo'); - f2.reset(); - t.is(f1.value !== f2.value, true); -}); -ava_1["default"]('method `fake()` sets value to the fake value', function (t) { - var f0 = new src_1.Field(); - var f1 = new src_1.Field({ fakeValue: 'foo' }); - var f2 = new src_1.Field({ fakeValue: function () { return Math.random(); } }); - f0.value = 'foo'; - f0.fake(); - t.is(f0.value, 'foo'); - f1.value = 'bar'; - f1.fake(); - t.is(f1.value, 'foo'); - f2.value = 'foo'; - f2.fake(); - t.is(f2.value !== f1.value, true); -}); -ava_1["default"]('method `clear()` sets value to `null`', function (t) { - var f0 = new src_1.Field(); - var f1 = new src_1.Field({ nullValue: 'null' }); - f0.value = 'foo'; - f0.errors = [ - { validator: 'foo', message: 'bar', code: 422 } - ]; - f0.clear(); - f1.value = 'foo'; - f1.clear(); - t.is(f0.errors.length, 1); - t.is(f0.value, null); - t.is(f1.value, 'null'); -}); -ava_1["default"]('methods `commit()` and `rollback()` manage committed value state', function (t) { - var f = new src_1.Field(); - f.value = 'foo'; - t.is(f.initialValue, null); - f.commit(); - t.is(f.initialValue, 'foo'); - f.value = 'bar'; - f.rollback(); - t.is(f.value, 'foo'); -}); -ava_1["default"]('method `equals()` returns `true` when the provided `data` equals to the current value', function (t) { - var f0 = new src_1.Field(); - var f1 = new src_1.Field(); - f0.value = 'foo'; - f1.value = 'foo'; - t.is(f0.equals(f1), true); - t.is(f0.equals(f1.value), true); -}); -ava_1["default"]('method `isChanged()` returns `true` if the value have been changed', function (t) { - var f0 = new src_1.Field(); - var f1 = new src_1.Field({ type: 'String', defaultValue: 'foo' }); - var f2 = new src_1.Field({ type: ['String'], defaultValue: ['foo'] }); - t.is(f0.isChanged(), false); - f0.value = 'foo'; - t.is(f0.isChanged(), true); - t.is(f1.isChanged(), false); - t.is(f2.isChanged(), false); -}); -ava_1["default"]('method `isNested()` returns `true` if the field type is un instance of a Model', function (t) { - var f0 = new src_1.Field(); - var f1 = new src_1.Field({ type: [src_1.Model] }); - var f2 = new src_1.Field({ type: [(function (_super) { - __extends(User, _super); - function User() { - return _super !== null && _super.apply(this, arguments) || this; - } - return User; - }(src_1.Model))] }); - t.is(f0.isNested(), false); - t.is(f1.isNested(), true); - t.is(f2.isNested(), true); -}); -ava_1["default"]('method `validate()` validates the value and populates the `errors` property', function (t) { return __awaiter(_this, void 0, void 0, function () { - var f; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - f = new src_1.Field({ - validate: [ - { validator: 'presence', message: 'foo' }, - { validator: 'coolness', message: 'is not cool' }, - { validator: 'coolness', code: 999 }, - ], - validators: { - coolness: function () { return this.value === 'cool'; } - } - }); - return [4, f.validate()]; - case 1: - _a.sent(); - t.deepEqual(f.errors, [ - { validator: 'presence', message: 'foo', code: 422 }, - { validator: 'coolness', message: 'is not cool', code: 422 }, - { validator: 'coolness', message: undefined, code: 999 }, - ]); - return [2]; - } - }); -}); }); -ava_1["default"]('method `invalidate()` clears the `errors` property', function (t) { - var f = new src_1.Field(); - f.errors.push({ message: 'foo' }); - f.invalidate(); - t.deepEqual(f.errors, []); -}); -ava_1["default"]('method `hasErrors()` returns `true` when errors exist', function (t) { - var f = new src_1.Field(); - t.is(f.hasErrors(), false); - f.errors.push({ message: 'foo' }); - t.is(f.hasErrors(), true); -}); -ava_1["default"]('method `isValid()` returns `true` when no errors exist', function (t) { - var f = new src_1.Field(); - t.is(f.isValid(), true); - f.errors.push({ message: 'foo' }); - t.is(f.isValid(), false); -}); -ava_1["default"]('has enumeratable properties', function (t) { - var f = new src_1.Field(); - t.deepEqual(Object.keys(f), [ - 'errors', - 'populatable', - 'serializable', - 'enumerable', - 'type', - 'owner', - 'value', - 'defaultValue', - 'fakeValue', - 'nullValue', - 'initialValue', - ]); -}); -ava_1["default"]('method `handle()` handles an error and populates the `errors` property', function (t) { return __awaiter(_this, void 0, void 0, function () { - var f, e; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - f = new src_1.Field({ - handle: [ - { handler: 'block', block: function () { return true; }, message: 'foo' }, - { handler: 'coolness', message: 'cool' }, - { handler: 'coolness', code: 999 }, - ], - handlers: { - coolness: function (error) { return error.message === 'cool'; } - } - }); - e = new Error('cool'); - return [4, f.handle(e)]; - case 1: - _a.sent(); - t.deepEqual(f.errors, [ - { handler: 'block', message: 'foo', code: 422 }, - { handler: 'coolness', message: 'cool', code: 422 }, - { handler: 'coolness', message: undefined, code: 999 }, - ]); - return [2]; - } - }); -}); }); -//# sourceMappingURL=fields.js.map \ No newline at end of file diff --git a/dist/tests/fields.js.map b/dist/tests/fields.js.map deleted file mode 100644 index 53a2b31..0000000 --- a/dist/tests/fields.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../tests/fields.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/index.d.ts b/dist/tests/index.d.ts deleted file mode 100644 index e69de29..0000000 diff --git a/dist/tests/index.js b/dist/tests/index.js deleted file mode 100644 index 6abcc0c..0000000 --- a/dist/tests/index.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict"; -exports.__esModule = true; -var ava_1 = require("ava"); -var objectschema = require("../src"); -ava_1["default"]('exposed content', function (t) { - t.is(!!objectschema.Model, true); - t.is(!!objectschema.Field, true); -}); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/tests/index.js.map b/dist/tests/index.js.map deleted file mode 100644 index a481f2e..0000000 --- a/dist/tests/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../tests/index.ts"],"names":[],"mappings":";;AAAA,2BAAuB;AACvB,qCAAuC;AAEvC,gBAAI,CAAC,iBAAiB,EAAE,UAAC,CAAC;IACxB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/dist/tests/models.d.ts b/dist/tests/models.d.ts deleted file mode 100644 index e69de29..0000000 diff --git a/dist/tests/models.js b/dist/tests/models.js deleted file mode 100644 index ef062f9..0000000 --- a/dist/tests/models.js +++ /dev/null @@ -1,1330 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [0, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -var _this = this; -exports.__esModule = true; -var ava_1 = require("ava"); -var src_1 = require("../src"); -ava_1["default"]('method `defineField` initializes nullified enumerable property', function (t) { - var user = new (function (_super) { - __extends(User, _super); - function User() { - var _this = _super.call(this) || this; - _this.defineField('name'); - return _this; - } - return User; - }(src_1.Model)); - var descriptor = Object.getOwnPropertyDescriptor(user, 'name'); - t.is(typeof descriptor.get, 'function'); - t.is(typeof descriptor.set, 'function'); - t.is(descriptor.enumerable, true); - t.is(descriptor.configurable, true); - t.is(user.name, null); -}); -ava_1["default"]('method `defineType` defines a custom data type', function (t) { - var user = new (function (_super) { - __extends(User, _super); - function User() { - var _this = _super.call(this) || this; - _this.defineType('cool', function (v) { return v + "-cool"; }); - _this.defineField('name0', { type: 'cool' }); - _this.defineField('name1', { type: ['cool'] }); - return _this; - } - return User; - }(src_1.Model)); - user.name0 = 'foo'; - user.name1 = ['foo']; - t.is(user.name0, 'foo-cool'); - t.deepEqual(user.name1, ['foo-cool']); -}); -ava_1["default"]('method `populate` deeply assignes data', function (t) { - var Book = (function (_super) { - __extends(Book, _super); - function Book(data) { - if (data === void 0) { data = {}; } - var _this = _super.call(this, data) || this; - _this.defineField('id', { type: 'Integer', populatable: ['output'] }); - _this.defineField('title', { type: 'String' }); - _this.defineField('description', { type: 'String', populatable: ['input'] }); - return _this; - } - return Book; - }(src_1.Model)); - var User = (function (_super) { - __extends(User, _super); - function User(data) { - if (data === void 0) { data = {}; } - var _this = _super.call(this, data) || this; - _this.defineField('id', { type: 'Integer', populatable: ['output'] }); - _this.defineField('name', { type: 'String' }); - _this.defineField('email', { type: 'String', populatable: ['input'] }); - _this.defineField('book0', { type: Book, populatable: ['output'] }); - _this.defineField('book1', { type: Book }); - _this.defineField('books', { type: [Book], populatable: ['input'] }); - _this.populate(data); - return _this; - } - return User; - }(src_1.Model)); - var data = { - id: '100', - name: 100, - email: 'foo@bar.com', - book0: { - id: '200', - title: 200, - description: 'fake' - }, - book1: undefined, - books: [ - undefined, - { - id: '300', - title: 300, - description: 'fake' - }, - ] - }; - var user0 = new User(); - var user1 = new User(); - var user2 = new User(); - user0.populate(null); - user0.populate(false); - user0.populate(''); - user0.populate(true); - user0.populate(100); - user0.populate(data); - user1.populate(data, 'input'); - user2.populate(data, 'output'); - t.is(user0.id, 100); - t.is(user0.name, '100'); - t.is(user0.book0.id, 200); - t.is(user0.book0.title, '200'); - t.is(user0.book1, null); - t.is(user0.books[0], null); - t.is(user0.books[1].title, '300'); - t.is(user1.id, null); - t.is(user1.name, null); - t.is(user1.email, 'foo@bar.com'); - t.is(user1.book0, null); - t.is(user1.book1, null); - t.is(user1.books[0], null); - t.is(user1.books[1].id, null); - t.is(user1.books[1].title, null); - t.is(user1.books[1].description, 'fake'); - t.is(user2.id, 100); - t.is(user2.name, null); - t.is(user2.email, null); - t.is(user2.book0.id, 200); - t.is(user2.book0.title, null); - t.is(user2.book0.description, null); - t.is(user2.book1, null); - t.is(user2.books, null); -}); -ava_1["default"]('property `parent` holds an instance of a parent model', function (t) { - var Book = (function (_super) { - __extends(Book, _super); - function Book(data) { - var _this = _super.call(this, data) || this; - _this.defineField('title', { type: 'String' }); - return _this; - } - return Book; - }(src_1.Model)); - var User = (function (_super) { - __extends(User, _super); - function User(data) { - var _this = _super.call(this, data) || this; - _this.defineField('name', { type: 'String' }); - _this.defineField('book', { type: Book }); - _this.defineField('books', { type: [Book] }); - _this.populate(data); - return _this; - } - return User; - }(src_1.Model)); - var user = new User({ - book: { - title: 200 - }, - books: [ - undefined, - { - title: 300 - } - ] - }); - t.is(user.parent, null); - t.is(user.propertyIsEnumerable('parent'), false); - t.is(user.book.parent, user); - t.is(user.books[1].parent, user); -}); -ava_1["default"]('property `root` return the first model in a tree of nested models', function (t) { - var Book = (function (_super) { - __extends(Book, _super); - function Book(data) { - var _this = _super.call(this, data) || this; - _this.defineField('title'); - return _this; - } - return Book; - }(src_1.Model)); - var User = (function (_super) { - __extends(User, _super); - function User(data) { - var _this = _super.call(this, data) || this; - _this.defineField('book', { type: Book }); - _this.populate(data); - return _this; - } - return User; - }(src_1.Model)); - var user = new User({ - book: { - title: 200 - } - }); - t.is(user.root, user); - t.is(user.book.root, user); -}); -ava_1["default"]('method `getField` returns an instance of a field at path', function (t) { - var Book = (function (_super) { - __extends(Book, _super); - function Book(data) { - var _this = _super.call(this, data) || this; - _this.defineField('title', { type: 'String' }); - return _this; - } - return Book; - }(src_1.Model)); - var User = (function (_super) { - __extends(User, _super); - function User(data) { - var _this = _super.call(this, data) || this; - _this.defineField('name', { type: 'String' }); - _this.defineField('book', { type: Book }); - _this.defineField('books', { type: [Book] }); - _this.populate(data); - return _this; - } - return User; - }(src_1.Model)); - var user = new User({ - name: 'foo', - book: { - title: 'bar' - }, - books: [ - undefined, - { - title: 'baz' - } - ] - }); - t.is(user.getField(['name']).value, 'foo'); - t.is(user.getField('name').value, 'foo'); - t.is(user.getField(['book', 'title']).value, 'bar'); - t.is(user.getField('book', 'title').value, 'bar'); - t.is(user.getField(['books', 1, 'title']).value, 'baz'); - t.is(user.getField('books', 1, 'title').value, 'baz'); - t.is(user.getField(['fake']), undefined); - t.is(user.getField(['fake', 10, 'title']), undefined); - t.is(user.getField(), undefined); -}); -ava_1["default"]('method `hasField` returns `true` if the field exists', function (t) { - var User = (function (_super) { - __extends(User, _super); - function User(data) { - if (data === void 0) { data = {}; } - var _this = _super.call(this, data) || this; - _this.defineField('name', { type: 'String' }); - return _this; - } - return User; - }(src_1.Model)); - var user = new User(); - t.is(user.hasField(['name']), true); - t.is(user.hasField(['book', 'title']), false); -}); -ava_1["default"]('method `serialize` converts model into a serialized data object', function (t) { - var Book = (function (_super) { - __extends(Book, _super); - function Book(data) { - var _this = _super.call(this, data) || this; - _this.defineField('title', { type: 'String' }); - _this.defineField('description', { serializable: ['output'] }); - return _this; - } - return Book; - }(src_1.Model)); - var User = (function (_super) { - __extends(User, _super); - function User(data) { - var _this = _super.call(this, data) || this; - _this.defineField('id', { type: function (v) { return new Object(v); }, serializable: [] }); - _this.defineField('name', { type: 'String', serializable: null }); - _this.defineField('description', { serializable: ['input', 'output'] }); - _this.defineField('book', { type: Book, serializable: ['output'] }); - _this.defineField('books', { type: [Book] }); - _this.populate(data); - return _this; - } - return User; - }(src_1.Model)); - var user = new User({ - id: new Object('59efbadde01a49055b39711f'), - name: 'foo', - description: 'des', - book: { - title: 'bar' - }, - books: [ - undefined, - { - title: 'baz' - } - ] - }); - t.deepEqual(user.serialize(), { - id: new Object('59efbadde01a49055b39711f'), - name: 'foo', - description: 'des', - book: { - title: 'bar', - description: null - }, - books: [ - null, - { - title: 'baz', - description: null - }, - ] - }); - t.deepEqual(user.serialize('input'), { - description: 'des' - }); - t.deepEqual(user.serialize('output'), { - description: 'des', - book: { - description: null - } - }); -}); -ava_1["default"]('method `flatten` returns an array of fields', function (t) { return __awaiter(_this, void 0, void 0, function () { - var Book, User, user; - return __generator(this, function (_a) { - Book = (function (_super) { - __extends(Book, _super); - function Book(data) { - var _this = _super.call(this, data) || this; - _this.defineField('title', { type: 'String' }); - return _this; - } - return Book; - }(src_1.Model)); - User = (function (_super) { - __extends(User, _super); - function User(data) { - var _this = _super.call(this, data) || this; - _this.defineField('name', { type: 'String' }); - _this.defineField('book', { type: Book }); - _this.defineField('books', { type: [Book] }); - _this.populate(data); - return _this; - } - return User; - }(src_1.Model)); - user = new User({ - name: 'foo', - book: { - title: 'bar' - }, - books: [ - undefined, - { - title: 'baz' - } - ] - }); - t.deepEqual(user.flatten().map(function (f) { return f.path; }), [ - ['name'], - ['book'], - ['book', 'title'], - ['books'], - ['books', 1, 'title'] - ]); - t.deepEqual(Object.keys(user.flatten()[0]), ['path', 'field']); - t.deepEqual(user.flatten()[0].path, ['name']); - t.is(user.flatten()[0].field.value, 'foo'); - return [2]; - }); -}); }); -ava_1["default"]('method `collect` returns an array of results', function (t) { - var Book = (function (_super) { - __extends(Book, _super); - function Book(data) { - var _this = _super.call(this, data) || this; - _this.defineField('title', { type: 'String' }); - return _this; - } - return Book; - }(src_1.Model)); - var User = (function (_super) { - __extends(User, _super); - function User(data) { - var _this = _super.call(this, data) || this; - _this.defineField('name', { type: 'String' }); - _this.defineField('book', { type: Book }); - _this.populate(data); - return _this; - } - return User; - }(src_1.Model)); - var user = new User({ - name: 'foo', - book: { - title: 'bar' - } - }); - var results = user.collect(function (_a) { - var path = _a.path; - return path; - }); - t.deepEqual(results, [ - ['name'], - ['book'], - ['book', 'title'] - ]); -}); -ava_1["default"]('method `scroll` runs the provided handler on each field', function (t) { - var Book = (function (_super) { - __extends(Book, _super); - function Book(data) { - var _this = _super.call(this, data) || this; - _this.defineField('title', { type: 'String' }); - return _this; - } - return Book; - }(src_1.Model)); - var User = (function (_super) { - __extends(User, _super); - function User(data) { - var _this = _super.call(this, data) || this; - _this.defineField('name', { type: 'String' }); - _this.defineField('book', { type: Book }); - _this.populate(data); - return _this; - } - return User; - }(src_1.Model)); - var user = new User({ - name: 'foo', - book: { - title: 'bar' - } - }); - var count = user.scroll(function (_a) { - var path = _a.path; - return null; - }); - t.deepEqual(count, 3); -}); -ava_1["default"]('method `filter` converts a model into serialized object with only keys that pass the test', function (t) { - var Book = (function (_super) { - __extends(Book, _super); - function Book(data) { - var _this = _super.call(this, data) || this; - _this.defineField('title', { type: 'String' }); - return _this; - } - return Book; - }(src_1.Model)); - var User = (function (_super) { - __extends(User, _super); - function User(data) { - var _this = _super.call(this, data) || this; - _this.defineField('name', { type: 'String' }); - _this.defineField('book', { type: Book }); - _this.defineField('books', { type: [Book] }); - _this.populate(data); - return _this; - } - return User; - }(src_1.Model)); - var user = new User({ - name: 'foo', - book: { - title: 'bar' - }, - books: [ - undefined, - { - title: 'bar' - } - ] - }); - var result = user.filter(function (_a) { - var path = _a.path, field = _a.field; - return field.value !== 'foo'; - }); - t.deepEqual(result, { - book: { - title: 'bar' - }, - books: [ - null, - { - title: 'bar' - }, - ] - }); -}); -ava_1["default"]('method `reset` sets fields to their default values', function (t) { - var Book = (function (_super) { - __extends(Book, _super); - function Book(data) { - var _this = _super.call(this, data) || this; - _this.defineField('title', { defaultValue: 'foo' }); - return _this; - } - return Book; - }(src_1.Model)); - var User = (function (_super) { - __extends(User, _super); - function User(data) { - var _this = _super.call(this, data) || this; - _this.defineField('name', { defaultValue: 'bar' }); - _this.defineField('book', { type: Book, defaultValue: {} }); - _this.defineField('books', { type: [Book], defaultValue: [null, {}] }); - _this.populate(data); - return _this; - } - return User; - }(src_1.Model)); - var user = new User({ - name: 'fake', - book: { - title: 'fake' - }, - books: [ - { - title: 'fake' - }, - ] - }); - user.reset(); - t.deepEqual(user.serialize(), { - name: 'bar', - book: { - title: 'foo' - }, - books: [ - null, - { - title: 'foo' - }, - ] - }); -}); -ava_1["default"]('method `fake` sets fields to their fake values', function (t) { - var Book = (function (_super) { - __extends(Book, _super); - function Book(data) { - var _this = _super.call(this, data) || this; - _this.defineField('title', { fakeValue: 'foo' }); - return _this; - } - return Book; - }(src_1.Model)); - var User = (function (_super) { - __extends(User, _super); - function User(data) { - if (data === void 0) { data = {}; } - var _this = _super.call(this) || this; - _this.defineField('name', { fakeValue: 'bar' }); - _this.defineField('book', { type: Book, defaultValue: {} }); - _this.defineField('books', { type: [Book], defaultValue: [null, {}] }); - _this.populate(data); - return _this; - } - return User; - }(src_1.Model)); - var user = new User(); - user.fake(); - t.deepEqual(user.serialize(), { - name: 'bar', - book: { - title: 'foo' - }, - books: [ - null, - { - title: 'foo' - } - ] - }); -}); -ava_1["default"]('method `clear` sets fields to `null`', function (t) { - var Book = (function (_super) { - __extends(Book, _super); - function Book(data) { - var _this = _super.call(this, data) || this; - _this.defineField('title', { defaultValue: 'foo' }); - return _this; - } - return Book; - }(src_1.Model)); - var User = (function (_super) { - __extends(User, _super); - function User(data) { - var _this = _super.call(this, data) || this; - _this.defineField('name', { defaultValue: 'bar' }); - _this.defineField('description', { nullValue: 'null' }); - _this.defineField('book', { type: Book, defaultValue: {} }); - _this.defineField('books', { type: [Book], defaultValue: [null, {}] }); - _this.populate(data); - return _this; - } - return User; - }(src_1.Model)); - var user = new User({ - name: 'fake', - description: 'fake', - book: { - title: 'fake' - }, - books: [ - { - title: 'fake' - } - ] - }); - user.clear(); - t.deepEqual(user.serialize(), { - name: null, - description: 'null', - book: null, - books: null - }); -}); -ava_1["default"]('methods `commit()` and `rollback()` manage committed states', function (t) { - var Book = (function (_super) { - __extends(Book, _super); - function Book(data) { - var _this = _super.call(this, data) || this; - _this.defineField('title'); - return _this; - } - return Book; - }(src_1.Model)); - var User = (function (_super) { - __extends(User, _super); - function User(data) { - var _this = _super.call(this, data) || this; - _this.defineField('name'); - _this.defineField('book', { type: Book }); - _this.defineField('books', { type: [Book] }); - _this.populate(data); - return _this; - } - return User; - }(src_1.Model)); - var user = new User({ - name: 'foo', - book: { - title: 'bar' - }, - books: [ - { - title: 'baz' - } - ] - }); - user.commit(); - t.is(user.getField('name').initialValue, 'foo'); - t.is(user.getField('book', 'title').initialValue, 'bar'); - t.is(user.getField('books', 0, 'title').initialValue, 'baz'); - user.populate({ - name: 'foo-new', - book: { - title: 'bar-new' - }, - books: [ - { - title: 'baz-new' - }, - ] - }); - user.rollback(); - t.is(user.getField('name').value, 'foo'); - t.is(user.getField('book', 'title').value, 'bar'); - t.is(user.getField('books', 0, 'title').value, 'baz'); -}); -ava_1["default"]('method `equals` returns `true` when the passing object looks the same', function (t) { - var Book = (function (_super) { - __extends(Book, _super); - function Book(data) { - var _this = _super.call(this, data) || this; - _this.defineField('title'); - return _this; - } - return Book; - }(src_1.Model)); - var User = (function (_super) { - __extends(User, _super); - function User(data) { - var _this = _super.call(this, data) || this; - _this.defineField('name'); - _this.defineField('book', { type: Book }); - _this.defineField('books', { type: [Book] }); - _this.populate(data); - return _this; - } - return User; - }(src_1.Model)); - var data = { - name: 'foo', - book: { - title: 'bar' - }, - books: [ - null, - { - title: 'baz' - } - ] - }; - t.is(new User(data).equals(new User(data)), true); -}); -ava_1["default"]('method `isChanged` returns `true` if at least one field has been changed', function (t) { - var Book = (function (_super) { - __extends(Book, _super); - function Book(data) { - var _this = _super.call(this, data) || this; - _this.defineField('title'); - return _this; - } - return Book; - }(src_1.Model)); - var User = (function (_super) { - __extends(User, _super); - function User(data) { - var _this = _super.call(this, data) || this; - _this.defineField('name'); - _this.defineField('book', { type: Book }); - _this.defineField('books', { type: [Book] }); - _this.populate(data); - _this.commit(); - return _this; - } - return User; - }(src_1.Model)); - var data = { - name: 'foo', - book: { - title: 'bar' - }, - books: [ - null, - { - title: 'baz' - }, - ] - }; - var user0 = new User(data); - var user1 = new User(data); - var user2 = new User(data); - var user3 = new User(data); - t.is(user0.isChanged(), false); - user0.name = 'foo-new'; - user1.book.title = 'bar-new'; - user2.books[0] = { title: 'baz-new' }; - user3.books[1].title = 'baz-new'; - t.is(user0.isChanged(), true); - t.is(user1.isChanged(), true); - t.is(user2.isChanged(), true); - t.is(user3.isChanged(), true); -}); -ava_1["default"]('method `isNested` returns `true` if nested fields exist', function (t) { - var Book = (function (_super) { - __extends(Book, _super); - function Book(data) { - var _this = _super.call(this, data) || this; - _this.defineField('title'); - return _this; - } - return Book; - }(src_1.Model)); - var User = (function (_super) { - __extends(User, _super); - function User(data) { - if (data === void 0) { data = {}; } - var _this = _super.call(this) || this; - _this.defineField('name'); - _this.defineField('books', { type: [Book] }); - _this.populate(data); - return _this; - } - return User; - }(src_1.Model)); - var user = new User(); - t.is(user.isNested(), true); -}); -ava_1["default"]('method `collectErrors` returns an array of field errors', function (t) { - var Book = (function (_super) { - __extends(Book, _super); - function Book(data) { - var _this = _super.call(this, data) || this; - _this.defineField('title'); - return _this; - } - return Book; - }(src_1.Model)); - var User = (function (_super) { - __extends(User, _super); - function User(data) { - var _this = _super.call(this, data) || this; - _this.defineField('name'); - _this.defineField('book', { type: Book }); - _this.defineField('books', { type: [Book] }); - _this.populate(data); - return _this; - } - return User; - }(src_1.Model)); - var user = new User({ - book: {}, - books: [{}] - }); - user.getField('name').errors = [{ message: 'foo' }]; - user.getField('book', 'title').errors = [{ message: 'bar' }]; - user.getField('books', 0, 'title').errors = [{ message: 'baz' }]; - t.deepEqual(user.collectErrors(), [ - { path: ['name'], errors: [{ message: 'foo' }] }, - { path: ['book', 'title'], errors: [{ message: 'bar' }] }, - { path: ['books', 0, 'title'], errors: [{ message: 'baz' }] }, - ]); -}); -ava_1["default"]('method `applyErrors` sets fields errors', function (t) { - var Book = (function (_super) { - __extends(Book, _super); - function Book(data) { - var _this = _super.call(this, data) || this; - _this.defineField('title'); - return _this; - } - return Book; - }(src_1.Model)); - var User = (function (_super) { - __extends(User, _super); - function User(data) { - var _this = _super.call(this, data) || this; - _this.defineField('name'); - _this.defineField('book', { type: Book }); - _this.defineField('books', { type: [Book] }); - _this.populate(data); - return _this; - } - return User; - }(src_1.Model)); - var user = new User({ - book: {}, - books: [null, {}] - }); - user.applyErrors([ - { path: ['name'], errors: [{ message: 'foo' }] }, - { path: ['book', 'title'], errors: [{ message: 'bar' }] }, - { path: ['books', 1, 'title'], errors: [{ message: 'baz' }] }, - ]); - t.deepEqual(user.getField('name').errors, [{ message: 'foo' }]); - t.deepEqual(user.getField('book', 'title').errors, [{ message: 'bar' }]); - t.deepEqual(user.getField('books', 1, 'title').errors, [{ message: 'baz' }]); -}); -ava_1["default"]('methods `isValid` and `hasErrors` tell if errors exist', function (t) { return __awaiter(_this, void 0, void 0, function () { - var Book, User, user0, user1; - return __generator(this, function (_a) { - Book = (function (_super) { - __extends(Book, _super); - function Book(data) { - var _this = _super.call(this, data) || this; - _this.defineField('title'); - return _this; - } - return Book; - }(src_1.Model)); - User = (function (_super) { - __extends(User, _super); - function User(data) { - var _this = _super.call(this, data) || this; - _this.defineField('name'); - _this.defineField('book', { type: Book }); - _this.defineField('books', { type: [Book] }); - _this.populate(data); - return _this; - } - return User; - }(src_1.Model)); - user0 = new User({ - book: {}, - books: [null, {}] - }); - user1 = new User(); - t.is(user0.hasErrors(), false); - t.is(user1.hasErrors(), false); - t.is(user0.isValid(), true); - t.is(user1.isValid(), true); - user0.applyErrors([ - { path: ['books', 1, 'title'], errors: [{ message: 'baz' }] }, - ]); - t.is(user0.hasErrors(), true); - t.is(user0.isValid(), false); - return [2]; - }); -}); }); -ava_1["default"]('method `validate` validates fields and throws an error', function (t) { return __awaiter(_this, void 0, void 0, function () { - var validate, Book, User, user, errors, _a, _b; - return __generator(this, function (_c) { - switch (_c.label) { - case 0: - validate = [ - { validator: 'presence', message: 'foo' }, - { validator: 'presence', code: 999 }, - ]; - Book = (function (_super) { - __extends(Book, _super); - function Book(data) { - var _this = _super.call(this, data) || this; - _this.defineField('title', { validate: validate }); - return _this; - } - return Book; - }(src_1.Model)); - User = (function (_super) { - __extends(User, _super); - function User(data) { - var _this = _super.call(this, data) || this; - _this.defineField('name', { validate: validate }); - _this.defineField('book0', { type: Book, validate: validate }); - _this.defineField('books0', { type: [Book], validate: validate }); - _this.defineField('book1', { type: Book, validate: validate }); - _this.defineField('books1', { type: [Book], validate: validate }); - _this.populate(data); - return _this; - } - return User; - }(src_1.Model)); - user = new User({ - book1: {}, - books1: [{}] - }); - errors = [ - { validator: 'presence', message: 'foo', code: 422 }, - { validator: 'presence', message: undefined, code: 999 }, - ]; - return [4, user.validate({ quiet: true })]; - case 1: - _c.sent(); - _b = (_a = t).is; - return [4, user.validate()["catch"](function () { return false; })]; - case 2: - _b.apply(_a, [_c.sent(), false]); - t.deepEqual(user.collectErrors(), [ - { path: ['name'], errors: errors }, - { path: ['book0'], errors: errors }, - { path: ['books0'], errors: errors }, - { path: ['book1', 'title'], errors: errors }, - { path: ['books1', 0, 'title'], errors: errors }, - ]); - return [2]; - } - }); -}); }); -ava_1["default"]('method `defineValidator` defines a custom field validator', function (t) { return __awaiter(_this, void 0, void 0, function () { - var validator, validate, Book, User, user, errors; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - validator = function (v) { - return this.value === 'cool' && v === 'cool'; - }; - validate = [{ - validator: 'coolness', - message: 'foo' - }]; - Book = (function (_super) { - __extends(Book, _super); - function Book(data) { - var _this = _super.call(this, data) || this; - _this.defineValidator('coolness', validator); - _this.defineField('title', { validate: validate }); - return _this; - } - return Book; - }(src_1.Model)); - User = (function (_super) { - __extends(User, _super); - function User(data) { - var _this = _super.call(this, data) || this; - _this.defineValidator('coolness', validator); - _this.defineField('name', { validate: validate }); - _this.defineField('book', { type: Book, validate: validate }); - _this.populate(data); - return _this; - } - return User; - }(src_1.Model)); - user = new User({ - book: {} - }); - errors = [{ validator: 'coolness', message: 'foo', code: 422 }]; - return [4, user.validate({ quiet: true })]; - case 1: - _a.sent(); - t.deepEqual(user.collectErrors(), [ - { path: ['name'], errors: errors }, - { path: ['book'], errors: errors }, - { path: ['book', 'title'], errors: errors }, - ]); - return [2]; - } - }); -}); }); -ava_1["default"]('method `failFast` configures validator to stop validating field on the first error', function (t) { return __awaiter(_this, void 0, void 0, function () { - var validate, Book, User, user, errors; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - validate = [ - { validator: 'presence', message: 'foo' }, - { validator: 'presence', message: 'foo' }, - ]; - Book = (function (_super) { - __extends(Book, _super); - function Book(data) { - var _this = _super.call(this, data) || this; - _this.failFast(); - _this.defineField('title', { validate: validate }); - return _this; - } - return Book; - }(src_1.Model)); - User = (function (_super) { - __extends(User, _super); - function User(data) { - var _this = _super.call(this, data) || this; - _this.failFast(); - _this.defineField('name', { validate: validate }); - _this.defineField('book', { type: Book }); - _this.populate(data); - return _this; - } - return User; - }(src_1.Model)); - user = new User({ - book: {} - }); - errors = [{ validator: 'presence', message: 'foo', code: 422 }]; - return [4, user.validate({ quiet: true })]; - case 1: - _a.sent(); - t.is(user.getField('name').errors.length, 1); - t.is(user.getField('book', 'title').errors.length, 1); - return [2]; - } - }); -}); }); -ava_1["default"]('method `invalidate` clears fields errors', function (t) { return __awaiter(_this, void 0, void 0, function () { - var Book, User, user; - return __generator(this, function (_a) { - Book = (function (_super) { - __extends(Book, _super); - function Book(data) { - var _this = _super.call(this, data) || this; - _this.defineField('title'); - return _this; - } - return Book; - }(src_1.Model)); - User = (function (_super) { - __extends(User, _super); - function User(data) { - var _this = _super.call(this, data) || this; - _this.defineField('name'); - _this.defineField('book', { type: Book }); - _this.defineField('books', { type: [Book] }); - _this.populate(data); - return _this; - } - return User; - }(src_1.Model)); - user = new User({ - book: {}, - books: [null, {}] - }); - user.applyErrors([ - { path: ['name'], errors: [{ message: 'foo' }] }, - { path: ['book', 'title'], errors: [{ message: 'bar' }] }, - { path: ['books', 1, 'title'], errors: [{ message: 'baz' }] }, - ]); - user.invalidate(); - t.deepEqual(user.getField('name').errors, []); - t.deepEqual(user.getField('book', 'title').errors, []); - t.deepEqual(user.getField('books', 1, 'title').errors, []); - return [2]; - }); -}); }); -ava_1["default"]('method `clone` returns an exact copy of the original', function (t) { - var Book = (function (_super) { - __extends(Book, _super); - function Book(data) { - var _this = _super.call(this, data) || this; - _this.defineField('title'); - _this.commit(); - return _this; - } - return Book; - }(src_1.Model)); - var User = (function (_super) { - __extends(User, _super); - function User(data) { - var _this = _super.call(this, data) || this; - _this.defineField('name'); - _this.defineField('book', { type: Book }); - _this.defineField('books', { type: [Book] }); - _this.populate(data); - _this.commit(); - return _this; - } - return User; - }(src_1.Model)); - var parent = new Book(); - var user = new User({ - parent: parent, - name: 'foo', - book: { - title: 'bar' - }, - books: [ - null, - { - title: 'baz' - } - ] - }); - var clone0 = user.clone(); - var clone1 = user.clone({ book: { title: 'foo' } }); - t.is(clone0 !== user, true); - t.is(clone0.equals(user), true); - t.is(clone0.book.parent, clone0); - t.is(clone0.parent, parent); - t.is(clone0.parent, parent); - t.is(clone1.book.title, 'foo'); -}); -ava_1["default"]('method `handle` handles field-related errors', function (t) { return __awaiter(_this, void 0, void 0, function () { - var _this = this; - var handle, Book, Country, User, user, problem0, problem1, errors, _a, _b, _c, _d, _e, _f; - return __generator(this, function (_g) { - switch (_g.label) { - case 0: - handle = [{ - handler: 'block', - message: '%{foo}', - block: function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) { - return [2, true]; - }); }); }, - foo: 'foo' - }]; - Book = (function (_super) { - __extends(Book, _super); - function Book(data) { - var _this = _super.call(this, data) || this; - _this.defineField('title', { handle: handle }); - return _this; - } - return Book; - }(src_1.Model)); - Country = (function (_super) { - __extends(Country, _super); - function Country(data) { - var _this = _super.call(this, data) || this; - _this.defineField('code'); - _this.populate(data); - return _this; - } - return Country; - }(src_1.Model)); - User = (function (_super) { - __extends(User, _super); - function User(data) { - var _this = _super.call(this, data) || this; - _this.defineField('name', { handle: handle }); - _this.defineField('book0', { type: Book, handle: handle }); - _this.defineField('books0', { type: [Book], handle: handle }); - _this.defineField('book1', { type: Book }); - _this.defineField('books1', { type: [Book] }); - _this.defineField('country', { type: [Country] }); - _this.populate(data); - return _this; - } - return User; - }(src_1.Model)); - user = new User({ - book1: {}, - books1: [{}], - country: {} - }); - problem0 = new Error(); - problem1 = new Error(); - problem1.code = 422; - errors = [{ handler: 'block', message: 'foo', code: 422 }]; - _b = (_a = t).is; - return [4, user.handle(problem0, { quiet: false })["catch"](function () { return false; })]; - case 1: - _b.apply(_a, [_g.sent(), false]); - _d = (_c = t).is; - return [4, user.handle(problem0).then(function () { return true; })]; - case 2: - _d.apply(_c, [_g.sent(), true]); - _f = (_e = t).is; - return [4, user.handle(problem1, { quiet: false }).then(function () { return true; })]; - case 3: - _f.apply(_e, [_g.sent(), true]); - return [4, user.handle(problem0)]; - case 4: - _g.sent(); - t.deepEqual(user.collectErrors(), [ - { path: ['name'], errors: errors }, - { path: ['book0'], errors: errors }, - { path: ['books0'], errors: errors }, - { path: ['book1', 'title'], errors: errors }, - { path: ['books1', 0, 'title'], errors: errors }, - ]); - return [2]; - } - }); -}); }); -ava_1["default"]('method `defineHandler` defines a custom field handler', function (t) { return __awaiter(_this, void 0, void 0, function () { - var handler, handle, Book, User, user, problem, errors; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - handler = function (e) { - return e.message === 'cool'; - }; - handle = [{ - handler: 'coolness', - message: '%{foo}', - foo: 'foo' - }]; - Book = (function (_super) { - __extends(Book, _super); - function Book(data) { - var _this = _super.call(this, data) || this; - _this.defineHandler('coolness', handler); - _this.defineField('title', { handle: handle }); - return _this; - } - return Book; - }(src_1.Model)); - User = (function (_super) { - __extends(User, _super); - function User(data) { - var _this = _super.call(this, data) || this; - _this.defineHandler('coolness', handler); - _this.defineField('name', { handle: handle }); - _this.defineField('book', { type: Book }); - _this.defineField('books', { type: [Book] }); - _this.populate(data); - return _this; - } - return User; - }(src_1.Model)); - user = new User({ - book: {}, - books: [{}] - }); - problem = new Error('cool'); - errors = [{ handler: 'coolness', message: 'foo', code: 422 }]; - return [4, user.handle(problem)]; - case 1: - _a.sent(); - t.deepEqual(user.collectErrors(), [ - { path: ['name'], errors: errors }, - { path: ['book', 'title'], errors: errors }, - { path: ['books', 0, 'title'], errors: errors }, - ]); - return [2]; - } - }); -}); }); -ava_1["default"]('property `enumerable` handles field visibility', function (t) { - var User0 = (function (_super) { - __extends(User0, _super); - function User0(data) { - var _this = _super.call(this, data) || this; - _this.defineField('name', { enumerable: true }); - return _this; - } - return User0; - }(src_1.Model)); - var User1 = (function (_super) { - __extends(User1, _super); - function User1(data) { - var _this = _super.call(this, data) || this; - _this.defineField('name', { enumerable: false }); - return _this; - } - return User1; - }(src_1.Model)); - var user0 = new User0({}); - var user1 = new User1({}); - t.deepEqual(Object.keys(user0), ['name']); - t.deepEqual(Object.keys(user1), []); -}); -//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/dist/tests/models.js.map b/dist/tests/models.js.map deleted file mode 100644 index f9ead1d..0000000 --- a/dist/tests/models.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"models.js","sourceRoot":"","sources":["../../tests/models.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 0968350..5e692f8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.31.1", + "version": "1.31.1-beta2", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", From 6275f9dd124c66fc0df1fd3219156211141e66a4 Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 24 Mar 2018 20:13:59 +0100 Subject: [PATCH 206/219] dependencies --- package-lock.json | 734 +++++++++++++++++++++++++--------------------- package.json | 18 +- 2 files changed, 410 insertions(+), 342 deletions(-) diff --git a/package-lock.json b/package-lock.json index b2d6d77..54de47f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.30.0", + "version": "1.31.1-beta2", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -57,7 +57,7 @@ "dev": true, "requires": { "@ava/babel-plugin-throws-helper": "2.0.0", - "babel-plugin-espower": "2.3.2" + "babel-plugin-espower": "2.4.0" } }, "@ava/write-file-atomic": { @@ -80,22 +80,63 @@ "arrify": "1.0.1" } }, - "@types/events": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-1.1.0.tgz", - "integrity": "sha512-y3bR98mzYOo0pAZuiLari+cQyiKk3UXRuT45h1RjhfeCzqkjaVsfZJNaxdgtk7/3tzOm1ozLTqEqMP3VbI48jw==" + "@ladjs/time-require": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@ladjs/time-require/-/time-require-0.1.4.tgz", + "integrity": "sha512-weIbJqTMfQ4r1YX85u54DKfjLZs2jwn1XZ6tIOP/pFgMwhIN5BAtaCp/1wn9DzyLsDR9tW0R2NIePcVJ45ivQQ==", + "dev": true, + "requires": { + "chalk": "0.4.0", + "date-time": "0.1.1", + "pretty-ms": "0.2.2", + "text-table": "0.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "dev": true + }, + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "dev": true, + "requires": { + "ansi-styles": "1.0.0", + "has-color": "0.1.7", + "strip-ansi": "0.1.1" + } + }, + "pretty-ms": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-0.2.2.tgz", + "integrity": "sha1-2oeaaC/zOjcBEEbxPWJ/Z8c7hPY=", + "dev": true, + "requires": { + "parse-ms": "0.1.2" + } + }, + "strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", + "dev": true + } + } }, "@types/lodash": { - "version": "4.14.87", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.87.tgz", - "integrity": "sha512-AqRC+aEF4N0LuNHtcjKtvF9OTfqZI0iaBoe3dA6m/W+/YZJBZjBmW/QIZ8fBeXC6cnytSY9tBoFBqZ9uSCeVsw==" + "version": "4.14.106", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.106.tgz", + "integrity": "sha512-tOSvCVrvSqFZ4A/qrqqm6p37GZoawsZtoR0SJhlF7EonNZUgrn8FfT+RNQ11h+NUpMt6QVe36033f3qEKBwfWA==" }, "@types/lodash.isequal": { "version": "4.5.2", "resolved": "https://registry.npmjs.org/@types/lodash.isequal/-/lodash.isequal-4.5.2.tgz", "integrity": "sha512-RBgio5IF9ND5Sw7pIivcC47oLY65f5UQCblnjVoGLR5wykwSRd/q0k6aUroXMGZfu8jnyJbNhzNC+NcFUnJ8pA==", "requires": { - "@types/lodash": "4.14.87" + "@types/lodash": "4.14.106" } }, "@types/lodash.merge": { @@ -103,16 +144,13 @@ "resolved": "https://registry.npmjs.org/@types/lodash.merge/-/lodash.merge-4.6.3.tgz", "integrity": "sha512-bOCCutkbehfCeiSqJO5XcVKjsJvX28dgvjhs4aMmBAHAsOy2oOJQwHuIZ0elI1E94qQIdEsCvz8oLgUumd6teA==", "requires": { - "@types/lodash": "4.14.87" + "@types/lodash": "4.14.106" } }, "@types/node": { - "version": "8.0.54", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.54.tgz", - "integrity": "sha512-qetMdTv3Ytz9u9ESLdcYs45LPI0mczYZIbC184n7kY0jczOqPNQsabBfVCh+na3B2shAfvC459JqHV771A8Rxg==", - "requires": { - "@types/events": "1.1.0" - } + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.0.tgz", + "integrity": "sha512-h3YZbOq2+ZoDFI1z8Zx0Ck/xRWkOESVaLdgLdd/c25mMQ1Y2CAkILu9ny5A15S5f32gGcQdaUIZ2jzYr8D7IFg==" }, "ansi-align": { "version": "2.0.0", @@ -136,9 +174,9 @@ "dev": true }, "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "1.9.1" @@ -155,9 +193,9 @@ } }, "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { "sprintf-js": "1.0.3" @@ -230,35 +268,36 @@ "dev": true }, "auto-bind": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-1.1.0.tgz", - "integrity": "sha1-k7hk3H7gGjJigXddXHXKCnUeWWE=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-1.2.0.tgz", + "integrity": "sha512-Zw7pZp7tztvKnWWtoII4AmqH5a2PV3ZN5F0BPRTGcc1kpRm4b6QXQnPU7Znbl6BfPfqOVOV29g4JeMqZQaqqOA==", "dev": true }, "ava": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/ava/-/ava-0.24.0.tgz", - "integrity": "sha512-o/ykNzsWB5qgh1cR9jzVw0E1y4E219aXl9njNFGSamSCsD7VhPd3aoZabNZuG1PSVMZmQ8RuwKnTuz/loNhKnw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/ava/-/ava-0.25.0.tgz", + "integrity": "sha512-4lGNJCf6xL8SvsKVEKxEE46se7JAUIAZoKHw9itTQuwcsydhpAMkBs5gOOiWiwt0JKNIuXWc2/r4r8ZdcNrBEw==", "dev": true, "requires": { "@ava/babel-preset-stage-4": "1.1.0", "@ava/babel-preset-transform-test-files": "3.0.0", "@ava/write-file-atomic": "2.2.0", "@concordance/react": "1.0.0", + "@ladjs/time-require": "0.1.4", "ansi-escapes": "3.0.0", - "ansi-styles": "3.2.0", + "ansi-styles": "3.2.1", "arr-flatten": "1.1.0", "array-union": "1.0.2", "array-uniq": "1.0.3", "arrify": "1.0.1", - "auto-bind": "1.1.0", + "auto-bind": "1.2.0", "ava-init": "0.2.1", "babel-core": "6.26.0", - "babel-generator": "6.26.0", + "babel-generator": "6.26.1", "babel-plugin-syntax-object-rest-spread": "6.13.0", "bluebird": "3.5.1", "caching-transform": "1.0.1", - "chalk": "2.3.0", + "chalk": "2.3.2", "chokidar": "1.7.0", "clean-stack": "1.3.0", "clean-yaml-object": "0.1.0", @@ -266,7 +305,7 @@ "cli-spinners": "1.1.0", "cli-truncate": "1.1.0", "co-with-promise": "4.6.0", - "code-excerpt": "2.1.0", + "code-excerpt": "2.1.1", "common-path-prefix": "1.0.0", "concordance": "3.0.0", "convert-source-map": "1.5.1", @@ -286,20 +325,19 @@ "ignore-by-default": "1.0.1", "import-local": "0.1.1", "indent-string": "3.2.0", - "is-ci": "1.0.10", + "is-ci": "1.1.0", "is-generator-fn": "1.0.0", "is-obj": "1.0.1", - "is-observable": "1.0.0", + "is-observable": "1.1.0", "is-promise": "2.1.0", - "js-yaml": "3.10.0", "last-line-stream": "1.0.0", "lodash.clonedeepwith": "4.5.0", "lodash.debounce": "4.0.8", "lodash.difference": "4.5.0", "lodash.flatten": "4.4.0", "loud-rejection": "1.6.0", - "make-dir": "1.1.0", - "matcher": "1.0.0", + "make-dir": "1.2.0", + "matcher": "1.1.0", "md5-hex": "2.0.0", "meow": "3.7.0", "ms": "2.1.1", @@ -307,20 +345,20 @@ "observable-to-promise": "0.5.0", "option-chain": "1.0.0", "package-hash": "2.0.0", - "pkg-conf": "2.0.0", + "pkg-conf": "2.1.0", "plur": "2.1.2", "pretty-ms": "3.1.0", "require-precompiled": "0.1.0", "resolve-cwd": "2.0.0", "safe-buffer": "5.1.1", - "semver": "5.4.1", + "semver": "5.5.0", "slash": "1.0.0", - "source-map-support": "0.5.0", + "source-map-support": "0.5.4", "stack-utils": "1.0.1", "strip-ansi": "4.0.0", "strip-bom-buf": "1.0.0", - "supports-color": "5.0.1", - "time-require": "0.1.2", + "supertap": "1.0.0", + "supports-color": "5.3.0", "trim-off-newlines": "1.0.1", "unique-temp-dir": "1.0.0", "update-notifier": "2.3.0" @@ -393,7 +431,7 @@ "dev": true, "requires": { "babel-code-frame": "6.26.0", - "babel-generator": "6.26.0", + "babel-generator": "6.26.1", "babel-helpers": "6.24.1", "babel-messages": "6.23.0", "babel-register": "6.26.0", @@ -405,7 +443,7 @@ "convert-source-map": "1.5.1", "debug": "2.6.9", "json5": "0.5.1", - "lodash": "4.17.4", + "lodash": "4.17.5", "minimatch": "3.0.4", "path-is-absolute": "1.0.1", "private": "0.1.8", @@ -431,9 +469,9 @@ } }, "babel-generator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", - "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", "dev": true, "requires": { "babel-messages": "6.23.0", @@ -441,7 +479,7 @@ "babel-types": "6.26.0", "detect-indent": "4.0.0", "jsesc": "1.3.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "source-map": "0.5.7", "trim-right": "1.0.1" }, @@ -529,7 +567,7 @@ "requires": { "babel-runtime": "6.26.0", "babel-types": "6.26.0", - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "babel-helper-remap-async-to-generator": { @@ -574,15 +612,15 @@ } }, "babel-plugin-espower": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-2.3.2.tgz", - "integrity": "sha1-VRa4/NsmyfDh2BYHSfbkxl5xJx4=", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-2.4.0.tgz", + "integrity": "sha512-/+SRpy7pKgTI28oEHfn1wkuM5QFAdRq8WNsOOih1dVrdV6A/WbNbRZyl0eX5eyDgtb0lOE27PeDFuCX2j8OxVg==", "dev": true, "requires": { - "babel-generator": "6.26.0", + "babel-generator": "6.26.1", "babylon": "6.18.0", "call-matcher": "1.0.1", - "core-js": "2.5.1", + "core-js": "2.5.3", "espower-location-detector": "1.0.0", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -729,9 +767,9 @@ "requires": { "babel-core": "6.26.0", "babel-runtime": "6.26.0", - "core-js": "2.5.1", + "core-js": "2.5.3", "home-or-tmp": "2.0.0", - "lodash": "4.17.4", + "lodash": "4.17.5", "mkdirp": "0.5.1", "source-map-support": "0.4.18" }, @@ -753,8 +791,8 @@ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "core-js": "2.5.1", - "regenerator-runtime": "0.11.0" + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" } }, "babel-template": { @@ -767,7 +805,7 @@ "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "babel-traverse": { @@ -783,8 +821,8 @@ "babylon": "6.18.0", "debug": "2.6.9", "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" + "invariant": "2.2.4", + "lodash": "4.17.5" }, "dependencies": { "debug": { @@ -812,7 +850,7 @@ "requires": { "babel-runtime": "6.26.0", "esutils": "2.0.2", - "lodash": "4.17.4", + "lodash": "4.17.5", "to-fast-properties": "1.0.3" } }, @@ -848,7 +886,7 @@ "requires": { "ansi-align": "2.0.0", "camelcase": "4.1.0", - "chalk": "2.3.0", + "chalk": "2.3.2", "cli-boxes": "1.0.0", "string-width": "2.1.1", "term-size": "1.2.0", @@ -864,9 +902,9 @@ } }, "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "1.0.0", @@ -885,9 +923,9 @@ } }, "bson": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.4.tgz", - "integrity": "sha1-k8ENOeqltYQVy8QFLz5T5WKwtyw=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.6.tgz", + "integrity": "sha512-D8zmlb46xfuK2gGvKmUjIklQEouN2nQ0LEHHeZ/NoHM2LDiMk2EYzZ5Ntw/Urk+bgMDosOZxaRzXxvhI5TcAVQ==", "dev": true }, "buf-compare": { @@ -941,7 +979,7 @@ "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", "dev": true, "requires": { - "core-js": "2.5.1", + "core-js": "2.5.3", "deep-equal": "1.0.1", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -976,25 +1014,14 @@ "dev": true }, "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", "dev": true, "requires": { - "ansi-styles": "3.2.0", + "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" - }, - "dependencies": { - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } + "supports-color": "5.3.0" } }, "chokidar": { @@ -1015,9 +1042,9 @@ } }, "ci-info": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz", - "integrity": "sha512-uTGIPNx/nSpBdsF6xnseRXLLtfr9VLqkz8ZqHXr3Y7b6SftyRxBGjwMtJj1OhNbmlc1wZzLNAlAcvyIiE8a6ZA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz", + "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==", "dev": true }, "clean-stack": { @@ -1073,9 +1100,9 @@ } }, "code-excerpt": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.0.tgz", - "integrity": "sha1-XcwIHoj0p+O1VOnjXX7yMtR/gUc=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.1.tgz", + "integrity": "sha512-tJLhH3EpFm/1x7heIW0hemXJTUU5EWl2V0EIX558jp05Mt1U6DVryCgkp3l37cxqs+DNbNgxG43SkwJXpQ14Jw==", "dev": true, "requires": { "convert-to-spaces": "1.0.2" @@ -1097,9 +1124,9 @@ "dev": true }, "commander": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", - "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", "dev": true }, "common-path-prefix": { @@ -1133,10 +1160,21 @@ "js-string-escape": "1.0.1", "lodash.clonedeep": "4.5.0", "lodash.flattendeep": "4.4.0", - "lodash.merge": "4.6.0", + "lodash.merge": "4.6.1", "md5-hex": "2.0.0", - "semver": "5.4.1", + "semver": "5.5.0", "well-known-symbols": "1.0.0" + }, + "dependencies": { + "date-time": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz", + "integrity": "sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==", + "dev": true, + "requires": { + "time-zone": "1.0.0" + } + } } }, "configstore": { @@ -1147,7 +1185,7 @@ "requires": { "dot-prop": "4.2.0", "graceful-fs": "4.1.11", - "make-dir": "1.1.0", + "make-dir": "1.2.0", "unique-string": "1.0.0", "write-file-atomic": "2.3.0", "xdg-basedir": "3.0.0" @@ -1176,9 +1214,9 @@ } }, "core-js": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", - "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", "dev": true }, "core-util-is": { @@ -1202,7 +1240,7 @@ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { - "lru-cache": "4.1.1", + "lru-cache": "4.1.2", "shebang-command": "1.2.0", "which": "1.3.0" } @@ -1223,13 +1261,10 @@ } }, "date-time": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz", - "integrity": "sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==", - "dev": true, - "requires": { - "time-zone": "1.0.0" - } + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", + "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=", + "dev": true }, "debug": { "version": "3.1.0", @@ -1276,9 +1311,9 @@ } }, "diff": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", - "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", "dev": true }, "dot-prop": { @@ -1303,7 +1338,7 @@ "dev": true, "requires": { "call-signature": "0.0.2", - "core-js": "2.5.1" + "core-js": "2.5.3" } }, "equal-length": { @@ -1322,9 +1357,9 @@ } }, "es6-error": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.0.2.tgz", - "integrity": "sha1-7sXHJurO9Rt/a3PCDbbhsTsGnJg=", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", "dev": true }, "escape-string-regexp": { @@ -1339,7 +1374,7 @@ "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", "dev": true, "requires": { - "is-url": "1.2.2", + "is-url": "1.2.3", "path-is-absolute": "1.0.1", "source-map": "0.5.7", "xtend": "4.0.1" @@ -1357,7 +1392,7 @@ "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=", "dev": true, "requires": { - "core-js": "2.5.1" + "core-js": "2.5.3" } }, "estraverse": { @@ -1455,7 +1490,7 @@ "dev": true, "requires": { "commondir": "1.0.1", - "make-dir": "1.1.0", + "make-dir": "1.2.0", "pkg-dir": "2.0.0" } }, @@ -1502,7 +1537,7 @@ "dev": true, "optional": true, "requires": { - "nan": "2.8.0", + "nan": "2.10.0", "node-pre-gyp": "0.6.39" }, "dependencies": { @@ -2513,7 +2548,7 @@ "is-redirect": "1.0.0", "is-retry-allowed": "1.1.0", "is-stream": "1.1.0", - "lowercase-keys": "1.0.0", + "lowercase-keys": "1.0.1", "safe-buffer": "5.1.1", "timed-out": "4.0.1", "unzip-response": "2.0.1", @@ -2531,7 +2566,7 @@ "resolved": "https://registry.npmjs.org/handleable/-/handleable-0.25.0.tgz", "integrity": "sha512-+wvB8+Aeuk4/q3FQyGd+kw/J83Nc27CA3FF3w7S9Zpou4R31mz5KcwDAYdRRKzk2iHVpPfzCD4uMVf70J2BaIw==", "requires": { - "lodash.merge": "4.6.0" + "lodash.merge": "4.6.1" } }, "has-ansi": { @@ -2572,9 +2607,9 @@ } }, "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", "dev": true }, "hullabaloo-config-manager": { @@ -2584,14 +2619,14 @@ "dev": true, "requires": { "dot-prop": "4.2.0", - "es6-error": "4.0.2", + "es6-error": "4.1.1", "graceful-fs": "4.1.11", "indent-string": "3.2.0", "json5": "0.5.1", "lodash.clonedeep": "4.5.0", "lodash.clonedeepwith": "4.5.0", "lodash.isequal": "4.5.0", - "lodash.merge": "4.6.0", + "lodash.merge": "4.6.1", "md5-hex": "2.0.0", "package-hash": "2.0.0", "pkg-dir": "2.0.0", @@ -2656,9 +2691,9 @@ "dev": true }, "invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "dev": true, "requires": { "loose-envify": "1.3.1" @@ -2701,12 +2736,12 @@ } }, "is-ci": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", - "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", + "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", "dev": true, "requires": { - "ci-info": "1.1.2" + "ci-info": "1.1.3" } }, "is-dotfile": { @@ -2804,12 +2839,12 @@ "dev": true }, "is-observable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.0.0.tgz", - "integrity": "sha512-DVW97O/RiM3rTIuicUIcbJVqaQRDTwiXLYEWcCYLL5o8DOKCxpoPGroPXH3bVGUTJ2rvaFYnSXwwkakFpyTBzA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", "dev": true, "requires": { - "symbol-observable": "1.1.0" + "symbol-observable": "1.2.0" } }, "is-path-inside": { @@ -2864,9 +2899,9 @@ "dev": true }, "is-url": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.2.tgz", - "integrity": "sha1-SYkFpZO/R8wtnn9zg3K792lsfyY=", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.3.tgz", + "integrity": "sha512-vmOHLvzbcnsdFz8wQPXj1lgI5SE8AUlUGMenzuZzRFjoReb1WB+pLt9GrIo7BTker+aTcwrjTDle7odioWeqyw==", "dev": true }, "is-utf8": { @@ -2909,12 +2944,12 @@ "dev": true }, "js-yaml": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", - "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", + "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", "dev": true, "requires": { - "argparse": "1.0.9", + "argparse": "1.0.10", "esprima": "4.0.0" } }, @@ -2924,6 +2959,12 @@ "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", "dev": true }, + "json-parse-better-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz", + "integrity": "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==", + "dev": true + }, "json5": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", @@ -2980,9 +3021,9 @@ } }, "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", "dev": true }, "lodash.clonedeep": { @@ -3027,9 +3068,9 @@ "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" }, "lodash.merge": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz", - "integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU=" + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", + "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" }, "loose-envify": { "version": "1.3.1", @@ -3051,15 +3092,15 @@ } }, "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", "dev": true }, "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", + "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", "dev": true, "requires": { "pseudomap": "1.0.2", @@ -3067,9 +3108,9 @@ } }, "make-dir": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", - "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", + "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", "dev": true, "requires": { "pify": "3.0.0" @@ -3090,9 +3131,9 @@ "dev": true }, "matcher": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.0.0.tgz", - "integrity": "sha1-qvDEgW62m5IJRnQXViXzRmsOPhk=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.1.0.tgz", + "integrity": "sha512-aZGv6JBTHqfqAd09jmAlbKnAICTfIvb5Z8gXVxPB5WZtFfHMaAMdACL7tQflD2V+6/8KNcY8s6DYtWLgpJP5lA==", "dev": true, "requires": { "escape-string-regexp": "1.0.5" @@ -3249,9 +3290,9 @@ } }, "mimic-fn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, "minimatch": { @@ -3260,7 +3301,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "1.1.11" } }, "minimist": { @@ -3279,21 +3320,21 @@ } }, "mongodb": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.0.1.tgz", - "integrity": "sha1-J47oAGJX7CJ5hZSmJZVGgl1t4bI=", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.0.5.tgz", + "integrity": "sha512-8ioTyyc8tkNwZCTDa1FPWvmpJFfvE484DnugC8KpVrw4AKAE03OOAlORl2yYTNtz3TX4Ab7FRo00vzgexB/67A==", "dev": true, "requires": { - "mongodb-core": "3.0.1" + "mongodb-core": "3.0.5" } }, "mongodb-core": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.0.1.tgz", - "integrity": "sha1-/23Dbulv9ZaVPYCmhA1nMbyS7+0=", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.0.5.tgz", + "integrity": "sha512-4A1nx/xAU5d/NPICjiyzVxzNrIdJQQsYRe3xQkV1O638t+fHHfAOLK+SQagqGnu1m0aeSxb1ixp/P0FGSQWIGA==", "dev": true, "requires": { - "bson": "1.0.4", + "bson": "1.0.6", "require_optional": "1.0.1" } }, @@ -3316,9 +3357,9 @@ } }, "nan": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", - "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", "dev": true, "optional": true }, @@ -3328,10 +3369,10 @@ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { - "hosted-git-info": "2.5.0", + "hosted-git-info": "2.6.0", "is-builtin-module": "1.0.0", - "semver": "5.4.1", - "validate-npm-package-license": "3.0.1" + "semver": "5.5.0", + "validate-npm-package-license": "3.0.3" } }, "normalize-path": { @@ -3381,7 +3422,7 @@ "dev": true, "requires": { "is-observable": "0.2.0", - "symbol-observable": "1.1.0" + "symbol-observable": "1.2.0" }, "dependencies": { "is-observable": { @@ -3418,7 +3459,7 @@ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { - "mimic-fn": "1.1.0" + "mimic-fn": "1.2.0" } }, "option-chain": { @@ -3446,10 +3487,13 @@ "dev": true }, "p-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", - "dev": true + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "dev": true, + "requires": { + "p-try": "1.0.0" + } }, "p-locate": { "version": "2.0.0", @@ -3457,9 +3501,15 @@ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "p-limit": "1.1.0" + "p-limit": "1.2.0" } }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, "package-hash": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-2.0.0.tgz", @@ -3479,9 +3529,9 @@ "dev": true, "requires": { "got": "6.7.1", - "registry-auth-token": "3.3.1", + "registry-auth-token": "3.3.2", "registry-url": "3.1.0", - "semver": "5.4.1" + "semver": "5.5.0" } }, "parse-glob": { @@ -3506,9 +3556,9 @@ } }, "parse-ms": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", - "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-0.1.2.tgz", + "integrity": "sha1-3T+iXtbC78e93hKtm0bBY6opIk4=", "dev": true }, "path-exists": { @@ -3572,13 +3622,43 @@ } }, "pkg-conf": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.0.0.tgz", - "integrity": "sha1-BxyHZQQDvM+5xif1h1G/5HwGcnk=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", + "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", "dev": true, "requires": { "find-up": "2.1.0", - "load-json-file": "2.0.0" + "load-json-file": "4.0.0" + }, + "dependencies": { + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "4.0.0", + "pify": "3.0.0", + "strip-bom": "3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "1.3.1", + "json-parse-better-errors": "1.0.1" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } } }, "pkg-dir": { @@ -3619,6 +3699,14 @@ "requires": { "parse-ms": "1.0.1", "plur": "2.1.2" + }, + "dependencies": { + "parse-ms": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", + "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=", + "dev": true + } } }, "private": { @@ -3628,9 +3716,9 @@ "dev": true }, "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "dev": true }, "pseudomap": { @@ -3681,9 +3769,9 @@ } }, "rc": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz", - "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.6.tgz", + "integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=", "dev": true, "requires": { "deep-extend": "0.4.2", @@ -3722,15 +3810,15 @@ } }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -3744,7 +3832,7 @@ "requires": { "graceful-fs": "4.1.11", "minimatch": "3.0.4", - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "set-immediate-shim": "1.0.1" } }, @@ -3776,9 +3864,9 @@ "dev": true }, "regenerator-runtime": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", - "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "dev": true }, "regex-cache": { @@ -3802,12 +3890,12 @@ } }, "registry-auth-token": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", - "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", + "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", "dev": true, "requires": { - "rc": "1.2.2", + "rc": "1.2.6", "safe-buffer": "5.1.1" } }, @@ -3817,7 +3905,7 @@ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "dev": true, "requires": { - "rc": "1.2.2" + "rc": "1.2.6" } }, "regjsgen": { @@ -3841,7 +3929,7 @@ "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", "dev": true, "requires": { - "es6-error": "4.0.2" + "es6-error": "4.1.1" } }, "remove-trailing-separator": { @@ -3884,7 +3972,7 @@ "dev": true, "requires": { "resolve-from": "2.0.0", - "semver": "5.4.1" + "semver": "5.5.0" }, "dependencies": { "resolve-from": { @@ -3896,9 +3984,9 @@ } }, "resolve": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", - "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.6.0.tgz", + "integrity": "sha512-mw7JQNu5ExIkcw4LPih0owX/TZXjD/ZUF/ZQ/pDnkw3ZKhDcZZw5klmBlj6gVMwjQ3Pz5Jgu7F3d0jcDVuEWdw==", "dev": true, "requires": { "path-parse": "1.0.5" @@ -3936,9 +4024,9 @@ "dev": true }, "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", "dev": true }, "semver-diff": { @@ -3947,9 +4035,15 @@ "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", "dev": true, "requires": { - "semver": "5.4.1" + "semver": "5.5.0" } }, + "serialize-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "integrity": "sha1-ULZ51WNc34Rme9yOWa9OW4HV9go=", + "dev": true + }, "set-immediate-shim": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", @@ -4014,9 +4108,9 @@ "dev": true }, "source-map-support": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.0.tgz", - "integrity": "sha512-vUoN3I7fHQe0R/SJLKRdKYuEdRGogsviXFkHHo17AWaTGv17VLnxw+CFXvqy+y4ORZ3doWLQcxRYfwKrsd/H7Q==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.4.tgz", + "integrity": "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==", "dev": true, "requires": { "source-map": "0.6.1" @@ -4031,24 +4125,35 @@ } }, "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", "dev": true, "requires": { - "spdx-license-ids": "1.2.2" + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.0" } }, - "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", "dev": true }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "3.0.0" + } + }, "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", "dev": true }, "sprintf-js": { @@ -4135,19 +4240,40 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, + "supertap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supertap/-/supertap-1.0.0.tgz", + "integrity": "sha512-HZJ3geIMPgVwKk2VsmO5YHqnnJYl6bV5A9JW2uzqV43WmpgliNEYbuvukfor7URpaqpxuw3CfZ3ONdVbZjCgIA==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "indent-string": "3.2.0", + "js-yaml": "3.11.0", + "serialize-error": "2.1.0", + "strip-ansi": "4.0.0" + } + }, "supports-color": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.0.1.tgz", - "integrity": "sha512-7FQGOlSQ+AQxBNXJpVDj8efTA/FtyB5wcNE1omXXJ0cq6jm1jjDwuROlYDbnzHqdNPqliWFhcioCWSyav+xBnA==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "3.0.0" + }, + "dependencies": { + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + } } }, "symbol-observable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.1.0.tgz", - "integrity": "sha512-dQoid9tqQ+uotGhuTKEY11X4xhyYePVnqGSoSm3OGKh2E8LZ6RPULp1uXTctk33IeERlrRJYoVSBglsL05F5Uw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", "dev": true }, "term-size": { @@ -4171,68 +4297,10 @@ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "dev": true, "requires": { - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "xtend": "4.0.1" } }, - "time-require": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/time-require/-/time-require-0.1.2.tgz", - "integrity": "sha1-+eEss3D8JgXhFARYK6VO9corLZg=", - "dev": true, - "requires": { - "chalk": "0.4.0", - "date-time": "0.1.1", - "pretty-ms": "0.2.2", - "text-table": "0.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", - "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", - "dev": true - }, - "chalk": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", - "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", - "dev": true, - "requires": { - "ansi-styles": "1.0.0", - "has-color": "0.1.7", - "strip-ansi": "0.1.1" - } - }, - "date-time": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", - "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=", - "dev": true - }, - "parse-ms": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-0.1.2.tgz", - "integrity": "sha1-3T+iXtbC78e93hKtm0bBY6opIk4=", - "dev": true - }, - "pretty-ms": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-0.2.2.tgz", - "integrity": "sha1-2oeaaC/zOjcBEEbxPWJ/Z8c7hPY=", - "dev": true, - "requires": { - "parse-ms": "0.1.2" - } - }, - "strip-ansi": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", - "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", - "dev": true - } - } - }, "time-zone": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", @@ -4270,9 +4338,9 @@ "dev": true }, "tslib": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.8.0.tgz", - "integrity": "sha512-ymKWWZJST0/CkgduC2qkzjMOWr4bouhuURNXCn/inEX0L57BnRG6FhX76o7FOnsjHazCjfU2LKeSrlS2sIKQJg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz", + "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==", "dev": true }, "tslint": { @@ -4283,25 +4351,25 @@ "requires": { "babel-code-frame": "6.26.0", "builtin-modules": "1.1.1", - "chalk": "2.3.0", - "commander": "2.12.2", - "diff": "3.4.0", + "chalk": "2.3.2", + "commander": "2.15.1", + "diff": "3.5.0", "glob": "7.1.2", - "js-yaml": "3.10.0", + "js-yaml": "3.11.0", "minimatch": "3.0.4", - "resolve": "1.5.0", - "semver": "5.4.1", - "tslib": "1.8.0", - "tsutils": "2.13.0" + "resolve": "1.6.0", + "semver": "5.5.0", + "tslib": "1.9.0", + "tsutils": "2.22.2" } }, "tsutils": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.13.0.tgz", - "integrity": "sha512-FuWzNJbMsp3gcZMbI3b5DomhW4Ia41vMxjN63nKWI0t7f+I3UmHfRl0TrXJTwI2LUduDG+eR1Mksp3pvtlyCFQ==", + "version": "2.22.2", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.22.2.tgz", + "integrity": "sha512-u06FUSulCJ+Y8a2ftuqZN6kIGqdP2yJjUPEngXqmdPND4UQfb04igcotH+dw+IFr417yP6muCLE8/5/Qlfnx0w==", "dev": true, "requires": { - "tslib": "1.8.0" + "tslib": "1.9.0" } }, "typeable": { @@ -4310,9 +4378,9 @@ "integrity": "sha512-YXOjhd5h2q7FY2NdjOd5UzKouPhLvvPsDIS40P5jC6idI/PMxpZuUk7vheINknd2Z4DlmGbqSA4mSfTcYR6C3g==" }, "typescript": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.6.2.tgz", - "integrity": "sha1-PFtv1/beCRQmkCfwPAlGdY92c6Q=", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz", + "integrity": "sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw==", "dev": true }, "uid2": { @@ -4354,7 +4422,7 @@ "dev": true, "requires": { "boxen": "1.3.0", - "chalk": "2.3.0", + "chalk": "2.3.2", "configstore": "3.1.1", "import-lazy": "2.1.0", "is-installed-globally": "0.1.0", @@ -4384,18 +4452,18 @@ "resolved": "https://registry.npmjs.org/validatable/-/validatable-0.34.0.tgz", "integrity": "sha512-TlyiyFqUgQn5XfrsfApYZ298dFyuV6Da2kHU5Tx0jo4yKspkkbS6TciwMrdUTQRnqHH/uL1eSEl8SQRGkOFXug==", "requires": { - "lodash.merge": "4.6.0", + "lodash.merge": "4.6.1", "typeable": "2.4.0" } }, "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", "dev": true, "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" } }, "well-known-symbols": { @@ -4447,7 +4515,7 @@ "requires": { "detect-indent": "5.0.0", "graceful-fs": "4.1.11", - "make-dir": "1.1.0", + "make-dir": "1.2.0", "pify": "3.0.0", "sort-keys": "2.0.0", "write-file-atomic": "2.3.0" diff --git a/package.json b/package.json index 5e692f8..d2950f6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.31.1-beta2", + "version": "1.31.2", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -70,20 +70,20 @@ ], "author": "Kristijan Sedlak (Xpepermint)", "license": "MIT", - "devDependencies": { - "ava": "^0.24.0", - "mongodb": "3.0.1", - "tslint": "^5.9.1", - "typescript": "^2.6.2" - }, "dependencies": { "@types/lodash.isequal": "^4.5.2", "@types/lodash.merge": "^4.6.3", - "@types/node": "^8.0.54", + "@types/node": "^9.6.0", "handleable": "^0.25.0", "lodash.isequal": "^4.5.0", - "lodash.merge": "^4.6.0", + "lodash.merge": "^4.6.1", "typeable": "^2.4.0", "validatable": "^0.34.0" + }, + "devDependencies": { + "ava": "^0.25.0", + "mongodb": "^3.0.5", + "tslint": "^5.9.1", + "typescript": "^2.7.2" } } From 2af8496f82f04b836773365e201eb6bb41bec26a Mon Sep 17 00:00:00 2001 From: xpeper Date: Sat, 14 Apr 2018 12:03:55 +0200 Subject: [PATCH 207/219] fakeValue gux fix, dependencies --- package-lock.json | 129 +++++++++++++++++++++++----------------------- package.json | 8 +-- src/fields.ts | 2 +- tests/fields.ts | 8 +++ 4 files changed, 78 insertions(+), 69 deletions(-) diff --git a/package-lock.json b/package-lock.json index 54de47f..7542761 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.31.1-beta2", + "version": "1.31.2", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -148,9 +148,9 @@ } }, "@types/node": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.0.tgz", - "integrity": "sha512-h3YZbOq2+ZoDFI1z8Zx0Ck/xRWkOESVaLdgLdd/c25mMQ1Y2CAkILu9ny5A15S5f32gGcQdaUIZ2jzYr8D7IFg==" + "version": "9.6.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.5.tgz", + "integrity": "sha512-NOLEgsT6UiDTjnWG5Hd2Mg25LRyz/oe8ql3wbjzgSFeRzRROhPmtlsvIrei4B46UjERF0td9SZ1ZXPLOdcrBHg==" }, "ansi-align": { "version": "2.0.0", @@ -162,9 +162,9 @@ } }, "ansi-escapes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", - "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", "dev": true }, "ansi-regex": { @@ -284,7 +284,7 @@ "@ava/write-file-atomic": "2.2.0", "@concordance/react": "1.0.0", "@ladjs/time-require": "0.1.4", - "ansi-escapes": "3.0.0", + "ansi-escapes": "3.1.0", "ansi-styles": "3.2.1", "arr-flatten": "1.1.0", "array-union": "1.0.2", @@ -302,7 +302,7 @@ "clean-stack": "1.3.0", "clean-yaml-object": "0.1.0", "cli-cursor": "2.1.0", - "cli-spinners": "1.1.0", + "cli-spinners": "1.3.1", "cli-truncate": "1.1.0", "co-with-promise": "4.6.0", "code-excerpt": "2.1.1", @@ -361,7 +361,7 @@ "supports-color": "5.3.0", "trim-off-newlines": "1.0.1", "unique-temp-dir": "1.0.0", - "update-notifier": "2.3.0" + "update-notifier": "2.5.0" } }, "ava-init": { @@ -620,7 +620,7 @@ "babel-generator": "6.26.1", "babylon": "6.18.0", "call-matcher": "1.0.1", - "core-js": "2.5.3", + "core-js": "2.5.5", "espower-location-detector": "1.0.0", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -767,7 +767,7 @@ "requires": { "babel-core": "6.26.0", "babel-runtime": "6.26.0", - "core-js": "2.5.3", + "core-js": "2.5.5", "home-or-tmp": "2.0.0", "lodash": "4.17.5", "mkdirp": "0.5.1", @@ -791,7 +791,7 @@ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "core-js": "2.5.3", + "core-js": "2.5.5", "regenerator-runtime": "0.11.1" } }, @@ -979,7 +979,7 @@ "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", "dev": true, "requires": { - "core-js": "2.5.3", + "core-js": "2.5.5", "deep-equal": "1.0.1", "espurify": "1.7.0", "estraverse": "4.2.0" @@ -1075,9 +1075,9 @@ } }, "cli-spinners": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.1.0.tgz", - "integrity": "sha1-8YR7FohE2RemceudFH499JfJDQY=", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", "dev": true }, "cli-truncate": { @@ -1178,9 +1178,9 @@ } }, "configstore": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", - "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", + "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", "dev": true, "requires": { "dot-prop": "4.2.0", @@ -1214,9 +1214,9 @@ } }, "core-js": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz", + "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs=", "dev": true }, "core-util-is": { @@ -1338,7 +1338,7 @@ "dev": true, "requires": { "call-signature": "0.0.2", - "core-js": "2.5.3" + "core-js": "2.5.5" } }, "equal-length": { @@ -1374,7 +1374,7 @@ "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", "dev": true, "requires": { - "is-url": "1.2.3", + "is-url": "1.2.4", "path-is-absolute": "1.0.1", "source-map": "0.5.7", "xtend": "4.0.1" @@ -1392,7 +1392,7 @@ "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=", "dev": true, "requires": { - "core-js": "2.5.3" + "core-js": "2.5.5" } }, "estraverse": { @@ -2899,9 +2899,9 @@ "dev": true }, "is-url": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.3.tgz", - "integrity": "sha512-vmOHLvzbcnsdFz8wQPXj1lgI5SE8AUlUGMenzuZzRFjoReb1WB+pLt9GrIo7BTker+aTcwrjTDle7odioWeqyw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", "dev": true }, "is-utf8": { @@ -2960,9 +2960,9 @@ "dev": true }, "json-parse-better-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz", - "integrity": "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, "json5": { @@ -3320,18 +3320,18 @@ } }, "mongodb": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.0.5.tgz", - "integrity": "sha512-8ioTyyc8tkNwZCTDa1FPWvmpJFfvE484DnugC8KpVrw4AKAE03OOAlORl2yYTNtz3TX4Ab7FRo00vzgexB/67A==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.0.6.tgz", + "integrity": "sha512-nEg7SnzcyobArDTXEqvI1BasY6Z45h1lyBtVMCS9gRTkbtwrDn6WcLRa+MVRYufrJXxQPkAiYJQ94eCUzit0EQ==", "dev": true, "requires": { - "mongodb-core": "3.0.5" + "mongodb-core": "3.0.6" } }, "mongodb-core": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.0.5.tgz", - "integrity": "sha512-4A1nx/xAU5d/NPICjiyzVxzNrIdJQQsYRe3xQkV1O638t+fHHfAOLK+SQagqGnu1m0aeSxb1ixp/P0FGSQWIGA==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.0.6.tgz", + "integrity": "sha512-EIaEyA4DEft4je4Hfa+CDswKdFhlev9V9o5KJo/nITgG6KNKz5Rxg5ZuMGEjGkMwFkydFQ3Kz0CxZ18AXhRrEg==", "dev": true, "requires": { "bson": "1.0.6", @@ -3650,7 +3650,7 @@ "dev": true, "requires": { "error-ex": "1.3.1", - "json-parse-better-errors": "1.0.1" + "json-parse-better-errors": "1.0.2" } }, "pify": { @@ -3810,9 +3810,9 @@ } }, "readable-stream": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", - "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { "core-util-is": "1.0.2", @@ -3820,7 +3820,7 @@ "isarray": "1.0.0", "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", + "string_decoder": "1.1.1", "util-deprecate": "1.0.2" } }, @@ -3832,7 +3832,7 @@ "requires": { "graceful-fs": "4.1.11", "minimatch": "3.0.4", - "readable-stream": "2.3.5", + "readable-stream": "2.3.6", "set-immediate-shim": "1.0.1" } }, @@ -3984,9 +3984,9 @@ } }, "resolve": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.6.0.tgz", - "integrity": "sha512-mw7JQNu5ExIkcw4LPih0owX/TZXjD/ZUF/ZQ/pDnkw3ZKhDcZZw5klmBlj6gVMwjQ3Pz5Jgu7F3d0jcDVuEWdw==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", "dev": true, "requires": { "path-parse": "1.0.5" @@ -4179,9 +4179,9 @@ } }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { "safe-buffer": "5.1.1" @@ -4297,7 +4297,7 @@ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "dev": true, "requires": { - "readable-stream": "2.3.5", + "readable-stream": "2.3.6", "xtend": "4.0.1" } }, @@ -4357,16 +4357,16 @@ "glob": "7.1.2", "js-yaml": "3.11.0", "minimatch": "3.0.4", - "resolve": "1.6.0", + "resolve": "1.7.1", "semver": "5.5.0", "tslib": "1.9.0", - "tsutils": "2.22.2" + "tsutils": "2.26.1" } }, "tsutils": { - "version": "2.22.2", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.22.2.tgz", - "integrity": "sha512-u06FUSulCJ+Y8a2ftuqZN6kIGqdP2yJjUPEngXqmdPND4UQfb04igcotH+dw+IFr417yP6muCLE8/5/Qlfnx0w==", + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.26.1.tgz", + "integrity": "sha512-bnm9bcjOqOr1UljleL94wVCDlpa6KjfGaTkefeLch4GRafgDkROxPizbB/FxTEdI++5JqhxczRy/Qub0syNqZA==", "dev": true, "requires": { "tslib": "1.9.0" @@ -4378,9 +4378,9 @@ "integrity": "sha512-YXOjhd5h2q7FY2NdjOd5UzKouPhLvvPsDIS40P5jC6idI/PMxpZuUk7vheINknd2Z4DlmGbqSA4mSfTcYR6C3g==" }, "typescript": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz", - "integrity": "sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.8.1.tgz", + "integrity": "sha512-Ao/f6d/4EPLq0YwzsQz8iXflezpTkQzqAyenTiw4kCUGr1uPiFLC3+fZ+gMZz6eeI/qdRUqvC+HxIJzUAzEFdg==", "dev": true }, "uid2": { @@ -4416,15 +4416,16 @@ "dev": true }, "update-notifier": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.3.0.tgz", - "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", + "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", "dev": true, "requires": { "boxen": "1.3.0", "chalk": "2.3.2", - "configstore": "3.1.1", + "configstore": "3.1.2", "import-lazy": "2.1.0", + "is-ci": "1.1.0", "is-installed-globally": "0.1.0", "is-npm": "1.0.0", "latest-version": "3.1.0", diff --git a/package.json b/package.json index d2950f6..c1c67d3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.31.2", + "version": "1.32.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -73,7 +73,7 @@ "dependencies": { "@types/lodash.isequal": "^4.5.2", "@types/lodash.merge": "^4.6.3", - "@types/node": "^9.6.0", + "@types/node": "^9.6.5", "handleable": "^0.25.0", "lodash.isequal": "^4.5.0", "lodash.merge": "^4.6.1", @@ -82,8 +82,8 @@ }, "devDependencies": { "ava": "^0.25.0", - "mongodb": "^3.0.5", + "mongodb": "^3.0.6", "tslint": "^5.9.1", - "typescript": "^2.7.2" + "typescript": "^2.8.1" } } diff --git a/src/fields.ts b/src/fields.ts index c83615d..ba23874 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -262,7 +262,7 @@ export class Field { */ public fake(): this { - if (this.fakeValue) { + if (this._recipe.fakeValue) { this.value = this.fakeValue; } diff --git a/tests/fields.ts b/tests/fields.ts index 03cc368..7fce4bc 100644 --- a/tests/fields.ts +++ b/tests/fields.ts @@ -46,20 +46,24 @@ test('can have a fake value', (t) => { const f0 = new Field({ fakeValue: 'foo' }); const f1 = new Field({ fakeValue () { return this.constructor.name; } }); const f2 = new Field({ fakeValue () { return Math.random(); } }); + const f3 = new Field({ type: 'Integer', fakeValue () { return 0; } }); t.is(f0.fakeValue, 'foo'); t.is(f1.fakeValue, 'Field'); t.is(f2.fakeValue !== f2.fakeValue, true); // dynamic values + t.is(f3.fakeValue, 0); }); test('can have a null value', (t) => { const f0 = new Field({ nullValue: 'foo' }); const f1 = new Field({ nullValue () { return this.constructor.name; } }); const f2 = new Field({ nullValue () { return Math.random(); } }); + const f3 = new Field({ nullValue () { return 0; } }); t.is(f0.value, 'foo'); // `null` is replaced t.is(f1.value, 'Field'); // `null` is replaced t.is(f0.nullValue, 'foo'); t.is(f1.nullValue, 'Field'); t.is(f2.nullValue !== f2.nullValue, true); // dynamic values + t.is(f3.nullValue, 0); }); test('method `reset()` sets value to the default value', (t) => { @@ -78,6 +82,7 @@ test('method `fake()` sets value to the fake value', (t) => { const f0 = new Field(); const f1 = new Field({ fakeValue: 'foo' }); const f2 = new Field({ fakeValue () { return Math.random(); } }); + const f3 = new Field({ fakeValue () { return 0; } }); f0.value = 'foo'; f0.fake(); t.is(f0.value, 'foo'); @@ -87,6 +92,9 @@ test('method `fake()` sets value to the fake value', (t) => { f2.value = 'foo'; f2.fake(); t.is(f2.value !== f1.value, true); // dynamic values + f3.value = 1; + f3.fake(); + t.is(f3.value, 0); }); test('method `clear()` sets value to `null`', (t) => { From 684c01e85132f598956a77918e4540d66a0a576c Mon Sep 17 00:00:00 2001 From: xpeper Date: Wed, 18 Apr 2018 21:13:32 +0200 Subject: [PATCH 208/219] updating dependencies --- package-lock.json | 73 ++++++++++++++++++++++++----------------------- package.json | 12 ++++---- 2 files changed, 43 insertions(+), 42 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7542761..1c43dfe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.31.2", + "version": "1.32.2", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -127,16 +127,16 @@ } }, "@types/lodash": { - "version": "4.14.106", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.106.tgz", - "integrity": "sha512-tOSvCVrvSqFZ4A/qrqqm6p37GZoawsZtoR0SJhlF7EonNZUgrn8FfT+RNQ11h+NUpMt6QVe36033f3qEKBwfWA==" + "version": "4.14.107", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.107.tgz", + "integrity": "sha512-afvjfP2rl3yvtv2qrCRN23zIQcDinF+munMJCoHEw2BXF22QJogTlVfNPTACQ6ieDyA6VnyKT4WLuN/wK368ng==" }, "@types/lodash.isequal": { "version": "4.5.2", "resolved": "https://registry.npmjs.org/@types/lodash.isequal/-/lodash.isequal-4.5.2.tgz", "integrity": "sha512-RBgio5IF9ND5Sw7pIivcC47oLY65f5UQCblnjVoGLR5wykwSRd/q0k6aUroXMGZfu8jnyJbNhzNC+NcFUnJ8pA==", "requires": { - "@types/lodash": "4.14.106" + "@types/lodash": "4.14.107" } }, "@types/lodash.merge": { @@ -144,13 +144,14 @@ "resolved": "https://registry.npmjs.org/@types/lodash.merge/-/lodash.merge-4.6.3.tgz", "integrity": "sha512-bOCCutkbehfCeiSqJO5XcVKjsJvX28dgvjhs4aMmBAHAsOy2oOJQwHuIZ0elI1E94qQIdEsCvz8oLgUumd6teA==", "requires": { - "@types/lodash": "4.14.106" + "@types/lodash": "4.14.107" } }, "@types/node": { "version": "9.6.5", "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.5.tgz", - "integrity": "sha512-NOLEgsT6UiDTjnWG5Hd2Mg25LRyz/oe8ql3wbjzgSFeRzRROhPmtlsvIrei4B46UjERF0td9SZ1ZXPLOdcrBHg==" + "integrity": "sha512-NOLEgsT6UiDTjnWG5Hd2Mg25LRyz/oe8ql3wbjzgSFeRzRROhPmtlsvIrei4B46UjERF0td9SZ1ZXPLOdcrBHg==", + "dev": true }, "ansi-align": { "version": "2.0.0", @@ -297,7 +298,7 @@ "babel-plugin-syntax-object-rest-spread": "6.13.0", "bluebird": "3.5.1", "caching-transform": "1.0.1", - "chalk": "2.3.2", + "chalk": "2.4.0", "chokidar": "1.7.0", "clean-stack": "1.3.0", "clean-yaml-object": "0.1.0", @@ -358,7 +359,7 @@ "strip-ansi": "4.0.0", "strip-bom-buf": "1.0.0", "supertap": "1.0.0", - "supports-color": "5.3.0", + "supports-color": "5.4.0", "trim-off-newlines": "1.0.1", "unique-temp-dir": "1.0.0", "update-notifier": "2.5.0" @@ -886,7 +887,7 @@ "requires": { "ansi-align": "2.0.0", "camelcase": "4.1.0", - "chalk": "2.3.2", + "chalk": "2.4.0", "cli-boxes": "1.0.0", "string-width": "2.1.1", "term-size": "1.2.0", @@ -1014,14 +1015,14 @@ "dev": true }, "chalk": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", - "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.0.tgz", + "integrity": "sha512-Wr/w0f4o9LuE7K53cD0qmbAMM+2XNLzR29vFn5hqko4sxGlUsyy363NvmyGIyk5tpe9cjTr9SJYbysEyPkRnFw==", "dev": true, "requires": { "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", - "supports-color": "5.3.0" + "supports-color": "5.4.0" } }, "chokidar": { @@ -2562,9 +2563,9 @@ "dev": true }, "handleable": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/handleable/-/handleable-0.25.0.tgz", - "integrity": "sha512-+wvB8+Aeuk4/q3FQyGd+kw/J83Nc27CA3FF3w7S9Zpou4R31mz5KcwDAYdRRKzk2iHVpPfzCD4uMVf70J2BaIw==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/handleable/-/handleable-0.25.1.tgz", + "integrity": "sha512-bSfBrGgZPThIfCdM0mN2285Co5ZqD5DrYirWZPjQfB+Flk9hwvsJ+v842F45PfCPuSzLE//Tbj5jVJi40V6FJg==", "requires": { "lodash.merge": "4.6.1" } @@ -3320,18 +3321,18 @@ } }, "mongodb": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.0.6.tgz", - "integrity": "sha512-nEg7SnzcyobArDTXEqvI1BasY6Z45h1lyBtVMCS9gRTkbtwrDn6WcLRa+MVRYufrJXxQPkAiYJQ94eCUzit0EQ==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.0.7.tgz", + "integrity": "sha512-n/14kMJEoARXz1qhpNPhUocqy+z5130jhqgEIX1Tsl8UVpHrndQ8et+VmgC4yPK/I8Tcgc93JEMQCHTekBUnNA==", "dev": true, "requires": { - "mongodb-core": "3.0.6" + "mongodb-core": "3.0.7" } }, "mongodb-core": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.0.6.tgz", - "integrity": "sha512-EIaEyA4DEft4je4Hfa+CDswKdFhlev9V9o5KJo/nITgG6KNKz5Rxg5ZuMGEjGkMwFkydFQ3Kz0CxZ18AXhRrEg==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.0.7.tgz", + "integrity": "sha512-z6YufO7s40wLiv2ssFshqoLS4+Kf+huhHq6KZ7gDArsKNzXYjAwTMnhEIJ9GQ8fIfBGs5tBLNPfbIDoCKGPmOw==", "dev": true, "requires": { "bson": "1.0.6", @@ -4254,9 +4255,9 @@ } }, "supports-color": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", - "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { "has-flag": "3.0.0" @@ -4351,7 +4352,7 @@ "requires": { "babel-code-frame": "6.26.0", "builtin-modules": "1.1.1", - "chalk": "2.3.2", + "chalk": "2.4.0", "commander": "2.15.1", "diff": "3.5.0", "glob": "7.1.2", @@ -4373,9 +4374,9 @@ } }, "typeable": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/typeable/-/typeable-2.4.0.tgz", - "integrity": "sha512-YXOjhd5h2q7FY2NdjOd5UzKouPhLvvPsDIS40P5jC6idI/PMxpZuUk7vheINknd2Z4DlmGbqSA4mSfTcYR6C3g==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/typeable/-/typeable-2.4.1.tgz", + "integrity": "sha512-NPIeowjymPLSzpK1ySPknaatOdrbxGGzaXSEyY+Iq79eJH3i6OyxCOHhVsASoDQp5CB5zfd8u1PWMSvBIAQNFA==" }, "typescript": { "version": "2.8.1", @@ -4422,7 +4423,7 @@ "dev": true, "requires": { "boxen": "1.3.0", - "chalk": "2.3.2", + "chalk": "2.4.0", "configstore": "3.1.2", "import-lazy": "2.1.0", "is-ci": "1.1.0", @@ -4449,12 +4450,12 @@ "dev": true }, "validatable": { - "version": "0.34.0", - "resolved": "https://registry.npmjs.org/validatable/-/validatable-0.34.0.tgz", - "integrity": "sha512-TlyiyFqUgQn5XfrsfApYZ298dFyuV6Da2kHU5Tx0jo4yKspkkbS6TciwMrdUTQRnqHH/uL1eSEl8SQRGkOFXug==", + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/validatable/-/validatable-0.34.2.tgz", + "integrity": "sha512-AFPs3qL3E3uhJvBqzFB1+FwzZOzcubIopPkZyCK/t80DKx7bFsscalq9jDu7iF4XEuPANWBhDnF2wxyQ6Bf8fg==", "requires": { "lodash.merge": "4.6.1", - "typeable": "2.4.0" + "typeable": "2.4.1" } }, "validate-npm-package-license": { diff --git a/package.json b/package.json index c1c67d3..1e522b7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.32.0", + "version": "1.32.2", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -73,16 +73,16 @@ "dependencies": { "@types/lodash.isequal": "^4.5.2", "@types/lodash.merge": "^4.6.3", - "@types/node": "^9.6.5", - "handleable": "^0.25.0", + "handleable": "^0.25.1", "lodash.isequal": "^4.5.0", "lodash.merge": "^4.6.1", - "typeable": "^2.4.0", - "validatable": "^0.34.0" + "typeable": "^2.4.1", + "validatable": "^0.34.2" }, "devDependencies": { + "@types/node": "^9.6.5", "ava": "^0.25.0", - "mongodb": "^3.0.6", + "mongodb": "^3.0.7", "tslint": "^5.9.1", "typescript": "^2.8.1" } From b5156991c3532dfdfbf56466ce56d91f253e00d6 Mon Sep 17 00:00:00 2001 From: xpeper Date: Tue, 5 Jun 2018 00:13:14 +0200 Subject: [PATCH 209/219] Fix dependency status --- README.md | 3 +- package-lock.json | 1544 ++++++++++++++++++++++----------------------- package.json | 2 +- 3 files changed, 774 insertions(+), 775 deletions(-) diff --git a/README.md b/README.md index c4b5866..686be75 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ -![Build Status](https://travis-ci.org/xpepermint/rawmodeljs.svg?branch=master) [![NPM Version](https://badge.fury.io/js/rawmodel.svg)](https://badge.fury.io/js/rawmodel) [![Dependency Status](https://gemnasium.com/xpepermint/rawmodeljs.svg)](https://gemnasium.com/xpepermint/rawmodeljs) - +![Build Status](https://travis-ci.org/xpepermint/rawmodeljs.svg?branch=master) [![NPM Version](https://badge.fury.io/js/rawmodel.svg)](https://badge.fury.io/js/rawmodel) [![Dependencies Status](https://david-dm.org/xpepermint/rawmodeljs.svg)](https://david-dm.org/xpepermint/rawmodeljs) ``` ┌────────────────────────────────────────────────────┐ │ ____ __ __ _ _ │ diff --git a/package-lock.json b/package-lock.json index 1c43dfe..692632e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.32.2", + "version": "1.32.3", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -16,18 +16,18 @@ "integrity": "sha512-oWqTnIGXW3k72UFidXzW0ONlO7hnO9x02S/QReJ7NBGeiBH9cUHY9+EfV6C8PXC6YJH++WrliEq03wMSJGNZFg==", "dev": true, "requires": { - "babel-plugin-check-es2015-constants": "6.22.0", - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-async-to-generator": "6.24.1", - "babel-plugin-transform-es2015-destructuring": "6.23.0", - "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", - "babel-plugin-transform-es2015-parameters": "6.24.1", - "babel-plugin-transform-es2015-spread": "6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "6.24.1", - "babel-plugin-transform-es2015-unicode-regex": "6.24.1", - "babel-plugin-transform-exponentiation-operator": "6.24.1", - "package-hash": "1.2.0" + "babel-plugin-check-es2015-constants": "^6.8.0", + "babel-plugin-syntax-trailing-function-commas": "^6.20.0", + "babel-plugin-transform-async-to-generator": "^6.16.0", + "babel-plugin-transform-es2015-destructuring": "^6.19.0", + "babel-plugin-transform-es2015-function-name": "^6.9.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.18.0", + "babel-plugin-transform-es2015-parameters": "^6.21.0", + "babel-plugin-transform-es2015-spread": "^6.8.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.8.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.11.0", + "babel-plugin-transform-exponentiation-operator": "^6.8.0", + "package-hash": "^1.2.0" }, "dependencies": { "md5-hex": { @@ -36,7 +36,7 @@ "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", "dev": true, "requires": { - "md5-o-matic": "0.1.1" + "md5-o-matic": "^0.1.1" } }, "package-hash": { @@ -45,7 +45,7 @@ "integrity": "sha1-AD5WzVe3NqbtYRTMK4FUJnJ3DkQ=", "dev": true, "requires": { - "md5-hex": "1.3.0" + "md5-hex": "^1.3.0" } } } @@ -56,8 +56,8 @@ "integrity": "sha1-ze0RlqjY2TgaUJJAq5LpGl7Aafc=", "dev": true, "requires": { - "@ava/babel-plugin-throws-helper": "2.0.0", - "babel-plugin-espower": "2.4.0" + "@ava/babel-plugin-throws-helper": "^2.0.0", + "babel-plugin-espower": "^2.3.2" } }, "@ava/write-file-atomic": { @@ -66,9 +66,9 @@ "integrity": "sha512-BTNB3nGbEfJT+69wuqXFr/bQH7Vr7ihx2xGOMNqPgDGhwspoZhiWumDDZNjBy7AScmqS5CELIOGtPVXESyrnDA==", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" } }, "@concordance/react": { @@ -77,7 +77,7 @@ "integrity": "sha512-htrsRaQX8Iixlsek8zQU7tE8wcsTQJ5UhZkSPEA8slCDAisKpC/2VgU/ucPn32M5/LjGGXRaUEKvEw1Wiuu4zQ==", "dev": true, "requires": { - "arrify": "1.0.1" + "arrify": "^1.0.1" } }, "@ladjs/time-require": { @@ -86,10 +86,10 @@ "integrity": "sha512-weIbJqTMfQ4r1YX85u54DKfjLZs2jwn1XZ6tIOP/pFgMwhIN5BAtaCp/1wn9DzyLsDR9tW0R2NIePcVJ45ivQQ==", "dev": true, "requires": { - "chalk": "0.4.0", - "date-time": "0.1.1", - "pretty-ms": "0.2.2", - "text-table": "0.2.0" + "chalk": "^0.4.0", + "date-time": "^0.1.1", + "pretty-ms": "^0.2.1", + "text-table": "^0.2.0" }, "dependencies": { "ansi-styles": { @@ -104,9 +104,9 @@ "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", "dev": true, "requires": { - "ansi-styles": "1.0.0", - "has-color": "0.1.7", - "strip-ansi": "0.1.1" + "ansi-styles": "~1.0.0", + "has-color": "~0.1.0", + "strip-ansi": "~0.1.0" } }, "pretty-ms": { @@ -115,7 +115,7 @@ "integrity": "sha1-2oeaaC/zOjcBEEbxPWJ/Z8c7hPY=", "dev": true, "requires": { - "parse-ms": "0.1.2" + "parse-ms": "^0.1.0" } }, "strip-ansi": { @@ -136,7 +136,7 @@ "resolved": "https://registry.npmjs.org/@types/lodash.isequal/-/lodash.isequal-4.5.2.tgz", "integrity": "sha512-RBgio5IF9ND5Sw7pIivcC47oLY65f5UQCblnjVoGLR5wykwSRd/q0k6aUroXMGZfu8jnyJbNhzNC+NcFUnJ8pA==", "requires": { - "@types/lodash": "4.14.107" + "@types/lodash": "*" } }, "@types/lodash.merge": { @@ -144,7 +144,7 @@ "resolved": "https://registry.npmjs.org/@types/lodash.merge/-/lodash.merge-4.6.3.tgz", "integrity": "sha512-bOCCutkbehfCeiSqJO5XcVKjsJvX28dgvjhs4aMmBAHAsOy2oOJQwHuIZ0elI1E94qQIdEsCvz8oLgUumd6teA==", "requires": { - "@types/lodash": "4.14.107" + "@types/lodash": "*" } }, "@types/node": { @@ -159,7 +159,7 @@ "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", "dev": true, "requires": { - "string-width": "2.1.1" + "string-width": "^2.0.0" } }, "ansi-escapes": { @@ -180,7 +180,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.1" + "color-convert": "^1.9.0" } }, "anymatch": { @@ -189,8 +189,8 @@ "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "dev": true, "requires": { - "micromatch": "2.3.11", - "normalize-path": "2.1.1" + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" } }, "argparse": { @@ -199,7 +199,7 @@ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "~1.0.2" } }, "arr-diff": { @@ -208,7 +208,7 @@ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { - "arr-flatten": "1.1.0" + "arr-flatten": "^1.0.1" } }, "arr-exclude": { @@ -241,7 +241,7 @@ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "dev": true, "requires": { - "array-uniq": "1.0.3" + "array-uniq": "^1.0.1" } }, "array-uniq": { @@ -280,89 +280,89 @@ "integrity": "sha512-4lGNJCf6xL8SvsKVEKxEE46se7JAUIAZoKHw9itTQuwcsydhpAMkBs5gOOiWiwt0JKNIuXWc2/r4r8ZdcNrBEw==", "dev": true, "requires": { - "@ava/babel-preset-stage-4": "1.1.0", - "@ava/babel-preset-transform-test-files": "3.0.0", - "@ava/write-file-atomic": "2.2.0", - "@concordance/react": "1.0.0", - "@ladjs/time-require": "0.1.4", - "ansi-escapes": "3.1.0", - "ansi-styles": "3.2.1", - "arr-flatten": "1.1.0", - "array-union": "1.0.2", - "array-uniq": "1.0.3", - "arrify": "1.0.1", - "auto-bind": "1.2.0", - "ava-init": "0.2.1", - "babel-core": "6.26.0", - "babel-generator": "6.26.1", - "babel-plugin-syntax-object-rest-spread": "6.13.0", - "bluebird": "3.5.1", - "caching-transform": "1.0.1", - "chalk": "2.4.0", - "chokidar": "1.7.0", - "clean-stack": "1.3.0", - "clean-yaml-object": "0.1.0", - "cli-cursor": "2.1.0", - "cli-spinners": "1.3.1", - "cli-truncate": "1.1.0", - "co-with-promise": "4.6.0", - "code-excerpt": "2.1.1", - "common-path-prefix": "1.0.0", - "concordance": "3.0.0", - "convert-source-map": "1.5.1", - "core-assert": "0.2.1", - "currently-unhandled": "0.4.1", - "debug": "3.1.0", - "dot-prop": "4.2.0", - "empower-core": "0.6.2", - "equal-length": "1.0.1", - "figures": "2.0.0", - "find-cache-dir": "1.0.0", - "fn-name": "2.0.1", - "get-port": "3.2.0", - "globby": "6.1.0", - "has-flag": "2.0.0", - "hullabaloo-config-manager": "1.1.1", - "ignore-by-default": "1.0.1", - "import-local": "0.1.1", - "indent-string": "3.2.0", - "is-ci": "1.1.0", - "is-generator-fn": "1.0.0", - "is-obj": "1.0.1", - "is-observable": "1.1.0", - "is-promise": "2.1.0", - "last-line-stream": "1.0.0", - "lodash.clonedeepwith": "4.5.0", - "lodash.debounce": "4.0.8", - "lodash.difference": "4.5.0", - "lodash.flatten": "4.4.0", - "loud-rejection": "1.6.0", - "make-dir": "1.2.0", - "matcher": "1.1.0", - "md5-hex": "2.0.0", - "meow": "3.7.0", - "ms": "2.1.1", - "multimatch": "2.1.0", - "observable-to-promise": "0.5.0", - "option-chain": "1.0.0", - "package-hash": "2.0.0", - "pkg-conf": "2.1.0", - "plur": "2.1.2", - "pretty-ms": "3.1.0", - "require-precompiled": "0.1.0", - "resolve-cwd": "2.0.0", - "safe-buffer": "5.1.1", - "semver": "5.5.0", - "slash": "1.0.0", - "source-map-support": "0.5.4", - "stack-utils": "1.0.1", - "strip-ansi": "4.0.0", - "strip-bom-buf": "1.0.0", - "supertap": "1.0.0", - "supports-color": "5.4.0", - "trim-off-newlines": "1.0.1", - "unique-temp-dir": "1.0.0", - "update-notifier": "2.5.0" + "@ava/babel-preset-stage-4": "^1.1.0", + "@ava/babel-preset-transform-test-files": "^3.0.0", + "@ava/write-file-atomic": "^2.2.0", + "@concordance/react": "^1.0.0", + "@ladjs/time-require": "^0.1.4", + "ansi-escapes": "^3.0.0", + "ansi-styles": "^3.1.0", + "arr-flatten": "^1.0.1", + "array-union": "^1.0.1", + "array-uniq": "^1.0.2", + "arrify": "^1.0.0", + "auto-bind": "^1.1.0", + "ava-init": "^0.2.0", + "babel-core": "^6.17.0", + "babel-generator": "^6.26.0", + "babel-plugin-syntax-object-rest-spread": "^6.13.0", + "bluebird": "^3.0.0", + "caching-transform": "^1.0.0", + "chalk": "^2.0.1", + "chokidar": "^1.4.2", + "clean-stack": "^1.1.1", + "clean-yaml-object": "^0.1.0", + "cli-cursor": "^2.1.0", + "cli-spinners": "^1.0.0", + "cli-truncate": "^1.0.0", + "co-with-promise": "^4.6.0", + "code-excerpt": "^2.1.1", + "common-path-prefix": "^1.0.0", + "concordance": "^3.0.0", + "convert-source-map": "^1.5.1", + "core-assert": "^0.2.0", + "currently-unhandled": "^0.4.1", + "debug": "^3.0.1", + "dot-prop": "^4.1.0", + "empower-core": "^0.6.1", + "equal-length": "^1.0.0", + "figures": "^2.0.0", + "find-cache-dir": "^1.0.0", + "fn-name": "^2.0.0", + "get-port": "^3.0.0", + "globby": "^6.0.0", + "has-flag": "^2.0.0", + "hullabaloo-config-manager": "^1.1.0", + "ignore-by-default": "^1.0.0", + "import-local": "^0.1.1", + "indent-string": "^3.0.0", + "is-ci": "^1.0.7", + "is-generator-fn": "^1.0.0", + "is-obj": "^1.0.0", + "is-observable": "^1.0.0", + "is-promise": "^2.1.0", + "last-line-stream": "^1.0.0", + "lodash.clonedeepwith": "^4.5.0", + "lodash.debounce": "^4.0.3", + "lodash.difference": "^4.3.0", + "lodash.flatten": "^4.2.0", + "loud-rejection": "^1.2.0", + "make-dir": "^1.0.0", + "matcher": "^1.0.0", + "md5-hex": "^2.0.0", + "meow": "^3.7.0", + "ms": "^2.0.0", + "multimatch": "^2.1.0", + "observable-to-promise": "^0.5.0", + "option-chain": "^1.0.0", + "package-hash": "^2.0.0", + "pkg-conf": "^2.0.0", + "plur": "^2.0.0", + "pretty-ms": "^3.0.0", + "require-precompiled": "^0.1.0", + "resolve-cwd": "^2.0.0", + "safe-buffer": "^5.1.1", + "semver": "^5.4.1", + "slash": "^1.0.0", + "source-map-support": "^0.5.0", + "stack-utils": "^1.0.1", + "strip-ansi": "^4.0.0", + "strip-bom-buf": "^1.0.0", + "supertap": "^1.0.0", + "supports-color": "^5.0.0", + "trim-off-newlines": "^1.0.1", + "unique-temp-dir": "^1.0.0", + "update-notifier": "^2.3.0" } }, "ava-init": { @@ -371,11 +371,11 @@ "integrity": "sha512-lXwK5LM+2g1euDRqW1mcSX/tqzY1QU7EjKpqayFPPtNRmbSYZ8RzPO5tqluTToijmtjp2M+pNpVdbcHssC4glg==", "dev": true, "requires": { - "arr-exclude": "1.0.0", - "execa": "0.7.0", - "has-yarn": "1.0.0", - "read-pkg-up": "2.0.0", - "write-pkg": "3.1.0" + "arr-exclude": "^1.0.0", + "execa": "^0.7.0", + "has-yarn": "^1.0.0", + "read-pkg-up": "^2.0.0", + "write-pkg": "^3.1.0" } }, "babel-code-frame": { @@ -384,9 +384,9 @@ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" }, "dependencies": { "ansi-styles": { @@ -401,11 +401,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "strip-ansi": { @@ -414,7 +414,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -431,25 +431,25 @@ "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "babel-generator": "6.26.1", - "babel-helpers": "6.24.1", - "babel-messages": "6.23.0", - "babel-register": "6.26.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "convert-source-map": "1.5.1", - "debug": "2.6.9", - "json5": "0.5.1", - "lodash": "4.17.5", - "minimatch": "3.0.4", - "path-is-absolute": "1.0.1", - "private": "0.1.8", - "slash": "1.0.0", - "source-map": "0.5.7" + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.0", + "debug": "^2.6.8", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.7", + "slash": "^1.0.0", + "source-map": "^0.5.6" }, "dependencies": { "debug": { @@ -475,14 +475,14 @@ "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", "dev": true, "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.5", - "source-map": "0.5.7", - "trim-right": "1.0.1" + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" }, "dependencies": { "jsesc": { @@ -499,9 +499,9 @@ "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", "dev": true, "requires": { - "babel-helper-explode-assignable-expression": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-helper-call-delegate": { @@ -510,10 +510,10 @@ "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", "dev": true, "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helper-explode-assignable-expression": { @@ -522,9 +522,9 @@ "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helper-function-name": { @@ -533,11 +533,11 @@ "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", "dev": true, "requires": { - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helper-get-function-arity": { @@ -546,8 +546,8 @@ "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-helper-hoist-variables": { @@ -556,8 +556,8 @@ "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-helper-regex": { @@ -566,9 +566,9 @@ "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.5" + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" } }, "babel-helper-remap-async-to-generator": { @@ -577,11 +577,11 @@ "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", "dev": true, "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helpers": { @@ -590,8 +590,8 @@ "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-messages": { @@ -600,7 +600,7 @@ "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-check-es2015-constants": { @@ -609,7 +609,7 @@ "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-espower": { @@ -618,13 +618,13 @@ "integrity": "sha512-/+SRpy7pKgTI28oEHfn1wkuM5QFAdRq8WNsOOih1dVrdV6A/WbNbRZyl0eX5eyDgtb0lOE27PeDFuCX2j8OxVg==", "dev": true, "requires": { - "babel-generator": "6.26.1", - "babylon": "6.18.0", - "call-matcher": "1.0.1", - "core-js": "2.5.5", - "espower-location-detector": "1.0.0", - "espurify": "1.7.0", - "estraverse": "4.2.0" + "babel-generator": "^6.1.0", + "babylon": "^6.1.0", + "call-matcher": "^1.0.0", + "core-js": "^2.0.0", + "espower-location-detector": "^1.0.0", + "espurify": "^1.6.0", + "estraverse": "^4.1.1" } }, "babel-plugin-syntax-async-functions": { @@ -657,9 +657,9 @@ "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", "dev": true, "requires": { - "babel-helper-remap-async-to-generator": "6.24.1", - "babel-plugin-syntax-async-functions": "6.13.0", - "babel-runtime": "6.26.0" + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-destructuring": { @@ -668,7 +668,7 @@ "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-function-name": { @@ -677,9 +677,9 @@ "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", "dev": true, "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-modules-commonjs": { @@ -688,10 +688,10 @@ "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", "dev": true, "requires": { - "babel-plugin-transform-strict-mode": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-types": "6.26.0" + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" } }, "babel-plugin-transform-es2015-parameters": { @@ -700,12 +700,12 @@ "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", "dev": true, "requires": { - "babel-helper-call-delegate": "6.24.1", - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-spread": { @@ -714,7 +714,7 @@ "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-sticky-regex": { @@ -723,9 +723,9 @@ "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", "dev": true, "requires": { - "babel-helper-regex": "6.26.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-unicode-regex": { @@ -734,9 +734,9 @@ "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", "dev": true, "requires": { - "babel-helper-regex": "6.26.0", - "babel-runtime": "6.26.0", - "regexpu-core": "2.0.0" + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" } }, "babel-plugin-transform-exponentiation-operator": { @@ -745,9 +745,9 @@ "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", "dev": true, "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", - "babel-plugin-syntax-exponentiation-operator": "6.13.0", - "babel-runtime": "6.26.0" + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-strict-mode": { @@ -756,8 +756,8 @@ "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-register": { @@ -766,13 +766,13 @@ "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", "dev": true, "requires": { - "babel-core": "6.26.0", - "babel-runtime": "6.26.0", - "core-js": "2.5.5", - "home-or-tmp": "2.0.0", - "lodash": "4.17.5", - "mkdirp": "0.5.1", - "source-map-support": "0.4.18" + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" }, "dependencies": { "source-map-support": { @@ -781,7 +781,7 @@ "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "dev": true, "requires": { - "source-map": "0.5.7" + "source-map": "^0.5.6" } } } @@ -792,8 +792,8 @@ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "core-js": "2.5.5", - "regenerator-runtime": "0.11.1" + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" } }, "babel-template": { @@ -802,11 +802,11 @@ "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash": "4.17.5" + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" } }, "babel-traverse": { @@ -815,15 +815,15 @@ "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.4", - "lodash": "4.17.5" + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" }, "dependencies": { "debug": { @@ -849,10 +849,10 @@ "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.5", - "to-fast-properties": "1.0.3" + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" } }, "babylon": { @@ -885,13 +885,13 @@ "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", "dev": true, "requires": { - "ansi-align": "2.0.0", - "camelcase": "4.1.0", - "chalk": "2.4.0", - "cli-boxes": "1.0.0", - "string-width": "2.1.1", - "term-size": "1.2.0", - "widest-line": "2.0.0" + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" }, "dependencies": { "camelcase": { @@ -908,7 +908,7 @@ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -918,9 +918,9 @@ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, "bson": { @@ -947,9 +947,9 @@ "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", "dev": true, "requires": { - "md5-hex": "1.3.0", - "mkdirp": "0.5.1", - "write-file-atomic": "1.3.4" + "md5-hex": "^1.2.0", + "mkdirp": "^0.5.1", + "write-file-atomic": "^1.1.4" }, "dependencies": { "md5-hex": { @@ -958,7 +958,7 @@ "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", "dev": true, "requires": { - "md5-o-matic": "0.1.1" + "md5-o-matic": "^0.1.1" } }, "write-file-atomic": { @@ -967,9 +967,9 @@ "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" } } } @@ -980,10 +980,10 @@ "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", "dev": true, "requires": { - "core-js": "2.5.5", - "deep-equal": "1.0.1", - "espurify": "1.7.0", - "estraverse": "4.2.0" + "core-js": "^2.0.0", + "deep-equal": "^1.0.0", + "espurify": "^1.6.0", + "estraverse": "^4.0.0" } }, "call-signature": { @@ -1004,8 +1004,8 @@ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", "dev": true, "requires": { - "camelcase": "2.1.1", - "map-obj": "1.0.1" + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" } }, "capture-stack-trace": { @@ -1020,9 +1020,9 @@ "integrity": "sha512-Wr/w0f4o9LuE7K53cD0qmbAMM+2XNLzR29vFn5hqko4sxGlUsyy363NvmyGIyk5tpe9cjTr9SJYbysEyPkRnFw==", "dev": true, "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "chokidar": { @@ -1031,15 +1031,15 @@ "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", "dev": true, "requires": { - "anymatch": "1.3.2", - "async-each": "1.0.1", - "fsevents": "1.1.3", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" } }, "ci-info": { @@ -1072,7 +1072,7 @@ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { - "restore-cursor": "2.0.0" + "restore-cursor": "^2.0.0" } }, "cli-spinners": { @@ -1087,8 +1087,8 @@ "integrity": "sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA==", "dev": true, "requires": { - "slice-ansi": "1.0.0", - "string-width": "2.1.1" + "slice-ansi": "^1.0.0", + "string-width": "^2.0.0" } }, "co-with-promise": { @@ -1097,7 +1097,7 @@ "integrity": "sha1-QT59tvWJOmC5Qs9JLEvsk9tBWrc=", "dev": true, "requires": { - "pinkie-promise": "1.0.0" + "pinkie-promise": "^1.0.0" } }, "code-excerpt": { @@ -1106,7 +1106,7 @@ "integrity": "sha512-tJLhH3EpFm/1x7heIW0hemXJTUU5EWl2V0EIX558jp05Mt1U6DVryCgkp3l37cxqs+DNbNgxG43SkwJXpQ14Jw==", "dev": true, "requires": { - "convert-to-spaces": "1.0.2" + "convert-to-spaces": "^1.0.1" } }, "color-convert": { @@ -1115,7 +1115,7 @@ "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "dev": true, "requires": { - "color-name": "1.1.3" + "color-name": "^1.1.1" } }, "color-name": { @@ -1154,17 +1154,17 @@ "integrity": "sha512-CZBzJ3/l5QJjlZM20WY7+5GP5pMTw+1UEbThcpMw8/rojsi5sBCiD8ZbBLtD+jYpRGAkwuKuqk108c154V9eyQ==", "dev": true, "requires": { - "date-time": "2.1.0", - "esutils": "2.0.2", - "fast-diff": "1.1.2", - "function-name-support": "0.2.0", - "js-string-escape": "1.0.1", - "lodash.clonedeep": "4.5.0", - "lodash.flattendeep": "4.4.0", - "lodash.merge": "4.6.1", - "md5-hex": "2.0.0", - "semver": "5.5.0", - "well-known-symbols": "1.0.0" + "date-time": "^2.1.0", + "esutils": "^2.0.2", + "fast-diff": "^1.1.1", + "function-name-support": "^0.2.0", + "js-string-escape": "^1.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.flattendeep": "^4.4.0", + "lodash.merge": "^4.6.0", + "md5-hex": "^2.0.0", + "semver": "^5.3.0", + "well-known-symbols": "^1.0.0" }, "dependencies": { "date-time": { @@ -1173,7 +1173,7 @@ "integrity": "sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==", "dev": true, "requires": { - "time-zone": "1.0.0" + "time-zone": "^1.0.0" } } } @@ -1184,12 +1184,12 @@ "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", "dev": true, "requires": { - "dot-prop": "4.2.0", - "graceful-fs": "4.1.11", - "make-dir": "1.2.0", - "unique-string": "1.0.0", - "write-file-atomic": "2.3.0", - "xdg-basedir": "3.0.0" + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" } }, "convert-source-map": { @@ -1210,8 +1210,8 @@ "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=", "dev": true, "requires": { - "buf-compare": "1.0.1", - "is-error": "2.2.1" + "buf-compare": "^1.0.0", + "is-error": "^2.2.0" } }, "core-js": { @@ -1232,7 +1232,7 @@ "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", "dev": true, "requires": { - "capture-stack-trace": "1.0.0" + "capture-stack-trace": "^1.0.0" } }, "cross-spawn": { @@ -1241,9 +1241,9 @@ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { - "lru-cache": "4.1.2", - "shebang-command": "1.2.0", - "which": "1.3.0" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "crypto-random-string": { @@ -1258,7 +1258,7 @@ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", "dev": true, "requires": { - "array-find-index": "1.0.2" + "array-find-index": "^1.0.1" } }, "date-time": { @@ -1308,7 +1308,7 @@ "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, "requires": { - "repeating": "2.0.1" + "repeating": "^2.0.0" } }, "diff": { @@ -1323,7 +1323,7 @@ "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", "dev": true, "requires": { - "is-obj": "1.0.1" + "is-obj": "^1.0.0" } }, "duplexer3": { @@ -1339,7 +1339,7 @@ "dev": true, "requires": { "call-signature": "0.0.2", - "core-js": "2.5.5" + "core-js": "^2.0.0" } }, "equal-length": { @@ -1354,7 +1354,7 @@ "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "dev": true, "requires": { - "is-arrayish": "0.2.1" + "is-arrayish": "^0.2.1" } }, "es6-error": { @@ -1375,10 +1375,10 @@ "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", "dev": true, "requires": { - "is-url": "1.2.4", - "path-is-absolute": "1.0.1", - "source-map": "0.5.7", - "xtend": "4.0.1" + "is-url": "^1.2.1", + "path-is-absolute": "^1.0.0", + "source-map": "^0.5.0", + "xtend": "^4.0.0" } }, "esprima": { @@ -1393,7 +1393,7 @@ "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=", "dev": true, "requires": { - "core-js": "2.5.5" + "core-js": "^2.0.0" } }, "estraverse": { @@ -1414,13 +1414,13 @@ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" } }, "expand-brackets": { @@ -1429,7 +1429,7 @@ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { - "is-posix-bracket": "0.1.1" + "is-posix-bracket": "^0.1.0" } }, "expand-range": { @@ -1438,7 +1438,7 @@ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { - "fill-range": "2.2.3" + "fill-range": "^2.1.0" } }, "extglob": { @@ -1447,7 +1447,7 @@ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "fast-diff": { @@ -1462,7 +1462,7 @@ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "dev": true, "requires": { - "escape-string-regexp": "1.0.5" + "escape-string-regexp": "^1.0.5" } }, "filename-regex": { @@ -1477,11 +1477,11 @@ "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "dev": true, "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^1.1.3", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" } }, "find-cache-dir": { @@ -1490,9 +1490,9 @@ "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", "dev": true, "requires": { - "commondir": "1.0.1", - "make-dir": "1.2.0", - "pkg-dir": "2.0.0" + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" } }, "find-up": { @@ -1501,7 +1501,7 @@ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "locate-path": "2.0.0" + "locate-path": "^2.0.0" } }, "fn-name": { @@ -1522,7 +1522,7 @@ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { - "for-in": "1.0.2" + "for-in": "^1.0.1" } }, "fs.realpath": { @@ -1538,8 +1538,8 @@ "dev": true, "optional": true, "requires": { - "nan": "2.10.0", - "node-pre-gyp": "0.6.39" + "nan": "^2.3.0", + "node-pre-gyp": "^0.6.39" }, "dependencies": { "abbrev": { @@ -1554,8 +1554,8 @@ "dev": true, "optional": true, "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" } }, "ansi-regex": { @@ -1575,8 +1575,8 @@ "dev": true, "optional": true, "requires": { - "delegates": "1.0.0", - "readable-stream": "2.2.9" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, "asn1": { @@ -1620,7 +1620,7 @@ "dev": true, "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "block-stream": { @@ -1628,7 +1628,7 @@ "bundled": true, "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" } }, "boom": { @@ -1636,7 +1636,7 @@ "bundled": true, "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "brace-expansion": { @@ -1644,7 +1644,7 @@ "bundled": true, "dev": true, "requires": { - "balanced-match": "0.4.2", + "balanced-match": "^0.4.1", "concat-map": "0.0.1" } }, @@ -1675,7 +1675,7 @@ "bundled": true, "dev": true, "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "concat-map": { @@ -1698,7 +1698,7 @@ "bundled": true, "dev": true, "requires": { - "boom": "2.10.1" + "boom": "2.x.x" } }, "dashdash": { @@ -1707,7 +1707,7 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { @@ -1756,7 +1756,7 @@ "dev": true, "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "extend": { @@ -1782,9 +1782,9 @@ "dev": true, "optional": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" } }, "fs.realpath": { @@ -1797,10 +1797,10 @@ "bundled": true, "dev": true, "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" } }, "fstream-ignore": { @@ -1809,9 +1809,9 @@ "dev": true, "optional": true, "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" + "fstream": "^1.0.0", + "inherits": "2", + "minimatch": "^3.0.0" } }, "gauge": { @@ -1820,14 +1820,14 @@ "dev": true, "optional": true, "requires": { - "aproba": "1.1.1", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" } }, "getpass": { @@ -1836,7 +1836,7 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { @@ -1852,12 +1852,12 @@ "bundled": true, "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "graceful-fs": { @@ -1877,8 +1877,8 @@ "dev": true, "optional": true, "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" + "ajv": "^4.9.1", + "har-schema": "^1.0.5" } }, "has-unicode": { @@ -1892,10 +1892,10 @@ "bundled": true, "dev": true, "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" } }, "hoek": { @@ -1909,9 +1909,9 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.0" + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "inflight": { @@ -1919,8 +1919,8 @@ "bundled": true, "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -1939,7 +1939,7 @@ "bundled": true, "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-typedarray": { @@ -1965,7 +1965,7 @@ "dev": true, "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "jsbn": { @@ -1986,7 +1986,7 @@ "dev": true, "optional": true, "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } }, "json-stringify-safe": { @@ -2031,7 +2031,7 @@ "bundled": true, "dev": true, "requires": { - "mime-db": "1.27.0" + "mime-db": "~1.27.0" } }, "minimatch": { @@ -2039,7 +2039,7 @@ "bundled": true, "dev": true, "requires": { - "brace-expansion": "1.1.7" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -2067,17 +2067,17 @@ "dev": true, "optional": true, "requires": { - "detect-libc": "1.0.2", + "detect-libc": "^1.0.2", "hawk": "3.1.3", - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.1", + "mkdirp": "^0.5.1", + "nopt": "^4.0.1", + "npmlog": "^4.0.2", + "rc": "^1.1.7", "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^2.2.1", + "tar-pack": "^3.4.0" } }, "nopt": { @@ -2086,8 +2086,8 @@ "dev": true, "optional": true, "requires": { - "abbrev": "1.1.0", - "osenv": "0.1.4" + "abbrev": "1", + "osenv": "^0.1.4" } }, "npmlog": { @@ -2096,10 +2096,10 @@ "dev": true, "optional": true, "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, "number-is-nan": { @@ -2124,7 +2124,7 @@ "bundled": true, "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "os-homedir": { @@ -2145,8 +2145,8 @@ "dev": true, "optional": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, "path-is-absolute": { @@ -2183,10 +2183,10 @@ "dev": true, "optional": true, "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "~0.4.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { "minimist": { @@ -2202,13 +2202,13 @@ "bundled": true, "dev": true, "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.1", - "util-deprecate": "1.0.2" + "buffer-shims": "~1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~1.0.0", + "util-deprecate": "~1.0.1" } }, "request": { @@ -2217,28 +2217,28 @@ "dev": true, "optional": true, "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.0.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.6.0", - "uuid": "3.0.1" + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~4.2.1", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "performance-now": "^0.2.0", + "qs": "~6.4.0", + "safe-buffer": "^5.0.1", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.0.0" } }, "rimraf": { @@ -2246,7 +2246,7 @@ "bundled": true, "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "safe-buffer": { @@ -2277,7 +2277,7 @@ "bundled": true, "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "sshpk": { @@ -2286,15 +2286,15 @@ "dev": true, "optional": true, "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jodid25519": "1.0.2", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jodid25519": "^1.0.0", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" }, "dependencies": { "assert-plus": { @@ -2310,9 +2310,9 @@ "bundled": true, "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "string_decoder": { @@ -2320,7 +2320,7 @@ "bundled": true, "dev": true, "requires": { - "safe-buffer": "5.0.1" + "safe-buffer": "^5.0.1" } }, "stringstream": { @@ -2334,7 +2334,7 @@ "bundled": true, "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-json-comments": { @@ -2348,9 +2348,9 @@ "bundled": true, "dev": true, "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" } }, "tar-pack": { @@ -2359,14 +2359,14 @@ "dev": true, "optional": true, "requires": { - "debug": "2.6.8", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.2.9", - "rimraf": "2.6.1", - "tar": "2.2.1", - "uid-number": "0.0.6" + "debug": "^2.2.0", + "fstream": "^1.0.10", + "fstream-ignore": "^1.0.5", + "once": "^1.3.3", + "readable-stream": "^2.1.4", + "rimraf": "^2.5.1", + "tar": "^2.2.1", + "uid-number": "^0.0.6" } }, "tough-cookie": { @@ -2375,7 +2375,7 @@ "dev": true, "optional": true, "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } }, "tunnel-agent": { @@ -2384,7 +2384,7 @@ "dev": true, "optional": true, "requires": { - "safe-buffer": "5.0.1" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -2425,7 +2425,7 @@ "dev": true, "optional": true, "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.2" } }, "wrappy": { @@ -2465,12 +2465,12 @@ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "glob-base": { @@ -2479,8 +2479,8 @@ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" } }, "glob-parent": { @@ -2489,7 +2489,7 @@ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { - "is-glob": "2.0.1" + "is-glob": "^2.0.0" } }, "global-dirs": { @@ -2498,7 +2498,7 @@ "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", "dev": true, "requires": { - "ini": "1.3.5" + "ini": "^1.3.4" } }, "globals": { @@ -2513,11 +2513,11 @@ "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", "dev": true, "requires": { - "array-union": "1.0.2", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" }, "dependencies": { "pinkie": { @@ -2532,7 +2532,7 @@ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } } } @@ -2543,17 +2543,17 @@ "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", "dev": true, "requires": { - "create-error-class": "3.0.2", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "is-redirect": "1.0.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.1", - "safe-buffer": "5.1.1", - "timed-out": "4.0.1", - "unzip-response": "2.0.1", - "url-parse-lax": "1.0.0" + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" } }, "graceful-fs": { @@ -2567,7 +2567,7 @@ "resolved": "https://registry.npmjs.org/handleable/-/handleable-0.25.1.tgz", "integrity": "sha512-bSfBrGgZPThIfCdM0mN2285Co5ZqD5DrYirWZPjQfB+Flk9hwvsJ+v842F45PfCPuSzLE//Tbj5jVJi40V6FJg==", "requires": { - "lodash.merge": "4.6.1" + "lodash.merge": "^4.6.1" } }, "has-ansi": { @@ -2576,7 +2576,7 @@ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "has-color": { @@ -2603,8 +2603,8 @@ "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", "dev": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" } }, "hosted-git-info": { @@ -2619,20 +2619,20 @@ "integrity": "sha512-ztKnkZV0TmxnumCDHHgLGNiDnotu4EHCp9YMkznWuo4uTtCyJ+cu+RNcxUeXYKTllpvLFWnbfWry09yzszgg+A==", "dev": true, "requires": { - "dot-prop": "4.2.0", - "es6-error": "4.1.1", - "graceful-fs": "4.1.11", - "indent-string": "3.2.0", - "json5": "0.5.1", - "lodash.clonedeep": "4.5.0", - "lodash.clonedeepwith": "4.5.0", - "lodash.isequal": "4.5.0", - "lodash.merge": "4.6.1", - "md5-hex": "2.0.0", - "package-hash": "2.0.0", - "pkg-dir": "2.0.0", - "resolve-from": "3.0.0", - "safe-buffer": "5.1.1" + "dot-prop": "^4.1.0", + "es6-error": "^4.0.2", + "graceful-fs": "^4.1.11", + "indent-string": "^3.1.0", + "json5": "^0.5.1", + "lodash.clonedeep": "^4.5.0", + "lodash.clonedeepwith": "^4.5.0", + "lodash.isequal": "^4.5.0", + "lodash.merge": "^4.6.0", + "md5-hex": "^2.0.0", + "package-hash": "^2.0.0", + "pkg-dir": "^2.0.0", + "resolve-from": "^3.0.0", + "safe-buffer": "^5.0.1" } }, "ignore-by-default": { @@ -2653,8 +2653,8 @@ "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=", "dev": true, "requires": { - "pkg-dir": "2.0.0", - "resolve-cwd": "2.0.0" + "pkg-dir": "^2.0.0", + "resolve-cwd": "^2.0.0" } }, "imurmurhash": { @@ -2675,8 +2675,8 @@ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -2697,7 +2697,7 @@ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "dev": true, "requires": { - "loose-envify": "1.3.1" + "loose-envify": "^1.0.0" } }, "irregular-plurals": { @@ -2718,7 +2718,7 @@ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "binary-extensions": "1.11.0" + "binary-extensions": "^1.0.0" } }, "is-buffer": { @@ -2733,7 +2733,7 @@ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { - "builtin-modules": "1.1.1" + "builtin-modules": "^1.0.0" } }, "is-ci": { @@ -2742,7 +2742,7 @@ "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", "dev": true, "requires": { - "ci-info": "1.1.3" + "ci-info": "^1.0.0" } }, "is-dotfile": { @@ -2757,7 +2757,7 @@ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { - "is-primitive": "2.0.0" + "is-primitive": "^2.0.0" } }, "is-error": { @@ -2784,7 +2784,7 @@ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-fullwidth-code-point": { @@ -2805,7 +2805,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "is-installed-globally": { @@ -2814,8 +2814,8 @@ "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", "dev": true, "requires": { - "global-dirs": "0.1.1", - "is-path-inside": "1.0.1" + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" } }, "is-npm": { @@ -2830,7 +2830,7 @@ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-obj": { @@ -2845,7 +2845,7 @@ "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", "dev": true, "requires": { - "symbol-observable": "1.2.0" + "symbol-observable": "^1.1.0" } }, "is-path-inside": { @@ -2854,7 +2854,7 @@ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "dev": true, "requires": { - "path-is-inside": "1.0.2" + "path-is-inside": "^1.0.1" } }, "is-plain-obj": { @@ -2950,8 +2950,8 @@ "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", "dev": true, "requires": { - "argparse": "1.0.10", - "esprima": "4.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "jsesc": { @@ -2978,7 +2978,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } }, "last-line-stream": { @@ -2987,7 +2987,7 @@ "integrity": "sha1-0bZNafhv8kry0EiDos7uFFIKVgA=", "dev": true, "requires": { - "through2": "2.0.3" + "through2": "^2.0.0" } }, "latest-version": { @@ -2996,7 +2996,7 @@ "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", "dev": true, "requires": { - "package-json": "4.0.1" + "package-json": "^4.0.0" } }, "load-json-file": { @@ -3005,10 +3005,10 @@ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" } }, "locate-path": { @@ -3017,8 +3017,8 @@ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" } }, "lodash": { @@ -3079,7 +3079,7 @@ "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "dev": true, "requires": { - "js-tokens": "3.0.2" + "js-tokens": "^3.0.0" } }, "loud-rejection": { @@ -3088,8 +3088,8 @@ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", "dev": true, "requires": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" } }, "lowercase-keys": { @@ -3104,8 +3104,8 @@ "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", "dev": true, "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "make-dir": { @@ -3114,7 +3114,7 @@ "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", "dev": true, "requires": { - "pify": "3.0.0" + "pify": "^3.0.0" }, "dependencies": { "pify": { @@ -3137,7 +3137,7 @@ "integrity": "sha512-aZGv6JBTHqfqAd09jmAlbKnAICTfIvb5Z8gXVxPB5WZtFfHMaAMdACL7tQflD2V+6/8KNcY8s6DYtWLgpJP5lA==", "dev": true, "requires": { - "escape-string-regexp": "1.0.5" + "escape-string-regexp": "^1.0.4" } }, "md5-hex": { @@ -3146,7 +3146,7 @@ "integrity": "sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM=", "dev": true, "requires": { - "md5-o-matic": "0.1.1" + "md5-o-matic": "^0.1.1" } }, "md5-o-matic": { @@ -3161,16 +3161,16 @@ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", "dev": true, "requires": { - "camelcase-keys": "2.1.0", - "decamelize": "1.2.0", - "loud-rejection": "1.6.0", - "map-obj": "1.0.1", - "minimist": "1.2.0", - "normalize-package-data": "2.4.0", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "redent": "1.0.0", - "trim-newlines": "1.0.0" + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" }, "dependencies": { "find-up": { @@ -3179,8 +3179,8 @@ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "load-json-file": { @@ -3189,11 +3189,11 @@ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" } }, "minimist": { @@ -3208,7 +3208,7 @@ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "pinkie-promise": "2.0.1" + "pinkie-promise": "^2.0.0" } }, "path-type": { @@ -3217,9 +3217,9 @@ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "pinkie": { @@ -3234,7 +3234,7 @@ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "read-pkg": { @@ -3243,9 +3243,9 @@ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" } }, "read-pkg-up": { @@ -3254,8 +3254,8 @@ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" } }, "strip-bom": { @@ -3264,7 +3264,7 @@ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } } } @@ -3275,19 +3275,19 @@ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" } }, "mimic-fn": { @@ -3302,7 +3302,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -3335,8 +3335,8 @@ "integrity": "sha512-z6YufO7s40wLiv2ssFshqoLS4+Kf+huhHq6KZ7gDArsKNzXYjAwTMnhEIJ9GQ8fIfBGs5tBLNPfbIDoCKGPmOw==", "dev": true, "requires": { - "bson": "1.0.6", - "require_optional": "1.0.1" + "bson": "~1.0.4", + "require_optional": "^1.0.1" } }, "ms": { @@ -3351,10 +3351,10 @@ "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", "dev": true, "requires": { - "array-differ": "1.0.0", - "array-union": "1.0.2", - "arrify": "1.0.1", - "minimatch": "3.0.4" + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" } }, "nan": { @@ -3370,10 +3370,10 @@ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { - "hosted-git-info": "2.6.0", - "is-builtin-module": "1.0.0", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.3" + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, "normalize-path": { @@ -3382,7 +3382,7 @@ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "remove-trailing-separator": "1.1.0" + "remove-trailing-separator": "^1.0.1" } }, "npm-run-path": { @@ -3391,7 +3391,7 @@ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { - "path-key": "2.0.1" + "path-key": "^2.0.0" } }, "number-is-nan": { @@ -3412,8 +3412,8 @@ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" } }, "observable-to-promise": { @@ -3422,8 +3422,8 @@ "integrity": "sha1-yCjw8NxH6fhq+KSXfF1VB2znqR8=", "dev": true, "requires": { - "is-observable": "0.2.0", - "symbol-observable": "1.2.0" + "is-observable": "^0.2.0", + "symbol-observable": "^1.0.4" }, "dependencies": { "is-observable": { @@ -3432,7 +3432,7 @@ "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", "dev": true, "requires": { - "symbol-observable": "0.2.4" + "symbol-observable": "^0.2.2" }, "dependencies": { "symbol-observable": { @@ -3451,7 +3451,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "onetime": { @@ -3460,7 +3460,7 @@ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { - "mimic-fn": "1.2.0" + "mimic-fn": "^1.0.0" } }, "option-chain": { @@ -3493,7 +3493,7 @@ "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", "dev": true, "requires": { - "p-try": "1.0.0" + "p-try": "^1.0.0" } }, "p-locate": { @@ -3502,7 +3502,7 @@ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "p-limit": "1.2.0" + "p-limit": "^1.1.0" } }, "p-try": { @@ -3517,10 +3517,10 @@ "integrity": "sha1-eK4ybIngWk2BO2hgGXevBcANKg0=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "lodash.flattendeep": "4.4.0", - "md5-hex": "2.0.0", - "release-zalgo": "1.0.0" + "graceful-fs": "^4.1.11", + "lodash.flattendeep": "^4.4.0", + "md5-hex": "^2.0.0", + "release-zalgo": "^1.0.0" } }, "package-json": { @@ -3529,10 +3529,10 @@ "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", "dev": true, "requires": { - "got": "6.7.1", - "registry-auth-token": "3.3.2", - "registry-url": "3.1.0", - "semver": "5.5.0" + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" } }, "parse-glob": { @@ -3541,10 +3541,10 @@ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" } }, "parse-json": { @@ -3553,7 +3553,7 @@ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { - "error-ex": "1.3.1" + "error-ex": "^1.2.0" } }, "parse-ms": { @@ -3598,7 +3598,7 @@ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "dev": true, "requires": { - "pify": "2.3.0" + "pify": "^2.0.0" } }, "pify": { @@ -3619,7 +3619,7 @@ "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=", "dev": true, "requires": { - "pinkie": "1.0.0" + "pinkie": "^1.0.0" } }, "pkg-conf": { @@ -3628,8 +3628,8 @@ "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", "dev": true, "requires": { - "find-up": "2.1.0", - "load-json-file": "4.0.0" + "find-up": "^2.0.0", + "load-json-file": "^4.0.0" }, "dependencies": { "load-json-file": { @@ -3638,10 +3638,10 @@ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "4.0.0", - "pify": "3.0.0", - "strip-bom": "3.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" } }, "parse-json": { @@ -3650,8 +3650,8 @@ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { - "error-ex": "1.3.1", - "json-parse-better-errors": "1.0.2" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } }, "pify": { @@ -3668,7 +3668,7 @@ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "dev": true, "requires": { - "find-up": "2.1.0" + "find-up": "^2.1.0" } }, "plur": { @@ -3677,7 +3677,7 @@ "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", "dev": true, "requires": { - "irregular-plurals": "1.4.0" + "irregular-plurals": "^1.0.0" } }, "prepend-http": { @@ -3698,8 +3698,8 @@ "integrity": "sha1-6crJx2v27lL+lC3ZxsQhMVOxKIE=", "dev": true, "requires": { - "parse-ms": "1.0.1", - "plur": "2.1.2" + "parse-ms": "^1.0.0", + "plur": "^2.1.2" }, "dependencies": { "parse-ms": { @@ -3734,8 +3734,8 @@ "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { "is-number": { @@ -3744,7 +3744,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -3753,7 +3753,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -3764,7 +3764,7 @@ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -3775,10 +3775,10 @@ "integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=", "dev": true, "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "~0.4.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { "minimist": { @@ -3795,9 +3795,9 @@ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", "dev": true, "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.4.0", - "path-type": "2.0.0" + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" } }, "read-pkg-up": { @@ -3806,8 +3806,8 @@ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "dev": true, "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" } }, "readable-stream": { @@ -3816,13 +3816,13 @@ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, "readdirp": { @@ -3831,10 +3831,10 @@ "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.6", - "set-immediate-shim": "1.0.1" + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" } }, "redent": { @@ -3843,8 +3843,8 @@ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", "dev": true, "requires": { - "indent-string": "2.1.0", - "strip-indent": "1.0.1" + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" }, "dependencies": { "indent-string": { @@ -3853,7 +3853,7 @@ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", "dev": true, "requires": { - "repeating": "2.0.1" + "repeating": "^2.0.0" } } } @@ -3876,7 +3876,7 @@ "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { - "is-equal-shallow": "0.1.3" + "is-equal-shallow": "^0.1.3" } }, "regexpu-core": { @@ -3885,9 +3885,9 @@ "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", "dev": true, "requires": { - "regenerate": "1.3.3", - "regjsgen": "0.2.0", - "regjsparser": "0.1.5" + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" } }, "registry-auth-token": { @@ -3896,8 +3896,8 @@ "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", "dev": true, "requires": { - "rc": "1.2.6", - "safe-buffer": "5.1.1" + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" } }, "registry-url": { @@ -3906,7 +3906,7 @@ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "dev": true, "requires": { - "rc": "1.2.6" + "rc": "^1.0.1" } }, "regjsgen": { @@ -3921,7 +3921,7 @@ "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", "dev": true, "requires": { - "jsesc": "0.5.0" + "jsesc": "~0.5.0" } }, "release-zalgo": { @@ -3930,7 +3930,7 @@ "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", "dev": true, "requires": { - "es6-error": "4.1.1" + "es6-error": "^4.0.1" } }, "remove-trailing-separator": { @@ -3957,7 +3957,7 @@ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { - "is-finite": "1.0.2" + "is-finite": "^1.0.0" } }, "require-precompiled": { @@ -3972,8 +3972,8 @@ "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", "dev": true, "requires": { - "resolve-from": "2.0.0", - "semver": "5.5.0" + "resolve-from": "^2.0.0", + "semver": "^5.1.0" }, "dependencies": { "resolve-from": { @@ -3990,7 +3990,7 @@ "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", "dev": true, "requires": { - "path-parse": "1.0.5" + "path-parse": "^1.0.5" } }, "resolve-cwd": { @@ -3999,7 +3999,7 @@ "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", "dev": true, "requires": { - "resolve-from": "3.0.0" + "resolve-from": "^3.0.0" } }, "resolve-from": { @@ -4014,8 +4014,8 @@ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "dev": true, "requires": { - "onetime": "2.0.1", - "signal-exit": "3.0.2" + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" } }, "safe-buffer": { @@ -4036,7 +4036,7 @@ "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", "dev": true, "requires": { - "semver": "5.5.0" + "semver": "^5.0.3" } }, "serialize-error": { @@ -4057,7 +4057,7 @@ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" } }, "shebang-regex": { @@ -4084,7 +4084,7 @@ "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0" + "is-fullwidth-code-point": "^2.0.0" } }, "slide": { @@ -4099,7 +4099,7 @@ "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", "dev": true, "requires": { - "is-plain-obj": "1.1.0" + "is-plain-obj": "^1.0.0" } }, "source-map": { @@ -4114,7 +4114,7 @@ "integrity": "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==", "dev": true, "requires": { - "source-map": "0.6.1" + "source-map": "^0.6.0" }, "dependencies": { "source-map": { @@ -4131,8 +4131,8 @@ "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", "dev": true, "requires": { - "spdx-expression-parse": "3.0.0", - "spdx-license-ids": "3.0.0" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-exceptions": { @@ -4147,8 +4147,8 @@ "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "dev": true, "requires": { - "spdx-exceptions": "2.1.0", - "spdx-license-ids": "3.0.0" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-license-ids": { @@ -4175,8 +4175,8 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "string_decoder": { @@ -4185,7 +4185,7 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, "strip-ansi": { @@ -4194,7 +4194,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" }, "dependencies": { "ansi-regex": { @@ -4217,7 +4217,7 @@ "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.1" } }, "strip-eof": { @@ -4232,7 +4232,7 @@ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", "dev": true, "requires": { - "get-stdin": "4.0.1" + "get-stdin": "^4.0.1" } }, "strip-json-comments": { @@ -4247,11 +4247,11 @@ "integrity": "sha512-HZJ3geIMPgVwKk2VsmO5YHqnnJYl6bV5A9JW2uzqV43WmpgliNEYbuvukfor7URpaqpxuw3CfZ3ONdVbZjCgIA==", "dev": true, "requires": { - "arrify": "1.0.1", - "indent-string": "3.2.0", - "js-yaml": "3.11.0", - "serialize-error": "2.1.0", - "strip-ansi": "4.0.0" + "arrify": "^1.0.1", + "indent-string": "^3.2.0", + "js-yaml": "^3.10.0", + "serialize-error": "^2.1.0", + "strip-ansi": "^4.0.0" } }, "supports-color": { @@ -4260,7 +4260,7 @@ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" }, "dependencies": { "has-flag": { @@ -4283,7 +4283,7 @@ "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", "dev": true, "requires": { - "execa": "0.7.0" + "execa": "^0.7.0" } }, "text-table": { @@ -4298,8 +4298,8 @@ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "dev": true, "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" } }, "time-zone": { @@ -4350,18 +4350,18 @@ "integrity": "sha1-ElX4ej/1frCw4fDmEKi0dIBGya4=", "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "builtin-modules": "1.1.1", - "chalk": "2.4.0", - "commander": "2.15.1", - "diff": "3.5.0", - "glob": "7.1.2", - "js-yaml": "3.11.0", - "minimatch": "3.0.4", - "resolve": "1.7.1", - "semver": "5.5.0", - "tslib": "1.9.0", - "tsutils": "2.26.1" + "babel-code-frame": "^6.22.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^3.2.0", + "glob": "^7.1.1", + "js-yaml": "^3.7.0", + "minimatch": "^3.0.4", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.12.1" } }, "tsutils": { @@ -4370,7 +4370,7 @@ "integrity": "sha512-bnm9bcjOqOr1UljleL94wVCDlpa6KjfGaTkefeLch4GRafgDkROxPizbB/FxTEdI++5JqhxczRy/Qub0syNqZA==", "dev": true, "requires": { - "tslib": "1.9.0" + "tslib": "^1.8.1" } }, "typeable": { @@ -4396,7 +4396,7 @@ "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", "dev": true, "requires": { - "crypto-random-string": "1.0.0" + "crypto-random-string": "^1.0.0" } }, "unique-temp-dir": { @@ -4405,8 +4405,8 @@ "integrity": "sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U=", "dev": true, "requires": { - "mkdirp": "0.5.1", - "os-tmpdir": "1.0.2", + "mkdirp": "^0.5.1", + "os-tmpdir": "^1.0.1", "uid2": "0.0.3" } }, @@ -4422,16 +4422,16 @@ "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", "dev": true, "requires": { - "boxen": "1.3.0", - "chalk": "2.4.0", - "configstore": "3.1.2", - "import-lazy": "2.1.0", - "is-ci": "1.1.0", - "is-installed-globally": "0.1.0", - "is-npm": "1.0.0", - "latest-version": "3.1.0", - "semver-diff": "2.1.0", - "xdg-basedir": "3.0.0" + "boxen": "^1.2.1", + "chalk": "^2.0.1", + "configstore": "^3.0.0", + "import-lazy": "^2.1.0", + "is-ci": "^1.0.10", + "is-installed-globally": "^0.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" } }, "url-parse-lax": { @@ -4440,7 +4440,7 @@ "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", "dev": true, "requires": { - "prepend-http": "1.0.4" + "prepend-http": "^1.0.1" } }, "util-deprecate": { @@ -4454,8 +4454,8 @@ "resolved": "https://registry.npmjs.org/validatable/-/validatable-0.34.2.tgz", "integrity": "sha512-AFPs3qL3E3uhJvBqzFB1+FwzZOzcubIopPkZyCK/t80DKx7bFsscalq9jDu7iF4XEuPANWBhDnF2wxyQ6Bf8fg==", "requires": { - "lodash.merge": "4.6.1", - "typeable": "2.4.1" + "lodash.merge": "^4.6.1", + "typeable": "^2.4.1" } }, "validate-npm-package-license": { @@ -4464,8 +4464,8 @@ "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", "dev": true, "requires": { - "spdx-correct": "3.0.0", - "spdx-expression-parse": "3.0.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, "well-known-symbols": { @@ -4480,7 +4480,7 @@ "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "widest-line": { @@ -4489,7 +4489,7 @@ "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", "dev": true, "requires": { - "string-width": "2.1.1" + "string-width": "^2.1.1" } }, "wrappy": { @@ -4504,9 +4504,9 @@ "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "signal-exit": "3.0.2" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" } }, "write-json-file": { @@ -4515,12 +4515,12 @@ "integrity": "sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8=", "dev": true, "requires": { - "detect-indent": "5.0.0", - "graceful-fs": "4.1.11", - "make-dir": "1.2.0", - "pify": "3.0.0", - "sort-keys": "2.0.0", - "write-file-atomic": "2.3.0" + "detect-indent": "^5.0.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "pify": "^3.0.0", + "sort-keys": "^2.0.0", + "write-file-atomic": "^2.0.0" }, "dependencies": { "detect-indent": { @@ -4543,8 +4543,8 @@ "integrity": "sha1-AwqZlMyZk9JbTnWp8aGSNgcpHOk=", "dev": true, "requires": { - "sort-keys": "2.0.0", - "write-json-file": "2.3.0" + "sort-keys": "^2.0.0", + "write-json-file": "^2.2.0" } }, "xdg-basedir": { diff --git a/package.json b/package.json index 1e522b7..f2cff44 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.32.2", + "version": "1.32.3", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", From 234a59312ae004c96c4836251d7b0ae9064343fd Mon Sep 17 00:00:00 2001 From: Kristijan Sedlak <174279+xpepermint@users.noreply.github.com> Date: Fri, 22 Jun 2018 19:05:41 +0200 Subject: [PATCH 210/219] Fix typos --- README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 686be75..e8099fa 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ > Strongly-typed JavaScript object with support for validation and error handling. -This is a light weight open source package for the **server** and **browser** (using module bundler) written with [TypeScript](https://www.typescriptlang.org). It's actively maintained, well tested and already used in production environments. The source code is available on [GitHub](https://github.com/xpepermint/rawmodeljs) where you can also find our [issue tracker](https://github.com/xpepermint/rawmodeljs/issues). +This is a lightweight open source package for the **server** and **browser** (using module bundler) written with [TypeScript](https://www.typescriptlang.org). It's actively maintained, well tested and already used in production environments. The source code is available on [GitHub](https://github.com/xpepermint/rawmodeljs) where you can also find our [issue tracker](https://github.com/xpepermint/rawmodeljs/issues). ## Related Projects @@ -162,7 +162,7 @@ this.defineField('name', { ### Field Null Value -By default all defined fields are set to `null`. Similar to default and fake value we can set a `nullValue` option for each field, to automatically replace `null` values. +By default, all defined fields are set to `null`. Similar to default and fake value we can set a `nullValue` option for each field, to automatically replace `null` values. The `nullValue` can also be a method which returns a dynamic value. Note that this function shares the context of a field instance, thus you have access to all the features of the `Field` class. @@ -349,7 +349,7 @@ class User extends Model { ### Error Handling -RawModel provides a mechanism for handling field-related errors. The logic is aligned with validation thus validation and error handling can easily be managed in a unified way. This is great because we always deal with validation errors and can thus directly send these errors back to a user in unified format. +RawModel provides a mechanism for handling field-related errors. The logic is aligned with validation thus validation and error handling can easily be managed in a unified way. This is great because we always deal with validation errors and can thus directly send these errors back to a user in a unified format. ```js class User extends Model { @@ -614,7 +614,7 @@ user.flatten(); // -> [{path: [...], field: ...}, ...] **Model.prototype.handle(error, { quiet }): Promise(Model)** -> Tries to handle the `error` against each field handlers and populates model with possible errors. +> Tries to handle the `error` against each field handlers and populates the model with possible errors. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ @@ -705,7 +705,7 @@ catch (e) { **Model.prototype.validate({ quiet })**: Promise(Model) -> Validates model fields, populates model with possible errors and throws a validation error if not all fields are valid unless the `quiet` is set to `true`. +> Validates model fields, populates the model with possible errors and throws a validation error if not all fields are valid unless the `quiet` is set to `true`. | Option | Type | Required | Default | Description |--------|------|----------|---------|------------ @@ -746,7 +746,7 @@ catch (e) { **Field.prototype.clear()**: Field -> Sets field and related sub fields to `null`. +> Sets field and related subfields to `null`. **Field.prototype.commit()**: Field @@ -794,7 +794,7 @@ catch (e) { **Field.prototype.isChanged()**: Boolean -> Returns `true` if the field or at least one sub field have been changed. +> Returns `true` if the field or at least one subfield have been changed. **Field.prototype.isNested()**: Boolean @@ -802,7 +802,7 @@ catch (e) { **Field.prototype.isValid()**: Boolean -> Returns `true` if the field and all sub fields are valid (inverse of `hasErrors()`). Make sure that you call the `validate()` method first. +> Returns `true` if the field and all subfields are valid (inverse of `hasErrors()`). Make sure that you call the `validate()` method first. **Field.prototype.invalidate()**: Field @@ -975,7 +975,7 @@ const recipe = { **stringHexadecimal** -> Validates that the specified field is a hexadecimal number. +> Validates that a specified field is a hexadecimal number. **stringInclusion** From 8a3fcffd40fdaf5bc44a83a12b65fea9b5dbd2df Mon Sep 17 00:00:00 2001 From: Leon Panjtar Date: Fri, 24 Aug 2018 22:07:20 +0200 Subject: [PATCH 211/219] Remove toValue function definition from populate inner scope --- src/models.ts | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/models.ts b/src/models.ts index c326a42..683f545 100644 --- a/src/models.ts +++ b/src/models.ts @@ -202,22 +202,24 @@ export abstract class Model { return !isUndefined(this.getField(...keys)); } + /** + * Returns field value instance. + */ + public toValue(value, strategy?: string) { + if (value instanceof Model) { + const data = normalize(value); + return value.reset().populate(data, strategy); + } else if (isArray(value)) { + return value.map((v) => this.toValue(v, strategy)); + } else { + return value; + } + } + /** * Deeply assignes data to model fields. */ public populate(data = {}, strategy?: string): this { - - function toValue(value) { - if (value instanceof Model) { - const data = normalize(value); - return value.reset().populate(data, strategy); - } else if (isArray(value)) { - return value.map((v) => toValue(v)); - } else { - return value; - } - } - Object.keys(data || {}) .filter((n) => ( !!this._fields[n] @@ -231,7 +233,7 @@ export abstract class Model { && field.populatable.indexOf(strategy) !== -1 || !isString(strategy) ) { - this[name] = toValue(value); + this[name] = this.toValue(value, strategy); } }); From 26a61866a00bf880ec21d5ece174310c82ecb15c Mon Sep 17 00:00:00 2001 From: Leon Panjtar Date: Fri, 24 Aug 2018 22:08:20 +0200 Subject: [PATCH 212/219] Do not cast value to Model Instance if already provided --- src/fields.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/fields.ts b/src/fields.ts index ba23874..d33d5da 100644 --- a/src/fields.ts +++ b/src/fields.ts @@ -239,6 +239,13 @@ export class Field { return this._getNullValue(); } + if ( + (isArray(this.type) && isArray(data) && data[0] instanceof Model) || + (data instanceof Model) + ) { + return data; + } + if (this.isNested()) { const Klass = isArray(this.type) ? this.type[0] : this.type; const toModel = (d) => new Klass(merge({ parent: this.owner }, d)).populate(d); From c1bd475fe7a74dba6fb100346d3288b1e2e1ee20 Mon Sep 17 00:00:00 2001 From: Leon Panjtar Date: Fri, 24 Aug 2018 22:11:36 +0200 Subject: [PATCH 213/219] Add nested performance test --- tests/performance.ts | 309 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 309 insertions(+) create mode 100644 tests/performance.ts diff --git a/tests/performance.ts b/tests/performance.ts new file mode 100644 index 0000000..4eaad97 --- /dev/null +++ b/tests/performance.ts @@ -0,0 +1,309 @@ +import { ObjectId } from 'mongodb'; +import test from 'ava'; +import { Model } from '../src'; + +/** + * Post model supporting 2-levels threaded list. + */ +export class Post extends Model { + public _id: ObjectId; + public _deletedAt: Date; + public id: ObjectId; + public courseId: ObjectId; + public userId: ObjectId; + public postId: ObjectId; + public message: string; + public createdAt: Date; + public author: Author; + public answers: Post[]; + + /** + * Class constructor. + * @param data Input data. + */ + constructor(data?: any) { + super(data); + this.defineObjectIdType(); + this.defineIdFields(); + this.defineDeletedAtField(); + this.defineCourseIdField(); + this.defineUserIdField(); + this.definePostIdField(); + this.defineMessageField(); + this.defineCreatedAtField(); + this.defineAuthorField(); + this.defineAnswersField(); + this.populate(data); + } + + /** + * Defines the `ObjectId` type. + */ + protected defineObjectIdType() { + this.defineType('ObjectId', (v) => { + return ObjectId.isValid(v) ? new ObjectId(v) : null; + }); + } + + /** + * Defines the `_id` and `id` fields. + */ + protected defineIdFields() { + this.defineField('_id', { + type: 'ObjectId', + }); + this.defineField('id', { + type : 'ObjectId', + serializable: ['out-admin', 'out-profile'], + get : () => this._id, + set : (v) => this._id = v, + }); + } + + /** + * Defines the `_deletedAt` field. + */ + protected defineDeletedAtField() { + this.defineField('_deletedAt', { + type : 'Date', + serializable: ['in-db'], + }); + } + + /** + * Defines the `courseId` field. + */ + protected defineCourseIdField() { + this.defineField('courseId', { + type : 'ObjectId', + serializable: ['in-db', 'out-admin', 'out-profile'], + validate : [ + { + validator: 'presence', + code : 42217, + }, + ], + fakeValue : () => new ObjectId(), + }); + } + + /** + * Defines the `userId` field. + */ + protected defineUserIdField() { + this.defineField('userId', { + type : 'ObjectId', + serializable: ['in-db', 'out-admin', 'out-profile'], + validate : [ + { + validator: 'presence', + code : 42218, + }, + ], + fakeValue : () => new ObjectId(), + }); + } + + /** + * Defines the `postId` field. + */ + protected definePostIdField() { + this.defineField('postId', { + type : 'ObjectId', + populatable : ['in-admin'], + serializable: ['in-db', 'out-admin', 'out-profile'], + validate : [ + { + validator: 'parentPostIdValidity', + code : 42216, + condition: () => !!this.postId, + }, + ], + }); + } + + /** + * Defines the `message` field. + */ + protected defineMessageField() { + this.defineField('message', { + type : 'String', + populatable : ['in-admin', 'in-profile'], + serializable: ['in-db', 'out-admin', 'out-profile'], + validate : [ + { + validator: 'presence', + code : 42219, + }, + ] + }); + } + + /** + * Defines the `createdAt` field. + */ + protected defineCreatedAtField() { + this.defineField('createdAt', { + type : 'Date', + serializable: ['in-db', 'out-admin', 'out-profile'], + defaultValue: () => new Date(), + }); + } + + /** + * Defines the `author` field. + */ + protected defineAuthorField() { + this.defineField('author', { + type : Author, + serializable: ['out-admin', 'out-profile'], + }); + } + + /** + * Defines the `answers` field. + */ + protected defineAnswersField() { + this.defineField('answers', { + type : [Post], + serializable: ['out-admin', 'out-profile'], + defaultValue: [] + }); + } +} + +/** + * Post author model. + */ +export class Author extends Model { + public firstName: string; + public lastName: string; + public role: number; + + /** + * Class constructor. + * @param data Input data. + * @param ctx Request context. + */ + constructor(data?: any) { + super(data); + this.defineFirstNameFields(); + this.defineLastNameField(); + this.defineRoleField(); + this.populate(data); + } + + /** + * Defines the `firstName` field. + */ + protected defineFirstNameFields() { + this.defineField('firstName', { + type : 'String', + serializable: ['out-admin', 'out-profile'], + }); + } + + /** + * Defines the `lastName` field. + */ + protected defineLastNameField() { + this.defineField('lastName', { + type : 'String', + serializable: ['out-admin', 'out-profile'], + }); + } + + /** + * Defines the `role` field. + */ + protected defineRoleField() { + this.defineField('role', { + type : 'Integer', + serializable: ['out-admin', 'out-profile'], + defaultValue: false, + get : () => 3 + }); + } + +} + +test('method `populate` deeply assignes data - stages', (t) => { + + console.time('POSTS'); + const posts = []; + let i = 0; + // Create posts + while ( i < 100) { + posts.push(new Post({ + courseId: new ObjectId(), + userId: new ObjectId(), + postId: null, + message: 'test' + i, + author: new Author({firstName: 'Test', lastName: 'User'}), + answers: [] + })); + i++; + } + console.timeEnd('POSTS'); + + // Create answers + console.time('ANSWERS'); + let j = 0; + const answers = []; + while ( j < 50) { + answers.push(new Post({ + courseId: new ObjectId(), + userId: new ObjectId(), + postId: new ObjectId(), + message: 'answer' + j, + author: new Author({firstName: 'Test', lastName: 'User'}), + answers: [] + })); + j++; + } + console.timeEnd('ANSWERS'); + + // Populate posts with answers + console.time('POPULATE'); + posts.forEach(x => x.populate({answers: answers})); + console.timeEnd('POPULATE'); + + t.is(posts.length, 100); + // t.is(user.parent, null); + // t.is(user.parent, null); +}); + +test('method `populate` deeply assignes data -- all at once', (t) => { + + console.time('ATONCE'); + const posts = []; + let i = 0; + let j = 0; + const answers = []; + while ( j < 50) { + answers.push(new Post({ + courseId: new ObjectId(), + userId: new ObjectId(), + postId: new ObjectId(), + message: 'answer' + j, + author: new Author({firstName: 'Test', lastName: 'User'}), + answers: [] + })); + j++; + } + // Create posts + while ( i < 100) { + posts.push(new Post({ + courseId: new ObjectId(), + userId: new ObjectId(), + postId: null, + message: 'test' + i, + author: new Author({firstName: 'Test', lastName: 'User'}), + answers: answers + })); + i++; + } + console.timeEnd('ATONCE'); + + t.is(posts.length, 100); +}); \ No newline at end of file From 7a998fe0fcc992bd87cc7c4d6902780965bad1d1 Mon Sep 17 00:00:00 2001 From: Kristijan Sedlak Date: Sat, 25 Aug 2018 11:21:20 +0200 Subject: [PATCH 214/219] Update dependencies, bump version --- package-lock.json | 989 +++++++++++++++------------------------------- package.json | 14 +- 2 files changed, 316 insertions(+), 687 deletions(-) diff --git a/package-lock.json b/package-lock.json index 692632e..ba9b91c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -127,30 +127,30 @@ } }, "@types/lodash": { - "version": "4.14.107", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.107.tgz", - "integrity": "sha512-afvjfP2rl3yvtv2qrCRN23zIQcDinF+munMJCoHEw2BXF22QJogTlVfNPTACQ6ieDyA6VnyKT4WLuN/wK368ng==" + "version": "4.14.116", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.116.tgz", + "integrity": "sha512-lRnAtKnxMXcYYXqOiotTmJd74uawNWuPnsnPrrO7HiFuE3npE2iQhfABatbYDyxTNqZNuXzcKGhw37R7RjBFLg==" }, "@types/lodash.isequal": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/@types/lodash.isequal/-/lodash.isequal-4.5.2.tgz", - "integrity": "sha512-RBgio5IF9ND5Sw7pIivcC47oLY65f5UQCblnjVoGLR5wykwSRd/q0k6aUroXMGZfu8jnyJbNhzNC+NcFUnJ8pA==", + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/@types/lodash.isequal/-/lodash.isequal-4.5.3.tgz", + "integrity": "sha512-tpTUmHksO2H9RF98Y2w7v06ZeEKAxHPo2ysL0bV5qv5UBweiZl33NFu5QYmYOSxSnHMqBt/vsVsBVeQAcJiokg==", "requires": { "@types/lodash": "*" } }, "@types/lodash.merge": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/@types/lodash.merge/-/lodash.merge-4.6.3.tgz", - "integrity": "sha512-bOCCutkbehfCeiSqJO5XcVKjsJvX28dgvjhs4aMmBAHAsOy2oOJQwHuIZ0elI1E94qQIdEsCvz8oLgUumd6teA==", + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/@types/lodash.merge/-/lodash.merge-4.6.4.tgz", + "integrity": "sha512-usLWpRAicaNbx0VfNDREEgGWvp88inclJLXLJ3NpT83eUE4O05LJdYNRTofHq6pb/NiMZjzNVJHdgPvPzMfu6g==", "requires": { "@types/lodash": "*" } }, "@types/node": { - "version": "9.6.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.5.tgz", - "integrity": "sha512-NOLEgsT6UiDTjnWG5Hd2Mg25LRyz/oe8ql3wbjzgSFeRzRROhPmtlsvIrei4B46UjERF0td9SZ1ZXPLOdcrBHg==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.9.2.tgz", + "integrity": "sha512-pwZnkVyCGJ3LsQ0/3flQK5lCFao4esIzwUVzzk5NvL9vnkEyDhNf4fhHzUMHvyr56gNZywWTS2MR0euabMSz4A==", "dev": true }, "ansi-align": { @@ -269,9 +269,9 @@ "dev": true }, "auto-bind": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-1.2.0.tgz", - "integrity": "sha512-Zw7pZp7tztvKnWWtoII4AmqH5a2PV3ZN5F0BPRTGcc1kpRm4b6QXQnPU7Znbl6BfPfqOVOV29g4JeMqZQaqqOA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-1.2.1.tgz", + "integrity": "sha512-/W9yj1yKmBLwpexwAujeD9YHwYmRuWFGV8HWE7smQab797VeHa4/cnE2NFeDhA+E+5e/OGBI8763EhLjfZ/MXA==", "dev": true }, "ava": { @@ -426,9 +426,9 @@ } }, "babel-core": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", - "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", "dev": true, "requires": { "babel-code-frame": "^6.26.0", @@ -441,15 +441,15 @@ "babel-traverse": "^6.26.0", "babel-types": "^6.26.0", "babylon": "^6.18.0", - "convert-source-map": "^1.5.0", - "debug": "^2.6.8", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", "json5": "^0.5.1", "lodash": "^4.17.4", "minimatch": "^3.0.4", "path-is-absolute": "^1.0.1", - "private": "^0.1.7", + "private": "^0.1.8", "slash": "^1.0.0", - "source-map": "^0.5.6" + "source-map": "^0.5.7" }, "dependencies": { "debug": { @@ -683,9 +683,9 @@ } }, "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", - "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", "dev": true, "requires": { "babel-plugin-transform-strict-mode": "^6.24.1", @@ -924,9 +924,9 @@ } }, "bson": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.6.tgz", - "integrity": "sha512-D8zmlb46xfuK2gGvKmUjIklQEouN2nQ0LEHHeZ/NoHM2LDiMk2EYzZ5Ntw/Urk+bgMDosOZxaRzXxvhI5TcAVQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.0.tgz", + "integrity": "sha512-9Aeai9TacfNtWXOYarkFJRW2CWo+dRon+fuLZYJmvLV3+MiUp0bEI6IAZfXEIg7/Pl/7IWlLaDnhzTsD81etQA==", "dev": true }, "buf-compare": { @@ -935,6 +935,12 @@ "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", "dev": true }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", @@ -975,9 +981,9 @@ } }, "call-matcher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.0.1.tgz", - "integrity": "sha1-UTTQd5hPcSpU2tPL9i3ijc5BbKg=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.1.0.tgz", + "integrity": "sha512-IoQLeNwwf9KTNbtSA7aEBb1yfDbdnzwjCetjkC8io5oGeOmK2CBNdg0xr+tadRYKO0p7uQyZzvon0kXlZbvGrw==", "dev": true, "requires": { "core-js": "^2.0.0", @@ -1015,9 +1021,9 @@ "dev": true }, "chalk": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.0.tgz", - "integrity": "sha512-Wr/w0f4o9LuE7K53cD0qmbAMM+2XNLzR29vFn5hqko4sxGlUsyy363NvmyGIyk5tpe9cjTr9SJYbysEyPkRnFw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", @@ -1043,9 +1049,9 @@ } }, "ci-info": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz", - "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.4.0.tgz", + "integrity": "sha512-Oqmw2pVfCl8sCL+1QgMywPfdxPJPkC51y4usw0iiE2S9qnEOAqXy8bwl1CpMpnoU39g4iKJTz6QZj+28FvOnjQ==", "dev": true }, "clean-stack": { @@ -1110,24 +1116,24 @@ } }, "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", + "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", "dev": true, "requires": { - "color-name": "^1.1.1" + "color-name": "1.1.1" } }, "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", "dev": true }, "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", "dev": true }, "common-path-prefix": { @@ -1215,9 +1221,9 @@ } }, "core-js": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz", - "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs=", + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", + "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==", "dev": true }, "core-util-is": { @@ -1297,9 +1303,9 @@ "dev": true }, "deep-extend": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true }, "detect-indent": { @@ -1349,9 +1355,9 @@ "dev": true }, "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { "is-arrayish": "^0.2.1" @@ -1382,15 +1388,15 @@ } }, "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, "espurify": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.7.0.tgz", - "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.8.1.tgz", + "integrity": "sha512-ZDko6eY/o+D/gHCWyHTU85mKDgYcS4FJj7S+YD6WIInm7GQ6AnOjmcL4+buFV/JOztVLELi/7MmuGU5NHta0Mg==", "dev": true, "requires": { "core-js": "^2.0.0" @@ -1472,14 +1478,14 @@ "dev": true }, "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", "dev": true, "requires": { "is-number": "^2.1.0", "isobject": "^2.0.0", - "randomatic": "^1.1.3", + "randomatic": "^3.0.0", "repeat-element": "^1.1.2", "repeat-string": "^1.5.2" } @@ -1532,39 +1538,29 @@ "dev": true }, "fsevents": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", - "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", "dev": true, "optional": true, "requires": { - "nan": "^2.3.0", - "node-pre-gyp": "^0.6.39" + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" }, "dependencies": { "abbrev": { - "version": "1.1.0", + "version": "1.1.1", "bundled": true, "dev": true, "optional": true }, - "ajv": { - "version": "4.11.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" - } - }, "ansi-regex": { "version": "2.1.1", "bundled": true, "dev": true }, "aproba": { - "version": "1.1.1", + "version": "1.2.0", "bundled": true, "dev": true, "optional": true @@ -1579,88 +1575,22 @@ "readable-stream": "^2.0.6" } }, - "asn1": { - "version": "0.2.3", - "bundled": true, - "dev": true, - "optional": true - }, - "assert-plus": { - "version": "0.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "aws4": { - "version": "1.6.0", - "bundled": true, - "dev": true, - "optional": true - }, "balanced-match": { - "version": "0.4.2", + "version": "1.0.0", "bundled": true, "dev": true }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "block-stream": { - "version": "0.0.9", - "bundled": true, - "dev": true, - "requires": { - "inherits": "~2.0.0" - } - }, - "boom": { - "version": "2.10.1", - "bundled": true, - "dev": true, - "requires": { - "hoek": "2.x.x" - } - }, "brace-expansion": { - "version": "1.1.7", + "version": "1.1.11", "bundled": true, "dev": true, "requires": { - "balanced-match": "^0.4.1", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "buffer-shims": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "caseless": { - "version": "0.12.0", - "bundled": true, - "dev": true, - "optional": true - }, - "co": { - "version": "4.6.0", + "chownr": { + "version": "1.0.1", "bundled": true, "dev": true, "optional": true @@ -1670,14 +1600,6 @@ "bundled": true, "dev": true }, - "combined-stream": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, "concat-map": { "version": "0.0.1", "bundled": true, @@ -1691,35 +1613,11 @@ "core-util-is": { "version": "1.0.2", "bundled": true, - "dev": true - }, - "cryptiles": { - "version": "2.0.5", - "bundled": true, - "dev": true, - "requires": { - "boom": "2.x.x" - } - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, "dev": true, - "optional": true, - "requires": { - "assert-plus": "^1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } + "optional": true }, "debug": { - "version": "2.6.8", + "version": "2.6.9", "bundled": true, "dev": true, "optional": true, @@ -1728,16 +1626,11 @@ } }, "deep-extend": { - "version": "0.4.2", + "version": "0.5.1", "bundled": true, "dev": true, "optional": true }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, "delegates": { "version": "1.0.0", "bundled": true, @@ -1745,74 +1638,25 @@ "optional": true }, "detect-libc": { - "version": "1.0.2", + "version": "1.0.3", "bundled": true, "dev": true, "optional": true }, - "ecc-jsbn": { - "version": "0.1.1", + "fs-minipass": { + "version": "1.2.5", "bundled": true, "dev": true, "optional": true, "requires": { - "jsbn": "~0.1.0" - } - }, - "extend": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "optional": true - }, - "form-data": { - "version": "2.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.5", - "mime-types": "^2.1.12" + "minipass": "^2.2.1" } }, "fs.realpath": { "version": "1.0.0", "bundled": true, - "dev": true - }, - "fstream": { - "version": "1.0.11", - "bundled": true, "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fstream": "^1.0.0", - "inherits": "2", - "minimatch": "^3.0.0" - } + "optional": true }, "gauge": { "version": "2.7.4", @@ -1830,27 +1674,11 @@ "wide-align": "^1.1.0" } }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "^1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, "glob": { "version": "7.1.2", "bundled": true, "dev": true, + "optional": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -1860,64 +1688,35 @@ "path-is-absolute": "^1.0.0" } }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true, - "dev": true - }, - "har-schema": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ajv": "^4.9.1", - "har-schema": "^1.0.5" - } - }, "has-unicode": { "version": "2.0.1", "bundled": true, "dev": true, "optional": true }, - "hawk": { - "version": "3.1.3", + "iconv-lite": { + "version": "0.4.21", "bundled": true, "dev": true, + "optional": true, "requires": { - "boom": "2.x.x", - "cryptiles": "2.x.x", - "hoek": "2.x.x", - "sntp": "1.x.x" + "safer-buffer": "^2.1.0" } }, - "hoek": { - "version": "2.16.3", - "bundled": true, - "dev": true - }, - "http-signature": { - "version": "1.1.1", + "ignore-walk": { + "version": "3.0.1", "bundled": true, "dev": true, "optional": true, "requires": { - "assert-plus": "^0.2.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "minimatch": "^3.0.4" } }, "inflight": { "version": "1.0.6", "bundled": true, "dev": true, + "optional": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -1929,7 +1728,7 @@ "dev": true }, "ini": { - "version": "1.3.4", + "version": "1.3.5", "bundled": true, "dev": true, "optional": true @@ -1942,111 +1741,43 @@ "number-is-nan": "^1.0.0" } }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, "isarray": { "version": "1.0.0", "bundled": true, - "dev": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true, "dev": true, "optional": true }, - "jodid25519": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsbn": "~0.1.0" - } - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true, - "dev": true, - "optional": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsonify": "~0.0.0" - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "jsonify": { - "version": "0.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "jsprim": { - "version": "1.4.0", + "minimatch": { + "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } + "brace-expansion": "^1.1.7" } }, - "mime-db": { - "version": "1.27.0", + "minimist": { + "version": "0.0.8", "bundled": true, "dev": true }, - "mime-types": { - "version": "2.1.15", + "minipass": { + "version": "2.2.4", "bundled": true, "dev": true, "requires": { - "mime-db": "~1.27.0" + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" } }, - "minimatch": { - "version": "3.0.4", + "minizlib": { + "version": "1.1.0", "bundled": true, "dev": true, + "optional": true, "requires": { - "brace-expansion": "^1.1.7" + "minipass": "^2.2.1" } }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, "mkdirp": { "version": "0.5.1", "bundled": true, @@ -2061,23 +1792,33 @@ "dev": true, "optional": true }, + "needle": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, "node-pre-gyp": { - "version": "0.6.39", + "version": "0.10.0", "bundled": true, "dev": true, "optional": true, "requires": { "detect-libc": "^1.0.2", - "hawk": "3.1.3", "mkdirp": "^0.5.1", + "needle": "^2.2.0", "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", "npmlog": "^4.0.2", "rc": "^1.1.7", - "request": "2.81.0", "rimraf": "^2.6.1", "semver": "^5.3.0", - "tar": "^2.2.1", - "tar-pack": "^3.4.0" + "tar": "^4" } }, "nopt": { @@ -2090,8 +1831,24 @@ "osenv": "^0.1.4" } }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, "npmlog": { - "version": "4.1.0", + "version": "4.1.2", "bundled": true, "dev": true, "optional": true, @@ -2107,12 +1864,6 @@ "bundled": true, "dev": true }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true, - "dev": true, - "optional": true - }, "object-assign": { "version": "4.1.1", "bundled": true, @@ -2140,7 +1891,7 @@ "optional": true }, "osenv": { - "version": "0.1.4", + "version": "0.1.5", "bundled": true, "dev": true, "optional": true, @@ -2152,38 +1903,22 @@ "path-is-absolute": { "version": "1.0.1", "bundled": true, - "dev": true - }, - "performance-now": { - "version": "0.2.0", - "bundled": true, "dev": true, "optional": true }, "process-nextick-args": { - "version": "1.0.7", - "bundled": true, - "dev": true - }, - "punycode": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "optional": true - }, - "qs": { - "version": "6.4.0", + "version": "2.0.0", "bundled": true, "dev": true, "optional": true }, "rc": { - "version": "1.2.1", + "version": "1.2.7", "bundled": true, "dev": true, "optional": true, "requires": { - "deep-extend": "~0.4.0", + "deep-extend": "^0.5.1", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" @@ -2198,112 +1933,63 @@ } }, "readable-stream": { - "version": "2.2.9", + "version": "2.3.6", "bundled": true, "dev": true, + "optional": true, "requires": { - "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, - "request": { - "version": "2.81.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aws-sign2": "~0.6.0", - "aws4": "^1.2.1", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.0", - "forever-agent": "~0.6.1", - "form-data": "~2.1.1", - "har-validator": "~4.2.1", - "hawk": "~3.1.3", - "http-signature": "~1.1.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.7", - "oauth-sign": "~0.8.1", - "performance-now": "^0.2.0", - "qs": "~6.4.0", - "safe-buffer": "^5.0.1", - "stringstream": "~0.0.4", - "tough-cookie": "~2.3.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.0.0" - } - }, "rimraf": { - "version": "2.6.1", + "version": "2.6.2", "bundled": true, "dev": true, + "optional": true, "requires": { "glob": "^7.0.5" } }, "safe-buffer": { - "version": "5.0.1", + "version": "5.1.1", "bundled": true, "dev": true }, - "semver": { - "version": "5.3.0", + "safer-buffer": { + "version": "2.1.2", "bundled": true, "dev": true, "optional": true }, - "set-blocking": { - "version": "2.0.0", + "sax": { + "version": "1.2.4", "bundled": true, "dev": true, "optional": true }, - "signal-exit": { - "version": "3.0.2", + "semver": { + "version": "5.5.0", "bundled": true, "dev": true, "optional": true }, - "sntp": { - "version": "1.0.9", + "set-blocking": { + "version": "2.0.0", "bundled": true, "dev": true, - "requires": { - "hoek": "2.x.x" - } + "optional": true }, - "sshpk": { - "version": "1.13.0", + "signal-exit": { + "version": "3.0.2", "bundled": true, "dev": true, - "optional": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jodid25519": "^1.0.0", - "jsbn": "~0.1.0", - "tweetnacl": "~0.14.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } + "optional": true }, "string-width": { "version": "1.0.2", @@ -2316,19 +2002,14 @@ } }, "string_decoder": { - "version": "1.0.1", + "version": "1.1.1", "bundled": true, "dev": true, + "optional": true, "requires": { - "safe-buffer": "^5.0.1" + "safe-buffer": "~5.1.0" } }, - "stringstream": { - "version": "0.0.5", - "bundled": true, - "dev": true, - "optional": true - }, "strip-ansi": { "version": "3.0.1", "bundled": true, @@ -2344,81 +2025,26 @@ "optional": true }, "tar": { - "version": "2.2.1", - "bundled": true, - "dev": true, - "requires": { - "block-stream": "*", - "fstream": "^1.0.2", - "inherits": "2" - } - }, - "tar-pack": { - "version": "3.4.0", + "version": "4.4.1", "bundled": true, "dev": true, "optional": true, "requires": { - "debug": "^2.2.0", - "fstream": "^1.0.10", - "fstream-ignore": "^1.0.5", - "once": "^1.3.3", - "readable-stream": "^2.1.4", - "rimraf": "^2.5.1", - "tar": "^2.2.1", - "uid-number": "^0.0.6" + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" } }, - "tough-cookie": { - "version": "2.3.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "punycode": "^1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "dev": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true, - "dev": true, - "optional": true - }, "util-deprecate": { "version": "1.0.2", "bundled": true, - "dev": true - }, - "uuid": { - "version": "3.0.1", - "bundled": true, "dev": true, "optional": true }, - "verror": { - "version": "1.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2" - } - }, "wide-align": { "version": "1.1.2", "bundled": true, @@ -2432,6 +2058,11 @@ "version": "1.0.2", "bundled": true, "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true } } }, @@ -2608,9 +2239,9 @@ } }, "hosted-git-info": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", - "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", "dev": true }, "hullabaloo-config-manager": { @@ -2737,12 +2368,12 @@ } }, "is-ci": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", - "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.0.tgz", + "integrity": "sha512-plgvKjQtalH2P3Gytb7L61Lmz95g2DlpzFiQyRSFew8WoJKxtKRzrZMeyRN2supblm3Psc8OQGy7Xjb6XG11jw==", "dev": true, "requires": { - "ci-info": "^1.0.0" + "ci-info": "^1.3.0" } }, "is-dotfile": { @@ -2945,9 +2576,9 @@ "dev": true }, "js-yaml": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", - "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -3022,9 +2653,9 @@ } }, "lodash": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", "dev": true }, "lodash.clonedeep": { @@ -3074,12 +2705,12 @@ "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" }, "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, "requires": { - "js-tokens": "^3.0.0" + "js-tokens": "^3.0.0 || ^4.0.0" } }, "loud-rejection": { @@ -3099,9 +2730,9 @@ "dev": true }, "lru-cache": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", - "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", "dev": true, "requires": { "pseudomap": "^1.0.2", @@ -3109,9 +2740,9 @@ } }, "make-dir": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", - "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", "dev": true, "requires": { "pify": "^3.0.0" @@ -3132,14 +2763,20 @@ "dev": true }, "matcher": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.1.0.tgz", - "integrity": "sha512-aZGv6JBTHqfqAd09jmAlbKnAICTfIvb5Z8gXVxPB5WZtFfHMaAMdACL7tQflD2V+6/8KNcY8s6DYtWLgpJP5lA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.1.1.tgz", + "integrity": "sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg==", "dev": true, "requires": { "escape-string-regexp": "^1.0.4" } }, + "math-random": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", + "dev": true + }, "md5-hex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-2.0.0.tgz", @@ -3321,22 +2958,23 @@ } }, "mongodb": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.0.7.tgz", - "integrity": "sha512-n/14kMJEoARXz1qhpNPhUocqy+z5130jhqgEIX1Tsl8UVpHrndQ8et+VmgC4yPK/I8Tcgc93JEMQCHTekBUnNA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.1.3.tgz", + "integrity": "sha512-hfzI54/fe+604w5gP+i9aJ5GGVxnquxZ09ZN1cyLTbpnBfDRpj78lN59SBdDRkF1VNTzmM2KcgDWhHHDHcsJxw==", "dev": true, "requires": { - "mongodb-core": "3.0.7" + "mongodb-core": "3.1.2" } }, "mongodb-core": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.0.7.tgz", - "integrity": "sha512-z6YufO7s40wLiv2ssFshqoLS4+Kf+huhHq6KZ7gDArsKNzXYjAwTMnhEIJ9GQ8fIfBGs5tBLNPfbIDoCKGPmOw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.1.2.tgz", + "integrity": "sha512-R2XxGzsmhlUeOK2jKATj1TWn3q3qNcJpKrSh0rhaBSHxJmV7WZ+ikjocdY8VdJxUkKqOxM8rxMqOAEzeJ3p1ww==", "dev": true, "requires": { - "bson": "~1.0.4", - "require_optional": "^1.0.1" + "bson": "^1.1.0", + "require_optional": "^1.0.1", + "saslprep": "^1.0.0" } }, "ms": { @@ -3488,9 +3126,9 @@ "dev": true }, "p-limit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", - "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "requires": { "p-try": "^1.0.0" @@ -3587,9 +3225,9 @@ "dev": true }, "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, "path-type": { @@ -3693,13 +3331,12 @@ "dev": true }, "pretty-ms": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-3.1.0.tgz", - "integrity": "sha1-6crJx2v27lL+lC3ZxsQhMVOxKIE=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-3.2.0.tgz", + "integrity": "sha512-ZypexbfVUGTFxb0v+m1bUyy92DHe5SyYlnyY0msyms5zd3RwyvNgyxZZsXXgoyzlxjx5MiqtXUdhUfvQbe0A2Q==", "dev": true, "requires": { - "parse-ms": "^1.0.0", - "plur": "^2.1.2" + "parse-ms": "^1.0.0" }, "dependencies": { "parse-ms": { @@ -3729,53 +3366,37 @@ "dev": true }, "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz", + "integrity": "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==", "dev": true, "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" }, "dependencies": { "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true }, "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, "rc": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.6.tgz", - "integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, "requires": { - "deep-extend": "~0.4.0", + "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" @@ -3859,9 +3480,9 @@ } }, "regenerate": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", - "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", "dev": true }, "regenerator-runtime": { @@ -3940,9 +3561,9 @@ "dev": true }, "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", "dev": true }, "repeat-string": { @@ -3985,9 +3606,9 @@ } }, "resolve": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", - "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", "dev": true, "requires": { "path-parse": "^1.0.5" @@ -4019,15 +3640,22 @@ } }, "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, + "saslprep": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.1.tgz", + "integrity": "sha512-ntN6SbE3hRqd45PKKadRPgA+xHPWg5lPSj2JWJdJvjTwXDDfkPVtXWvP8jJojvnm+rAsZ2b299C5NwZqq818EA==", + "dev": true, + "optional": true + }, "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", + "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==", "dev": true }, "semver-diff": { @@ -4109,11 +3737,12 @@ "dev": true }, "source-map-support": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.4.tgz", - "integrity": "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==", + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", + "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", "dev": true, "requires": { + "buffer-from": "^1.0.0", "source-map": "^0.6.0" }, "dependencies": { @@ -4255,9 +3884,9 @@ } }, "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -4339,15 +3968,15 @@ "dev": true }, "tslib": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz", - "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", "dev": true }, "tslint": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.9.1.tgz", - "integrity": "sha1-ElX4ej/1frCw4fDmEKi0dIBGya4=", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.11.0.tgz", + "integrity": "sha1-mPMMAurjzecAYgHkwzywi0hYHu0=", "dev": true, "requires": { "babel-code-frame": "^6.22.0", @@ -4361,13 +3990,13 @@ "resolve": "^1.3.2", "semver": "^5.3.0", "tslib": "^1.8.0", - "tsutils": "^2.12.1" + "tsutils": "^2.27.2" } }, "tsutils": { - "version": "2.26.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.26.1.tgz", - "integrity": "sha512-bnm9bcjOqOr1UljleL94wVCDlpa6KjfGaTkefeLch4GRafgDkROxPizbB/FxTEdI++5JqhxczRy/Qub0syNqZA==", + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", "dev": true, "requires": { "tslib": "^1.8.1" @@ -4379,9 +4008,9 @@ "integrity": "sha512-NPIeowjymPLSzpK1ySPknaatOdrbxGGzaXSEyY+Iq79eJH3i6OyxCOHhVsASoDQp5CB5zfd8u1PWMSvBIAQNFA==" }, "typescript": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.8.1.tgz", - "integrity": "sha512-Ao/f6d/4EPLq0YwzsQz8iXflezpTkQzqAyenTiw4kCUGr1uPiFLC3+fZ+gMZz6eeI/qdRUqvC+HxIJzUAzEFdg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.0.1.tgz", + "integrity": "sha512-zQIMOmC+372pC/CCVLqnQ0zSBiY7HHodU7mpQdjiZddek4GMj31I3dUJ7gAs9o65X7mnRma6OokOkc6f9jjfBg==", "dev": true }, "uid2": { @@ -4459,9 +4088,9 @@ } }, "validate-npm-package-license": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", - "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "requires": { "spdx-correct": "^3.0.0", @@ -4475,9 +4104,9 @@ "dev": true }, "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -4538,9 +4167,9 @@ } }, "write-pkg": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-3.1.0.tgz", - "integrity": "sha1-AwqZlMyZk9JbTnWp8aGSNgcpHOk=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-3.2.0.tgz", + "integrity": "sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw==", "dev": true, "requires": { "sort-keys": "^2.0.0", diff --git a/package.json b/package.json index f2cff44..4e9a581 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.32.3", + "version": "1.33.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -71,8 +71,8 @@ "author": "Kristijan Sedlak (Xpepermint)", "license": "MIT", "dependencies": { - "@types/lodash.isequal": "^4.5.2", - "@types/lodash.merge": "^4.6.3", + "@types/lodash.isequal": "^4.5.3", + "@types/lodash.merge": "^4.6.4", "handleable": "^0.25.1", "lodash.isequal": "^4.5.0", "lodash.merge": "^4.6.1", @@ -80,10 +80,10 @@ "validatable": "^0.34.2" }, "devDependencies": { - "@types/node": "^9.6.5", + "@types/node": "^10.9.2", "ava": "^0.25.0", - "mongodb": "^3.0.7", - "tslint": "^5.9.1", - "typescript": "^2.8.1" + "mongodb": "^3.1.3", + "tslint": "^5.11.0", + "typescript": "^3.0.1" } } From 3a31f5c9cd77321431c02b17cb3aa4bf84010e46 Mon Sep 17 00:00:00 2001 From: Kristijan Sedlak Date: Mon, 10 Sep 2018 22:33:02 +0200 Subject: [PATCH 215/219] Rename field to prop --- example/index.ts | 8 +- package-lock.json | 2 +- src/index.ts | 2 +- src/models.ts | 204 ++++++++++---------- src/{fields.ts => props.ts} | 36 ++-- tests/index.ts | 2 +- tests/models.ts | 338 +++++++++++++++++----------------- tests/performance.ts | 98 +++++----- tests/{fields.ts => props.ts} | 100 +++++----- 9 files changed, 395 insertions(+), 395 deletions(-) rename src/{fields.ts => props.ts} (93%) rename tests/{fields.ts => props.ts} (67%) diff --git a/example/index.ts b/example/index.ts index 2fda97b..dccfcf1 100644 --- a/example/index.ts +++ b/example/index.ts @@ -10,7 +10,7 @@ class Book extends Model { public constructor (data = {}) { super(data); - this.defineField('title', { + this.defineProp('title', { type: 'String', validate: [ { @@ -37,7 +37,7 @@ class User extends Model { public constructor (data = {}) { super(data); - this.defineField('name', { + this.defineProp('name', { type: 'String', validate: [ { @@ -46,7 +46,7 @@ class User extends Model { }, ], }); - this.defineField('book', { + this.defineProp('book', { type: Book, validate: [ { @@ -55,7 +55,7 @@ class User extends Model { } ], }); - this.defineField('books', { + this.defineProp('books', { type: [Book], nullValue: [], }); diff --git a/package-lock.json b/package-lock.json index ba9b91c..b46ce3c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.32.3", + "version": "1.33.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/src/index.ts b/src/index.ts index a63048d..4e47677 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,3 +1,3 @@ export * from './models'; -export * from './fields'; +export * from './props'; export * from './utils'; diff --git a/src/models.ts b/src/models.ts index 683f545..e496eac 100644 --- a/src/models.ts +++ b/src/models.ts @@ -1,23 +1,23 @@ import { isArray, isUndefined, isPresent, isString, toBoolean } from 'typeable'; import { ValidatorRecipe } from 'validatable'; import { HandlerRecipe } from 'handleable'; -import { Field, FieldRecipe, FieldError } from './fields'; +import { Prop, PropRecipe, PropError } from './props'; import { normalize, isEqual, merge } from './utils'; /** - * Flattened field reference type definition. + * Flattened prop reference type definition. */ -export interface FieldRef { +export interface PropRef { path: (string | number)[]; - field: Field; + prop: Prop; } /** - * Field error type definition. + * Prop error type definition. */ -export interface FieldErrorRef { +export interface PropErrorRef { path: (string | number)[]; - errors: FieldError[]; + errors: PropError[]; } /** @@ -32,7 +32,7 @@ export interface ModelRecipe { * The core schema object class. */ export abstract class Model { - protected _fields: { [name: string]: Field }; // model fields + protected _props: { [name: string]: Prop }; // model props protected _types: { [key: string]: (v?: any) => any }; // custom data types protected _validators: { [key: string]: (v?: any, r?: ValidatorRecipe) => boolean | Promise }; // custom validators protected _handlers: { [key: string]: (v?: any, r?: HandlerRecipe) => boolean | Promise }; // custom validators @@ -56,7 +56,7 @@ export abstract class Model { get: () => this._getRootModel() }); - Object.defineProperty(this, '_fields', { + Object.defineProperty(this, '_props', { value: {}, writable: true }); @@ -94,22 +94,22 @@ export abstract class Model { } /** - * Returns the appropriate field type. + * Returns the appropriate prop type. */ - protected _getFieldType(recipe: FieldRecipe = {}) { + protected _getPropType(recipe: PropRecipe = {}) { let type = isArray(recipe.type) ? recipe.type[0] : recipe.type; type = this._types[type] || type; return isArray(recipe.type) ? [type] : type; } /** - * Creates a new field instance. This method is especially useful when + * Creates a new prop instance. This method is especially useful when * extending this class. */ - protected _createField(recipe: FieldRecipe = {}) { - return new Field( + protected _createProp(recipe: PropRecipe = {}) { + return new Prop( merge({}, recipe, { - type: this._getFieldType(recipe), + type: this._getPropType(recipe), owner: this, validators: this._validators, handlers: this._handlers, @@ -121,8 +121,8 @@ export abstract class Model { /** * Creates a new validation error instance. */ - protected _createValidationError(message = 'Validation failed', code = 422): FieldError { - const error: FieldError = new Error(message); + protected _createValidationError(message = 'Validation failed', code = 422): PropError { + const error: PropError = new Error(message); error.code = code; return error; @@ -137,7 +137,7 @@ export abstract class Model { } /** - * Configures validator to stop validating field on the first error. + * Configures validator to stop validating prop on the first error. */ public failFast(fail: boolean = true): void { this._failFast = toBoolean(fail); @@ -146,17 +146,17 @@ export abstract class Model { /** * Defines a new model property. */ - public defineField(name: string, recipe: FieldRecipe = {}): void { - const field = this._createField(recipe); + public defineProp(name: string, recipe: PropRecipe = {}): void { + const prop = this._createProp(recipe); Object.defineProperty(this, name, { - get: () => field.value, - set: (v) => field.value = v, + get: () => prop.value, + set: (v) => prop.value = v, enumerable: recipe.enumerable !== false, configurable: true }); - this._fields[name] = field; + this._props[name] = prop; } /** @@ -183,27 +183,27 @@ export abstract class Model { /** * Returns a value at path. */ - public getField(...keys: any[]): Field { + public getProp(...keys: any[]): Prop { keys = [].concat(isArray(keys[0]) ? keys[0] : keys); const lastKey = keys.pop(); if (keys.length === 0) { - return this._fields[lastKey]; + return this._props[lastKey]; } - const field = keys.reduce((a, c) => (a[c] || {}), this); - return field instanceof Model ? field.getField(lastKey) : undefined; + const prop = keys.reduce((a, c) => (a[c] || {}), this); + return prop instanceof Model ? prop.getProp(lastKey) : undefined; } /** - * Returns `true` if the field exists. + * Returns `true` if the prop exists. */ - public hasField(...keys: any[]): boolean { - return !isUndefined(this.getField(...keys)); + public hasProp(...keys: any[]): boolean { + return !isUndefined(this.getProp(...keys)); } /** - * Returns field value instance. + * Returns prop value instance. */ public toValue(value, strategy?: string) { if (value instanceof Model) { @@ -217,20 +217,20 @@ export abstract class Model { } /** - * Deeply assignes data to model fields. + * Deeply assignes data to model props. */ public populate(data = {}, strategy?: string): this { Object.keys(data || {}) .filter((n) => ( - !!this._fields[n] + !!this._props[n] )) .forEach((name) => { - const field = this._fields[name]; - const value = field.cast(data[name]); + const prop = this._props[name]; + const value = prop.cast(data[name]); if ( isString(strategy) - && isArray(field.populatable) - && field.populatable.indexOf(strategy) !== -1 + && isArray(prop.populatable) + && prop.populatable.indexOf(strategy) !== -1 || !isString(strategy) ) { this[name] = this.toValue(value, strategy); @@ -256,15 +256,15 @@ export abstract class Model { } } - Object.keys(this._fields).forEach((name) => { - const field = this._fields[name]; + Object.keys(this._props).forEach((name) => { + const prop = this._props[name]; if ( isString(strategy) - && isArray(field.serializable) - && field.serializable.indexOf(strategy) !== -1 + && isArray(prop.serializable) + && prop.serializable.indexOf(strategy) !== -1 || !isString(strategy) ) { - data[name] = toObject(field.value); + data[name] = toObject(prop.value); } }); @@ -272,27 +272,27 @@ export abstract class Model { } /** - * Scrolls through the model and returns an array of fields. + * Scrolls through the model and returns an array of props. */ - public flatten(prefix: string[] = []): FieldRef[] { - let fields = []; + public flatten(prefix: string[] = []): PropRef[] { + let props = []; - Object.keys(this._fields).forEach((name) => { - const field = this._fields[name]; - const type = field.type; + Object.keys(this._props).forEach((name) => { + const prop = this._props[name]; + const type = prop.type; const path = (prefix || []).concat(name); - const value = field.value; + const value = prop.value; - fields.push({path, field}); + props.push({path, prop}); if (isPresent(value) && isPresent(type)) { if (type.prototype instanceof Model) { - fields = fields.concat( + props = props.concat( value.flatten(path) ); } else if (isArray(type) && type[0].prototype instanceof Model) { - fields = fields.concat( + props = props.concat( value .map((f, i) => (f && f instanceof Model ? f.flatten(path.concat([i])) : null)) .filter((f) => isArray(f)) @@ -302,20 +302,20 @@ export abstract class Model { } }); - return fields; + return props; } /** - * Scrolls through object fields and collects results. + * Scrolls through object props and collects results. */ - public collect(handler: (field: FieldRef) => any): any[] { + public collect(handler: (prop: PropRef) => any): any[] { return this.flatten().map(handler); } /** - * Scrolls through model fields and executes a handler on each field. + * Scrolls through model props and executes a handler on each prop. */ - public scroll(handler: (field: FieldRef) => void): number { + public scroll(handler: (prop: PropRef) => void): number { return this.flatten().map(handler).length; } @@ -323,14 +323,14 @@ export abstract class Model { * Converts this class into serialized data object with only the keys that * pass the provided `test`. */ - public filter(test: (field: FieldRef) => boolean): {[key: string]: any} { + public filter(test: (prop: PropRef) => boolean): {[key: string]: any} { const data = this.serialize(); this.flatten() .sort((a, b) => b.path.length - a.path.length) - .filter((field) => !test(field)) - .forEach((field) => { - const names = field.path.concat(); + .filter((prop) => !test(prop)) + .forEach((prop) => { + const names = prop.path.concat(); const lastName = names.pop(); delete names.reduce((o, k) => o[k], data)[lastName]; }); @@ -339,21 +339,21 @@ export abstract class Model { } /** - * Sets each model field to its default value. + * Sets each model prop to its default value. */ public reset(): this { - Object.keys(this._fields) - .forEach((name) => this._fields[name].reset()); + Object.keys(this._props) + .forEach((name) => this._props[name].reset()); return this; } /** - * Resets fields then sets fields to their fake values. + * Resets props then sets props to their fake values. */ public fake(): this { - Object.keys(this._fields) - .forEach((name) => this._fields[name].fake()); + Object.keys(this._props) + .forEach((name) => this._props[name].fake()); return this; } @@ -362,35 +362,35 @@ export abstract class Model { * Sets all fileds to `null`. */ public clear(): this { - Object.keys(this._fields) - .forEach((name) => this._fields[name].clear()); + Object.keys(this._props) + .forEach((name) => this._props[name].clear()); return this; } /** - * Resets information about changed fields by setting initial value of each field. + * Resets information about changed props by setting initial value of each prop. */ public commit(): this { - Object.keys(this._fields) - .forEach((name) => this._fields[name].commit()); + Object.keys(this._props) + .forEach((name) => this._props[name].commit()); return this; } /** - * Sets each field to its initial value (value before last commit). + * Sets each prop to its initial value (value before last commit). */ public rollback(): this { - Object.keys(this._fields) - .forEach((name) => this._fields[name].rollback()); + Object.keys(this._props) + .forEach((name) => this._props[name].rollback()); return this; } /** * Returns `true` when the `value` represents an object with the - * same field values as the original model. + * same prop values as the original model. */ public equals(value: any): boolean { return isEqual( @@ -400,34 +400,34 @@ export abstract class Model { } /** - * Returns `true` if at least one field has been changed. + * Returns `true` if at least one prop has been changed. */ public isChanged(): boolean { - return Object.keys(this._fields) - .some((name) => this._fields[name].isChanged()); + return Object.keys(this._props) + .some((name) => this._props[name].isChanged()); } /** - * Returns `true` if nested fields exist. + * Returns `true` if nested props exist. */ public isNested(): boolean { - return Object.keys(this._fields) - .some((name) => this._fields[name].isNested()); + return Object.keys(this._props) + .some((name) => this._props[name].isNested()); } /** - * Validates fields and throws an error. + * Validates props and throws an error. */ public async validate({ quiet = false }: { quiet?: boolean } = {}): Promise { - const fields = this._fields; + const props = this._props; await Promise.all( - Object.keys(fields) - .map((n) => fields[n].validate()) + Object.keys(props) + .map((n) => props[n].validate()) ); if (!quiet && this.hasErrors()) { @@ -447,10 +447,10 @@ export abstract class Model { if (!error) return this; // blank values are valid if (error.code === 422) return this; // validation errors are ignored - const fields = this._fields; + const props = this._props; await Promise.all( - Object.keys(fields) - .map((n) => fields[n].handle(error)) + Object.keys(props) + .map((n) => props[n].handle(error)) ); if (!quiet && this.hasErrors()) { @@ -463,22 +463,22 @@ export abstract class Model { } /** - * Returns a list of all fields with errors. + * Returns a list of all props with errors. */ - public collectErrors(): FieldErrorRef[] { + public collectErrors(): PropErrorRef[] { return this.flatten() - .map(({path, field}) => ({path, errors: field.errors} as FieldErrorRef)) + .map(({path, prop}) => ({path, errors: prop.errors} as PropErrorRef)) .filter(({path, errors}) => errors.length > 0); } /** - * Sets fields errors. + * Sets props errors. */ - public applyErrors(errors: FieldErrorRef[] = []): this { + public applyErrors(errors: PropErrorRef[] = []): this { errors.forEach((error) => { - const field = this.getField(...error.path); - if (field) { - field.errors = error.errors; + const prop = this.getProp(...error.path); + if (prop) { + prop.errors = error.errors; } }); @@ -489,8 +489,8 @@ export abstract class Model { * Returns `true` when errors exist (inverse of `isValid`). */ public hasErrors(): boolean { - return Object.keys(this._fields) - .some((name) => this._fields[name].hasErrors()); + return Object.keys(this._props) + .some((name) => this._props[name].hasErrors()); } /** @@ -501,11 +501,11 @@ export abstract class Model { } /** - * Removes fields errors. + * Removes props errors. */ public invalidate(): this { - Object.keys(this._fields) - .forEach((name) => this._fields[name].invalidate()); + Object.keys(this._props) + .forEach((name) => this._props[name].invalidate()); return this; } diff --git a/src/fields.ts b/src/props.ts similarity index 93% rename from src/fields.ts rename to src/props.ts index d33d5da..4827e54 100644 --- a/src/fields.ts +++ b/src/props.ts @@ -5,9 +5,9 @@ import { Handler, HandlerRecipe } from 'handleable'; import { Model } from './models'; /** - * Field definition interface. + * Prop definition interface. */ -export interface FieldRecipe { +export interface PropRecipe { type?: any; get?: (v: any) => any; set?: (v: any) => void; @@ -26,23 +26,23 @@ export interface FieldRecipe { } /** - * Field error interface. + * Prop error interface. */ -export interface FieldError { +export interface PropError { message?: string; code?: number; [key: string]: any; } /** - * Field class. + * Prop class. */ -export class Field { +export class Prop { protected _data: any; protected _initialData: any; protected _validator: Validator; protected _handler: Handler; - protected _recipe: FieldRecipe; + protected _recipe: PropRecipe; readonly defaultValue: any; readonly fakeValue: any; readonly nullValue: any; @@ -53,12 +53,12 @@ export class Field { readonly owner: Model; readonly type: any; public value: any; - public errors: FieldError[]; + public errors: PropError[]; /** * Class constructor. */ - public constructor(recipe?: FieldRecipe) { + public constructor(recipe?: PropRecipe) { if (!recipe) { recipe = {}; } @@ -149,7 +149,7 @@ export class Field { } /** - * Returns current field value. + * Returns current prop value. */ protected _getValue() { let data = this._data; @@ -163,7 +163,7 @@ export class Field { } /** - * Sets current field value. + * Sets current prop value. */ protected _setValue(data: any) { if (isFunction(data)) { @@ -179,7 +179,7 @@ export class Field { } /** - * Returns the default value of a field. + * Returns the default value of a prop. */ protected _getDefaultValue() { let data = null; @@ -196,7 +196,7 @@ export class Field { } /** - * Returns the fake value of a field. + * Returns the fake value of a prop. */ protected _getFakeValue() { let data = null; @@ -213,7 +213,7 @@ export class Field { } /** - * Returns the null value of a field. + * Returns the null value of a prop. */ protected _getNullValue() { let data = null; @@ -230,7 +230,7 @@ export class Field { } /** - * Converts a `data` into field's type. + * Converts a `data` into prop's type. */ public cast(data: any) { let converter = this.type; @@ -317,7 +317,7 @@ export class Field { * Returns `true` when `data` equals to the current value. */ public equals(data: any): boolean { - const value = data instanceof Field ? data.value : data; + const value = data instanceof Prop ? data.value : data; return isEqual( normalize(this.value), @@ -350,7 +350,7 @@ export class Field { } /** - * Validates the field by populating the `errors` property. + * Validates the prop by populating the `errors` property. * * IMPORTANT: Array null values for nested objects are not treated as an object * but as an empty item thus isValid() for [null] succeeds. @@ -371,7 +371,7 @@ export class Field { } /** - * Handles the field by populating the `errors` property. + * Handles the prop by populating the `errors` property. * * IMPORTANT: Array null values for nested objects are not treated as an object * but as an empty item thus isValid() for [null] succeeds. diff --git a/tests/index.ts b/tests/index.ts index 49b8758..0fd1ff3 100644 --- a/tests/index.ts +++ b/tests/index.ts @@ -3,5 +3,5 @@ import * as objectschema from '../src'; test('exposed content', (t) => { t.is(!!objectschema.Model, true); - t.is(!!objectschema.Field, true); + t.is(!!objectschema.Prop, true); }); diff --git a/tests/models.ts b/tests/models.ts index 06acc9b..b6754d7 100644 --- a/tests/models.ts +++ b/tests/models.ts @@ -1,13 +1,13 @@ import test from 'ava'; import { ObjectId } from 'mongodb'; -import { Model, Field } from '../src'; +import { Model, Prop } from '../src'; -test('method `defineField` initializes nullified enumerable property', (t) => { +test('method `defineProp` initializes nullified enumerable property', (t) => { const user = new class User extends Model { name: string; constructor() { super(); - this.defineField('name'); + this.defineProp('name'); } }; const descriptor = Object.getOwnPropertyDescriptor(user, 'name'); @@ -25,8 +25,8 @@ test('method `defineType` defines a custom data type', (t) => { constructor() { super(); this.defineType('cool', (v) => `${v}-cool`); - this.defineField('name0', { type: 'cool' }); - this.defineField('name1', { type: ['cool'] }); + this.defineProp('name0', { type: 'cool' }); + this.defineProp('name1', { type: ['cool'] }); } }; user.name0 = 'foo'; @@ -42,9 +42,9 @@ test('method `populate` deeply assignes data', (t) => { description: string; constructor(data = {}) { super(data); - this.defineField('id', { type: 'Integer', populatable: ['output'] }); - this.defineField('title', { type: 'String'}); - this.defineField('description', { type: 'String', populatable: ['input'] }); + this.defineProp('id', { type: 'Integer', populatable: ['output'] }); + this.defineProp('title', { type: 'String'}); + this.defineProp('description', { type: 'String', populatable: ['input'] }); } } class User extends Model { @@ -56,12 +56,12 @@ test('method `populate` deeply assignes data', (t) => { books: Book[]; constructor(data = {}) { super(data); - this.defineField('id', { type: 'Integer', populatable: ['output'] }); - this.defineField('name', { type: 'String'}); - this.defineField('email', { type: 'String', populatable: ['input'] }); - this.defineField('book0', { type: Book, populatable: ['output'] }); - this.defineField('book1', { type: Book}); - this.defineField('books', { type: [Book], populatable: ['input'] }); + this.defineProp('id', { type: 'Integer', populatable: ['output'] }); + this.defineProp('name', { type: 'String'}); + this.defineProp('email', { type: 'String', populatable: ['input'] }); + this.defineProp('book0', { type: Book, populatable: ['output'] }); + this.defineProp('book1', { type: Book}); + this.defineProp('books', { type: [Book], populatable: ['input'] }); this.populate(data); } } @@ -126,7 +126,7 @@ test('property `parent` holds an instance of a parent model', (t) => { title: string; constructor(data) { super(data); - this.defineField('title', { type: 'String' }); + this.defineProp('title', { type: 'String' }); } } class User extends Model { @@ -135,9 +135,9 @@ test('property `parent` holds an instance of a parent model', (t) => { books: Book[]; constructor(data) { super(data); - this.defineField('name', { type: 'String' }); - this.defineField('book', { type: Book }); - this.defineField('books', { type: [Book] }); + this.defineProp('name', { type: 'String' }); + this.defineProp('book', { type: Book }); + this.defineProp('books', { type: [Book] }); this.populate(data); } } @@ -163,14 +163,14 @@ test('property `root` return the first model in a tree of nested models', (t) => title: string; constructor(data) { super(data); - this.defineField('title'); + this.defineProp('title'); } } class User extends Model { book: Book; constructor(data) { super(data); - this.defineField('book', { type: Book }); + this.defineProp('book', { type: Book }); this.populate(data); } } @@ -183,19 +183,19 @@ test('property `root` return the first model in a tree of nested models', (t) => t.is(user.book.root, user); }); -test('method `getField` returns an instance of a field at path', (t) => { +test('method `getProp` returns an instance of a prop at path', (t) => { class Book extends Model { constructor(data) { super(data); - this.defineField('title', { type: 'String' }); + this.defineProp('title', { type: 'String' }); } } class User extends Model { constructor(data) { super(data); - this.defineField('name', { type: 'String' }); - this.defineField('book', { type: Book }); - this.defineField('books', { type: [Book] }); + this.defineProp('name', { type: 'String' }); + this.defineProp('book', { type: Book }); + this.defineProp('books', { type: [Book] }); this.populate(data); } } @@ -211,45 +211,45 @@ test('method `getField` returns an instance of a field at path', (t) => { } ] }); - t.is(user.getField(['name']).value, 'foo'); - t.is(user.getField('name').value, 'foo'); - t.is(user.getField(['book', 'title']).value, 'bar'); - t.is(user.getField('book', 'title').value, 'bar'); - t.is(user.getField(['books', 1, 'title']).value, 'baz'); - t.is(user.getField('books', 1, 'title').value, 'baz'); - t.is(user.getField(['fake']), undefined); - t.is(user.getField(['fake', 10, 'title']), undefined); - t.is(user.getField(), undefined); + t.is(user.getProp(['name']).value, 'foo'); + t.is(user.getProp('name').value, 'foo'); + t.is(user.getProp(['book', 'title']).value, 'bar'); + t.is(user.getProp('book', 'title').value, 'bar'); + t.is(user.getProp(['books', 1, 'title']).value, 'baz'); + t.is(user.getProp('books', 1, 'title').value, 'baz'); + t.is(user.getProp(['fake']), undefined); + t.is(user.getProp(['fake', 10, 'title']), undefined); + t.is(user.getProp(), undefined); }); -test('method `hasField` returns `true` if the field exists', (t) => { +test('method `hasProp` returns `true` if the prop exists', (t) => { class User extends Model { constructor(data = {}) { super(data); - this.defineField('name', { type: 'String' }); + this.defineProp('name', { type: 'String' }); } } const user = new User(); - t.is(user.hasField(['name']), true); - t.is(user.hasField(['book', 'title']), false); + t.is(user.hasProp(['name']), true); + t.is(user.hasProp(['book', 'title']), false); }); test('method `serialize` converts model into a serialized data object', (t) => { class Book extends Model { constructor(data) { super(data); - this.defineField('title', { type: 'String' }); - this.defineField('description', { serializable: ['output'] }); // only for these strategies + this.defineProp('title', { type: 'String' }); + this.defineProp('description', { serializable: ['output'] }); // only for these strategies } } class User extends Model { constructor(data) { super(data); - this.defineField('id', { type: (v) => new Object(v), serializable: [] }); // never - this.defineField('name', { type: 'String', serializable: null }); - this.defineField('description', { serializable: ['input', 'output'] }); // only for these strategies - this.defineField('book', { type: Book, serializable: ['output'] }); - this.defineField('books', { type: [Book] }); + this.defineProp('id', { type: (v) => new Object(v), serializable: [] }); // never + this.defineProp('name', { type: 'String', serializable: null }); + this.defineProp('description', { serializable: ['input', 'output'] }); // only for these strategies + this.defineProp('book', { type: Book, serializable: ['output'] }); + this.defineProp('books', { type: [Book] }); this.populate(data); } } @@ -294,19 +294,19 @@ test('method `serialize` converts model into a serialized data object', (t) => { }); }); -test('method `flatten` returns an array of fields', async (t) => { +test('method `flatten` returns an array of props', async (t) => { class Book extends Model { constructor(data) { super(data); - this.defineField('title', { type: 'String' }); + this.defineProp('title', { type: 'String' }); } } class User extends Model { constructor(data) { super(data); - this.defineField('name', { type: 'String' }); - this.defineField('book', { type: Book }); - this.defineField('books', { type: [Book] }); + this.defineProp('name', { type: 'String' }); + this.defineProp('book', { type: Book }); + this.defineProp('books', { type: [Book] }); this.populate(data); } } @@ -329,23 +329,23 @@ test('method `flatten` returns an array of fields', async (t) => { ['books'], ['books', 1, 'title'] ]); - t.deepEqual(Object.keys(user.flatten()[0]), ['path', 'field']); + t.deepEqual(Object.keys(user.flatten()[0]), ['path', 'prop']); t.deepEqual(user.flatten()[0].path, ['name']); - t.is(user.flatten()[0].field.value, 'foo'); + t.is(user.flatten()[0].prop.value, 'foo'); }); test('method `collect` returns an array of results', (t) => { class Book extends Model { constructor(data) { super(data); - this.defineField('title', { type: 'String' }); + this.defineProp('title', { type: 'String' }); } } class User extends Model { constructor(data) { super(data); - this.defineField('name', { type: 'String' }); - this.defineField('book', { type: Book }); + this.defineProp('name', { type: 'String' }); + this.defineProp('book', { type: Book }); this.populate(data); } } @@ -363,18 +363,18 @@ test('method `collect` returns an array of results', (t) => { ]); }); -test('method `scroll` runs the provided handler on each field', (t) => { +test('method `scroll` runs the provided handler on each prop', (t) => { class Book extends Model { constructor(data) { super(data); - this.defineField('title', { type: 'String' }); + this.defineProp('title', { type: 'String' }); } } class User extends Model { constructor(data) { super(data); - this.defineField('name', { type: 'String' }); - this.defineField('book', { type: Book }); + this.defineProp('name', { type: 'String' }); + this.defineProp('book', { type: Book }); this.populate(data); } } @@ -392,15 +392,15 @@ test('method `filter` converts a model into serialized object with only keys tha class Book extends Model { constructor(data) { super(data); - this.defineField('title', { type: 'String' }); + this.defineProp('title', { type: 'String' }); } } class User extends Model { constructor(data) { super(data); - this.defineField('name', { type: 'String' }); - this.defineField('book', { type: Book }); - this.defineField('books', { type: [Book] }); + this.defineProp('name', { type: 'String' }); + this.defineProp('book', { type: Book }); + this.defineProp('books', { type: [Book] }); this.populate(data); } } @@ -416,7 +416,7 @@ test('method `filter` converts a model into serialized object with only keys tha } ] }); - const result = user.filter(({ path, field }) => field.value !== 'foo'); + const result = user.filter(({ path, prop }) => prop.value !== 'foo'); t.deepEqual(result as any, { book: { title: 'bar', @@ -430,19 +430,19 @@ test('method `filter` converts a model into serialized object with only keys tha }); }); -test('method `reset` sets fields to their default values', (t) => { +test('method `reset` sets props to their default values', (t) => { class Book extends Model { constructor(data) { super(data); - this.defineField('title', { defaultValue: 'foo' }); + this.defineProp('title', { defaultValue: 'foo' }); } } class User extends Model { constructor(data) { super(data); - this.defineField('name', { defaultValue: 'bar' }); - this.defineField('book', { type: Book, defaultValue: {} }); - this.defineField('books', { type: [Book], defaultValue: [null, {}] }); + this.defineProp('name', { defaultValue: 'bar' }); + this.defineProp('book', { type: Book, defaultValue: {} }); + this.defineProp('books', { type: [Book], defaultValue: [null, {}] }); this.populate(data); } } @@ -472,19 +472,19 @@ test('method `reset` sets fields to their default values', (t) => { }); }); -test('method `fake` sets fields to their fake values', (t) => { +test('method `fake` sets props to their fake values', (t) => { class Book extends Model { constructor(data) { super(data); - this.defineField('title', { fakeValue: 'foo' }); + this.defineProp('title', { fakeValue: 'foo' }); } } class User extends Model { constructor(data = {}) { super(); - this.defineField('name', { fakeValue: 'bar' }); - this.defineField('book', { type: Book, defaultValue: {} }); - this.defineField('books', { type: [Book], defaultValue: [null, {}] }); + this.defineProp('name', { fakeValue: 'bar' }); + this.defineProp('book', { type: Book, defaultValue: {} }); + this.defineProp('books', { type: [Book], defaultValue: [null, {}] }); this.populate(data); } } @@ -504,20 +504,20 @@ test('method `fake` sets fields to their fake values', (t) => { }); }); -test('method `clear` sets fields to `null`', (t) => { +test('method `clear` sets props to `null`', (t) => { class Book extends Model { constructor(data) { super(data); - this.defineField('title', { defaultValue: 'foo' }); + this.defineProp('title', { defaultValue: 'foo' }); } } class User extends Model { constructor(data) { super(data); - this.defineField('name', { defaultValue: 'bar' }); - this.defineField('description', { nullValue: 'null' }); - this.defineField('book', { type: Book, defaultValue: {} }); - this.defineField('books', { type: [Book], defaultValue: [null, {}] }); + this.defineProp('name', { defaultValue: 'bar' }); + this.defineProp('description', { nullValue: 'null' }); + this.defineProp('book', { type: Book, defaultValue: {} }); + this.defineProp('books', { type: [Book], defaultValue: [null, {}] }); this.populate(data); } } @@ -546,15 +546,15 @@ test('methods `commit()` and `rollback()` manage committed states', (t) => { class Book extends Model { constructor(data) { super(data); - this.defineField('title'); + this.defineProp('title'); } } class User extends Model { constructor(data) { super(data); - this.defineField('name'); - this.defineField('book', { type: Book }); - this.defineField('books', { type: [Book] }); + this.defineProp('name'); + this.defineProp('book', { type: Book }); + this.defineProp('books', { type: [Book] }); this.populate(data); } } @@ -570,9 +570,9 @@ test('methods `commit()` and `rollback()` manage committed states', (t) => { ] }); user.commit(); - t.is(user.getField('name').initialValue, 'foo'); - t.is(user.getField('book', 'title').initialValue, 'bar'); - t.is(user.getField('books', 0, 'title').initialValue, 'baz'); + t.is(user.getProp('name').initialValue, 'foo'); + t.is(user.getProp('book', 'title').initialValue, 'bar'); + t.is(user.getProp('books', 0, 'title').initialValue, 'baz'); user.populate({ name: 'foo-new', book: { @@ -585,24 +585,24 @@ test('methods `commit()` and `rollback()` manage committed states', (t) => { ], }); user.rollback(); - t.is(user.getField('name').value, 'foo'); - t.is(user.getField('book', 'title').value, 'bar'); - t.is(user.getField('books', 0, 'title').value, 'baz'); + t.is(user.getProp('name').value, 'foo'); + t.is(user.getProp('book', 'title').value, 'bar'); + t.is(user.getProp('books', 0, 'title').value, 'baz'); }); test('method `equals` returns `true` when the passing object looks the same', (t) => { class Book extends Model { constructor(data) { super(data); - this.defineField('title'); + this.defineProp('title'); } } class User extends Model { constructor(data) { super(data); - this.defineField('name'); - this.defineField('book', { type: Book }); - this.defineField('books', { type: [Book] }); + this.defineProp('name'); + this.defineProp('book', { type: Book }); + this.defineProp('books', { type: [Book] }); this.populate(data); } } @@ -621,12 +621,12 @@ test('method `equals` returns `true` when the passing object looks the same', (t t.is(new User(data).equals(new User(data)), true); }); -test('method `isChanged` returns `true` if at least one field has been changed', (t) => { +test('method `isChanged` returns `true` if at least one prop has been changed', (t) => { class Book extends Model { title: string; constructor(data) { super(data); - this.defineField('title'); + this.defineProp('title'); } } class User extends Model { @@ -635,9 +635,9 @@ test('method `isChanged` returns `true` if at least one field has been changed', books: Book[]; constructor(data) { super(data); - this.defineField('name'); - this.defineField('book', { type: Book }); - this.defineField('books', { type: [Book] }); + this.defineProp('name'); + this.defineProp('book', { type: Book }); + this.defineProp('books', { type: [Book] }); this.populate(data); this.commit(); } @@ -669,18 +669,18 @@ test('method `isChanged` returns `true` if at least one field has been changed', t.is(user3.isChanged(), true); }); -test('method `isNested` returns `true` if nested fields exist', (t) => { +test('method `isNested` returns `true` if nested props exist', (t) => { class Book extends Model { constructor(data) { super(data); - this.defineField('title'); + this.defineProp('title'); } } class User extends Model { constructor(data = {}) { super(); - this.defineField('name'); - this.defineField('books', { type: [Book] }); + this.defineProp('name'); + this.defineProp('books', { type: [Book] }); this.populate(data); } } @@ -688,19 +688,19 @@ test('method `isNested` returns `true` if nested fields exist', (t) => { t.is(user.isNested(), true); }); -test('method `collectErrors` returns an array of field errors', (t) => { +test('method `collectErrors` returns an array of prop errors', (t) => { class Book extends Model { constructor(data) { super(data); - this.defineField('title'); + this.defineProp('title'); } } class User extends Model { constructor(data) { super(data); - this.defineField('name'); - this.defineField('book', { type: Book }); - this.defineField('books', { type: [Book] }); + this.defineProp('name'); + this.defineProp('book', { type: Book }); + this.defineProp('books', { type: [Book] }); this.populate(data); } } @@ -708,9 +708,9 @@ test('method `collectErrors` returns an array of field errors', (t) => { book: {}, books: [{}] }); - user.getField('name').errors = [{ message: 'foo' }]; - user.getField('book', 'title').errors = [{ message: 'bar' }]; - user.getField('books', 0, 'title').errors = [{ message: 'baz' }]; + user.getProp('name').errors = [{ message: 'foo' }]; + user.getProp('book', 'title').errors = [{ message: 'bar' }]; + user.getProp('books', 0, 'title').errors = [{ message: 'baz' }]; t.deepEqual(user.collectErrors(), [ { path: ['name'], errors: [{ message: 'foo' }] }, { path: ['book', 'title'], errors: [{ message: 'bar' }] }, @@ -718,19 +718,19 @@ test('method `collectErrors` returns an array of field errors', (t) => { ]); }); -test('method `applyErrors` sets fields errors', (t) => { +test('method `applyErrors` sets props errors', (t) => { class Book extends Model { constructor(data) { super(data); - this.defineField('title'); + this.defineProp('title'); } } class User extends Model { constructor(data) { super(data); - this.defineField('name'); - this.defineField('book', { type: Book }); - this.defineField('books', { type: [Book] }); + this.defineProp('name'); + this.defineProp('book', { type: Book }); + this.defineProp('books', { type: [Book] }); this.populate(data); } } @@ -744,24 +744,24 @@ test('method `applyErrors` sets fields errors', (t) => { { path: ['book', 'title'], errors: [{ message: 'bar' }] }, { path: ['books', 1, 'title'], errors: [{ message: 'baz' }] }, ]); - t.deepEqual(user.getField('name').errors, [{ message: 'foo' }]); - t.deepEqual(user.getField('book', 'title').errors, [{ message: 'bar' }]); - t.deepEqual(user.getField('books', 1, 'title').errors, [{ message: 'baz' }]); + t.deepEqual(user.getProp('name').errors, [{ message: 'foo' }]); + t.deepEqual(user.getProp('book', 'title').errors, [{ message: 'bar' }]); + t.deepEqual(user.getProp('books', 1, 'title').errors, [{ message: 'baz' }]); }); test('methods `isValid` and `hasErrors` tell if errors exist', async (t) => { class Book extends Model { constructor(data) { super(data); - this.defineField('title'); + this.defineProp('title'); } } class User extends Model { constructor(data?) { super(data); - this.defineField('name'); - this.defineField('book', { type: Book }); - this.defineField('books', { type: [Book] }); + this.defineProp('name'); + this.defineProp('book', { type: Book }); + this.defineProp('books', { type: [Book] }); this.populate(data); } } @@ -781,7 +781,7 @@ test('methods `isValid` and `hasErrors` tell if errors exist', async (t) => { t.is(user0.isValid(), false); }); -test('method `validate` validates fields and throws an error', async (t) => { +test('method `validate` validates props and throws an error', async (t) => { const validate = [ { validator: 'presence', message: 'foo' }, { validator: 'presence', code: 999 }, @@ -789,17 +789,17 @@ test('method `validate` validates fields and throws an error', async (t) => { class Book extends Model { constructor(data) { super(data); - this.defineField('title', { validate }); + this.defineProp('title', { validate }); } } class User extends Model { constructor(data) { super(data); - this.defineField('name', { validate }); - this.defineField('book0', { type: Book, validate }); - this.defineField('books0', { type: [Book], validate }); - this.defineField('book1', { type: Book, validate }); - this.defineField('books1', { type: [Book], validate }); + this.defineProp('name', { validate }); + this.defineProp('book0', { type: Book, validate }); + this.defineProp('books0', { type: [Book], validate }); + this.defineProp('book1', { type: Book, validate }); + this.defineProp('books1', { type: [Book], validate }); this.populate(data); } } @@ -822,7 +822,7 @@ test('method `validate` validates fields and throws an error', async (t) => { ]); }); -test('method `defineValidator` defines a custom field validator', async (t) => { +test('method `defineValidator` defines a custom prop validator', async (t) => { const validator = function (v) { return this.value === 'cool' && v === 'cool'; }; @@ -834,15 +834,15 @@ test('method `defineValidator` defines a custom field validator', async (t) => { constructor(data) { super(data); this.defineValidator('coolness', validator); - this.defineField('title', { validate }); + this.defineProp('title', { validate }); } } class User extends Model { constructor(data) { super(data); this.defineValidator('coolness', validator); - this.defineField('name', { validate }); - this.defineField('book', { type: Book, validate }); + this.defineProp('name', { validate }); + this.defineProp('book', { type: Book, validate }); this.populate(data); } } @@ -858,7 +858,7 @@ test('method `defineValidator` defines a custom field validator', async (t) => { ]); }); -test('method `failFast` configures validator to stop validating field on the first error', async (t) => { +test('method `failFast` configures validator to stop validating prop on the first error', async (t) => { const validate = [ { validator: 'presence', message: 'foo' }, { validator: 'presence', message: 'foo' }, @@ -867,15 +867,15 @@ test('method `failFast` configures validator to stop validating field on the fir constructor(data) { super(data); this.failFast(); - this.defineField('title', { validate }); + this.defineProp('title', { validate }); } } class User extends Model { constructor(data) { super(data); this.failFast(); - this.defineField('name', { validate }); - this.defineField('book', { type: Book }); + this.defineProp('name', { validate }); + this.defineProp('book', { type: Book }); this.populate(data); } } @@ -884,23 +884,23 @@ test('method `failFast` configures validator to stop validating field on the fir }); const errors = [{ validator: 'presence', message: 'foo', code: 422 }]; await user.validate({ quiet: true }); - t.is(user.getField('name').errors.length, 1); - t.is(user.getField('book', 'title').errors.length, 1); + t.is(user.getProp('name').errors.length, 1); + t.is(user.getProp('book', 'title').errors.length, 1); }); -test('method `invalidate` clears fields errors', async (t) => { +test('method `invalidate` clears props errors', async (t) => { class Book extends Model { constructor(data) { super(data); - this.defineField('title'); + this.defineProp('title'); } } class User extends Model { constructor(data) { super(data); - this.defineField('name'); - this.defineField('book', { type: Book }); - this.defineField('books', { type: [Book] }); + this.defineProp('name'); + this.defineProp('book', { type: Book }); + this.defineProp('books', { type: [Book] }); this.populate(data); } } @@ -914,9 +914,9 @@ test('method `invalidate` clears fields errors', async (t) => { { path: ['books', 1, 'title'], errors: [{ message: 'baz'}] }, ]); user.invalidate(); - t.deepEqual(user.getField('name').errors, []); - t.deepEqual(user.getField('book', 'title').errors, []); - t.deepEqual(user.getField('books', 1, 'title').errors, []); + t.deepEqual(user.getProp('name').errors, []); + t.deepEqual(user.getProp('book', 'title').errors, []); + t.deepEqual(user.getProp('books', 1, 'title').errors, []); }); test('method `clone` returns an exact copy of the original', (t) => { @@ -924,7 +924,7 @@ test('method `clone` returns an exact copy of the original', (t) => { title: string; constructor(data?) { super(data); - this.defineField('title'); + this.defineProp('title'); this.commit(); } } @@ -934,9 +934,9 @@ test('method `clone` returns an exact copy of the original', (t) => { books: Book[]; constructor(data?) { super(data); - this.defineField('name'); - this.defineField('book', { type: Book }); - this.defineField('books', { type: [Book] }); + this.defineProp('name'); + this.defineProp('book', { type: Book }); + this.defineProp('books', { type: [Book] }); this.populate(data); this.commit(); } @@ -965,7 +965,7 @@ test('method `clone` returns an exact copy of the original', (t) => { t.is(clone1.book.title, 'foo'); }); -test('method `handle` handles field-related errors', async (t) => { +test('method `handle` handles prop-related errors', async (t) => { const handle = [{ handler: 'block', message: '%{foo}', @@ -975,25 +975,25 @@ test('method `handle` handles field-related errors', async (t) => { class Book extends Model { constructor(data) { super(data); - this.defineField('title', { handle }); + this.defineProp('title', { handle }); } } class Country extends Model { constructor(data) { super(data); - this.defineField('code'); // this field is nested and without handler + this.defineProp('code'); // this prop is nested and without handler this.populate(data); } } class User extends Model { constructor(data) { super(data); - this.defineField('name', { handle }); - this.defineField('book0', { type: Book, handle }); - this.defineField('books0', { type: [Book], handle }); - this.defineField('book1', { type: Book }); - this.defineField('books1', { type: [Book] }); - this.defineField('country', { type: [Country] }); + this.defineProp('name', { handle }); + this.defineProp('book0', { type: Book, handle }); + this.defineProp('books0', { type: [Book], handle }); + this.defineProp('book1', { type: Book }); + this.defineProp('books1', { type: [Book] }); + this.defineProp('country', { type: [Country] }); this.populate(data); } } @@ -1018,7 +1018,7 @@ test('method `handle` handles field-related errors', async (t) => { ]); }); -test('method `defineHandler` defines a custom field handler', async (t) => { +test('method `defineHandler` defines a custom prop handler', async (t) => { const handler = function (e) { return e.message === 'cool'; }; @@ -1031,16 +1031,16 @@ test('method `defineHandler` defines a custom field handler', async (t) => { constructor(data) { super(data); this.defineHandler('coolness', handler); - this.defineField('title', { handle }); + this.defineProp('title', { handle }); } } class User extends Model { constructor(data) { super(data); this.defineHandler('coolness', handler); - this.defineField('name', { handle }); - this.defineField('book', { type: Book }); - this.defineField('books', { type: [Book] }); + this.defineProp('name', { handle }); + this.defineProp('book', { type: Book }); + this.defineProp('books', { type: [Book] }); this.populate(data); } } @@ -1058,19 +1058,19 @@ test('method `defineHandler` defines a custom field handler', async (t) => { ]); }); -test('property `enumerable` handles field visibility', (t) => { +test('property `enumerable` handles prop visibility', (t) => { class User0 extends Model { name: string; constructor(data) { super(data); - this.defineField('name', { enumerable: true }); + this.defineProp('name', { enumerable: true }); } } class User1 extends Model { name: string; constructor(data) { super(data); - this.defineField('name', { enumerable: false }); + this.defineProp('name', { enumerable: false }); } } const user0 = new User0({}); diff --git a/tests/performance.ts b/tests/performance.ts index 4eaad97..a563f77 100644 --- a/tests/performance.ts +++ b/tests/performance.ts @@ -24,15 +24,15 @@ export class Post extends Model { constructor(data?: any) { super(data); this.defineObjectIdType(); - this.defineIdFields(); - this.defineDeletedAtField(); - this.defineCourseIdField(); - this.defineUserIdField(); - this.definePostIdField(); - this.defineMessageField(); - this.defineCreatedAtField(); - this.defineAuthorField(); - this.defineAnswersField(); + this.defineIdProps(); + this.defineDeletedAtProp(); + this.defineCourseIdProp(); + this.defineUserIdProp(); + this.definePostIdProp(); + this.defineMessageProp(); + this.defineCreatedAtProp(); + this.defineAuthorProp(); + this.defineAnswersProp(); this.populate(data); } @@ -46,13 +46,13 @@ export class Post extends Model { } /** - * Defines the `_id` and `id` fields. + * Defines the `_id` and `id` props. */ - protected defineIdFields() { - this.defineField('_id', { + protected defineIdProps() { + this.defineProp('_id', { type: 'ObjectId', }); - this.defineField('id', { + this.defineProp('id', { type : 'ObjectId', serializable: ['out-admin', 'out-profile'], get : () => this._id, @@ -61,20 +61,20 @@ export class Post extends Model { } /** - * Defines the `_deletedAt` field. + * Defines the `_deletedAt` prop. */ - protected defineDeletedAtField() { - this.defineField('_deletedAt', { + protected defineDeletedAtProp() { + this.defineProp('_deletedAt', { type : 'Date', serializable: ['in-db'], }); } /** - * Defines the `courseId` field. + * Defines the `courseId` prop. */ - protected defineCourseIdField() { - this.defineField('courseId', { + protected defineCourseIdProp() { + this.defineProp('courseId', { type : 'ObjectId', serializable: ['in-db', 'out-admin', 'out-profile'], validate : [ @@ -88,10 +88,10 @@ export class Post extends Model { } /** - * Defines the `userId` field. + * Defines the `userId` prop. */ - protected defineUserIdField() { - this.defineField('userId', { + protected defineUserIdProp() { + this.defineProp('userId', { type : 'ObjectId', serializable: ['in-db', 'out-admin', 'out-profile'], validate : [ @@ -105,10 +105,10 @@ export class Post extends Model { } /** - * Defines the `postId` field. + * Defines the `postId` prop. */ - protected definePostIdField() { - this.defineField('postId', { + protected definePostIdProp() { + this.defineProp('postId', { type : 'ObjectId', populatable : ['in-admin'], serializable: ['in-db', 'out-admin', 'out-profile'], @@ -123,10 +123,10 @@ export class Post extends Model { } /** - * Defines the `message` field. + * Defines the `message` prop. */ - protected defineMessageField() { - this.defineField('message', { + protected defineMessageProp() { + this.defineProp('message', { type : 'String', populatable : ['in-admin', 'in-profile'], serializable: ['in-db', 'out-admin', 'out-profile'], @@ -140,10 +140,10 @@ export class Post extends Model { } /** - * Defines the `createdAt` field. + * Defines the `createdAt` prop. */ - protected defineCreatedAtField() { - this.defineField('createdAt', { + protected defineCreatedAtProp() { + this.defineProp('createdAt', { type : 'Date', serializable: ['in-db', 'out-admin', 'out-profile'], defaultValue: () => new Date(), @@ -151,20 +151,20 @@ export class Post extends Model { } /** - * Defines the `author` field. + * Defines the `author` prop. */ - protected defineAuthorField() { - this.defineField('author', { + protected defineAuthorProp() { + this.defineProp('author', { type : Author, serializable: ['out-admin', 'out-profile'], }); } /** - * Defines the `answers` field. + * Defines the `answers` prop. */ - protected defineAnswersField() { - this.defineField('answers', { + protected defineAnswersProp() { + this.defineProp('answers', { type : [Post], serializable: ['out-admin', 'out-profile'], defaultValue: [] @@ -187,37 +187,37 @@ export class Author extends Model { */ constructor(data?: any) { super(data); - this.defineFirstNameFields(); - this.defineLastNameField(); - this.defineRoleField(); + this.defineFirstNameProps(); + this.defineLastNameProp(); + this.defineRoleProp(); this.populate(data); } /** - * Defines the `firstName` field. + * Defines the `firstName` prop. */ - protected defineFirstNameFields() { - this.defineField('firstName', { + protected defineFirstNameProps() { + this.defineProp('firstName', { type : 'String', serializable: ['out-admin', 'out-profile'], }); } /** - * Defines the `lastName` field. + * Defines the `lastName` prop. */ - protected defineLastNameField() { - this.defineField('lastName', { + protected defineLastNameProp() { + this.defineProp('lastName', { type : 'String', serializable: ['out-admin', 'out-profile'], }); } /** - * Defines the `role` field. + * Defines the `role` prop. */ - protected defineRoleField() { - this.defineField('role', { + protected defineRoleProp() { + this.defineProp('role', { type : 'Integer', serializable: ['out-admin', 'out-profile'], defaultValue: false, diff --git a/tests/fields.ts b/tests/props.ts similarity index 67% rename from tests/fields.ts rename to tests/props.ts index 7fce4bc..7afa8f3 100644 --- a/tests/fields.ts +++ b/tests/props.ts @@ -1,30 +1,30 @@ import test from 'ava'; -import { Field, Model } from '../src'; +import { Prop, Model } from '../src'; import { Validator } from 'validatable'; test('nullifies a value by default', (t) => { - const f = new Field(); + const f = new Prop(); t.is(f.value, null); }); test('provides getter and setter for the current value', (t) => { - const f = new Field(); + const f = new Prop(); f.value = 'foo'; t.is(f.value, 'foo'); }); test('supports custom getter and setter for the current value', (t) => { - const f0 = new Field({get (v) { return `${v}-${this.constructor.name}`; }}); - const f1 = new Field({set (v) { return `${v}-${this.constructor.name}`; }}); + const f0 = new Prop({get (v) { return `${v}-${this.constructor.name}`; }}); + const f1 = new Prop({set (v) { return `${v}-${this.constructor.name}`; }}); f0.value = 'foo'; f1.value = 'foo'; - t.is(f0.value, 'foo-Field'); - t.is(f1.value, 'foo-Field'); + t.is(f0.value, 'foo-Prop'); + t.is(f1.value, 'foo-Prop'); }); test('can automatically cast a value to a specific data type', (t) => { - const f0 = new Field({ type: ['String'] }); - const f1 = new Field({ type: (v) => `${v}-foo` }); // custom type + const f0 = new Prop({ type: ['String'] }); + const f1 = new Prop({ type: (v) => `${v}-foo` }); // custom type f0.value = 100; f1.value = 100; t.deepEqual(f0.value, ['100']); @@ -32,44 +32,44 @@ test('can automatically cast a value to a specific data type', (t) => { }); test('can have a default value', (t) => { - const f0 = new Field({ defaultValue: 'foo' }); - const f1 = new Field({ defaultValue () { return this.constructor.name; } }); - const f2 = new Field({ defaultValue () { return Math.random(); } }); + const f0 = new Prop({ defaultValue: 'foo' }); + const f1 = new Prop({ defaultValue () { return this.constructor.name; } }); + const f2 = new Prop({ defaultValue () { return Math.random(); } }); t.is(f0.value, 'foo'); - t.is(f1.value, 'Field'); + t.is(f1.value, 'Prop'); t.is(f0.defaultValue, 'foo'); - t.is(f1.defaultValue, 'Field'); + t.is(f1.defaultValue, 'Prop'); t.is(f2.defaultValue !== f2.defaultValue, true); // dynamic values }); test('can have a fake value', (t) => { - const f0 = new Field({ fakeValue: 'foo' }); - const f1 = new Field({ fakeValue () { return this.constructor.name; } }); - const f2 = new Field({ fakeValue () { return Math.random(); } }); - const f3 = new Field({ type: 'Integer', fakeValue () { return 0; } }); + const f0 = new Prop({ fakeValue: 'foo' }); + const f1 = new Prop({ fakeValue () { return this.constructor.name; } }); + const f2 = new Prop({ fakeValue () { return Math.random(); } }); + const f3 = new Prop({ type: 'Integer', fakeValue () { return 0; } }); t.is(f0.fakeValue, 'foo'); - t.is(f1.fakeValue, 'Field'); + t.is(f1.fakeValue, 'Prop'); t.is(f2.fakeValue !== f2.fakeValue, true); // dynamic values t.is(f3.fakeValue, 0); }); test('can have a null value', (t) => { - const f0 = new Field({ nullValue: 'foo' }); - const f1 = new Field({ nullValue () { return this.constructor.name; } }); - const f2 = new Field({ nullValue () { return Math.random(); } }); - const f3 = new Field({ nullValue () { return 0; } }); + const f0 = new Prop({ nullValue: 'foo' }); + const f1 = new Prop({ nullValue () { return this.constructor.name; } }); + const f2 = new Prop({ nullValue () { return Math.random(); } }); + const f3 = new Prop({ nullValue () { return 0; } }); t.is(f0.value, 'foo'); // `null` is replaced - t.is(f1.value, 'Field'); // `null` is replaced + t.is(f1.value, 'Prop'); // `null` is replaced t.is(f0.nullValue, 'foo'); - t.is(f1.nullValue, 'Field'); + t.is(f1.nullValue, 'Prop'); t.is(f2.nullValue !== f2.nullValue, true); // dynamic values t.is(f3.nullValue, 0); }); test('method `reset()` sets value to the default value', (t) => { - const f0 = new Field(); - const f1 = new Field({ defaultValue: 'foo' }); - const f2 = new Field({ defaultValue () { return Math.random(); } }); + const f0 = new Prop(); + const f1 = new Prop({ defaultValue: 'foo' }); + const f2 = new Prop({ defaultValue () { return Math.random(); } }); t.is(f0.value, null); f1.value = 'bar'; f1.reset(); @@ -79,10 +79,10 @@ test('method `reset()` sets value to the default value', (t) => { }); test('method `fake()` sets value to the fake value', (t) => { - const f0 = new Field(); - const f1 = new Field({ fakeValue: 'foo' }); - const f2 = new Field({ fakeValue () { return Math.random(); } }); - const f3 = new Field({ fakeValue () { return 0; } }); + const f0 = new Prop(); + const f1 = new Prop({ fakeValue: 'foo' }); + const f2 = new Prop({ fakeValue () { return Math.random(); } }); + const f3 = new Prop({ fakeValue () { return 0; } }); f0.value = 'foo'; f0.fake(); t.is(f0.value, 'foo'); @@ -98,8 +98,8 @@ test('method `fake()` sets value to the fake value', (t) => { }); test('method `clear()` sets value to `null`', (t) => { - const f0 = new Field(); - const f1 = new Field({ nullValue: 'null' }); + const f0 = new Prop(); + const f1 = new Prop({ nullValue: 'null' }); f0.value = 'foo'; f0.errors = [ { validator: 'foo', message: 'bar', code: 422 } @@ -113,7 +113,7 @@ test('method `clear()` sets value to `null`', (t) => { }); test('methods `commit()` and `rollback()` manage committed value state', (t) => { - const f = new Field(); + const f = new Prop(); f.value = 'foo'; t.is(f.initialValue, null); f.commit(); @@ -124,8 +124,8 @@ test('methods `commit()` and `rollback()` manage committed value state', (t) => }); test('method `equals()` returns `true` when the provided `data` equals to the current value', (t) => { - const f0 = new Field(); - const f1 = new Field(); + const f0 = new Prop(); + const f1 = new Prop(); f0.value = 'foo'; f1.value = 'foo'; t.is(f0.equals(f1), true); @@ -133,9 +133,9 @@ test('method `equals()` returns `true` when the provided `data` equals to the cu }); test('method `isChanged()` returns `true` if the value have been changed', (t) => { - const f0 = new Field(); - const f1 = new Field({ type: 'String', defaultValue: 'foo' }); - const f2 = new Field({ type: ['String'], defaultValue: ['foo'] }); + const f0 = new Prop(); + const f1 = new Prop({ type: 'String', defaultValue: 'foo' }); + const f2 = new Prop({ type: ['String'], defaultValue: ['foo'] }); t.is(f0.isChanged(), false); f0.value = 'foo'; t.is(f0.isChanged(), true); @@ -143,17 +143,17 @@ test('method `isChanged()` returns `true` if the value have been changed', (t) = t.is(f2.isChanged(), false); }); -test('method `isNested()` returns `true` if the field type is un instance of a Model', (t) => { - const f0 = new Field(); - const f1 = new Field({ type: [Model] }); - const f2 = new Field({ type: [class User extends Model {}] }); +test('method `isNested()` returns `true` if the prop type is un instance of a Model', (t) => { + const f0 = new Prop(); + const f1 = new Prop({ type: [Model] }); + const f2 = new Prop({ type: [class User extends Model {}] }); t.is(f0.isNested(), false); t.is(f1.isNested(), true); t.is(f2.isNested(), true); }); test('method `validate()` validates the value and populates the `errors` property', async (t) => { - const f = new Field({ + const f = new Prop({ validate: [ { validator: 'presence', message: 'foo' }, { validator: 'coolness', message: 'is not cool' }, // custom with message @@ -172,28 +172,28 @@ test('method `validate()` validates the value and populates the `errors` propert }); test('method `invalidate()` clears the `errors` property', (t) => { - const f = new Field(); + const f = new Prop(); f.errors.push({ message: 'foo' }); f.invalidate(); t.deepEqual(f.errors, []); }); test('method `hasErrors()` returns `true` when errors exist', (t) => { - const f = new Field(); + const f = new Prop(); t.is(f.hasErrors(), false); f.errors.push({ message: 'foo' }); t.is(f.hasErrors(), true); }); test('method `isValid()` returns `true` when no errors exist', (t) => { - const f = new Field(); + const f = new Prop(); t.is(f.isValid(), true); f.errors.push({ message: 'foo' }); t.is(f.isValid(), false); }); test('has enumeratable properties', (t) => { - const f = new Field(); + const f = new Prop(); t.deepEqual(Object.keys(f), [ 'errors', 'populatable', @@ -210,7 +210,7 @@ test('has enumeratable properties', (t) => { }); test('method `handle()` handles an error and populates the `errors` property', async (t) => { - const f = new Field({ + const f = new Prop({ handle: [ { handler: 'block', block () { return true; }, message: 'foo' }, { handler: 'coolness', message: 'cool' }, // custom with message From f09746e1ec1b90cf4e0cdbfd93bfa83b5bd914b4 Mon Sep 17 00:00:00 2001 From: Kristijan Sedlak Date: Mon, 17 Sep 2018 11:48:26 +0200 Subject: [PATCH 216/219] Complete refactoring (incomplete) --- example/index.ts | 83 - package-lock.json | 5101 +++++++++++++-------------------------- package.json | 17 +- src/handler.ts | 74 + src/index.ts | 3 + src/models.ts | 493 ++-- src/parsing.ts | 47 + src/props.ts | 530 ++-- src/utils.ts | 313 ++- src/validator.ts | 74 + tests/handler.test.ts | 83 + tests/index.test.ts | 14 + tests/index.ts | 7 - tests/models.test.ts | 1183 +++++++++ tests/models.ts | 1080 --------- tests/parsing.test.ts | 47 + tests/performance.ts | 309 --- tests/props.test.ts | 239 ++ tests/props.ts | 230 -- tests/utils.test.ts | 258 ++ tests/validator.test.ts | 82 + tsconfig.json | 4 +- 22 files changed, 4467 insertions(+), 5804 deletions(-) delete mode 100644 example/index.ts create mode 100644 src/handler.ts create mode 100644 src/parsing.ts create mode 100644 src/validator.ts create mode 100644 tests/handler.test.ts create mode 100644 tests/index.test.ts delete mode 100644 tests/index.ts create mode 100644 tests/models.test.ts delete mode 100644 tests/models.ts create mode 100644 tests/parsing.test.ts delete mode 100644 tests/performance.ts create mode 100644 tests/props.test.ts delete mode 100644 tests/props.ts create mode 100644 tests/utils.test.ts create mode 100644 tests/validator.test.ts diff --git a/example/index.ts b/example/index.ts deleted file mode 100644 index dccfcf1..0000000 --- a/example/index.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { Model } from '../src'; - -/* -* Book model -*/ - -class Book extends Model { - public title: string; - - public constructor (data = {}) { - super(data); - - this.defineProp('title', { - type: 'String', - validate: [ - { - validator: 'presence', - message: 'must be present', - }, - ], - }); - - this.populate(data); - this.commit(); - } -} - -/* -* User model -*/ - -class User extends Model { - public name: string; - public book: Book; - public books: [Book]; - - public constructor (data = {}) { - super(data); - - this.defineProp('name', { - type: 'String', - validate: [ - { - validator: 'presence', - message: 'must be present', - }, - ], - }); - this.defineProp('book', { - type: Book, - validate: [ - { - validator: 'presence', - message: 'must be present', - } - ], - }); - this.defineProp('books', { - type: [Book], - nullValue: [], - }); - - this.populate(data); - this.commit(); - } -} - -/* -* Usage -*/ - -const user = new User({ - name: 'John Smith', - book: { - title: 'True Detective', - }, - books: null, -}); - -user.validate({quiet: true}).then(() => { - const data = user.serialize(); - process.stdout.write(JSON.stringify(data, null, 2) + '\n'); -}); diff --git a/package-lock.json b/package-lock.json index b46ce3c..44832dd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,148 +4,70 @@ "lockfileVersion": 1, "requires": true, "dependencies": { - "@ava/babel-plugin-throws-helper": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@ava/babel-plugin-throws-helper/-/babel-plugin-throws-helper-2.0.0.tgz", - "integrity": "sha1-L8H+PCEacQcaTsp7j3r1hCzRrnw=", - "dev": true - }, - "@ava/babel-preset-stage-4": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@ava/babel-preset-stage-4/-/babel-preset-stage-4-1.1.0.tgz", - "integrity": "sha512-oWqTnIGXW3k72UFidXzW0ONlO7hnO9x02S/QReJ7NBGeiBH9cUHY9+EfV6C8PXC6YJH++WrliEq03wMSJGNZFg==", - "dev": true, - "requires": { - "babel-plugin-check-es2015-constants": "^6.8.0", - "babel-plugin-syntax-trailing-function-commas": "^6.20.0", - "babel-plugin-transform-async-to-generator": "^6.16.0", - "babel-plugin-transform-es2015-destructuring": "^6.19.0", - "babel-plugin-transform-es2015-function-name": "^6.9.0", - "babel-plugin-transform-es2015-modules-commonjs": "^6.18.0", - "babel-plugin-transform-es2015-parameters": "^6.21.0", - "babel-plugin-transform-es2015-spread": "^6.8.0", - "babel-plugin-transform-es2015-sticky-regex": "^6.8.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.11.0", - "babel-plugin-transform-exponentiation-operator": "^6.8.0", - "package-hash": "^1.2.0" - }, - "dependencies": { - "md5-hex": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", - "dev": true, - "requires": { - "md5-o-matic": "^0.1.1" - } - }, - "package-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-1.2.0.tgz", - "integrity": "sha1-AD5WzVe3NqbtYRTMK4FUJnJ3DkQ=", - "dev": true, - "requires": { - "md5-hex": "^1.3.0" - } - } - } - }, - "@ava/babel-preset-transform-test-files": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@ava/babel-preset-transform-test-files/-/babel-preset-transform-test-files-3.0.0.tgz", - "integrity": "sha1-ze0RlqjY2TgaUJJAq5LpGl7Aafc=", + "@hayspec/cli": { + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/@hayspec/cli/-/cli-0.4.21.tgz", + "integrity": "sha512-EGlJVk7ySkWBy8PC1J3cVzp1GKcHiW7CqfrXn1Ogw/dMLxO+4ipZAXizBAzyd7j5UDFRD12GsBu5IexIaDoWBA==", "dev": true, "requires": { - "@ava/babel-plugin-throws-helper": "^2.0.0", - "babel-plugin-espower": "^2.3.2" + "@hayspec/init": "^0.4.21", + "@hayspec/reporter": "^0.4.21", + "@hayspec/runner": "^0.4.21", + "@hayspec/spec": "^0.4.21", + "inquirer": "^6.0.0", + "yargs": "^11.0.0" } }, - "@ava/write-file-atomic": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ava/write-file-atomic/-/write-file-atomic-2.2.0.tgz", - "integrity": "sha512-BTNB3nGbEfJT+69wuqXFr/bQH7Vr7ihx2xGOMNqPgDGhwspoZhiWumDDZNjBy7AScmqS5CELIOGtPVXESyrnDA==", + "@hayspec/init": { + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/@hayspec/init/-/init-0.4.21.tgz", + "integrity": "sha512-oVF6m7LrSIMWcNT0sJZ5WyuJe6mKqaLZDIduELcfX6+ZWLBFViWw19Oa+JjJOT5djUp8U33bUKVl918VPC42KA==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" + "fs-extra": "^6.0.1" } }, - "@concordance/react": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@concordance/react/-/react-1.0.0.tgz", - "integrity": "sha512-htrsRaQX8Iixlsek8zQU7tE8wcsTQJ5UhZkSPEA8slCDAisKpC/2VgU/ucPn32M5/LjGGXRaUEKvEw1Wiuu4zQ==", + "@hayspec/reporter": { + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/@hayspec/reporter/-/reporter-0.4.21.tgz", + "integrity": "sha512-fpFk9buEkuAEL0cUIbf0UwqKCkK4/D/+9Z7TqGCIVlAwyAmQu1euoh+bsvER5xpUdjiCXqKtH45ywXda9Xsn3Q==", "dev": true, "requires": { - "arrify": "^1.0.1" + "@hayspec/spec": "^0.4.21", + "chalk": "^2.4.1" } }, - "@ladjs/time-require": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@ladjs/time-require/-/time-require-0.1.4.tgz", - "integrity": "sha512-weIbJqTMfQ4r1YX85u54DKfjLZs2jwn1XZ6tIOP/pFgMwhIN5BAtaCp/1wn9DzyLsDR9tW0R2NIePcVJ45ivQQ==", + "@hayspec/runner": { + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/@hayspec/runner/-/runner-0.4.21.tgz", + "integrity": "sha512-5dhRbxu7vpMZpwsOvuHkSAiqOHc/ir1STdIrsBj6/4/2ZkPYWdDQ/QXWmN8+L+ac8TCVNY3NTtr3lGL2Kf7MZQ==", "dev": true, "requires": { - "chalk": "^0.4.0", - "date-time": "^0.1.1", - "pretty-ms": "^0.2.1", - "text-table": "^0.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", - "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", - "dev": true - }, - "chalk": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", - "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", - "dev": true, - "requires": { - "ansi-styles": "~1.0.0", - "has-color": "~0.1.0", - "strip-ansi": "~0.1.0" - } - }, - "pretty-ms": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-0.2.2.tgz", - "integrity": "sha1-2oeaaC/zOjcBEEbxPWJ/Z8c7hPY=", - "dev": true, - "requires": { - "parse-ms": "^0.1.0" - } - }, - "strip-ansi": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", - "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", - "dev": true - } + "@hayspec/spec": "^0.4.21", + "fast-glob": "^2.2.2" } }, - "@types/lodash": { - "version": "4.14.116", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.116.tgz", - "integrity": "sha512-lRnAtKnxMXcYYXqOiotTmJd74uawNWuPnsnPrrO7HiFuE3npE2iQhfABatbYDyxTNqZNuXzcKGhw37R7RjBFLg==" + "@hayspec/spec": { + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/@hayspec/spec/-/spec-0.4.21.tgz", + "integrity": "sha512-kr1gGZOB0GVopVWxojnrhP02PgiXTymLuhkRIRXXWKI/gMlLg+hhw4rQNYK91p2k82Rapd1/eYA+4xKfmnjYmQ==", + "dev": true }, - "@types/lodash.isequal": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/@types/lodash.isequal/-/lodash.isequal-4.5.3.tgz", - "integrity": "sha512-tpTUmHksO2H9RF98Y2w7v06ZeEKAxHPo2ysL0bV5qv5UBweiZl33NFu5QYmYOSxSnHMqBt/vsVsBVeQAcJiokg==", + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, "requires": { - "@types/lodash": "*" + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" } }, - "@types/lodash.merge": { - "version": "4.6.4", - "resolved": "https://registry.npmjs.org/@types/lodash.merge/-/lodash.merge-4.6.4.tgz", - "integrity": "sha512-usLWpRAicaNbx0VfNDREEgGWvp88inclJLXLJ3NpT83eUE4O05LJdYNRTofHq6pb/NiMZjzNVJHdgPvPzMfu6g==", - "requires": { - "@types/lodash": "*" - } + "@nodelib/fs.stat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.2.tgz", + "integrity": "sha512-yprFYuno9FtNsSHVlSWd+nRlmGoAbqbeCwOryP6sC/zoCjhpArcRMYp19EvpSUSizJAlsXEwJv+wcWS9XaXdMw==", + "dev": true }, "@types/node": { "version": "10.9.2", @@ -153,15 +75,6 @@ "integrity": "sha512-pwZnkVyCGJ3LsQ0/3flQK5lCFao4esIzwUVzzk5NvL9vnkEyDhNf4fhHzUMHvyr56gNZywWTS2MR0euabMSz4A==", "dev": true }, - "ansi-align": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", - "dev": true, - "requires": { - "string-width": "^2.0.0" - } - }, "ansi-escapes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", @@ -183,16 +96,6 @@ "color-convert": "^1.9.0" } }, - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "dev": true, - "requires": { - "micromatch": "^2.1.5", - "normalize-path": "^2.0.0" - } - }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -202,58 +105,16 @@ "sprintf-js": "~1.0.2" } }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "arr-exclude": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/arr-exclude/-/arr-exclude-1.0.0.tgz", - "integrity": "sha1-38fC5VKicHI8zaBM8xKMjL/lxjE=", - "dev": true - }, "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, - "array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, "arrify": { @@ -262,122 +123,18 @@ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, - "auto-bind": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-1.2.1.tgz", - "integrity": "sha512-/W9yj1yKmBLwpexwAujeD9YHwYmRuWFGV8HWE7smQab797VeHa4/cnE2NFeDhA+E+5e/OGBI8763EhLjfZ/MXA==", + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, - "ava": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/ava/-/ava-0.25.0.tgz", - "integrity": "sha512-4lGNJCf6xL8SvsKVEKxEE46se7JAUIAZoKHw9itTQuwcsydhpAMkBs5gOOiWiwt0JKNIuXWc2/r4r8ZdcNrBEw==", - "dev": true, - "requires": { - "@ava/babel-preset-stage-4": "^1.1.0", - "@ava/babel-preset-transform-test-files": "^3.0.0", - "@ava/write-file-atomic": "^2.2.0", - "@concordance/react": "^1.0.0", - "@ladjs/time-require": "^0.1.4", - "ansi-escapes": "^3.0.0", - "ansi-styles": "^3.1.0", - "arr-flatten": "^1.0.1", - "array-union": "^1.0.1", - "array-uniq": "^1.0.2", - "arrify": "^1.0.0", - "auto-bind": "^1.1.0", - "ava-init": "^0.2.0", - "babel-core": "^6.17.0", - "babel-generator": "^6.26.0", - "babel-plugin-syntax-object-rest-spread": "^6.13.0", - "bluebird": "^3.0.0", - "caching-transform": "^1.0.0", - "chalk": "^2.0.1", - "chokidar": "^1.4.2", - "clean-stack": "^1.1.1", - "clean-yaml-object": "^0.1.0", - "cli-cursor": "^2.1.0", - "cli-spinners": "^1.0.0", - "cli-truncate": "^1.0.0", - "co-with-promise": "^4.6.0", - "code-excerpt": "^2.1.1", - "common-path-prefix": "^1.0.0", - "concordance": "^3.0.0", - "convert-source-map": "^1.5.1", - "core-assert": "^0.2.0", - "currently-unhandled": "^0.4.1", - "debug": "^3.0.1", - "dot-prop": "^4.1.0", - "empower-core": "^0.6.1", - "equal-length": "^1.0.0", - "figures": "^2.0.0", - "find-cache-dir": "^1.0.0", - "fn-name": "^2.0.0", - "get-port": "^3.0.0", - "globby": "^6.0.0", - "has-flag": "^2.0.0", - "hullabaloo-config-manager": "^1.1.0", - "ignore-by-default": "^1.0.0", - "import-local": "^0.1.1", - "indent-string": "^3.0.0", - "is-ci": "^1.0.7", - "is-generator-fn": "^1.0.0", - "is-obj": "^1.0.0", - "is-observable": "^1.0.0", - "is-promise": "^2.1.0", - "last-line-stream": "^1.0.0", - "lodash.clonedeepwith": "^4.5.0", - "lodash.debounce": "^4.0.3", - "lodash.difference": "^4.3.0", - "lodash.flatten": "^4.2.0", - "loud-rejection": "^1.2.0", - "make-dir": "^1.0.0", - "matcher": "^1.0.0", - "md5-hex": "^2.0.0", - "meow": "^3.7.0", - "ms": "^2.0.0", - "multimatch": "^2.1.0", - "observable-to-promise": "^0.5.0", - "option-chain": "^1.0.0", - "package-hash": "^2.0.0", - "pkg-conf": "^2.0.0", - "plur": "^2.0.0", - "pretty-ms": "^3.0.0", - "require-precompiled": "^0.1.0", - "resolve-cwd": "^2.0.0", - "safe-buffer": "^5.1.1", - "semver": "^5.4.1", - "slash": "^1.0.0", - "source-map-support": "^0.5.0", - "stack-utils": "^1.0.1", - "strip-ansi": "^4.0.0", - "strip-bom-buf": "^1.0.0", - "supertap": "^1.0.0", - "supports-color": "^5.0.0", - "trim-off-newlines": "^1.0.1", - "unique-temp-dir": "^1.0.0", - "update-notifier": "^2.3.0" - } - }, - "ava-init": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ava-init/-/ava-init-0.2.1.tgz", - "integrity": "sha512-lXwK5LM+2g1euDRqW1mcSX/tqzY1QU7EjKpqayFPPtNRmbSYZ8RzPO5tqluTToijmtjp2M+pNpVdbcHssC4glg==", - "dev": true, - "requires": { - "arr-exclude": "^1.0.0", - "execa": "^0.7.0", - "has-yarn": "^1.0.0", - "read-pkg-up": "^2.0.0", - "write-pkg": "^3.1.0" - } - }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -425,2961 +182,1255 @@ } } }, - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "ms": "2.0.0" + "is-descriptor": "^1.0.0" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true } } }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" }, "dependencies": { - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", - "dev": true, - "requires": { - "babel-helper-explode-assignable-expression": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, - "babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "dev": true, - "requires": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "restore-cursor": "^2.0.0" } }, - "babel-helper-regex": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", - "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "dev": true, "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" } }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" } }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "color-convert": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", + "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "color-name": "1.1.1" } }, - "babel-plugin-espower": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-2.4.0.tgz", - "integrity": "sha512-/+SRpy7pKgTI28oEHfn1wkuM5QFAdRq8WNsOOih1dVrdV6A/WbNbRZyl0eX5eyDgtb0lOE27PeDFuCX2j8OxVg==", - "dev": true, - "requires": { - "babel-generator": "^6.1.0", - "babylon": "^6.1.0", - "call-matcher": "^1.0.0", - "core-js": "^2.0.0", - "espower-location-detector": "^1.0.0", - "espurify": "^1.6.0", - "estraverse": "^4.1.1" - } + "color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", + "dev": true }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", "dev": true }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", "dev": true }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-functions": "^6.8.0", - "babel-runtime": "^6.22.0" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "dev": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", - "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, "requires": { - "babel-plugin-transform-strict-mode": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" - } - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "dev": true, - "requires": { - "babel-helper-call-delegate": "^6.24.1", - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "dev": true, - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "dev": true, - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "regexpu-core": "^2.0.0" - } - }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", - "dev": true, - "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", - "babel-plugin-syntax-exponentiation-operator": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true, - "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - }, - "dependencies": { - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "^0.5.6" - } - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "ms": "2.0.0" + "kind-of": "^6.0.0" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "binary-extensions": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", - "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", - "dev": true - }, - "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", - "dev": true - }, - "boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", - "dev": true, - "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "bson": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.0.tgz", - "integrity": "sha512-9Aeai9TacfNtWXOYarkFJRW2CWo+dRon+fuLZYJmvLV3+MiUp0bEI6IAZfXEIg7/Pl/7IWlLaDnhzTsD81etQA==", - "dev": true - }, - "buf-compare": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz", - "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", - "dev": true - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "caching-transform": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-1.0.1.tgz", - "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=", - "dev": true, - "requires": { - "md5-hex": "^1.2.0", - "mkdirp": "^0.5.1", - "write-file-atomic": "^1.1.4" - }, - "dependencies": { - "md5-hex": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-1.3.0.tgz", - "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=", + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "md5-o-matic": "^0.1.1" + "kind-of": "^6.0.0" } }, - "write-file-atomic": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" - } - } - } - }, - "call-matcher": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.1.0.tgz", - "integrity": "sha512-IoQLeNwwf9KTNbtSA7aEBb1yfDbdnzwjCetjkC8io5oGeOmK2CBNdg0xr+tadRYKO0p7uQyZzvon0kXlZbvGrw==", - "dev": true, - "requires": { - "core-js": "^2.0.0", - "deep-equal": "^1.0.0", - "espurify": "^1.6.0", - "estraverse": "^4.0.0" - } - }, - "call-signature": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz", - "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=", - "dev": true - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - } - }, - "capture-stack-trace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", - "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", - "dev": true - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true, - "requires": { - "anymatch": "^1.3.0", - "async-each": "^1.0.0", - "fsevents": "^1.0.0", - "glob-parent": "^2.0.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^2.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0" - } - }, - "ci-info": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.4.0.tgz", - "integrity": "sha512-Oqmw2pVfCl8sCL+1QgMywPfdxPJPkC51y4usw0iiE2S9qnEOAqXy8bwl1CpMpnoU39g4iKJTz6QZj+28FvOnjQ==", - "dev": true - }, - "clean-stack": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", - "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=", - "dev": true - }, - "clean-yaml-object": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", - "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", - "dev": true - }, - "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", - "dev": true - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-spinners": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", - "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", - "dev": true - }, - "cli-truncate": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.1.0.tgz", - "integrity": "sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA==", - "dev": true, - "requires": { - "slice-ansi": "^1.0.0", - "string-width": "^2.0.0" - } - }, - "co-with-promise": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co-with-promise/-/co-with-promise-4.6.0.tgz", - "integrity": "sha1-QT59tvWJOmC5Qs9JLEvsk9tBWrc=", - "dev": true, - "requires": { - "pinkie-promise": "^1.0.0" - } - }, - "code-excerpt": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.1.tgz", - "integrity": "sha512-tJLhH3EpFm/1x7heIW0hemXJTUU5EWl2V0EIX558jp05Mt1U6DVryCgkp3l37cxqs+DNbNgxG43SkwJXpQ14Jw==", - "dev": true, - "requires": { - "convert-to-spaces": "^1.0.1" - } - }, - "color-convert": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", - "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", - "dev": true, - "requires": { - "color-name": "1.1.1" - } - }, - "color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", - "dev": true - }, - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - }, - "common-path-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-1.0.0.tgz", - "integrity": "sha1-zVL28HEuC6q5fW+XModPIvR3UsA=", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concordance": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/concordance/-/concordance-3.0.0.tgz", - "integrity": "sha512-CZBzJ3/l5QJjlZM20WY7+5GP5pMTw+1UEbThcpMw8/rojsi5sBCiD8ZbBLtD+jYpRGAkwuKuqk108c154V9eyQ==", - "dev": true, - "requires": { - "date-time": "^2.1.0", - "esutils": "^2.0.2", - "fast-diff": "^1.1.1", - "function-name-support": "^0.2.0", - "js-string-escape": "^1.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.flattendeep": "^4.4.0", - "lodash.merge": "^4.6.0", - "md5-hex": "^2.0.0", - "semver": "^5.3.0", - "well-known-symbols": "^1.0.0" - }, - "dependencies": { - "date-time": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz", - "integrity": "sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==", + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "time-zone": "^1.0.0" - } - } - } - }, - "configstore": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", - "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", - "dev": true, - "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - }, - "convert-source-map": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", - "dev": true - }, - "convert-to-spaces": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz", - "integrity": "sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU=", - "dev": true - }, - "core-assert": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/core-assert/-/core-assert-0.2.1.tgz", - "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=", - "dev": true, - "requires": { - "buf-compare": "^1.0.0", - "is-error": "^2.2.0" - } - }, - "core-js": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", - "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "dev": true, - "requires": { - "capture-stack-trace": "^1.0.0" - } - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", - "dev": true - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "date-time": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz", - "integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc=", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "dev": true, - "requires": { - "is-obj": "^1.0.0" - } - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, - "empower-core": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-0.6.2.tgz", - "integrity": "sha1-Wt71ZgiOMfuoC6CjbfR9cJQWkUQ=", - "dev": true, - "requires": { - "call-signature": "0.0.2", - "core-js": "^2.0.0" - } - }, - "equal-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/equal-length/-/equal-length-1.0.1.tgz", - "integrity": "sha1-IcoRLUirJLTh5//A5TOdMf38J0w=", - "dev": true - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "espower-location-detector": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/espower-location-detector/-/espower-location-detector-1.0.0.tgz", - "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", - "dev": true, - "requires": { - "is-url": "^1.2.1", - "path-is-absolute": "^1.0.0", - "source-map": "^0.5.0", - "xtend": "^4.0.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "espurify": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.8.1.tgz", - "integrity": "sha512-ZDko6eY/o+D/gHCWyHTU85mKDgYcS4FJj7S+YD6WIInm7GQ6AnOjmcL4+buFV/JOztVLELi/7MmuGU5NHta0Mg==", - "dev": true, - "requires": { - "core-js": "^2.0.0" - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "^2.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "fast-diff": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", - "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", - "dev": true - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "dev": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "fn-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", - "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=", - "dev": true - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.21", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": "^2.1.0" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "minipass": { - "version": "2.2.4", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "^5.1.1", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.2.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.10.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.0", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.1.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.1.10", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.5.1", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.0.5" - } - }, - "safe-buffer": { - "version": "5.1.1", - "bundled": true, - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.5.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.0.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "yallist": { - "version": "3.0.2", - "bundled": true, - "dev": true - } - } - }, - "function-name-support": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/function-name-support/-/function-name-support-0.2.0.tgz", - "integrity": "sha1-VdO/qm6v1QWlD5vIH99XVkoLsHE=", - "dev": true - }, - "get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", - "dev": true - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", - "dev": true, - "requires": { - "ini": "^1.3.4" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - } - } - }, - "got": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", - "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", - "dev": true, - "requires": { - "create-error-class": "^3.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "handleable": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/handleable/-/handleable-0.25.1.tgz", - "integrity": "sha512-bSfBrGgZPThIfCdM0mN2285Co5ZqD5DrYirWZPjQfB+Flk9hwvsJ+v842F45PfCPuSzLE//Tbj5jVJi40V6FJg==", - "requires": { - "lodash.merge": "^4.6.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-color": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", - "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", - "dev": true - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "has-yarn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-1.0.0.tgz", - "integrity": "sha1-ieJdtgS3Jcj1l2//Ct3JIbgopac=", - "dev": true - }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - } - }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", - "dev": true - }, - "hullabaloo-config-manager": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/hullabaloo-config-manager/-/hullabaloo-config-manager-1.1.1.tgz", - "integrity": "sha512-ztKnkZV0TmxnumCDHHgLGNiDnotu4EHCp9YMkznWuo4uTtCyJ+cu+RNcxUeXYKTllpvLFWnbfWry09yzszgg+A==", - "dev": true, - "requires": { - "dot-prop": "^4.1.0", - "es6-error": "^4.0.2", - "graceful-fs": "^4.1.11", - "indent-string": "^3.1.0", - "json5": "^0.5.1", - "lodash.clonedeep": "^4.5.0", - "lodash.clonedeepwith": "^4.5.0", - "lodash.isequal": "^4.5.0", - "lodash.merge": "^4.6.0", - "md5-hex": "^2.0.0", - "package-hash": "^2.0.0", - "pkg-dir": "^2.0.0", - "resolve-from": "^3.0.0", - "safe-buffer": "^5.0.1" - } - }, - "ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", - "dev": true - }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true - }, - "import-local": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-0.1.1.tgz", - "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=", - "dev": true, - "requires": { - "pkg-dir": "^2.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "irregular-plurals": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.4.0.tgz", - "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-ci": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.0.tgz", - "integrity": "sha512-plgvKjQtalH2P3Gytb7L61Lmz95g2DlpzFiQyRSFew8WoJKxtKRzrZMeyRN2supblm3Psc8OQGy7Xjb6XG11jw==", - "dev": true, - "requires": { - "ci-info": "^1.3.0" - } - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "^2.0.0" - } - }, - "is-error": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.1.tgz", - "integrity": "sha1-aEqW2EB2V3yY9M20DG0mpRI78Zw=", - "dev": true - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "is-generator-fn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", - "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-installed-globally": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", - "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", - "dev": true, - "requires": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" - } - }, - "is-npm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", - "dev": true - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true - }, - "is-observable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", - "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", - "dev": true, - "requires": { - "symbol-observable": "^1.1.0" - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "requires": { - "path-is-inside": "^1.0.1" - } - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", - "dev": true - }, - "is-retry-allowed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, - "js-string-escape": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", - "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=", - "dev": true - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "js-yaml": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", - "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "last-line-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/last-line-stream/-/last-line-stream-1.0.0.tgz", - "integrity": "sha1-0bZNafhv8kry0EiDos7uFFIKVgA=", - "dev": true, - "requires": { - "through2": "^2.0.0" - } - }, - "latest-version": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", - "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", - "dev": true, - "requires": { - "package-json": "^4.0.0" - } - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "lodash.clonedeepwith": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz", - "integrity": "sha1-buMFc6A6GmDWcKYu8zwQzxr9vdQ=", - "dev": true - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } }, - "lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", "dev": true }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" - }, - "lodash.merge": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", - "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, - "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" } }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, "requires": { - "pify": "^3.0.0" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } } } }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, - "matcher": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.1.1.tgz", - "integrity": "sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.4" - } - }, - "math-random": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", - "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", - "dev": true - }, - "md5-hex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-2.0.0.tgz", - "integrity": "sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM=", + "external-editor": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", + "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", "dev": true, "requires": { - "md5-o-matic": "^0.1.1" + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" } }, - "md5-o-matic": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", - "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", - "dev": true - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "fast-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.2.tgz", + "integrity": "sha512-TR6zxCKftDQnUAPvkrCWdBgDq/gbqx8A3ApnBrR5rMvpp6+KMJI0Igw7fkWPgeVK0uhRXTXdvO3O+YP0CaUX2g==", "dev": true, "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.0.1", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.1", + "micromatch": "^3.1.10" }, "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } } }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" + "ms": "2.0.0" } }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "pinkie-promise": "^2.0.0" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } } }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } } }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "pinkie": "^2.0.0" + "kind-of": "^6.0.0" } }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "kind-of": "^6.0.0" } }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { - "is-utf8": "^0.2.0" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "dev": true, "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" + "escape-string-regexp": "^1.0.5" } }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "map-cache": "^0.2.2" } }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "fs-extra": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", + "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { - "minimist": "0.0.8" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, - "mongodb": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.1.3.tgz", - "integrity": "sha512-hfzI54/fe+604w5gP+i9aJ5GGVxnquxZ09ZN1cyLTbpnBfDRpj78lN59SBdDRkF1VNTzmM2KcgDWhHHDHcsJxw==", + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "dev": true, "requires": { - "mongodb-core": "3.1.2" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, - "mongodb-core": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.1.2.tgz", - "integrity": "sha512-R2XxGzsmhlUeOK2jKATj1TWn3q3qNcJpKrSh0rhaBSHxJmV7WZ+ikjocdY8VdJxUkKqOxM8rxMqOAEzeJ3p1ww==", + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "requires": { - "bson": "^1.1.0", - "require_optional": "^1.0.1", - "saslprep": "^1.0.0" + "safer-buffer": ">= 2.1.2 < 3" } }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "multimatch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", - "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "array-differ": "^1.0.0", - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "minimatch": "^3.0.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", - "dev": true, - "optional": true + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "inquirer": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.0.tgz", + "integrity": "sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg==", "dev": true, "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.0", + "figures": "^2.0.0", + "lodash": "^4.17.10", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.1.0", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" } }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "path-key": "^2.0.0" + "kind-of": "^3.0.2" } }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" + "kind-of": "^3.0.2" } }, - "observable-to-promise": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/observable-to-promise/-/observable-to-promise-0.5.0.tgz", - "integrity": "sha1-yCjw8NxH6fhq+KSXfF1VB2znqR8=", + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-observable": "^0.2.0", - "symbol-observable": "^1.0.4" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "dependencies": { - "is-observable": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", - "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", - "dev": true, - "requires": { - "symbol-observable": "^0.2.2" - }, - "dependencies": { - "symbol-observable": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", - "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", - "dev": true - } - } + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { - "mimic-fn": "^1.0.0" + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, - "option-chain": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/option-chain/-/option-chain-1.0.0.tgz", - "integrity": "sha1-k41zvU4Xg/lI00AjZEraI2aeMPI=", + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", "dev": true }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, - "os-tmpdir": { + "is-windows": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true }, - "p-finally": { + "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { + "isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true }, - "package-hash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-2.0.0.tgz", - "integrity": "sha1-eK4ybIngWk2BO2hgGXevBcANKg0=", + "js-yaml": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "lodash.flattendeep": "^4.4.0", - "md5-hex": "^2.0.0", - "release-zalgo": "^1.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, - "package-json": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", - "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "dev": true, "requires": { - "got": "^6.7.1", - "registry-auth-token": "^3.0.1", - "registry-url": "^3.0.3", - "semver": "^5.1.0" + "graceful-fs": "^4.1.6" } }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" + "is-buffer": "^1.1.5" } }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { - "error-ex": "^1.2.0" + "invert-kv": "^1.0.0" } }, - "parse-ms": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-0.1.2.tgz", - "integrity": "sha1-3T+iXtbC78e93hKtm0bBY6opIk4=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", "dev": true }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", "dev": true, "requires": { - "pify": "^2.0.0" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "make-error": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", + "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", "dev": true }, - "pinkie": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz", - "integrity": "sha1-Wkfyi6EBXQIBvae/DzWOR77Ix+Q=", + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, - "pinkie-promise": { + "map-visit": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz", - "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, "requires": { - "pinkie": "^1.0.0" + "object-visit": "^1.0.0" } }, - "pkg-conf": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", - "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { - "find-up": "^2.0.0", - "load-json-file": "^4.0.0" - }, - "dependencies": { - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } + "mimic-fn": "^1.0.0" } }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } + "merge2": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.2.tgz", + "integrity": "sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg==", + "dev": true }, - "plur": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", - "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "irregular-plurals": "^1.0.0" + "brace-expansion": "^1.1.7" } }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, - "pretty-ms": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-3.2.0.tgz", - "integrity": "sha512-ZypexbfVUGTFxb0v+m1bUyy92DHe5SyYlnyY0msyms5zd3RwyvNgyxZZsXXgoyzlxjx5MiqtXUdhUfvQbe0A2Q==", + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "dev": true, "requires": { - "parse-ms": "^1.0.0" + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" }, "dependencies": { - "parse-ms": { + "is-extendable": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", - "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=", - "dev": true + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } } } }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, - "randomatic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz", - "integrity": "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==", + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "dev": true, "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { - "is-number": { + "arr-diff": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, "kind-of": { @@ -3390,176 +1441,200 @@ } } }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "dev": true, "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" }, "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } } } }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "wrappy": "1" } }, - "readdirp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "minimatch": "^3.0.2", - "readable-stream": "^2.0.2", - "set-immediate-shim": "^1.0.1" + "mimic-fn": "^1.0.0" } }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "dev": true, "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - }, - "dependencies": { - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - } + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" } }, - "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "requires": { - "is-equal-shallow": "^0.1.3" + "p-try": "^1.0.0" } }, - "regexpu-core": { + "p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" + "p-limit": "^1.1.0" } }, - "registry-auth-token": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", - "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", - "dev": true, - "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" - } + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true }, - "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "dev": true, - "requires": { - "rc": "^1.0.1" - } + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", "dev": true }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - } + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, - "release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "dev": true, "requires": { - "es6-error": "^4.0.1" + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" } }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, "repeat-element": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", @@ -3572,38 +1647,17 @@ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "require-precompiled": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/require-precompiled/-/require-precompiled-0.1.0.tgz", - "integrity": "sha1-WhtS63Dr7UPrmC6XTIWrWVceVvo=", + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, - "require_optional": { + "require-main-filename": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", - "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", - "dev": true, - "requires": { - "resolve-from": "^2.0.0", - "semver": "^5.1.0" - }, - "dependencies": { - "resolve-from": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", - "dev": true - } - } + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true }, "resolve": { "version": "1.8.1", @@ -3614,19 +1668,10 @@ "path-parse": "^1.0.5" } }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, "restore-cursor": { @@ -3639,18 +1684,44 @@ "signal-exit": "^3.0.2" } }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, - "saslprep": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.1.tgz", - "integrity": "sha512-ntN6SbE3hRqd45PKKadRPgA+xHPWg5lPSj2JWJdJvjTwXDDfkPVtXWvP8jJojvnm+rAsZ2b299C5NwZqq818EA==", + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "^2.1.0" + } + }, + "rxjs": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.2.tgz", + "integrity": "sha512-hV7criqbR0pe7EeL3O66UYVg92IR0XsA97+9y+BWTePK9SKmEI5Qd3Zj6uPnGkNzXsBywBQWTvujPl+1Kn9Zjw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, - "optional": true + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "semver": { "version": "5.5.1", @@ -3658,27 +1729,35 @@ "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==", "dev": true }, - "semver-diff": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", "dev": true, "requires": { - "semver": "^5.0.3" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } } }, - "serialize-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", - "integrity": "sha1-ULZ51WNc34Rme9yOWa9OW4HV9go=", - "dev": true - }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", - "dev": true - }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -3700,34 +1779,127 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } }, - "slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0" + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } } }, - "slide": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", - "dev": true - }, - "sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, "requires": { - "is-plain-obj": "^1.0.0" + "kind-of": "^3.2.0" } }, "source-map": { @@ -3736,6 +1908,19 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, "source-map-support": { "version": "0.5.9", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", @@ -3754,49 +1939,47 @@ } } }, - "spdx-correct": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", - "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", - "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "extend-shallow": "^3.0.0" } }, - "spdx-license-ids": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", - "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", - "dev": true - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "stack-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", - "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", - "dev": true + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } }, "string-width": { "version": "2.1.1", @@ -3808,15 +1991,6 @@ "strip-ansi": "^4.0.0" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -3834,55 +2008,12 @@ } } }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "strip-bom-buf": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", - "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", - "dev": true, - "requires": { - "is-utf8": "^0.2.1" - } - }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, - "supertap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supertap/-/supertap-1.0.0.tgz", - "integrity": "sha512-HZJ3geIMPgVwKk2VsmO5YHqnnJYl6bV5A9JW2uzqV43WmpgliNEYbuvukfor7URpaqpxuw3CfZ3ONdVbZjCgIA==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "indent-string": "^3.2.0", - "js-yaml": "^3.10.0", - "serialize-error": "^2.1.0", - "strip-ansi": "^4.0.0" - } - }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -3900,72 +2031,86 @@ } } }, - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, - "term-size": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, "requires": { - "execa": "^0.7.0" + "os-tmpdir": "~1.0.2" } }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "dev": true, "requires": { - "readable-stream": "^2.1.5", - "xtend": "~4.0.1" + "kind-of": "^3.0.2" } }, - "time-zone": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", - "integrity": "sha1-mcW/VZWJZq9tBtg73zgA3IL67F0=", - "dev": true - }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", - "dev": true - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } }, - "trim-off-newlines": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", - "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", - "dev": true + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + } + } }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true + "ts-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "dev": true, + "requires": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } }, "tslib": { "version": "1.9.3", @@ -4002,105 +2147,109 @@ "tslib": "^1.8.1" } }, - "typeable": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/typeable/-/typeable-2.4.1.tgz", - "integrity": "sha512-NPIeowjymPLSzpK1ySPknaatOdrbxGGzaXSEyY+Iq79eJH3i6OyxCOHhVsASoDQp5CB5zfd8u1PWMSvBIAQNFA==" - }, "typescript": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.0.1.tgz", "integrity": "sha512-zQIMOmC+372pC/CCVLqnQ0zSBiY7HHodU7mpQdjiZddek4GMj31I3dUJ7gAs9o65X7mnRma6OokOkc6f9jjfBg==", "dev": true }, - "uid2": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz", - "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=", - "dev": true - }, - "unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", - "dev": true, - "requires": { - "crypto-random-string": "^1.0.0" - } - }, - "unique-temp-dir": { + "union-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz", - "integrity": "sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U=", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", "dev": true, "requires": { - "mkdirp": "^0.5.1", - "os-tmpdir": "^1.0.1", - "uid2": "0.0.3" + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } } }, - "unzip-response": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true }, - "update-notifier": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", - "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", - "dev": true, - "requires": { - "boxen": "^1.2.1", - "chalk": "^2.0.1", - "configstore": "^3.0.0", - "import-lazy": "^2.1.0", - "is-ci": "^1.0.10", - "is-installed-globally": "^0.1.0", - "is-npm": "^1.0.0", - "latest-version": "^3.0.0", - "semver-diff": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - }, - "url-parse-lax": { + "unset-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "dev": true, "requires": { - "prepend-http": "^1.0.1" + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, - "validatable": { - "version": "0.34.2", - "resolved": "https://registry.npmjs.org/validatable/-/validatable-0.34.2.tgz", - "integrity": "sha512-AFPs3qL3E3uhJvBqzFB1+FwzZOzcubIopPkZyCK/t80DKx7bFsscalq9jDu7iF4XEuPANWBhDnF2wxyQ6Bf8fg==", - "requires": { - "lodash.merge": "^4.6.1", - "typeable": "^2.4.1" - } - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "well-known-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-1.0.0.tgz", - "integrity": "sha1-c8eK6Bp3Jqj6WY4ogIAcixYiVRg=", + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true }, "which": { @@ -4112,13 +2261,51 @@ "isexe": "^2.0.0" } }, - "widest-line": { + "which-module": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", - "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { - "string-width": "^2.1.1" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } } }, "wrappy": { @@ -4127,71 +2314,59 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, - "write-file-atomic": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", - "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "11.1.0", + "resolved": "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" } }, - "write-json-file": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.3.0.tgz", - "integrity": "sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8=", + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", "dev": true, "requires": { - "detect-indent": "^5.0.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "pify": "^3.0.0", - "sort-keys": "^2.0.0", - "write-file-atomic": "^2.0.0" + "camelcase": "^4.1.0" }, "dependencies": { - "detect-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", - "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true } } }, - "write-pkg": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-3.2.0.tgz", - "integrity": "sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw==", - "dev": true, - "requires": { - "sort-keys": "^2.0.0", - "write-json-file": "^2.2.0" - } - }, - "xdg-basedir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", - "dev": true - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", "dev": true } } diff --git a/package.json b/package.json index 4e9a581..0a269ee 100644 --- a/package.json +++ b/package.json @@ -15,9 +15,8 @@ "scripts": { "clean": "rm -Rf ./dist", "build": "npm run clean; tsc", - "example": "npm run build && node dist/example", "lint": "tslint 'src/**/*.ts?(x)'", - "prepublish": "npm run build", + "prepare": "npm run build", "test": "npm run build && ava" }, "repository": { @@ -70,19 +69,11 @@ ], "author": "Kristijan Sedlak (Xpepermint)", "license": "MIT", - "dependencies": { - "@types/lodash.isequal": "^4.5.3", - "@types/lodash.merge": "^4.6.4", - "handleable": "^0.25.1", - "lodash.isequal": "^4.5.0", - "lodash.merge": "^4.6.1", - "typeable": "^2.4.1", - "validatable": "^0.34.2" - }, "devDependencies": { + "@hayspec/cli": "^0.4.21", + "@hayspec/spec": "^0.4.21", "@types/node": "^10.9.2", - "ava": "^0.25.0", - "mongodb": "^3.1.3", + "ts-node": "^7.0.1", "tslint": "^5.11.0", "typescript": "^3.0.1" } diff --git a/src/handler.ts b/src/handler.ts new file mode 100644 index 0000000..d3fe35f --- /dev/null +++ b/src/handler.ts @@ -0,0 +1,74 @@ +/** + * Error handler recipe interface. + */ +export interface HandlerRecipe { + code: number; + handler: (v?: any, r?: HandlerRecipe) => boolean | Promise; + condition?: (v?: any, r?: HandlerRecipe) => boolean | Promise; + [key: string]: any; +} + +/** + * Error handler configuration interface. + */ +export interface HandlerConfig { + ctx?: any | (() => any); + failFast?: boolean | (() => boolean); +} + +/** + * Error handler class. + */ +export class Handler { + readonly $config: HandlerConfig; + + /* + * Class constructor. + */ + constructor(config?: HandlerConfig) { + Object.defineProperty(this, '$config', { + value: { ...config }, + enumerable: false, + }); + } + + /* + * Handles the error against the recipes. + */ + async handle(error: any, recipes: HandlerRecipe[] = []): Promise { + const codes = []; + + for (let recipe of recipes) { + + const condition = recipe.condition; + if (condition) { + const result = await condition.call(this.$config.ctx, error, recipe); + if (!result) { + continue; + } + } + + const context = typeof this.$config.ctx === 'function' + ? this.$config.ctx() + : this.$config.ctx; + const isMatch = await Promise.all( + (Array.isArray(error) ? error : [error]) + .map((v) => recipe.handler.call(context, v, recipe)) + ).then((r) => r.indexOf(false) === -1); + + if (isMatch) { + codes.push(recipe.code); + + const failFast = typeof this.$config.failFast === 'function' + ? this.$config.failFast() + : this.$config.failFast; + if (failFast) { + break; + } + } + } + + return codes; + } + +} diff --git a/src/index.ts b/src/index.ts index 4e47677..ff5298b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,3 +1,6 @@ +export * from './handler'; export * from './models'; +export * from './parsing'; export * from './props'; export * from './utils'; +export * from './validator'; diff --git a/src/models.ts b/src/models.ts index e496eac..1b1dbdb 100644 --- a/src/models.ts +++ b/src/models.ts @@ -1,183 +1,95 @@ -import { isArray, isUndefined, isPresent, isString, toBoolean } from 'typeable'; -import { ValidatorRecipe } from 'validatable'; -import { HandlerRecipe } from 'handleable'; -import { Prop, PropRecipe, PropError } from './props'; -import { normalize, isEqual, merge } from './utils'; +import { Prop, PropConfig, PropRef, PropError, isDeepEqual, isArray, isUndefined, + toArray, normalize } from '.'; /** - * Flattened prop reference type definition. + * Model configuration interface. */ -export interface PropRef { - path: (string | number)[]; - prop: Prop; +export interface ModelConfig { + ctx?: any | (() => any); + failFast?: boolean | (() => boolean); + parent?: Model; } /** - * Prop error type definition. + * Strongly typed javascript object. */ -export interface PropErrorRef { - path: (string | number)[]; - errors: PropError[]; -} - -/** - * Model recipe interface (can be used also for pasing data). - */ -export interface ModelRecipe { - parent?: Model; - [key: string]: any; -} - -/** - * The core schema object class. - */ -export abstract class Model { - protected _props: { [name: string]: Prop }; // model props - protected _types: { [key: string]: (v?: any) => any }; // custom data types - protected _validators: { [key: string]: (v?: any, r?: ValidatorRecipe) => boolean | Promise }; // custom validators - protected _handlers: { [key: string]: (v?: any, r?: HandlerRecipe) => boolean | Promise }; // custom validators - protected _failFast: boolean; // stop validating/handling on first error - readonly root: Model; - public parent: Model; +export class Model { + readonly $config: ModelConfig; + readonly $props: {[key: string]: Prop}; + readonly $recipes: {[key: string]: PropConfig} = {}; /** * Class constructor. + * @param data Model initial data. + * @param config Model configuration. */ - public constructor(recipe?: ModelRecipe) { - if (!recipe) { - recipe = {}; - } - - Object.defineProperty(this, 'parent', { - value: recipe.parent || this.parent || null, - writable: true - }); - Object.defineProperty(this, 'root', { - get: () => this._getRootModel() - }); + public constructor(data?: any, config?: ModelConfig) { - Object.defineProperty(this, '_props', { - value: {}, - writable: true - }); - Object.defineProperty(this, '_types', { - value: {}, - writable: true + Object.defineProperty(this, '$config', { + value: { ...config }, + enumerable: false, }); - Object.defineProperty(this, '_validators', { + Object.defineProperty(this, '$props', { value: {}, - writable: true + enumerable: false, }); - Object.defineProperty(this, '_handlers', { - value: {}, - writable: true - }); - Object.defineProperty(this, '_failFast', { - value: false, - writable: true - }); - } - - /** - * Loops up on the tree and returns the first model in the tree. - */ - protected _getRootModel() { - let root: Model = this; - do { - if (root.parent) { - root = root.parent; - } - else { - return root; - } - } while (true); - } - - /** - * Returns the appropriate prop type. - */ - protected _getPropType(recipe: PropRecipe = {}) { - let type = isArray(recipe.type) ? recipe.type[0] : recipe.type; - type = this._types[type] || type; - return isArray(recipe.type) ? [type] : type; - } - /** - * Creates a new prop instance. This method is especially useful when - * extending this class. - */ - protected _createProp(recipe: PropRecipe = {}) { - return new Prop( - merge({}, recipe, { - type: this._getPropType(recipe), - owner: this, - validators: this._validators, - handlers: this._handlers, - failFast: this._failFast - }) - ); + this.defineProps(); + this.populate(data); + this.commit(); } /** - * Creates a new validation error instance. + * Defines all registered class properties. Registered properties are stored + * on the static variable using the @prop decorator. */ - protected _createValidationError(message = 'Validation failed', code = 422): PropError { - const error: PropError = new Error(message); - error.code = code; + protected defineProps() { + const recipes = this.constructor['$props']; - return error; - } - - /** - * Creates a new model instance. This method is especially useful when - * extending this class. - */ - protected _createModel(recipe: ModelRecipe = {}) { - return new (this.constructor as any)(recipe); + for (const key in recipes) { + this.defineProp(key, recipes[key]); + } } /** - * Configures validator to stop validating prop on the first error. + * Defines a new class property. */ - public failFast(fail: boolean = true): void { - this._failFast = toBoolean(fail); - } + protected defineProp(key: string, config: PropConfig) { - /** - * Defines a new model property. - */ - public defineProp(name: string, recipe: PropRecipe = {}): void { - const prop = this._createProp(recipe); - - Object.defineProperty(this, name, { - get: () => prop.value, - set: (v) => prop.value = v, - enumerable: recipe.enumerable !== false, - configurable: true + this.$props[key] = new Prop({ + model: this, + ...config, + }); + + Object.defineProperty(this, key, { + get: () => this.$props[key].getValue(), + set: (value) => this.$props[key].setValue(value), + enumerable: config.enumerable !== false, + configurable: false, }); - - this._props[name] = prop; - } - - /** - * Defines a new custom data type. - */ - public defineType(name: string, converter: (v?: any) => any): void { - this._types[name] = converter; } /** - * Defines a new custom validator. + * Returns parent model instance. */ - public defineValidator(name: string, handler: (v?: any, r?: ValidatorRecipe) => boolean | Promise): void { - this._validators[name] = handler; + public getParent() { + return this.$config.parent || null; } /** - * Defines a new custom validator. + * Returns the root model instance. */ - public defineHandler(name: string, handler: (e?: any, r?: HandlerRecipe) => boolean | Promise): void { - this._handlers[name] = handler; + public getRoot() { + let root: Model = this; + do { + const parent = root.getParent(); + if (parent) { + root = parent; + } + else { + return root; + } + } while (true); } /** @@ -188,7 +100,7 @@ export abstract class Model { const lastKey = keys.pop(); if (keys.length === 0) { - return this._props[lastKey]; + return this.$props[lastKey]; } const prop = keys.reduce((a, c) => (a[c] || {}), this); @@ -202,40 +114,14 @@ export abstract class Model { return !isUndefined(this.getProp(...keys)); } - /** - * Returns prop value instance. - */ - public toValue(value, strategy?: string) { - if (value instanceof Model) { - const data = normalize(value); - return value.reset().populate(data, strategy); - } else if (isArray(value)) { - return value.map((v) => this.toValue(v, strategy)); - } else { - return value; - } - } - /** * Deeply assignes data to model props. */ - public populate(data = {}, strategy?: string): this { + public populate(data: any, strategy?: string): this { + Object.keys(data || {}) - .filter((n) => ( - !!this._props[n] - )) - .forEach((name) => { - const prop = this._props[name]; - const value = prop.cast(data[name]); - if ( - isString(strategy) - && isArray(prop.populatable) - && prop.populatable.indexOf(strategy) !== -1 - || !isString(strategy) - ) { - this[name] = this.toValue(value, strategy); - } - }); + .filter((key) => !!this.$props[key]) + .forEach((key) => this.$props[key].setValue(normalize(data[key]), strategy)); return this; } @@ -246,61 +132,46 @@ export abstract class Model { public serialize(strategy?: string): { [key: string]: any } { const data = {}; - function toObject(value) { - if (value instanceof Model) { - return value.serialize(strategy); - } else if (isArray(value)) { - return value.map((v) => toObject(v)); - } else { - return value; - } - } - - Object.keys(this._props).forEach((name) => { - const prop = this._props[name]; - if ( - isString(strategy) - && isArray(prop.serializable) - && prop.serializable.indexOf(strategy) !== -1 - || !isString(strategy) - ) { - data[name] = toObject(prop.value); - } - }); + Object.keys(this.$props) + .forEach((key) => { + const value = this.$props[key].serialize(strategy); + if (!isUndefined(value)) { + data[key] = value; + } + }); return data; } /** - * Scrolls through the model and returns an array of props. + * Scrolls through the model and returns an array of property instances. */ public flatten(prefix: string[] = []): PropRef[] { let props = []; - Object.keys(this._props).forEach((name) => { - const prop = this._props[name]; - const type = prop.type; - const path = (prefix || []).concat(name); - const value = prop.value; - - props.push({path, prop}); - - if (isPresent(value) && isPresent(type)) { - if (type.prototype instanceof Model) { - props = props.concat( - value.flatten(path) - ); + Object.keys(this.$props) + .forEach((key) => { + const prop = this.$props[key]; + const path = (prefix || []).concat(key); + + props.push({ path, prop }); + + if (!prop.isEmpty() && prop.isModel()) { + if (prop.isArray()) { + props = props.concat( + prop.getValue() + .map((f, i) => (f && f instanceof Model ? f.flatten(path.concat([i])) : null)) + .filter((f) => isArray(f)) + .reduce((a, b) => a.concat(b), []) + ); + } + else { + props = props.concat( + prop.getValue().flatten(path) + ); + } } - else if (isArray(type) && type[0].prototype instanceof Model) { - props = props.concat( - value - .map((f, i) => (f && f instanceof Model ? f.flatten(path.concat([i])) : null)) - .filter((f) => isArray(f)) - .reduce((a, b) => a.concat(b), []) - ); - } - } - }); + }); return props; } @@ -342,18 +213,19 @@ export abstract class Model { * Sets each model prop to its default value. */ public reset(): this { - Object.keys(this._props) - .forEach((name) => this._props[name].reset()); + + Object.keys(this.$props) + .forEach((key) => this.$props[key].reset()); return this; } /** - * Resets props then sets props to their fake values. + * Resets properties then sets properties to their fake values. */ public fake(): this { - Object.keys(this._props) - .forEach((name) => this._props[name].fake()); + Object.keys(this.$props) + .forEach((key) => this.$props[key].fake()); return this; } @@ -361,9 +233,9 @@ export abstract class Model { /** * Sets all fileds to `null`. */ - public clear(): this { - Object.keys(this._props) - .forEach((name) => this._props[name].clear()); + public empty(): this { + Object.keys(this.$props) + .forEach((name) => this.$props[name].empty()); return this; } @@ -372,8 +244,8 @@ export abstract class Model { * Resets information about changed props by setting initial value of each prop. */ public commit(): this { - Object.keys(this._props) - .forEach((name) => this._props[name].commit()); + Object.keys(this.$props) + .forEach((name) => this.$props[name].commit()); return this; } @@ -382,20 +254,20 @@ export abstract class Model { * Sets each prop to its initial value (value before last commit). */ public rollback(): this { - Object.keys(this._props) - .forEach((name) => this._props[name].rollback()); + Object.keys(this.$props) + .forEach((name) => this.$props[name].rollback()); return this; } /** - * Returns `true` when the `value` represents an object with the - * same prop values as the original model. + * Returns `true` when the `value` represents an object with the same prop + * values as the original model. */ - public equals(value: any): boolean { - return isEqual( - normalize(this), - normalize(value) + public isEqual(value: any): boolean { + return isDeepEqual( + this.serialize(), + value instanceof Model ? value.serialize() : normalize(value) ); } @@ -403,16 +275,18 @@ export abstract class Model { * Returns `true` if at least one prop has been changed. */ public isChanged(): boolean { - return Object.keys(this._props) - .some((name) => this._props[name].isChanged()); + // return Object.keys(this.$props) + // .some((name) => this.$props[name].isChanged()); + return false; } /** - * Returns `true` if nested props exist. + * Returns `true` when no errors exist. */ - public isNested(): boolean { - return Object.keys(this._props) - .some((name) => this._props[name].isNested()); + public isValid(): boolean { + // return !Object.keys(this.$props) + // .some((name) => !this.$props[name].isValid()); + return false; } /** @@ -423,62 +297,55 @@ export abstract class Model { }: { quiet?: boolean } = {}): Promise { - const props = this._props; await Promise.all( - Object.keys(props) - .map((n) => props[n].validate()) + Object.keys(this.$props) + .map((n) => this.$props[n].validate()) ); - if (!quiet && this.hasErrors()) { - throw this._createValidationError(); + if (!quiet && !this.isValid()) { + const error = new Error('Validation failed'); + error['code'] = 422; + throw error; } - return this; - } - - /** - * Handles the error and throws an error if the error can not be handled. - */ - public async handle(error: any, { - quiet = true - }: { - quiet?: boolean - } = {}): Promise { - if (!error) return this; // blank values are valid - if (error.code === 422) return this; // validation errors are ignored - - const props = this._props; - await Promise.all( - Object.keys(props) - .map((n) => props[n].handle(error)) - ); - if (!quiet && this.hasErrors()) { - throw this._createValidationError(); - } - else if (!this.hasErrors()) { - throw error; // always throw unhandled errors - } return this; } - /** - * Returns a list of all props with errors. - */ - public collectErrors(): PropErrorRef[] { - return this.flatten() - .map(({path, prop}) => ({path, errors: prop.errors} as PropErrorRef)) - .filter(({path, errors}) => errors.length > 0); - } + // /** + // * Handles the error and throws an error if the error can not be handled. + // */ + // public async handle(error: any, { + // quiet = true + // }: { + // quiet?: boolean + // } = {}): Promise { + // if (!error) return this; // blank values are valid + // if (error.code === 422) return this; // validation errors are ignored + + // const props = this._props; + // await Promise.all( + // Object.keys(props) + // .map((n) => props[n].handle(error)) + // ); + + // if (!quiet && this.hasErrors()) { + // throw this._createValidationError(); + // } + // else if (!this.hasErrors()) { + // throw error; // always throw unhandled errors + // } + // return this; + // } /** * Sets props errors. */ - public applyErrors(errors: PropErrorRef[] = []): this { - errors.forEach((error) => { + public applyErrors(errors: PropError[] = []): this { + toArray(errors).forEach((error) => { const prop = this.getProp(...error.path); if (prop) { - prop.errors = error.errors; + prop.setErrorCodes(...error.errors); } }); @@ -486,35 +353,29 @@ export abstract class Model { } /** - * Returns `true` when errors exist (inverse of `isValid`). - */ - public hasErrors(): boolean { - return Object.keys(this._props) - .some((name) => this._props[name].hasErrors()); - } - - /** - * Returns `true` when no errors exist (inverse of `hasErrors`). - */ - public isValid(): boolean { - return !this.hasErrors(); - } - - /** - * Removes props errors. - */ - public invalidate(): this { - Object.keys(this._props) - .forEach((name) => this._props[name].invalidate()); - - return this; - } - - /** - * Returns a new Model instance which is the exact copy of the original. + * Returns a list of all props with errors. */ - public clone(data = {}): this { - return this._createModel({ parent: this.parent }) - .populate(merge({}, this.serialize(), data)); - } + public collectErrors(): PropError[] { + return this.flatten() + .map(({ path, prop }) => ({ path, errors: prop.getErrorCodes() })) + .filter(({ errors }) => errors.length > 0); + } + + // /** + // * Removes props errors. + // */ + // public invalidate(): this { + // Object.keys(this._props) + // .forEach((name) => this._props[name].invalidate()); + + // return this; + // } + + // /** + // * Returns a new Model instance which is the exact copy of the original. + // */ + // public clone(data = {}): this { + // return this._createModel({ parent: this.parent }) + // .populate(merge({}, this.serialize(), data)); + // } } diff --git a/src/parsing.ts b/src/parsing.ts new file mode 100644 index 0000000..472f25c --- /dev/null +++ b/src/parsing.ts @@ -0,0 +1,47 @@ +import { Model, isUndefined, isNull, toArray, toString, toBoolean, toInteger, + toFloat, toNumber, toDate } from '.'; + +/** + * Model property type interface. + */ +export interface CastConfig { + handler?: CastHandler | (typeof Model); + array?: boolean; +} + +/** + * Handler function type. + */ +export type CastHandler = 'String' | 'Boolean' | 'Integer' | 'Float' | 'Number' + | 'Date' | ((v: any) => any); + +/** + * Converts the provided value into desired type. + * @param value Value or an object. + * @param handler Cast handler function or type name. + * @param array Set to `true` to automatically convert to array. + */ +export function cast(value: any, handler: CastHandler, array: boolean) { + if (isUndefined(value) || isNull(value)) { + return value; + } + else if (array) { + return toArray(value).map((v) => cast(v, handler, false)); + } + else if (typeof handler === 'function') { + return handler(value); + } + else if (typeof handler === 'string') { + return { + 'String': toString, + 'Boolean': toBoolean, + 'Integer': toInteger, + 'Float': toFloat, + 'Number': toNumber, + 'Date': toDate, + }[handler](value); + } + else { + return value; + } +} diff --git a/src/props.ts b/src/props.ts index 4827e54..d9abf55 100644 --- a/src/props.ts +++ b/src/props.ts @@ -1,279 +1,309 @@ -import { isFunction, isUndefined, isPresent, isArray, toArray, isValue, cast } from 'typeable'; -import { normalize, isEqual, merge } from './utils'; -import { Validator, ValidatorRecipe } from 'validatable'; -import { Handler, HandlerRecipe } from 'handleable'; -import { Model } from './models'; +import { Model, cast, CastConfig, CastHandler, Validator, ValidatorRecipe, Handler, + HandlerRecipe, normalize, isDeepEqual, isUndefined, isPresent, toArray } from '.'; /** - * Prop definition interface. + * Property error interface. */ -export interface PropRecipe { - type?: any; - get?: (v: any) => any; - set?: (v: any) => void; - defaultValue?: any; - fakeValue?: any; - nullValue?: any; +export interface PropError { + path: (string | number)[]; + errors: number[]; +} + +/** + * Model property class configuration object. + */ +export interface PropRef { + path: string[]; + prop: Prop; +} + +/** + * Model property class configuration object. + */ +export interface PropConfig { + set?: (v: any) => T; + get?: (v: any) => T; + cast?: CastConfig; + defaultValue?: T | (() => T); + fakeValue?: T | (() => T); + emptyValue?: T | (() => T); + validator?: Validator | (() => Validator); validate?: ValidatorRecipe[]; + handler?: Handler | (() => Handler); handle?: HandlerRecipe[]; - validators?: {[name: string]: (v?: any, r?: ValidatorRecipe) => boolean | Promise}; - handlers?: {[name: string]: (v?: any, r?: HandlerRecipe) => boolean | Promise}; - owner?: Model; - failFast?: boolean; populatable?: string[]; serializable?: string[]; enumerable?: boolean; + model?: Model; } /** - * Prop error interface. + * Property decorator for model. */ -export interface PropError { - message?: string; - code?: number; - [key: string]: any; +export function prop(config?: PropConfig) { + return function(target: any, key: string) { + + let other = {}; + if (target.constructor.prototype && target.constructor.prototype.constructor) { + other = { ...target.constructor.prototype.constructor.$props }; + } + other[key] = { ...config }; + + Object.defineProperty(target.constructor, '$props', { + value: other, + enumerable: true, + configurable: true, + }); + + }; } /** - * Prop class. + * Model property class. */ -export class Prop { - protected _data: any; - protected _initialData: any; - protected _validator: Validator; - protected _handler: Handler; - protected _recipe: PropRecipe; - readonly defaultValue: any; - readonly fakeValue: any; - readonly nullValue: any; - readonly initialValue: any; - readonly populatable: string[]; - readonly serializable: string[]; - readonly enumerable: boolean; - readonly owner: Model; - readonly type: any; - public value: any; - public errors: PropError[]; +export class Prop { + protected rawValue: T | (() => T); + protected initialValue: T | (() => T); + protected errorCodes: number[] = []; + readonly $config: PropConfig; /** * Class constructor. + * @param config Model prop configuration. */ - public constructor(recipe?: PropRecipe) { - if (!recipe) { - recipe = {}; - } - - this.errors = []; + public constructor(config?: PropConfig) { - Object.defineProperty(this, 'populatable', { - get: () => !isArray(this._recipe.populatable) ? [] : this._recipe.populatable, - enumerable: true - }); - Object.defineProperty(this, 'serializable', { - get: () => !isArray(this._recipe.serializable) ? [] : this._recipe.serializable, - enumerable: true - }); - Object.defineProperty(this, 'enumerable', { - get: () => isUndefined(this._recipe.enumerable) ? true : !!this._recipe.enumerable, - enumerable: true - }); - Object.defineProperty(this, 'type', { - get: () => this._recipe.type || null, - enumerable: true - }); - Object.defineProperty(this, 'owner', { - get: () => this._recipe.owner || null, - enumerable: true + Object.defineProperty(this, '$config', { + value: { ...config }, + enumerable: false, }); - Object.defineProperty(this, '_recipe', { - value: Object.freeze(recipe || {}) - }); + this.setValue(this.$config.defaultValue); + this.commit(); + } - Object.defineProperty(this, '_data', { // current value - value: this.cast(this._getDefaultValue()), - writable: true - }); - Object.defineProperty(this, '_initialData', { // last commited value - value: this.cast(this._getDefaultValue()), - writable: true - }); - Object.defineProperty(this, '_validator', { // validatable.js instance - value: this._createValidator() - }); - Object.defineProperty(this, '_handler', { // handleable.js instance - value: this._createHandler() - }); + /** + * Sets the current value. + */ + public setValue(data: T | (() => T), strategy?: string) { + if (!this.isPopulatable(strategy)) { + return; + } - Object.defineProperty(this, 'value', { - get: () => this._getValue(), - set: (v) => this._setValue(v), - enumerable: true - }); - Object.defineProperty(this, 'defaultValue', { - get: () => this._getDefaultValue(), - enumerable: true - }); - Object.defineProperty(this, 'fakeValue', { - get: () => this._getFakeValue(), - enumerable: true - }); - Object.defineProperty(this, 'nullValue', { - get: () => this._getNullValue(), - enumerable: true - }); - Object.defineProperty(this, 'initialValue', { - get: () => this._initialData, - enumerable: true - }); + let value = isUndefined(data) ? null : data; + + if (this.$config.cast) { + value = this.cast(value, strategy); + } + if (this.$config.set) { + value = this.$config.set.call(this, value); + } + + this.rawValue = value; } /** - * Returns a new validator instance. + * Calculates the current value. */ - protected _createValidator() { - const { validators, failFast } = this._recipe; - const context = this; + public getValue(): T { + let value = typeof this.rawValue === 'function' + ? this.rawValue.call(this) + : this.rawValue; + + if (this.$config.get) { + value = this.$config.get.call(this, value); + } + + if (this.isEmpty()) { + value = typeof this.$config.emptyValue === 'function' + ? this.$config.emptyValue.call(this) + : this.$config.emptyValue; + } - return new Validator({ validators, failFast, context }); + return isUndefined(value) ? null : value; } /** - * Returns a new handler instance. + * Sets the current value. */ - protected _createHandler() { - const { handlers, failFast } = this._recipe; - const context = this; - - return new Handler({ handlers, failFast, context }); + public setErrorCodes(...codes: number[]) { + this.errorCodes = this.errorCodes.concat(codes) + .reduce((a, b) => a.indexOf(b) === -1 ? a.concat([b]) : a, []); } /** - * Returns current prop value. + * Sets the current value. */ - protected _getValue() { - let data = this._data; + public getErrorCodes() { + return this.errorCodes; + } - const { get } = this._recipe; - if (isFunction(get)) { - data = get.call(this, data); - } + /** + * Returns raw property value. + */ + public getRawValue() { + return this.rawValue; + } - return data; // do not cast value to preserve type instances + /** + * Returns property value on last commit. + */ + public getInitialValue() { + return this.initialValue; } /** - * Sets current prop value. + * Returns `true` if the property type represents a Model. */ - protected _setValue(data: any) { - if (isFunction(data)) { - data = data.call(this); - } + public isModel(): boolean { + const { handler } = this.$config.cast || {} as any; + return ( + isPresent(handler) + && isPresent(handler.prototype) + && ( + handler.prototype instanceof Model + || handler.prototype.constructor === Model + ) + ); + } - const { set } = this._recipe; - if (isFunction(set)) { - data = set.call(this, data); - } + /** + * Returns `true` if the property is an array. + */ + public isArray(): boolean { + const { array } = this.$config.cast || {} as any; + return array === true; + } - this._data = this.cast(data); // cast only when setting value to preserve data instance + /** + * Returns `true` if the property value can be set based on the strategy. + * @param strategy Populatable strategy. + */ + public isPopulatable(strategy?: string): boolean { + return ( + typeof strategy === 'undefined' + || (this.$config.populatable || []).indexOf(strategy) !== -1 + ); } /** - * Returns the default value of a prop. + * Returns `true` if the property value can be read based on the strategy. + * @param strategy Serialization strategy. */ - protected _getDefaultValue() { - let data = null; + public isSerializable(strategy?: string): boolean { + return ( + typeof strategy === 'undefined' + || (this.$config.serializable || []).indexOf(strategy) !== -1 + ); + } - const { defaultValue } = this._recipe; - if (isFunction(defaultValue)) { - data = defaultValue.call(this); - } - else if (!isUndefined(defaultValue)) { - data = defaultValue; - } + /** + * Returns true if the property value is an empty value. + */ + public isEmpty() { + const value = typeof this.rawValue === 'function' + ? this.rawValue.call(this) + : this.rawValue; - return data; + return !isPresent(value); } /** - * Returns the fake value of a prop. + * Returns `true` if the value has been changed. */ - protected _getFakeValue() { - let data = null; + public isChanged(): boolean { + return this.initialValue !== this.rawValue; + } - const { fakeValue } = this._recipe; - if (isFunction(fakeValue)) { - data = fakeValue.call(this); + /** + * Returns `true` when `data` isEqual to the current value. + */ + public isEqual(data: any): boolean { + if (typeof data === 'function') { + return this.rawValue === data; } - else if (!isUndefined(fakeValue)) { - data = fakeValue; + return isDeepEqual( + normalize(this.getValue()), + normalize(data instanceof Prop ? data.getValue() : data) + ); + } + + /** + * Returns `true` when the value is valid. + */ + public isValid(): boolean { + if (this.getErrorCodes().length !== 0) { + return false; } + if (this.isModel()) {} - return data; + + // ISVALID, getERRORS NE GLEDA DEEPLKY!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! } /** - * Returns the null value of a prop. + * Converts the provided value to the property type. */ - protected _getNullValue() { - let data = null; - - const { nullValue } = this._recipe; - if (isFunction(nullValue)) { - data = nullValue.call(this); - } - else if (!isUndefined(nullValue)) { - data = nullValue; + protected cast(value: any, strategy?: string): any { + let { handler, array } = this.$config.cast || {} as any; + + if (this.isModel()) { + const Klass = (handler as typeof Model); + handler = (data: any) => { + if (data instanceof Klass) { + return data; // keep instances + } else { + const instance = new Klass(null, this.$config.model.$config); + instance.$config.parent = this.$config.model; + return instance.populate(data, strategy).commit(); + } + }; } - return data; + return cast(value, handler as CastHandler, array); } /** - * Converts a `data` into prop's type. + * Serializes the provided property value. */ - public cast(data: any) { - let converter = this.type; - - if (!isValue(data)) { - return this._getNullValue(); + public serialize(strategy?: string): any { + if (!this.isSerializable(strategy)) { + return null; } - if ( - (isArray(this.type) && isArray(data) && data[0] instanceof Model) || - (data instanceof Model) - ) { - return data; + const value = this.getValue() as any; + if (!value) { + return null; } - if (this.isNested()) { - const Klass = isArray(this.type) ? this.type[0] : this.type; - const toModel = (d) => new Klass(merge({ parent: this.owner }, d)).populate(d); - converter = isArray(this.type) ? [toModel] : toModel; + if (this.isModel()) { + if (this.isArray()) { + return value.map((m) => m ? m.serialize() : null); + } + else { + return value.serialize(); + } + } else { + return normalize(value); } - - return cast(data, converter); } - + /** - * Sets data to the default value. + * Sets property value to the default value. */ public reset(): this { - this.value = this._getDefaultValue(); + this.setValue(this.$config.defaultValue); return this; } /** - * Resets the value then sets data to the fake value. + * Sets property value to the fake value. */ public fake(): this { + this.setValue(this.$config.fakeValue); - if (this._recipe.fakeValue) { - this.value = this.fakeValue; - } - - (toArray(this.value) || []) // related fake values + (toArray(this.rawValue) || []) // related fake values .filter((doc) => doc instanceof Model) .map((doc) => doc.fake()); @@ -281,111 +311,59 @@ export class Prop { } /** - * Sets data to `null`. + * Sets property value to empty value. */ - public clear(): this { - this.value = null; + public empty(): this { + this.setValue(null); return this; } /** - * Set's the initial value to the current value. + * Saves the property value to initial value. */ public commit(): this { - if (isValue(this.value)) { - toArray(this.value) - .filter((v) => v && v.commit) - .forEach((v) => v.commit()); - } - - this._initialData = normalize(this.value); + this.initialValue = this.rawValue; return this; } /** - * Sets value to the initial value. + * Sets property value to the initial value. */ public rollback(): this { - this.value = this.initialValue; + this.rawValue = this.initialValue; // normalize and keep functions return this; } /** - * Returns `true` when `data` equals to the current value. - */ - public equals(data: any): boolean { - const value = data instanceof Prop ? data.value : data; - - return isEqual( - normalize(this.value), - normalize(value) - ); - } - - /** - * Returns `true` if the value has been changed. - */ - public isChanged(): boolean { - return !this.equals(this.initialValue); - } - - /** - * Returns `true` if the data is a Model. - */ - public isNested(): boolean { - let type = this.type; - if (isArray(type)) type = type[0]; - - return ( - isPresent(type) - && isPresent(type.prototype) - && ( - type.prototype instanceof Model - || type.prototype.constructor === Model - ) - ); - } - - /** - * Validates the prop by populating the `errors` property. - * - * IMPORTANT: Array null values for nested objects are not treated as an object - * but as an empty item thus isValid() for [null] succeeds. + * Validates the property and saves the error on the class itself. */ public async validate(): Promise { - await Promise.all( // validate related models - (toArray(this.value) || []) - .filter((doc) => doc instanceof Model) - .map((doc) => doc.validate({quiet: true})) - ); - this.errors = await this._validator.validate( - this.value, - this._recipe.validate + const validator = typeof this.$config.validator === 'function' + ? this.$config.validator.call(this) + : this.$config.validator; + this.errorCodes = await validator.validate( + this.getValue(), + this.$config.validate ); return this; } /** - * Handles the prop by populating the `errors` property. - * - * IMPORTANT: Array null values for nested objects are not treated as an object - * but as an empty item thus isValid() for [null] succeeds. + * Handles property error and saves the error on the class itself . */ public async handle(error: any): Promise { - await Promise.all( // handle related models - (toArray(this.value) || []) - .filter((doc) => doc instanceof Model) - .map((doc) => doc.handle(error)) - ).catch(() => {}); // do not throw even when unhandled error - this.errors = await this._handler.handle( + const handler = typeof this.$config.handler === 'function' + ? this.$config.handler.call(this) + : this.$config.handler; + this.errorCodes = await handler.handle( error, - this._recipe.handle + this.$config.handle ); return this; @@ -395,37 +373,9 @@ export class Prop { * Clears errors. */ public invalidate(): this { - (toArray(this.value) || []) // invalidate related models - .filter((doc) => doc instanceof Model) - .forEach((doc) => doc.invalidate()); - - this.errors = []; + this.errorCodes = []; return this; } - /** - * Returns `true` when errors exist (inverse of `isValid`). - */ - public hasErrors(): boolean { - if (this.errors.length > 0) { - return true; - } - else if (!this.isNested()) { - return false; - } - else if (isPresent(this.value)) { - return toArray(this.value) - .filter((f) => !!f) - .some((f) => f.hasErrors()); - } - return false; - } - - /** - * Returns `true` when the value is valid (inverse of `hasErrors`). - */ - public isValid(): boolean { - return !this.hasErrors(); - } } diff --git a/src/utils.ts b/src/utils.ts index 70c7b71..847bda2 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,23 +1,312 @@ -import merge = require('lodash.merge'); -import isEqual = require('lodash.isequal'); +/** + * Converts the provided data to primitive data type. + */ +export function normalize(data: any) { + if (typeof data === 'undefined') { + return null; + } + try { + return JSON.parse(JSON.stringify(data)); + } + catch (e) { + return null; + } +} + +/** + * Returns `true` if the provided values are deeply equal. + * @param a Value A. + * @param b Value B. + */ +export function isDeepEqual(a, b) { + if (a === b) { + return true; + } + if (a == null || typeof a != "object" || b == null || typeof b != "object") { + return false; + } + var propsInA = 0; + var propsInB = 0; + + for (var prop in a) { + propsInA += 1; + } + + for (let prop in b) { + propsInB += 1; + if (!(prop in a) || !isDeepEqual(a[prop], b[prop])) { + return false; + } + } + return propsInA == propsInB; +} /** - * Deeply combines multiple values. + * Returns `true` if the provided value is undefined. + * @param v Arbitrary value. */ -export {merge}; +export function isUndefined(v?: any) { + return typeof v === 'undefined' || v === undefined; +} /** - * Deeply checks if two objects are equal. + * Returns `true` if the provided value is null. + * @param v Arbitrary value. */ -export {isEqual}; +export function isNull(v?: any) { + return v === null; +} /** - * Converts the provided data to primitive data type. + * Returns `true` if the provided value is infinite number. + * @param v Arbitrary value. */ -export function normalize (data: any) { - if (typeof data === 'undefined') { - return undefined; - } else { - return JSON.parse(JSON.stringify(data)); +export function isInfinite(v?: any) { + return v === Infinity; +} + +/** + * Returns `true` if the provided value represents a value. + * @param v Arbitrary value. + */ +export function isValue(v?: any) { + return ( + !isUndefined(v) + && !isNull(v) + && !(isNumber(v) && isNaN(v)) + && !isInfinite(v) + ); +} + +/** + * Returns `true` if the provided value is a string. + * @param v Arbitrary value. + */ +export function isString(v?: any) { + return typeof v === 'string'; +} + +/** + * Returns `true` if the provided value is a boolean value. + * @param v Arbitrary value. + */ +export function isBoolean(v?: any) { + return typeof v === 'boolean'; +} + +/** + * Returns `true` if the provided value is a number. + * @param v Arbitrary value. + */ +export function isNumber(v?: any) { + return typeof v === 'number'; +} + +/** + * Returns `true` if the provided value represents an integer number. + * @param v Arbitrary value. + */ +export function isInteger(v?: any) { + return isNumber(v) ? v % 1 === 0 : false; +} + +/** + * Returns `true` if the provided value is a number. + * @param v Arbitrary value. + */ +export function isFloat(v?: any) { + return ( + isNumber(v) + && isFinite(v) + ); +} + +/** + * Returns `true` if the provided value is a Date object. + * @param v Arbitrary value. + */ +export function isDate(v?: any) { + return ( + !isUndefined(v) + && !isNull(v) + && v.constructor === Date + && isInteger(v.getTime()) + ); +} + +/** + * Returns `true` if the provided value is an object. + * @param v Arbitrary value. + */ +export function isObject(v?: any) { + return ( + !isUndefined(v) + && !isNull(v) + && v.constructor === Object + ); +} + +/** + * Returns `true` if the provided value is an array. + * @param v Arbitrary value. + */ +export function isArray(v?: any) { + return Array.isArray(v); +} + +/** + * Returns `true` if the provided value is not empty. + * @param v Arbitrary value. + */ +export function isPresent(v?: any) { + return !( + isUndefined(v) + || isNull(v) + || (isNumber(v) && isNaN(v)) + || isString(v) && v === '' + || isArray(v) && v.length === 0 + || isObject(v) && Object.keys(v).length === 0 + ); +} + +/** + * Returns `true` if the provided value represents a function. + * @param v Arbitrary value. + */ +export function isFunction(v?: any) { + return typeof v === 'function'; +} + +/** + * Converts the provided value to string. + * @param v Arbitrary value. + */ +export function toString(v?: any) { + if (isString(v)) { + return v; + } + else if (isUndefined(v) || isNull(v)) { + return null; + } + else { + return toString(v.toString()); + } +} + +/** + * Converts the provided value to boolean. + * @param v Arbitrary value. + */ +export function toBoolean(v?: any) { + if (isBoolean(v)) { + return v; + } + else if (isUndefined(v) || isNull(v)) { + return null; + } + else { + return ( + parseFloat(v) > 0 + || isInfinite(v) + || v === '1' + || v === 'true' + || v === 'yes' + || v === '+' + ); + } +} + +/** + * Converts the provided value to integer. + * @param v Arbitrary value. + */ +export function toInteger(v?: any) { + if (isInteger(v)) { + return v; + } + else if (isUndefined(v) || isNull(v)) { + return null; + } + else if (isFloat(v)) { + return parseInt(v); + } + else { + var pv = parseInt(v); + if (isInteger(pv)) { + return pv; + } + else if (toBoolean(v)) { + return 1; + } + else { + return 0; + } + } +} + +/** + * Converts the provided value to number. + * @param v Arbitrary value. + */ +export function toFloat(v?: any) { + if (isFloat(v)) { + return v; + } + else if (isUndefined(v) || isNull(v)) { + return null; + } + else { + var pv = parseFloat(v); + if (isFloat(pv)) { + return pv; + } + else if (toBoolean(v)) { + return 1; + } + else { + return 0; + } + } +} + +/** + * Converts the provided value to number (alias). + * @param v Arbitrary value. + */ +export function toNumber(v?: any) { + return toFloat(v); +} + +/** + * Converts the provided value to date. + * @param v Arbitrary value. + */ +export function toDate(v?: any): Date { + var date = isDate(v) ? v : new Date(v); + var time = date.getTime(); + var isValid = ( + isPresent(v) + && isInteger(time) + ); + + return isValid ? date : null; +} + +/** + * Converts the provided value to array. + * @param v Arbitrary value. + */ +export function toArray(v?: any): Array { + if (isArray(v)) { + return v; + } + else if (isUndefined(v) || isNull(v)) { + return null; + } + else if (!isValue(v)) { + return []; + } + else { + return [v]; } } diff --git a/src/validator.ts b/src/validator.ts new file mode 100644 index 0000000..f9c7a12 --- /dev/null +++ b/src/validator.ts @@ -0,0 +1,74 @@ +/** + * Validation recipe interface. + */ +export interface ValidatorRecipe { + code: number; + handler: (v?: any, r?: ValidatorRecipe) => boolean | Promise; + condition?: (v?: any, r?: ValidatorRecipe) => boolean | Promise; + [key: string]: any; +} + +/** + * Validator configuration interface. + */ +export interface ValidatorConfig { + ctx?: any | (() => any); + failFast?: boolean | (() => boolean); +} + +/** + * Value validator class. + */ +export class Validator { + readonly $config: ValidatorConfig; + + /* + * Class constructor. + */ + constructor(config?: ValidatorConfig) { + Object.defineProperty(this, '$config', { + value: { ...config }, + enumerable: false, + }); + } + + /* + * Validates the `value` against the recipes. + */ + async validate(value: any, recipes: ValidatorRecipe[] = []): Promise { + const codes = []; + + for (let recipe of recipes) { + + const condition = recipe.condition; + if (condition) { + const result = await condition.call(this.$config.ctx, value, recipe); + if (!result) { + continue; + } + } + + const context = typeof this.$config.ctx === 'function' + ? this.$config.ctx() + : this.$config.ctx; + const isValid = await Promise.all( + (Array.isArray(value) ? value : [value]) + .map((v) => recipe.handler.call(context, v, recipe)) + ).then((r) => r.indexOf(false) === -1); + + if (!isValid) { + codes.push(recipe.code); + + const failFast = typeof this.$config.failFast === 'function' + ? this.$config.failFast() + : this.$config.failFast; + if (failFast) { + break; + } + } + } + + return codes; + } + +} diff --git a/tests/handler.test.ts b/tests/handler.test.ts new file mode 100644 index 0000000..3cd509d --- /dev/null +++ b/tests/handler.test.ts @@ -0,0 +1,83 @@ +import { Spec } from '@hayspec/spec'; +import { Handler } from '../src'; + +const spec = new Spec(); + +spec.test('methods `handle` handles an error and returns error codes', async (ctx) => { + const handler = new Handler(); + const recipes = [ + { code: 200, handler: (e) => e.message === 'foo' }, + { code: 201, handler: (e) => e.message === 'bar' }, + { code: 400, handler: (e) => e.message === 'foo' }, + { code: 401, handler: (e) => e.message === 'bar' }, + ]; + const error = new Error('foo'); + const codes = await handler.handle(error, recipes); + ctx.deepEqual(codes, [200, 400]); +}); + +spec.test('methods `handle` can fail fast', async (ctx) => { + const handler = new Handler({ + failFast: true, + }); + const recipes = [ + { code: 400, handler: (v) => true }, + { code: 401, handler: (v) => true }, + { code: 402, handler: (v) => true }, + ]; + const codes = await handler.handle('foo', recipes); + ctx.deepEqual(codes, [400]); +}); + +spec.test('methods `handle` supports conditional handlers', async (ctx) => { + const handler = new Handler(); + const recipes = [ + { code: 100, handler: (v) => true, condition: (v) => true }, + { code: 200, handler: (v) => true, condition: (v) => false }, + { code: 300, handler: (v) => true }, + ]; + const codes = await handler.handle(true, recipes); + ctx.deepEqual(codes, [100, 300]); +}); + +spec.test('methods `handle` passes context to each handler', async (ctx) => { + const handler = new Handler({ + ctx: { foo: 'foo' }, + }); + const recipes = [ + { code: 100, handler(v) { return v === this.foo} }, + ]; + const codes = await handler.handle('foo', recipes); + ctx.deepEqual(codes, [100]); +}); + +spec.test('methods `handle` passes context to each condition', async (ctx) => { + const handler = new Handler({ + ctx: { foo: 'foo' }, + }); + const recipes = [ + { code: 100, handler: (v) => true, condition(v) { return v === this.foo } }, + ]; + const codes = await handler.handle('foo', recipes); + ctx.deepEqual(codes, [100]); +}); + +spec.test('methods `handle` passes recipe to each handler', async (ctx) => { + const handler = new Handler(); + const recipes = [ + { code: 100, handler: (v, r) => v === r.code }, + ]; + const codes = await handler.handle(100, recipes); + ctx.deepEqual(codes, [100]); +}); + +spec.test('methods `handle` passes recipe to each condition', async (ctx) => { + const handler = new Handler(); + const recipes = [ + { code: 100, handler: (v) => true, condition: (v, r) => r.code === 100 }, + ]; + const codes = await handler.handle(true, recipes); + ctx.deepEqual(codes, [100]); +}); + +export default spec; diff --git a/tests/index.test.ts b/tests/index.test.ts new file mode 100644 index 0000000..45079b1 --- /dev/null +++ b/tests/index.test.ts @@ -0,0 +1,14 @@ +import { Spec } from '@hayspec/spec'; +import * as rawmodel from '../src'; + +const spec = new Spec(); + +spec.test('exposed content', (t) => { + t.true(!!rawmodel.Model); + t.true(!!rawmodel.Prop); + t.true(!!rawmodel.Handler); + t.true(!!rawmodel.Validator); + t.true(!!rawmodel.cast); +}); + +export default spec; diff --git a/tests/index.ts b/tests/index.ts deleted file mode 100644 index 0fd1ff3..0000000 --- a/tests/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import test from 'ava'; -import * as objectschema from '../src'; - -test('exposed content', (t) => { - t.is(!!objectschema.Model, true); - t.is(!!objectschema.Prop, true); -}); diff --git a/tests/models.test.ts b/tests/models.test.ts new file mode 100644 index 0000000..fc05a40 --- /dev/null +++ b/tests/models.test.ts @@ -0,0 +1,1183 @@ +import { Spec } from '@hayspec/spec'; +import { Model, Prop, prop } from '../src'; + +const spec = new Spec(); + +spec.test('decorator `prop` defines model property', (ctx) => { + class User extends Model { + @prop({}) + name: string; + } + const user = new User(); + const descriptor = Object.getOwnPropertyDescriptor(user, 'name'); + ctx.true(user.$props['name'] instanceof Prop); + ctx.is(user.name, null); + ctx.is(typeof descriptor.get, 'function'); + ctx.is(typeof descriptor.set, 'function'); + ctx.true(descriptor.enumerable); + ctx.false(descriptor.configurable); + user.name = 'John'; + ctx.is(user.name, 'John'); +}); + +spec.test('decorator `prop` supports deep type casting', (ctx) => { + class Book extends Model { + @prop({ cast: { handler: 'String' } }) + name: string; + } + class User extends Model { + @prop({ cast: { handler: 'String' } }) + name: string; + @prop({ cast: { handler: Book } }) + book: Book; + @prop({ cast: { handler: Book, array: true } }) + books: Book[]; + } + const book = new Book({ + name: 'Baz', + }); + const user = new User({ + name: 100, + book, + books: [ + book, + { name: 'Zed' }, + ], + }); + ctx.is(user.name, '100'); + ctx.is(user.book.name, 'Baz'); + ctx.true(user.book instanceof Book); + ctx.is(user.books[0].name, 'Baz'); + ctx.true(user.books[0] instanceof Book); + ctx.is(user.books[1].name, 'Zed'); + ctx.true(user.books[1] instanceof Book); + ctx.not(user.book, book); // recreates instance + user.book = book; // preserves instance + ctx.is(user.book, book); +}); + +spec.test('decorator `prop` supports custom setter', (ctx) => { + class User extends Model { + @prop({ + set: (v) => `foo-${v}`, + }) + name: string; + } + const user = new User(); + user.name = 'bar'; + ctx.is(user.name, 'foo-bar'); +}); + +spec.test('decorator `prop` supports custom getter', (ctx) => { + class User extends Model { + @prop({ + get: (v) => `foo-${v}`, + }) + name: string; + } + const user = new User(); + user.name = 'bar'; + ctx.is(user.name, 'foo-bar'); +}); + +spec.test('decorator `prop` supports default value', (ctx) => { + class User extends Model { + @prop({ + defaultValue: 'foo', + }) + name: string; + } + const user = new User(); + ctx.is(user.name, 'foo'); +}); + +spec.test('method `getParent` returns an instance of the parent model', (ctx) => { + class Book extends Model { + @prop() + title: string; + } + class User extends Model { + @prop() + name: string; + @prop({ + cast: { handler: Book }, + }) + book: Book; + @prop({ + cast: { handler: Book, array: true }, + }) + books: Book[]; + } + const user = new User({ + book: { + title: 200, + }, + books: [ + undefined, + { + title: 300, + } + ] + }); + ctx.is(user.getParent(), null); + ctx.is(user.book.getParent(), user); + ctx.is(user.books[1].getParent(), user); +}); + +spec.test('method `getRoot` return the first model in a tree of nested models', (ctx) => { + class Book extends Model { + @prop() + title: string; + } + class User extends Model { + @prop({ + cast: { handler: Book }, + }) + book: Book; + } + const user = new User({ + book: { + title: 200, + }, + }); + ctx.is(user.getRoot(), user); + ctx.is(user.book.getRoot(), user); +}); + +spec.test('method `populate` deeply assignes property data using strategies', (ctx) => { + class Book extends Model { + @prop({ + cast: { handler: 'Number' }, + populatable: ['output'], + }) + id: number; + @prop({ + cast: { handler: 'String' }, + }) + title: string; + @prop({ + cast: { handler: 'String' }, + populatable: ['input'], + }) + description: string; + } + class User extends Model { + @prop({ + cast: { handler: 'Number' }, + populatable: ['output'], + }) + id: number; + @prop({ + cast: { handler: 'String' }, + }) + name: string; + @prop({ + cast: { handler: 'String' }, + populatable: ['input'], + }) + email: string; + @prop({ + cast: { handler: Book }, + populatable: ['output'], + }) + book0: Book; + @prop({ + cast: { handler: Book }, + }) + book1: Book; + @prop({ + cast: { handler: Book, array: true }, + populatable: ['input'], + }) + books: Book[]; + } + const data = { + id: 100, + name: 'John', + email: 'foo@bar.com', + book0: { + id: 200, + title: 'Foo', + description: 'Bar', + }, + book1: undefined, + books: [ + undefined, + { + id: 300, + title: 'Baz', + description: 'Zed', + }, + ], + }; + const book = new Book(); + const user0 = new User(); + const user1 = new User(); + const user2 = new User(); + const user3 = new User(); + user0.populate(null); // should not break + user0.populate(false); // should not break + user0.populate(''); // should not break + user0.populate(true); // should not break + user0.populate(100); // should not break + user0.populate(data); + ctx.is(user0.id, 100); + ctx.is(user0.name, 'John'); + ctx.is(user0.book0.id, 200); + ctx.is(user0.book0.title, 'Foo'); + ctx.is(user0.book1, null); + ctx.is(user0.books[0], null); + ctx.is(user0.books[1].title, 'Baz'); + user1.populate(data, 'input'); + ctx.is(user1.id, null); + ctx.is(user1.name, null); + ctx.is(user1.email, 'foo@bar.com'); + ctx.is(user1.book0, null); + ctx.is(user1.book1, null); + ctx.is(user1.books[0], null); + ctx.is(user1.books[1].id, null); + ctx.is(user1.books[1].title, null); + ctx.is(user1.books[1].description, 'Zed'); + user2.populate(data, 'output'); + ctx.is(user2.id, 100); + ctx.is(user2.name, null); + ctx.is(user2.email, null); + ctx.is(user2.book0.id, 200); + ctx.is(user2.book0.title, null); + ctx.is(user2.book0.description, null); + ctx.is(user2.book1, null); + ctx.is(user2.books, null); + user3.populate({ book0: book, books: [book] }); + ctx.not(user3.book0, book); + ctx.not(user3.books[1], book); +}); + +spec.test('method `serialize` deeply serializes property data using strategies', (ctx) => { + class Book extends Model { + @prop({ + cast: { handler: 'Number' }, + populatable: ['output'], + }) + id: number; + @prop({ + cast: { handler: 'String' }, + }) + title: string; + @prop({ + cast: { handler: 'String' }, + populatable: ['input'], + }) + description: string; + } + class User extends Model { + @prop({ + cast: { handler: 'Number' }, + populatable: ['output'], + }) + id: number; + @prop({ + cast: { handler: 'String' }, + }) + name: string; + @prop({ + cast: { handler: 'String' }, + populatable: ['input'], + }) + email: string; + @prop({ + cast: { handler: Book }, + populatable: ['output'], + }) + book0: Book; + @prop({ + cast: { handler: Book }, + }) + book1: Book; + @prop({ + cast: { handler: Book, array: true }, + populatable: ['input'], + }) + books: Book[]; + } + const data = { + id: 100, + name: 'John', + email: 'foo@bar.com', + book0: { + id: 200, + title: 'Foo', + description: 'Bar', + }, + book1: null, + books: [ + null, + { + id: 300, + title: 'Baz', + description: 'Zed', + }, + ], + }; + const user = new User(data); + const json = user.serialize(); + ctx.deepEqual(json, { + id: 100, + name: 'John', + email: 'foo@bar.com', + book0: { + id: 200, + title: 'Foo', + description: 'Bar', + }, + book1: null, + books: [ + null, + { + id: 300, + title: 'Baz', + description: 'Zed', + }, + ], + }); + ctx.false(json.book0 instanceof Book); + ctx.is(json.books[0], null); + ctx.false(json.books[1] instanceof Book); +}); + +spec.test('method `getProp` returns an instance of a prop at path', (ctx) => { + class Book extends Model { + @prop() + title: string; + } + class User extends Model { + @prop() + name: string; + @prop({ + cast: { handler: Book }, + }) + book: Book; + @prop({ + cast: { handler: Book, array: true }, + }) + books: Book[]; + } + const user = new User({ + name: 'foo', + book: { + title: 'bar' + }, + books: [ + undefined, + { + title: 'baz' + } + ] + }); + ctx.is(user.getProp(['name']).getValue(), 'foo'); + ctx.is(user.getProp('name').getValue(), 'foo'); + ctx.is(user.getProp(['book', 'title']).getValue(), 'bar'); + ctx.is(user.getProp('book', 'title').getValue(), 'bar'); + ctx.is(user.getProp(['books', 1, 'title']).getValue(), 'baz'); + ctx.is(user.getProp('books', 1, 'title').getValue(), 'baz'); + ctx.is(user.getProp(['fake']), undefined); + ctx.is(user.getProp(['fake', 10, 'title']), undefined); + ctx.is(user.getProp(), undefined); +}); + +spec.test('method `hasProp` returns `true` if the prop exists', (ctx) => { + class User extends Model { + @prop() + name: string; + } + const user = new User(); + ctx.is(user.hasProp(['name']), true); + ctx.is(user.hasProp(['book', 'title']), false); +}); + +spec.test('method `flatten` returns an array of props', (ctx) => { + class Book extends Model { + @prop() + title: string; + } + class User extends Model { + @prop() + name: string; + @prop({ + cast: { handler: Book }, + }) + book: Book; + @prop({ + cast: { handler: Book, array: true }, + }) + books: Book[]; + } + const user = new User({ + name: 'foo', + book: { + title: 'bar', + }, + books: [ + undefined, + { + title: 'baz', + }, + ], + }); + ctx.deepEqual(user.flatten().map((f) => f.path), [ + ['name'], + ['book'], + ['book', 'title'], + ['books'], + ['books', 1, 'title'] + ]); + ctx.deepEqual(Object.keys(user.flatten()[0]), ['path', 'prop']); + ctx.deepEqual(user.flatten()[0].path, ['name']); + ctx.is(user.flatten()[0].prop.getValue(), 'foo'); +}); + +spec.test('method `collect` returns an array of results', (ctx) => { + class Book extends Model { + @prop() + title: string; + } + class User extends Model { + @prop() + name: string; + @prop({ + cast: { handler: Book }, + }) + book: Book; + } + const user = new User({ + name: 'foo', + book: { + title: 'bar', + }, + }); + const results = user.collect(({ path }) => path); + ctx.deepEqual(results, [ + ['name'], + ['book'], + ['book', 'title'] + ]); +}); + +spec.test('method `scroll` runs the provided handler on each prop', (ctx) => { + class Book extends Model { + @prop() + title: string; + } + class User extends Model { + @prop() + name: string; + @prop({ + cast: { handler: Book }, + }) + book: Book; + } + const user = new User({ + name: 'foo', + book: { + title: 'bar', + }, + }); + const count = user.scroll(({ path }) => null); + ctx.deepEqual(count, 3); +}); + +spec.test('method `filter` converts a model into serialized object with only keys that pass the test', (ctx) => { + class Book extends Model { + @prop() + title: string; + } + class User extends Model { + @prop() + name: string; + @prop({ + cast: { handler: Book }, + }) + book: Book; + @prop({ + cast: { handler: Book, array: true }, + }) + books: Book[]; + } + const user = new User({ + name: 'foo', + book: { + title: 'bar' + }, + books: [ + undefined, + { + title: 'bar', + }, + ], + }); + const result = user.filter(({ path, prop }) => prop.getValue() !== 'foo'); + ctx.deepEqual(result as any, { + book: { + title: 'bar', + }, + books: [ + null, + { + title: 'bar', + }, + ], + }); +}); + +spec.test('method `reset` sets properties to their default values', (ctx) => { + class Book extends Model { + @prop({ + defaultValue: 'foo', + }) + title: string; + } + class User extends Model { + @prop({ + defaultValue: 'bar', + }) + name: string; + @prop({ + cast: { handler: Book }, + defaultValue: {}, + }) + book: Book; + @prop({ + cast: { handler: Book, array: true }, + defaultValue: [null, {}], + }) + books: Book[]; + } + const user = new User({ + name: 'fake', + book: { + title: 'fake', + }, + books: [ + { + title: 'fake', + }, + ], + }); + user.reset(); + ctx.deepEqual(user.serialize(), { + name: 'bar', + book: { + title: 'foo', + }, + books: [ + null, + { + title: 'foo', + }, + ], + }); +}); + +spec.test('method `fake` sets properties to their fake values', (ctx) => { + class Book extends Model { + @prop({ + fakeValue: 'foo', + }) + title: string; + } + class User extends Model { + @prop({ + fakeValue: 'bar', + }) + name: string; + @prop({ + cast: { handler: Book }, + fakeValue: 'bar', + }) + book: Book; + @prop({ + cast: { handler: Book, array: true }, + fakeValue: [null, {}], + }) + books: Book[]; + } + const user = new User(); + user.fake(); + ctx.deepEqual(user.serialize(), { + name: 'bar', + book: { + title: 'foo', + }, + books: [ + null, + { + title: 'foo', + }, + ], + }); +}); + +spec.test('method `empty` sets properties to `null`', (ctx) => { + class Book extends Model { + @prop({ + defaultValue: 'foo', + }) + title: string; + } + class User extends Model { + @prop({ + defaultValue: 'bar', + }) + name: string; + @prop({ + emptyValue: 'null', + }) + description: string; + @prop({ + cast: { handler: Book }, + defaultValue: {}, + }) + book: Book; + @prop({ + cast: { handler: Book, array: true }, + defaultValue: [null, {}], + }) + books: Book[]; + } + const user = new User({ + name: 'fake', + description: 'fake', + book: { + title: 'fake', + }, + books: [ + { + title: 'fake', + }, + ], + }); + user.empty(); + ctx.deepEqual(user.serialize(), { + name: null, + description: 'null', + book: null, + books: null, + }); +}); + +spec.test('methods `commit()` and `rollback()` manage committed states', (ctx) => { + class Book extends Model { + @prop() + title: string; + } + class User extends Model { + @prop() + name: string; + @prop({ + cast: { handler: Book }, + }) + book: Book; + @prop({ + cast: { handler: Book, array: true }, + }) + books: Book[]; + } + const user = new User({ + name: 'foo', + book: { + title: 'bar', + }, + books: [ + { + title: 'baz', + }, + ], + }); + user.commit(); + ctx.is(user.getProp('name').getInitialValue(), 'foo'); + ctx.is(user.getProp('book', 'title').getInitialValue(), 'bar'); + ctx.is(user.getProp('books', 0, 'title').getInitialValue(), 'baz'); + user.populate({ + name: 'foo-new', + book: { + title: 'bar-new', + }, + books: [ + { + title: 'baz-new', + }, + ], + }); + user.rollback(); + ctx.is(user.getProp('name').getValue(), 'foo'); + ctx.is(user.getProp('book', 'title').getValue(), 'bar'); + ctx.is(user.getProp('books', 0, 'title').getValue(), 'baz'); +}); + +spec.test('method `isEqual` returns `true` when the passing object looks the same', (ctx) => { + class Book extends Model { + @prop() + title: string; + } + class User extends Model { + @prop() + name: string; + @prop({ + cast: { handler: Book }, + }) + book: Book; + @prop({ + cast: { handler: Book, array: true }, + }) + books: Book[]; + } + const data = { + name: 'foo', + book: { + title: 'bar', + }, + books: [ + null, + { + title: 'baz', + }, + ], + }; + ctx.true(new User(data).isEqual(new User(data))); +}); + +spec.test('method `isChanged` returns `true` if at least one prop has been changed', (ctx) => { + class Book extends Model { + @prop() + title: string; + } + class User extends Model { + @prop() + name: string; + @prop({ + cast: { handler: Book }, + }) + book: Book; + @prop({ + cast: { handler: Book, array: true }, + }) + books: Book[]; + } + const data = { + name: 'foo', + book: { + title: 'bar', + }, + books: [ + null, + { + title: 'baz', + }, + ], + }; + const user0 = new User(data); + const user1 = new User(data); + const user2 = new User(data); + const user3 = new User(data); + ctx.false(user0.isChanged()); + user0.name = 'foo-new'; + ctx.true(user0.isChanged()); + user1.book.title = 'bar-new'; + ctx.false(user1.isChanged()); + user2.books[0] = { title: 'baz-new' } as Book; + ctx.false(user2.isChanged()); + user3.books[1].title = 'baz-new'; + ctx.false(user3.isChanged()); +}); + +spec.test('method `applyErrors` sets properties errors', (ctx) => { + class Book extends Model { + @prop() + title: string; + } + class User extends Model { + @prop() + name: string; + @prop({ + cast: { handler: Book }, + }) + book: Book; + @prop({ + cast: { handler: Book, array: true }, + }) + books: Book[]; + } + const user = new User({ + book: {}, + books: [null, {}] + }); + user.applyErrors([ + { path: ['name'], errors: [100] }, + { path: ['book', 'title'], errors: [200, 300] }, + { path: ['books', 1, 'title'], errors: [400] }, + ]); + ctx.deepEqual(user.getProp('name').getErrorCodes(), [100]); + ctx.deepEqual(user.getProp('book', 'title').getErrorCodes(), [200, 300]); + ctx.deepEqual(user.getProp('books', 1, 'title').getErrorCodes(), [400]); +}); + +spec.test('method `collectErrors` returns an array of errors', (ctx) => { + class Book extends Model { + @prop() + title: string; + } + class User extends Model { + @prop() + name: string; + @prop({ + cast: { handler: Book }, + }) + book: Book; + @prop({ + cast: { handler: Book, array: true }, + }) + books: Book[]; + } + const user = new User({ + book: {}, + books: [{}] + }); + user.getProp('name').setErrorCodes(100); + user.getProp('book', 'title').setErrorCodes(200, 300); + user.getProp('books', 0, 'title').setErrorCodes(400); + ctx.deepEqual(user.collectErrors(), [ + { path: ['name'], errors: [100] }, + { path: ['book', 'title'], errors: [200, 300] }, + { path: ['books', 0, 'title'], errors: [400] }, + ]); +}); + +spec.test('method `isValid` tell if model has no errors', async (ctx) => { + class Book extends Model { + @prop() + title: string; + } + class User extends Model { + @prop() + name: string; + @prop({ + cast: { handler: Book }, + }) + book: Book; + @prop({ + cast: { handler: Book, array: true }, + }) + books: Book[]; + } + const user0 = new User({ + book: {}, + books: [null, {}] + }); + const user1 = new User(); + ctx.true(user0.isValid()); + ctx.true(user1.isValid()); + user0.applyErrors([ + { path: ['books', 1, 'title'], errors: [100]}, + ]); + ctx.false(user0.isValid()); +}); + +// test('method `validate` validates props and throws an error', async (ctx) => { +// const validate = [ +// { validator: 'presence', message: 'foo' }, +// { validator: 'presence', code: 999 }, +// ]; +// class Book extends Model { +// constructor(data) { +// super(data); +// this.defineProp('title', { validate }); +// } +// } +// class User extends Model { +// constructor(data) { +// super(data); +// this.defineProp('name', { validate }); +// this.defineProp('book0', { type: Book, validate }); +// this.defineProp('books0', { type: [Book], validate }); +// this.defineProp('book1', { type: Book, validate }); +// this.defineProp('books1', { type: [Book], validate }); +// this.populate(data); +// } +// } +// const user = new User({ +// book1: {}, +// books1: [{}] +// }); +// const errors = [ +// { validator: 'presence', message: 'foo', code: 422 }, +// { validator: 'presence', message: undefined, code: 999 }, +// ]; +// await user.validate({quiet: true}); +// ctx.is(await user.validate().catch(() => false), false); +// ctx.deepEqual(user.collectErrors() as {}, [ +// { path: ['name'], errors }, +// { path: ['book0'], errors }, +// { path: ['books0'], errors }, +// { path: ['book1', 'title'], errors }, +// { path: ['books1', 0, 'title'], errors }, +// ]); +// }); + +// test('method `defineValidator` defines a custom prop validator', async (ctx) => { +// const validator = function (v) { +// return this.value === 'cool' && v === 'cool'; +// }; +// const validate = [{ +// validator: 'coolness', +// message: 'foo' +// }]; +// class Book extends Model { +// constructor(data) { +// super(data); +// this.defineValidator('coolness', validator); +// this.defineProp('title', { validate }); +// } +// } +// class User extends Model { +// constructor(data) { +// super(data); +// this.defineValidator('coolness', validator); +// this.defineProp('name', { validate }); +// this.defineProp('book', { type: Book, validate }); +// this.populate(data); +// } +// } +// const user = new User({ +// book: {} +// }); +// const errors = [{ validator: 'coolness', message: 'foo', code: 422 }]; +// await user.validate({quiet: true}); +// ctx.deepEqual(user.collectErrors() as {}, [ +// {path: ['name'], errors}, +// {path: ['book'], errors}, +// {path: ['book', 'title'], errors}, +// ]); +// }); + +// test('method `failFast` configures validator to stop validating prop on the first error', async (ctx) => { +// const validate = [ +// { validator: 'presence', message: 'foo' }, +// { validator: 'presence', message: 'foo' }, +// ]; +// class Book extends Model { +// constructor(data) { +// super(data); +// this.failFast(); +// this.defineProp('title', { validate }); +// } +// } +// class User extends Model { +// constructor(data) { +// super(data); +// this.failFast(); +// this.defineProp('name', { validate }); +// this.defineProp('book', { type: Book }); +// this.populate(data); +// } +// } +// const user = new User({ +// book: {} +// }); +// const errors = [{ validator: 'presence', message: 'foo', code: 422 }]; +// await user.validate({ quiet: true }); +// ctx.is(user.getProp('name').errors.length, 1); +// ctx.is(user.getProp('book', 'title').errors.length, 1); +// }); + +// test('method `invalidate` clears props errors', async (ctx) => { +// class Book extends Model { +// constructor(data) { +// super(data); +// this.defineProp('title'); +// } +// } +// class User extends Model { +// constructor(data) { +// super(data); +// this.defineProp('name'); +// this.defineProp('book', { type: Book }); +// this.defineProp('books', { type: [Book] }); +// this.populate(data); +// } +// } +// const user = new User({ +// book: {}, +// books: [null, {}] +// }); +// user.applyErrors([ +// { path: ['name'], errors: [{ message: 'foo'}] }, +// { path: ['book', 'title'], errors: [{ message: 'bar'}] }, +// { path: ['books', 1, 'title'], errors: [{ message: 'baz'}] }, +// ]); +// user.invalidate(); +// ctx.deepEqual(user.getProp('name').errors, []); +// ctx.deepEqual(user.getProp('book', 'title').errors, []); +// ctx.deepEqual(user.getProp('books', 1, 'title').errors, []); +// }); + +// test('method `clone` returns an exact copy of the original', (ctx) => { +// class Book extends Model { +// title: string; +// constructor(data?) { +// super(data); +// this.defineProp('title'); +// this.commit(); +// } +// } +// class User extends Model { +// name: string; +// book: Book; +// books: Book[]; +// constructor(data?) { +// super(data); +// this.defineProp('name'); +// this.defineProp('book', { type: Book }); +// this.defineProp('books', { type: [Book] }); +// this.populate(data); +// this.commit(); +// } +// } +// const parent = new Book(); +// const user = new User({ +// parent, // fake parent +// name: 'foo', +// book: { +// title: 'bar' +// }, +// books: [ +// null, +// { +// title: 'baz' +// } +// ] +// }); +// const clone0 = user.clone(); +// const clone1 = user.clone({book: { title: 'foo' }}); +// ctx.is(clone0 !== user, true); +// ctx.is(clone0.equals(user), true); +// ctx.is(clone0.book.parent, clone0); +// ctx.is(clone0.parent, parent); +// ctx.is(clone0.parent, parent); +// ctx.is(clone1.book.title, 'foo'); +// }); + +// test('method `handle` handles prop-related errors', async (ctx) => { +// const handle = [{ +// handler: 'block', +// message: '%{foo}', +// block: async () => true, +// foo: 'foo' +// }]; +// class Book extends Model { +// constructor(data) { +// super(data); +// this.defineProp('title', { handle }); +// } +// } +// class Country extends Model { +// constructor(data) { +// super(data); +// this.defineProp('code'); // this prop is nested and without handler +// this.populate(data); +// } +// } +// class User extends Model { +// constructor(data) { +// super(data); +// this.defineProp('name', { handle }); +// this.defineProp('book0', { type: Book, handle }); +// this.defineProp('books0', { type: [Book], handle }); +// this.defineProp('book1', { type: Book }); +// this.defineProp('books1', { type: [Book] }); +// this.defineProp('country', { type: [Country] }); +// this.populate(data); +// } +// } +// const user = new User({ +// book1: {}, +// books1: [{}], +// country: {} +// }); +// const problem0 = new Error(); +// const problem1 = new Error() as any; problem1.code = 422; +// const errors = [{ handler: 'block', message: 'foo', code: 422 }]; +// ctx.is(await user.handle(problem0, { quiet: false }).catch(() => false), false); +// ctx.is(await user.handle(problem0).then(() => true), true); +// ctx.is(await user.handle(problem1, { quiet: false }).then(() => true), true); +// await user.handle(problem0); +// ctx.deepEqual(user.collectErrors() as {}, [ +// { path: ['name'], errors }, +// { path: ['book0'], errors }, +// { path: ['books0'], errors }, +// { path: ['book1', 'title'], errors }, +// { path: ['books1', 0, 'title'], errors }, +// ]); +// }); + +// test('method `defineHandler` defines a custom prop handler', async (ctx) => { +// const handler = function (e) { +// return e.message === 'cool'; +// }; +// const handle = [{ +// handler: 'coolness', +// message: '%{foo}', +// foo: 'foo' +// }]; +// class Book extends Model { +// constructor(data) { +// super(data); +// this.defineHandler('coolness', handler); +// this.defineProp('title', { handle }); +// } +// } +// class User extends Model { +// constructor(data) { +// super(data); +// this.defineHandler('coolness', handler); +// this.defineProp('name', { handle }); +// this.defineProp('book', { type: Book }); +// this.defineProp('books', { type: [Book] }); +// this.populate(data); +// } +// } +// const user = new User({ +// book: {}, +// books: [{}] +// }); +// const problem = new Error('cool'); +// const errors = [{ handler: 'coolness', message: 'foo', code: 422 }]; +// await user.handle(problem); +// ctx.deepEqual(user.collectErrors() as {}, [ +// { path: ['name'], errors }, +// { path: ['book', 'title'], errors }, +// { path: ['books', 0, 'title'], errors }, +// ]); +// }); + +// test('property `enumerable` handles prop visibility', (ctx) => { +// class User0 extends Model { +// name: string; +// constructor(data) { +// super(data); +// this.defineProp('name', { enumerable: true }); +// } +// } +// class User1 extends Model { +// name: string; +// constructor(data) { +// super(data); +// this.defineProp('name', { enumerable: false }); +// } +// } +// const user0 = new User0({}); +// const user1 = new User1({}); +// ctx.deepEqual(Object.keys(user0), ['name']); +// ctx.deepEqual(Object.keys(user1), []); +// }); + + +export default spec; diff --git a/tests/models.ts b/tests/models.ts deleted file mode 100644 index b6754d7..0000000 --- a/tests/models.ts +++ /dev/null @@ -1,1080 +0,0 @@ -import test from 'ava'; -import { ObjectId } from 'mongodb'; -import { Model, Prop } from '../src'; - -test('method `defineProp` initializes nullified enumerable property', (t) => { - const user = new class User extends Model { - name: string; - constructor() { - super(); - this.defineProp('name'); - } - }; - const descriptor = Object.getOwnPropertyDescriptor(user, 'name'); - t.is(typeof descriptor.get, 'function'); - t.is(typeof descriptor.set, 'function'); - t.is(descriptor.enumerable, true); - t.is(descriptor.configurable, true); - t.is(user.name, null); -}); - -test('method `defineType` defines a custom data type', (t) => { - const user = new class User extends Model { - name0: string; - name1: string[]; - constructor() { - super(); - this.defineType('cool', (v) => `${v}-cool`); - this.defineProp('name0', { type: 'cool' }); - this.defineProp('name1', { type: ['cool'] }); - } - }; - user.name0 = 'foo'; - user.name1 = ['foo']; - t.is(user.name0, 'foo-cool'); - t.deepEqual(user.name1, ['foo-cool']); -}); - -test('method `populate` deeply assignes data', (t) => { - class Book extends Model { - id: number; - title: string; - description: string; - constructor(data = {}) { - super(data); - this.defineProp('id', { type: 'Integer', populatable: ['output'] }); - this.defineProp('title', { type: 'String'}); - this.defineProp('description', { type: 'String', populatable: ['input'] }); - } - } - class User extends Model { - id: number; - name: string; - email: string; - book0: Book; - book1: Book; - books: Book[]; - constructor(data = {}) { - super(data); - this.defineProp('id', { type: 'Integer', populatable: ['output'] }); - this.defineProp('name', { type: 'String'}); - this.defineProp('email', { type: 'String', populatable: ['input'] }); - this.defineProp('book0', { type: Book, populatable: ['output'] }); - this.defineProp('book1', { type: Book}); - this.defineProp('books', { type: [Book], populatable: ['input'] }); - this.populate(data); - } - } - const data = { - id: '100', - name: 100, - email: 'foo@bar.com', - book0: { - id: '200', - title: 200, - description: 'fake', - }, - book1: undefined, - books: [ - undefined, - { - id: '300', - title: 300, - description: 'fake', - }, - ], - }; - const user0 = new User(); - const user1 = new User(); - const user2 = new User(); - user0.populate(null); // should not break - user0.populate(false); // should not break - user0.populate(''); // should not break - user0.populate(true); // should not break - user0.populate(100); // should not break - user0.populate(data); - user1.populate(data, 'input'); - user2.populate(data, 'output'); - t.is(user0.id, 100); - t.is(user0.name, '100'); - t.is(user0.book0.id, 200); - t.is(user0.book0.title, '200'); - t.is(user0.book1, null); - t.is(user0.books[0], null); - t.is(user0.books[1].title, '300'); - t.is(user1.id, null); - t.is(user1.name, null); - t.is(user1.email, 'foo@bar.com'); - t.is(user1.book0, null); - t.is(user1.book1, null); - t.is(user1.books[0], null); - t.is(user1.books[1].id, null); - t.is(user1.books[1].title, null); - t.is(user1.books[1].description, 'fake'); - t.is(user2.id, 100); - t.is(user2.name, null); - t.is(user2.email, null); - t.is(user2.book0.id, 200); - t.is(user2.book0.title, null); - t.is(user2.book0.description, null); - t.is(user2.book1, null); - t.is(user2.books, null); -}); - -test('property `parent` holds an instance of a parent model', (t) => { - class Book extends Model { - title: string; - constructor(data) { - super(data); - this.defineProp('title', { type: 'String' }); - } - } - class User extends Model { - name: string; - book: Book; - books: Book[]; - constructor(data) { - super(data); - this.defineProp('name', { type: 'String' }); - this.defineProp('book', { type: Book }); - this.defineProp('books', { type: [Book] }); - this.populate(data); - } - } - const user = new User({ - book: { - title: 200 - }, - books: [ - undefined, - { - title: 300 - } - ] - }); - t.is(user.parent, null); - t.is(user.propertyIsEnumerable('parent'), false); - t.is(user.book.parent, user); - t.is(user.books[1].parent, user); -}); - -test('property `root` return the first model in a tree of nested models', (t) => { - class Book extends Model { - title: string; - constructor(data) { - super(data); - this.defineProp('title'); - } - } - class User extends Model { - book: Book; - constructor(data) { - super(data); - this.defineProp('book', { type: Book }); - this.populate(data); - } - } - const user = new User({ - book: { - title: 200 - } - }); - t.is(user.root, user); - t.is(user.book.root, user); -}); - -test('method `getProp` returns an instance of a prop at path', (t) => { - class Book extends Model { - constructor(data) { - super(data); - this.defineProp('title', { type: 'String' }); - } - } - class User extends Model { - constructor(data) { - super(data); - this.defineProp('name', { type: 'String' }); - this.defineProp('book', { type: Book }); - this.defineProp('books', { type: [Book] }); - this.populate(data); - } - } - const user = new User({ - name: 'foo', - book: { - title: 'bar' - }, - books: [ - undefined, - { - title: 'baz' - } - ] - }); - t.is(user.getProp(['name']).value, 'foo'); - t.is(user.getProp('name').value, 'foo'); - t.is(user.getProp(['book', 'title']).value, 'bar'); - t.is(user.getProp('book', 'title').value, 'bar'); - t.is(user.getProp(['books', 1, 'title']).value, 'baz'); - t.is(user.getProp('books', 1, 'title').value, 'baz'); - t.is(user.getProp(['fake']), undefined); - t.is(user.getProp(['fake', 10, 'title']), undefined); - t.is(user.getProp(), undefined); -}); - -test('method `hasProp` returns `true` if the prop exists', (t) => { - class User extends Model { - constructor(data = {}) { - super(data); - this.defineProp('name', { type: 'String' }); - } - } - const user = new User(); - t.is(user.hasProp(['name']), true); - t.is(user.hasProp(['book', 'title']), false); -}); - -test('method `serialize` converts model into a serialized data object', (t) => { - class Book extends Model { - constructor(data) { - super(data); - this.defineProp('title', { type: 'String' }); - this.defineProp('description', { serializable: ['output'] }); // only for these strategies - } - } - class User extends Model { - constructor(data) { - super(data); - this.defineProp('id', { type: (v) => new Object(v), serializable: [] }); // never - this.defineProp('name', { type: 'String', serializable: null }); - this.defineProp('description', { serializable: ['input', 'output'] }); // only for these strategies - this.defineProp('book', { type: Book, serializable: ['output'] }); - this.defineProp('books', { type: [Book] }); - this.populate(data); - } - } - const user = new User({ - id: new Object('59efbadde01a49055b39711f'), - name: 'foo', - description: 'des', - book: { - title: 'bar' - }, - books: [ - undefined, - { - title: 'baz' - } - ] - }); - t.deepEqual(user.serialize(), { - id: new Object('59efbadde01a49055b39711f'), - name: 'foo', - description: 'des', - book: { - title: 'bar', - description: null, - }, - books: [ - null, - { - title: 'baz', - description: null, - }, - ], - }); - t.deepEqual(user.serialize('input'), { - description: 'des', - }); - t.deepEqual(user.serialize('output'), { - description: 'des', - book: { - description: null, - }, - }); -}); - -test('method `flatten` returns an array of props', async (t) => { - class Book extends Model { - constructor(data) { - super(data); - this.defineProp('title', { type: 'String' }); - } - } - class User extends Model { - constructor(data) { - super(data); - this.defineProp('name', { type: 'String' }); - this.defineProp('book', { type: Book }); - this.defineProp('books', { type: [Book] }); - this.populate(data); - } - } - const user = new User({ - name: 'foo', - book: { - title: 'bar' - }, - books: [ - undefined, - { - title: 'baz' - } - ] - }); - t.deepEqual(user.flatten().map((f) => f.path), [ - ['name'], - ['book'], - ['book', 'title'], - ['books'], - ['books', 1, 'title'] - ]); - t.deepEqual(Object.keys(user.flatten()[0]), ['path', 'prop']); - t.deepEqual(user.flatten()[0].path, ['name']); - t.is(user.flatten()[0].prop.value, 'foo'); -}); - -test('method `collect` returns an array of results', (t) => { - class Book extends Model { - constructor(data) { - super(data); - this.defineProp('title', { type: 'String' }); - } - } - class User extends Model { - constructor(data) { - super(data); - this.defineProp('name', { type: 'String' }); - this.defineProp('book', { type: Book }); - this.populate(data); - } - } - const user = new User({ - name: 'foo', - book: { - title: 'bar' - } - }); - const results = user.collect(({ path }) => path); - t.deepEqual(results, [ - ['name'], - ['book'], - ['book', 'title'] - ]); -}); - -test('method `scroll` runs the provided handler on each prop', (t) => { - class Book extends Model { - constructor(data) { - super(data); - this.defineProp('title', { type: 'String' }); - } - } - class User extends Model { - constructor(data) { - super(data); - this.defineProp('name', { type: 'String' }); - this.defineProp('book', { type: Book }); - this.populate(data); - } - } - const user = new User({ - name: 'foo', - book: { - title: 'bar' - } - }); - const count = user.scroll(({ path }) => null); - t.deepEqual(count, 3); -}); - -test('method `filter` converts a model into serialized object with only keys that pass the test', (t) => { - class Book extends Model { - constructor(data) { - super(data); - this.defineProp('title', { type: 'String' }); - } - } - class User extends Model { - constructor(data) { - super(data); - this.defineProp('name', { type: 'String' }); - this.defineProp('book', { type: Book }); - this.defineProp('books', { type: [Book] }); - this.populate(data); - } - } - const user = new User({ - name: 'foo', - book: { - title: 'bar' - }, - books: [ - undefined, - { - title: 'bar' - } - ] - }); - const result = user.filter(({ path, prop }) => prop.value !== 'foo'); - t.deepEqual(result as any, { - book: { - title: 'bar', - }, - books: [ - null, - { - title: 'bar', - }, - ], - }); -}); - -test('method `reset` sets props to their default values', (t) => { - class Book extends Model { - constructor(data) { - super(data); - this.defineProp('title', { defaultValue: 'foo' }); - } - } - class User extends Model { - constructor(data) { - super(data); - this.defineProp('name', { defaultValue: 'bar' }); - this.defineProp('book', { type: Book, defaultValue: {} }); - this.defineProp('books', { type: [Book], defaultValue: [null, {}] }); - this.populate(data); - } - } - const user = new User({ - name: 'fake', - book: { - title: 'fake', - }, - books: [ - { - title: 'fake', - }, - ], - }); - user.reset(); - t.deepEqual(user.serialize(), { - name: 'bar', - book: { - title: 'foo', - }, - books: [ - null, - { - title: 'foo', - }, - ], - }); -}); - -test('method `fake` sets props to their fake values', (t) => { - class Book extends Model { - constructor(data) { - super(data); - this.defineProp('title', { fakeValue: 'foo' }); - } - } - class User extends Model { - constructor(data = {}) { - super(); - this.defineProp('name', { fakeValue: 'bar' }); - this.defineProp('book', { type: Book, defaultValue: {} }); - this.defineProp('books', { type: [Book], defaultValue: [null, {}] }); - this.populate(data); - } - } - const user = new User(); - user.fake(); - t.deepEqual(user.serialize(), { - name: 'bar', - book: { - title: 'foo' - }, - books: [ - null, - { - title: 'foo' - } - ] - }); -}); - -test('method `clear` sets props to `null`', (t) => { - class Book extends Model { - constructor(data) { - super(data); - this.defineProp('title', { defaultValue: 'foo' }); - } - } - class User extends Model { - constructor(data) { - super(data); - this.defineProp('name', { defaultValue: 'bar' }); - this.defineProp('description', { nullValue: 'null' }); - this.defineProp('book', { type: Book, defaultValue: {} }); - this.defineProp('books', { type: [Book], defaultValue: [null, {}] }); - this.populate(data); - } - } - const user = new User({ - name: 'fake', - description: 'fake', - book: { - title: 'fake', - }, - books: [ - { - title: 'fake', - } - ] - }); - user.clear(); - t.deepEqual(user.serialize(), { - name: null, - description: 'null', - book: null, - books: null - }); -}); - -test('methods `commit()` and `rollback()` manage committed states', (t) => { - class Book extends Model { - constructor(data) { - super(data); - this.defineProp('title'); - } - } - class User extends Model { - constructor(data) { - super(data); - this.defineProp('name'); - this.defineProp('book', { type: Book }); - this.defineProp('books', { type: [Book] }); - this.populate(data); - } - } - const user = new User({ - name: 'foo', - book: { - title: 'bar' - }, - books: [ - { - title: 'baz' - } - ] - }); - user.commit(); - t.is(user.getProp('name').initialValue, 'foo'); - t.is(user.getProp('book', 'title').initialValue, 'bar'); - t.is(user.getProp('books', 0, 'title').initialValue, 'baz'); - user.populate({ - name: 'foo-new', - book: { - title: 'bar-new', - }, - books: [ - { - title: 'baz-new', - }, - ], - }); - user.rollback(); - t.is(user.getProp('name').value, 'foo'); - t.is(user.getProp('book', 'title').value, 'bar'); - t.is(user.getProp('books', 0, 'title').value, 'baz'); -}); - -test('method `equals` returns `true` when the passing object looks the same', (t) => { - class Book extends Model { - constructor(data) { - super(data); - this.defineProp('title'); - } - } - class User extends Model { - constructor(data) { - super(data); - this.defineProp('name'); - this.defineProp('book', { type: Book }); - this.defineProp('books', { type: [Book] }); - this.populate(data); - } - } - const data = { - name: 'foo', - book: { - title: 'bar', - }, - books: [ - null, - { - title: 'baz', - } - ] - }; - t.is(new User(data).equals(new User(data)), true); -}); - -test('method `isChanged` returns `true` if at least one prop has been changed', (t) => { - class Book extends Model { - title: string; - constructor(data) { - super(data); - this.defineProp('title'); - } - } - class User extends Model { - name: string; - book: Book; - books: Book[]; - constructor(data) { - super(data); - this.defineProp('name'); - this.defineProp('book', { type: Book }); - this.defineProp('books', { type: [Book] }); - this.populate(data); - this.commit(); - } - } - const data = { - name: 'foo', - book: { - title: 'bar', - }, - books: [ - null, - { - title: 'baz', - }, - ], - }; - const user0 = new User(data); - const user1 = new User(data); - const user2 = new User(data); - const user3 = new User(data); - t.is(user0.isChanged(), false); - user0.name = 'foo-new'; - user1.book.title = 'bar-new'; - user2.books[0] = { title: 'baz-new' } as Book; - user3.books[1].title = 'baz-new'; - t.is(user0.isChanged(), true); - t.is(user1.isChanged(), true); - t.is(user2.isChanged(), true); - t.is(user3.isChanged(), true); -}); - -test('method `isNested` returns `true` if nested props exist', (t) => { - class Book extends Model { - constructor(data) { - super(data); - this.defineProp('title'); - } - } - class User extends Model { - constructor(data = {}) { - super(); - this.defineProp('name'); - this.defineProp('books', { type: [Book] }); - this.populate(data); - } - } - const user = new User(); - t.is(user.isNested(), true); -}); - -test('method `collectErrors` returns an array of prop errors', (t) => { - class Book extends Model { - constructor(data) { - super(data); - this.defineProp('title'); - } - } - class User extends Model { - constructor(data) { - super(data); - this.defineProp('name'); - this.defineProp('book', { type: Book }); - this.defineProp('books', { type: [Book] }); - this.populate(data); - } - } - const user = new User({ - book: {}, - books: [{}] - }); - user.getProp('name').errors = [{ message: 'foo' }]; - user.getProp('book', 'title').errors = [{ message: 'bar' }]; - user.getProp('books', 0, 'title').errors = [{ message: 'baz' }]; - t.deepEqual(user.collectErrors(), [ - { path: ['name'], errors: [{ message: 'foo' }] }, - { path: ['book', 'title'], errors: [{ message: 'bar' }] }, - { path: ['books', 0, 'title'], errors: [{ message: 'baz' }] }, - ]); -}); - -test('method `applyErrors` sets props errors', (t) => { - class Book extends Model { - constructor(data) { - super(data); - this.defineProp('title'); - } - } - class User extends Model { - constructor(data) { - super(data); - this.defineProp('name'); - this.defineProp('book', { type: Book }); - this.defineProp('books', { type: [Book] }); - this.populate(data); - } - } - const user = new User({ - book: {}, - books: [null, {}] - }); - - user.applyErrors([ - { path: ['name'], errors: [{ message: 'foo' }] }, - { path: ['book', 'title'], errors: [{ message: 'bar' }] }, - { path: ['books', 1, 'title'], errors: [{ message: 'baz' }] }, - ]); - t.deepEqual(user.getProp('name').errors, [{ message: 'foo' }]); - t.deepEqual(user.getProp('book', 'title').errors, [{ message: 'bar' }]); - t.deepEqual(user.getProp('books', 1, 'title').errors, [{ message: 'baz' }]); -}); - -test('methods `isValid` and `hasErrors` tell if errors exist', async (t) => { - class Book extends Model { - constructor(data) { - super(data); - this.defineProp('title'); - } - } - class User extends Model { - constructor(data?) { - super(data); - this.defineProp('name'); - this.defineProp('book', { type: Book }); - this.defineProp('books', { type: [Book] }); - this.populate(data); - } - } - const user0 = new User({ - book: {}, - books: [null, {}] - }); - const user1 = new User(); - t.is(user0.hasErrors(), false); - t.is(user1.hasErrors(), false); - t.is(user0.isValid(), true); - t.is(user1.isValid(), true); - user0.applyErrors([ - { path: ['books', 1, 'title'], errors: [{ message: 'baz' }]}, - ]); - t.is(user0.hasErrors(), true); - t.is(user0.isValid(), false); -}); - -test('method `validate` validates props and throws an error', async (t) => { - const validate = [ - { validator: 'presence', message: 'foo' }, - { validator: 'presence', code: 999 }, - ]; - class Book extends Model { - constructor(data) { - super(data); - this.defineProp('title', { validate }); - } - } - class User extends Model { - constructor(data) { - super(data); - this.defineProp('name', { validate }); - this.defineProp('book0', { type: Book, validate }); - this.defineProp('books0', { type: [Book], validate }); - this.defineProp('book1', { type: Book, validate }); - this.defineProp('books1', { type: [Book], validate }); - this.populate(data); - } - } - const user = new User({ - book1: {}, - books1: [{}] - }); - const errors = [ - { validator: 'presence', message: 'foo', code: 422 }, - { validator: 'presence', message: undefined, code: 999 }, - ]; - await user.validate({quiet: true}); - t.is(await user.validate().catch(() => false), false); - t.deepEqual(user.collectErrors() as {}, [ - { path: ['name'], errors }, - { path: ['book0'], errors }, - { path: ['books0'], errors }, - { path: ['book1', 'title'], errors }, - { path: ['books1', 0, 'title'], errors }, - ]); -}); - -test('method `defineValidator` defines a custom prop validator', async (t) => { - const validator = function (v) { - return this.value === 'cool' && v === 'cool'; - }; - const validate = [{ - validator: 'coolness', - message: 'foo' - }]; - class Book extends Model { - constructor(data) { - super(data); - this.defineValidator('coolness', validator); - this.defineProp('title', { validate }); - } - } - class User extends Model { - constructor(data) { - super(data); - this.defineValidator('coolness', validator); - this.defineProp('name', { validate }); - this.defineProp('book', { type: Book, validate }); - this.populate(data); - } - } - const user = new User({ - book: {} - }); - const errors = [{ validator: 'coolness', message: 'foo', code: 422 }]; - await user.validate({quiet: true}); - t.deepEqual(user.collectErrors() as {}, [ - {path: ['name'], errors}, - {path: ['book'], errors}, - {path: ['book', 'title'], errors}, - ]); -}); - -test('method `failFast` configures validator to stop validating prop on the first error', async (t) => { - const validate = [ - { validator: 'presence', message: 'foo' }, - { validator: 'presence', message: 'foo' }, - ]; - class Book extends Model { - constructor(data) { - super(data); - this.failFast(); - this.defineProp('title', { validate }); - } - } - class User extends Model { - constructor(data) { - super(data); - this.failFast(); - this.defineProp('name', { validate }); - this.defineProp('book', { type: Book }); - this.populate(data); - } - } - const user = new User({ - book: {} - }); - const errors = [{ validator: 'presence', message: 'foo', code: 422 }]; - await user.validate({ quiet: true }); - t.is(user.getProp('name').errors.length, 1); - t.is(user.getProp('book', 'title').errors.length, 1); -}); - -test('method `invalidate` clears props errors', async (t) => { - class Book extends Model { - constructor(data) { - super(data); - this.defineProp('title'); - } - } - class User extends Model { - constructor(data) { - super(data); - this.defineProp('name'); - this.defineProp('book', { type: Book }); - this.defineProp('books', { type: [Book] }); - this.populate(data); - } - } - const user = new User({ - book: {}, - books: [null, {}] - }); - user.applyErrors([ - { path: ['name'], errors: [{ message: 'foo'}] }, - { path: ['book', 'title'], errors: [{ message: 'bar'}] }, - { path: ['books', 1, 'title'], errors: [{ message: 'baz'}] }, - ]); - user.invalidate(); - t.deepEqual(user.getProp('name').errors, []); - t.deepEqual(user.getProp('book', 'title').errors, []); - t.deepEqual(user.getProp('books', 1, 'title').errors, []); -}); - -test('method `clone` returns an exact copy of the original', (t) => { - class Book extends Model { - title: string; - constructor(data?) { - super(data); - this.defineProp('title'); - this.commit(); - } - } - class User extends Model { - name: string; - book: Book; - books: Book[]; - constructor(data?) { - super(data); - this.defineProp('name'); - this.defineProp('book', { type: Book }); - this.defineProp('books', { type: [Book] }); - this.populate(data); - this.commit(); - } - } - const parent = new Book(); - const user = new User({ - parent, // fake parent - name: 'foo', - book: { - title: 'bar' - }, - books: [ - null, - { - title: 'baz' - } - ] - }); - const clone0 = user.clone(); - const clone1 = user.clone({book: { title: 'foo' }}); - t.is(clone0 !== user, true); - t.is(clone0.equals(user), true); - t.is(clone0.book.parent, clone0); - t.is(clone0.parent, parent); - t.is(clone0.parent, parent); - t.is(clone1.book.title, 'foo'); -}); - -test('method `handle` handles prop-related errors', async (t) => { - const handle = [{ - handler: 'block', - message: '%{foo}', - block: async () => true, - foo: 'foo' - }]; - class Book extends Model { - constructor(data) { - super(data); - this.defineProp('title', { handle }); - } - } - class Country extends Model { - constructor(data) { - super(data); - this.defineProp('code'); // this prop is nested and without handler - this.populate(data); - } - } - class User extends Model { - constructor(data) { - super(data); - this.defineProp('name', { handle }); - this.defineProp('book0', { type: Book, handle }); - this.defineProp('books0', { type: [Book], handle }); - this.defineProp('book1', { type: Book }); - this.defineProp('books1', { type: [Book] }); - this.defineProp('country', { type: [Country] }); - this.populate(data); - } - } - const user = new User({ - book1: {}, - books1: [{}], - country: {} - }); - const problem0 = new Error(); - const problem1 = new Error() as any; problem1.code = 422; - const errors = [{ handler: 'block', message: 'foo', code: 422 }]; - t.is(await user.handle(problem0, { quiet: false }).catch(() => false), false); - t.is(await user.handle(problem0).then(() => true), true); - t.is(await user.handle(problem1, { quiet: false }).then(() => true), true); - await user.handle(problem0); - t.deepEqual(user.collectErrors() as {}, [ - { path: ['name'], errors }, - { path: ['book0'], errors }, - { path: ['books0'], errors }, - { path: ['book1', 'title'], errors }, - { path: ['books1', 0, 'title'], errors }, - ]); -}); - -test('method `defineHandler` defines a custom prop handler', async (t) => { - const handler = function (e) { - return e.message === 'cool'; - }; - const handle = [{ - handler: 'coolness', - message: '%{foo}', - foo: 'foo' - }]; - class Book extends Model { - constructor(data) { - super(data); - this.defineHandler('coolness', handler); - this.defineProp('title', { handle }); - } - } - class User extends Model { - constructor(data) { - super(data); - this.defineHandler('coolness', handler); - this.defineProp('name', { handle }); - this.defineProp('book', { type: Book }); - this.defineProp('books', { type: [Book] }); - this.populate(data); - } - } - const user = new User({ - book: {}, - books: [{}] - }); - const problem = new Error('cool'); - const errors = [{ handler: 'coolness', message: 'foo', code: 422 }]; - await user.handle(problem); - t.deepEqual(user.collectErrors() as {}, [ - { path: ['name'], errors }, - { path: ['book', 'title'], errors }, - { path: ['books', 0, 'title'], errors }, - ]); -}); - -test('property `enumerable` handles prop visibility', (t) => { - class User0 extends Model { - name: string; - constructor(data) { - super(data); - this.defineProp('name', { enumerable: true }); - } - } - class User1 extends Model { - name: string; - constructor(data) { - super(data); - this.defineProp('name', { enumerable: false }); - } - } - const user0 = new User0({}); - const user1 = new User1({}); - t.deepEqual(Object.keys(user0), ['name']); - t.deepEqual(Object.keys(user1), []); -}); diff --git a/tests/parsing.test.ts b/tests/parsing.test.ts new file mode 100644 index 0000000..2e45124 --- /dev/null +++ b/tests/parsing.test.ts @@ -0,0 +1,47 @@ +import { Spec } from '@hayspec/spec'; +import { cast } from '../src'; + +const spec = new Spec(); + +spec.test('cast (Any type)', (ctx) => { + ctx.is(cast(100, null, false), 100); + ctx.is(cast('100', null, false), '100'); + ctx.deepEqual(cast(100, null, true), [100]); + ctx.deepEqual(cast('100', null, true), ['100']); + ctx.deepEqual(cast(['100', 200], null, true), ['100', 200]); +}); + +spec.test('cast (general type)', (ctx) => { + ctx.is(cast(100, 'String', false), '100'); + ctx.is(cast('true', 'Boolean', false), true); + ctx.is(cast('10.13', 'Integer', false), 10); + ctx.is(cast('10.13', 'Float', false), 10.13); + ctx.is(cast('10.13', 'Number', false), 10.13); + ctx.deepEqual(cast(100000, 'Date', false), new Date(100000)); + ctx.deepEqual(cast('john', null, true), ['john']); + ctx.deepEqual(cast(100, 'String', true), ['100']); + ctx.deepEqual(cast([100], 'String', true), ['100']); + ctx.deepEqual(cast('true', 'Boolean', true), [true]); + ctx.deepEqual(cast(['true'], 'Boolean', true), [true]); + ctx.deepEqual(cast('10.13', 'Integer', true), [10]); + ctx.deepEqual(cast(['10.13'], 'Integer', true), [10]); + ctx.deepEqual(cast('10.13', 'Float', true), [10.13]); + ctx.deepEqual(cast(['10.13'], 'Float', true), [10.13]); + ctx.deepEqual(cast('10.13', 'Number', true), [10.13]); + ctx.deepEqual(cast(['10.13'], 'Number', true), [10.13]); + ctx.deepEqual(cast(100000, 'Date', true), [new Date(100000)]); + ctx.deepEqual(cast([100000], 'Date', true), [new Date(100000)]); +}); + +spec.test('cast (null type)', (ctx) => { + ctx.deepEqual(cast(100, null, false), 100); + ctx.deepEqual(cast(100, undefined, false), 100); +}); + +spec.test('cast (custom type)', (ctx) => { + ctx.deepEqual(cast('foo', (v) => `${v}-bar`, false), 'foo-bar'); + ctx.deepEqual(cast('foo', (v) => `${v}-bar`, true), ['foo-bar']); + ctx.deepEqual(cast(['foo0', 'foo1'], (v) => `${v}-bar`, true), ['foo0-bar', 'foo1-bar']); +}); + +export default spec; diff --git a/tests/performance.ts b/tests/performance.ts deleted file mode 100644 index a563f77..0000000 --- a/tests/performance.ts +++ /dev/null @@ -1,309 +0,0 @@ -import { ObjectId } from 'mongodb'; -import test from 'ava'; -import { Model } from '../src'; - -/** - * Post model supporting 2-levels threaded list. - */ -export class Post extends Model { - public _id: ObjectId; - public _deletedAt: Date; - public id: ObjectId; - public courseId: ObjectId; - public userId: ObjectId; - public postId: ObjectId; - public message: string; - public createdAt: Date; - public author: Author; - public answers: Post[]; - - /** - * Class constructor. - * @param data Input data. - */ - constructor(data?: any) { - super(data); - this.defineObjectIdType(); - this.defineIdProps(); - this.defineDeletedAtProp(); - this.defineCourseIdProp(); - this.defineUserIdProp(); - this.definePostIdProp(); - this.defineMessageProp(); - this.defineCreatedAtProp(); - this.defineAuthorProp(); - this.defineAnswersProp(); - this.populate(data); - } - - /** - * Defines the `ObjectId` type. - */ - protected defineObjectIdType() { - this.defineType('ObjectId', (v) => { - return ObjectId.isValid(v) ? new ObjectId(v) : null; - }); - } - - /** - * Defines the `_id` and `id` props. - */ - protected defineIdProps() { - this.defineProp('_id', { - type: 'ObjectId', - }); - this.defineProp('id', { - type : 'ObjectId', - serializable: ['out-admin', 'out-profile'], - get : () => this._id, - set : (v) => this._id = v, - }); - } - - /** - * Defines the `_deletedAt` prop. - */ - protected defineDeletedAtProp() { - this.defineProp('_deletedAt', { - type : 'Date', - serializable: ['in-db'], - }); - } - - /** - * Defines the `courseId` prop. - */ - protected defineCourseIdProp() { - this.defineProp('courseId', { - type : 'ObjectId', - serializable: ['in-db', 'out-admin', 'out-profile'], - validate : [ - { - validator: 'presence', - code : 42217, - }, - ], - fakeValue : () => new ObjectId(), - }); - } - - /** - * Defines the `userId` prop. - */ - protected defineUserIdProp() { - this.defineProp('userId', { - type : 'ObjectId', - serializable: ['in-db', 'out-admin', 'out-profile'], - validate : [ - { - validator: 'presence', - code : 42218, - }, - ], - fakeValue : () => new ObjectId(), - }); - } - - /** - * Defines the `postId` prop. - */ - protected definePostIdProp() { - this.defineProp('postId', { - type : 'ObjectId', - populatable : ['in-admin'], - serializable: ['in-db', 'out-admin', 'out-profile'], - validate : [ - { - validator: 'parentPostIdValidity', - code : 42216, - condition: () => !!this.postId, - }, - ], - }); - } - - /** - * Defines the `message` prop. - */ - protected defineMessageProp() { - this.defineProp('message', { - type : 'String', - populatable : ['in-admin', 'in-profile'], - serializable: ['in-db', 'out-admin', 'out-profile'], - validate : [ - { - validator: 'presence', - code : 42219, - }, - ] - }); - } - - /** - * Defines the `createdAt` prop. - */ - protected defineCreatedAtProp() { - this.defineProp('createdAt', { - type : 'Date', - serializable: ['in-db', 'out-admin', 'out-profile'], - defaultValue: () => new Date(), - }); - } - - /** - * Defines the `author` prop. - */ - protected defineAuthorProp() { - this.defineProp('author', { - type : Author, - serializable: ['out-admin', 'out-profile'], - }); - } - - /** - * Defines the `answers` prop. - */ - protected defineAnswersProp() { - this.defineProp('answers', { - type : [Post], - serializable: ['out-admin', 'out-profile'], - defaultValue: [] - }); - } -} - -/** - * Post author model. - */ -export class Author extends Model { - public firstName: string; - public lastName: string; - public role: number; - - /** - * Class constructor. - * @param data Input data. - * @param ctx Request context. - */ - constructor(data?: any) { - super(data); - this.defineFirstNameProps(); - this.defineLastNameProp(); - this.defineRoleProp(); - this.populate(data); - } - - /** - * Defines the `firstName` prop. - */ - protected defineFirstNameProps() { - this.defineProp('firstName', { - type : 'String', - serializable: ['out-admin', 'out-profile'], - }); - } - - /** - * Defines the `lastName` prop. - */ - protected defineLastNameProp() { - this.defineProp('lastName', { - type : 'String', - serializable: ['out-admin', 'out-profile'], - }); - } - - /** - * Defines the `role` prop. - */ - protected defineRoleProp() { - this.defineProp('role', { - type : 'Integer', - serializable: ['out-admin', 'out-profile'], - defaultValue: false, - get : () => 3 - }); - } - -} - -test('method `populate` deeply assignes data - stages', (t) => { - - console.time('POSTS'); - const posts = []; - let i = 0; - // Create posts - while ( i < 100) { - posts.push(new Post({ - courseId: new ObjectId(), - userId: new ObjectId(), - postId: null, - message: 'test' + i, - author: new Author({firstName: 'Test', lastName: 'User'}), - answers: [] - })); - i++; - } - console.timeEnd('POSTS'); - - // Create answers - console.time('ANSWERS'); - let j = 0; - const answers = []; - while ( j < 50) { - answers.push(new Post({ - courseId: new ObjectId(), - userId: new ObjectId(), - postId: new ObjectId(), - message: 'answer' + j, - author: new Author({firstName: 'Test', lastName: 'User'}), - answers: [] - })); - j++; - } - console.timeEnd('ANSWERS'); - - // Populate posts with answers - console.time('POPULATE'); - posts.forEach(x => x.populate({answers: answers})); - console.timeEnd('POPULATE'); - - t.is(posts.length, 100); - // t.is(user.parent, null); - // t.is(user.parent, null); -}); - -test('method `populate` deeply assignes data -- all at once', (t) => { - - console.time('ATONCE'); - const posts = []; - let i = 0; - let j = 0; - const answers = []; - while ( j < 50) { - answers.push(new Post({ - courseId: new ObjectId(), - userId: new ObjectId(), - postId: new ObjectId(), - message: 'answer' + j, - author: new Author({firstName: 'Test', lastName: 'User'}), - answers: [] - })); - j++; - } - // Create posts - while ( i < 100) { - posts.push(new Post({ - courseId: new ObjectId(), - userId: new ObjectId(), - postId: null, - message: 'test' + i, - author: new Author({firstName: 'Test', lastName: 'User'}), - answers: answers - })); - i++; - } - console.timeEnd('ATONCE'); - - t.is(posts.length, 100); -}); \ No newline at end of file diff --git a/tests/props.test.ts b/tests/props.test.ts new file mode 100644 index 0000000..4b947a5 --- /dev/null +++ b/tests/props.test.ts @@ -0,0 +1,239 @@ +import { Spec } from '@hayspec/spec'; +import { Model, Prop, Handler, Validator } from '../src'; + +const spec = new Spec(); + +spec.test('config `defaultValue` option configures property default value', (ctx) => { + const prop0 = new Prop({ + defaultValue: 'foo', + }); + const prop1 = new Prop({ + defaultValue: () => 'bar', + }); + ctx.is(prop0.getValue(), 'foo'); + ctx.is(prop1.getValue(), 'bar'); +}); + +spec.test('config `emptyValue` option configures property empty value', (ctx) => { + const prop0 = new Prop({ + emptyValue: 'foo', + }); + const prop1 = new Prop({ + defaultValue: () => 'foo', + }); + ctx.is(prop0.getValue(), 'foo'); + ctx.is(prop1.getValue(), 'foo'); +}); + +spec.test('config `get` option sets property custom getter', (ctx) => { + const prop = new Prop({ + get: (v) => `foo-${v}`, + }); + ctx.is(prop.getValue(), null); + prop.setValue('bar'); + ctx.is(prop.getValue(), 'foo-bar'); +}); + +spec.test('config `set` option sets property custom setter', (ctx) => { + const prop = new Prop({ + set: (v) => `foo-${v}`, + }); + ctx.is(prop.getValue(), 'foo-null'); + prop.setValue('bar'); + ctx.is(prop.getValue(), 'foo-bar'); +}); + +spec.test('methods `setValue` and `getValue` sets and gets property value', (ctx) => { + const prop = new Prop(); + ctx.is(prop.getValue(), null); + prop.setValue('foo'); + ctx.is(prop.getValue(), 'foo'); + prop.setValue('bar'); + ctx.is(prop.getValue(), 'bar'); + prop.setValue(() => 'zak'); + ctx.is(prop.getValue(), 'zak'); +}); + +spec.test('method `setValue` sets property value using strategy', (ctx) => { + const prop = new Prop({ + populatable: ['foo'], + }); + ctx.is(prop.getValue(), null); + prop.setValue('100', 'bar'); + ctx.is(prop.getValue(), null); + prop.setValue('200', 'foo'); + ctx.is(prop.getValue(), '200'); +}); + +spec.test('methods `setErrorCode` and `getErrorCode` sets and gets property error codes', (ctx) => { + const prop = new Prop(); + ctx.deepEqual(prop.getErrorCodes(), []); + prop.setErrorCodes(100, 200); + ctx.deepEqual(prop.getErrorCodes(), [100, 200]); +}); + +spec.test('methods `getRawValue` returns raw property value', (ctx) => { + const prop = new Prop(); + const value = () => true; + prop.setValue(value); + ctx.is(value, value); +}); + +spec.test('methods `getInitialValue` returns property value on last commit', (ctx) => { + const prop = new Prop(); + prop.setValue('foo'); + prop.commit(); + prop.setValue('bar'); + ctx.is(prop.getInitialValue(), 'foo'); +}); + +spec.test('methods `isModel` returns true if the property type represents a Model', (ctx) => { + class User extends Model {} + const prop = new Prop({ + cast: { handler: Model }, + }); + ctx.true(prop.isModel()); + prop.$config.cast.handler = User; + ctx.true(prop.isModel()); + prop.$config.cast.handler = () => Model; + ctx.false(prop.isModel()); +}); + +spec.test('methods `isPopulatable` returns true if the property value can be set using strategy', (ctx) => { + const prop = new Prop({ + populatable: ['foo'], + }); + ctx.true(prop.isPopulatable()); + ctx.true(prop.isPopulatable('foo')); + ctx.false(prop.isPopulatable('bar')); +}); + +spec.test('methods `isSerializable` returns true if the property value can be read using strategy', (ctx) => { + const prop = new Prop({ + serializable: ['foo'], + }); + ctx.true(prop.isSerializable()); + ctx.true(prop.isSerializable('foo')); + ctx.false(prop.isSerializable('bar')); +}); + +spec.test('methods `isEmpty` returns true if the property value is empty', (ctx) => { + const prop = new Prop(); + ctx.true(prop.isEmpty()); + prop.setValue(null); + ctx.true(prop.isEmpty()); + prop.setValue(''); + ctx.true(prop.isEmpty()); + prop.setValue('foo'); + ctx.false(prop.isEmpty()); + prop.setValue([]); + ctx.true(prop.isEmpty()); + prop.setValue([null]); + ctx.false(prop.isEmpty()); +}); + +spec.test('methods `isChanged` returns true if the property value has been changed', (ctx) => { + const prop = new Prop(); + ctx.false(prop.isChanged()); + prop.setValue(null); + ctx.false(prop.isChanged()); + prop.setValue('foo'); + prop.commit(); + ctx.false(prop.isChanged()); +}); + +spec.test('methods `isEqual` returns true if the property value equals to the provided one', (ctx) => { + const prop = new Prop(); + const fn = () => true; + ctx.true(prop.isEqual(null)); + prop.setValue('foo'); + ctx.true(prop.isEqual('foo')); + prop.setValue(fn); + ctx.true(prop.isEqual(fn)); +}); + +spec.test('methods `isValid` returns true if the property has no errors', (ctx) => { + const prop = new Prop(); + ctx.true(prop.isValid()); +}); + +spec.test('methods `reset` resets property to default value', (ctx) => { + const prop = new Prop({ + defaultValue: 'foo', + }); + prop.setValue('bar'); + prop.commit(); + prop.setValue('baz'); + prop.reset(); + ctx.is(prop.getValue(), 'foo'); +}); + +spec.test('methods `fake` populates property with fake value', (ctx) => { + const prop = new Prop({ + fakeValue: 'baz', + }); + prop.setValue('bar'); + prop.fake(); + ctx.is(prop.getValue(), 'baz'); +}); + +spec.test('methods `empty` clears property value', (ctx) => { + const prop = new Prop({ + emptyValue: null, + }); + prop.setValue('bar'); + prop.empty(); + ctx.is(prop.getValue(), null); +}); + +spec.test('methods `commit` copies property data to initial value', (ctx) => { + const prop = new Prop(); + prop.setValue('foo'); + prop.commit(); + prop.setValue('baz'); + ctx.is(prop.getInitialValue(), 'foo'); +}); + +spec.test('methods `rollback` reverts property to the last commited value', (ctx) => { + const prop = new Prop(); + prop.setValue('foo'); + prop.commit(); + prop.setValue('baz'); + prop.rollback(); + ctx.is(prop.getValue(), 'foo'); +}); + +spec.test('methods `validate` validates property and populates error codes', async (ctx) => { + const validator = new Validator(); + const prop = new Prop({ + validator: () => validator, + validate: [ + { code: 400, handler: (v) => false }, + { code: 401, handler: (v) => false }, + ], + }); + await prop.validate(); + ctx.deepEqual(prop.getErrorCodes(), [400, 401]); +}); + +spec.test('methods `handle` handles property errors and populates error codes', async (ctx) => { + const handler = new Handler(); + const prop = new Prop({ + handler: () => handler, + handle: [ + { code: 400, handler: (e) => e === 'foo' }, + { code: 401, handler: (e) => e === 'foo' }, + ], + }); + await prop.handle('foo'); + ctx.deepEqual(prop.getErrorCodes(), [400, 401]); +}); + +spec.test('methods `invalidate` clears property errors', (ctx) => { + const prop = new Prop(); + prop.setErrorCodes(100, 200, 300); + prop.invalidate(); + ctx.deepEqual(prop.getErrorCodes(), []); +}); + +export default spec; diff --git a/tests/props.ts b/tests/props.ts deleted file mode 100644 index 7afa8f3..0000000 --- a/tests/props.ts +++ /dev/null @@ -1,230 +0,0 @@ -import test from 'ava'; -import { Prop, Model } from '../src'; -import { Validator } from 'validatable'; - -test('nullifies a value by default', (t) => { - const f = new Prop(); - t.is(f.value, null); -}); - -test('provides getter and setter for the current value', (t) => { - const f = new Prop(); - f.value = 'foo'; - t.is(f.value, 'foo'); -}); - -test('supports custom getter and setter for the current value', (t) => { - const f0 = new Prop({get (v) { return `${v}-${this.constructor.name}`; }}); - const f1 = new Prop({set (v) { return `${v}-${this.constructor.name}`; }}); - f0.value = 'foo'; - f1.value = 'foo'; - t.is(f0.value, 'foo-Prop'); - t.is(f1.value, 'foo-Prop'); -}); - -test('can automatically cast a value to a specific data type', (t) => { - const f0 = new Prop({ type: ['String'] }); - const f1 = new Prop({ type: (v) => `${v}-foo` }); // custom type - f0.value = 100; - f1.value = 100; - t.deepEqual(f0.value, ['100']); - t.deepEqual(f1.value, '100-foo'); -}); - -test('can have a default value', (t) => { - const f0 = new Prop({ defaultValue: 'foo' }); - const f1 = new Prop({ defaultValue () { return this.constructor.name; } }); - const f2 = new Prop({ defaultValue () { return Math.random(); } }); - t.is(f0.value, 'foo'); - t.is(f1.value, 'Prop'); - t.is(f0.defaultValue, 'foo'); - t.is(f1.defaultValue, 'Prop'); - t.is(f2.defaultValue !== f2.defaultValue, true); // dynamic values -}); - -test('can have a fake value', (t) => { - const f0 = new Prop({ fakeValue: 'foo' }); - const f1 = new Prop({ fakeValue () { return this.constructor.name; } }); - const f2 = new Prop({ fakeValue () { return Math.random(); } }); - const f3 = new Prop({ type: 'Integer', fakeValue () { return 0; } }); - t.is(f0.fakeValue, 'foo'); - t.is(f1.fakeValue, 'Prop'); - t.is(f2.fakeValue !== f2.fakeValue, true); // dynamic values - t.is(f3.fakeValue, 0); -}); - -test('can have a null value', (t) => { - const f0 = new Prop({ nullValue: 'foo' }); - const f1 = new Prop({ nullValue () { return this.constructor.name; } }); - const f2 = new Prop({ nullValue () { return Math.random(); } }); - const f3 = new Prop({ nullValue () { return 0; } }); - t.is(f0.value, 'foo'); // `null` is replaced - t.is(f1.value, 'Prop'); // `null` is replaced - t.is(f0.nullValue, 'foo'); - t.is(f1.nullValue, 'Prop'); - t.is(f2.nullValue !== f2.nullValue, true); // dynamic values - t.is(f3.nullValue, 0); -}); - -test('method `reset()` sets value to the default value', (t) => { - const f0 = new Prop(); - const f1 = new Prop({ defaultValue: 'foo' }); - const f2 = new Prop({ defaultValue () { return Math.random(); } }); - t.is(f0.value, null); - f1.value = 'bar'; - f1.reset(); - t.is(f1.value, 'foo'); - f2.reset(); - t.is(f1.value !== f2.value, true); // dynamic values -}); - -test('method `fake()` sets value to the fake value', (t) => { - const f0 = new Prop(); - const f1 = new Prop({ fakeValue: 'foo' }); - const f2 = new Prop({ fakeValue () { return Math.random(); } }); - const f3 = new Prop({ fakeValue () { return 0; } }); - f0.value = 'foo'; - f0.fake(); - t.is(f0.value, 'foo'); - f1.value = 'bar'; - f1.fake(); - t.is(f1.value, 'foo'); - f2.value = 'foo'; - f2.fake(); - t.is(f2.value !== f1.value, true); // dynamic values - f3.value = 1; - f3.fake(); - t.is(f3.value, 0); -}); - -test('method `clear()` sets value to `null`', (t) => { - const f0 = new Prop(); - const f1 = new Prop({ nullValue: 'null' }); - f0.value = 'foo'; - f0.errors = [ - { validator: 'foo', message: 'bar', code: 422 } - ]; - f0.clear(); - f1.value = 'foo'; - f1.clear(); - t.is(f0.errors.length, 1); - t.is(f0.value, null); - t.is(f1.value, 'null'); -}); - -test('methods `commit()` and `rollback()` manage committed value state', (t) => { - const f = new Prop(); - f.value = 'foo'; - t.is(f.initialValue, null); - f.commit(); - t.is(f.initialValue, 'foo'); - f.value = 'bar'; - f.rollback(); - t.is(f.value, 'foo'); -}); - -test('method `equals()` returns `true` when the provided `data` equals to the current value', (t) => { - const f0 = new Prop(); - const f1 = new Prop(); - f0.value = 'foo'; - f1.value = 'foo'; - t.is(f0.equals(f1), true); - t.is(f0.equals(f1.value), true); -}); - -test('method `isChanged()` returns `true` if the value have been changed', (t) => { - const f0 = new Prop(); - const f1 = new Prop({ type: 'String', defaultValue: 'foo' }); - const f2 = new Prop({ type: ['String'], defaultValue: ['foo'] }); - t.is(f0.isChanged(), false); - f0.value = 'foo'; - t.is(f0.isChanged(), true); - t.is(f1.isChanged(), false); - t.is(f2.isChanged(), false); -}); - -test('method `isNested()` returns `true` if the prop type is un instance of a Model', (t) => { - const f0 = new Prop(); - const f1 = new Prop({ type: [Model] }); - const f2 = new Prop({ type: [class User extends Model {}] }); - t.is(f0.isNested(), false); - t.is(f1.isNested(), true); - t.is(f2.isNested(), true); -}); - -test('method `validate()` validates the value and populates the `errors` property', async (t) => { - const f = new Prop({ - validate: [ - { validator: 'presence', message: 'foo' }, - { validator: 'coolness', message: 'is not cool' }, // custom with message - { validator: 'coolness', code: 999 }, // custom with code - ], - validators: { - coolness () { return this.value === 'cool'; }, // custom validators - }, - }); - await f.validate(); - t.deepEqual(f.errors, [ - { validator: 'presence', message: 'foo', code: 422 }, - { validator: 'coolness', message: 'is not cool', code: 422 }, - { validator: 'coolness', message: undefined, code: 999 }, - ]); -}); - -test('method `invalidate()` clears the `errors` property', (t) => { - const f = new Prop(); - f.errors.push({ message: 'foo' }); - f.invalidate(); - t.deepEqual(f.errors, []); -}); - -test('method `hasErrors()` returns `true` when errors exist', (t) => { - const f = new Prop(); - t.is(f.hasErrors(), false); - f.errors.push({ message: 'foo' }); - t.is(f.hasErrors(), true); -}); - -test('method `isValid()` returns `true` when no errors exist', (t) => { - const f = new Prop(); - t.is(f.isValid(), true); - f.errors.push({ message: 'foo' }); - t.is(f.isValid(), false); -}); - -test('has enumeratable properties', (t) => { - const f = new Prop(); - t.deepEqual(Object.keys(f), [ - 'errors', - 'populatable', - 'serializable', - 'enumerable', - 'type', - 'owner', - 'value', - 'defaultValue', - 'fakeValue', - 'nullValue', - 'initialValue', - ]); -}); - -test('method `handle()` handles an error and populates the `errors` property', async (t) => { - const f = new Prop({ - handle: [ - { handler: 'block', block () { return true; }, message: 'foo' }, - { handler: 'coolness', message: 'cool' }, // custom with message - { handler: 'coolness', code: 999 }, // custom with code - ], - handlers: { - coolness (error) { return error.message === 'cool'; } // custom validators - }, - }); - const e = new Error('cool'); - await f.handle(e); - t.deepEqual(f.errors, [ - { handler: 'block', message: 'foo', code: 422 }, - { handler: 'coolness', message: 'cool', code: 422 }, - { handler: 'coolness', message: undefined, code: 999 }, - ]); -}); diff --git a/tests/utils.test.ts b/tests/utils.test.ts new file mode 100644 index 0000000..36ce308 --- /dev/null +++ b/tests/utils.test.ts @@ -0,0 +1,258 @@ +import { Spec } from '@hayspec/spec'; +import { normalize, isDeepEqual, isUndefined, isNull, isInfinite, isValue, isString, + isBoolean, isNumber, isInteger, isFloat, toNumber, isDate, isObject, isArray, + isPresent, isFunction, toString, toBoolean, toInteger, toFloat, toDate, toArray } from '../src'; + +const spec = new Spec(); + +spec.test('normalize', (ctx) => { + // ctx.true(deepEqual('foo', 'foo')); +}); + +spec.test('isDeepEqual', (ctx) => { + // ctx.true(isDeepEqual('foo', 'foo')); +}); + +spec.test('isUndefined', (ctx) => { + ctx.is(isUndefined(), true); + ctx.is(isUndefined(undefined), true); + ctx.is(isUndefined(''), false); +}); + +spec.test('isNull', (ctx) => { + ctx.is(isNull(null), true); + ctx.is(isNull(undefined), false); + ctx.is(isNull(''), false); +}); + +spec.test('isInfinite', (ctx) => { + ctx.is(isInfinite(Infinity), true); + ctx.is(isInfinite(0), false); + ctx.is(isInfinite(''), false); +}); + +spec.test('isValue', (ctx) => { + ctx.is(isValue(undefined), false); + ctx.is(isValue(null), false); + ctx.is(isValue(NaN), false); + ctx.is(isValue(Infinity), false); + ctx.is(isValue(0), true); + ctx.is(isValue(''), true); + ctx.is(isValue(new Date()), true); + ctx.is(isValue([]), true); + ctx.is(isValue({}), true); +}); + +spec.test('isString', (ctx) => { + ctx.is(isString(''), true); + ctx.is(isString('foo'), true); + ctx.is(isString(null), false); +}); + +spec.test('isBoolean', (ctx) => { + ctx.is(isBoolean(true), true); + ctx.is(isBoolean(false), true); + ctx.is(isBoolean('true'), false); +}); + +spec.test('isNumber', (ctx) => { + ctx.is(isNumber(0), true); + ctx.is(isNumber(100.0), true); + ctx.is(isNumber(-100.0), true); + ctx.is(isNumber(NaN), true); + ctx.is(isNumber(Infinity), true); + ctx.is(isNumber(undefined), false); + ctx.is(isNumber(null), false); + ctx.is(isNumber(''), false); + ctx.is(isNumber('100'), false); +}); + +spec.test('isInteger', (ctx) => { + ctx.is(isInteger(0), true); + ctx.is(isInteger(10), true); + ctx.is(isInteger(-10), true); + ctx.is(isInteger(10.1), false); + ctx.is(isInteger(Infinity), false); + ctx.is(isInteger(NaN), false); + ctx.is(isInteger(null), false); + ctx.is(isInteger(undefined), false); +}); + +spec.test('isFloat', (ctx) => { + ctx.is(isFloat(0), true); + ctx.is(isFloat(-100), true); + ctx.is(isFloat(100), true); + ctx.is(isFloat(0.1), true); + ctx.is(isFloat(-0.1), true); + ctx.is(isFloat(Infinity), false); + ctx.is(isFloat(NaN), false); + ctx.is(isFloat(null), false); + ctx.is(isFloat(undefined), false); +}); + +spec.test('isDate', (ctx) => { + ctx.is(isDate(new Date()), true); + ctx.is(isDate(new Date('ksjlfjsdfjsd')), false); + ctx.is(isDate(null), false); + ctx.is(isDate(undefined), false); + ctx.is(isDate(NaN), false); + ctx.is(isDate(Infinity), false); + ctx.is(isDate(0), false); + ctx.is(isDate(100), false); + ctx.is(isDate(''), false); +}); + +spec.test('isObject', (ctx) => { + ctx.is(isObject({}), true); + ctx.is(isObject(Infinity), false); + ctx.is(isObject(NaN), false); + ctx.is(isObject(null), false); + ctx.is(isObject(undefined), false); + ctx.is(isObject(0), false); + ctx.is(isObject(''), false); + ctx.is(isObject(new Date()), false); +}); + +spec.test('isArray', (ctx) => { + ctx.is(isArray([]), true); + ctx.is(isArray([1]), true); + ctx.is(isArray({}), false); + ctx.is(isArray(Infinity), false); + ctx.is(isArray(NaN), false); + ctx.is(isArray(null), false); + ctx.is(isArray(undefined), false); + ctx.is(isArray(0), false); + ctx.is(isArray(''), false); +}); + +spec.test('isPresent', (ctx) => { + ctx.is(isPresent(0), true); + ctx.is(isPresent(Infinity), true); + ctx.is(isPresent([1]), true); + ctx.is(isPresent(undefined), false); + ctx.is(isPresent(null), false); + ctx.is(isPresent(NaN), false); + ctx.is(isPresent([]), false); + ctx.is(isPresent({}), false); + ctx.is(isPresent(''), false); +}); + +spec.test('isFunction', (ctx) => { + ctx.is(isFunction(undefined), false); + ctx.is(isFunction(null), false); + ctx.is(isFunction(NaN), false); + ctx.is(isFunction(() => {}), true); + ctx.is(isFunction(function() {}), true); + ctx.is(isPresent(class {}), true); +}); + +spec.test('toString', (ctx) => { + ctx.is(toString(), null); + ctx.is(toString(undefined), null); + ctx.is(toString(null), null); + ctx.is(toString(''), ''); + ctx.is(toString(NaN), 'NaN'); + ctx.is(toString(Infinity), 'Infinity'); + ctx.is(toString(true), 'true'); + ctx.is(toString(100.1), '100.1'); + ctx.is(toString([1,2]), '1,2'); +}); + +spec.test('toBoolean', (ctx) => { + ctx.is(toBoolean(), null); + ctx.is(toBoolean(undefined), null); + ctx.is(toBoolean(null), null); + ctx.is(toBoolean(false), false); + ctx.is(toBoolean(NaN), false); + ctx.is(toBoolean(0), false); + ctx.is(toBoolean(-100), false); + ctx.is(toBoolean('-'), false); + ctx.is(toBoolean('0'), false); + ctx.is(toBoolean('-10'), false); + ctx.is(toBoolean('false'), false); + ctx.is(toBoolean(true), true); + ctx.is(toBoolean(1), true); + ctx.is(toBoolean(100), true); + ctx.is(toBoolean(Infinity), true); + ctx.is(toBoolean('+'), true); + ctx.is(toBoolean('1'), true); + ctx.is(toBoolean('100'), true); + ctx.is(toBoolean('true'), true); + ctx.is(toBoolean('yes'), true); +}); + +spec.test('toInteger', (ctx) => { + ctx.is(toInteger(), null); + ctx.is(toInteger(undefined), null); + ctx.is(toInteger(null), null); + ctx.is(toInteger(false), 0); + ctx.is(toInteger(NaN), 0); + ctx.is(toInteger(0), 0); + ctx.is(toInteger(-100), -100); + ctx.is(toInteger('-100'), -100); + ctx.is(toInteger('-100.0'), -100); + ctx.is(toInteger('false'), 0); + ctx.is(toInteger(Infinity), 1); + ctx.is(toInteger('true'), 1); + ctx.is(toInteger('yes'), 1); +}); + +spec.test('toFloat', (ctx) => { + ctx.is(toFloat(), null); + ctx.is(toFloat(undefined), null); + ctx.is(toFloat(null), null); + ctx.is(toFloat(false), 0); + ctx.is(toFloat(NaN), 0); + ctx.is(toFloat(0), 0); + ctx.is(toFloat(-100), -100); + ctx.is(toFloat('-100'), -100); + ctx.is(toFloat('-100.0'), -100); + ctx.is(toFloat('-100.99'), -100.99); + ctx.is(toFloat('false'), 0); + ctx.is(toFloat(Infinity), 1); + ctx.is(toFloat('true'), 1); + ctx.is(toFloat('yes'), 1); +}); + +spec.test('toNumber', (ctx) => { + ctx.is(toNumber(), null); + ctx.is(toNumber(undefined), null); + ctx.is(toNumber(null), null); + ctx.is(toNumber(false), 0); + ctx.is(toNumber(NaN), 0); + ctx.is(toNumber(0), 0); + ctx.is(toNumber(-100), -100); + ctx.is(toNumber('-100'), -100); + ctx.is(toNumber('-100.0'), -100); + ctx.is(toNumber('-100.99'), -100.99); + ctx.is(toNumber('false'), 0); + ctx.is(toNumber(Infinity), 1); + ctx.is(toNumber('true'), 1); + ctx.is(toNumber('yes'), 1); +}); + +spec.test('toDate', (ctx) => { + let d = new Date(); + ctx.is(toDate(d), d); + ctx.deepEqual(toDate(100000), new Date(100000)); + ctx.deepEqual(toDate('2016-01-02'), new Date('2016-01-02')); + ctx.is(toDate(), null); + ctx.is(toDate(undefined), null); + ctx.is(toDate(null), null); + ctx.is(toDate('8sadufsdjfk1231'), null); +}); + +spec.test('toArray', (ctx) => { + ctx.deepEqual(toArray(), null); + ctx.deepEqual(toArray(undefined), null); + ctx.deepEqual(toArray(null), null); + ctx.deepEqual(toArray(NaN), []); + ctx.deepEqual(toArray(Infinity), []); + ctx.deepEqual(toArray([]), []); + ctx.deepEqual(toArray({}), [{}]); + ctx.deepEqual(toArray(''), ['']); + ctx.deepEqual(toArray(0), [0]); + ctx.deepEqual(toArray('john'), ['john']); +}); + +export default spec; diff --git a/tests/validator.test.ts b/tests/validator.test.ts new file mode 100644 index 0000000..9e0325e --- /dev/null +++ b/tests/validator.test.ts @@ -0,0 +1,82 @@ +import { Spec } from '@hayspec/spec'; +import { Validator } from '../src'; + +const spec = new Spec(); + +spec.test('methods `validate` validates a value and returns error codes', async (ctx) => { + const validator = new Validator(); + const recipes = [ + { code: 200, handler: (v) => v === 'foo' }, + { code: 201, handler: (v) => v === 'foo' }, + { code: 400, handler: (v) => v === 'bar' }, + { code: 401, handler: (v) => v === 'bar' }, + ]; + const codes = await validator.validate('foo', recipes); + ctx.deepEqual(codes, [400, 401]); +}); + +spec.test('methods `validate` can fail fast', async (ctx) => { + const validator = new Validator({ + failFast: true, + }); + const recipes = [ + { code: 200, handler: (v) => false }, + { code: 201, handler: (v) => false }, + { code: 400, handler: (v) => false }, + ]; + const codes = await validator.validate('foo', recipes); + ctx.deepEqual(codes, [200]); +}); + +spec.test('methods `validate` supports conditional handlers', async (ctx) => { + const validator = new Validator(); + const recipes = [ + { code: 100, handler: (v) => false, condition: (v) => true }, + { code: 200, handler: (v) => false, condition: (v) => false }, + { code: 300, handler: (v) => false }, + ]; + const codes = await validator.validate(true, recipes); + ctx.deepEqual(codes, [100, 300]); +}); + +spec.test('methods `validate` passes context to each handler', async (ctx) => { + const validator = new Validator({ + ctx: { foo: 'foo' }, + }); + const recipes = [ + { code: 100, handler(v) { return v === this.foo} }, + ]; + const codes = await validator.validate('foo', recipes); + ctx.deepEqual(codes, []); +}); + +spec.test('methods `validate` passes context to each condition', async (ctx) => { + const validator = new Validator({ + ctx: { foo: 'foo' }, + }); + const recipes = [ + { code: 100, handler: (v) => false, condition(v) { return v === this.foo } }, + ]; + const codes = await validator.validate('foo', recipes); + ctx.deepEqual(codes, [100]); +}); + +spec.test('methods `validate` passes recipe to each handler', async (ctx) => { + const validator = new Validator(); + const recipes = [ + { code: 100, handler: (v, r) => v === r.code }, + ]; + const codes = await validator.validate(100, recipes); + ctx.deepEqual(codes, []); +}); + +spec.test('methods `validate` passes recipe to each condition', async (ctx) => { + const validator = new Validator(); + const recipes = [ + { code: 100, handler: (v) => false, condition: (v, r) => r.code === 100 }, + ]; + const codes = await validator.validate(true, recipes); + ctx.deepEqual(codes, [100]); +}); + +export default spec; diff --git a/tsconfig.json b/tsconfig.json index af0fcf9..11d5d2f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,12 +1,14 @@ { "compilerOptions": { "module": "commonjs", - "target": "es3", + "target": "es5", "noImplicitAny": false, "removeComments": true, "sourceMap": true, "outDir": "dist", "declaration": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, "lib": ["es2015.promise", "es2015.iterable", "es5"] } } From 71a85aaf31ace8f63894175dfcfb7b42c39af572 Mon Sep 17 00:00:00 2001 From: Kristijan Sedlak Date: Tue, 18 Sep 2018 00:55:59 +0200 Subject: [PATCH 217/219] Finish 2.0 refactoring --- package-lock.json | 885 ++++++++------------ package.json | 16 +- src/{ => core}/handler.ts | 15 +- src/{ => core}/models.ts | 135 +-- src/{ => core}/parsing.ts | 20 +- src/{ => core}/props.ts | 203 +++-- src/{ => core}/utils.ts | 124 ++- src/{ => core}/validator.ts | 17 +- src/index.ts | 12 +- {tests => src/tests/core}/handler.test.ts | 6 +- {tests => src/tests/core}/models.test.ts | 512 +++++------ {tests => src/tests/core}/parsing.test.ts | 2 +- {tests => src/tests/core}/props.test.ts | 41 +- {tests => src/tests/core}/utils.test.ts | 75 +- {tests => src/tests/core}/validator.test.ts | 6 +- {tests => src/tests}/index.test.ts | 2 +- tsconfig.json | 3 +- 17 files changed, 986 insertions(+), 1088 deletions(-) rename src/{ => core}/handler.ts (78%) rename src/{ => core}/models.ts (77%) rename src/{ => core}/parsing.ts (74%) rename src/{ => core}/props.ts (55%) rename src/{ => core}/utils.ts (73%) rename src/{ => core}/validator.ts (78%) rename {tests => src/tests/core}/handler.test.ts (95%) rename {tests => src/tests/core}/models.test.ts (66%) rename {tests => src/tests/core}/parsing.test.ts (98%) rename {tests => src/tests/core}/props.test.ts (88%) rename {tests => src/tests/core}/utils.test.ts (73%) rename {tests => src/tests/core}/validator.test.ts (95%) rename {tests => src/tests}/index.test.ts (88%) diff --git a/package-lock.json b/package-lock.json index 44832dd..432e8d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "rawmodel", - "version": "1.33.0", + "version": "2.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -70,9 +70,9 @@ "dev": true }, "@types/node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.9.2.tgz", - "integrity": "sha512-pwZnkVyCGJ3LsQ0/3flQK5lCFao4esIzwUVzzk5NvL9vnkEyDhNf4fhHzUMHvyr56gNZywWTS2MR0euabMSz4A==", + "version": "10.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.10.1.tgz", + "integrity": "sha512-nzsx28VwfaIykfzMAG9TB3jxF5Nn+1/WMKnmVZc8TsB+LMIVvwUscVn7PAq+LFaY5ng5u4jp5mRROSswo76PPA==", "dev": true }, "ansi-escapes": { @@ -82,9 +82,9 @@ "dev": true }, "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "ansi-styles": { @@ -105,6 +105,12 @@ "sprintf-js": "~1.0.2" } }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", @@ -117,6 +123,12 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -146,6 +158,12 @@ "js-tokens": "^3.0.2" }, "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", @@ -154,7 +172,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -240,18 +258,6 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true } } }, @@ -265,6 +271,35 @@ "concat-map": "0.0.1" } }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -292,14 +327,6 @@ "to-object-path": "^0.3.0", "union-value": "^1.0.0", "unset-value": "^1.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "call-me-maybe": { @@ -308,6 +335,12 @@ "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", "dev": true }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, "chalk": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", @@ -345,12 +378,6 @@ "requires": { "is-descriptor": "^0.1.0" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true } } }, @@ -397,24 +424,24 @@ } }, "color-convert": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", - "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { - "color-name": "1.1.1" + "color-name": "1.1.3" } }, "color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.18.0.tgz", + "integrity": "sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==", "dev": true }, "component-emitter": { @@ -446,6 +473,15 @@ "which": "^1.2.9" } }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", @@ -496,18 +532,6 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true } } }, @@ -550,6 +574,41 @@ "strip-eof": "^1.0.0" } }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", @@ -582,240 +641,38 @@ "tmp": "^0.0.33" } }, - "fast-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.2.tgz", - "integrity": "sha512-TR6zxCKftDQnUAPvkrCWdBgDq/gbqx8A3ApnBrR5rMvpp6+KMJI0Igw7fkWPgeVK0uhRXTXdvO3O+YP0CaUX2g==", + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.0.1", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.1", - "micromatch": "^3.1.10" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "is-descriptor": "^1.0.0" } }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } + "is-extendable": "^0.1.0" } }, "is-accessor-descriptor": { @@ -846,83 +703,23 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true } } }, + "fast-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.2.tgz", + "integrity": "sha512-TR6zxCKftDQnUAPvkrCWdBgDq/gbqx8A3ApnBrR5rMvpp6+KMJI0Igw7fkWPgeVK0uhRXTXdvO3O+YP0CaUX2g==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.0.1", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.1", + "micromatch": "^3.1.10" + } + }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", @@ -932,6 +729,29 @@ "escape-string-regexp": "^1.0.5" } }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", @@ -992,9 +812,9 @@ "dev": true }, "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -1005,6 +825,27 @@ "path-is-absolute": "^1.0.0" } }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, "glob-to-regexp": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", @@ -1024,8 +865,22 @@ "dev": true, "requires": { "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } } }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -1035,14 +890,6 @@ "get-value": "^2.0.6", "has-values": "^1.0.0", "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "has-values": { @@ -1055,26 +902,6 @@ "kind-of": "^4.0.0" }, "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", @@ -1145,6 +972,17 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "is-buffer": { @@ -1160,6 +998,17 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "is-descriptor": { @@ -1187,12 +1036,47 @@ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "dev": true }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -1200,14 +1084,6 @@ "dev": true, "requires": { "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "is-promise": { @@ -1240,6 +1116,12 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", @@ -1266,13 +1148,10 @@ } }, "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true }, "lcid": { "version": "1.0.0", @@ -1294,9 +1173,9 @@ } }, "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true }, "lru-cache": { @@ -1345,6 +1224,27 @@ "integrity": "sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg==", "dev": true }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, "mimic-fn": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", @@ -1361,9 +1261,9 @@ } }, "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, "mixin-deep": { @@ -1389,13 +1289,27 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } } }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, "mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", @@ -1419,26 +1333,6 @@ "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.1" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } } }, "npm-run-path": { @@ -1475,6 +1369,15 @@ "requires": { "is-descriptor": "^0.1.0" } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } } } }, @@ -1485,14 +1388,6 @@ "dev": true, "requires": { "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "object.pick": { @@ -1502,14 +1397,6 @@ "dev": true, "requires": { "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "once": { @@ -1795,15 +1682,6 @@ "use": "^3.1.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", @@ -1821,12 +1699,6 @@ "requires": { "is-extendable": "^0.1.0" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true } } }, @@ -1878,18 +1750,6 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true } } }, @@ -1900,6 +1760,17 @@ "dev": true, "requires": { "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "source-map": { @@ -1998,14 +1869,6 @@ "dev": true, "requires": { "ansi-regex": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - } } }, "strip-eof": { @@ -2021,19 +1884,11 @@ "dev": true, "requires": { "has-flag": "^3.0.0" - }, - "dependencies": { - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - } } }, "through": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, @@ -2053,6 +1908,17 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "to-regex": { @@ -2075,17 +1941,6 @@ "requires": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - } } }, "ts-node": { @@ -2102,14 +1957,6 @@ "mkdirp": "^0.5.1", "source-map-support": "^0.5.6", "yn": "^2.0.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } } }, "tslib": { @@ -2148,9 +1995,9 @@ } }, "typescript": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.0.1.tgz", - "integrity": "sha512-zQIMOmC+372pC/CCVLqnQ0zSBiY7HHodU7mpQdjiZddek4GMj31I3dUJ7gAs9o65X7mnRma6OokOkc6f9jjfBg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.0.3.tgz", + "integrity": "sha512-kk80vLW9iGtjMnIv11qyxLqZm20UklzuR2tL0QAnDIygIUIemcZMxlMWudl9OOt76H3ntVzcTiddQ1/pAAJMYg==", "dev": true }, "union-value": { @@ -2231,12 +2078,6 @@ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true } } }, @@ -2277,6 +2118,12 @@ "strip-ansi": "^3.0.1" }, "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -2353,14 +2200,6 @@ "dev": true, "requires": { "camelcase": "^4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - } } }, "yn": { diff --git a/package.json b/package.json index 0a269ee..10a8178 100644 --- a/package.json +++ b/package.json @@ -1,23 +1,15 @@ { "name": "rawmodel", - "version": "1.33.0", + "version": "2.0.0", "description": "Strongly-typed JavaScript object with support for validation and error handling.", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", - "ava": { - "files": [ - "./dist/tests/*.js", - "./dist/tests/**/*.js" - ], - "concurrency": 4, - "failFast": true - }, "scripts": { "clean": "rm -Rf ./dist", "build": "npm run clean; tsc", "lint": "tslint 'src/**/*.ts?(x)'", "prepare": "npm run build", - "test": "npm run build && ava" + "test": "hayspec test --require ts-node/register --match ./src/tests/**/*.test.ts" }, "repository": { "type": "git", @@ -72,9 +64,9 @@ "devDependencies": { "@hayspec/cli": "^0.4.21", "@hayspec/spec": "^0.4.21", - "@types/node": "^10.9.2", + "@types/node": "^10.10.1", "ts-node": "^7.0.1", "tslint": "^5.11.0", - "typescript": "^3.0.1" + "typescript": "^3.0.3" } } diff --git a/src/handler.ts b/src/core/handler.ts similarity index 78% rename from src/handler.ts rename to src/core/handler.ts index d3fe35f..78bbad0 100644 --- a/src/handler.ts +++ b/src/core/handler.ts @@ -1,3 +1,5 @@ +import { realize, isArray } from './utils'; + /** * Error handler recipe interface. */ @@ -38,7 +40,7 @@ export class Handler { async handle(error: any, recipes: HandlerRecipe[] = []): Promise { const codes = []; - for (let recipe of recipes) { + for (const recipe of recipes) { const condition = recipe.condition; if (condition) { @@ -48,21 +50,16 @@ export class Handler { } } - const context = typeof this.$config.ctx === 'function' - ? this.$config.ctx() - : this.$config.ctx; + const context = realize(this.$config.ctx); const isMatch = await Promise.all( - (Array.isArray(error) ? error : [error]) + (isArray(error) ? error : [error]) .map((v) => recipe.handler.call(context, v, recipe)) ).then((r) => r.indexOf(false) === -1); if (isMatch) { codes.push(recipe.code); - const failFast = typeof this.$config.failFast === 'function' - ? this.$config.failFast() - : this.$config.failFast; - if (failFast) { + if (realize(this.$config.failFast)) { break; } } diff --git a/src/models.ts b/src/core/models.ts similarity index 77% rename from src/models.ts rename to src/core/models.ts index 1b1dbdb..8e4158d 100644 --- a/src/models.ts +++ b/src/core/models.ts @@ -1,5 +1,7 @@ -import { Prop, PropConfig, PropRef, PropError, isDeepEqual, isArray, isUndefined, - toArray, normalize } from '.'; +import { Prop, PropConfig, PropRef, PropError } from './props'; +import { normalize, isDeepEqual, isArray, isUndefined, toArray } from './utils'; +import { Validator } from './validator'; +import { Handler } from './handler'; /** * Model configuration interface. @@ -7,7 +9,7 @@ import { Prop, PropConfig, PropRef, PropError, isDeepEqual, isArray, isUndefined export interface ModelConfig { ctx?: any | (() => any); failFast?: boolean | (() => boolean); - parent?: Model; + parent?: Model; } /** @@ -16,7 +18,7 @@ export interface ModelConfig { export class Model { readonly $config: ModelConfig; readonly $props: {[key: string]: Prop}; - readonly $recipes: {[key: string]: PropConfig} = {}; + static readonly $props: {[key: string]: PropConfig} = {}; /** * Class constructor. @@ -58,9 +60,11 @@ export class Model { this.$props[key] = new Prop({ model: this, + validator: () => new Validator(config as any), // lazy load + handler: () => new Handler(config as any), // lazy load ...config, }); - + Object.defineProperty(this, key, { get: () => this.$props[key].getValue(), set: (value) => this.$props[key].setValue(value), @@ -85,8 +89,7 @@ export class Model { const parent = root.getParent(); if (parent) { root = parent; - } - else { + } else { return root; } } while (true); @@ -164,8 +167,7 @@ export class Model { .filter((f) => isArray(f)) .reduce((a, b) => a.concat(b), []) ); - } - else { + } else { props = props.concat( prop.getValue().flatten(path) ); @@ -213,7 +215,7 @@ export class Model { * Sets each model prop to its default value. */ public reset(): this { - + Object.keys(this.$props) .forEach((key) => this.$props[key].reset()); @@ -235,7 +237,7 @@ export class Model { */ public empty(): this { Object.keys(this.$props) - .forEach((name) => this.$props[name].empty()); + .forEach((key) => this.$props[key].empty()); return this; } @@ -245,7 +247,7 @@ export class Model { */ public commit(): this { Object.keys(this.$props) - .forEach((name) => this.$props[name].commit()); + .forEach((key) => this.$props[key].commit()); return this; } @@ -255,7 +257,7 @@ export class Model { */ public rollback(): this { Object.keys(this.$props) - .forEach((name) => this.$props[name].rollback()); + .forEach((key) => this.$props[key].rollback()); return this; } @@ -275,18 +277,16 @@ export class Model { * Returns `true` if at least one prop has been changed. */ public isChanged(): boolean { - // return Object.keys(this.$props) - // .some((name) => this.$props[name].isChanged()); - return false; + return Object.keys(this.$props) + .some((key) => this.$props[key].isChanged()); } /** * Returns `true` when no errors exist. */ public isValid(): boolean { - // return !Object.keys(this.$props) - // .some((name) => !this.$props[name].isValid()); - return false; + return !Object.keys(this.$props) + .some((key) => !this.$props[key].isValid()); } /** @@ -300,7 +300,7 @@ export class Model { await Promise.all( Object.keys(this.$props) - .map((n) => this.$props[n].validate()) + .map((key) => this.$props[key].validate()) ); if (!quiet && !this.isValid()) { @@ -312,31 +312,37 @@ export class Model { return this; } - // /** - // * Handles the error and throws an error if the error can not be handled. - // */ - // public async handle(error: any, { - // quiet = true - // }: { - // quiet?: boolean - // } = {}): Promise { - // if (!error) return this; // blank values are valid - // if (error.code === 422) return this; // validation errors are ignored - - // const props = this._props; - // await Promise.all( - // Object.keys(props) - // .map((n) => props[n].handle(error)) - // ); - - // if (!quiet && this.hasErrors()) { - // throw this._createValidationError(); - // } - // else if (!this.hasErrors()) { - // throw error; // always throw unhandled errors - // } - // return this; - // } + /** + * Handles the error and throws an error if the error can not be handled. + */ + public async handle(error: any, { + quiet = true + }: { + quiet?: boolean + } = {}): Promise { + + if (!error) { + return this; // blank values are valid + } + if (error.code === 422) { + return this; // validation errors are ignored + } + + await Promise.all( + Object.keys(this.$props) + .map((n) => this.$props[n].handle(error)) + ); + + if (!quiet && !this.isValid()) { + const error = new Error('Validation failed'); + error['code'] = 422; + throw error; + } else if (!quiet && this.isValid()) { + throw error; // always throw unhandled errors + } + + return this; + } /** * Sets props errors. @@ -361,21 +367,26 @@ export class Model { .filter(({ errors }) => errors.length > 0); } - // /** - // * Removes props errors. - // */ - // public invalidate(): this { - // Object.keys(this._props) - // .forEach((name) => this._props[name].invalidate()); - - // return this; - // } - - // /** - // * Returns a new Model instance which is the exact copy of the original. - // */ - // public clone(data = {}): this { - // return this._createModel({ parent: this.parent }) - // .populate(merge({}, this.serialize(), data)); - // } + /** + * Removes props errors. + */ + public invalidate(): this { + Object.keys(this.$props) + .forEach((key) => this.$props[key].invalidate()); + + return this; + } + + /** + * Returns a new Model instance which is the exact copy of the original. + */ + public clone(data = {}): this { + return new (this.constructor as any)({ + ...this.serialize(), + ...data, + }, { + ...this.$config, + }); + } + } diff --git a/src/parsing.ts b/src/core/parsing.ts similarity index 74% rename from src/parsing.ts rename to src/core/parsing.ts index 472f25c..83d757a 100644 --- a/src/parsing.ts +++ b/src/core/parsing.ts @@ -1,5 +1,5 @@ -import { Model, isUndefined, isNull, toArray, toString, toBoolean, toInteger, - toFloat, toNumber, toDate } from '.'; +import { Model } from './models'; +import { isUndefined, isNull, toArray, toString, toBoolean, toInteger, toFloat, toNumber, toDate } from './utils'; /** * Model property type interface. @@ -10,9 +10,9 @@ export interface CastConfig { } /** - * Handler function type. + * Handler function type. */ -export type CastHandler = 'String' | 'Boolean' | 'Integer' | 'Float' | 'Number' +export type CastHandler = 'String' | 'Boolean' | 'Integer' | 'Float' | 'Number' | 'Date' | ((v: any) => any); /** @@ -24,14 +24,11 @@ export type CastHandler = 'String' | 'Boolean' | 'Integer' | 'Float' | 'Number' export function cast(value: any, handler: CastHandler, array: boolean) { if (isUndefined(value) || isNull(value)) { return value; - } - else if (array) { + } else if (array) { return toArray(value).map((v) => cast(v, handler, false)); - } - else if (typeof handler === 'function') { + } else if (typeof handler === 'function') { return handler(value); - } - else if (typeof handler === 'string') { + } else if (typeof handler === 'string') { return { 'String': toString, 'Boolean': toBoolean, @@ -40,8 +37,7 @@ export function cast(value: any, handler: CastHandler, array: boolean) { 'Number': toNumber, 'Date': toDate, }[handler](value); - } - else { + } else { return value; } } diff --git a/src/props.ts b/src/core/props.ts similarity index 55% rename from src/props.ts rename to src/core/props.ts index d9abf55..55f7444 100644 --- a/src/props.ts +++ b/src/core/props.ts @@ -1,5 +1,9 @@ -import { Model, cast, CastConfig, CastHandler, Validator, ValidatorRecipe, Handler, - HandlerRecipe, normalize, isDeepEqual, isUndefined, isPresent, toArray } from '.'; +import { Model } from './models'; +import { CastConfig, CastHandler, cast } from './parsing'; +import { Validator, ValidatorRecipe } from './validator'; +import { Handler, HandlerRecipe } from './handler'; +import { normalize, realize, isDeepEqual, isClassOf, isUndefined, isPresent, toArray } from '..'; +import { isFunction, isInstanceOf } from './utils'; /** * Property error interface. @@ -20,13 +24,13 @@ export interface PropRef { /** * Model property class configuration object. */ -export interface PropConfig { - set?: (v: any) => T; - get?: (v: any) => T; +export interface PropConfig { + set?: (v: any) => any; + get?: (v: any) => any; cast?: CastConfig; - defaultValue?: T | (() => T); - fakeValue?: T | (() => T); - emptyValue?: T | (() => T); + defaultValue?: any | (() => any); + fakeValue?: any | (() => any); + emptyValue?: any | (() => any); validator?: Validator | (() => Validator); validate?: ValidatorRecipe[]; handler?: Handler | (() => Handler); @@ -51,7 +55,7 @@ export function prop(config?: PropConfig) { Object.defineProperty(target.constructor, '$props', { value: other, - enumerable: true, + enumerable: false, configurable: true, }); @@ -61,17 +65,17 @@ export function prop(config?: PropConfig) { /** * Model property class. */ -export class Prop { - protected rawValue: T | (() => T); - protected initialValue: T | (() => T); +export class Prop { + protected rawValue: any | (() => any); + protected initialValue: any | (() => any); protected errorCodes: number[] = []; - readonly $config: PropConfig; + readonly $config: PropConfig; /** * Class constructor. * @param config Model prop configuration. */ - public constructor(config?: PropConfig) { + public constructor(config?: PropConfig) { Object.defineProperty(this, '$config', { value: { ...config }, @@ -85,13 +89,13 @@ export class Prop { /** * Sets the current value. */ - public setValue(data: T | (() => T), strategy?: string) { + public setValue(data: any | (() => any), strategy?: string) { if (!this.isPopulatable(strategy)) { return; } let value = isUndefined(data) ? null : data; - + if (this.$config.cast) { value = this.cast(value, strategy); } @@ -105,34 +109,29 @@ export class Prop { /** * Calculates the current value. */ - public getValue(): T { - let value = typeof this.rawValue === 'function' - ? this.rawValue.call(this) - : this.rawValue; + public getValue(): any { + let value = realize(this.rawValue, this); if (this.$config.get) { value = this.$config.get.call(this, value); } if (this.isEmpty()) { - value = typeof this.$config.emptyValue === 'function' - ? this.$config.emptyValue.call(this) - : this.$config.emptyValue; + value = realize(this.$config.emptyValue, this); } return isUndefined(value) ? null : value; } /** - * Sets the current value. + * Sets local error codes. */ public setErrorCodes(...codes: number[]) { - this.errorCodes = this.errorCodes.concat(codes) - .reduce((a, b) => a.indexOf(b) === -1 ? a.concat([b]) : a, []); + this.errorCodes = codes; } /** - * Sets the current value. + * Gets local error codes. */ public getErrorCodes() { return this.errorCodes; @@ -157,14 +156,7 @@ export class Prop { */ public isModel(): boolean { const { handler } = this.$config.cast || {} as any; - return ( - isPresent(handler) - && isPresent(handler.prototype) - && ( - handler.prototype instanceof Model - || handler.prototype.constructor === Model - ) - ); + return isClassOf(handler, Model); } /** @@ -201,93 +193,105 @@ export class Prop { * Returns true if the property value is an empty value. */ public isEmpty() { - const value = typeof this.rawValue === 'function' - ? this.rawValue.call(this) - : this.rawValue; - - return !isPresent(value); + return !isPresent( + realize(this.rawValue, this) + ); } /** * Returns `true` if the value has been changed. */ public isChanged(): boolean { - return this.initialValue !== this.rawValue; + + let initialValue = realize(this.initialValue); + let rawValue = realize(this.rawValue); + if (this.isModel()) { + initialValue = isInstanceOf(initialValue, Model) ? initialValue.serialize() : initialValue; + rawValue = isInstanceOf(rawValue, Model) ? rawValue.serialize() : rawValue; + } + + return !isDeepEqual( + normalize(initialValue), + normalize(rawValue) + ); } /** - * Returns `true` when `data` isEqual to the current value. + * Returns `true` when `data` deeply equals the current value. */ public isEqual(data: any): boolean { - if (typeof data === 'function') { - return this.rawValue === data; + + let value = realize(data); + if (isInstanceOf(value, Prop) || isInstanceOf(value, Model)) { + value = value.serialize(); } + return isDeepEqual( normalize(this.getValue()), - normalize(data instanceof Prop ? data.getValue() : data) + normalize(value) ); } /** - * Returns `true` when the value is valid. + * Returns `true` when the value and possible nested models have no errors. */ public isValid(): boolean { - if (this.getErrorCodes().length !== 0) { + if (this.getErrorCodes().length > 0) { return false; } - if (this.isModel()) {} - - - // ISVALID, getERRORS NE GLEDA DEEPLKY!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + if (this.isModel()) { + return !(toArray(this.rawValue) || []) // nested models + .filter((m) => isInstanceOf(m, Model)) + .some((m) => !m.isValid()); + } + return true; } /** * Converts the provided value to the property type. */ protected cast(value: any, strategy?: string): any { - let { handler, array } = this.$config.cast || {} as any; + const config = { ...this.$config.cast }; if (this.isModel()) { - const Klass = (handler as typeof Model); - handler = (data: any) => { - if (data instanceof Klass) { + const Klass = (config.handler as typeof Model); + config.handler = (data: any) => { + if (isInstanceOf(data, Klass)) { return data; // keep instances } else { - const instance = new Klass(null, this.$config.model.$config); - instance.$config.parent = this.$config.model; - return instance.populate(data, strategy).commit(); + return new Klass(null, { + parent: this.$config.model, + ...this.$config.model.$config + }).populate(data, strategy).commit(); } }; } - return cast(value, handler as CastHandler, array); + return cast(value, config.handler as CastHandler, config.array); } /** - * Serializes the provided property value. + * Returns JSON serialized property value. */ public serialize(strategy?: string): any { if (!this.isSerializable(strategy)) { return null; } - const value = this.getValue() as any; + const value = this.getValue(); if (!value) { return null; - } - - if (this.isModel()) { + } else if (this.isModel()) { if (this.isArray()) { return value.map((m) => m ? m.serialize() : null); - } - else { + } else { return value.serialize(); } } else { return normalize(value); } } - + /** * Sets property value to the default value. */ @@ -298,13 +302,14 @@ export class Prop { } /** - * Sets property value to the fake value. + * Deeply sets property value to the fake value. */ public fake(): this { + this.setValue(this.$config.fakeValue); (toArray(this.rawValue) || []) // related fake values - .filter((doc) => doc instanceof Model) + .filter((doc) => isInstanceOf(doc, Model)) .map((doc) => doc.fake()); return this; @@ -320,31 +325,59 @@ export class Prop { } /** - * Saves the property value to initial value. + * Saves the local property value to initial value. */ public commit(): this { - this.initialValue = this.rawValue; + + if (this.isModel()) { + (toArray(this.rawValue) || []) + .filter((doc) => isInstanceOf(doc, Model)) + .forEach((doc) => doc.commit()); + } + + const value = this.rawValue; // same process as serialization + if (!value) { + this.initialValue = null; + } else if (this.isModel()) { + if (this.isArray()) { + this.initialValue = value.map((m) => m ? m.serialize() : null); + } else { + this.initialValue = value.serialize(); + } + } else { + this.initialValue = normalize(value); + } return this; } /** - * Sets property value to the initial value. + * Sets local property value to the initial value. */ public rollback(): this { - this.rawValue = this.initialValue; // normalize and keep functions + let value = this.initialValue; + + if (this.$config.cast) { + value = this.cast(value); + } + + this.rawValue = value; return this; } /** - * Validates the property and saves the error on the class itself. + * Validates the property and sets errors codes. */ public async validate(): Promise { - const validator = typeof this.$config.validator === 'function' - ? this.$config.validator.call(this) - : this.$config.validator; + await Promise.all( // validate related models + (toArray(this.rawValue) || []) + .filter((doc) => isInstanceOf(doc, Model)) + .map((doc) => doc.validate({ quiet: true })) + ); + + const validator = realize(this.$config.validator, this) as Validator; this.errorCodes = await validator.validate( this.getValue(), this.$config.validate @@ -354,13 +387,17 @@ export class Prop { } /** - * Handles property error and saves the error on the class itself . + * Handles property error and sets error codes. */ public async handle(error: any): Promise { - const handler = typeof this.$config.handler === 'function' - ? this.$config.handler.call(this) - : this.$config.handler; + await Promise.all( // handle related models + (toArray(this.rawValue) || []) + .filter((doc) => isInstanceOf(doc, Model)) + .map((doc) => doc.handle(error)) + ).catch(() => {}); // do not throw even when unhandled error + + const handler = realize(this.$config.handler, this) as Handler; this.errorCodes = await handler.handle( error, this.$config.handle @@ -373,6 +410,10 @@ export class Prop { * Clears errors. */ public invalidate(): this { + (toArray(this.rawValue) || []) // invalidate related models + .filter((doc) => isInstanceOf(doc, Model)) + .forEach((doc) => doc.invalidate()); + this.errorCodes = []; return this; diff --git a/src/utils.ts b/src/core/utils.ts similarity index 73% rename from src/utils.ts rename to src/core/utils.ts index 847bda2..df3580d 100644 --- a/src/utils.ts +++ b/src/core/utils.ts @@ -7,12 +7,23 @@ export function normalize(data: any) { } try { return JSON.parse(JSON.stringify(data)); - } - catch (e) { + } catch (e) { return null; } } +/** + * Executes the value if the value is a function otherwise the value is returned. + * @param value Function or a value. + * @param context Value function context. + * @param args Value function arguments. + */ +export function realize(value: any, context?: any, args?: any[]) { + return isFunction(value) + ? value.call(context, ...args) + : value; +} + /** * Returns `true` if the provided values are deeply equal. * @param a Value A. @@ -22,17 +33,17 @@ export function isDeepEqual(a, b) { if (a === b) { return true; } - if (a == null || typeof a != "object" || b == null || typeof b != "object") { + if (a == null || typeof a != 'object' || b == null || typeof b != 'object') { return false; } - var propsInA = 0; - var propsInB = 0; - - for (var prop in a) { + let propsInA = 0; + let propsInB = 0; + + for (const prop in a) { propsInA += 1; } - - for (let prop in b) { + + for (const prop in b) { propsInB += 1; if (!(prop in a) || !isDeepEqual(a[prop], b[prop])) { return false; @@ -41,6 +52,43 @@ export function isDeepEqual(a, b) { return propsInA == propsInB; } +/** + * Returns `true` if the provided value represents an instance of a class. + * @param v Arbitrary value. + * @param k Class object. + */ +export function isInstanceOf(v?: any, k?: any) { + try { + return ( + isPresent(v) + && isPresent(k) + && v instanceof k + ); + } catch (e) { + return false; + } +} + +/** + * Returns `true` if the provided value represents an subclass of a class. + * @param v Arbitrary value. + * @param k Class object. + */ +export function isClassOf(v?: any, k?: any) { + try { + return ( + isPresent(v) + && isPresent(k) + && ( + v.prototype instanceof k + || v.prototype.constructor === k + ) + ); + } catch (e) { + return false; + } +} + /** * Returns `true` if the provided value is undefined. * @param v Arbitrary value. @@ -184,11 +232,9 @@ export function isFunction(v?: any) { export function toString(v?: any) { if (isString(v)) { return v; - } - else if (isUndefined(v) || isNull(v)) { + } else if (isUndefined(v) || isNull(v)) { return null; - } - else { + } else { return toString(v.toString()); } } @@ -200,11 +246,9 @@ export function toString(v?: any) { export function toBoolean(v?: any) { if (isBoolean(v)) { return v; - } - else if (isUndefined(v) || isNull(v)) { + } else if (isUndefined(v) || isNull(v)) { return null; - } - else { + } else { return ( parseFloat(v) > 0 || isInfinite(v) @@ -223,22 +267,17 @@ export function toBoolean(v?: any) { export function toInteger(v?: any) { if (isInteger(v)) { return v; - } - else if (isUndefined(v) || isNull(v)) { + } else if (isUndefined(v) || isNull(v)) { return null; - } - else if (isFloat(v)) { + } else if (isFloat(v)) { return parseInt(v); - } - else { - var pv = parseInt(v); + } else { + const pv = parseInt(v); if (isInteger(pv)) { return pv; - } - else if (toBoolean(v)) { + } else if (toBoolean(v)) { return 1; - } - else { + } else { return 0; } } @@ -251,19 +290,15 @@ export function toInteger(v?: any) { export function toFloat(v?: any) { if (isFloat(v)) { return v; - } - else if (isUndefined(v) || isNull(v)) { + } else if (isUndefined(v) || isNull(v)) { return null; - } - else { - var pv = parseFloat(v); + } else { + const pv = parseFloat(v); if (isFloat(pv)) { return pv; - } - else if (toBoolean(v)) { + } else if (toBoolean(v)) { return 1; - } - else { + } else { return 0; } } @@ -282,9 +317,9 @@ export function toNumber(v?: any) { * @param v Arbitrary value. */ export function toDate(v?: any): Date { - var date = isDate(v) ? v : new Date(v); - var time = date.getTime(); - var isValid = ( + const date = isDate(v) ? v : new Date(v); + const time = date.getTime(); + const isValid = ( isPresent(v) && isInteger(time) ); @@ -299,14 +334,11 @@ export function toDate(v?: any): Date { export function toArray(v?: any): Array { if (isArray(v)) { return v; - } - else if (isUndefined(v) || isNull(v)) { + } else if (isUndefined(v) || isNull(v)) { return null; - } - else if (!isValue(v)) { + } else if (!isValue(v)) { return []; - } - else { + } else { return [v]; } } diff --git a/src/validator.ts b/src/core/validator.ts similarity index 78% rename from src/validator.ts rename to src/core/validator.ts index f9c7a12..6310a00 100644 --- a/src/validator.ts +++ b/src/core/validator.ts @@ -1,3 +1,5 @@ +import { realize, isArray } from './utils'; + /** * Validation recipe interface. */ @@ -38,8 +40,8 @@ export class Validator { async validate(value: any, recipes: ValidatorRecipe[] = []): Promise { const codes = []; - for (let recipe of recipes) { - + for (const recipe of recipes) { + const condition = recipe.condition; if (condition) { const result = await condition.call(this.$config.ctx, value, recipe); @@ -48,21 +50,16 @@ export class Validator { } } - const context = typeof this.$config.ctx === 'function' - ? this.$config.ctx() - : this.$config.ctx; + const context = realize(this.$config.ctx); const isValid = await Promise.all( - (Array.isArray(value) ? value : [value]) + (isArray(value) ? value : [value]) .map((v) => recipe.handler.call(context, v, recipe)) ).then((r) => r.indexOf(false) === -1); if (!isValid) { codes.push(recipe.code); - const failFast = typeof this.$config.failFast === 'function' - ? this.$config.failFast() - : this.$config.failFast; - if (failFast) { + if (realize(this.$config.failFast)) { break; } } diff --git a/src/index.ts b/src/index.ts index ff5298b..52a2b2a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,6 +1,6 @@ -export * from './handler'; -export * from './models'; -export * from './parsing'; -export * from './props'; -export * from './utils'; -export * from './validator'; +export * from './core/utils'; +export * from './core/parsing'; +export * from './core/handler'; +export * from './core/validator'; +export * from './core/models'; +export * from './core/props'; diff --git a/tests/handler.test.ts b/src/tests/core/handler.test.ts similarity index 95% rename from tests/handler.test.ts rename to src/tests/core/handler.test.ts index 3cd509d..cecd79a 100644 --- a/tests/handler.test.ts +++ b/src/tests/core/handler.test.ts @@ -1,5 +1,5 @@ import { Spec } from '@hayspec/spec'; -import { Handler } from '../src'; +import { Handler } from '../..'; const spec = new Spec(); @@ -45,7 +45,7 @@ spec.test('methods `handle` passes context to each handler', async (ctx) => { ctx: { foo: 'foo' }, }); const recipes = [ - { code: 100, handler(v) { return v === this.foo} }, + { code: 100, handler(v) { return v === this.foo; } }, ]; const codes = await handler.handle('foo', recipes); ctx.deepEqual(codes, [100]); @@ -56,7 +56,7 @@ spec.test('methods `handle` passes context to each condition', async (ctx) => { ctx: { foo: 'foo' }, }); const recipes = [ - { code: 100, handler: (v) => true, condition(v) { return v === this.foo } }, + { code: 100, handler: (v) => true, condition(v) { return v === this.foo; } }, ]; const codes = await handler.handle('foo', recipes); ctx.deepEqual(codes, [100]); diff --git a/tests/models.test.ts b/src/tests/core/models.test.ts similarity index 66% rename from tests/models.test.ts rename to src/tests/core/models.test.ts index fc05a40..bc66b28 100644 --- a/tests/models.test.ts +++ b/src/tests/core/models.test.ts @@ -1,5 +1,5 @@ import { Spec } from '@hayspec/spec'; -import { Model, Prop, prop } from '../src'; +import { Model, Prop, prop } from '../..'; const spec = new Spec(); @@ -91,6 +91,25 @@ spec.test('decorator `prop` supports default value', (ctx) => { ctx.is(user.name, 'foo'); }); +spec.test('decorator `prop` supports property enumerable style', (ctx) => { + class User0 extends Model { + @prop({ + enumerable: true, + }) + name: string; + } + class User1 extends Model { + @prop({ + enumerable: false, + }) + name: string; + } + const user0 = new User0({}); + const user1 = new User1({}); + ctx.deepEqual(Object.keys(user0), ['name']); + ctx.deepEqual(Object.keys(user1), []); +}); + spec.test('method `getParent` returns an instance of the parent model', (ctx) => { class Book extends Model { @prop() @@ -782,11 +801,11 @@ spec.test('method `isChanged` returns `true` if at least one prop has been chang user0.name = 'foo-new'; ctx.true(user0.isChanged()); user1.book.title = 'bar-new'; - ctx.false(user1.isChanged()); - user2.books[0] = { title: 'baz-new' } as Book; - ctx.false(user2.isChanged()); + ctx.true(user1.isChanged()); + user2.books[0] = { title: 'baz-new' } as Book; // model instances in array + ctx.true(user2.isChanged()); user3.books[1].title = 'baz-new'; - ctx.false(user3.isChanged()); + ctx.true(user3.isChanged()); }); spec.test('method `applyErrors` sets properties errors', (ctx) => { @@ -881,303 +900,196 @@ spec.test('method `isValid` tell if model has no errors', async (ctx) => { ctx.false(user0.isValid()); }); -// test('method `validate` validates props and throws an error', async (ctx) => { -// const validate = [ -// { validator: 'presence', message: 'foo' }, -// { validator: 'presence', code: 999 }, -// ]; -// class Book extends Model { -// constructor(data) { -// super(data); -// this.defineProp('title', { validate }); -// } -// } -// class User extends Model { -// constructor(data) { -// super(data); -// this.defineProp('name', { validate }); -// this.defineProp('book0', { type: Book, validate }); -// this.defineProp('books0', { type: [Book], validate }); -// this.defineProp('book1', { type: Book, validate }); -// this.defineProp('books1', { type: [Book], validate }); -// this.populate(data); -// } -// } -// const user = new User({ -// book1: {}, -// books1: [{}] -// }); -// const errors = [ -// { validator: 'presence', message: 'foo', code: 422 }, -// { validator: 'presence', message: undefined, code: 999 }, -// ]; -// await user.validate({quiet: true}); -// ctx.is(await user.validate().catch(() => false), false); -// ctx.deepEqual(user.collectErrors() as {}, [ -// { path: ['name'], errors }, -// { path: ['book0'], errors }, -// { path: ['books0'], errors }, -// { path: ['book1', 'title'], errors }, -// { path: ['books1', 0, 'title'], errors }, -// ]); -// }); - -// test('method `defineValidator` defines a custom prop validator', async (ctx) => { -// const validator = function (v) { -// return this.value === 'cool' && v === 'cool'; -// }; -// const validate = [{ -// validator: 'coolness', -// message: 'foo' -// }]; -// class Book extends Model { -// constructor(data) { -// super(data); -// this.defineValidator('coolness', validator); -// this.defineProp('title', { validate }); -// } -// } -// class User extends Model { -// constructor(data) { -// super(data); -// this.defineValidator('coolness', validator); -// this.defineProp('name', { validate }); -// this.defineProp('book', { type: Book, validate }); -// this.populate(data); -// } -// } -// const user = new User({ -// book: {} -// }); -// const errors = [{ validator: 'coolness', message: 'foo', code: 422 }]; -// await user.validate({quiet: true}); -// ctx.deepEqual(user.collectErrors() as {}, [ -// {path: ['name'], errors}, -// {path: ['book'], errors}, -// {path: ['book', 'title'], errors}, -// ]); -// }); - -// test('method `failFast` configures validator to stop validating prop on the first error', async (ctx) => { -// const validate = [ -// { validator: 'presence', message: 'foo' }, -// { validator: 'presence', message: 'foo' }, -// ]; -// class Book extends Model { -// constructor(data) { -// super(data); -// this.failFast(); -// this.defineProp('title', { validate }); -// } -// } -// class User extends Model { -// constructor(data) { -// super(data); -// this.failFast(); -// this.defineProp('name', { validate }); -// this.defineProp('book', { type: Book }); -// this.populate(data); -// } -// } -// const user = new User({ -// book: {} -// }); -// const errors = [{ validator: 'presence', message: 'foo', code: 422 }]; -// await user.validate({ quiet: true }); -// ctx.is(user.getProp('name').errors.length, 1); -// ctx.is(user.getProp('book', 'title').errors.length, 1); -// }); - -// test('method `invalidate` clears props errors', async (ctx) => { -// class Book extends Model { -// constructor(data) { -// super(data); -// this.defineProp('title'); -// } -// } -// class User extends Model { -// constructor(data) { -// super(data); -// this.defineProp('name'); -// this.defineProp('book', { type: Book }); -// this.defineProp('books', { type: [Book] }); -// this.populate(data); -// } -// } -// const user = new User({ -// book: {}, -// books: [null, {}] -// }); -// user.applyErrors([ -// { path: ['name'], errors: [{ message: 'foo'}] }, -// { path: ['book', 'title'], errors: [{ message: 'bar'}] }, -// { path: ['books', 1, 'title'], errors: [{ message: 'baz'}] }, -// ]); -// user.invalidate(); -// ctx.deepEqual(user.getProp('name').errors, []); -// ctx.deepEqual(user.getProp('book', 'title').errors, []); -// ctx.deepEqual(user.getProp('books', 1, 'title').errors, []); -// }); - -// test('method `clone` returns an exact copy of the original', (ctx) => { -// class Book extends Model { -// title: string; -// constructor(data?) { -// super(data); -// this.defineProp('title'); -// this.commit(); -// } -// } -// class User extends Model { -// name: string; -// book: Book; -// books: Book[]; -// constructor(data?) { -// super(data); -// this.defineProp('name'); -// this.defineProp('book', { type: Book }); -// this.defineProp('books', { type: [Book] }); -// this.populate(data); -// this.commit(); -// } -// } -// const parent = new Book(); -// const user = new User({ -// parent, // fake parent -// name: 'foo', -// book: { -// title: 'bar' -// }, -// books: [ -// null, -// { -// title: 'baz' -// } -// ] -// }); -// const clone0 = user.clone(); -// const clone1 = user.clone({book: { title: 'foo' }}); -// ctx.is(clone0 !== user, true); -// ctx.is(clone0.equals(user), true); -// ctx.is(clone0.book.parent, clone0); -// ctx.is(clone0.parent, parent); -// ctx.is(clone0.parent, parent); -// ctx.is(clone1.book.title, 'foo'); -// }); - -// test('method `handle` handles prop-related errors', async (ctx) => { -// const handle = [{ -// handler: 'block', -// message: '%{foo}', -// block: async () => true, -// foo: 'foo' -// }]; -// class Book extends Model { -// constructor(data) { -// super(data); -// this.defineProp('title', { handle }); -// } -// } -// class Country extends Model { -// constructor(data) { -// super(data); -// this.defineProp('code'); // this prop is nested and without handler -// this.populate(data); -// } -// } -// class User extends Model { -// constructor(data) { -// super(data); -// this.defineProp('name', { handle }); -// this.defineProp('book0', { type: Book, handle }); -// this.defineProp('books0', { type: [Book], handle }); -// this.defineProp('book1', { type: Book }); -// this.defineProp('books1', { type: [Book] }); -// this.defineProp('country', { type: [Country] }); -// this.populate(data); -// } -// } -// const user = new User({ -// book1: {}, -// books1: [{}], -// country: {} -// }); -// const problem0 = new Error(); -// const problem1 = new Error() as any; problem1.code = 422; -// const errors = [{ handler: 'block', message: 'foo', code: 422 }]; -// ctx.is(await user.handle(problem0, { quiet: false }).catch(() => false), false); -// ctx.is(await user.handle(problem0).then(() => true), true); -// ctx.is(await user.handle(problem1, { quiet: false }).then(() => true), true); -// await user.handle(problem0); -// ctx.deepEqual(user.collectErrors() as {}, [ -// { path: ['name'], errors }, -// { path: ['book0'], errors }, -// { path: ['books0'], errors }, -// { path: ['book1', 'title'], errors }, -// { path: ['books1', 0, 'title'], errors }, -// ]); -// }); +spec.test('method `validate` validates properties and throws an error', async (ctx) => { + const validate = [ + { handler: (v) => !!v, code: 100 }, + { handler: (v) => !!v, code: 200 }, + ]; + class Book extends Model { + @prop({ + validate, + }) + title: string; + } + class User extends Model { + @prop({ + validate, + }) + name: string; + @prop({ + validate, + cast: { handler: Book }, + }) + book0: Book; + @prop({ + validate, + cast: { handler: Book, array: true }, + }) + books0: Book[]; + @prop({ + validate, + cast: { handler: Book }, + }) + book1: Book; + @prop({ + validate, + cast: { handler: Book, array: true }, + }) + books1: Book[]; + } + const user = new User({ + book1: {}, + books1: [{}] + }); + const errors = [100, 200]; + await user.validate({quiet: true}); + ctx.is(await user.validate().catch(() => false), false); + ctx.deepEqual(user.collectErrors(), [ + { path: ['name'], errors }, + { path: ['book0'], errors }, + { path: ['books0'], errors }, + { path: ['book1', 'title'], errors }, + { path: ['books1', 0, 'title'], errors }, + ]); +}); -// test('method `defineHandler` defines a custom prop handler', async (ctx) => { -// const handler = function (e) { -// return e.message === 'cool'; -// }; -// const handle = [{ -// handler: 'coolness', -// message: '%{foo}', -// foo: 'foo' -// }]; -// class Book extends Model { -// constructor(data) { -// super(data); -// this.defineHandler('coolness', handler); -// this.defineProp('title', { handle }); -// } -// } -// class User extends Model { -// constructor(data) { -// super(data); -// this.defineHandler('coolness', handler); -// this.defineProp('name', { handle }); -// this.defineProp('book', { type: Book }); -// this.defineProp('books', { type: [Book] }); -// this.populate(data); -// } -// } -// const user = new User({ -// book: {}, -// books: [{}] -// }); -// const problem = new Error('cool'); -// const errors = [{ handler: 'coolness', message: 'foo', code: 422 }]; -// await user.handle(problem); -// ctx.deepEqual(user.collectErrors() as {}, [ -// { path: ['name'], errors }, -// { path: ['book', 'title'], errors }, -// { path: ['books', 0, 'title'], errors }, -// ]); -// }); +spec.test('method `handle` handles property errors', async (ctx) => { + const handle = [{ + handler: (e) => e.message === 'foo', + code: 100, + }]; + class Book extends Model { + @prop({ + handle + }) + title: string; + } + class Country extends Model { + @prop() + code: string; + } + class User extends Model { + @prop({ + handle + }) + name: string; + @prop({ + handle, + cast: { handler: Book }, + }) + book0: Book; + @prop({ + handle, + cast: { handler: Book, array: true }, + }) + books0: Book[]; + @prop({ + cast: { handler: Book }, + }) + book1: Book; + @prop({ + cast: { handler: Book, array: true }, + }) + books1: Book[]; + @prop({ + cast: { handler: Country }, + }) + country: Country; + } + const user = new User({ + book1: {}, + books1: [{}], + country: {}, + }); + const problem0 = new Error(); + const problem1 = new Error('foo'); + const errors = [100]; + await user.handle(problem0); + ctx.true(user.isValid()); + await user.handle(problem1); + ctx.false(user.isValid()); + ctx.throws(() => user.handle(problem0, { quiet: false })); + ctx.throws(() => user.handle(problem1, { quiet: false })); + ctx.deepEqual(user.collectErrors(), [ + { path: ['name'], errors }, + { path: ['book0'], errors }, + { path: ['books0'], errors }, + { path: ['book1', 'title'], errors }, + { path: ['books1', 0, 'title'], errors }, + ]); +}); -// test('property `enumerable` handles prop visibility', (ctx) => { -// class User0 extends Model { -// name: string; -// constructor(data) { -// super(data); -// this.defineProp('name', { enumerable: true }); -// } -// } -// class User1 extends Model { -// name: string; -// constructor(data) { -// super(data); -// this.defineProp('name', { enumerable: false }); -// } -// } -// const user0 = new User0({}); -// const user1 = new User1({}); -// ctx.deepEqual(Object.keys(user0), ['name']); -// ctx.deepEqual(Object.keys(user1), []); -// }); +spec.test('method `invalidate` clears property errors', async (ctx) => { + class Book extends Model { + @prop() + title: string; + } + class User extends Model { + @prop() + name: string; + @prop({ + cast: { handler: Book }, + }) + book: Book; + @prop({ + cast: { handler: Book, array: true }, + }) + books: Book[]; + } + const user = new User({ + book: {}, + books: [null, {}] + }); + user.applyErrors([ + { path: ['name'], errors: [100] }, + { path: ['book', 'title'], errors: [200] }, + { path: ['books', 1, 'title'], errors: [300] }, + ]); + user.invalidate(); + ctx.deepEqual(user.getProp('name').getErrorCodes(), []); + ctx.deepEqual(user.getProp('book', 'title').getErrorCodes(), []); + ctx.deepEqual(user.getProp('books', 1, 'title').getErrorCodes(), []); +}); +spec.test('method `clone` returns an exact copy of the original', (ctx) => { + class Book extends Model { + @prop() + title: string; + } + class User extends Model { + @prop() + name: string; + @prop({ + cast: { handler: Book }, + }) + book: Book; + @prop({ + cast: { handler: Book, array: true }, + }) + books: Book[]; + } + const parent = new Book(); + const user = new User({ + parent, // fake parent + name: 'foo', + book: { + title: 'bar' + }, + books: [ + null, + { + title: 'baz' + } + ] + }); + const clone0 = user.clone(); + const clone1 = user.clone({book: { title: 'foo' }}); + ctx.true(clone0 !== user); + ctx.true(clone0.isEqual(user)); + ctx.is(clone0.book.getParent(), clone0); + ctx.is(clone0.getParent(), null); + ctx.is(clone0.getRoot(), clone0); + ctx.is(clone1.book.title, 'foo'); +}); export default spec; diff --git a/tests/parsing.test.ts b/src/tests/core/parsing.test.ts similarity index 98% rename from tests/parsing.test.ts rename to src/tests/core/parsing.test.ts index 2e45124..43fad58 100644 --- a/tests/parsing.test.ts +++ b/src/tests/core/parsing.test.ts @@ -1,5 +1,5 @@ import { Spec } from '@hayspec/spec'; -import { cast } from '../src'; +import { cast } from '../..'; const spec = new Spec(); diff --git a/tests/props.test.ts b/src/tests/core/props.test.ts similarity index 88% rename from tests/props.test.ts rename to src/tests/core/props.test.ts index 4b947a5..d1824f7 100644 --- a/tests/props.test.ts +++ b/src/tests/core/props.test.ts @@ -1,5 +1,5 @@ import { Spec } from '@hayspec/spec'; -import { Model, Prop, Handler, Validator } from '../src'; +import { Model, Prop, prop, Handler, Validator } from '../..'; const spec = new Spec(); @@ -133,13 +133,21 @@ spec.test('methods `isEmpty` returns true if the property value is empty', (ctx) }); spec.test('methods `isChanged` returns true if the property value has been changed', (ctx) => { - const prop = new Prop(); - ctx.false(prop.isChanged()); - prop.setValue(null); - ctx.false(prop.isChanged()); - prop.setValue('foo'); - prop.commit(); - ctx.false(prop.isChanged()); + class User extends Model { + @prop() + name: string; + } + const user = new User(); + const prop0 = new Prop(); + ctx.false(prop0.isChanged()); + prop0.setValue(null); + ctx.false(prop0.isChanged()); + prop0.setValue('foo'); + prop0.commit(); + ctx.false(prop0.isChanged()); + prop0.setValue(user); + user.name = 'foo'; + ctx.true(prop0.isChanged()); }); spec.test('methods `isEqual` returns true if the property value equals to the provided one', (ctx) => { @@ -153,8 +161,21 @@ spec.test('methods `isEqual` returns true if the property value equals to the pr }); spec.test('methods `isValid` returns true if the property has no errors', (ctx) => { - const prop = new Prop(); - ctx.true(prop.isValid()); + class User extends Model { + @prop() + name: string; + } + const user = new User(); + const prop0 = new Prop(); + ctx.true(prop0.isValid()); + prop0.setErrorCodes(100); + ctx.false(prop0.isValid()); + prop0.setErrorCodes(); + prop0.setValue(user); + ctx.true(prop0.isValid()); + prop0.$config.cast = { handler: User }; // nested model type + user.getProp('name').setErrorCodes(200); // nested model error + ctx.false(prop0.isValid()); }); spec.test('methods `reset` resets property to default value', (ctx) => { diff --git a/tests/utils.test.ts b/src/tests/core/utils.test.ts similarity index 73% rename from tests/utils.test.ts rename to src/tests/core/utils.test.ts index 36ce308..2c59374 100644 --- a/tests/utils.test.ts +++ b/src/tests/core/utils.test.ts @@ -1,16 +1,77 @@ import { Spec } from '@hayspec/spec'; -import { normalize, isDeepEqual, isUndefined, isNull, isInfinite, isValue, isString, - isBoolean, isNumber, isInteger, isFloat, toNumber, isDate, isObject, isArray, - isPresent, isFunction, toString, toBoolean, toInteger, toFloat, toDate, toArray } from '../src'; +import { normalize, realize, isDeepEqual, isInstanceOf, isClassOf, isUndefined, + isNull, isInfinite, isValue, isString, isBoolean, isNumber, isInteger, isFloat, + toNumber, isDate, isObject, isArray, isPresent, isFunction, toString, + toBoolean, toInteger, toFloat, toDate, toArray } from '../..'; const spec = new Spec(); spec.test('normalize', (ctx) => { - // ctx.true(deepEqual('foo', 'foo')); + class User { + public foo: string = 'Foo'; + public bar: string = 'Bar'; + } + const user = new User(); + ctx.false(normalize(user) instanceof User); + ctx.is(normalize(null), null); + ctx.is(normalize(undefined), null); // nullify + ctx.is(normalize(false), false); + ctx.deepEqual(normalize(user), { + foo: 'Foo', + bar: 'Bar', + }); +}); + +spec.test('realize', (ctx) => { + ctx.is(realize('foo'), 'foo'); + ctx.is(realize(100), 100); + ctx.is(realize(() => 'bar'), 'bar'); + ctx.is(realize(function() { return `${this.foo}bar`; }, { foo: 'foo' }), 'foobar'); + ctx.is(realize(function(a, b) { return `${a}${b}baz`; }, null, ['foo', 'bar']), 'foobarbaz'); }); spec.test('isDeepEqual', (ctx) => { - // ctx.true(isDeepEqual('foo', 'foo')); + ctx.true(isDeepEqual('foo', 'foo')); + ctx.true(isDeepEqual('', '')); + ctx.false(isDeepEqual('', 'foo')); + ctx.true(isDeepEqual(null, null)); + ctx.true(isDeepEqual(undefined, undefined)); + ctx.false(isDeepEqual(null, undefined)); + ctx.true(isDeepEqual(false, false)); + ctx.true(isDeepEqual(true, true)); + ctx.false(isDeepEqual(false, true)); + ctx.true(isDeepEqual({ a: 1, b: 2 }, { a: 1, b: 2 })); + ctx.true(isDeepEqual({ a: 1, b: 2 }, { b: 2, a: 1 })); + ctx.true(isDeepEqual({ a: 1, b: { c: [1, 2] }}, { a: 1, b: { c: [1, 2] }})); + ctx.false(isDeepEqual({ a: 1, b: { c: [1, 2] }}, { a: 1, b: { c: [2, 1] }})); +}); + +spec.test('isInstanceOf', (ctx) => { + class Fake {} + class Base {} + class User extends Base {} + ctx.true(isInstanceOf(new Base(), Base)); + ctx.true(isInstanceOf(new User(), Base)); + ctx.false(isInstanceOf(new Fake(), Base)); + ctx.false(isInstanceOf(new Base(), 'foo')); + ctx.false(isInstanceOf(null, Base)); + ctx.false(isInstanceOf(undefined, Base)); + ctx.false(isInstanceOf('foo', Base)); + ctx.false(isInstanceOf(false, Base)); +}); + +spec.test('isClassOf', (ctx) => { + class Fake {} + class Base {} + class User extends Base {} + ctx.true(isClassOf(Base, Base)); + ctx.true(isClassOf(User, Base)); + ctx.false(isClassOf(Fake, Base)); + ctx.false(isClassOf(Base, 'foo')); + ctx.false(isClassOf(null, Base)); + ctx.false(isClassOf(undefined, Base)); + ctx.false(isClassOf('foo', Base)); + ctx.false(isClassOf(false, Base)); }); spec.test('isUndefined', (ctx) => { @@ -155,7 +216,7 @@ spec.test('toString', (ctx) => { ctx.is(toString(Infinity), 'Infinity'); ctx.is(toString(true), 'true'); ctx.is(toString(100.1), '100.1'); - ctx.is(toString([1,2]), '1,2'); + ctx.is(toString([1, 2]), '1,2'); }); spec.test('toBoolean', (ctx) => { @@ -232,7 +293,7 @@ spec.test('toNumber', (ctx) => { }); spec.test('toDate', (ctx) => { - let d = new Date(); + const d = new Date(); ctx.is(toDate(d), d); ctx.deepEqual(toDate(100000), new Date(100000)); ctx.deepEqual(toDate('2016-01-02'), new Date('2016-01-02')); diff --git a/tests/validator.test.ts b/src/tests/core/validator.test.ts similarity index 95% rename from tests/validator.test.ts rename to src/tests/core/validator.test.ts index 9e0325e..0b0f3ef 100644 --- a/tests/validator.test.ts +++ b/src/tests/core/validator.test.ts @@ -1,5 +1,5 @@ import { Spec } from '@hayspec/spec'; -import { Validator } from '../src'; +import { Validator } from '../..'; const spec = new Spec(); @@ -44,7 +44,7 @@ spec.test('methods `validate` passes context to each handler', async (ctx) => { ctx: { foo: 'foo' }, }); const recipes = [ - { code: 100, handler(v) { return v === this.foo} }, + { code: 100, handler(v) { return v === this.foo; } }, ]; const codes = await validator.validate('foo', recipes); ctx.deepEqual(codes, []); @@ -55,7 +55,7 @@ spec.test('methods `validate` passes context to each condition', async (ctx) => ctx: { foo: 'foo' }, }); const recipes = [ - { code: 100, handler: (v) => false, condition(v) { return v === this.foo } }, + { code: 100, handler: (v) => false, condition(v) { return v === this.foo; } }, ]; const codes = await validator.validate('foo', recipes); ctx.deepEqual(codes, [100]); diff --git a/tests/index.test.ts b/src/tests/index.test.ts similarity index 88% rename from tests/index.test.ts rename to src/tests/index.test.ts index 45079b1..0856ce3 100644 --- a/tests/index.test.ts +++ b/src/tests/index.test.ts @@ -1,5 +1,5 @@ import { Spec } from '@hayspec/spec'; -import * as rawmodel from '../src'; +import * as rawmodel from '..'; const spec = new Spec(); diff --git a/tsconfig.json b/tsconfig.json index 11d5d2f..4d6a8fc 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,13 +1,12 @@ { "compilerOptions": { "module": "commonjs", - "target": "es5", + "target": "es3", "noImplicitAny": false, "removeComments": true, "sourceMap": true, "outDir": "dist", "declaration": true, - "emitDecoratorMetadata": true, "experimentalDecorators": true, "lib": ["es2015.promise", "es2015.iterable", "es5"] } From bf9a9ca4c72379b275c589b5ca6a531240a9b2b3 Mon Sep 17 00:00:00 2001 From: Kristijan Sedlak Date: Tue, 18 Sep 2018 00:59:46 +0200 Subject: [PATCH 218/219] Change node support from >= 6 --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 53fc891..b5f082e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ language: node_js node_js: + - "10" + - "9" - "8" - "7" - "6" - - "5" - - "4" From c5f6f05dd0584f1b794bab4820149ab8df0eb8f6 Mon Sep 17 00:00:00 2001 From: Kristijan Sedlak Date: Tue, 18 Sep 2018 01:06:03 +0200 Subject: [PATCH 219/219] Configure --- package.json | 4 ++-- tsconfig.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 10a8178..0af6308 100644 --- a/package.json +++ b/package.json @@ -6,9 +6,9 @@ "types": "./dist/src/index.d.ts", "scripts": { "clean": "rm -Rf ./dist", - "build": "npm run clean; tsc", + "transpile": "npm run clean; tsc", "lint": "tslint 'src/**/*.ts?(x)'", - "prepare": "npm run build", + "prepare": "npm run transpile", "test": "hayspec test --require ts-node/register --match ./src/tests/**/*.test.ts" }, "repository": { diff --git a/tsconfig.json b/tsconfig.json index 4d6a8fc..dbc05f7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,7 @@ { "compilerOptions": { "module": "commonjs", - "target": "es3", + "target": "es5", "noImplicitAny": false, "removeComments": true, "sourceMap": true,