io-ts-fuzzer
Advanced tools
Comparing version 1.8.0 to 1.9.0
@@ -33,5 +33,9 @@ import * as t from 'io-ts'; | ||
export declare const fuzzArray: (b: t.ArrayType<t.Mixed, any, any, unknown>) => ConcreteFuzzer<unknown[]>; | ||
export declare function fuzzPartial(b: t.PartialType<t.Props>): ConcreteFuzzer<unknown>; | ||
export declare function partialFuzzer(extra?: t.Props): Fuzzer<unknown, t.PartialType<t.Props, any, any, unknown>>; | ||
/** | ||
* @deprecated | ||
*/ | ||
export declare const fuzzPartial: (b: t.PartialType<t.Props, any, any, unknown>) => ConcreteFuzzer<unknown>; | ||
export declare function fuzzIntersection(b: t.IntersectionType<t.Any[]>): ConcreteFuzzer<unknown>; | ||
export declare const coreFuzzers: (Fuzzer<unknown[], t.ArrayType<t.Mixed, any, any, unknown>> | Fuzzer<number, (t.Decoder<unknown, number> & t.NullType) | (t.Decoder<unknown, number> & t.UndefinedType) | (t.Decoder<unknown, number> & t.VoidType) | (t.Decoder<unknown, number> & t.UnknownType) | (t.Decoder<unknown, number> & t.StringType) | (t.Decoder<unknown, number> & t.NumberType) | (t.Decoder<unknown, number> & t.BooleanType) | (t.Decoder<unknown, number> & t.AnyArrayType) | (t.Decoder<unknown, number> & t.AnyDictionaryType) | (t.Decoder<unknown, number> & t.UnionType<t.Mixed[], any, any, unknown>) | (t.Decoder<unknown, number> & t.InterfaceType<unknown, any, any, unknown>) | (t.Decoder<unknown, number> & t.PartialType<unknown, any, any, unknown>) | (t.Decoder<unknown, number> & t.ArrayType<t.Mixed, any, any, unknown>) | (t.Decoder<unknown, number> & t.IntersectionType<t.Mixed[], any, any, unknown>) | (t.Decoder<unknown, number> & t.LiteralType<string | number | boolean>) | (t.Decoder<unknown, number> & t.KeyofType<{ | ||
export declare const coreFuzzers: (Fuzzer<unknown[], t.ArrayType<t.Mixed, any, any, unknown>> | Fuzzer<unknown, t.PartialType<t.Props, any, any, unknown>> | Fuzzer<number, (t.Decoder<unknown, number> & t.NullType) | (t.Decoder<unknown, number> & t.UndefinedType) | (t.Decoder<unknown, number> & t.VoidType) | (t.Decoder<unknown, number> & t.UnknownType) | (t.Decoder<unknown, number> & t.StringType) | (t.Decoder<unknown, number> & t.NumberType) | (t.Decoder<unknown, number> & t.BooleanType) | (t.Decoder<unknown, number> & t.AnyArrayType) | (t.Decoder<unknown, number> & t.AnyDictionaryType) | (t.Decoder<unknown, number> & t.UnionType<t.Mixed[], any, any, unknown>) | (t.Decoder<unknown, number> & t.InterfaceType<unknown, any, any, unknown>) | (t.Decoder<unknown, number> & t.PartialType<unknown, any, any, unknown>) | (t.Decoder<unknown, number> & t.ArrayType<t.Mixed, any, any, unknown>) | (t.Decoder<unknown, number> & t.IntersectionType<t.Mixed[], any, any, unknown>) | (t.Decoder<unknown, number> & t.LiteralType<string | number | boolean>) | (t.Decoder<unknown, number> & t.KeyofType<{ | ||
[key: string]: unknown; | ||
@@ -48,4 +52,4 @@ }>) | (t.Decoder<unknown, number> & t.TupleType<t.Mixed[], any, any, unknown>) | (t.Decoder<unknown, number> & t.RefinementType<t.Mixed, any, any, unknown>) | (t.Decoder<unknown, number> & t.RecursiveType<t.Mixed, any, any, unknown>) | (t.Decoder<unknown, number> & t.DictionaryType<t.Mixed, t.Mixed, any, any, unknown>) | (t.Decoder<unknown, number> & t.ReadonlyType<t.Mixed, any, any, unknown>) | (t.Decoder<unknown, number> & t.ReadonlyArrayType<t.Mixed, any, any, unknown>) | (t.Decoder<unknown, number> & t.ExactType<t.Mixed, any, any, unknown>)> | Fuzzer<boolean, (t.Decoder<unknown, boolean> & t.NullType) | (t.Decoder<unknown, boolean> & t.UndefinedType) | (t.Decoder<unknown, boolean> & t.VoidType) | (t.Decoder<unknown, boolean> & t.UnknownType) | (t.Decoder<unknown, boolean> & t.StringType) | (t.Decoder<unknown, boolean> & t.NumberType) | (t.Decoder<unknown, boolean> & t.BooleanType) | (t.Decoder<unknown, boolean> & t.AnyArrayType) | (t.Decoder<unknown, boolean> & t.AnyDictionaryType) | (t.Decoder<unknown, boolean> & t.UnionType<t.Mixed[], any, any, unknown>) | (t.Decoder<unknown, boolean> & t.InterfaceType<unknown, any, any, unknown>) | (t.Decoder<unknown, boolean> & t.PartialType<unknown, any, any, unknown>) | (t.Decoder<unknown, boolean> & t.ArrayType<t.Mixed, any, any, unknown>) | (t.Decoder<unknown, boolean> & t.IntersectionType<t.Mixed[], any, any, unknown>) | (t.Decoder<unknown, boolean> & t.LiteralType<string | number | boolean>) | (t.Decoder<unknown, boolean> & t.KeyofType<{ | ||
[key: string]: unknown; | ||
}>) | (t.Decoder<unknown, void> & t.TupleType<t.Mixed[], any, any, unknown>) | (t.Decoder<unknown, void> & t.RefinementType<t.Mixed, any, any, unknown>) | (t.Decoder<unknown, void> & t.RecursiveType<t.Mixed, any, any, unknown>) | (t.Decoder<unknown, void> & t.DictionaryType<t.Mixed, t.Mixed, any, any, unknown>) | (t.Decoder<unknown, void> & t.ReadonlyType<t.Mixed, any, any, unknown>) | (t.Decoder<unknown, void> & t.ReadonlyArrayType<t.Mixed, any, any, unknown>) | (t.Decoder<unknown, void> & t.ExactType<t.Mixed, any, any, unknown>)> | Fuzzer<unknown, t.UnionType<t.Mixed[], any, any, unknown>> | Fuzzer<unknown, t.InterfaceType<t.Props, any, any, unknown>> | Fuzzer<unknown, t.PartialType<t.Props, any, any, unknown>> | Fuzzer<unknown, t.IntersectionType<t.Any[], any, any, unknown>> | Fuzzer<unknown, t.LiteralType<string | number | boolean>> | Fuzzer<unknown, t.KeyofType<{ | ||
}>) | (t.Decoder<unknown, void> & t.TupleType<t.Mixed[], any, any, unknown>) | (t.Decoder<unknown, void> & t.RefinementType<t.Mixed, any, any, unknown>) | (t.Decoder<unknown, void> & t.RecursiveType<t.Mixed, any, any, unknown>) | (t.Decoder<unknown, void> & t.DictionaryType<t.Mixed, t.Mixed, any, any, unknown>) | (t.Decoder<unknown, void> & t.ReadonlyType<t.Mixed, any, any, unknown>) | (t.Decoder<unknown, void> & t.ReadonlyArrayType<t.Mixed, any, any, unknown>) | (t.Decoder<unknown, void> & t.ExactType<t.Mixed, any, any, unknown>)> | Fuzzer<unknown, t.UnionType<t.Mixed[], any, any, unknown>> | Fuzzer<unknown, t.InterfaceType<t.Props, any, any, unknown>> | Fuzzer<unknown, t.IntersectionType<t.Any[], any, any, unknown>> | Fuzzer<unknown, t.LiteralType<string | number | boolean>> | Fuzzer<unknown, t.KeyofType<{ | ||
[key: string]: unknown; | ||
}>> | Fuzzer<unknown[], t.TupleType<t.Mixed[], any, any, unknown>> | Fuzzer<t.Branded<number, t.IntBrand>, t.Decoder<unknown, t.Branded<number, t.IntBrand>>>)[]; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const t = require("io-ts"); | ||
function concrete(func, tag) { | ||
@@ -137,5 +138,7 @@ return { | ||
exports.fuzzArray = fuzzArrayWithMaxLength(); | ||
function fuzzPartial(b) { | ||
const keys = Object.getOwnPropertyNames(b.props); | ||
const vals = keys.map(k => b.props[k]); | ||
const fuzzPartialWithExtraCodec = (extra = { ___0000_extra_: t.number }) => (b) => { | ||
const kk = Object.getOwnPropertyNames(b.props); | ||
const xx = Object.getOwnPropertyNames(extra); | ||
const keys = Object.getOwnPropertyNames(b.props).concat(Object.getOwnPropertyNames(extra)); | ||
const vals = keys.map((k, i) => i < kk.length ? b.props[k] : extra[xx[i - kk.length]]); | ||
return { | ||
@@ -147,3 +150,7 @@ children: vals, | ||
if (n & (2 ** i)) { | ||
ret[keys[i]] = v.encode(n + i); | ||
// Only allow key indices from the original type | ||
// or added keys without indices. | ||
if (i < kk.length || !kk.includes(keys[i])) { | ||
ret[keys[i]] = v.encode(n + i); | ||
} | ||
} | ||
@@ -154,4 +161,11 @@ }); | ||
}; | ||
}; | ||
function partialFuzzer(extra = { ___0000_extra_: t.number }) { | ||
return gen(fuzzPartialWithExtraCodec(extra), 'PartialType'); | ||
} | ||
exports.fuzzPartial = fuzzPartial; | ||
exports.partialFuzzer = partialFuzzer; | ||
/** | ||
* @deprecated | ||
*/ | ||
exports.fuzzPartial = fuzzPartialWithExtraCodec(); | ||
function fuzzIntersection(b) { | ||
@@ -185,3 +199,3 @@ return { | ||
gen(fuzzInterface, 'InterfaceType'), | ||
gen(fuzzPartial, 'PartialType'), | ||
partialFuzzer(), | ||
arrayFuzzer(), | ||
@@ -188,0 +202,0 @@ gen(fuzzIntersection, 'IntersectionType'), |
@@ -10,3 +10,4 @@ import { Fuzzer, ExampleGenerator } from './fuzzer'; | ||
export interface FluentRegistry extends Registry { | ||
withArrayFuzzer(maxLength: number): FluentRegistry; | ||
withArrayFuzzer(maxLength?: number): FluentRegistry; | ||
withPartialFuzzer(extra?: t.Props): FluentRegistry; | ||
} | ||
@@ -13,0 +14,0 @@ export declare function fluent(r: Registry): FluentRegistry; |
@@ -5,2 +5,3 @@ "use strict"; | ||
const core_1 = require("./core/"); | ||
const core_2 = require("./core/core"); | ||
class FluentifiedRegistry { | ||
@@ -24,2 +25,6 @@ constructor(pimpl) { | ||
} | ||
withPartialFuzzer(extra) { | ||
this.register(core_2.partialFuzzer(extra)); | ||
return this; | ||
} | ||
} | ||
@@ -26,0 +31,0 @@ function fluent(r) { |
@@ -0,1 +1,8 @@ | ||
# [1.9.0](https://github.com/holvonix-open/io-ts-fuzzer/compare/v1.8.0...v1.9.0) (2019-08-05) | ||
### 🌟🚀 Features | ||
* support configuring extra properties for partial fuzzers ([5e80982](https://github.com/holvonix-open/io-ts-fuzzer/commit/5e80982)) | ||
# [1.8.0](https://github.com/holvonix-open/io-ts-fuzzer/compare/v1.7.0...v1.8.0) (2019-08-05) | ||
@@ -2,0 +9,0 @@ |
{ | ||
"name": "io-ts-fuzzer", | ||
"version": "1.8.0", | ||
"version": "1.9.0", | ||
"description": "Fuzzing for io-ts codecs and types", | ||
@@ -5,0 +5,0 @@ "repository": { |
@@ -64,2 +64,10 @@ # io-ts-fuzzer - Fuzzing for io-ts codecs and types | ||
### Configuring Core Fuzzers | ||
The `FluentRegistry` interface lets you easily change certain core | ||
fuzzers, currently: | ||
* maximum array length | ||
* extra properties inserted into `partial` objects | ||
### Fuzzing a Type (TODO) | ||
@@ -66,0 +74,0 @@ |
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
50434
478
105