Socket
Socket
Sign inDemoInstall

io-ts

Package Overview
Dependencies
Maintainers
1
Versions
120
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

io-ts - npm Package Compare versions

Comparing version 2.1.0 to 2.1.1

5

CHANGELOG.md

@@ -17,2 +17,7 @@ # Changelog

# 2.1.1
- **Bug Fix**
- fix `record` domain handling, closes #391 (@gcanti)
# 2.1.0

@@ -19,0 +24,0 @@

2

es6/index.d.ts

@@ -566,3 +566,3 @@ /**

*/
export declare const record: <D extends Mixed, C extends Mixed>(domain: D, codomain: C, name?: string) => RecordC<D, C>;
export declare function record<D extends Mixed, C extends Mixed>(domain: D, codomain: C, name?: string): RecordC<D, C>;
/**

@@ -569,0 +569,0 @@ * @since 1.0.0

@@ -25,2 +25,9 @@ var __extends = (this && this.__extends) || (function () {

};
var __spreadArrays = (this && this.__spreadArrays) || function () {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
};
/**

@@ -127,7 +134,2 @@ * @since 1.0.0

};
var getIsCodec = function (tag) { return function (codec) { return codec._tag === tag; }; };
// tslint:disable-next-line: deprecation
var isAnyCodec = getIsCodec('AnyType');
var isInterfaceCodec = getIsCodec('InterfaceType');
var isPartialCodec = getIsCodec('PartialType');
//

@@ -671,6 +673,57 @@ // basic types

export { DictionaryType };
function enumerableRecord(keys, domain, codomain, name) {
if (name === void 0) { name = "{ [K in " + domain.name + "]: " + codomain.name + " }"; }
var len = keys.length;
return new DictionaryType(name, function (u) { return UnknownRecord.is(u) && keys.every(function (k) { return codomain.is(u[k]); }); }, function (u, c) {
return chain(UnknownRecord.validate(u, c), function (o) {
var a = {};
var errors = [];
var changed = false;
for (var i = 0; i < len; i++) {
var k = keys[i];
var ok = o[k];
var codomainResult = codomain.validate(ok, appendContext(c, k, codomain, ok));
if (isLeft(codomainResult)) {
pushAll(errors, codomainResult.left);
}
else {
var vok = codomainResult.right;
changed = changed || vok !== ok;
a[k] = vok;
}
}
return errors.length > 0 ? failures(errors) : success((changed || Object.keys(o).length !== len ? a : o));
});
}, codomain.encode === identity
? identity
: function (a) {
var s = {};
for (var i = 0; i < len; i++) {
var k = keys[i];
s[k] = codomain.encode(a[k]);
}
return s;
}, domain, codomain);
}
/**
* @since 1.7.1
* @internal
*/
export var record = function (domain, codomain, name) {
export function getDomainKeys(domain) {
var _a;
if (isLiteralC(domain)) {
var literal_1 = domain.value;
if (string.is(literal_1)) {
return _a = {}, _a[literal_1] = null, _a;
}
}
else if (isKeyofC(domain)) {
return domain.keys;
}
else if (isUnionC(domain)) {
var keys = domain.types.map(function (type) { return getDomainKeys(type); });
return keys.some(undefinedType.is) ? undefined : Object.assign.apply(Object, __spreadArrays([{}], keys));
}
return undefined;
}
function nonEnumerableRecord(domain, codomain, name) {
if (name === void 0) { name = "{ [K in " + domain.name + "]: " + codomain.name + " }"; }

@@ -681,3 +734,3 @@ return new DictionaryType(name, function (u) {

}
return isAnyCodec(codomain) && Array.isArray(u);
return isAnyC(codomain) && Array.isArray(u);
}, function (u, c) {

@@ -714,3 +767,3 @@ if (UnknownRecord.is(u)) {

}
if (isAnyCodec(codomain) && Array.isArray(u)) {
if (isAnyC(codomain) && Array.isArray(u)) {
return success(u);

@@ -731,4 +784,13 @@ }

}, domain, codomain);
};
}
/**
* @since 1.7.1
*/
export function record(domain, codomain, name) {
var keys = getDomainKeys(domain);
return keys
? enumerableRecord(Object.keys(keys), domain, codomain, name)
: nonEnumerableRecord(domain, codomain, name);
}
/**
* @since 1.0.0

@@ -1084,6 +1146,6 @@ */

var getExactTypeName = function (codec) {
if (isInterfaceCodec(codec)) {
if (isTypeC(codec)) {
return "{| " + getNameFromProps(codec.props) + " |}";
}
else if (isPartialCodec(codec)) {
else if (isPartialC(codec)) {
return getPartialTypeName("{| " + getNameFromProps(codec.props) + " |}");

@@ -1330,8 +1392,18 @@ }

}
// tslint:disable-next-line: deprecation
function isAnyC(codec) {
return codec._tag === 'AnyType';
}
function isLiteralC(codec) {
return codec._tag === 'LiteralType';
}
function isKeyofC(codec) {
return codec._tag === 'KeyofType';
}
function isTypeC(codec) {
return codec._tag === 'InterfaceType';
}
function isPartialC(codec) {
return codec._tag === 'PartialType';
}
// tslint:disable-next-line: deprecation

@@ -1338,0 +1410,0 @@ function isStrictC(codec) {

@@ -566,3 +566,3 @@ /**

*/
export declare const record: <D extends Mixed, C extends Mixed>(domain: D, codomain: C, name?: string) => RecordC<D, C>;
export declare function record<D extends Mixed, C extends Mixed>(domain: D, codomain: C, name?: string): RecordC<D, C>;
/**

@@ -569,0 +569,0 @@ * @since 1.0.0

@@ -26,2 +26,9 @@ "use strict";

};
var __spreadArrays = (this && this.__spreadArrays) || function () {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
};
Object.defineProperty(exports, "__esModule", { value: true });

@@ -129,7 +136,2 @@ /**

};
var getIsCodec = function (tag) { return function (codec) { return codec._tag === tag; }; };
// tslint:disable-next-line: deprecation
var isAnyCodec = getIsCodec('AnyType');
var isInterfaceCodec = getIsCodec('InterfaceType');
var isPartialCodec = getIsCodec('PartialType');
//

@@ -678,6 +680,58 @@ // basic types

exports.DictionaryType = DictionaryType;
function enumerableRecord(keys, domain, codomain, name) {
if (name === void 0) { name = "{ [K in " + domain.name + "]: " + codomain.name + " }"; }
var len = keys.length;
return new DictionaryType(name, function (u) { return exports.UnknownRecord.is(u) && keys.every(function (k) { return codomain.is(u[k]); }); }, function (u, c) {
return chain(exports.UnknownRecord.validate(u, c), function (o) {
var a = {};
var errors = [];
var changed = false;
for (var i = 0; i < len; i++) {
var k = keys[i];
var ok = o[k];
var codomainResult = codomain.validate(ok, exports.appendContext(c, k, codomain, ok));
if (Either_1.isLeft(codomainResult)) {
pushAll(errors, codomainResult.left);
}
else {
var vok = codomainResult.right;
changed = changed || vok !== ok;
a[k] = vok;
}
}
return errors.length > 0 ? exports.failures(errors) : exports.success((changed || Object.keys(o).length !== len ? a : o));
});
}, codomain.encode === exports.identity
? exports.identity
: function (a) {
var s = {};
for (var i = 0; i < len; i++) {
var k = keys[i];
s[k] = codomain.encode(a[k]);
}
return s;
}, domain, codomain);
}
/**
* @since 1.7.1
* @internal
*/
exports.record = function (domain, codomain, name) {
function getDomainKeys(domain) {
var _a;
if (isLiteralC(domain)) {
var literal_1 = domain.value;
if (exports.string.is(literal_1)) {
return _a = {}, _a[literal_1] = null, _a;
}
}
else if (isKeyofC(domain)) {
return domain.keys;
}
else if (isUnionC(domain)) {
var keys = domain.types.map(function (type) { return getDomainKeys(type); });
return keys.some(undefinedType.is) ? undefined : Object.assign.apply(Object, __spreadArrays([{}], keys));
}
return undefined;
}
exports.getDomainKeys = getDomainKeys;
function nonEnumerableRecord(domain, codomain, name) {
if (name === void 0) { name = "{ [K in " + domain.name + "]: " + codomain.name + " }"; }

@@ -688,3 +742,3 @@ return new DictionaryType(name, function (u) {

}
return isAnyCodec(codomain) && Array.isArray(u);
return isAnyC(codomain) && Array.isArray(u);
}, function (u, c) {

@@ -721,3 +775,3 @@ if (exports.UnknownRecord.is(u)) {

}
if (isAnyCodec(codomain) && Array.isArray(u)) {
if (isAnyC(codomain) && Array.isArray(u)) {
return exports.success(u);

@@ -738,4 +792,14 @@ }

}, domain, codomain);
};
}
/**
* @since 1.7.1
*/
function record(domain, codomain, name) {
var keys = getDomainKeys(domain);
return keys
? enumerableRecord(Object.keys(keys), domain, codomain, name)
: nonEnumerableRecord(domain, codomain, name);
}
exports.record = record;
/**
* @since 1.0.0

@@ -1093,6 +1157,6 @@ */

var getExactTypeName = function (codec) {
if (isInterfaceCodec(codec)) {
if (isTypeC(codec)) {
return "{| " + getNameFromProps(codec.props) + " |}";
}
else if (isPartialCodec(codec)) {
else if (isPartialC(codec)) {
return getPartialTypeName("{| " + getNameFromProps(codec.props) + " |}");

@@ -1220,3 +1284,3 @@ }

*/
exports.dictionary = exports.record;
exports.dictionary = record;
/**

@@ -1314,8 +1378,18 @@ * @since 1.0.0

}
// tslint:disable-next-line: deprecation
function isAnyC(codec) {
return codec._tag === 'AnyType';
}
function isLiteralC(codec) {
return codec._tag === 'LiteralType';
}
function isKeyofC(codec) {
return codec._tag === 'KeyofType';
}
function isTypeC(codec) {
return codec._tag === 'InterfaceType';
}
function isPartialC(codec) {
return codec._tag === 'PartialType';
}
// tslint:disable-next-line: deprecation

@@ -1322,0 +1396,0 @@ function isStrictC(codec) {

{
"name": "io-ts",
"version": "2.1.0",
"version": "2.1.1",
"description": "TypeScript compatible runtime type system for IO validation",

@@ -5,0 +5,0 @@ "files": [

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc