Comparing version 2.2.8 to 2.2.9
@@ -17,2 +17,14 @@ # Changelog | ||
# 2.2.9 | ||
- **Polish** | ||
- remove `Object.freeze` calls, closes #497 (@gcanti) | ||
- **Experimental** | ||
- `DecodeError` | ||
- add `Wrap` member (@gcanti) | ||
- `Decoder` | ||
- add `withMessage` combinator (@gcanti) | ||
- `TaskDecoder` | ||
- add `withMessage` combinator (@gcanti) | ||
# 2.2.8 | ||
@@ -19,0 +31,0 @@ |
@@ -77,5 +77,14 @@ /** | ||
* @category model | ||
* @since 2.2.9 | ||
*/ | ||
export interface Wrap<E> { | ||
readonly _tag: 'Wrap'; | ||
readonly error: E; | ||
readonly errors: FS.FreeSemigroup<DecodeError<E>>; | ||
} | ||
/** | ||
* @category model | ||
* @since 2.2.7 | ||
*/ | ||
export declare type DecodeError<E> = Leaf<E> | Key<E> | Index<E> | Member<E> | Lazy<E>; | ||
export declare type DecodeError<E> = Leaf<E> | Key<E> | Index<E> | Member<E> | Lazy<E> | Wrap<E>; | ||
/** | ||
@@ -107,2 +116,7 @@ * @category constructors | ||
/** | ||
* @category constructors | ||
* @since 2.2.9 | ||
*/ | ||
export declare const wrap: <E>(error: E, errors: FS.FreeSemigroup<DecodeError<E>>) => DecodeError<E>; | ||
/** | ||
* @category destructors | ||
@@ -117,2 +131,3 @@ * @since 2.2.7 | ||
Lazy: (id: string, errors: FS.FreeSemigroup<DecodeError<E>>) => R; | ||
Wrap: (error: E, errors: FS.FreeSemigroup<DecodeError<E>>) => R; | ||
}) => (e: DecodeError<E>) => R; | ||
@@ -119,0 +134,0 @@ /** |
@@ -56,2 +56,11 @@ import * as FS from './FreeSemigroup'; | ||
/** | ||
* @category constructors | ||
* @since 2.2.9 | ||
*/ | ||
export var wrap = function (error, errors) { return ({ | ||
_tag: 'Wrap', | ||
error: error, | ||
errors: errors | ||
}); }; | ||
/** | ||
* @category destructors | ||
@@ -73,2 +82,4 @@ * @since 2.2.7 | ||
return patterns.Lazy(e.id, e.errors); | ||
case 'Wrap': | ||
return patterns.Wrap(e.error, e.errors); | ||
} | ||
@@ -75,0 +86,0 @@ }; |
@@ -94,2 +94,7 @@ /** | ||
* @category combinators | ||
* @since 2.2.9 | ||
*/ | ||
export declare const withMessage: <I>(message: (input: I, e: DecodeError) => string) => <A>(decoder: Decoder<I, A>) => Decoder<I, A>; | ||
/** | ||
* @category combinators | ||
* @since 2.2.7 | ||
@@ -96,0 +101,0 @@ */ |
@@ -137,2 +137,9 @@ import * as E from 'fp-ts/es6/Either'; | ||
* @category combinators | ||
* @since 2.2.9 | ||
*/ | ||
export var withMessage = function (message) { | ||
return mapLeftWithInput(function (input, e) { return FS.of(DE.wrap(message(input, e), e)); }); | ||
}; | ||
/** | ||
* @category combinators | ||
* @since 2.2.7 | ||
@@ -403,3 +410,4 @@ */ | ||
Member: function (index, errors) { return make("member " + index, toForest(errors)); }, | ||
Lazy: function (id, errors) { return make("lazy type " + id, toForest(errors)); } | ||
Lazy: function (id, errors) { return make("lazy type " + id, toForest(errors)); }, | ||
Wrap: function (error, errors) { return make(error, toForest(errors)); } | ||
}); | ||
@@ -406,0 +414,0 @@ var toForest = FS.fold(function (value) { return [toTree(value)]; }, function (left, right) { return toForest(left).concat(toForest(right)); }); |
@@ -545,3 +545,3 @@ /** | ||
*/ | ||
export declare const array: <C extends Mixed>(codec: C, name?: string) => ArrayC<C>; | ||
export declare const array: <C extends Mixed>(item: C, name?: string) => ArrayC<C>; | ||
/** | ||
@@ -818,3 +818,3 @@ * @since 1.0.0 | ||
*/ | ||
export declare const readonlyArray: <C extends Mixed>(codec: C, name?: string) => ReadonlyArrayC<C>; | ||
export declare const readonlyArray: <C extends Mixed>(item: C, name?: string) => ReadonlyArrayC<C>; | ||
/** | ||
@@ -821,0 +821,0 @@ * Strips additional properties |
@@ -531,5 +531,5 @@ var __extends = (this && this.__extends) || (function () { | ||
*/ | ||
export var array = function (codec, name) { | ||
if (name === void 0) { name = "Array<" + codec.name + ">"; } | ||
return new ArrayType(name, function (u) { return UnknownArray.is(u) && u.every(codec.is); }, function (u, c) { | ||
export var array = function (item, name) { | ||
if (name === void 0) { name = "Array<" + item.name + ">"; } | ||
return new ArrayType(name, function (u) { return UnknownArray.is(u) && u.every(item.is); }, function (u, c) { | ||
var e = UnknownArray.validate(u, c); | ||
@@ -545,3 +545,3 @@ if (isLeft(e)) { | ||
var ui = us[i]; | ||
var result = codec.validate(ui, appendContext(c, String(i), codec, ui)); | ||
var result = item.validate(ui, appendContext(c, String(i), item, ui)); | ||
if (isLeft(result)) { | ||
@@ -561,3 +561,3 @@ pushAll(errors, result.left); | ||
return errors.length > 0 ? failures(errors) : success(as); | ||
}, codec.encode === identity ? identity : function (a) { return a.map(codec.encode); }, codec); | ||
}, item.encode === identity ? identity : function (a) { return a.map(item.encode); }, item); | ||
}; | ||
@@ -1126,13 +1126,3 @@ /** | ||
if (name === void 0) { name = "Readonly<" + codec.name + ">"; } | ||
return new ReadonlyType(name, codec.is, function (u, c) { | ||
var e = codec.validate(u, c); | ||
if (isLeft(e)) { | ||
return e; | ||
} | ||
var x = e.right; | ||
if (process.env.NODE_ENV !== 'production') { | ||
return right(Object.freeze(x)); | ||
} | ||
return right(x); | ||
}, codec.encode === identity ? identity : codec.encode, codec); | ||
return new ReadonlyType(name, codec.is, codec.validate, codec.encode, codec); | ||
}; | ||
@@ -1160,16 +1150,6 @@ /** | ||
*/ | ||
export var readonlyArray = function (codec, name) { | ||
if (name === void 0) { name = "ReadonlyArray<" + codec.name + ">"; } | ||
var arrayType = array(codec); | ||
return new ReadonlyArrayType(name, arrayType.is, function (u, c) { | ||
var e = arrayType.validate(u, c); | ||
if (isLeft(e)) { | ||
return e; | ||
} | ||
var x = e.right; | ||
if (process.env.NODE_ENV !== 'production') { | ||
return right(Object.freeze(x)); | ||
} | ||
return right(x); | ||
}, arrayType.encode, codec); | ||
export var readonlyArray = function (item, name) { | ||
if (name === void 0) { name = "ReadonlyArray<" + item.name + ">"; } | ||
var codec = array(item); | ||
return new ReadonlyArrayType(name, codec.is, codec.validate, codec.encode, item); | ||
}; | ||
@@ -1176,0 +1156,0 @@ /** |
@@ -100,2 +100,7 @@ /** | ||
* @category combinators | ||
* @since 2.2.9 | ||
*/ | ||
export declare const withMessage: <I>(message: (input: I, e: DecodeError) => string) => <A>(decoder: TaskDecoder<I, A>) => TaskDecoder<I, A>; | ||
/** | ||
* @category combinators | ||
* @since 2.2.7 | ||
@@ -102,0 +107,0 @@ */ |
@@ -130,2 +130,9 @@ import * as E from 'fp-ts/es6/Either'; | ||
* @category combinators | ||
* @since 2.2.9 | ||
*/ | ||
export var withMessage = function (message) { | ||
return mapLeftWithInput(function (input, e) { return FS.of(DE.wrap(message(input, e), e)); }); | ||
}; | ||
/** | ||
* @category combinators | ||
* @since 2.2.7 | ||
@@ -132,0 +139,0 @@ */ |
@@ -77,5 +77,14 @@ /** | ||
* @category model | ||
* @since 2.2.9 | ||
*/ | ||
export interface Wrap<E> { | ||
readonly _tag: 'Wrap'; | ||
readonly error: E; | ||
readonly errors: FS.FreeSemigroup<DecodeError<E>>; | ||
} | ||
/** | ||
* @category model | ||
* @since 2.2.7 | ||
*/ | ||
export declare type DecodeError<E> = Leaf<E> | Key<E> | Index<E> | Member<E> | Lazy<E>; | ||
export declare type DecodeError<E> = Leaf<E> | Key<E> | Index<E> | Member<E> | Lazy<E> | Wrap<E>; | ||
/** | ||
@@ -107,2 +116,7 @@ * @category constructors | ||
/** | ||
* @category constructors | ||
* @since 2.2.9 | ||
*/ | ||
export declare const wrap: <E>(error: E, errors: FS.FreeSemigroup<DecodeError<E>>) => DecodeError<E>; | ||
/** | ||
* @category destructors | ||
@@ -117,2 +131,3 @@ * @since 2.2.7 | ||
Lazy: (id: string, errors: FS.FreeSemigroup<DecodeError<E>>) => R; | ||
Wrap: (error: E, errors: FS.FreeSemigroup<DecodeError<E>>) => R; | ||
}) => (e: DecodeError<E>) => R; | ||
@@ -119,0 +134,0 @@ /** |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.getSemigroup = exports.fold = exports.lazy = exports.member = exports.index = exports.key = exports.leaf = exports.optional = exports.required = void 0; | ||
exports.getSemigroup = exports.fold = exports.wrap = exports.lazy = exports.member = exports.index = exports.key = exports.leaf = exports.optional = exports.required = void 0; | ||
var FS = require("./FreeSemigroup"); | ||
@@ -59,2 +59,11 @@ /** | ||
/** | ||
* @category constructors | ||
* @since 2.2.9 | ||
*/ | ||
exports.wrap = function (error, errors) { return ({ | ||
_tag: 'Wrap', | ||
error: error, | ||
errors: errors | ||
}); }; | ||
/** | ||
* @category destructors | ||
@@ -76,2 +85,4 @@ * @since 2.2.7 | ||
return patterns.Lazy(e.id, e.errors); | ||
case 'Wrap': | ||
return patterns.Wrap(e.error, e.errors); | ||
} | ||
@@ -78,0 +89,0 @@ }; |
@@ -94,2 +94,7 @@ /** | ||
* @category combinators | ||
* @since 2.2.9 | ||
*/ | ||
export declare const withMessage: <I>(message: (input: I, e: DecodeError) => string) => <A>(decoder: Decoder<I, A>) => Decoder<I, A>; | ||
/** | ||
* @category combinators | ||
* @since 2.2.7 | ||
@@ -96,0 +101,0 @@ */ |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.stringify = exports.draw = exports.WithRefine = exports.WithUnion = exports.WithUnknownContainers = exports.Schemable = exports.Category = exports.Alt = exports.Functor = exports.URI = exports.id = exports.compose = exports.alt = exports.map = exports.lazy = exports.sum = exports.fromSum = exports.intersect = exports.union = exports.tuple = exports.fromTuple = exports.record = exports.fromRecord = exports.array = exports.fromArray = exports.partial = exports.fromPartial = exports.type = exports.fromType = exports.nullable = exports.parse = exports.refine = exports.mapLeftWithInput = exports.UnknownRecord = exports.UnknownArray = exports.boolean = exports.number = exports.string = exports.literal = exports.fromGuard = exports.fromRefinement = exports.failure = exports.success = exports.error = exports.ap = exports.SE = void 0; | ||
exports.stringify = exports.draw = exports.WithRefine = exports.WithUnion = exports.WithUnknownContainers = exports.Schemable = exports.Category = exports.Alt = exports.Functor = exports.URI = exports.id = exports.compose = exports.alt = exports.map = exports.lazy = exports.sum = exports.fromSum = exports.intersect = exports.union = exports.tuple = exports.fromTuple = exports.record = exports.fromRecord = exports.array = exports.fromArray = exports.partial = exports.fromPartial = exports.type = exports.fromType = exports.nullable = exports.parse = exports.refine = exports.withMessage = exports.mapLeftWithInput = exports.UnknownRecord = exports.UnknownArray = exports.boolean = exports.number = exports.string = exports.literal = exports.fromGuard = exports.fromRefinement = exports.failure = exports.success = exports.error = exports.ap = exports.SE = void 0; | ||
var E = require("fp-ts/lib/Either"); | ||
@@ -140,2 +140,9 @@ var pipeable_1 = require("fp-ts/lib/pipeable"); | ||
* @category combinators | ||
* @since 2.2.9 | ||
*/ | ||
exports.withMessage = function (message) { | ||
return exports.mapLeftWithInput(function (input, e) { return FS.of(DE.wrap(message(input, e), e)); }); | ||
}; | ||
/** | ||
* @category combinators | ||
* @since 2.2.7 | ||
@@ -406,3 +413,4 @@ */ | ||
Member: function (index, errors) { return make("member " + index, toForest(errors)); }, | ||
Lazy: function (id, errors) { return make("lazy type " + id, toForest(errors)); } | ||
Lazy: function (id, errors) { return make("lazy type " + id, toForest(errors)); }, | ||
Wrap: function (error, errors) { return make(error, toForest(errors)); } | ||
}); | ||
@@ -409,0 +417,0 @@ var toForest = FS.fold(function (value) { return [toTree(value)]; }, function (left, right) { return toForest(left).concat(toForest(right)); }); |
@@ -545,3 +545,3 @@ /** | ||
*/ | ||
export declare const array: <C extends Mixed>(codec: C, name?: string) => ArrayC<C>; | ||
export declare const array: <C extends Mixed>(item: C, name?: string) => ArrayC<C>; | ||
/** | ||
@@ -818,3 +818,3 @@ * @since 1.0.0 | ||
*/ | ||
export declare const readonlyArray: <C extends Mixed>(codec: C, name?: string) => ReadonlyArrayC<C>; | ||
export declare const readonlyArray: <C extends Mixed>(item: C, name?: string) => ReadonlyArrayC<C>; | ||
/** | ||
@@ -821,0 +821,0 @@ * Strips additional properties |
@@ -538,5 +538,5 @@ "use strict"; | ||
*/ | ||
exports.array = function (codec, name) { | ||
if (name === void 0) { name = "Array<" + codec.name + ">"; } | ||
return new ArrayType(name, function (u) { return exports.UnknownArray.is(u) && u.every(codec.is); }, function (u, c) { | ||
exports.array = function (item, name) { | ||
if (name === void 0) { name = "Array<" + item.name + ">"; } | ||
return new ArrayType(name, function (u) { return exports.UnknownArray.is(u) && u.every(item.is); }, function (u, c) { | ||
var e = exports.UnknownArray.validate(u, c); | ||
@@ -552,3 +552,3 @@ if (Either_1.isLeft(e)) { | ||
var ui = us[i]; | ||
var result = codec.validate(ui, exports.appendContext(c, String(i), codec, ui)); | ||
var result = item.validate(ui, exports.appendContext(c, String(i), item, ui)); | ||
if (Either_1.isLeft(result)) { | ||
@@ -568,3 +568,3 @@ pushAll(errors, result.left); | ||
return errors.length > 0 ? exports.failures(errors) : exports.success(as); | ||
}, codec.encode === exports.identity ? exports.identity : function (a) { return a.map(codec.encode); }, codec); | ||
}, item.encode === exports.identity ? exports.identity : function (a) { return a.map(item.encode); }, item); | ||
}; | ||
@@ -1138,13 +1138,3 @@ /** | ||
if (name === void 0) { name = "Readonly<" + codec.name + ">"; } | ||
return new ReadonlyType(name, codec.is, function (u, c) { | ||
var e = codec.validate(u, c); | ||
if (Either_1.isLeft(e)) { | ||
return e; | ||
} | ||
var x = e.right; | ||
if (process.env.NODE_ENV !== 'production') { | ||
return Either_1.right(Object.freeze(x)); | ||
} | ||
return Either_1.right(x); | ||
}, codec.encode === exports.identity ? exports.identity : codec.encode, codec); | ||
return new ReadonlyType(name, codec.is, codec.validate, codec.encode, codec); | ||
}; | ||
@@ -1172,16 +1162,6 @@ /** | ||
*/ | ||
exports.readonlyArray = function (codec, name) { | ||
if (name === void 0) { name = "ReadonlyArray<" + codec.name + ">"; } | ||
var arrayType = exports.array(codec); | ||
return new ReadonlyArrayType(name, arrayType.is, function (u, c) { | ||
var e = arrayType.validate(u, c); | ||
if (Either_1.isLeft(e)) { | ||
return e; | ||
} | ||
var x = e.right; | ||
if (process.env.NODE_ENV !== 'production') { | ||
return Either_1.right(Object.freeze(x)); | ||
} | ||
return Either_1.right(x); | ||
}, arrayType.encode, codec); | ||
exports.readonlyArray = function (item, name) { | ||
if (name === void 0) { name = "ReadonlyArray<" + item.name + ">"; } | ||
var codec = exports.array(item); | ||
return new ReadonlyArrayType(name, codec.is, codec.validate, codec.encode, item); | ||
}; | ||
@@ -1188,0 +1168,0 @@ /** |
@@ -100,2 +100,7 @@ /** | ||
* @category combinators | ||
* @since 2.2.9 | ||
*/ | ||
export declare const withMessage: <I>(message: (input: I, e: DecodeError) => string) => <A>(decoder: TaskDecoder<I, A>) => TaskDecoder<I, A>; | ||
/** | ||
* @category combinators | ||
* @since 2.2.7 | ||
@@ -102,0 +107,0 @@ */ |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.stringify = exports.draw = exports.WithRefine = exports.WithUnion = exports.WithUnknownContainers = exports.Schemable = exports.Category = exports.Alt = exports.Functor = exports.URI = exports.id = exports.compose = exports.alt = exports.map = exports.lazy = exports.sum = exports.fromSum = exports.intersect = exports.union = exports.tuple = exports.fromTuple = exports.record = exports.fromRecord = exports.array = exports.fromArray = exports.partial = exports.fromPartial = exports.type = exports.fromType = exports.nullable = exports.parse = exports.refine = exports.mapLeftWithInput = exports.UnknownRecord = exports.UnknownArray = exports.boolean = exports.number = exports.string = exports.literal = exports.fromGuard = exports.fromRefinement = exports.fromDecoder = exports.failure = exports.success = exports.error = void 0; | ||
exports.stringify = exports.draw = exports.WithRefine = exports.WithUnion = exports.WithUnknownContainers = exports.Schemable = exports.Category = exports.Alt = exports.Functor = exports.URI = exports.id = exports.compose = exports.alt = exports.map = exports.lazy = exports.sum = exports.fromSum = exports.intersect = exports.union = exports.tuple = exports.fromTuple = exports.record = exports.fromRecord = exports.array = exports.fromArray = exports.partial = exports.fromPartial = exports.type = exports.fromType = exports.nullable = exports.parse = exports.refine = exports.withMessage = exports.mapLeftWithInput = exports.UnknownRecord = exports.UnknownArray = exports.boolean = exports.number = exports.string = exports.literal = exports.fromGuard = exports.fromRefinement = exports.fromDecoder = exports.failure = exports.success = exports.error = void 0; | ||
var E = require("fp-ts/lib/Either"); | ||
@@ -133,2 +133,9 @@ var pipeable_1 = require("fp-ts/lib/pipeable"); | ||
* @category combinators | ||
* @since 2.2.9 | ||
*/ | ||
exports.withMessage = function (message) { | ||
return exports.mapLeftWithInput(function (input, e) { return FS.of(DE.wrap(message(input, e), e)); }); | ||
}; | ||
/** | ||
* @category combinators | ||
* @since 2.2.7 | ||
@@ -135,0 +142,0 @@ */ |
{ | ||
"name": "io-ts", | ||
"version": "2.2.8", | ||
"version": "2.2.9", | ||
"description": "TypeScript runtime type system for IO decoding/encoding", | ||
@@ -5,0 +5,0 @@ "files": [ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
429765
14272
0