Socket
Socket
Sign inDemoInstall

superstruct

Package Overview
Dependencies
Maintainers
1
Versions
90
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

superstruct - npm Package Compare versions

Comparing version 0.12.0 to 0.12.1

235

lib/index.es.js

@@ -1,86 +0,1 @@

function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function _objectWithoutPropertiesLoose(source, excluded) {
if (source == null) return {};
var target = {};
var sourceKeys = Object.keys(source);
var key, i;
for (i = 0; i < sourceKeys.length; i++) {
key = sourceKeys[i];
if (excluded.indexOf(key) >= 0) continue;
target[key] = source[key];
}
return target;
}
function _objectWithoutProperties(source, excluded) {
if (source == null) return {};
var target = _objectWithoutPropertiesLoose(source, excluded);
var key, i;
if (Object.getOwnPropertySymbols) {
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
for (i = 0; i < sourceSymbolKeys.length; i++) {
key = sourceSymbolKeys[i];
if (excluded.indexOf(key) >= 0) continue;
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
target[key] = source[key];
}
}
return target;
}
/**

@@ -101,23 +16,13 @@ * A `StructFailure` represents a single specific failure in validation.

const {
path,
value,
key,
type,
message,
refinement,
branch
} = failure,
rest = _objectWithoutProperties(failure, ["path", "value", "key", "type", "message", "refinement", "branch"]);
...rest
} = failure;
const {
path
} = failure;
let failures;
const msg = path.length === 0 ? message : `At path: ${path.join('.')} -- ${message}`;
const msg = path.length === 0 ? message : "At path: " + path.join('.') + " -- " + message;
super(msg);
Object.assign(this, rest);
this.name = this.constructor.name;
this.value = value;
this.key = key;
this.type = type;
this.refinement = refinement;
this.path = path;
this.branch = branch;

@@ -150,5 +55,4 @@ this.failures = () => {

function print(value, ticks) {
const string = typeof value === 'string' ? JSON.stringify(value) : `${value}`;
return ticks ? `${ticks}${string}${ticks}` : string;
function print(value) {
return typeof value === 'string' ? JSON.stringify(value) : "" + value;
}

@@ -244,5 +148,5 @@ /**

} = struct;
const subschema = { ...schema
};
const subschema = _objectSpread2({}, schema);
for (const key of keys) {

@@ -262,3 +166,5 @@ delete subschema[key];

function partial(struct) {
const schema = struct instanceof Struct ? _objectSpread2({}, struct.schema) : _objectSpread2({}, struct);
const schema = struct instanceof Struct ? { ...struct.schema
} : { ...struct
};

@@ -318,3 +224,3 @@ for (const key in schema) {

if (!Array.isArray(value)) {
yield ctx.fail(`Expected an array value, but received: ${print(value)}`);
yield ctx.fail("Expected an array value, but received: " + print(value));
} else if (Element) {

@@ -347,3 +253,3 @@ for (const [i, v] of value.entries()) {

return define('date', value => {
return value instanceof Date && !isNaN(value.getTime()) || `Expected a valid \`Date\` object, but received: ${print(value)}`;
return value instanceof Date && !isNaN(value.getTime()) || "Expected a valid `Date` object, but received: " + print(value);
});

@@ -363,3 +269,3 @@ }

validator: value => {
return values.includes(value) || `Expected one of \`${description}\`, but received: ${print(value)}`;
return values.includes(value) || "Expected one of `" + description + "`, but received: " + print(value);
}

@@ -374,3 +280,3 @@ });

return define('func', value => {
return typeof value === 'function' || `Expected a function, but received: ${print(value)}`;
return typeof value === 'function' || "Expected a function, but received: " + print(value);
});

@@ -384,3 +290,3 @@ }

return define('instance', value => {
return value instanceof Class || `Expected a \`${Class.name}\` instance, but received: ${print(value)}`;
return value instanceof Class || "Expected a `" + Class.name + "` instance, but received: " + print(value);
});

@@ -394,3 +300,3 @@ }

return define('integer', value => {
return typeof value === 'number' && !isNaN(value) && Number.isInteger(value) || `Expected an integer, but received: ${print(value)}`;
return typeof value === 'number' && !isNaN(value) && Number.isInteger(value) || "Expected an integer, but received: " + print(value);
});

@@ -408,3 +314,3 @@ }

return define('literal', value => {
return value === constant || `Expected the literal \`${description}\`, but received: ${print(value)}`;
return value === constant || "Expected the literal `" + description + "`, but received: " + print(value);
});

@@ -415,3 +321,3 @@ }

if (!(value instanceof Map)) {
yield ctx.fail(`Expected a \`Map\` object, but received: ${print(value)}`);
yield ctx.fail("Expected a `Map` object, but received: " + print(value));
} else if (Key && Value) {

@@ -440,3 +346,3 @@ for (const [k, v] of value.entries()) {

} = struct;
return new Struct(_objectSpread2(_objectSpread2({}, struct), {}, {
return new Struct({ ...struct,
validator: (value, ctx) => {

@@ -447,10 +353,9 @@ return value === null || ctx.check(value, struct);

if (value != null) {
const c = _objectSpread2(_objectSpread2({}, ctx), {}, {
const c = { ...ctx,
struct
});
};
yield* toFailures(refiner(value, c), c);
}
}
}));
});
}

@@ -463,3 +368,3 @@ /**

return define('number', value => {
return typeof value === 'number' && !isNaN(value) || `Expected a number, but received: ${print(value)}`;
return typeof value === 'number' && !isNaN(value) || "Expected a number, but received: " + print(value);
});

@@ -476,3 +381,3 @@ }

if (typeof value !== 'object' || value == null) {
yield ctx.fail(`Expected an object, but received: ${print(value)}`);
yield ctx.fail("Expected an object, but received: " + print(value));
} else if (schema) {

@@ -526,3 +431,3 @@ const unknowns = new Set(Object.keys(value));

} = struct;
return new Struct(_objectSpread2(_objectSpread2({}, struct), {}, {
return new Struct({ ...struct,
validator: (value, ctx) => {

@@ -533,10 +438,9 @@ return value === undefined || ctx.check(value, struct);

if (value != null) {
const c = _objectSpread2(_objectSpread2({}, ctx), {}, {
const c = { ...ctx,
struct
});
};
yield* toFailures(refiner(value, c), c);
}
}
}));
});
}

@@ -553,3 +457,3 @@ /**

if (typeof value !== 'object' || value == null) {
yield ctx.fail(`Expected an object, but received: ${print(value)}`);
yield ctx.fail("Expected an object, but received: " + print(value));
} else {

@@ -579,3 +483,3 @@ for (const k in value) {

if (!(value instanceof Set)) {
yield ctx.fail(`Expected a \`Set\` object, but received: ${print(value)}`);
yield ctx.fail("Expected a `Set` object, but received: " + print(value));
} else if (Element) {

@@ -594,3 +498,3 @@ for (const val of value) {

return define('string', value => {
return typeof value === 'string' || `Expected a string, but received: ${print(value)}`;
return typeof value === 'string' || "Expected a string, but received: " + print(value);
});

@@ -602,3 +506,3 @@ }

if (!Array.isArray(value)) {
yield ctx.fail(`Expected an array, but received: ${print(value)}`);
yield ctx.fail("Expected an array, but received: " + print(value));
} else {

@@ -632,3 +536,3 @@ for (const [index, Element] of Elements.entries()) {

if (typeof value !== 'object' || value == null) {
yield ctx.fail(`Expected an object, but received: ${print(value)}`);
yield ctx.fail("Expected an object, but received: " + print(value));
} else {

@@ -659,3 +563,3 @@ for (const key of keys) {

yield ctx.fail(`Expected the value to satisfy a union of \`${description}\`, but received: ${print(value)}`);
yield ctx.fail("Expected the value to satisfy a union of `" + description + "`, but received: " + print(value));
yield* failures;

@@ -685,3 +589,3 @@ });

const fn = struct.coercer;
return new Struct(_objectSpread2(_objectSpread2({}, struct), {}, {
return new Struct({ ...struct,
coercer: value => {

@@ -694,3 +598,3 @@ if (is(value, condition)) {

}
}));
});
}

@@ -716,4 +620,4 @@ /**

if (!strict && isPlainObject(x) && isPlainObject(f)) {
const ret = _objectSpread2({}, x);
const ret = { ...x
};
let changed = false;

@@ -779,14 +683,10 @@

constructor(props) {
const {
type,
schema,
coercer = value => value,
validator = () => [],
refiner = () => []
} = props;
this.type = type;
this.schema = schema;
this.coercer = coercer;
this.validator = validator;
this.refiner = refiner;
this.type = props.type;
this.schema = props.schema;
this.coercer = props.coercer || (value => value);
this.validator = props.validator || (() => []);
this.refiner = props.refiner || (() => []);
}

@@ -930,6 +830,6 @@ /**

if (!message) {
message = `Expected a value of type \`${type}\`${refinement ? ` with refinement \`${refinement}\`` : ''}${path.length ? ` for \`${path.join('.')}\`` : ''}, but received: \`${print(value)}\``;
message = "Expected a value of type `" + type + "`" + (refinement ? " with refinement `" + refinement + "`" : '') + (path.length ? " for `" + path.join('.') + "`" : '') + ", but received: `" + print(value) + "`";
}
return _objectSpread2(_objectSpread2({}, props), {}, {
return { ...props,
value,

@@ -942,3 +842,3 @@ type,

branch: [...branch, value]
});
};
}

@@ -963,3 +863,3 @@

function empty(struct) {
const expected = `Expected an empty ${struct.type}`;
const expected = "Expected an empty " + struct.type;
return refine(struct, 'empty', value => {

@@ -970,3 +870,3 @@ if (value instanceof Map || value instanceof Set) {

} = value;
return size === 0 || `${expected} but received one with a size of \`${size}\``;
return size === 0 || expected + " but received one with a size of `" + size + "`";
} else {

@@ -976,3 +876,3 @@ const {

} = value;
return length === 0 || `${expected} but received one with a length of \`${length}\``;
return length === 0 || expected + " but received one with a length of `" + length + "`";
}

@@ -990,3 +890,3 @@ });

return refine(struct, 'max', value => {
return exclusive ? value < threshold : value <= threshold || `Expected a ${struct.type} greater than ${exclusive ? '' : 'or equal to '}${threshold} but received \`${value}\``;
return exclusive ? value < threshold : value <= threshold || "Expected a " + struct.type + " greater than " + (exclusive ? '' : 'or equal to ') + threshold + " but received `" + value + "`";
});

@@ -1003,3 +903,3 @@ }

return refine(struct, 'min', value => {
return exclusive ? value > threshold : value >= threshold || `Expected a ${struct.type} greater than ${exclusive ? '' : 'or equal to '}${threshold} but received \`${value}\``;
return exclusive ? value > threshold : value >= threshold || "Expected a " + struct.type + " greater than " + (exclusive ? '' : 'or equal to ') + threshold + " but received `" + value + "`";
});

@@ -1013,3 +913,3 @@ }

return refine(struct, 'pattern', value => {
return regexp.test(value) || `Expected a ${struct.type} matching \`/${regexp.source}/\` but received "${value}"`;
return regexp.test(value) || "Expected a " + struct.type + " matching `/" + regexp.source + "/` but received \"" + value + "\"";
});

@@ -1022,7 +922,7 @@ }

function size(struct, min, max = min) {
const expected = `Expected a ${struct.type}`;
const of = min === max ? `of \`${min}\`` : `between \`${min}\` and \`${max}\``;
const expected = "Expected a " + struct.type;
const of = min === max ? "of `" + min + "`" : "between `" + min + "` and `" + max + "`";
return refine(struct, 'size', value => {
if (typeof value === 'number' || value instanceof Date) {
return min <= value && value <= max || `${expected} ${of} but received \`${value}\``;
return min <= value && value <= max || expected + " " + of + " but received `" + value + "`";
} else if (value instanceof Map || value instanceof Set) {

@@ -1032,3 +932,3 @@ const {

} = value;
return min <= size && size <= max || `${expected} with a size ${of} but received one with a size of \`${size}\``;
return min <= size && size <= max || expected + " with a size " + of + " but received one with a size of `" + size + "`";
} else {

@@ -1038,3 +938,3 @@ const {

} = value;
return min <= length && length <= max || `${expected} with a length ${of} but received one with a length of \`${length}\``;
return min <= length && length <= max || expected + " with a length " + of + " but received one with a length of `" + length + "`";
}

@@ -1053,3 +953,4 @@ });

const fn = struct.refiner;
return new Struct(_objectSpread2(_objectSpread2({}, struct), {}, {
return new Struct({ ...struct,
*refiner(value, ctx) {

@@ -1059,9 +960,9 @@ yield* toFailures(fn(value, ctx), ctx);

for (const failure of toFailures(refiner(value, ctx), ctx)) {
yield _objectSpread2(_objectSpread2({}, failure), {}, {
yield { ...failure,
refinement: name
});
};
}
}
}));
});
}

@@ -1068,0 +969,0 @@

@@ -12,3 +12,3 @@ import { Struct, Infer, Result, Context, Describe } from './struct';

*/
export declare function print(value: any, ticks?: string): string;
export declare function print(value: any): string;
/**

@@ -15,0 +15,0 @@ * Shifts (removes and returns) the first value from the `input` iterator.

@@ -5,3 +5,3 @@ {

"description": "A simple and composable way to validate data in JavaScript (and TypeScript).",
"version": "0.12.0",
"version": "0.12.1",
"license": "MIT",

@@ -21,5 +21,3 @@ "repository": "git://github.com/ianstormtaylor/superstruct.git",

"@babel/core": "^7.6.3",
"@babel/plugin-proposal-class-properties": "^7.5.5",
"@babel/plugin-proposal-object-rest-spread": "^7.6.2",
"@babel/plugin-transform-modules-commonjs": "^7.6.0",
"@babel/plugin-transform-modules-commonjs": "^7.12.1",
"@babel/preset-env": "^7.6.3",

@@ -34,3 +32,2 @@ "@babel/preset-typescript": "^7.6.0",

"babel-eslint": "^10.0.3",
"babel-plugin-dev-expression": "^0.2.2",
"eslint": "^7.14.0",

@@ -37,0 +34,0 @@ "eslint-config-prettier": "^6.15.0",

@@ -7,87 +7,2 @@ (function (global, factory) {

function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function _objectWithoutPropertiesLoose(source, excluded) {
if (source == null) return {};
var target = {};
var sourceKeys = Object.keys(source);
var key, i;
for (i = 0; i < sourceKeys.length; i++) {
key = sourceKeys[i];
if (excluded.indexOf(key) >= 0) continue;
target[key] = source[key];
}
return target;
}
function _objectWithoutProperties(source, excluded) {
if (source == null) return {};
var target = _objectWithoutPropertiesLoose(source, excluded);
var key, i;
if (Object.getOwnPropertySymbols) {
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
for (i = 0; i < sourceSymbolKeys.length; i++) {
key = sourceSymbolKeys[i];
if (excluded.indexOf(key) >= 0) continue;
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
target[key] = source[key];
}
}
return target;
}
/**

@@ -108,23 +23,13 @@ * A `StructFailure` represents a single specific failure in validation.

const {
path,
value,
key,
type,
message,
refinement,
branch
} = failure,
rest = _objectWithoutProperties(failure, ["path", "value", "key", "type", "message", "refinement", "branch"]);
...rest
} = failure;
const {
path
} = failure;
let failures;
const msg = path.length === 0 ? message : `At path: ${path.join('.')} -- ${message}`;
const msg = path.length === 0 ? message : "At path: " + path.join('.') + " -- " + message;
super(msg);
Object.assign(this, rest);
this.name = this.constructor.name;
this.value = value;
this.key = key;
this.type = type;
this.refinement = refinement;
this.path = path;
this.branch = branch;

@@ -157,5 +62,4 @@ this.failures = () => {

function print(value, ticks) {
const string = typeof value === 'string' ? JSON.stringify(value) : `${value}`;
return ticks ? `${ticks}${string}${ticks}` : string;
function print(value) {
return typeof value === 'string' ? JSON.stringify(value) : "" + value;
}

@@ -251,5 +155,5 @@ /**

} = struct;
const subschema = { ...schema
};
const subschema = _objectSpread2({}, schema);
for (const key of keys) {

@@ -269,3 +173,5 @@ delete subschema[key];

function partial(struct) {
const schema = struct instanceof Struct ? _objectSpread2({}, struct.schema) : _objectSpread2({}, struct);
const schema = struct instanceof Struct ? { ...struct.schema
} : { ...struct
};

@@ -325,3 +231,3 @@ for (const key in schema) {

if (!Array.isArray(value)) {
yield ctx.fail(`Expected an array value, but received: ${print(value)}`);
yield ctx.fail("Expected an array value, but received: " + print(value));
} else if (Element) {

@@ -354,3 +260,3 @@ for (const [i, v] of value.entries()) {

return define('date', value => {
return value instanceof Date && !isNaN(value.getTime()) || `Expected a valid \`Date\` object, but received: ${print(value)}`;
return value instanceof Date && !isNaN(value.getTime()) || "Expected a valid `Date` object, but received: " + print(value);
});

@@ -370,3 +276,3 @@ }

validator: value => {
return values.includes(value) || `Expected one of \`${description}\`, but received: ${print(value)}`;
return values.includes(value) || "Expected one of `" + description + "`, but received: " + print(value);
}

@@ -381,3 +287,3 @@ });

return define('func', value => {
return typeof value === 'function' || `Expected a function, but received: ${print(value)}`;
return typeof value === 'function' || "Expected a function, but received: " + print(value);
});

@@ -391,3 +297,3 @@ }

return define('instance', value => {
return value instanceof Class || `Expected a \`${Class.name}\` instance, but received: ${print(value)}`;
return value instanceof Class || "Expected a `" + Class.name + "` instance, but received: " + print(value);
});

@@ -401,3 +307,3 @@ }

return define('integer', value => {
return typeof value === 'number' && !isNaN(value) && Number.isInteger(value) || `Expected an integer, but received: ${print(value)}`;
return typeof value === 'number' && !isNaN(value) && Number.isInteger(value) || "Expected an integer, but received: " + print(value);
});

@@ -415,3 +321,3 @@ }

return define('literal', value => {
return value === constant || `Expected the literal \`${description}\`, but received: ${print(value)}`;
return value === constant || "Expected the literal `" + description + "`, but received: " + print(value);
});

@@ -422,3 +328,3 @@ }

if (!(value instanceof Map)) {
yield ctx.fail(`Expected a \`Map\` object, but received: ${print(value)}`);
yield ctx.fail("Expected a `Map` object, but received: " + print(value));
} else if (Key && Value) {

@@ -447,3 +353,3 @@ for (const [k, v] of value.entries()) {

} = struct;
return new Struct(_objectSpread2(_objectSpread2({}, struct), {}, {
return new Struct({ ...struct,
validator: (value, ctx) => {

@@ -454,10 +360,9 @@ return value === null || ctx.check(value, struct);

if (value != null) {
const c = _objectSpread2(_objectSpread2({}, ctx), {}, {
const c = { ...ctx,
struct
});
};
yield* toFailures(refiner(value, c), c);
}
}
}));
});
}

@@ -470,3 +375,3 @@ /**

return define('number', value => {
return typeof value === 'number' && !isNaN(value) || `Expected a number, but received: ${print(value)}`;
return typeof value === 'number' && !isNaN(value) || "Expected a number, but received: " + print(value);
});

@@ -483,3 +388,3 @@ }

if (typeof value !== 'object' || value == null) {
yield ctx.fail(`Expected an object, but received: ${print(value)}`);
yield ctx.fail("Expected an object, but received: " + print(value));
} else if (schema) {

@@ -533,3 +438,3 @@ const unknowns = new Set(Object.keys(value));

} = struct;
return new Struct(_objectSpread2(_objectSpread2({}, struct), {}, {
return new Struct({ ...struct,
validator: (value, ctx) => {

@@ -540,10 +445,9 @@ return value === undefined || ctx.check(value, struct);

if (value != null) {
const c = _objectSpread2(_objectSpread2({}, ctx), {}, {
const c = { ...ctx,
struct
});
};
yield* toFailures(refiner(value, c), c);
}
}
}));
});
}

@@ -560,3 +464,3 @@ /**

if (typeof value !== 'object' || value == null) {
yield ctx.fail(`Expected an object, but received: ${print(value)}`);
yield ctx.fail("Expected an object, but received: " + print(value));
} else {

@@ -586,3 +490,3 @@ for (const k in value) {

if (!(value instanceof Set)) {
yield ctx.fail(`Expected a \`Set\` object, but received: ${print(value)}`);
yield ctx.fail("Expected a `Set` object, but received: " + print(value));
} else if (Element) {

@@ -601,3 +505,3 @@ for (const val of value) {

return define('string', value => {
return typeof value === 'string' || `Expected a string, but received: ${print(value)}`;
return typeof value === 'string' || "Expected a string, but received: " + print(value);
});

@@ -609,3 +513,3 @@ }

if (!Array.isArray(value)) {
yield ctx.fail(`Expected an array, but received: ${print(value)}`);
yield ctx.fail("Expected an array, but received: " + print(value));
} else {

@@ -639,3 +543,3 @@ for (const [index, Element] of Elements.entries()) {

if (typeof value !== 'object' || value == null) {
yield ctx.fail(`Expected an object, but received: ${print(value)}`);
yield ctx.fail("Expected an object, but received: " + print(value));
} else {

@@ -666,3 +570,3 @@ for (const key of keys) {

yield ctx.fail(`Expected the value to satisfy a union of \`${description}\`, but received: ${print(value)}`);
yield ctx.fail("Expected the value to satisfy a union of `" + description + "`, but received: " + print(value));
yield* failures;

@@ -692,3 +596,3 @@ });

const fn = struct.coercer;
return new Struct(_objectSpread2(_objectSpread2({}, struct), {}, {
return new Struct({ ...struct,
coercer: value => {

@@ -701,3 +605,3 @@ if (is(value, condition)) {

}
}));
});
}

@@ -723,4 +627,4 @@ /**

if (!strict && isPlainObject(x) && isPlainObject(f)) {
const ret = _objectSpread2({}, x);
const ret = { ...x
};
let changed = false;

@@ -786,14 +690,10 @@

constructor(props) {
const {
type,
schema,
coercer = value => value,
validator = () => [],
refiner = () => []
} = props;
this.type = type;
this.schema = schema;
this.coercer = coercer;
this.validator = validator;
this.refiner = refiner;
this.type = props.type;
this.schema = props.schema;
this.coercer = props.coercer || (value => value);
this.validator = props.validator || (() => []);
this.refiner = props.refiner || (() => []);
}

@@ -937,6 +837,6 @@ /**

if (!message) {
message = `Expected a value of type \`${type}\`${refinement ? ` with refinement \`${refinement}\`` : ''}${path.length ? ` for \`${path.join('.')}\`` : ''}, but received: \`${print(value)}\``;
message = "Expected a value of type `" + type + "`" + (refinement ? " with refinement `" + refinement + "`" : '') + (path.length ? " for `" + path.join('.') + "`" : '') + ", but received: `" + print(value) + "`";
}
return _objectSpread2(_objectSpread2({}, props), {}, {
return { ...props,
value,

@@ -949,3 +849,3 @@ type,

branch: [...branch, value]
});
};
}

@@ -970,3 +870,3 @@

function empty(struct) {
const expected = `Expected an empty ${struct.type}`;
const expected = "Expected an empty " + struct.type;
return refine(struct, 'empty', value => {

@@ -977,3 +877,3 @@ if (value instanceof Map || value instanceof Set) {

} = value;
return size === 0 || `${expected} but received one with a size of \`${size}\``;
return size === 0 || expected + " but received one with a size of `" + size + "`";
} else {

@@ -983,3 +883,3 @@ const {

} = value;
return length === 0 || `${expected} but received one with a length of \`${length}\``;
return length === 0 || expected + " but received one with a length of `" + length + "`";
}

@@ -997,3 +897,3 @@ });

return refine(struct, 'max', value => {
return exclusive ? value < threshold : value <= threshold || `Expected a ${struct.type} greater than ${exclusive ? '' : 'or equal to '}${threshold} but received \`${value}\``;
return exclusive ? value < threshold : value <= threshold || "Expected a " + struct.type + " greater than " + (exclusive ? '' : 'or equal to ') + threshold + " but received `" + value + "`";
});

@@ -1010,3 +910,3 @@ }

return refine(struct, 'min', value => {
return exclusive ? value > threshold : value >= threshold || `Expected a ${struct.type} greater than ${exclusive ? '' : 'or equal to '}${threshold} but received \`${value}\``;
return exclusive ? value > threshold : value >= threshold || "Expected a " + struct.type + " greater than " + (exclusive ? '' : 'or equal to ') + threshold + " but received `" + value + "`";
});

@@ -1020,3 +920,3 @@ }

return refine(struct, 'pattern', value => {
return regexp.test(value) || `Expected a ${struct.type} matching \`/${regexp.source}/\` but received "${value}"`;
return regexp.test(value) || "Expected a " + struct.type + " matching `/" + regexp.source + "/` but received \"" + value + "\"";
});

@@ -1029,7 +929,7 @@ }

function size(struct, min, max = min) {
const expected = `Expected a ${struct.type}`;
const of = min === max ? `of \`${min}\`` : `between \`${min}\` and \`${max}\``;
const expected = "Expected a " + struct.type;
const of = min === max ? "of `" + min + "`" : "between `" + min + "` and `" + max + "`";
return refine(struct, 'size', value => {
if (typeof value === 'number' || value instanceof Date) {
return min <= value && value <= max || `${expected} ${of} but received \`${value}\``;
return min <= value && value <= max || expected + " " + of + " but received `" + value + "`";
} else if (value instanceof Map || value instanceof Set) {

@@ -1039,3 +939,3 @@ const {

} = value;
return min <= size && size <= max || `${expected} with a size ${of} but received one with a size of \`${size}\``;
return min <= size && size <= max || expected + " with a size " + of + " but received one with a size of `" + size + "`";
} else {

@@ -1045,3 +945,3 @@ const {

} = value;
return min <= length && length <= max || `${expected} with a length ${of} but received one with a length of \`${length}\``;
return min <= length && length <= max || expected + " with a length " + of + " but received one with a length of `" + length + "`";
}

@@ -1060,3 +960,4 @@ });

const fn = struct.refiner;
return new Struct(_objectSpread2(_objectSpread2({}, struct), {}, {
return new Struct({ ...struct,
*refiner(value, ctx) {

@@ -1066,9 +967,9 @@ yield* toFailures(fn(value, ctx), ctx);

for (const failure of toFailures(refiner(value, ctx), ctx)) {
yield _objectSpread2(_objectSpread2({}, failure), {}, {
yield { ...failure,
refinement: name
});
};
}
}
}));
});
}

@@ -1075,0 +976,0 @@

@@ -1,1 +0,1 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Superstruct={})}(this,(function(e){"use strict";function t(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function r(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function n(e){for(var n=1;n<arguments.length;n++){var a=null!=arguments[n]?arguments[n]:{};n%2?r(Object(a),!0).forEach((function(r){t(e,r,a[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):r(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function a(e){return(a=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function c(e,t){return(c=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function u(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}function i(e,t,r){return(i=u()?Reflect.construct:function(e,t,r){var n=[null];n.push.apply(n,t);var a=new(Function.bind.apply(e,n));return r&&c(a,r.prototype),a}).apply(null,arguments)}function o(e){var t="function"==typeof Map?new Map:void 0;return(o=function(e){if(null===e||(r=e,-1===Function.toString.call(r).indexOf("[native code]")))return e;var r;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return i(e,arguments,a(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),c(n,e)})(e)}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function s(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return f(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?f(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}var l=function(e){var t,r;function n(t,r){var n,a,c=t.path,u=t.value,i=t.key,o=t.type,f=t.message,s=t.refinement,l=t.branch,p=function(e,t){if(null==e)return{};var r,n,a={},c=Object.keys(e);for(n=0;n<c.length;n++)r=c[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(t,["path","value","key","type","message","refinement","branch"]),d=0===c.length?f:"At path: "+c.join(".")+" -- "+f;return n=e.call(this,d)||this,Object.assign(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(n),p),n.name=n.constructor.name,n.value=u,n.key=i,n.type=o,n.refinement=s,n.path=c,n.branch=l,n.failures=function(){return a||(a=[t].concat(r)),a},n}return r=e,(t=n).prototype=Object.create(r.prototype),t.prototype.constructor=t,t.__proto__=r,n}(o(TypeError)),p=regeneratorRuntime.mark(m);function d(e){if("[object Object]"!==Object.prototype.toString.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function v(e,t){var r="string"==typeof e?JSON.stringify(e):""+e;return t?""+t+r+t:r}function b(e){var t=e.next(),r=t.done,n=t.value;return r?void 0:n}function m(e,t){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if("string"!=typeof e){r.next=5;break}return r.next=3,t.fail({message:e});case 3:r.next=15;break;case 5:if(!0!==e){r.next=9;break}return r.abrupt("return");case 9:if(!1!==e){r.next=14;break}return r.next=12,t.fail();case 12:r.next=15;break;case 14:return r.delegateYield(e,"t0",15);case 15:case"end":return r.stop()}}),p)}function y(e,t){return new E({type:e,schema:null,validator:t})}function h(){return y("never",(function(){return!1}))}function g(e){var t=e?Object.keys(e):[],r=h();return new E({type:"object",schema:e||null,validator:regeneratorRuntime.mark((function n(a,c){var u,i,o,f,l,p,d,b,m,y;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if("object"==typeof a&&null!=a){n.next=5;break}return n.next=3,c.fail("Expected an object, but received: "+v(a));case 3:n.next=23;break;case 5:if(!e){n.next=23;break}u=new Set(Object.keys(a)),i=s(t);case 8:if((o=i()).done){n.next=16;break}return f=o.value,u.delete(f),l=e[f],p=a[f],n.delegateYield(c.check(p,l,a,f),"t0",14);case 14:n.next=8;break;case 16:d=s(u);case 17:if((b=d()).done){n.next=23;break}return m=b.value,y=a[m],n.delegateYield(c.check(y,r,a,m),"t1",21);case 21:n.next=17;break;case 23:case"end":return n.stop()}}),n)})),coercer:function(r){if(!e||"object"!=typeof r||null==r)return r;for(var n,a={},c=new Set(Object.keys(r)),u=s(t);!(n=u()).done;){var i=n.value;c.delete(i);var o=e[i],f=r[i];a[i]=o.coercer(f)}for(var l,p=s(c);!(l=p()).done;){var d=l.value;a[d]=r[d]}return a}})}function x(e){var t=e.refiner;return new E(n(n({},e),{},{validator:function(t,r){return void 0===t||r.check(t,e)},refiner:function(e){var t=regeneratorRuntime.mark(r);function r(r,n){var a=arguments;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.delegateYield(e.apply(this,a),"t0",1);case 1:return t.abrupt("return",t.t0);case 2:case"end":return t.stop()}}),t,this)}return r.toString=function(){return e.toString()},r}(regeneratorRuntime.mark((function r(a,c){var u;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(null==a){r.next=3;break}return u=n(n({},c),{},{struct:e}),r.delegateYield(m(t(a,u),u),"t0",3);case 3:case"end":return r.stop()}}),r)})))}))}function k(){return y("string",(function(e){return"string"==typeof e||"Expected a string, but received: "+v(e)}))}function w(){return y("unknown",(function(){return!0}))}function j(e,t,r){var a=e.coercer;return new E(n(n({},e),{},{coercer:function(e){return A(e,t)?a(r(e)):a(e)}}))}function O(e){return j(e,w(),(function(t){if("object"!=typeof e.schema||null==e.schema||"object"!=typeof t||null==t)return t;var r={};for(var n in e.schema)n in t&&(r[n]=t[n]);return r}))}var R=regeneratorRuntime.mark(z),E=function(){function e(e){var t=e.type,r=e.schema,n=e.coercer,a=void 0===n?function(e){return e}:n,c=e.validator,u=void 0===c?function(){return[]}:c,i=e.refiner,o=void 0===i?function(){return[]}:i;this.type=t,this.schema=r,this.coercer=a,this.validator=u,this.refiner=o}var t=e.prototype;return t.assert=function(e){return S(e,this)},t.create=function(e){return Y(e,this)},t.is=function(e){return A(e,this)},t.mask=function(e){return P(e,this)},t.validate=function(e,t){return void 0===t&&(t={}),_(e,this,t)},e}();function S(e,t){var r=_(e,t);if(r[0])throw r[0]}function Y(e,t){var r=t.coercer(e);return S(r,t),r}function P(e,t){return Y(e,O(t))}function A(e,t){return!_(e,t)[0]}function _(e,t,r){void 0===r&&(r={}),r.coerce&&(e=t.coercer(e));var n=z(e,t),a=b(n);return a?[new l(a,n),void 0]:[void 0,e]}function z(e,t,r,a){var c,u,i;return regeneratorRuntime.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(void 0===r&&(r=[]),void 0===a&&(a=[]),c={value:e,struct:t,branch:a,path:r,check:function(e,t,n,c){return z(e,t,void 0!==n?[].concat(r,[c]):r,void 0!==n?[].concat(a,[n]):a)},fail:function(c){void 0===c&&(c={}),"string"==typeof c&&(c={message:c});var u=t.type,i=c,o=i.message,f=i.refinement;return o||(o="Expected a value of type `"+u+"`"+(f?" with refinement `"+f+"`":"")+(r.length?" for `"+r.join(".")+"`":"")+", but received: `"+v(e)+"`"),n(n({},c),{},{value:e,type:u,refinement:f,message:o,key:r[r.length-1],path:r,branch:[].concat(a,[e])})}},u=m(t.validator(e,c),c),!(i=b(u))){o.next=11;break}return o.next=8,i;case 8:return o.delegateYield(u,"t0",9);case 9:o.next=12;break;case 11:return o.delegateYield(m(t.refiner(e,c),c),"t1",12);case 12:case"end":return o.stop()}}),R)}function D(e,t,r){var a=e.refiner;return new E(n(n({},e),{},{refiner:regeneratorRuntime.mark((function e(c,u){var i,o,f;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.delegateYield(m(a(c,u),u),"t0",1);case 1:i=s(m(r(c,u),u));case 2:if((o=i()).done){e.next=8;break}return f=o.value,e.next=6,n(n({},f),{},{refinement:t});case 6:e.next=2;break;case 8:case"end":return e.stop()}}),e)}))}))}e.Struct=E,e.StructError=l,e.any=function(){return y("any",(function(){return!0}))},e.array=function(e){return new E({type:"array",schema:e,coercer:function(t){return e&&Array.isArray(t)?t.map((function(t){return e.coercer(t)})):t},validator:regeneratorRuntime.mark((function t(r,n){var a,c,u,i,o;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(Array.isArray(r)){t.next=5;break}return t.next=3,n.fail("Expected an array value, but received: "+v(r));case 3:t.next=12;break;case 5:if(!e){t.next=12;break}a=s(r.entries());case 7:if((c=a()).done){t.next=12;break}return u=c.value,i=u[0],o=u[1],t.delegateYield(n.check(o,e,r,i),"t0",10);case 10:t.next=7;break;case 12:case"end":return t.stop()}}),t)}))})},e.assert=S,e.assign=function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];var n=t.map((function(e){return e.schema})),a=Object.assign.apply(Object,[{}].concat(n));return g(a)},e.boolean=function(){return y("boolean",(function(e){return"boolean"==typeof e}))},e.coerce=j,e.create=Y,e.date=function(){return y("date",(function(e){return e instanceof Date&&!isNaN(e.getTime())||"Expected a valid `Date` object, but received: "+v(e)}))},e.defaulted=function(e,t,r){void 0===r&&(r={});var a=r.strict;return j(e,w(),(function(e){var r="function"==typeof t?t():t;if(void 0===e)return r;if(!a&&d(e)&&d(r)){var c=n({},e),u=!1;for(var i in r)void 0===c[i]&&(c[i]=r[i],u=!0);if(u)return c}return e}))},e.define=y,e.dynamic=function(e){return y("dynamic",(function(t,r){return r.check(t,e(t,r))}))},e.empty=function(e){var t="Expected an empty "+e.type;return D(e,"empty",(function(e){if(e instanceof Map||e instanceof Set){var r=e.size;return 0===r||t+" but received one with a size of `"+r+"`"}var n=e.length;return 0===n||t+" but received one with a length of `"+n+"`"}))},e.enums=function(e){for(var t,r={},n=e.map((function(e){return v(e)})).join(),a=s(e);!(t=a()).done;){var c=t.value;r[c]=c}return new E({type:"enums",schema:r,validator:function(t){return e.includes(t)||"Expected one of `"+n+"`, but received: "+v(t)}})},e.func=function(){return y("func",(function(e){return"function"==typeof e||"Expected a function, but received: "+v(e)}))},e.instance=function(e){return y("instance",(function(t){return t instanceof e||"Expected a `"+e.name+"` instance, but received: "+v(t)}))},e.integer=function(){return y("integer",(function(e){return"number"==typeof e&&!isNaN(e)&&Number.isInteger(e)||"Expected an integer, but received: "+v(e)}))},e.intersection=function(e){return y("intersection",regeneratorRuntime.mark((function t(r,n){var a,c,u;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:a=s(e);case 1:if((c=a()).done){t.next=6;break}return u=c.value,t.delegateYield(n.check(r,u),"t0",4);case 4:t.next=1;break;case 6:case"end":return t.stop()}}),t)})))},e.is=A,e.lazy=function(e){var t;return y("lazy",(function(r,n){return t||(t=e()),n.check(r,t)}))},e.literal=function(e){var t=v(e);return y("literal",(function(r){return r===e||"Expected the literal `"+t+"`, but received: "+v(r)}))},e.map=function(e,t){return y("map",regeneratorRuntime.mark((function r(n,a){var c,u,i,o,f;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(n instanceof Map){r.next=5;break}return r.next=3,a.fail("Expected a `Map` object, but received: "+v(n));case 3:r.next=13;break;case 5:if(!e||!t){r.next=13;break}c=s(n.entries());case 7:if((u=c()).done){r.next=13;break}return i=u.value,o=i[0],f=i[1],r.delegateYield(a.check(o,e,n,o),"t0",10);case 10:return r.delegateYield(a.check(f,t,n,o),"t1",11);case 11:r.next=7;break;case 13:case"end":return r.stop()}}),r)})))},e.mask=P,e.masked=O,e.max=function(e,t,r){void 0===r&&(r={});var n=r.exclusive;return D(e,"max",(function(r){return n?r<t:r<=t||"Expected a "+e.type+" greater than "+(n?"":"or equal to ")+t+" but received `"+r+"`"}))},e.min=function(e,t,r){void 0===r&&(r={});var n=r.exclusive;return D(e,"min",(function(r){return n?r>t:r>=t||"Expected a "+e.type+" greater than "+(n?"":"or equal to ")+t+" but received `"+r+"`"}))},e.never=h,e.nullable=function(e){var t=e.refiner;return new E(n(n({},e),{},{validator:function(t,r){return null===t||r.check(t,e)},refiner:regeneratorRuntime.mark((function r(a,c){var u;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(null==a){r.next=3;break}return u=n(n({},c),{},{struct:e}),r.delegateYield(m(t(a,u),u),"t0",3);case 3:case"end":return r.stop()}}),r)}))}))},e.number=function(){return y("number",(function(e){return"number"==typeof e&&!isNaN(e)||"Expected a number, but received: "+v(e)}))},e.object=g,e.omit=function(e,t){for(var r,a=n({},e.schema),c=s(t);!(r=c()).done;){delete a[r.value]}return g(a)},e.optional=x,e.partial=function(e){var t=n({},e instanceof E?e.schema:e);for(var r in t)t[r]=x(t[r]);return g(t)},e.pattern=function(e,t){return D(e,"pattern",(function(r){return t.test(r)||"Expected a "+e.type+" matching `/"+t.source+'/` but received "'+r+'"'}))},e.pick=function(e,t){for(var r,n=e.schema,a={},c=s(t);!(r=c()).done;){var u=r.value;a[u]=n[u]}return g(a)},e.record=function(e,t){return y("record",regeneratorRuntime.mark((function r(n,a){var c,u;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if("object"==typeof n&&null!=n){r.next=5;break}return r.next=3,a.fail("Expected an object, but received: "+v(n));case 3:r.next=13;break;case 5:r.t0=regeneratorRuntime.keys(n);case 6:if((r.t1=r.t0()).done){r.next=13;break}return c=r.t1.value,u=n[c],r.delegateYield(a.check(c,e,n,c),"t2",10);case 10:return r.delegateYield(a.check(u,t,n,c),"t3",11);case 11:r.next=6;break;case 13:case"end":return r.stop()}}),r)})))},e.refine=D,e.regexp=function(){return y("regexp",(function(e){return e instanceof RegExp}))},e.set=function(e){return y("set",regeneratorRuntime.mark((function t(r,n){var a,c,u;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r instanceof Set){t.next=5;break}return t.next=3,n.fail("Expected a `Set` object, but received: "+v(r));case 3:t.next=12;break;case 5:if(!e){t.next=12;break}a=s(r);case 7:if((c=a()).done){t.next=12;break}return u=c.value,t.delegateYield(n.check(u,e,r,u),"t0",10);case 10:t.next=7;break;case 12:case"end":return t.stop()}}),t)})))},e.size=function(e,t,r){void 0===r&&(r=t);var n="Expected a "+e.type,a=t===r?"of `"+t+"`":"between `"+t+"` and `"+r+"`";return D(e,"size",(function(e){if("number"==typeof e||e instanceof Date)return t<=e&&e<=r||n+" "+a+" but received `"+e+"`";if(e instanceof Map||e instanceof Set){var c=e.size;return t<=c&&c<=r||n+" with a size "+a+" but received one with a size of `"+c+"`"}var u=e.length;return t<=u&&u<=r||n+" with a length "+a+" but received one with a length of `"+u+"`"}))},e.string=k,e.struct=function(e,t){return console.warn("superstruct@0.11 - The `struct` helper has been renamed to `define`."),y(e,t)},e.trimmed=function(e){return j(e,k(),(function(e){return e.trim()}))},e.tuple=function(e){var t=h();return y("tuple",regeneratorRuntime.mark((function r(n,a){var c,u,i,o,f,l,p,d;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(Array.isArray(n)){r.next=5;break}return r.next=3,a.fail("Expected an array, but received: "+v(n));case 3:r.next=16;break;case 5:c=s(e.entries());case 6:if((u=c()).done){r.next=12;break}return i=u.value,o=i[0],f=i[1],l=n[o],r.delegateYield(a.check(l,f,n,o),"t0",10);case 10:r.next=6;break;case 12:if(!(n.length>e.length)){r.next=16;break}return p=e.length,d=n[p],r.delegateYield(a.check(d,t,n,p),"t1",16);case 16:case"end":return r.stop()}}),r)})))},e.type=function(e){var t=Object.keys(e);return new E({type:"type",schema:e,validator:regeneratorRuntime.mark((function r(n,a){var c,u,i,o,f;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if("object"==typeof n&&null!=n){r.next=5;break}return r.next=3,a.fail("Expected an object, but received: "+v(n));case 3:r.next=13;break;case 5:c=s(t);case 6:if((u=c()).done){r.next=13;break}return i=u.value,o=e[i],f=n[i],r.delegateYield(a.check(f,o,n,i),"t0",11);case 11:r.next=6;break;case 13:case"end":return r.stop()}}),r)}))})},e.union=function(e){var t=e.map((function(e){return e.type})).join(" | ");return y("union",regeneratorRuntime.mark((function r(n,a){var c,u,i,o,f,l;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:c=[],u=s(e);case 2:if((i=u()).done){r.next=12;break}if(o=i.value,f=a.check(n,o),0!==(l=f.slice(0)).length){r.next=9;break}return r.abrupt("return");case 9:c.push.apply(c,l);case 10:r.next=2;break;case 12:return r.next=14,a.fail("Expected the value to satisfy a union of `"+t+"`, but received: "+v(n));case 14:return r.delegateYield(c,"t0",15);case 15:case"end":return r.stop()}}),r)})))},e.unknown=w,e.validate=_,Object.defineProperty(e,"__esModule",{value:!0})}));
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Superstruct={})}(this,(function(e){"use strict";class t extends TypeError{constructor(e,t){const{message:n,...r}=e,{path:c}=e;let i;super(0===c.length?n:"At path: "+c.join(".")+" -- "+n),Object.assign(this,r),this.name=this.constructor.name,this.failures=()=>(i||(i=[e,...t]),i)}}function n(e){if("[object Object]"!==Object.prototype.toString.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function r(e){return"string"==typeof e?JSON.stringify(e):""+e}function c(e){const{done:t,value:n}=e.next();return t?void 0:n}function*i(e,t){if("string"==typeof e)yield t.fail({message:e});else{if(!0===e)return;!1===e?yield t.fail():yield*e}}function o(e,t){return new y({type:e,schema:null,validator:t})}function u(){return o("never",(()=>!1))}function s(e){const t=e?Object.keys(e):[],n=u();return new y({type:"object",schema:e||null,*validator(c,i){if("object"!=typeof c||null==c)yield i.fail("Expected an object, but received: "+r(c));else if(e){const r=new Set(Object.keys(c));for(const n of t){r.delete(n);const t=e[n],o=c[n];yield*i.check(o,t,c,n)}for(const e of r){const t=c[e];yield*i.check(t,n,c,e)}}},coercer:n=>{if(!e||"object"!=typeof n||null==n)return n;const r={},c=new Set(Object.keys(n));for(const i of t){c.delete(i);const t=e[i],o=n[i];r[i]=t.coercer(o)}for(const e of c)r[e]=n[e];return r}})}function f(e){const{refiner:t}=e;return new y({...e,validator:(t,n)=>void 0===t||n.check(t,e),refiner:function*(n,r){if(null!=n){const c={...r,struct:e};yield*i(t(n,c),c)}}})}function a(){return o("string",(e=>"string"==typeof e||"Expected a string, but received: "+r(e)))}function l(){return o("unknown",(()=>!0))}function d(e,t,n){const r=e.coercer;return new y({...e,coercer:e=>v(e,t)?r(n(e)):r(e)})}function p(e){return d(e,l(),(t=>{if("object"!=typeof e.schema||null==e.schema||"object"!=typeof t||null==t)return t;{const n={};for(const r in e.schema)r in t&&(n[r]=t[r]);return n}}))}class y{constructor(e){this.type=e.type,this.schema=e.schema,this.coercer=e.coercer||(e=>e),this.validator=e.validator||(()=>[]),this.refiner=e.refiner||(()=>[])}assert(e){return h(e,this)}create(e){return b(e,this)}is(e){return v(e,this)}mask(e){return m(e,this)}validate(e,t={}){return g(e,this,t)}}function h(e,t){const n=g(e,t);if(n[0])throw n[0]}function b(e,t){const n=t.coercer(e);return h(n,t),n}function m(e,t){return b(e,p(t))}function v(e,t){return!g(e,t)[0]}function g(e,n,r={}){r.coerce&&(e=n.coercer(e));const i=x(e,n),o=c(i);if(o){return[new t(o,i),void 0]}return[void 0,e]}function*x(e,t,n=[],o=[]){const u={value:e,struct:t,branch:o,path:n,check:(e,t,r,c)=>x(e,t,void 0!==r?[...n,c]:n,void 0!==r?[...o,r]:o),fail(c={}){"string"==typeof c&&(c={message:c});const{type:i}=t;let{message:u,refinement:s}=c;return u||(u="Expected a value of type `"+i+"`"+(s?" with refinement `"+s+"`":"")+(n.length?" for `"+n.join(".")+"`":"")+", but received: `"+r(e)+"`"),{...c,value:e,type:i,refinement:s,message:u,key:n[n.length-1],path:n,branch:[...o,e]}}},s=i(t.validator(e,u),u),f=c(s);f?(yield f,yield*s):yield*i(t.refiner(e,u),u)}function j(e,t,n){const r=e.refiner;return new y({...e,*refiner(e,c){yield*i(r(e,c),c);for(const r of i(n(e,c),c))yield{...r,refinement:t}}})}e.Struct=y,e.StructError=t,e.any=function(){return o("any",(()=>!0))},e.array=function(e){return new y({type:"array",schema:e,coercer:t=>e&&Array.isArray(t)?t.map((t=>e.coercer(t))):t,*validator(t,n){if(Array.isArray(t)){if(e)for(const[r,c]of t.entries())yield*n.check(c,e,t,r)}else yield n.fail("Expected an array value, but received: "+r(t))}})},e.assert=h,e.assign=function(...e){const t=e.map((e=>e.schema));return s(Object.assign({},...t))},e.boolean=function(){return o("boolean",(e=>"boolean"==typeof e))},e.coerce=d,e.create=b,e.date=function(){return o("date",(e=>e instanceof Date&&!isNaN(e.getTime())||"Expected a valid `Date` object, but received: "+r(e)))},e.defaulted=function(e,t,r={}){const{strict:c}=r;return d(e,l(),(e=>{const r="function"==typeof t?t():t;if(void 0===e)return r;if(!c&&n(e)&&n(r)){const t={...e};let n=!1;for(const e in r)void 0===t[e]&&(t[e]=r[e],n=!0);if(n)return t}return e}))},e.define=o,e.dynamic=function(e){return o("dynamic",((t,n)=>n.check(t,e(t,n))))},e.empty=function(e){const t="Expected an empty "+e.type;return j(e,"empty",(e=>{if(e instanceof Map||e instanceof Set){const{size:n}=e;return 0===n||t+" but received one with a size of `"+n+"`"}{const{length:n}=e;return 0===n||t+" but received one with a length of `"+n+"`"}}))},e.enums=function(e){const t={},n=e.map((e=>r(e))).join();for(const n of e)t[n]=n;return new y({type:"enums",schema:t,validator:t=>e.includes(t)||"Expected one of `"+n+"`, but received: "+r(t)})},e.func=function(){return o("func",(e=>"function"==typeof e||"Expected a function, but received: "+r(e)))},e.instance=function(e){return o("instance",(t=>t instanceof e||"Expected a `"+e.name+"` instance, but received: "+r(t)))},e.integer=function(){return o("integer",(e=>"number"==typeof e&&!isNaN(e)&&Number.isInteger(e)||"Expected an integer, but received: "+r(e)))},e.intersection=function(e){return o("intersection",(function*(t,n){for(const r of e)yield*n.check(t,r)}))},e.is=v,e.lazy=function(e){let t;return o("lazy",((n,r)=>(t||(t=e()),r.check(n,t))))},e.literal=function(e){const t=r(e);return o("literal",(n=>n===e||"Expected the literal `"+t+"`, but received: "+r(n)))},e.map=function(e,t){return o("map",(function*(n,c){if(n instanceof Map){if(e&&t)for(const[r,i]of n.entries())yield*c.check(r,e,n,r),yield*c.check(i,t,n,r)}else yield c.fail("Expected a `Map` object, but received: "+r(n))}))},e.mask=m,e.masked=p,e.max=function(e,t,n={}){const{exclusive:r}=n;return j(e,"max",(n=>r?n<t:n<=t||"Expected a "+e.type+" greater than "+(r?"":"or equal to ")+t+" but received `"+n+"`"))},e.min=function(e,t,n={}){const{exclusive:r}=n;return j(e,"min",(n=>r?n>t:n>=t||"Expected a "+e.type+" greater than "+(r?"":"or equal to ")+t+" but received `"+n+"`"))},e.never=u,e.nullable=function(e){const{refiner:t}=e;return new y({...e,validator:(t,n)=>null===t||n.check(t,e),refiner:function*(n,r){if(null!=n){const c={...r,struct:e};yield*i(t(n,c),c)}}})},e.number=function(){return o("number",(e=>"number"==typeof e&&!isNaN(e)||"Expected a number, but received: "+r(e)))},e.object=s,e.omit=function(e,t){const{schema:n}=e,r={...n};for(const e of t)delete r[e];return s(r)},e.optional=f,e.partial=function(e){const t=e instanceof y?{...e.schema}:{...e};for(const e in t)t[e]=f(t[e]);return s(t)},e.pattern=function(e,t){return j(e,"pattern",(n=>t.test(n)||"Expected a "+e.type+" matching `/"+t.source+'/` but received "'+n+'"'))},e.pick=function(e,t){const{schema:n}=e,r={};for(const e of t)r[e]=n[e];return s(r)},e.record=function(e,t){return o("record",(function*(n,c){if("object"!=typeof n||null==n)yield c.fail("Expected an object, but received: "+r(n));else for(const r in n){const i=n[r];yield*c.check(r,e,n,r),yield*c.check(i,t,n,r)}}))},e.refine=j,e.regexp=function(){return o("regexp",(e=>e instanceof RegExp))},e.set=function(e){return o("set",(function*(t,n){if(t instanceof Set){if(e)for(const r of t)yield*n.check(r,e,t,r)}else yield n.fail("Expected a `Set` object, but received: "+r(t))}))},e.size=function(e,t,n=t){const r="Expected a "+e.type,c=t===n?"of `"+t+"`":"between `"+t+"` and `"+n+"`";return j(e,"size",(e=>{if("number"==typeof e||e instanceof Date)return t<=e&&e<=n||r+" "+c+" but received `"+e+"`";if(e instanceof Map||e instanceof Set){const{size:i}=e;return t<=i&&i<=n||r+" with a size "+c+" but received one with a size of `"+i+"`"}{const{length:i}=e;return t<=i&&i<=n||r+" with a length "+c+" but received one with a length of `"+i+"`"}}))},e.string=a,e.struct=function(e,t){return console.warn("superstruct@0.11 - The `struct` helper has been renamed to `define`."),o(e,t)},e.trimmed=function(e){return d(e,a(),(e=>e.trim()))},e.tuple=function(e){const t=u();return o("tuple",(function*(n,c){if(Array.isArray(n)){for(const[t,r]of e.entries()){const e=n[t];yield*c.check(e,r,n,t)}if(n.length>e.length){const r=e.length,i=n[r];yield*c.check(i,t,n,r)}}else yield c.fail("Expected an array, but received: "+r(n))}))},e.type=function(e){const t=Object.keys(e);return new y({type:"type",schema:e,validator:function*(n,c){if("object"!=typeof n||null==n)yield c.fail("Expected an object, but received: "+r(n));else for(const r of t){const t=e[r],i=n[r];yield*c.check(i,t,n,r)}}})},e.union=function(e){const t=e.map((e=>e.type)).join(" | ");return o("union",(function*(n,c){const i=[];for(const t of e){const[...e]=c.check(n,t);if(0===e.length)return;i.push(...e)}yield c.fail("Expected the value to satisfy a union of `"+t+"`, but received: "+r(n)),yield*i}))},e.unknown=l,e.validate=g,Object.defineProperty(e,"__esModule",{value:!0})}));

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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