Skip to content

Commit b6c387b

Browse files
committed
Adds @jalik/extend package
1 parent d92ff6b commit b6c387b

File tree

5 files changed

+16
-42
lines changed

5 files changed

+16
-42
lines changed

package-lock.json

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@
3232
"test": "jest",
3333
"watch": "./node_modules/.bin/gulp watch"
3434
},
35+
"dependencies": {
36+
"@jalik/extend": "^1.0.1"
37+
},
3538
"devDependencies": {
3639
"babel-core": "^6.26.0",
3740
"babel-loader": "^7.1.2",

src/schema-field.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
*/
2424

2525
import utils from "./utils";
26+
import {extendRecursively} from "@jalik/extend";
2627
import {Schema} from "./schema";
2728
import {SchemaError} from "./schema-error";
2829

@@ -55,7 +56,7 @@ export class SchemaField {
5556

5657
constructor(fieldName, props) {
5758
// Default properties
58-
props = utils.extend({
59+
props = extendRecursively({
5960
allowed: undefined,
6061
check: undefined,
6162
clean: undefined,
@@ -563,7 +564,7 @@ export class SchemaField {
563564
const props = this.properties;
564565

565566
// Default options
566-
options = utils.extend({
567+
options = extendRecursively({
567568
context: {[this.name]: value}
568569
}, options);
569570

src/schema.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
* SOFTWARE.
2323
*/
2424

25-
import utils from "./utils";
25+
import {extendRecursively} from "@jalik/extend";
2626
import {SchemaError} from "./schema-error";
2727
import {SchemaField} from "./schema-field";
2828

@@ -56,7 +56,7 @@ export class Schema {
5656
*/
5757
clean(obj, options) {
5858
// Default options
59-
options = utils.extend({
59+
options = extendRecursively({
6060
removeUnknown: true
6161
}, options);
6262

@@ -109,7 +109,7 @@ export class Schema {
109109
fieldProperties[fieldName] = schemaFields[fieldName].getProperties();
110110
}
111111
}
112-
return new Schema(utils.extend({}, fieldProperties, fields));
112+
return new Schema(extendRecursively({}, fieldProperties, fields));
113113
}
114114

115115
/**
@@ -260,7 +260,7 @@ export class Schema {
260260
if (fields.hasOwnProperty(fieldName)) {
261261
const props = fields[fieldName];
262262
const field = schemaFields[fieldName].getProperties() || {};
263-
this.addField(fieldName, utils.extend({}, field, props));
263+
this.addField(fieldName, extendRecursively({}, field, props));
264264
}
265265
}
266266
return this;
@@ -273,7 +273,7 @@ export class Schema {
273273
*/
274274
validate(obj, options) {
275275
// Default options
276-
options = utils.extend({
276+
options = extendRecursively({
277277
clean: true,
278278
ignoreMissing: false,
279279
ignoreUnknown: false,

src/utils.js

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -42,40 +42,5 @@ export default {
4242
}
4343
}
4444
return result;
45-
},
46-
47-
/**
48-
* Merge objects
49-
* @return {*}
50-
*/
51-
extend() {
52-
const args = Array.prototype.slice.call(arguments);
53-
let recursive = false;
54-
let a = args.shift();
55-
56-
if (typeof a === "boolean") {
57-
recursive = a;
58-
a = args.shift();
59-
}
60-
61-
for (let i = 0; i < args.length; i += 1) {
62-
const b = args[i];
63-
64-
if (typeof b === "object" && b !== null
65-
&& typeof a === "object" && a !== null) {
66-
for (let key in b) {
67-
if (b.hasOwnProperty(key)) {
68-
if (recursive && typeof b[key] === "object" && b[key] !== null) {
69-
a[key] = this.extend(a[key], b[key]);
70-
} else {
71-
a[key] = b[key];
72-
}
73-
}
74-
}
75-
} else if (b !== null && typeof b !== "undefined") {
76-
a = b;
77-
}
78-
}
79-
return a;
8045
}
8146
};

0 commit comments

Comments
 (0)