Comparing version 3.0.0-beta.10 to 3.0.0-rc.1
@@ -0,1 +1,15 @@ | ||
##### 3.0.0-rc.1 - 08 July 2016 | ||
###### Breaking changes | ||
- Added `Mapper#applyDefaults` option which defaults to `true` | ||
- #352 - `Mapper#beforeCreate` and `Mapper#beforeCreateMany` now apply default values | ||
to records for missing values according to the Mapper's schema and the `applyDefaults` option. | ||
###### Backwards compatible changes | ||
- Added the `ctx` property to the `opts` argument passed to validation keywords | ||
- Added `Schema#applyDefaults(target)` method | ||
###### Bug fixes | ||
- #365 - "noValidate" should be used instead of "validate" | ||
##### 3.0.0-beta.10 - 02 July 2016 | ||
@@ -2,0 +16,0 @@ |
{ | ||
"name": "js-data", | ||
"description": "Robust, framework-agnostic in-memory data store.", | ||
"version": "3.0.0-beta.10", | ||
"version": "3.0.0-rc.1", | ||
"homepage": "http://www.js-data.io", | ||
@@ -75,3 +75,3 @@ "repository": { | ||
"js-data-repo-tools": "0.5.5", | ||
"karma": "1.1.0", | ||
"karma": "1.1.1", | ||
"karma-babel-preprocessor": "6.0.1", | ||
@@ -85,4 +85,4 @@ "karma-chai": "0.1.0", | ||
"phantomjs-prebuilt": "2.1.7", | ||
"uglify-js": "2.6.4" | ||
"uglify-js": "2.7.0" | ||
} | ||
} |
@@ -61,3 +61,3 @@ import utils from './utils' | ||
* // import {Collection, Record} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Collection, Record} = JSData | ||
@@ -106,3 +106,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // Normally you would do: import {Collection, Mapper} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Collection, Mapper} = JSData | ||
@@ -423,3 +423,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // Normally you would do: import {Collection} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Collection} = JSData | ||
@@ -889,3 +889,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // Normally you would do: import {Collection} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Collection} = JSData | ||
@@ -892,0 +892,0 @@ * console.log('Using JSData v' + JSData.version.full) |
@@ -35,3 +35,3 @@ import utils from './utils' | ||
* // Normally you would do: import {Component} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Component} = JSData | ||
@@ -74,3 +74,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // Normally you would do: import {Component} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Component} = JSData | ||
@@ -208,3 +208,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // import {Collection, DataStore} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Collection, DataStore} = JSData | ||
@@ -211,0 +211,0 @@ * |
@@ -901,7 +901,10 @@ import utils from './utils' | ||
* | ||
* A `Container` makes it easy to manage your Mappers. | ||
* `Container` makes it easy to manage your Mappers. Without a container, you | ||
* need to manage Mappers yourself, including resolving circular dependencies | ||
* among relations. All Mappers in a container share the same adapters, so you | ||
* don't have to register adapters for every single Mapper. | ||
* | ||
* @example <caption>Container#constructor</caption> | ||
* // import {Container} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Container} = JSData | ||
@@ -958,3 +961,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // import {Container, Mapper} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Container} = JSData | ||
@@ -992,3 +995,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // import {Container} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Container} = JSData | ||
@@ -1028,3 +1031,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // import {Container} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Container} = JSData | ||
@@ -1065,3 +1068,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // import {Container} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Container} = JSData | ||
@@ -1111,3 +1114,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // import {Container} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Container} = JSData | ||
@@ -1229,3 +1232,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // import {Container} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Container} = JSData | ||
@@ -1261,3 +1264,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // import {Container} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Container} = JSData | ||
@@ -1327,3 +1330,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // Normally you would do: import {Container} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Container} = JSData | ||
@@ -1330,0 +1333,0 @@ * console.log('Using JSData v' + JSData.version.full) |
@@ -135,3 +135,3 @@ import utils from './utils' | ||
* // Normally you would do: import {LinkedCollection} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {LinkedCollection} = JSData | ||
@@ -138,0 +138,0 @@ * console.log('Using JSData v' + JSData.version.full) |
@@ -277,5 +277,5 @@ import utils from './utils' | ||
if (op.indexOf('like') === 0) { | ||
return !utils.isNull(this.like(predicate, op.substr(4)).exec(value)) | ||
return this.like(predicate, op.substr(4)).exec(value) !== null | ||
} else if (op.indexOf('notLike') === 0) { | ||
return utils.isNull(this.like(predicate, op.substr(7)).exec(value)) | ||
return this.like(predicate, op.substr(7)).exec(value) === null | ||
} | ||
@@ -1053,3 +1053,3 @@ }, | ||
* // Normally you would do: import {Query} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Query} = JSData | ||
@@ -1056,0 +1056,0 @@ * console.log('Using JSData v' + JSData.version.full) |
@@ -29,3 +29,3 @@ import utils from './utils' | ||
* // Normally you would do: import {Record} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Record} = JSData | ||
@@ -44,3 +44,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // Normally you would do: import {Mapper} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Mapper} = JSData | ||
@@ -59,3 +59,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // Normally you would do: import {Container} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Container} = JSData | ||
@@ -73,3 +73,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // Normally you would do: import {Container} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Container} = JSData | ||
@@ -93,3 +93,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // Normally you would do: import {Container} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Container} = JSData | ||
@@ -198,3 +198,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // Normally you would do: import {Container} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Container} = JSData | ||
@@ -229,3 +229,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // Normally you would do: import {Container} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Container} = JSData | ||
@@ -286,3 +286,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // Normally you would do: import {Container} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Container} = JSData | ||
@@ -311,3 +311,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // Normally you would do: import {Container} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Container} = JSData | ||
@@ -343,3 +343,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // Normally you would do: import {Container} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Container} = JSData | ||
@@ -369,3 +369,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // Normally you would do: import {Container} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Container} = JSData | ||
@@ -529,3 +529,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // import {Container} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Container} = JSData | ||
@@ -563,3 +563,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // import {Container} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Container} = JSData | ||
@@ -669,3 +669,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // Normally you would do: import {Container} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Container} = JSData | ||
@@ -714,3 +714,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // Normally you would do: import {Container} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Container} = JSData | ||
@@ -764,3 +764,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // Normally you would do: import {Container} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Container} = JSData | ||
@@ -794,3 +794,3 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* // Normally you would do: import {Container} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Container} = JSData | ||
@@ -852,6 +852,6 @@ * console.log('Using JSData v' + JSData.version.full) | ||
* @example | ||
* function onChange (mapperName, record, changes) { | ||
* function onChange (record, changes) { | ||
* // do something | ||
* } | ||
* store.on('change', onChange) | ||
* record.on('change', onChange) | ||
* | ||
@@ -869,3 +869,3 @@ * @callback Record~changeListener | ||
* // Normally you would do: import {Record} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Record} = JSData | ||
@@ -872,0 +872,0 @@ * console.log('Using JSData v' + JSData.version.full) |
@@ -507,5 +507,5 @@ import utils from './utils' | ||
utils.forOwn(properties || {}, function (_schema, prop) { | ||
if (value[prop] === undefined && _schema['default'] !== undefined) { | ||
value[prop] = utils.copy(_schema['default']) | ||
} | ||
// if (value[prop] === undefined && _schema['default'] !== undefined) { | ||
// value[prop] = utils.copy(_schema['default']) | ||
// } | ||
opts.prop = prop | ||
@@ -686,2 +686,3 @@ errors = errors.concat(validate(value[prop], _schema, opts) || []) | ||
opts || (opts = {}) | ||
opts.ctx || (opts.ctx = { value, schema }) | ||
let shouldPop | ||
@@ -1008,3 +1009,3 @@ let prevProp = opts.prop | ||
* // Normally you would do: import {Schema} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Schema} = JSData | ||
@@ -1080,2 +1081,37 @@ * console.log('Using JSData v' + JSData.version.full) | ||
/** | ||
* Apply default values to the target object for missing values. | ||
* | ||
* @name Schema#applyDefaults | ||
* @method | ||
* @param {Object} target The target to which to apply values for missing values. | ||
*/ | ||
applyDefaults (target) { | ||
if (!target) { | ||
return | ||
} | ||
const properties = this.properties || {} | ||
const hasSet = utils.isFunction(target.set) || utils.isFunction(target._set) | ||
utils.forOwn(properties, function (schema, prop) { | ||
if (schema.hasOwnProperty('default') && utils.get(target, prop) === undefined) { | ||
if (hasSet) { | ||
target.set(target, prop, utils.plainCopy(schema['default']), { silent: true }) | ||
} else { | ||
utils.set(target, prop, utils.plainCopy(schema['default'])) | ||
} | ||
} | ||
if (schema.type === 'object' && schema.properties) { | ||
if (hasSet) { | ||
const orig = target._get('noValidate') | ||
target._set('noValidate', true) | ||
utils.set(target, prop, utils.get(target, prop) || {}, { silent: true }) | ||
target._set('noValidate', orig) | ||
} else { | ||
utils.set(target, prop, utils.get(target, prop) || {}) | ||
} | ||
schema.applyDefaults(utils.get(target, prop)) | ||
} | ||
}) | ||
}, | ||
/** | ||
* Validate the provided value against this schema. | ||
@@ -1093,2 +1129,7 @@ * | ||
}, { | ||
ANY_OPS, | ||
ARRAY_OPS, | ||
NUMERIC_OPS, | ||
OBJECT_OPS, | ||
STRING_OPS, | ||
typeGroupValidators, | ||
@@ -1104,3 +1145,3 @@ types, | ||
* // Normally you would do: import {Schema} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Schema} = JSData | ||
@@ -1107,0 +1148,0 @@ * console.log('Using JSData v' + JSData.version.full) |
@@ -66,3 +66,3 @@ import utils from './utils' | ||
* // Normally you would do: import {Settable} from 'js-data' | ||
* const JSData = require('js-data@3.0.0-beta.7') | ||
* const JSData = require('js-data@3.0.0-beta.10') | ||
* const {Settable} = JSData | ||
@@ -69,0 +69,0 @@ * console.log('Using JSData v' + JSData.version.full) |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
2769607
38802