io-ts
Advanced tools
Comparing version 2.0.4 to 2.0.5
@@ -17,2 +17,7 @@ # Changelog | ||
# 2.0.5 | ||
- **Bug Fix** | ||
- `partial` shouldn't allow arrays, fix #407 (@gcanti) | ||
# 2.0.4 | ||
@@ -19,0 +24,0 @@ |
@@ -127,3 +127,2 @@ var __extends = (this && this.__extends) || (function () { | ||
var getIsCodec = function (tag) { return function (codec) { return codec._tag === tag; }; }; | ||
var isUnknownCodec = getIsCodec('UnknownType'); | ||
// tslint:disable-next-line: deprecation | ||
@@ -275,3 +274,3 @@ var isAnyCodec = getIsCodec('AnyType'); | ||
function AnyDictionaryType() { | ||
var _this = _super.call(this, 'UnknownRecord', function (u) { return u !== null && typeof u === 'object'; }, function (u, c) { return (_this.is(u) ? success(u) : failure(u, c)); }, identity) || this; | ||
var _this = _super.call(this, 'UnknownRecord', function (u) { return Object.prototype.toString.call(u) === '[object Object]'; }, function (u, c) { return (_this.is(u) ? success(u) : failure(u, c)); }, identity) || this; | ||
_this._tag = 'AnyDictionaryType'; | ||
@@ -502,12 +501,12 @@ return _this; | ||
return new InterfaceType(name, function (u) { | ||
if (!UnknownRecord.is(u)) { | ||
return false; | ||
} | ||
for (var i = 0; i < len; i++) { | ||
var k = keys[i]; | ||
if (!hasOwnProperty.call(u, k) || !types[i].is(u[k])) { | ||
return false; | ||
if (UnknownRecord.is(u)) { | ||
for (var i = 0; i < len; i++) { | ||
var k = keys[i]; | ||
if (!hasOwnProperty.call(u, k) || !types[i].is(u[k])) { | ||
return false; | ||
} | ||
} | ||
return true; | ||
} | ||
return true; | ||
return false; | ||
}, function (u, c) { | ||
@@ -584,13 +583,13 @@ return chain(UnknownRecord.validate(u, c), function (o) { | ||
return new PartialType(name, function (u) { | ||
if (!UnknownRecord.is(u)) { | ||
return false; | ||
} | ||
for (var i = 0; i < len; i++) { | ||
var k = keys[i]; | ||
var uk = u[k]; | ||
if (uk !== undefined && !props[k].is(uk)) { | ||
return false; | ||
if (UnknownRecord.is(u)) { | ||
for (var i = 0; i < len; i++) { | ||
var k = keys[i]; | ||
var uk = u[k]; | ||
if (uk !== undefined && !props[k].is(uk)) { | ||
return false; | ||
} | ||
} | ||
return true; | ||
} | ||
return true; | ||
return false; | ||
}, function (u, c) { | ||
@@ -652,3 +651,2 @@ return chain(UnknownRecord.validate(u, c), function (o) { | ||
export { DictionaryType }; | ||
var isObject = function (r) { return Object.prototype.toString.call(r) === '[object Object]'; }; | ||
/** | ||
@@ -660,17 +658,11 @@ * @since 1.7.1 | ||
return new DictionaryType(name, function (u) { | ||
if (!UnknownRecord.is(u)) { | ||
return false; | ||
if (UnknownRecord.is(u)) { | ||
return Object.keys(u).every(function (k) { return domain.is(k) && codomain.is(u[k]); }); | ||
} | ||
if (!isUnknownCodec(codomain) && !isAnyCodec(codomain) && !isObject(u)) { | ||
return false; | ||
} | ||
return Object.keys(u).every(function (k) { return domain.is(k) && codomain.is(u[k]); }); | ||
return isAnyCodec(codomain) && Array.isArray(u); | ||
}, function (u, c) { | ||
return chain(UnknownRecord.validate(u, c), function (o) { | ||
if (!isUnknownCodec(codomain) && !isAnyCodec(codomain) && !isObject(o)) { | ||
return failure(u, c); | ||
} | ||
if (UnknownRecord.is(u)) { | ||
var a = {}; | ||
var errors = []; | ||
var keys = Object.keys(o); | ||
var keys = Object.keys(u); | ||
var len = keys.length; | ||
@@ -680,3 +672,3 @@ var changed = false; | ||
var k = keys[i]; | ||
var ok = o[k]; | ||
var ok = u[k]; | ||
var domainResult = domain.validate(k, appendContext(c, k, domain, k)); | ||
@@ -701,4 +693,8 @@ if (isLeft(domainResult)) { | ||
} | ||
return errors.length > 0 ? failures(errors) : success((changed ? a : o)); | ||
}); | ||
return errors.length > 0 ? failures(errors) : success((changed ? a : u)); | ||
} | ||
if (isAnyCodec(codomain) && Array.isArray(u)) { | ||
return success(u); | ||
} | ||
return failure(u, c); | ||
}, domain.encode === identity && codomain.encode === identity | ||
@@ -753,7 +749,7 @@ ? identity | ||
return new TaggedUnionType(name, function (u) { | ||
if (!UnknownRecord.is(u)) { | ||
return false; | ||
if (UnknownRecord.is(u)) { | ||
var i = find_1(u[tag_1]); | ||
return i !== undefined ? codecs[i].is(u) : false; | ||
} | ||
var i = find_1(u[tag_1]); | ||
return i !== undefined ? codecs[i].is(u) : false; | ||
return false; | ||
}, function (u, c) { | ||
@@ -831,3 +827,3 @@ return chain(UnknownRecord.validate(u, c), function (r) { | ||
} | ||
if (isObject(u)) { | ||
if (UnknownRecord.is(u)) { | ||
primitive = false; | ||
@@ -1189,3 +1185,3 @@ } | ||
function ObjectType() { | ||
var _this = _super.call(this, 'object', UnknownRecord.is, UnknownRecord.validate, identity) || this; | ||
var _this = _super.call(this, 'object', function (u) { return u !== null && typeof u === 'object'; }, function (u, c) { return (_this.is(u) ? success(u) : failure(u, c)); }, identity) || this; | ||
_this._tag = 'ObjectType'; | ||
@@ -1192,0 +1188,0 @@ return _this; |
@@ -129,3 +129,2 @@ "use strict"; | ||
var getIsCodec = function (tag) { return function (codec) { return codec._tag === tag; }; }; | ||
var isUnknownCodec = getIsCodec('UnknownType'); | ||
// tslint:disable-next-line: deprecation | ||
@@ -281,3 +280,3 @@ var isAnyCodec = getIsCodec('AnyType'); | ||
function AnyDictionaryType() { | ||
var _this = _super.call(this, 'UnknownRecord', function (u) { return u !== null && typeof u === 'object'; }, function (u, c) { return (_this.is(u) ? exports.success(u) : exports.failure(u, c)); }, exports.identity) || this; | ||
var _this = _super.call(this, 'UnknownRecord', function (u) { return Object.prototype.toString.call(u) === '[object Object]'; }, function (u, c) { return (_this.is(u) ? exports.success(u) : exports.failure(u, c)); }, exports.identity) || this; | ||
_this._tag = 'AnyDictionaryType'; | ||
@@ -508,12 +507,12 @@ return _this; | ||
return new InterfaceType(name, function (u) { | ||
if (!exports.UnknownRecord.is(u)) { | ||
return false; | ||
} | ||
for (var i = 0; i < len; i++) { | ||
var k = keys[i]; | ||
if (!hasOwnProperty.call(u, k) || !types[i].is(u[k])) { | ||
return false; | ||
if (exports.UnknownRecord.is(u)) { | ||
for (var i = 0; i < len; i++) { | ||
var k = keys[i]; | ||
if (!hasOwnProperty.call(u, k) || !types[i].is(u[k])) { | ||
return false; | ||
} | ||
} | ||
return true; | ||
} | ||
return true; | ||
return false; | ||
}, function (u, c) { | ||
@@ -591,13 +590,13 @@ return chain(exports.UnknownRecord.validate(u, c), function (o) { | ||
return new PartialType(name, function (u) { | ||
if (!exports.UnknownRecord.is(u)) { | ||
return false; | ||
} | ||
for (var i = 0; i < len; i++) { | ||
var k = keys[i]; | ||
var uk = u[k]; | ||
if (uk !== undefined && !props[k].is(uk)) { | ||
return false; | ||
if (exports.UnknownRecord.is(u)) { | ||
for (var i = 0; i < len; i++) { | ||
var k = keys[i]; | ||
var uk = u[k]; | ||
if (uk !== undefined && !props[k].is(uk)) { | ||
return false; | ||
} | ||
} | ||
return true; | ||
} | ||
return true; | ||
return false; | ||
}, function (u, c) { | ||
@@ -659,3 +658,2 @@ return chain(exports.UnknownRecord.validate(u, c), function (o) { | ||
exports.DictionaryType = DictionaryType; | ||
var isObject = function (r) { return Object.prototype.toString.call(r) === '[object Object]'; }; | ||
/** | ||
@@ -667,17 +665,11 @@ * @since 1.7.1 | ||
return new DictionaryType(name, function (u) { | ||
if (!exports.UnknownRecord.is(u)) { | ||
return false; | ||
if (exports.UnknownRecord.is(u)) { | ||
return Object.keys(u).every(function (k) { return domain.is(k) && codomain.is(u[k]); }); | ||
} | ||
if (!isUnknownCodec(codomain) && !isAnyCodec(codomain) && !isObject(u)) { | ||
return false; | ||
} | ||
return Object.keys(u).every(function (k) { return domain.is(k) && codomain.is(u[k]); }); | ||
return isAnyCodec(codomain) && Array.isArray(u); | ||
}, function (u, c) { | ||
return chain(exports.UnknownRecord.validate(u, c), function (o) { | ||
if (!isUnknownCodec(codomain) && !isAnyCodec(codomain) && !isObject(o)) { | ||
return exports.failure(u, c); | ||
} | ||
if (exports.UnknownRecord.is(u)) { | ||
var a = {}; | ||
var errors = []; | ||
var keys = Object.keys(o); | ||
var keys = Object.keys(u); | ||
var len = keys.length; | ||
@@ -687,3 +679,3 @@ var changed = false; | ||
var k = keys[i]; | ||
var ok = o[k]; | ||
var ok = u[k]; | ||
var domainResult = domain.validate(k, exports.appendContext(c, k, domain, k)); | ||
@@ -708,4 +700,8 @@ if (Either_1.isLeft(domainResult)) { | ||
} | ||
return errors.length > 0 ? exports.failures(errors) : exports.success((changed ? a : o)); | ||
}); | ||
return errors.length > 0 ? exports.failures(errors) : exports.success((changed ? a : u)); | ||
} | ||
if (isAnyCodec(codomain) && Array.isArray(u)) { | ||
return exports.success(u); | ||
} | ||
return exports.failure(u, c); | ||
}, domain.encode === exports.identity && codomain.encode === exports.identity | ||
@@ -760,7 +756,7 @@ ? exports.identity | ||
return new TaggedUnionType(name, function (u) { | ||
if (!exports.UnknownRecord.is(u)) { | ||
return false; | ||
if (exports.UnknownRecord.is(u)) { | ||
var i = find_1(u[tag_1]); | ||
return i !== undefined ? codecs[i].is(u) : false; | ||
} | ||
var i = find_1(u[tag_1]); | ||
return i !== undefined ? codecs[i].is(u) : false; | ||
return false; | ||
}, function (u, c) { | ||
@@ -838,3 +834,3 @@ return chain(exports.UnknownRecord.validate(u, c), function (r) { | ||
} | ||
if (isObject(u)) { | ||
if (exports.UnknownRecord.is(u)) { | ||
primitive = false; | ||
@@ -1169,3 +1165,3 @@ } | ||
function ObjectType() { | ||
var _this = _super.call(this, 'object', exports.UnknownRecord.is, exports.UnknownRecord.validate, exports.identity) || this; | ||
var _this = _super.call(this, 'object', function (u) { return u !== null && typeof u === 'object'; }, function (u, c) { return (_this.is(u) ? exports.success(u) : exports.failure(u, c)); }, exports.identity) || this; | ||
_this._tag = 'ObjectType'; | ||
@@ -1172,0 +1168,0 @@ return _this; |
{ | ||
"name": "io-ts", | ||
"version": "2.0.4", | ||
"version": "2.0.5", | ||
"description": "TypeScript compatible runtime type system for IO validation", | ||
@@ -40,2 +40,3 @@ "files": [ | ||
"homepage": "https://github.com/gcanti/io-ts", | ||
"dependencies": {}, | ||
"peerDependencies": { | ||
@@ -77,26 +78,3 @@ "fp-ts": "^2.0.0" | ||
"runtime" | ||
], | ||
"jest": { | ||
"collectCoverage": true, | ||
"transform": { | ||
"^.+\\.tsx?$": "ts-jest" | ||
}, | ||
"testRegex": "test", | ||
"moduleFileExtensions": [ | ||
"ts", | ||
"js" | ||
], | ||
"testPathIgnorePatterns": [ | ||
"helpers.ts" | ||
], | ||
"coverageThreshold": { | ||
"global": { | ||
"branches": 100, | ||
"functions": 100, | ||
"lines": 100, | ||
"statements": 100 | ||
} | ||
} | ||
}, | ||
"dependencies": {} | ||
] | ||
} |
182087
4963