superstruct
Advanced tools
+44
-16
@@ -186,2 +186,13 @@ /** | ||
| /** | ||
| * Resolve a `defaults` value. | ||
| * | ||
| * @param {Function|Any} defaults | ||
| * @return {Any} | ||
| */ | ||
| function resolveDefaults(defaults) { | ||
| return typeof defaults === 'function' ? defaults() : defaults; | ||
| } | ||
| /** | ||
| * Kind. | ||
@@ -287,3 +298,3 @@ * | ||
| const type = `dict<${keys.type},${values.type}>`; | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| const [error] = obj.validate(value); | ||
@@ -343,3 +354,3 @@ | ||
| function enums(schema, defaults, options) { | ||
| function en(schema, defaults, options) { | ||
| if (kindOf(schema) !== 'array') { | ||
@@ -362,3 +373,3 @@ if (process.env.NODE_ENV !== 'production') { | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| return schema.includes(value) ? [undefined, value] : [{ data: value, path: [], value, type }]; | ||
@@ -371,2 +382,16 @@ }; | ||
| /** | ||
| * Enums. | ||
| * | ||
| * @param {Array} schema | ||
| * @param {Any} defaults | ||
| * @param {Object} options | ||
| */ | ||
| function enums(schema, defaults, options) { | ||
| const e = en(schema, undefined, options); | ||
| const l = list([e], defaults, options); | ||
| return l; | ||
| } | ||
| /** | ||
| * Function. | ||
@@ -390,3 +415,3 @@ * | ||
| const type = '<function>'; | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| return schema(value) ? [undefined, value] : [{ type, value, data: value, path: [] }]; | ||
@@ -409,3 +434,3 @@ }; | ||
| const type = `instance<${schema.name}>`; | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| return value instanceof schema ? [undefined, value] : [{ data: value, path: [], value, type }]; | ||
@@ -446,3 +471,3 @@ }; | ||
| const type = `{${ks.join()}}`; | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| const errors = []; | ||
@@ -496,3 +521,3 @@ | ||
| const type = `[${element.type}]`; | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| const [error, result] = array.validate(value); | ||
@@ -546,3 +571,3 @@ | ||
| const type = `literal: ${JSON.stringify(schema)}`; | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| return value === schema ? [undefined, value] : [{ data: value, path: [], value, type }]; | ||
@@ -585,3 +610,3 @@ }; | ||
| const type = `{${ks.join()}}`; | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| const [error] = obj.validate(value); | ||
@@ -714,3 +739,3 @@ | ||
| const type = `[${kinds.map(k => k.type).join()}]`; | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| const [error] = array.validate(value); | ||
@@ -781,3 +806,3 @@ | ||
| const type = kinds.map(k => k.type).join(' | '); | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| let error; | ||
@@ -818,3 +843,3 @@ | ||
| const type = types.map(t => t.type).join(' & '); | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| let v = value; | ||
@@ -848,3 +873,4 @@ | ||
| dict, | ||
| enum: enums, | ||
| enum: en, | ||
| enums, | ||
| function: func, | ||
@@ -926,3 +952,5 @@ instance, | ||
| function struct(schema, defaults$$1, options = {}) { | ||
| if (isStruct(schema)) schema = schema.schema; | ||
| if (isStruct(schema)) { | ||
| schema = schema.schema; | ||
| } | ||
@@ -994,3 +1022,3 @@ const kind = Kinds.any(schema, defaults$$1, _extends({}, options, { types })); | ||
| /** | ||
| * Create a simple `struct` method for the default types. | ||
| * Create a convenience `struct` factory for the default types. | ||
| * | ||
@@ -1002,3 +1030,3 @@ * @type {Function} | ||
| export { struct, superstruct, StructError }; | ||
| export { struct, superstruct, isStruct, StructError }; | ||
| //# sourceMappingURL=index.es.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.es.js","sources":["../src/error.js","../node_modules/kind-of/index.js","../src/constants.js","../src/is-struct.js","../src/kinds.js","../src/types.js","../src/superstruct.js","../src/index.js"],"sourcesContent":["\n/**\n * Define a struct error.\n *\n * @type {StructError}\n */\n\nclass StructError extends TypeError {\n\n constructor(attrs) {\n const { data, value, type, path, errors = [] } = attrs\n const message = `Expected a value of type \\`${type}\\`${path.length ? ` for \\`${path.join('.')}\\`` : ''} but received \\`${value}\\`.`\n super(message)\n this.data = data\n this.path = path\n this.value = value\n this.type = type\n this.errors = errors\n if (!errors.length) errors.push(this)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor)\n } else {\n this.stack = (new Error()).stack\n }\n }\n\n}\n\n/**\n * Export.\n *\n * @type {StructError}\n */\n\nexport default StructError\n","var toString = Object.prototype.toString;\n\nmodule.exports = function kindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n\n var type = typeof val;\n if (type === 'boolean') return 'boolean';\n if (type === 'string') return 'string';\n if (type === 'number') return 'number';\n if (type === 'symbol') return 'symbol';\n if (type === 'function') {\n return isGeneratorFn(val) ? 'generatorfunction' : 'function';\n }\n\n if (isArray(val)) return 'array';\n if (isBuffer(val)) return 'buffer';\n if (isArguments(val)) return 'arguments';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n if (isRegexp(val)) return 'regexp';\n\n switch (ctorName(val)) {\n case 'Symbol': return 'symbol';\n case 'Promise': return 'promise';\n\n // Set, Map, WeakSet, WeakMap\n case 'WeakMap': return 'weakmap';\n case 'WeakSet': return 'weakset';\n case 'Map': return 'map';\n case 'Set': return 'set';\n\n // 8-bit typed arrays\n case 'Int8Array': return 'int8array';\n case 'Uint8Array': return 'uint8array';\n case 'Uint8ClampedArray': return 'uint8clampedarray';\n\n // 16-bit typed arrays\n case 'Int16Array': return 'int16array';\n case 'Uint16Array': return 'uint16array';\n\n // 32-bit typed arrays\n case 'Int32Array': return 'int32array';\n case 'Uint32Array': return 'uint32array';\n case 'Float32Array': return 'float32array';\n case 'Float64Array': return 'float64array';\n }\n\n if (isGeneratorObj(val)) {\n return 'generator';\n }\n\n // Non-plain objects\n type = toString.call(val);\n switch (type) {\n case '[object Object]': return 'object';\n // iterators\n case '[object Map Iterator]': return 'mapiterator';\n case '[object Set Iterator]': return 'setiterator';\n case '[object String Iterator]': return 'stringiterator';\n case '[object Array Iterator]': return 'arrayiterator';\n }\n\n // other\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n};\n\nfunction ctorName(val) {\n return val.constructor ? val.constructor.name : null;\n}\n\nfunction isArray(val) {\n if (Array.isArray) return Array.isArray(val);\n return val instanceof Array;\n}\n\nfunction isError(val) {\n return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number');\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function'\n && typeof val.getDate === 'function'\n && typeof val.setDate === 'function';\n}\n\nfunction isRegexp(val) {\n if (val instanceof RegExp) return true;\n return typeof val.flags === 'string'\n && typeof val.ignoreCase === 'boolean'\n && typeof val.multiline === 'boolean'\n && typeof val.global === 'boolean';\n}\n\nfunction isGeneratorFn(name, val) {\n return ctorName(name) === 'GeneratorFunction';\n}\n\nfunction isGeneratorObj(val) {\n return typeof val.throw === 'function'\n && typeof val.return === 'function'\n && typeof val.next === 'function';\n}\n\nfunction isArguments(val) {\n try {\n if (typeof val.length === 'number' && typeof val.callee === 'function') {\n return true;\n }\n } catch (err) {\n if (err.message.indexOf('callee') !== -1) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * If you need to support Safari 5-7 (8-10 yr-old browser),\n * take a look at https://github.com/feross/is-buffer\n */\n\nfunction isBuffer(val) {\n if (val.constructor && typeof val.constructor.isBuffer === 'function') {\n return val.constructor.isBuffer(val);\n }\n return false;\n}\n","\n/**\n * A private string to identify structs by.\n *\n * @type {String}\n */\n\nconst IS_STRUCT = '@@__STRUCT__@@'\n\n/**\n * A private string to refer to a struct's kind.\n *\n * @type {String}\n */\n\nconst KIND = '@@__KIND__@@'\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nexport {\n IS_STRUCT,\n KIND,\n}\n","\nimport { IS_STRUCT } from './constants'\n\n/**\n * Check if a `value` is a struct.\n *\n * @param {Any} value\n * @return {Boolean}\n */\n\nfunction isStruct(value) {\n return !!(value && value[IS_STRUCT])\n}\n\n/**\n * Export.\n *\n * @type {Function}\n */\n\nexport default isStruct\n","\nimport kindOf from 'kind-of'\n\nimport isStruct from './is-struct'\nimport { KIND } from './constants'\n\n/**\n * Kind.\n *\n * @type {Kind}\n */\n\nclass Kind {\n\n constructor(name, type, validate) {\n this.name = name\n this.type = type\n this.validate = validate\n }\n\n}\n\n/**\n * Any.\n *\n * @param {Array|Function|Object|String} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction any(schema, defaults, options) {\n if (isStruct(schema)) return schema[KIND]\n if (schema instanceof Kind) return schema\n\n switch (kindOf(schema)) {\n case 'array': {\n return schema.length > 1\n ? tuple(schema, defaults, options)\n : list(schema, defaults, options)\n }\n\n case 'function': {\n return func(schema, defaults, options)\n }\n\n case 'object': {\n return object(schema, defaults, options)\n }\n\n case 'string': {\n let required = true\n let type\n\n if (schema.endsWith('?')) {\n required = false\n schema = schema.slice(0, -1)\n }\n\n if (schema.includes('|')) {\n const scalars = schema.split(/\\s*\\|\\s*/g)\n type = union(scalars, defaults, options)\n } else if (schema.includes('&')) {\n const scalars = schema.split(/\\s*&\\s*/g)\n type = intersection(scalars, defaults, options)\n } else {\n type = scalar(schema, defaults, options)\n }\n\n if (!required) {\n type = optional(type, undefined, options)\n }\n\n return type\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`A schema definition must be an object, array, string or function, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n}\n\n/**\n * Dict.\n *\n * @param {Array} schema\n * @param {Object} defaults\n * @param {Object} options\n */\n\nfunction dict(schema, defaults, options) {\n if (kindOf(schema) !== 'array' || schema.length !== 2) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Dict structs must be defined as an array with two elements, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const obj = scalar('object', undefined, options)\n const keys = any(schema[0], undefined, options)\n const values = any(schema[1], undefined, options)\n const name = 'dict'\n const type = `dict<${keys.type},${values.type}>`\n const validate = (value = defaults) => {\n const [ error ] = obj.validate(value)\n\n if (error) {\n error.type = type\n return [error]\n }\n\n const ret = {}\n const errors = []\n\n for (let k in value) {\n const v = value[k]\n const [ e, r ] = keys.validate(k)\n\n if (e) {\n e.path = [k].concat(e.path)\n e.data = value\n errors.push(e)\n continue\n }\n\n k = r\n const [ e2, r2 ] = values.validate(v)\n\n if (e2) {\n e2.path = [k].concat(e2.path)\n e2.data = value\n errors.push(e2)\n continue\n }\n\n ret[k] = r2\n }\n\n if (errors.length) {\n const first = errors[0]\n first.errors = errors\n return [first]\n }\n\n return [undefined, ret]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Enum.\n *\n * @param {Array} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction enums(schema, defaults, options) {\n if (kindOf(schema) !== 'array') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Enum structs must be defined as an array, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const name = 'enum'\n const type = schema.map((s) => {\n try {\n return JSON.stringify(s)\n } catch (e) {\n return String(s)\n }\n }).join(' | ')\n\n const validate = (value = defaults) => {\n return schema.includes(value)\n ? [undefined, value]\n : [{ data: value, path: [], value, type }]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Function.\n *\n * @param {Function} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction func(schema, defaults, options) {\n if (kindOf(schema) !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Function structs must be defined as a function, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const name = 'function'\n const type = '<function>'\n const validate = (value = defaults) => {\n return schema(value)\n ? [undefined, value]\n : [{ type, value, data: value, path: [] }]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Instance.\n *\n * @param {Array} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction instance(schema, defaults, options) {\n const name = 'instance'\n const type = `instance<${schema.name}>`\n const validate = (value = defaults) => {\n return value instanceof schema\n ? [undefined, value]\n : [{ data: value, path: [], value, type }]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Interface.\n *\n * @param {Object} schema\n * @param {Object} defaults\n * @param {Object} options\n */\n\nfunction inter(schema, defaults, options) {\n if (kindOf(schema) !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Interface structs must be defined as an object, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const ks = []\n const properties = {}\n\n for (const key in schema) {\n ks.push(key)\n const s = schema[key]\n const kind = any(s, undefined, options)\n properties[key] = kind\n }\n\n const name = 'interface'\n const type = `{${ks.join()}}`\n const validate = (value = defaults) => {\n const errors = []\n\n for (const key in properties) {\n const v = value[key]\n const kind = properties[key]\n const [ e ] = kind.validate(v)\n\n if (e) {\n e.path = [key].concat(e.path)\n e.data = value\n errors.push(e)\n continue\n }\n }\n\n if (errors.length) {\n const first = errors[0]\n first.errors = errors\n return [first]\n }\n\n return [undefined, value]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * List.\n *\n * @param {Array} schema\n * @param {Array} defaults\n * @param {Object} options\n */\n\nfunction list(schema, defaults, options) {\n if (kindOf(schema) !== 'array' || schema.length !== 1) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`List structs must be defined as an array with a single element, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const array = scalar('array', undefined, options)\n const element = any(schema[0], undefined, options)\n const name = 'list'\n const type = `[${element.type}]`\n const validate = (value = defaults) => {\n const [ error, result ] = array.validate(value)\n\n if (error) {\n error.type = type\n return [error]\n }\n\n value = result\n const errors = []\n const ret = []\n\n for (let i = 0; i < value.length; i++) {\n const v = value[i]\n const [ e, r ] = element.validate(v)\n\n if (e) {\n e.path = [i].concat(e.path)\n e.data = value\n errors.push(e)\n continue\n }\n\n ret[i] = r\n }\n\n if (errors.length) {\n const first = errors[0]\n first.errors = errors\n return [first]\n }\n\n return [undefined, ret]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Literal.\n *\n * @param {Array} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction literal(schema, defaults, options) {\n const name = 'literal'\n const type = `literal: ${JSON.stringify(schema)}`\n const validate = (value = defaults) => {\n return value === schema\n ? [undefined, value]\n : [{ data: value, path: [], value, type }]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Object.\n *\n * @param {Object} schema\n * @param {Object} defaults\n * @param {Object} options\n */\n\nfunction object(schema, defaults, options) {\n if (kindOf(schema) !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Object structs must be defined as an object, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const obj = scalar('object', undefined, options)\n const ks = []\n const properties = {}\n\n for (const key in schema) {\n ks.push(key)\n const s = schema[key]\n const d = defaults && defaults[key]\n const kind = any(s, d, options)\n properties[key] = kind\n }\n\n const name = 'object'\n const type = `{${ks.join()}}`\n const validate = (value = defaults) => {\n const [ error ] = obj.validate(value)\n\n if (error) {\n error.type = type\n return [error]\n }\n\n const errors = []\n const ret = {}\n const valueKeys = Object.keys(value)\n const propertiesKeys = Object.keys(properties)\n const keys = new Set(valueKeys.concat(propertiesKeys))\n\n keys.forEach((key) => {\n const v = value[key]\n const kind = properties[key]\n\n if (!kind) {\n const e = { data: value, path: [key], value: v }\n errors.push(e)\n return\n }\n\n const [ e, r ] = kind.validate(v)\n\n if (e) {\n e.path = [key].concat(e.path)\n e.data = value\n errors.push(e)\n return\n }\n\n if (key in value || r !== undefined) {\n ret[key] = r\n }\n })\n\n if (errors.length) {\n const first = errors[0]\n first.errors = errors\n return [first]\n }\n\n return [undefined, ret]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Optional.\n *\n * @param {Any} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction optional(schema, defaults, options) {\n return union([schema, 'undefined'], defaults, options)\n}\n\n/**\n * Scalar.\n *\n * @param {String} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction scalar(schema, defaults, options) {\n if (kindOf(schema) !== 'string') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Scalar structs must be defined as a string, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const { types } = options\n const fn = types[schema]\n\n if (kindOf(fn) !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`No struct validator function found for type \"${schema}\".`)\n } else {\n throw new Error(`Invalid type: ${schema}`)\n }\n }\n\n const kind = func(fn, defaults, options)\n const name = 'scalar'\n const type = schema\n const validate = (value) => {\n const [ error, result ] = kind.validate(value)\n\n if (error) {\n error.type = type\n return [error]\n }\n\n return [undefined, result]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Tuple.\n *\n * @param {Array} schema\n * @param {Array} defaults\n * @param {Object} options\n */\n\nfunction tuple(schema, defaults, options) {\n if (kindOf(schema) !== 'array') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Tuple structs must be defined as an array, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const kinds = schema.map(s => any(s, undefined, options))\n const array = scalar('array', undefined, options)\n const name = 'tuple'\n const type = `[${kinds.map(k => k.type).join()}]`\n const validate = (value = defaults) => {\n const [ error ] = array.validate(value)\n\n if (error) {\n error.type = type\n return [error]\n }\n\n const ret = []\n const errors = []\n const length = Math.max(value.length, kinds.length)\n\n for (let i = 0; i < length; i++) {\n const kind = kinds[i]\n const v = value[i]\n\n if (!kind) {\n const e = { data: value, path: [i], value: v }\n errors.push(e)\n continue\n }\n\n const [ e, r ] = kind.validate(v)\n\n if (e) {\n e.path = [i].concat(e.path)\n e.data = value\n errors.push(e)\n continue\n }\n\n ret[i] = r\n }\n\n if (errors.length) {\n const first = errors[0]\n first.errors = errors\n return [first]\n }\n\n return [undefined, ret]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Union.\n *\n * @param {Array} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction union(schema, defaults, options) {\n if (kindOf(schema) !== 'array') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Union structs must be defined as an array, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const kinds = schema.map(s => any(s, undefined, options))\n const name = 'union'\n const type = kinds.map(k => k.type).join(' | ')\n const validate = (value = defaults) => {\n let error\n\n for (const k of kinds) {\n const [ e, r ] = k.validate(value)\n if (!e) return [undefined, r]\n error = e\n }\n\n error.type = type\n return [error]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Intersection.\n *\n * @param {Array} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction intersection(schema, defaults, options) {\n if (kindOf(schema) !== 'array') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Intersection structs must be defined as an array, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const types = schema.map(s => any(s, undefined, options))\n const name = 'intersection'\n const type = types.map(t => t.type).join(' & ')\n const validate = (value = defaults) => {\n let v = value\n\n for (const t of types) {\n const [ e, r ] = t.validate(v)\n\n if (e) {\n e.type = type\n return [e]\n }\n\n v = r\n }\n\n return [undefined, v]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Kinds.\n *\n * @type {Object}\n */\n\nconst Kinds = {\n any,\n dict,\n enum: enums,\n function: func,\n instance,\n interface: inter,\n list,\n literal,\n object,\n optional,\n scalar,\n tuple,\n union,\n intersection,\n}\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nexport default Kinds\n","\nimport kindOf from 'kind-of'\n\n/**\n * The types that `kind-of` supports.\n *\n * @type {Array}\n */\n\nconst TYPES = [\n 'arguments',\n 'array',\n 'boolean',\n 'buffer',\n 'date',\n 'error',\n 'float32array',\n 'float64array',\n 'function',\n 'generatorfunction',\n 'int16array',\n 'int32array',\n 'int8array',\n 'map',\n 'null',\n 'number',\n 'object',\n 'promise',\n 'regexp',\n 'set',\n 'string',\n 'symbol',\n 'uint16array',\n 'uint32array',\n 'uint8array',\n 'uint8clampedarray',\n 'undefined',\n 'weakmap',\n 'weakset',\n]\n\n/**\n * The default types that Superstruct ships with.\n *\n * @type {Object}\n */\n\nconst Types = {\n any: value => value !== undefined,\n}\n\nTYPES.forEach((type) => {\n Types[type] = value => kindOf(value) === type\n})\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nexport default Types\n","\nimport Kinds from './kinds'\nimport StructError from './error'\nimport Types from './types'\nimport isStruct from './is-struct'\nimport { IS_STRUCT, KIND } from './constants'\n\n/**\n * Create a struct factory with a `config`.\n *\n * @param {Object} config\n * @return {Function}\n */\n\nfunction superstruct(config = {}) {\n const types = {\n ...Types,\n ...(config.types || {}),\n }\n\n /**\n * Create a `kind` struct with `schema`, `defaults` and `options`.\n *\n * @param {Any} schema\n * @param {Any} defaults\n * @param {Object} options\n * @return {Function}\n */\n\n function struct(schema, defaults, options = {}) {\n if (isStruct(schema)) schema = schema.schema\n\n const kind = Kinds.any(schema, defaults, { ...options, types })\n\n function Struct(data) {\n if (this instanceof Struct) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error('The `Struct` creation function should not be used with the `new` keyword.')\n } else {\n throw new Error('Invalid `new` keyword!')\n }\n }\n\n return Struct.assert(data)\n }\n\n Object.defineProperty(Struct, IS_STRUCT, { value: true })\n Object.defineProperty(Struct, KIND, { value: kind })\n\n Struct.kind = kind.name\n Struct.type = kind.type\n Struct.schema = schema\n Struct.defaults = defaults\n Struct.options = options\n\n Struct.assert = (value) => {\n const [ error, result ] = kind.validate(value)\n if (error) throw new StructError(error)\n return result\n }\n\n Struct.test = (value) => {\n const [ error ] = kind.validate(value)\n return !error\n }\n\n Struct.validate = (value) => {\n const [ error, result ] = kind.validate(value)\n if (error) return [new StructError(error)]\n return [undefined, result]\n }\n\n return Struct\n }\n\n /**\n * Mix in a factory for each specific kind of struct.\n */\n\n Object.keys(Kinds).forEach((name) => {\n const kind = Kinds[name]\n\n struct[name] = (schema, defaults, options) => {\n const type = kind(schema, defaults, { ...options, types })\n const s = struct(type, defaults, options)\n return s\n }\n })\n\n /**\n * Return the struct factory.\n */\n\n return struct\n}\n\n/**\n * Export.\n *\n * @type {Function}\n */\n\nexport default superstruct\n","\nimport StructError from './error'\nimport superstruct from './superstruct'\n\n/**\n * Create a simple `struct` method for the default types.\n *\n * @type {Function}\n */\n\nconst struct = superstruct()\n\n/**\n * Export.\n *\n * @type {Function}\n */\n\nexport { struct, superstruct, StructError }\n"],"names":["StructError","TypeError","attrs","data","value","type","path","errors","message","length","join","push","Error","captureStackTrace","constructor","stack","IS_STRUCT","KIND","isStruct","Kind","name","validate","any","schema","defaults","options","kindOf","tuple","list","func","object","required","endsWith","slice","includes","scalars","split","union","intersection","scalar","optional","undefined","process","env","NODE_ENV","dict","obj","keys","values","error","ret","k","v","e","r","concat","e2","r2","first","enums","map","s","JSON","stringify","String","instance","inter","ks","properties","key","kind","array","element","result","i","literal","d","valueKeys","Object","propertiesKeys","Set","forEach","types","fn","kinds","Math","max","t","Kinds","TYPES","Types","superstruct","config","struct","Struct","assert","defineProperty","test"],"mappings":"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"} | ||
| {"version":3,"file":"index.es.js","sources":["../src/error.js","../node_modules/kind-of/index.js","../src/constants.js","../src/utils.js","../src/kinds.js","../src/types.js","../src/superstruct.js","../src/index.js"],"sourcesContent":["\n/**\n * Define a struct error.\n *\n * @type {StructError}\n */\n\nclass StructError extends TypeError {\n\n constructor(attrs) {\n const { data, value, type, path, errors = [] } = attrs\n const message = `Expected a value of type \\`${type}\\`${path.length ? ` for \\`${path.join('.')}\\`` : ''} but received \\`${value}\\`.`\n super(message)\n this.data = data\n this.path = path\n this.value = value\n this.type = type\n this.errors = errors\n if (!errors.length) errors.push(this)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor)\n } else {\n this.stack = (new Error()).stack\n }\n }\n\n}\n\n/**\n * Export.\n *\n * @type {StructError}\n */\n\nexport default StructError\n","var toString = Object.prototype.toString;\n\nmodule.exports = function kindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n\n var type = typeof val;\n if (type === 'boolean') return 'boolean';\n if (type === 'string') return 'string';\n if (type === 'number') return 'number';\n if (type === 'symbol') return 'symbol';\n if (type === 'function') {\n return isGeneratorFn(val) ? 'generatorfunction' : 'function';\n }\n\n if (isArray(val)) return 'array';\n if (isBuffer(val)) return 'buffer';\n if (isArguments(val)) return 'arguments';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n if (isRegexp(val)) return 'regexp';\n\n switch (ctorName(val)) {\n case 'Symbol': return 'symbol';\n case 'Promise': return 'promise';\n\n // Set, Map, WeakSet, WeakMap\n case 'WeakMap': return 'weakmap';\n case 'WeakSet': return 'weakset';\n case 'Map': return 'map';\n case 'Set': return 'set';\n\n // 8-bit typed arrays\n case 'Int8Array': return 'int8array';\n case 'Uint8Array': return 'uint8array';\n case 'Uint8ClampedArray': return 'uint8clampedarray';\n\n // 16-bit typed arrays\n case 'Int16Array': return 'int16array';\n case 'Uint16Array': return 'uint16array';\n\n // 32-bit typed arrays\n case 'Int32Array': return 'int32array';\n case 'Uint32Array': return 'uint32array';\n case 'Float32Array': return 'float32array';\n case 'Float64Array': return 'float64array';\n }\n\n if (isGeneratorObj(val)) {\n return 'generator';\n }\n\n // Non-plain objects\n type = toString.call(val);\n switch (type) {\n case '[object Object]': return 'object';\n // iterators\n case '[object Map Iterator]': return 'mapiterator';\n case '[object Set Iterator]': return 'setiterator';\n case '[object String Iterator]': return 'stringiterator';\n case '[object Array Iterator]': return 'arrayiterator';\n }\n\n // other\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n};\n\nfunction ctorName(val) {\n return val.constructor ? val.constructor.name : null;\n}\n\nfunction isArray(val) {\n if (Array.isArray) return Array.isArray(val);\n return val instanceof Array;\n}\n\nfunction isError(val) {\n return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number');\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function'\n && typeof val.getDate === 'function'\n && typeof val.setDate === 'function';\n}\n\nfunction isRegexp(val) {\n if (val instanceof RegExp) return true;\n return typeof val.flags === 'string'\n && typeof val.ignoreCase === 'boolean'\n && typeof val.multiline === 'boolean'\n && typeof val.global === 'boolean';\n}\n\nfunction isGeneratorFn(name, val) {\n return ctorName(name) === 'GeneratorFunction';\n}\n\nfunction isGeneratorObj(val) {\n return typeof val.throw === 'function'\n && typeof val.return === 'function'\n && typeof val.next === 'function';\n}\n\nfunction isArguments(val) {\n try {\n if (typeof val.length === 'number' && typeof val.callee === 'function') {\n return true;\n }\n } catch (err) {\n if (err.message.indexOf('callee') !== -1) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * If you need to support Safari 5-7 (8-10 yr-old browser),\n * take a look at https://github.com/feross/is-buffer\n */\n\nfunction isBuffer(val) {\n if (val.constructor && typeof val.constructor.isBuffer === 'function') {\n return val.constructor.isBuffer(val);\n }\n return false;\n}\n","\n/**\n * A private string to identify structs by.\n *\n * @type {String}\n */\n\nconst IS_STRUCT = '@@__STRUCT__@@'\n\n/**\n * A private string to refer to a struct's kind.\n *\n * @type {String}\n */\n\nconst KIND = '@@__KIND__@@'\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nexport {\n IS_STRUCT,\n KIND,\n}\n","\nimport { IS_STRUCT } from './constants'\n\n/**\n * Check if a `value` is a struct.\n *\n * @param {Any} value\n * @return {Boolean}\n */\n\nexport function isStruct(value) {\n return !!(value && value[IS_STRUCT])\n}\n\n/**\n * Resolve a `defaults` value.\n *\n * @param {Function|Any} defaults\n * @return {Any}\n */\n\nexport function resolveDefaults(defaults) {\n return typeof defaults === 'function' ? defaults() : defaults\n}\n","\nimport kindOf from 'kind-of'\n\nimport { KIND } from './constants'\nimport { isStruct, resolveDefaults } from './utils'\n\n/**\n * Kind.\n *\n * @type {Kind}\n */\n\nclass Kind {\n\n constructor(name, type, validate) {\n this.name = name\n this.type = type\n this.validate = validate\n }\n\n}\n\n/**\n * Any.\n *\n * @param {Array|Function|Object|String} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction any(schema, defaults, options) {\n if (isStruct(schema)) return schema[KIND]\n if (schema instanceof Kind) return schema\n\n switch (kindOf(schema)) {\n case 'array': {\n return schema.length > 1\n ? tuple(schema, defaults, options)\n : list(schema, defaults, options)\n }\n\n case 'function': {\n return func(schema, defaults, options)\n }\n\n case 'object': {\n return object(schema, defaults, options)\n }\n\n case 'string': {\n let required = true\n let type\n\n if (schema.endsWith('?')) {\n required = false\n schema = schema.slice(0, -1)\n }\n\n if (schema.includes('|')) {\n const scalars = schema.split(/\\s*\\|\\s*/g)\n type = union(scalars, defaults, options)\n } else if (schema.includes('&')) {\n const scalars = schema.split(/\\s*&\\s*/g)\n type = intersection(scalars, defaults, options)\n } else {\n type = scalar(schema, defaults, options)\n }\n\n if (!required) {\n type = optional(type, undefined, options)\n }\n\n return type\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`A schema definition must be an object, array, string or function, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n}\n\n/**\n * Dict.\n *\n * @param {Array} schema\n * @param {Object} defaults\n * @param {Object} options\n */\n\nfunction dict(schema, defaults, options) {\n if (kindOf(schema) !== 'array' || schema.length !== 2) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Dict structs must be defined as an array with two elements, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const obj = scalar('object', undefined, options)\n const keys = any(schema[0], undefined, options)\n const values = any(schema[1], undefined, options)\n const name = 'dict'\n const type = `dict<${keys.type},${values.type}>`\n const validate = (value = resolveDefaults(defaults)) => {\n const [ error ] = obj.validate(value)\n\n if (error) {\n error.type = type\n return [error]\n }\n\n const ret = {}\n const errors = []\n\n for (let k in value) {\n const v = value[k]\n const [ e, r ] = keys.validate(k)\n\n if (e) {\n e.path = [k].concat(e.path)\n e.data = value\n errors.push(e)\n continue\n }\n\n k = r\n const [ e2, r2 ] = values.validate(v)\n\n if (e2) {\n e2.path = [k].concat(e2.path)\n e2.data = value\n errors.push(e2)\n continue\n }\n\n ret[k] = r2\n }\n\n if (errors.length) {\n const first = errors[0]\n first.errors = errors\n return [first]\n }\n\n return [undefined, ret]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Enum.\n *\n * @param {Array} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction en(schema, defaults, options) {\n if (kindOf(schema) !== 'array') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Enum structs must be defined as an array, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const name = 'enum'\n const type = schema.map((s) => {\n try {\n return JSON.stringify(s)\n } catch (e) {\n return String(s)\n }\n }).join(' | ')\n\n const validate = (value = resolveDefaults(defaults)) => {\n return schema.includes(value)\n ? [undefined, value]\n : [{ data: value, path: [], value, type }]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Enums.\n *\n * @param {Array} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction enums(schema, defaults, options) {\n const e = en(schema, undefined, options)\n const l = list([e], defaults, options)\n return l\n}\n\n/**\n * Function.\n *\n * @param {Function} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction func(schema, defaults, options) {\n if (kindOf(schema) !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Function structs must be defined as a function, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const name = 'function'\n const type = '<function>'\n const validate = (value = resolveDefaults(defaults)) => {\n return schema(value)\n ? [undefined, value]\n : [{ type, value, data: value, path: [] }]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Instance.\n *\n * @param {Array} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction instance(schema, defaults, options) {\n const name = 'instance'\n const type = `instance<${schema.name}>`\n const validate = (value = resolveDefaults(defaults)) => {\n return value instanceof schema\n ? [undefined, value]\n : [{ data: value, path: [], value, type }]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Interface.\n *\n * @param {Object} schema\n * @param {Object} defaults\n * @param {Object} options\n */\n\nfunction inter(schema, defaults, options) {\n if (kindOf(schema) !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Interface structs must be defined as an object, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const ks = []\n const properties = {}\n\n for (const key in schema) {\n ks.push(key)\n const s = schema[key]\n const kind = any(s, undefined, options)\n properties[key] = kind\n }\n\n const name = 'interface'\n const type = `{${ks.join()}}`\n const validate = (value = resolveDefaults(defaults)) => {\n const errors = []\n\n for (const key in properties) {\n const v = value[key]\n const kind = properties[key]\n const [ e ] = kind.validate(v)\n\n if (e) {\n e.path = [key].concat(e.path)\n e.data = value\n errors.push(e)\n continue\n }\n }\n\n if (errors.length) {\n const first = errors[0]\n first.errors = errors\n return [first]\n }\n\n return [undefined, value]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * List.\n *\n * @param {Array} schema\n * @param {Array} defaults\n * @param {Object} options\n */\n\nfunction list(schema, defaults, options) {\n if (kindOf(schema) !== 'array' || schema.length !== 1) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`List structs must be defined as an array with a single element, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const array = scalar('array', undefined, options)\n const element = any(schema[0], undefined, options)\n const name = 'list'\n const type = `[${element.type}]`\n const validate = (value = resolveDefaults(defaults)) => {\n const [ error, result ] = array.validate(value)\n\n if (error) {\n error.type = type\n return [error]\n }\n\n value = result\n const errors = []\n const ret = []\n\n for (let i = 0; i < value.length; i++) {\n const v = value[i]\n const [ e, r ] = element.validate(v)\n\n if (e) {\n e.path = [i].concat(e.path)\n e.data = value\n errors.push(e)\n continue\n }\n\n ret[i] = r\n }\n\n if (errors.length) {\n const first = errors[0]\n first.errors = errors\n return [first]\n }\n\n return [undefined, ret]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Literal.\n *\n * @param {Array} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction literal(schema, defaults, options) {\n const name = 'literal'\n const type = `literal: ${JSON.stringify(schema)}`\n const validate = (value = resolveDefaults(defaults)) => {\n return value === schema\n ? [undefined, value]\n : [{ data: value, path: [], value, type }]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Object.\n *\n * @param {Object} schema\n * @param {Object} defaults\n * @param {Object} options\n */\n\nfunction object(schema, defaults, options) {\n if (kindOf(schema) !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Object structs must be defined as an object, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const obj = scalar('object', undefined, options)\n const ks = []\n const properties = {}\n\n for (const key in schema) {\n ks.push(key)\n const s = schema[key]\n const d = defaults && defaults[key]\n const kind = any(s, d, options)\n properties[key] = kind\n }\n\n const name = 'object'\n const type = `{${ks.join()}}`\n const validate = (value = resolveDefaults(defaults)) => {\n const [ error ] = obj.validate(value)\n\n if (error) {\n error.type = type\n return [error]\n }\n\n const errors = []\n const ret = {}\n const valueKeys = Object.keys(value)\n const propertiesKeys = Object.keys(properties)\n const keys = new Set(valueKeys.concat(propertiesKeys))\n\n keys.forEach((key) => {\n const v = value[key]\n const kind = properties[key]\n\n if (!kind) {\n const e = { data: value, path: [key], value: v }\n errors.push(e)\n return\n }\n\n const [ e, r ] = kind.validate(v)\n\n if (e) {\n e.path = [key].concat(e.path)\n e.data = value\n errors.push(e)\n return\n }\n\n if (key in value || r !== undefined) {\n ret[key] = r\n }\n })\n\n if (errors.length) {\n const first = errors[0]\n first.errors = errors\n return [first]\n }\n\n return [undefined, ret]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Optional.\n *\n * @param {Any} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction optional(schema, defaults, options) {\n return union([schema, 'undefined'], defaults, options)\n}\n\n/**\n * Scalar.\n *\n * @param {String} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction scalar(schema, defaults, options) {\n if (kindOf(schema) !== 'string') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Scalar structs must be defined as a string, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const { types } = options\n const fn = types[schema]\n\n if (kindOf(fn) !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`No struct validator function found for type \"${schema}\".`)\n } else {\n throw new Error(`Invalid type: ${schema}`)\n }\n }\n\n const kind = func(fn, defaults, options)\n const name = 'scalar'\n const type = schema\n const validate = (value) => {\n const [ error, result ] = kind.validate(value)\n\n if (error) {\n error.type = type\n return [error]\n }\n\n return [undefined, result]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Tuple.\n *\n * @param {Array} schema\n * @param {Array} defaults\n * @param {Object} options\n */\n\nfunction tuple(schema, defaults, options) {\n if (kindOf(schema) !== 'array') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Tuple structs must be defined as an array, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const kinds = schema.map(s => any(s, undefined, options))\n const array = scalar('array', undefined, options)\n const name = 'tuple'\n const type = `[${kinds.map(k => k.type).join()}]`\n const validate = (value = resolveDefaults(defaults)) => {\n const [ error ] = array.validate(value)\n\n if (error) {\n error.type = type\n return [error]\n }\n\n const ret = []\n const errors = []\n const length = Math.max(value.length, kinds.length)\n\n for (let i = 0; i < length; i++) {\n const kind = kinds[i]\n const v = value[i]\n\n if (!kind) {\n const e = { data: value, path: [i], value: v }\n errors.push(e)\n continue\n }\n\n const [ e, r ] = kind.validate(v)\n\n if (e) {\n e.path = [i].concat(e.path)\n e.data = value\n errors.push(e)\n continue\n }\n\n ret[i] = r\n }\n\n if (errors.length) {\n const first = errors[0]\n first.errors = errors\n return [first]\n }\n\n return [undefined, ret]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Union.\n *\n * @param {Array} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction union(schema, defaults, options) {\n if (kindOf(schema) !== 'array') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Union structs must be defined as an array, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const kinds = schema.map(s => any(s, undefined, options))\n const name = 'union'\n const type = kinds.map(k => k.type).join(' | ')\n const validate = (value = resolveDefaults(defaults)) => {\n let error\n\n for (const k of kinds) {\n const [ e, r ] = k.validate(value)\n if (!e) return [undefined, r]\n error = e\n }\n\n error.type = type\n return [error]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Intersection.\n *\n * @param {Array} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction intersection(schema, defaults, options) {\n if (kindOf(schema) !== 'array') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Intersection structs must be defined as an array, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const types = schema.map(s => any(s, undefined, options))\n const name = 'intersection'\n const type = types.map(t => t.type).join(' & ')\n const validate = (value = resolveDefaults(defaults)) => {\n let v = value\n\n for (const t of types) {\n const [ e, r ] = t.validate(v)\n\n if (e) {\n e.type = type\n return [e]\n }\n\n v = r\n }\n\n return [undefined, v]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Kinds.\n *\n * @type {Object}\n */\n\nconst Kinds = {\n any,\n dict,\n enum: en,\n enums,\n function: func,\n instance,\n interface: inter,\n list,\n literal,\n object,\n optional,\n scalar,\n tuple,\n union,\n intersection,\n}\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nexport default Kinds\n","\nimport kindOf from 'kind-of'\n\n/**\n * The types that `kind-of` supports.\n *\n * @type {Array}\n */\n\nconst TYPES = [\n 'arguments',\n 'array',\n 'boolean',\n 'buffer',\n 'date',\n 'error',\n 'float32array',\n 'float64array',\n 'function',\n 'generatorfunction',\n 'int16array',\n 'int32array',\n 'int8array',\n 'map',\n 'null',\n 'number',\n 'object',\n 'promise',\n 'regexp',\n 'set',\n 'string',\n 'symbol',\n 'uint16array',\n 'uint32array',\n 'uint8array',\n 'uint8clampedarray',\n 'undefined',\n 'weakmap',\n 'weakset',\n]\n\n/**\n * The default types that Superstruct ships with.\n *\n * @type {Object}\n */\n\nconst Types = {\n any: value => value !== undefined,\n}\n\nTYPES.forEach((type) => {\n Types[type] = value => kindOf(value) === type\n})\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nexport default Types\n","\nimport Kinds from './kinds'\nimport StructError from './error'\nimport Types from './types'\nimport { isStruct } from './utils'\nimport { IS_STRUCT, KIND } from './constants'\n\n/**\n * Create a struct factory with a `config`.\n *\n * @param {Object} config\n * @return {Function}\n */\n\nfunction superstruct(config = {}) {\n const types = {\n ...Types,\n ...(config.types || {}),\n }\n\n /**\n * Create a `kind` struct with `schema`, `defaults` and `options`.\n *\n * @param {Any} schema\n * @param {Any} defaults\n * @param {Object} options\n * @return {Function}\n */\n\n function struct(schema, defaults, options = {}) {\n if (isStruct(schema)) {\n schema = schema.schema\n }\n\n const kind = Kinds.any(schema, defaults, { ...options, types })\n\n function Struct(data) {\n if (this instanceof Struct) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error('The `Struct` creation function should not be used with the `new` keyword.')\n } else {\n throw new Error('Invalid `new` keyword!')\n }\n }\n\n return Struct.assert(data)\n }\n\n Object.defineProperty(Struct, IS_STRUCT, { value: true })\n Object.defineProperty(Struct, KIND, { value: kind })\n\n Struct.kind = kind.name\n Struct.type = kind.type\n Struct.schema = schema\n Struct.defaults = defaults\n Struct.options = options\n\n Struct.assert = (value) => {\n const [ error, result ] = kind.validate(value)\n if (error) throw new StructError(error)\n return result\n }\n\n Struct.test = (value) => {\n const [ error ] = kind.validate(value)\n return !error\n }\n\n Struct.validate = (value) => {\n const [ error, result ] = kind.validate(value)\n if (error) return [new StructError(error)]\n return [undefined, result]\n }\n\n return Struct\n }\n\n /**\n * Mix in a factory for each specific kind of struct.\n */\n\n Object.keys(Kinds).forEach((name) => {\n const kind = Kinds[name]\n\n struct[name] = (schema, defaults, options) => {\n const type = kind(schema, defaults, { ...options, types })\n const s = struct(type, defaults, options)\n return s\n }\n })\n\n /**\n * Return the struct factory.\n */\n\n return struct\n}\n\n/**\n * Export.\n *\n * @type {Function}\n */\n\nexport default superstruct\n","\nimport StructError from './error'\nimport superstruct from './superstruct'\nimport { isStruct } from './utils'\n\n/**\n * Create a convenience `struct` factory for the default types.\n *\n * @type {Function}\n */\n\nconst struct = superstruct()\n\n/**\n * Export.\n *\n * @type {Function}\n */\n\nexport {\n struct,\n superstruct,\n isStruct,\n StructError,\n}\n"],"names":["StructError","TypeError","attrs","data","value","type","path","errors","message","length","join","push","Error","captureStackTrace","constructor","stack","IS_STRUCT","KIND","isStruct","resolveDefaults","defaults","Kind","name","validate","any","schema","options","kindOf","tuple","list","func","object","required","endsWith","slice","includes","scalars","split","union","intersection","scalar","optional","undefined","process","env","NODE_ENV","dict","obj","keys","values","error","ret","k","v","e","r","concat","e2","r2","first","en","map","s","JSON","stringify","String","enums","l","instance","inter","ks","properties","key","kind","array","element","result","i","literal","d","valueKeys","Object","propertiesKeys","Set","forEach","types","fn","kinds","Math","max","t","Kinds","TYPES","Types","superstruct","config","struct","Struct","assert","defineProperty","test"],"mappings":"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"} |
+44
-15
@@ -190,2 +190,13 @@ 'use strict'; | ||
| /** | ||
| * Resolve a `defaults` value. | ||
| * | ||
| * @param {Function|Any} defaults | ||
| * @return {Any} | ||
| */ | ||
| function resolveDefaults(defaults) { | ||
| return typeof defaults === 'function' ? defaults() : defaults; | ||
| } | ||
| /** | ||
| * Kind. | ||
@@ -291,3 +302,3 @@ * | ||
| const type = `dict<${keys.type},${values.type}>`; | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| const [error] = obj.validate(value); | ||
@@ -347,3 +358,3 @@ | ||
| function enums(schema, defaults, options) { | ||
| function en(schema, defaults, options) { | ||
| if (kindOf(schema) !== 'array') { | ||
@@ -366,3 +377,3 @@ if (process.env.NODE_ENV !== 'production') { | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| return schema.includes(value) ? [undefined, value] : [{ data: value, path: [], value, type }]; | ||
@@ -375,2 +386,16 @@ }; | ||
| /** | ||
| * Enums. | ||
| * | ||
| * @param {Array} schema | ||
| * @param {Any} defaults | ||
| * @param {Object} options | ||
| */ | ||
| function enums(schema, defaults, options) { | ||
| const e = en(schema, undefined, options); | ||
| const l = list([e], defaults, options); | ||
| return l; | ||
| } | ||
| /** | ||
| * Function. | ||
@@ -394,3 +419,3 @@ * | ||
| const type = '<function>'; | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| return schema(value) ? [undefined, value] : [{ type, value, data: value, path: [] }]; | ||
@@ -413,3 +438,3 @@ }; | ||
| const type = `instance<${schema.name}>`; | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| return value instanceof schema ? [undefined, value] : [{ data: value, path: [], value, type }]; | ||
@@ -450,3 +475,3 @@ }; | ||
| const type = `{${ks.join()}}`; | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| const errors = []; | ||
@@ -500,3 +525,3 @@ | ||
| const type = `[${element.type}]`; | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| const [error, result] = array.validate(value); | ||
@@ -550,3 +575,3 @@ | ||
| const type = `literal: ${JSON.stringify(schema)}`; | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| return value === schema ? [undefined, value] : [{ data: value, path: [], value, type }]; | ||
@@ -589,3 +614,3 @@ }; | ||
| const type = `{${ks.join()}}`; | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| const [error] = obj.validate(value); | ||
@@ -718,3 +743,3 @@ | ||
| const type = `[${kinds.map(k => k.type).join()}]`; | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| const [error] = array.validate(value); | ||
@@ -785,3 +810,3 @@ | ||
| const type = kinds.map(k => k.type).join(' | '); | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| let error; | ||
@@ -822,3 +847,3 @@ | ||
| const type = types.map(t => t.type).join(' & '); | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| let v = value; | ||
@@ -852,3 +877,4 @@ | ||
| dict, | ||
| enum: enums, | ||
| enum: en, | ||
| enums, | ||
| function: func, | ||
@@ -930,3 +956,5 @@ instance, | ||
| function struct(schema, defaults$$1, options = {}) { | ||
| if (isStruct(schema)) schema = schema.schema; | ||
| if (isStruct(schema)) { | ||
| schema = schema.schema; | ||
| } | ||
@@ -998,3 +1026,3 @@ const kind = Kinds.any(schema, defaults$$1, _extends({}, options, { types })); | ||
| /** | ||
| * Create a simple `struct` method for the default types. | ||
| * Create a convenience `struct` factory for the default types. | ||
| * | ||
@@ -1008,3 +1036,4 @@ * @type {Function} | ||
| exports.superstruct = superstruct; | ||
| exports.isStruct = isStruct; | ||
| exports.StructError = StructError; | ||
| //# sourceMappingURL=index.js.map |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sources":["../src/error.js","../node_modules/kind-of/index.js","../src/constants.js","../src/is-struct.js","../src/kinds.js","../src/types.js","../src/superstruct.js","../src/index.js"],"sourcesContent":["\n/**\n * Define a struct error.\n *\n * @type {StructError}\n */\n\nclass StructError extends TypeError {\n\n constructor(attrs) {\n const { data, value, type, path, errors = [] } = attrs\n const message = `Expected a value of type \\`${type}\\`${path.length ? ` for \\`${path.join('.')}\\`` : ''} but received \\`${value}\\`.`\n super(message)\n this.data = data\n this.path = path\n this.value = value\n this.type = type\n this.errors = errors\n if (!errors.length) errors.push(this)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor)\n } else {\n this.stack = (new Error()).stack\n }\n }\n\n}\n\n/**\n * Export.\n *\n * @type {StructError}\n */\n\nexport default StructError\n","var toString = Object.prototype.toString;\n\nmodule.exports = function kindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n\n var type = typeof val;\n if (type === 'boolean') return 'boolean';\n if (type === 'string') return 'string';\n if (type === 'number') return 'number';\n if (type === 'symbol') return 'symbol';\n if (type === 'function') {\n return isGeneratorFn(val) ? 'generatorfunction' : 'function';\n }\n\n if (isArray(val)) return 'array';\n if (isBuffer(val)) return 'buffer';\n if (isArguments(val)) return 'arguments';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n if (isRegexp(val)) return 'regexp';\n\n switch (ctorName(val)) {\n case 'Symbol': return 'symbol';\n case 'Promise': return 'promise';\n\n // Set, Map, WeakSet, WeakMap\n case 'WeakMap': return 'weakmap';\n case 'WeakSet': return 'weakset';\n case 'Map': return 'map';\n case 'Set': return 'set';\n\n // 8-bit typed arrays\n case 'Int8Array': return 'int8array';\n case 'Uint8Array': return 'uint8array';\n case 'Uint8ClampedArray': return 'uint8clampedarray';\n\n // 16-bit typed arrays\n case 'Int16Array': return 'int16array';\n case 'Uint16Array': return 'uint16array';\n\n // 32-bit typed arrays\n case 'Int32Array': return 'int32array';\n case 'Uint32Array': return 'uint32array';\n case 'Float32Array': return 'float32array';\n case 'Float64Array': return 'float64array';\n }\n\n if (isGeneratorObj(val)) {\n return 'generator';\n }\n\n // Non-plain objects\n type = toString.call(val);\n switch (type) {\n case '[object Object]': return 'object';\n // iterators\n case '[object Map Iterator]': return 'mapiterator';\n case '[object Set Iterator]': return 'setiterator';\n case '[object String Iterator]': return 'stringiterator';\n case '[object Array Iterator]': return 'arrayiterator';\n }\n\n // other\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n};\n\nfunction ctorName(val) {\n return val.constructor ? val.constructor.name : null;\n}\n\nfunction isArray(val) {\n if (Array.isArray) return Array.isArray(val);\n return val instanceof Array;\n}\n\nfunction isError(val) {\n return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number');\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function'\n && typeof val.getDate === 'function'\n && typeof val.setDate === 'function';\n}\n\nfunction isRegexp(val) {\n if (val instanceof RegExp) return true;\n return typeof val.flags === 'string'\n && typeof val.ignoreCase === 'boolean'\n && typeof val.multiline === 'boolean'\n && typeof val.global === 'boolean';\n}\n\nfunction isGeneratorFn(name, val) {\n return ctorName(name) === 'GeneratorFunction';\n}\n\nfunction isGeneratorObj(val) {\n return typeof val.throw === 'function'\n && typeof val.return === 'function'\n && typeof val.next === 'function';\n}\n\nfunction isArguments(val) {\n try {\n if (typeof val.length === 'number' && typeof val.callee === 'function') {\n return true;\n }\n } catch (err) {\n if (err.message.indexOf('callee') !== -1) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * If you need to support Safari 5-7 (8-10 yr-old browser),\n * take a look at https://github.com/feross/is-buffer\n */\n\nfunction isBuffer(val) {\n if (val.constructor && typeof val.constructor.isBuffer === 'function') {\n return val.constructor.isBuffer(val);\n }\n return false;\n}\n","\n/**\n * A private string to identify structs by.\n *\n * @type {String}\n */\n\nconst IS_STRUCT = '@@__STRUCT__@@'\n\n/**\n * A private string to refer to a struct's kind.\n *\n * @type {String}\n */\n\nconst KIND = '@@__KIND__@@'\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nexport {\n IS_STRUCT,\n KIND,\n}\n","\nimport { IS_STRUCT } from './constants'\n\n/**\n * Check if a `value` is a struct.\n *\n * @param {Any} value\n * @return {Boolean}\n */\n\nfunction isStruct(value) {\n return !!(value && value[IS_STRUCT])\n}\n\n/**\n * Export.\n *\n * @type {Function}\n */\n\nexport default isStruct\n","\nimport kindOf from 'kind-of'\n\nimport isStruct from './is-struct'\nimport { KIND } from './constants'\n\n/**\n * Kind.\n *\n * @type {Kind}\n */\n\nclass Kind {\n\n constructor(name, type, validate) {\n this.name = name\n this.type = type\n this.validate = validate\n }\n\n}\n\n/**\n * Any.\n *\n * @param {Array|Function|Object|String} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction any(schema, defaults, options) {\n if (isStruct(schema)) return schema[KIND]\n if (schema instanceof Kind) return schema\n\n switch (kindOf(schema)) {\n case 'array': {\n return schema.length > 1\n ? tuple(schema, defaults, options)\n : list(schema, defaults, options)\n }\n\n case 'function': {\n return func(schema, defaults, options)\n }\n\n case 'object': {\n return object(schema, defaults, options)\n }\n\n case 'string': {\n let required = true\n let type\n\n if (schema.endsWith('?')) {\n required = false\n schema = schema.slice(0, -1)\n }\n\n if (schema.includes('|')) {\n const scalars = schema.split(/\\s*\\|\\s*/g)\n type = union(scalars, defaults, options)\n } else if (schema.includes('&')) {\n const scalars = schema.split(/\\s*&\\s*/g)\n type = intersection(scalars, defaults, options)\n } else {\n type = scalar(schema, defaults, options)\n }\n\n if (!required) {\n type = optional(type, undefined, options)\n }\n\n return type\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`A schema definition must be an object, array, string or function, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n}\n\n/**\n * Dict.\n *\n * @param {Array} schema\n * @param {Object} defaults\n * @param {Object} options\n */\n\nfunction dict(schema, defaults, options) {\n if (kindOf(schema) !== 'array' || schema.length !== 2) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Dict structs must be defined as an array with two elements, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const obj = scalar('object', undefined, options)\n const keys = any(schema[0], undefined, options)\n const values = any(schema[1], undefined, options)\n const name = 'dict'\n const type = `dict<${keys.type},${values.type}>`\n const validate = (value = defaults) => {\n const [ error ] = obj.validate(value)\n\n if (error) {\n error.type = type\n return [error]\n }\n\n const ret = {}\n const errors = []\n\n for (let k in value) {\n const v = value[k]\n const [ e, r ] = keys.validate(k)\n\n if (e) {\n e.path = [k].concat(e.path)\n e.data = value\n errors.push(e)\n continue\n }\n\n k = r\n const [ e2, r2 ] = values.validate(v)\n\n if (e2) {\n e2.path = [k].concat(e2.path)\n e2.data = value\n errors.push(e2)\n continue\n }\n\n ret[k] = r2\n }\n\n if (errors.length) {\n const first = errors[0]\n first.errors = errors\n return [first]\n }\n\n return [undefined, ret]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Enum.\n *\n * @param {Array} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction enums(schema, defaults, options) {\n if (kindOf(schema) !== 'array') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Enum structs must be defined as an array, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const name = 'enum'\n const type = schema.map((s) => {\n try {\n return JSON.stringify(s)\n } catch (e) {\n return String(s)\n }\n }).join(' | ')\n\n const validate = (value = defaults) => {\n return schema.includes(value)\n ? [undefined, value]\n : [{ data: value, path: [], value, type }]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Function.\n *\n * @param {Function} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction func(schema, defaults, options) {\n if (kindOf(schema) !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Function structs must be defined as a function, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const name = 'function'\n const type = '<function>'\n const validate = (value = defaults) => {\n return schema(value)\n ? [undefined, value]\n : [{ type, value, data: value, path: [] }]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Instance.\n *\n * @param {Array} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction instance(schema, defaults, options) {\n const name = 'instance'\n const type = `instance<${schema.name}>`\n const validate = (value = defaults) => {\n return value instanceof schema\n ? [undefined, value]\n : [{ data: value, path: [], value, type }]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Interface.\n *\n * @param {Object} schema\n * @param {Object} defaults\n * @param {Object} options\n */\n\nfunction inter(schema, defaults, options) {\n if (kindOf(schema) !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Interface structs must be defined as an object, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const ks = []\n const properties = {}\n\n for (const key in schema) {\n ks.push(key)\n const s = schema[key]\n const kind = any(s, undefined, options)\n properties[key] = kind\n }\n\n const name = 'interface'\n const type = `{${ks.join()}}`\n const validate = (value = defaults) => {\n const errors = []\n\n for (const key in properties) {\n const v = value[key]\n const kind = properties[key]\n const [ e ] = kind.validate(v)\n\n if (e) {\n e.path = [key].concat(e.path)\n e.data = value\n errors.push(e)\n continue\n }\n }\n\n if (errors.length) {\n const first = errors[0]\n first.errors = errors\n return [first]\n }\n\n return [undefined, value]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * List.\n *\n * @param {Array} schema\n * @param {Array} defaults\n * @param {Object} options\n */\n\nfunction list(schema, defaults, options) {\n if (kindOf(schema) !== 'array' || schema.length !== 1) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`List structs must be defined as an array with a single element, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const array = scalar('array', undefined, options)\n const element = any(schema[0], undefined, options)\n const name = 'list'\n const type = `[${element.type}]`\n const validate = (value = defaults) => {\n const [ error, result ] = array.validate(value)\n\n if (error) {\n error.type = type\n return [error]\n }\n\n value = result\n const errors = []\n const ret = []\n\n for (let i = 0; i < value.length; i++) {\n const v = value[i]\n const [ e, r ] = element.validate(v)\n\n if (e) {\n e.path = [i].concat(e.path)\n e.data = value\n errors.push(e)\n continue\n }\n\n ret[i] = r\n }\n\n if (errors.length) {\n const first = errors[0]\n first.errors = errors\n return [first]\n }\n\n return [undefined, ret]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Literal.\n *\n * @param {Array} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction literal(schema, defaults, options) {\n const name = 'literal'\n const type = `literal: ${JSON.stringify(schema)}`\n const validate = (value = defaults) => {\n return value === schema\n ? [undefined, value]\n : [{ data: value, path: [], value, type }]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Object.\n *\n * @param {Object} schema\n * @param {Object} defaults\n * @param {Object} options\n */\n\nfunction object(schema, defaults, options) {\n if (kindOf(schema) !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Object structs must be defined as an object, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const obj = scalar('object', undefined, options)\n const ks = []\n const properties = {}\n\n for (const key in schema) {\n ks.push(key)\n const s = schema[key]\n const d = defaults && defaults[key]\n const kind = any(s, d, options)\n properties[key] = kind\n }\n\n const name = 'object'\n const type = `{${ks.join()}}`\n const validate = (value = defaults) => {\n const [ error ] = obj.validate(value)\n\n if (error) {\n error.type = type\n return [error]\n }\n\n const errors = []\n const ret = {}\n const valueKeys = Object.keys(value)\n const propertiesKeys = Object.keys(properties)\n const keys = new Set(valueKeys.concat(propertiesKeys))\n\n keys.forEach((key) => {\n const v = value[key]\n const kind = properties[key]\n\n if (!kind) {\n const e = { data: value, path: [key], value: v }\n errors.push(e)\n return\n }\n\n const [ e, r ] = kind.validate(v)\n\n if (e) {\n e.path = [key].concat(e.path)\n e.data = value\n errors.push(e)\n return\n }\n\n if (key in value || r !== undefined) {\n ret[key] = r\n }\n })\n\n if (errors.length) {\n const first = errors[0]\n first.errors = errors\n return [first]\n }\n\n return [undefined, ret]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Optional.\n *\n * @param {Any} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction optional(schema, defaults, options) {\n return union([schema, 'undefined'], defaults, options)\n}\n\n/**\n * Scalar.\n *\n * @param {String} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction scalar(schema, defaults, options) {\n if (kindOf(schema) !== 'string') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Scalar structs must be defined as a string, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const { types } = options\n const fn = types[schema]\n\n if (kindOf(fn) !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`No struct validator function found for type \"${schema}\".`)\n } else {\n throw new Error(`Invalid type: ${schema}`)\n }\n }\n\n const kind = func(fn, defaults, options)\n const name = 'scalar'\n const type = schema\n const validate = (value) => {\n const [ error, result ] = kind.validate(value)\n\n if (error) {\n error.type = type\n return [error]\n }\n\n return [undefined, result]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Tuple.\n *\n * @param {Array} schema\n * @param {Array} defaults\n * @param {Object} options\n */\n\nfunction tuple(schema, defaults, options) {\n if (kindOf(schema) !== 'array') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Tuple structs must be defined as an array, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const kinds = schema.map(s => any(s, undefined, options))\n const array = scalar('array', undefined, options)\n const name = 'tuple'\n const type = `[${kinds.map(k => k.type).join()}]`\n const validate = (value = defaults) => {\n const [ error ] = array.validate(value)\n\n if (error) {\n error.type = type\n return [error]\n }\n\n const ret = []\n const errors = []\n const length = Math.max(value.length, kinds.length)\n\n for (let i = 0; i < length; i++) {\n const kind = kinds[i]\n const v = value[i]\n\n if (!kind) {\n const e = { data: value, path: [i], value: v }\n errors.push(e)\n continue\n }\n\n const [ e, r ] = kind.validate(v)\n\n if (e) {\n e.path = [i].concat(e.path)\n e.data = value\n errors.push(e)\n continue\n }\n\n ret[i] = r\n }\n\n if (errors.length) {\n const first = errors[0]\n first.errors = errors\n return [first]\n }\n\n return [undefined, ret]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Union.\n *\n * @param {Array} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction union(schema, defaults, options) {\n if (kindOf(schema) !== 'array') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Union structs must be defined as an array, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const kinds = schema.map(s => any(s, undefined, options))\n const name = 'union'\n const type = kinds.map(k => k.type).join(' | ')\n const validate = (value = defaults) => {\n let error\n\n for (const k of kinds) {\n const [ e, r ] = k.validate(value)\n if (!e) return [undefined, r]\n error = e\n }\n\n error.type = type\n return [error]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Intersection.\n *\n * @param {Array} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction intersection(schema, defaults, options) {\n if (kindOf(schema) !== 'array') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Intersection structs must be defined as an array, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const types = schema.map(s => any(s, undefined, options))\n const name = 'intersection'\n const type = types.map(t => t.type).join(' & ')\n const validate = (value = defaults) => {\n let v = value\n\n for (const t of types) {\n const [ e, r ] = t.validate(v)\n\n if (e) {\n e.type = type\n return [e]\n }\n\n v = r\n }\n\n return [undefined, v]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Kinds.\n *\n * @type {Object}\n */\n\nconst Kinds = {\n any,\n dict,\n enum: enums,\n function: func,\n instance,\n interface: inter,\n list,\n literal,\n object,\n optional,\n scalar,\n tuple,\n union,\n intersection,\n}\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nexport default Kinds\n","\nimport kindOf from 'kind-of'\n\n/**\n * The types that `kind-of` supports.\n *\n * @type {Array}\n */\n\nconst TYPES = [\n 'arguments',\n 'array',\n 'boolean',\n 'buffer',\n 'date',\n 'error',\n 'float32array',\n 'float64array',\n 'function',\n 'generatorfunction',\n 'int16array',\n 'int32array',\n 'int8array',\n 'map',\n 'null',\n 'number',\n 'object',\n 'promise',\n 'regexp',\n 'set',\n 'string',\n 'symbol',\n 'uint16array',\n 'uint32array',\n 'uint8array',\n 'uint8clampedarray',\n 'undefined',\n 'weakmap',\n 'weakset',\n]\n\n/**\n * The default types that Superstruct ships with.\n *\n * @type {Object}\n */\n\nconst Types = {\n any: value => value !== undefined,\n}\n\nTYPES.forEach((type) => {\n Types[type] = value => kindOf(value) === type\n})\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nexport default Types\n","\nimport Kinds from './kinds'\nimport StructError from './error'\nimport Types from './types'\nimport isStruct from './is-struct'\nimport { IS_STRUCT, KIND } from './constants'\n\n/**\n * Create a struct factory with a `config`.\n *\n * @param {Object} config\n * @return {Function}\n */\n\nfunction superstruct(config = {}) {\n const types = {\n ...Types,\n ...(config.types || {}),\n }\n\n /**\n * Create a `kind` struct with `schema`, `defaults` and `options`.\n *\n * @param {Any} schema\n * @param {Any} defaults\n * @param {Object} options\n * @return {Function}\n */\n\n function struct(schema, defaults, options = {}) {\n if (isStruct(schema)) schema = schema.schema\n\n const kind = Kinds.any(schema, defaults, { ...options, types })\n\n function Struct(data) {\n if (this instanceof Struct) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error('The `Struct` creation function should not be used with the `new` keyword.')\n } else {\n throw new Error('Invalid `new` keyword!')\n }\n }\n\n return Struct.assert(data)\n }\n\n Object.defineProperty(Struct, IS_STRUCT, { value: true })\n Object.defineProperty(Struct, KIND, { value: kind })\n\n Struct.kind = kind.name\n Struct.type = kind.type\n Struct.schema = schema\n Struct.defaults = defaults\n Struct.options = options\n\n Struct.assert = (value) => {\n const [ error, result ] = kind.validate(value)\n if (error) throw new StructError(error)\n return result\n }\n\n Struct.test = (value) => {\n const [ error ] = kind.validate(value)\n return !error\n }\n\n Struct.validate = (value) => {\n const [ error, result ] = kind.validate(value)\n if (error) return [new StructError(error)]\n return [undefined, result]\n }\n\n return Struct\n }\n\n /**\n * Mix in a factory for each specific kind of struct.\n */\n\n Object.keys(Kinds).forEach((name) => {\n const kind = Kinds[name]\n\n struct[name] = (schema, defaults, options) => {\n const type = kind(schema, defaults, { ...options, types })\n const s = struct(type, defaults, options)\n return s\n }\n })\n\n /**\n * Return the struct factory.\n */\n\n return struct\n}\n\n/**\n * Export.\n *\n * @type {Function}\n */\n\nexport default superstruct\n","\nimport StructError from './error'\nimport superstruct from './superstruct'\n\n/**\n * Create a simple `struct` method for the default types.\n *\n * @type {Function}\n */\n\nconst struct = superstruct()\n\n/**\n * Export.\n *\n * @type {Function}\n */\n\nexport { struct, superstruct, StructError }\n"],"names":["StructError","TypeError","attrs","data","value","type","path","errors","message","length","join","push","Error","captureStackTrace","constructor","stack","IS_STRUCT","KIND","isStruct","Kind","name","validate","any","schema","defaults","options","kindOf","tuple","list","func","object","required","endsWith","slice","includes","scalars","split","union","intersection","scalar","optional","undefined","process","env","NODE_ENV","dict","obj","keys","values","error","ret","k","v","e","r","concat","e2","r2","first","enums","map","s","JSON","stringify","String","instance","inter","ks","properties","key","kind","array","element","result","i","literal","d","valueKeys","Object","propertiesKeys","Set","forEach","types","fn","kinds","Math","max","t","Kinds","TYPES","Types","superstruct","config","struct","Struct","assert","defineProperty","test"],"mappings":"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"} | ||
| {"version":3,"file":"index.js","sources":["../src/error.js","../node_modules/kind-of/index.js","../src/constants.js","../src/utils.js","../src/kinds.js","../src/types.js","../src/superstruct.js","../src/index.js"],"sourcesContent":["\n/**\n * Define a struct error.\n *\n * @type {StructError}\n */\n\nclass StructError extends TypeError {\n\n constructor(attrs) {\n const { data, value, type, path, errors = [] } = attrs\n const message = `Expected a value of type \\`${type}\\`${path.length ? ` for \\`${path.join('.')}\\`` : ''} but received \\`${value}\\`.`\n super(message)\n this.data = data\n this.path = path\n this.value = value\n this.type = type\n this.errors = errors\n if (!errors.length) errors.push(this)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor)\n } else {\n this.stack = (new Error()).stack\n }\n }\n\n}\n\n/**\n * Export.\n *\n * @type {StructError}\n */\n\nexport default StructError\n","var toString = Object.prototype.toString;\n\nmodule.exports = function kindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n\n var type = typeof val;\n if (type === 'boolean') return 'boolean';\n if (type === 'string') return 'string';\n if (type === 'number') return 'number';\n if (type === 'symbol') return 'symbol';\n if (type === 'function') {\n return isGeneratorFn(val) ? 'generatorfunction' : 'function';\n }\n\n if (isArray(val)) return 'array';\n if (isBuffer(val)) return 'buffer';\n if (isArguments(val)) return 'arguments';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n if (isRegexp(val)) return 'regexp';\n\n switch (ctorName(val)) {\n case 'Symbol': return 'symbol';\n case 'Promise': return 'promise';\n\n // Set, Map, WeakSet, WeakMap\n case 'WeakMap': return 'weakmap';\n case 'WeakSet': return 'weakset';\n case 'Map': return 'map';\n case 'Set': return 'set';\n\n // 8-bit typed arrays\n case 'Int8Array': return 'int8array';\n case 'Uint8Array': return 'uint8array';\n case 'Uint8ClampedArray': return 'uint8clampedarray';\n\n // 16-bit typed arrays\n case 'Int16Array': return 'int16array';\n case 'Uint16Array': return 'uint16array';\n\n // 32-bit typed arrays\n case 'Int32Array': return 'int32array';\n case 'Uint32Array': return 'uint32array';\n case 'Float32Array': return 'float32array';\n case 'Float64Array': return 'float64array';\n }\n\n if (isGeneratorObj(val)) {\n return 'generator';\n }\n\n // Non-plain objects\n type = toString.call(val);\n switch (type) {\n case '[object Object]': return 'object';\n // iterators\n case '[object Map Iterator]': return 'mapiterator';\n case '[object Set Iterator]': return 'setiterator';\n case '[object String Iterator]': return 'stringiterator';\n case '[object Array Iterator]': return 'arrayiterator';\n }\n\n // other\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n};\n\nfunction ctorName(val) {\n return val.constructor ? val.constructor.name : null;\n}\n\nfunction isArray(val) {\n if (Array.isArray) return Array.isArray(val);\n return val instanceof Array;\n}\n\nfunction isError(val) {\n return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number');\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function'\n && typeof val.getDate === 'function'\n && typeof val.setDate === 'function';\n}\n\nfunction isRegexp(val) {\n if (val instanceof RegExp) return true;\n return typeof val.flags === 'string'\n && typeof val.ignoreCase === 'boolean'\n && typeof val.multiline === 'boolean'\n && typeof val.global === 'boolean';\n}\n\nfunction isGeneratorFn(name, val) {\n return ctorName(name) === 'GeneratorFunction';\n}\n\nfunction isGeneratorObj(val) {\n return typeof val.throw === 'function'\n && typeof val.return === 'function'\n && typeof val.next === 'function';\n}\n\nfunction isArguments(val) {\n try {\n if (typeof val.length === 'number' && typeof val.callee === 'function') {\n return true;\n }\n } catch (err) {\n if (err.message.indexOf('callee') !== -1) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * If you need to support Safari 5-7 (8-10 yr-old browser),\n * take a look at https://github.com/feross/is-buffer\n */\n\nfunction isBuffer(val) {\n if (val.constructor && typeof val.constructor.isBuffer === 'function') {\n return val.constructor.isBuffer(val);\n }\n return false;\n}\n","\n/**\n * A private string to identify structs by.\n *\n * @type {String}\n */\n\nconst IS_STRUCT = '@@__STRUCT__@@'\n\n/**\n * A private string to refer to a struct's kind.\n *\n * @type {String}\n */\n\nconst KIND = '@@__KIND__@@'\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nexport {\n IS_STRUCT,\n KIND,\n}\n","\nimport { IS_STRUCT } from './constants'\n\n/**\n * Check if a `value` is a struct.\n *\n * @param {Any} value\n * @return {Boolean}\n */\n\nexport function isStruct(value) {\n return !!(value && value[IS_STRUCT])\n}\n\n/**\n * Resolve a `defaults` value.\n *\n * @param {Function|Any} defaults\n * @return {Any}\n */\n\nexport function resolveDefaults(defaults) {\n return typeof defaults === 'function' ? defaults() : defaults\n}\n","\nimport kindOf from 'kind-of'\n\nimport { KIND } from './constants'\nimport { isStruct, resolveDefaults } from './utils'\n\n/**\n * Kind.\n *\n * @type {Kind}\n */\n\nclass Kind {\n\n constructor(name, type, validate) {\n this.name = name\n this.type = type\n this.validate = validate\n }\n\n}\n\n/**\n * Any.\n *\n * @param {Array|Function|Object|String} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction any(schema, defaults, options) {\n if (isStruct(schema)) return schema[KIND]\n if (schema instanceof Kind) return schema\n\n switch (kindOf(schema)) {\n case 'array': {\n return schema.length > 1\n ? tuple(schema, defaults, options)\n : list(schema, defaults, options)\n }\n\n case 'function': {\n return func(schema, defaults, options)\n }\n\n case 'object': {\n return object(schema, defaults, options)\n }\n\n case 'string': {\n let required = true\n let type\n\n if (schema.endsWith('?')) {\n required = false\n schema = schema.slice(0, -1)\n }\n\n if (schema.includes('|')) {\n const scalars = schema.split(/\\s*\\|\\s*/g)\n type = union(scalars, defaults, options)\n } else if (schema.includes('&')) {\n const scalars = schema.split(/\\s*&\\s*/g)\n type = intersection(scalars, defaults, options)\n } else {\n type = scalar(schema, defaults, options)\n }\n\n if (!required) {\n type = optional(type, undefined, options)\n }\n\n return type\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`A schema definition must be an object, array, string or function, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n}\n\n/**\n * Dict.\n *\n * @param {Array} schema\n * @param {Object} defaults\n * @param {Object} options\n */\n\nfunction dict(schema, defaults, options) {\n if (kindOf(schema) !== 'array' || schema.length !== 2) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Dict structs must be defined as an array with two elements, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const obj = scalar('object', undefined, options)\n const keys = any(schema[0], undefined, options)\n const values = any(schema[1], undefined, options)\n const name = 'dict'\n const type = `dict<${keys.type},${values.type}>`\n const validate = (value = resolveDefaults(defaults)) => {\n const [ error ] = obj.validate(value)\n\n if (error) {\n error.type = type\n return [error]\n }\n\n const ret = {}\n const errors = []\n\n for (let k in value) {\n const v = value[k]\n const [ e, r ] = keys.validate(k)\n\n if (e) {\n e.path = [k].concat(e.path)\n e.data = value\n errors.push(e)\n continue\n }\n\n k = r\n const [ e2, r2 ] = values.validate(v)\n\n if (e2) {\n e2.path = [k].concat(e2.path)\n e2.data = value\n errors.push(e2)\n continue\n }\n\n ret[k] = r2\n }\n\n if (errors.length) {\n const first = errors[0]\n first.errors = errors\n return [first]\n }\n\n return [undefined, ret]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Enum.\n *\n * @param {Array} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction en(schema, defaults, options) {\n if (kindOf(schema) !== 'array') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Enum structs must be defined as an array, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const name = 'enum'\n const type = schema.map((s) => {\n try {\n return JSON.stringify(s)\n } catch (e) {\n return String(s)\n }\n }).join(' | ')\n\n const validate = (value = resolveDefaults(defaults)) => {\n return schema.includes(value)\n ? [undefined, value]\n : [{ data: value, path: [], value, type }]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Enums.\n *\n * @param {Array} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction enums(schema, defaults, options) {\n const e = en(schema, undefined, options)\n const l = list([e], defaults, options)\n return l\n}\n\n/**\n * Function.\n *\n * @param {Function} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction func(schema, defaults, options) {\n if (kindOf(schema) !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Function structs must be defined as a function, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const name = 'function'\n const type = '<function>'\n const validate = (value = resolveDefaults(defaults)) => {\n return schema(value)\n ? [undefined, value]\n : [{ type, value, data: value, path: [] }]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Instance.\n *\n * @param {Array} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction instance(schema, defaults, options) {\n const name = 'instance'\n const type = `instance<${schema.name}>`\n const validate = (value = resolveDefaults(defaults)) => {\n return value instanceof schema\n ? [undefined, value]\n : [{ data: value, path: [], value, type }]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Interface.\n *\n * @param {Object} schema\n * @param {Object} defaults\n * @param {Object} options\n */\n\nfunction inter(schema, defaults, options) {\n if (kindOf(schema) !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Interface structs must be defined as an object, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const ks = []\n const properties = {}\n\n for (const key in schema) {\n ks.push(key)\n const s = schema[key]\n const kind = any(s, undefined, options)\n properties[key] = kind\n }\n\n const name = 'interface'\n const type = `{${ks.join()}}`\n const validate = (value = resolveDefaults(defaults)) => {\n const errors = []\n\n for (const key in properties) {\n const v = value[key]\n const kind = properties[key]\n const [ e ] = kind.validate(v)\n\n if (e) {\n e.path = [key].concat(e.path)\n e.data = value\n errors.push(e)\n continue\n }\n }\n\n if (errors.length) {\n const first = errors[0]\n first.errors = errors\n return [first]\n }\n\n return [undefined, value]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * List.\n *\n * @param {Array} schema\n * @param {Array} defaults\n * @param {Object} options\n */\n\nfunction list(schema, defaults, options) {\n if (kindOf(schema) !== 'array' || schema.length !== 1) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`List structs must be defined as an array with a single element, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const array = scalar('array', undefined, options)\n const element = any(schema[0], undefined, options)\n const name = 'list'\n const type = `[${element.type}]`\n const validate = (value = resolveDefaults(defaults)) => {\n const [ error, result ] = array.validate(value)\n\n if (error) {\n error.type = type\n return [error]\n }\n\n value = result\n const errors = []\n const ret = []\n\n for (let i = 0; i < value.length; i++) {\n const v = value[i]\n const [ e, r ] = element.validate(v)\n\n if (e) {\n e.path = [i].concat(e.path)\n e.data = value\n errors.push(e)\n continue\n }\n\n ret[i] = r\n }\n\n if (errors.length) {\n const first = errors[0]\n first.errors = errors\n return [first]\n }\n\n return [undefined, ret]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Literal.\n *\n * @param {Array} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction literal(schema, defaults, options) {\n const name = 'literal'\n const type = `literal: ${JSON.stringify(schema)}`\n const validate = (value = resolveDefaults(defaults)) => {\n return value === schema\n ? [undefined, value]\n : [{ data: value, path: [], value, type }]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Object.\n *\n * @param {Object} schema\n * @param {Object} defaults\n * @param {Object} options\n */\n\nfunction object(schema, defaults, options) {\n if (kindOf(schema) !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Object structs must be defined as an object, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const obj = scalar('object', undefined, options)\n const ks = []\n const properties = {}\n\n for (const key in schema) {\n ks.push(key)\n const s = schema[key]\n const d = defaults && defaults[key]\n const kind = any(s, d, options)\n properties[key] = kind\n }\n\n const name = 'object'\n const type = `{${ks.join()}}`\n const validate = (value = resolveDefaults(defaults)) => {\n const [ error ] = obj.validate(value)\n\n if (error) {\n error.type = type\n return [error]\n }\n\n const errors = []\n const ret = {}\n const valueKeys = Object.keys(value)\n const propertiesKeys = Object.keys(properties)\n const keys = new Set(valueKeys.concat(propertiesKeys))\n\n keys.forEach((key) => {\n const v = value[key]\n const kind = properties[key]\n\n if (!kind) {\n const e = { data: value, path: [key], value: v }\n errors.push(e)\n return\n }\n\n const [ e, r ] = kind.validate(v)\n\n if (e) {\n e.path = [key].concat(e.path)\n e.data = value\n errors.push(e)\n return\n }\n\n if (key in value || r !== undefined) {\n ret[key] = r\n }\n })\n\n if (errors.length) {\n const first = errors[0]\n first.errors = errors\n return [first]\n }\n\n return [undefined, ret]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Optional.\n *\n * @param {Any} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction optional(schema, defaults, options) {\n return union([schema, 'undefined'], defaults, options)\n}\n\n/**\n * Scalar.\n *\n * @param {String} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction scalar(schema, defaults, options) {\n if (kindOf(schema) !== 'string') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Scalar structs must be defined as a string, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const { types } = options\n const fn = types[schema]\n\n if (kindOf(fn) !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`No struct validator function found for type \"${schema}\".`)\n } else {\n throw new Error(`Invalid type: ${schema}`)\n }\n }\n\n const kind = func(fn, defaults, options)\n const name = 'scalar'\n const type = schema\n const validate = (value) => {\n const [ error, result ] = kind.validate(value)\n\n if (error) {\n error.type = type\n return [error]\n }\n\n return [undefined, result]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Tuple.\n *\n * @param {Array} schema\n * @param {Array} defaults\n * @param {Object} options\n */\n\nfunction tuple(schema, defaults, options) {\n if (kindOf(schema) !== 'array') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Tuple structs must be defined as an array, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const kinds = schema.map(s => any(s, undefined, options))\n const array = scalar('array', undefined, options)\n const name = 'tuple'\n const type = `[${kinds.map(k => k.type).join()}]`\n const validate = (value = resolveDefaults(defaults)) => {\n const [ error ] = array.validate(value)\n\n if (error) {\n error.type = type\n return [error]\n }\n\n const ret = []\n const errors = []\n const length = Math.max(value.length, kinds.length)\n\n for (let i = 0; i < length; i++) {\n const kind = kinds[i]\n const v = value[i]\n\n if (!kind) {\n const e = { data: value, path: [i], value: v }\n errors.push(e)\n continue\n }\n\n const [ e, r ] = kind.validate(v)\n\n if (e) {\n e.path = [i].concat(e.path)\n e.data = value\n errors.push(e)\n continue\n }\n\n ret[i] = r\n }\n\n if (errors.length) {\n const first = errors[0]\n first.errors = errors\n return [first]\n }\n\n return [undefined, ret]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Union.\n *\n * @param {Array} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction union(schema, defaults, options) {\n if (kindOf(schema) !== 'array') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Union structs must be defined as an array, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const kinds = schema.map(s => any(s, undefined, options))\n const name = 'union'\n const type = kinds.map(k => k.type).join(' | ')\n const validate = (value = resolveDefaults(defaults)) => {\n let error\n\n for (const k of kinds) {\n const [ e, r ] = k.validate(value)\n if (!e) return [undefined, r]\n error = e\n }\n\n error.type = type\n return [error]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Intersection.\n *\n * @param {Array} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction intersection(schema, defaults, options) {\n if (kindOf(schema) !== 'array') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Intersection structs must be defined as an array, but you passed: ${schema}`)\n } else {\n throw new Error(`Invalid schema: ${schema}`)\n }\n }\n\n const types = schema.map(s => any(s, undefined, options))\n const name = 'intersection'\n const type = types.map(t => t.type).join(' & ')\n const validate = (value = resolveDefaults(defaults)) => {\n let v = value\n\n for (const t of types) {\n const [ e, r ] = t.validate(v)\n\n if (e) {\n e.type = type\n return [e]\n }\n\n v = r\n }\n\n return [undefined, v]\n }\n\n return new Kind(name, type, validate)\n}\n\n/**\n * Kinds.\n *\n * @type {Object}\n */\n\nconst Kinds = {\n any,\n dict,\n enum: en,\n enums,\n function: func,\n instance,\n interface: inter,\n list,\n literal,\n object,\n optional,\n scalar,\n tuple,\n union,\n intersection,\n}\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nexport default Kinds\n","\nimport kindOf from 'kind-of'\n\n/**\n * The types that `kind-of` supports.\n *\n * @type {Array}\n */\n\nconst TYPES = [\n 'arguments',\n 'array',\n 'boolean',\n 'buffer',\n 'date',\n 'error',\n 'float32array',\n 'float64array',\n 'function',\n 'generatorfunction',\n 'int16array',\n 'int32array',\n 'int8array',\n 'map',\n 'null',\n 'number',\n 'object',\n 'promise',\n 'regexp',\n 'set',\n 'string',\n 'symbol',\n 'uint16array',\n 'uint32array',\n 'uint8array',\n 'uint8clampedarray',\n 'undefined',\n 'weakmap',\n 'weakset',\n]\n\n/**\n * The default types that Superstruct ships with.\n *\n * @type {Object}\n */\n\nconst Types = {\n any: value => value !== undefined,\n}\n\nTYPES.forEach((type) => {\n Types[type] = value => kindOf(value) === type\n})\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nexport default Types\n","\nimport Kinds from './kinds'\nimport StructError from './error'\nimport Types from './types'\nimport { isStruct } from './utils'\nimport { IS_STRUCT, KIND } from './constants'\n\n/**\n * Create a struct factory with a `config`.\n *\n * @param {Object} config\n * @return {Function}\n */\n\nfunction superstruct(config = {}) {\n const types = {\n ...Types,\n ...(config.types || {}),\n }\n\n /**\n * Create a `kind` struct with `schema`, `defaults` and `options`.\n *\n * @param {Any} schema\n * @param {Any} defaults\n * @param {Object} options\n * @return {Function}\n */\n\n function struct(schema, defaults, options = {}) {\n if (isStruct(schema)) {\n schema = schema.schema\n }\n\n const kind = Kinds.any(schema, defaults, { ...options, types })\n\n function Struct(data) {\n if (this instanceof Struct) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error('The `Struct` creation function should not be used with the `new` keyword.')\n } else {\n throw new Error('Invalid `new` keyword!')\n }\n }\n\n return Struct.assert(data)\n }\n\n Object.defineProperty(Struct, IS_STRUCT, { value: true })\n Object.defineProperty(Struct, KIND, { value: kind })\n\n Struct.kind = kind.name\n Struct.type = kind.type\n Struct.schema = schema\n Struct.defaults = defaults\n Struct.options = options\n\n Struct.assert = (value) => {\n const [ error, result ] = kind.validate(value)\n if (error) throw new StructError(error)\n return result\n }\n\n Struct.test = (value) => {\n const [ error ] = kind.validate(value)\n return !error\n }\n\n Struct.validate = (value) => {\n const [ error, result ] = kind.validate(value)\n if (error) return [new StructError(error)]\n return [undefined, result]\n }\n\n return Struct\n }\n\n /**\n * Mix in a factory for each specific kind of struct.\n */\n\n Object.keys(Kinds).forEach((name) => {\n const kind = Kinds[name]\n\n struct[name] = (schema, defaults, options) => {\n const type = kind(schema, defaults, { ...options, types })\n const s = struct(type, defaults, options)\n return s\n }\n })\n\n /**\n * Return the struct factory.\n */\n\n return struct\n}\n\n/**\n * Export.\n *\n * @type {Function}\n */\n\nexport default superstruct\n","\nimport StructError from './error'\nimport superstruct from './superstruct'\nimport { isStruct } from './utils'\n\n/**\n * Create a convenience `struct` factory for the default types.\n *\n * @type {Function}\n */\n\nconst struct = superstruct()\n\n/**\n * Export.\n *\n * @type {Function}\n */\n\nexport {\n struct,\n superstruct,\n isStruct,\n StructError,\n}\n"],"names":["StructError","TypeError","attrs","data","value","type","path","errors","message","length","join","push","Error","captureStackTrace","constructor","stack","IS_STRUCT","KIND","isStruct","resolveDefaults","defaults","Kind","name","validate","any","schema","options","kindOf","tuple","list","func","object","required","endsWith","slice","includes","scalars","split","union","intersection","scalar","optional","undefined","process","env","NODE_ENV","dict","obj","keys","values","error","ret","k","v","e","r","concat","e2","r2","first","en","map","s","JSON","stringify","String","enums","l","instance","inter","ks","properties","key","kind","array","element","result","i","literal","d","valueKeys","Object","propertiesKeys","Set","forEach","types","fn","kinds","Math","max","t","Kinds","TYPES","Types","superstruct","config","struct","Struct","assert","defineProperty","test"],"mappings":"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"} |
+1
-1
| { | ||
| "name": "superstruct", | ||
| "description": "A simple, expressive way to validate data in JavaScript.", | ||
| "version": "0.4.6", | ||
| "version": "0.4.7", | ||
| "license": "MIT", | ||
@@ -6,0 +6,0 @@ "repository": "git://github.com/ianstormtaylor/superstruct.git", |
+44
-15
@@ -192,2 +192,13 @@ (function (global, factory) { | ||
| /** | ||
| * Resolve a `defaults` value. | ||
| * | ||
| * @param {Function|Any} defaults | ||
| * @return {Any} | ||
| */ | ||
| function resolveDefaults(defaults) { | ||
| return typeof defaults === 'function' ? defaults() : defaults; | ||
| } | ||
| /** | ||
| * Kind. | ||
@@ -293,3 +304,3 @@ * | ||
| const type = `dict<${keys.type},${values.type}>`; | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| const [error] = obj.validate(value); | ||
@@ -349,3 +360,3 @@ | ||
| function enums(schema, defaults, options) { | ||
| function en(schema, defaults, options) { | ||
| if (kindOf(schema) !== 'array') { | ||
@@ -368,3 +379,3 @@ if (process.env.NODE_ENV !== 'production') { | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| return schema.includes(value) ? [undefined, value] : [{ data: value, path: [], value, type }]; | ||
@@ -377,2 +388,16 @@ }; | ||
| /** | ||
| * Enums. | ||
| * | ||
| * @param {Array} schema | ||
| * @param {Any} defaults | ||
| * @param {Object} options | ||
| */ | ||
| function enums(schema, defaults, options) { | ||
| const e = en(schema, undefined, options); | ||
| const l = list([e], defaults, options); | ||
| return l; | ||
| } | ||
| /** | ||
| * Function. | ||
@@ -396,3 +421,3 @@ * | ||
| const type = '<function>'; | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| return schema(value) ? [undefined, value] : [{ type, value, data: value, path: [] }]; | ||
@@ -415,3 +440,3 @@ }; | ||
| const type = `instance<${schema.name}>`; | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| return value instanceof schema ? [undefined, value] : [{ data: value, path: [], value, type }]; | ||
@@ -452,3 +477,3 @@ }; | ||
| const type = `{${ks.join()}}`; | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| const errors = []; | ||
@@ -502,3 +527,3 @@ | ||
| const type = `[${element.type}]`; | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| const [error, result] = array.validate(value); | ||
@@ -552,3 +577,3 @@ | ||
| const type = `literal: ${JSON.stringify(schema)}`; | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| return value === schema ? [undefined, value] : [{ data: value, path: [], value, type }]; | ||
@@ -591,3 +616,3 @@ }; | ||
| const type = `{${ks.join()}}`; | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| const [error] = obj.validate(value); | ||
@@ -720,3 +745,3 @@ | ||
| const type = `[${kinds.map(k => k.type).join()}]`; | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| const [error] = array.validate(value); | ||
@@ -787,3 +812,3 @@ | ||
| const type = kinds.map(k => k.type).join(' | '); | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| let error; | ||
@@ -824,3 +849,3 @@ | ||
| const type = types.map(t => t.type).join(' & '); | ||
| const validate = (value = defaults) => { | ||
| const validate = (value = resolveDefaults(defaults)) => { | ||
| let v = value; | ||
@@ -854,3 +879,4 @@ | ||
| dict, | ||
| enum: enums, | ||
| enum: en, | ||
| enums, | ||
| function: func, | ||
@@ -932,3 +958,5 @@ instance, | ||
| function struct(schema, defaults$$1, options = {}) { | ||
| if (isStruct(schema)) schema = schema.schema; | ||
| if (isStruct(schema)) { | ||
| schema = schema.schema; | ||
| } | ||
@@ -1000,3 +1028,3 @@ const kind = Kinds.any(schema, defaults$$1, _extends({}, options, { types })); | ||
| /** | ||
| * Create a simple `struct` method for the default types. | ||
| * Create a convenience `struct` factory for the default types. | ||
| * | ||
@@ -1010,2 +1038,3 @@ * @type {Function} | ||
| exports.superstruct = superstruct; | ||
| exports.isStruct = isStruct; | ||
| exports.StructError = StructError; | ||
@@ -1012,0 +1041,0 @@ |
@@ -1,1 +0,1 @@ | ||
| (function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?factory(exports):typeof define==="function"&&define.amd?define(["exports"],factory):factory(global.Superstruct={})})(this,function(exports){"use strict";class StructError extends TypeError{constructor(attrs){const{data:data,value:value,type:type,path:path,errors:errors=[]}=attrs;const message=`Expected a value of type \`${type}\`${path.length?` for \`${path.join(".")}\``:""} but received \`${value}\`.`;super(message);this.data=data;this.path=path;this.value=value;this.type=type;this.errors=errors;if(!errors.length)errors.push(this);if(Error.captureStackTrace){Error.captureStackTrace(this,this.constructor)}else{this.stack=(new Error).stack}}}var toString=Object.prototype.toString;var kindOf=function kindOf(val){if(val===void 0)return"undefined";if(val===null)return"null";var type=typeof val;if(type==="boolean")return"boolean";if(type==="string")return"string";if(type==="number")return"number";if(type==="symbol")return"symbol";if(type==="function"){return isGeneratorFn(val)?"generatorfunction":"function"}if(isArray(val))return"array";if(isBuffer(val))return"buffer";if(isArguments(val))return"arguments";if(isDate(val))return"date";if(isError(val))return"error";if(isRegexp(val))return"regexp";switch(ctorName(val)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(isGeneratorObj(val)){return"generator"}type=toString.call(val);switch(type){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return type.slice(8,-1).toLowerCase().replace(/\s/g,"")};function ctorName(val){return val.constructor?val.constructor.name:null}function isArray(val){if(Array.isArray)return Array.isArray(val);return val instanceof Array}function isError(val){return val instanceof Error||typeof val.message==="string"&&val.constructor&&typeof val.constructor.stackTraceLimit==="number"}function isDate(val){if(val instanceof Date)return true;return typeof val.toDateString==="function"&&typeof val.getDate==="function"&&typeof val.setDate==="function"}function isRegexp(val){if(val instanceof RegExp)return true;return typeof val.flags==="string"&&typeof val.ignoreCase==="boolean"&&typeof val.multiline==="boolean"&&typeof val.global==="boolean"}function isGeneratorFn(name,val){return ctorName(name)==="GeneratorFunction"}function isGeneratorObj(val){return typeof val.throw==="function"&&typeof val.return==="function"&&typeof val.next==="function"}function isArguments(val){try{if(typeof val.length==="number"&&typeof val.callee==="function"){return true}}catch(err){if(err.message.indexOf("callee")!==-1){return true}}return false}function isBuffer(val){if(val.constructor&&typeof val.constructor.isBuffer==="function"){return val.constructor.isBuffer(val)}return false}const IS_STRUCT="@@__STRUCT__@@";const KIND="@@__KIND__@@";function isStruct(value){return!!(value&&value[IS_STRUCT])}class Kind{constructor(name,type,validate){this.name=name;this.type=type;this.validate=validate}}function any(schema,defaults,options){if(isStruct(schema))return schema[KIND];if(schema instanceof Kind)return schema;switch(kindOf(schema)){case"array":{return schema.length>1?tuple(schema,defaults,options):list(schema,defaults,options)}case"function":{return func(schema,defaults,options)}case"object":{return object(schema,defaults,options)}case"string":{let required=true;let type;if(schema.endsWith("?")){required=false;schema=schema.slice(0,-1)}if(schema.includes("|")){const scalars=schema.split(/\s*\|\s*/g);type=union(scalars,defaults,options)}else if(schema.includes("&")){const scalars=schema.split(/\s*&\s*/g);type=intersection(scalars,defaults,options)}else{type=scalar(schema,defaults,options)}if(!required){type=optional(type,undefined,options)}return type}}{throw new Error(`Invalid schema: ${schema}`)}}function dict(schema,defaults,options){if(kindOf(schema)!=="array"||schema.length!==2){{throw new Error(`Invalid schema: ${schema}`)}}const obj=scalar("object",undefined,options);const keys=any(schema[0],undefined,options);const values=any(schema[1],undefined,options);const name="dict";const type=`dict<${keys.type},${values.type}>`;const validate=(value=defaults)=>{const[error]=obj.validate(value);if(error){error.type=type;return[error]}const ret={};const errors=[];for(let k in value){const v=value[k];const[e,r]=keys.validate(k);if(e){e.path=[k].concat(e.path);e.data=value;errors.push(e);continue}k=r;const[e2,r2]=values.validate(v);if(e2){e2.path=[k].concat(e2.path);e2.data=value;errors.push(e2);continue}ret[k]=r2}if(errors.length){const first=errors[0];first.errors=errors;return[first]}return[undefined,ret]};return new Kind(name,type,validate)}function enums(schema,defaults,options){if(kindOf(schema)!=="array"){{throw new Error(`Invalid schema: ${schema}`)}}const name="enum";const type=schema.map(s=>{try{return JSON.stringify(s)}catch(e){return String(s)}}).join(" | ");const validate=(value=defaults)=>{return schema.includes(value)?[undefined,value]:[{data:value,path:[],value:value,type:type}]};return new Kind(name,type,validate)}function func(schema,defaults,options){if(kindOf(schema)!=="function"){{throw new Error(`Invalid schema: ${schema}`)}}const name="function";const type="<function>";const validate=(value=defaults)=>{return schema(value)?[undefined,value]:[{type:type,value:value,data:value,path:[]}]};return new Kind(name,type,validate)}function instance(schema,defaults,options){const name="instance";const type=`instance<${schema.name}>`;const validate=(value=defaults)=>{return value instanceof schema?[undefined,value]:[{data:value,path:[],value:value,type:type}]};return new Kind(name,type,validate)}function inter(schema,defaults,options){if(kindOf(schema)!=="object"){{throw new Error(`Invalid schema: ${schema}`)}}const ks=[];const properties={};for(const key in schema){ks.push(key);const s=schema[key];const kind=any(s,undefined,options);properties[key]=kind}const name="interface";const type=`{${ks.join()}}`;const validate=(value=defaults)=>{const errors=[];for(const key in properties){const v=value[key];const kind=properties[key];const[e]=kind.validate(v);if(e){e.path=[key].concat(e.path);e.data=value;errors.push(e);continue}}if(errors.length){const first=errors[0];first.errors=errors;return[first]}return[undefined,value]};return new Kind(name,type,validate)}function list(schema,defaults,options){if(kindOf(schema)!=="array"||schema.length!==1){{throw new Error(`Invalid schema: ${schema}`)}}const array=scalar("array",undefined,options);const element=any(schema[0],undefined,options);const name="list";const type=`[${element.type}]`;const validate=(value=defaults)=>{const[error,result]=array.validate(value);if(error){error.type=type;return[error]}value=result;const errors=[];const ret=[];for(let i=0;i<value.length;i++){const v=value[i];const[e,r]=element.validate(v);if(e){e.path=[i].concat(e.path);e.data=value;errors.push(e);continue}ret[i]=r}if(errors.length){const first=errors[0];first.errors=errors;return[first]}return[undefined,ret]};return new Kind(name,type,validate)}function literal(schema,defaults,options){const name="literal";const type=`literal: ${JSON.stringify(schema)}`;const validate=(value=defaults)=>{return value===schema?[undefined,value]:[{data:value,path:[],value:value,type:type}]};return new Kind(name,type,validate)}function object(schema,defaults,options){if(kindOf(schema)!=="object"){{throw new Error(`Invalid schema: ${schema}`)}}const obj=scalar("object",undefined,options);const ks=[];const properties={};for(const key in schema){ks.push(key);const s=schema[key];const d=defaults&&defaults[key];const kind=any(s,d,options);properties[key]=kind}const name="object";const type=`{${ks.join()}}`;const validate=(value=defaults)=>{const[error]=obj.validate(value);if(error){error.type=type;return[error]}const errors=[];const ret={};const valueKeys=Object.keys(value);const propertiesKeys=Object.keys(properties);const keys=new Set(valueKeys.concat(propertiesKeys));keys.forEach(key=>{const v=value[key];const kind=properties[key];if(!kind){const e={data:value,path:[key],value:v};errors.push(e);return}const[e,r]=kind.validate(v);if(e){e.path=[key].concat(e.path);e.data=value;errors.push(e);return}if(key in value||r!==undefined){ret[key]=r}});if(errors.length){const first=errors[0];first.errors=errors;return[first]}return[undefined,ret]};return new Kind(name,type,validate)}function optional(schema,defaults,options){return union([schema,"undefined"],defaults,options)}function scalar(schema,defaults,options){if(kindOf(schema)!=="string"){{throw new Error(`Invalid schema: ${schema}`)}}const{types:types}=options;const fn=types[schema];if(kindOf(fn)!=="function"){{throw new Error(`Invalid type: ${schema}`)}}const kind=func(fn,defaults,options);const name="scalar";const type=schema;const validate=value=>{const[error,result]=kind.validate(value);if(error){error.type=type;return[error]}return[undefined,result]};return new Kind(name,type,validate)}function tuple(schema,defaults,options){if(kindOf(schema)!=="array"){{throw new Error(`Invalid schema: ${schema}`)}}const kinds=schema.map(s=>any(s,undefined,options));const array=scalar("array",undefined,options);const name="tuple";const type=`[${kinds.map(k=>k.type).join()}]`;const validate=(value=defaults)=>{const[error]=array.validate(value);if(error){error.type=type;return[error]}const ret=[];const errors=[];const length=Math.max(value.length,kinds.length);for(let i=0;i<length;i++){const kind=kinds[i];const v=value[i];if(!kind){const e={data:value,path:[i],value:v};errors.push(e);continue}const[e,r]=kind.validate(v);if(e){e.path=[i].concat(e.path);e.data=value;errors.push(e);continue}ret[i]=r}if(errors.length){const first=errors[0];first.errors=errors;return[first]}return[undefined,ret]};return new Kind(name,type,validate)}function union(schema,defaults,options){if(kindOf(schema)!=="array"){{throw new Error(`Invalid schema: ${schema}`)}}const kinds=schema.map(s=>any(s,undefined,options));const name="union";const type=kinds.map(k=>k.type).join(" | ");const validate=(value=defaults)=>{let error;for(const k of kinds){const[e,r]=k.validate(value);if(!e)return[undefined,r];error=e}error.type=type;return[error]};return new Kind(name,type,validate)}function intersection(schema,defaults,options){if(kindOf(schema)!=="array"){{throw new Error(`Invalid schema: ${schema}`)}}const types=schema.map(s=>any(s,undefined,options));const name="intersection";const type=types.map(t=>t.type).join(" & ");const validate=(value=defaults)=>{let v=value;for(const t of types){const[e,r]=t.validate(v);if(e){e.type=type;return[e]}v=r}return[undefined,v]};return new Kind(name,type,validate)}const Kinds={any:any,dict:dict,enum:enums,function:func,instance:instance,interface:inter,list:list,literal:literal,object:object,optional:optional,scalar:scalar,tuple:tuple,union:union,intersection:intersection};const TYPES=["arguments","array","boolean","buffer","date","error","float32array","float64array","function","generatorfunction","int16array","int32array","int8array","map","null","number","object","promise","regexp","set","string","symbol","uint16array","uint32array","uint8array","uint8clampedarray","undefined","weakmap","weakset"];const Types={any:value=>value!==undefined};TYPES.forEach(type=>{Types[type]=(value=>kindOf(value)===type)});var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target};function superstruct(config={}){const types=_extends({},Types,config.types||{});function struct(schema,defaults$$1,options={}){if(isStruct(schema))schema=schema.schema;const kind=Kinds.any(schema,defaults$$1,_extends({},options,{types:types}));function Struct(data){if(this instanceof Struct){{throw new Error("Invalid `new` keyword!")}}return Struct.assert(data)}Object.defineProperty(Struct,IS_STRUCT,{value:true});Object.defineProperty(Struct,KIND,{value:kind});Struct.kind=kind.name;Struct.type=kind.type;Struct.schema=schema;Struct.defaults=defaults$$1;Struct.options=options;Struct.assert=(value=>{const[error,result]=kind.validate(value);if(error)throw new StructError(error);return result});Struct.test=(value=>{const[error]=kind.validate(value);return!error});Struct.validate=(value=>{const[error,result]=kind.validate(value);if(error)return[new StructError(error)];return[undefined,result]});return Struct}Object.keys(Kinds).forEach(name=>{const kind=Kinds[name];struct[name]=((schema,defaults$$1,options)=>{const type=kind(schema,defaults$$1,_extends({},options,{types:types}));const s=struct(type,defaults$$1,options);return s})});return struct}const struct=superstruct();exports.struct=struct;exports.superstruct=superstruct;exports.StructError=StructError;Object.defineProperty(exports,"__esModule",{value:true})}); | ||
| (function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?factory(exports):typeof define==="function"&&define.amd?define(["exports"],factory):factory(global.Superstruct={})})(this,function(exports){"use strict";class StructError extends TypeError{constructor(attrs){const{data:data,value:value,type:type,path:path,errors:errors=[]}=attrs;const message=`Expected a value of type \`${type}\`${path.length?` for \`${path.join(".")}\``:""} but received \`${value}\`.`;super(message);this.data=data;this.path=path;this.value=value;this.type=type;this.errors=errors;if(!errors.length)errors.push(this);if(Error.captureStackTrace){Error.captureStackTrace(this,this.constructor)}else{this.stack=(new Error).stack}}}var toString=Object.prototype.toString;var kindOf=function kindOf(val){if(val===void 0)return"undefined";if(val===null)return"null";var type=typeof val;if(type==="boolean")return"boolean";if(type==="string")return"string";if(type==="number")return"number";if(type==="symbol")return"symbol";if(type==="function"){return isGeneratorFn(val)?"generatorfunction":"function"}if(isArray(val))return"array";if(isBuffer(val))return"buffer";if(isArguments(val))return"arguments";if(isDate(val))return"date";if(isError(val))return"error";if(isRegexp(val))return"regexp";switch(ctorName(val)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(isGeneratorObj(val)){return"generator"}type=toString.call(val);switch(type){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return type.slice(8,-1).toLowerCase().replace(/\s/g,"")};function ctorName(val){return val.constructor?val.constructor.name:null}function isArray(val){if(Array.isArray)return Array.isArray(val);return val instanceof Array}function isError(val){return val instanceof Error||typeof val.message==="string"&&val.constructor&&typeof val.constructor.stackTraceLimit==="number"}function isDate(val){if(val instanceof Date)return true;return typeof val.toDateString==="function"&&typeof val.getDate==="function"&&typeof val.setDate==="function"}function isRegexp(val){if(val instanceof RegExp)return true;return typeof val.flags==="string"&&typeof val.ignoreCase==="boolean"&&typeof val.multiline==="boolean"&&typeof val.global==="boolean"}function isGeneratorFn(name,val){return ctorName(name)==="GeneratorFunction"}function isGeneratorObj(val){return typeof val.throw==="function"&&typeof val.return==="function"&&typeof val.next==="function"}function isArguments(val){try{if(typeof val.length==="number"&&typeof val.callee==="function"){return true}}catch(err){if(err.message.indexOf("callee")!==-1){return true}}return false}function isBuffer(val){if(val.constructor&&typeof val.constructor.isBuffer==="function"){return val.constructor.isBuffer(val)}return false}const IS_STRUCT="@@__STRUCT__@@";const KIND="@@__KIND__@@";function isStruct(value){return!!(value&&value[IS_STRUCT])}function resolveDefaults(defaults){return typeof defaults==="function"?defaults():defaults}class Kind{constructor(name,type,validate){this.name=name;this.type=type;this.validate=validate}}function any(schema,defaults,options){if(isStruct(schema))return schema[KIND];if(schema instanceof Kind)return schema;switch(kindOf(schema)){case"array":{return schema.length>1?tuple(schema,defaults,options):list(schema,defaults,options)}case"function":{return func(schema,defaults,options)}case"object":{return object(schema,defaults,options)}case"string":{let required=true;let type;if(schema.endsWith("?")){required=false;schema=schema.slice(0,-1)}if(schema.includes("|")){const scalars=schema.split(/\s*\|\s*/g);type=union(scalars,defaults,options)}else if(schema.includes("&")){const scalars=schema.split(/\s*&\s*/g);type=intersection(scalars,defaults,options)}else{type=scalar(schema,defaults,options)}if(!required){type=optional(type,undefined,options)}return type}}{throw new Error(`Invalid schema: ${schema}`)}}function dict(schema,defaults,options){if(kindOf(schema)!=="array"||schema.length!==2){{throw new Error(`Invalid schema: ${schema}`)}}const obj=scalar("object",undefined,options);const keys=any(schema[0],undefined,options);const values=any(schema[1],undefined,options);const name="dict";const type=`dict<${keys.type},${values.type}>`;const validate=(value=resolveDefaults(defaults))=>{const[error]=obj.validate(value);if(error){error.type=type;return[error]}const ret={};const errors=[];for(let k in value){const v=value[k];const[e,r]=keys.validate(k);if(e){e.path=[k].concat(e.path);e.data=value;errors.push(e);continue}k=r;const[e2,r2]=values.validate(v);if(e2){e2.path=[k].concat(e2.path);e2.data=value;errors.push(e2);continue}ret[k]=r2}if(errors.length){const first=errors[0];first.errors=errors;return[first]}return[undefined,ret]};return new Kind(name,type,validate)}function en(schema,defaults,options){if(kindOf(schema)!=="array"){{throw new Error(`Invalid schema: ${schema}`)}}const name="enum";const type=schema.map(s=>{try{return JSON.stringify(s)}catch(e){return String(s)}}).join(" | ");const validate=(value=resolveDefaults(defaults))=>{return schema.includes(value)?[undefined,value]:[{data:value,path:[],value:value,type:type}]};return new Kind(name,type,validate)}function enums(schema,defaults,options){const e=en(schema,undefined,options);const l=list([e],defaults,options);return l}function func(schema,defaults,options){if(kindOf(schema)!=="function"){{throw new Error(`Invalid schema: ${schema}`)}}const name="function";const type="<function>";const validate=(value=resolveDefaults(defaults))=>{return schema(value)?[undefined,value]:[{type:type,value:value,data:value,path:[]}]};return new Kind(name,type,validate)}function instance(schema,defaults,options){const name="instance";const type=`instance<${schema.name}>`;const validate=(value=resolveDefaults(defaults))=>{return value instanceof schema?[undefined,value]:[{data:value,path:[],value:value,type:type}]};return new Kind(name,type,validate)}function inter(schema,defaults,options){if(kindOf(schema)!=="object"){{throw new Error(`Invalid schema: ${schema}`)}}const ks=[];const properties={};for(const key in schema){ks.push(key);const s=schema[key];const kind=any(s,undefined,options);properties[key]=kind}const name="interface";const type=`{${ks.join()}}`;const validate=(value=resolveDefaults(defaults))=>{const errors=[];for(const key in properties){const v=value[key];const kind=properties[key];const[e]=kind.validate(v);if(e){e.path=[key].concat(e.path);e.data=value;errors.push(e);continue}}if(errors.length){const first=errors[0];first.errors=errors;return[first]}return[undefined,value]};return new Kind(name,type,validate)}function list(schema,defaults,options){if(kindOf(schema)!=="array"||schema.length!==1){{throw new Error(`Invalid schema: ${schema}`)}}const array=scalar("array",undefined,options);const element=any(schema[0],undefined,options);const name="list";const type=`[${element.type}]`;const validate=(value=resolveDefaults(defaults))=>{const[error,result]=array.validate(value);if(error){error.type=type;return[error]}value=result;const errors=[];const ret=[];for(let i=0;i<value.length;i++){const v=value[i];const[e,r]=element.validate(v);if(e){e.path=[i].concat(e.path);e.data=value;errors.push(e);continue}ret[i]=r}if(errors.length){const first=errors[0];first.errors=errors;return[first]}return[undefined,ret]};return new Kind(name,type,validate)}function literal(schema,defaults,options){const name="literal";const type=`literal: ${JSON.stringify(schema)}`;const validate=(value=resolveDefaults(defaults))=>{return value===schema?[undefined,value]:[{data:value,path:[],value:value,type:type}]};return new Kind(name,type,validate)}function object(schema,defaults,options){if(kindOf(schema)!=="object"){{throw new Error(`Invalid schema: ${schema}`)}}const obj=scalar("object",undefined,options);const ks=[];const properties={};for(const key in schema){ks.push(key);const s=schema[key];const d=defaults&&defaults[key];const kind=any(s,d,options);properties[key]=kind}const name="object";const type=`{${ks.join()}}`;const validate=(value=resolveDefaults(defaults))=>{const[error]=obj.validate(value);if(error){error.type=type;return[error]}const errors=[];const ret={};const valueKeys=Object.keys(value);const propertiesKeys=Object.keys(properties);const keys=new Set(valueKeys.concat(propertiesKeys));keys.forEach(key=>{const v=value[key];const kind=properties[key];if(!kind){const e={data:value,path:[key],value:v};errors.push(e);return}const[e,r]=kind.validate(v);if(e){e.path=[key].concat(e.path);e.data=value;errors.push(e);return}if(key in value||r!==undefined){ret[key]=r}});if(errors.length){const first=errors[0];first.errors=errors;return[first]}return[undefined,ret]};return new Kind(name,type,validate)}function optional(schema,defaults,options){return union([schema,"undefined"],defaults,options)}function scalar(schema,defaults,options){if(kindOf(schema)!=="string"){{throw new Error(`Invalid schema: ${schema}`)}}const{types:types}=options;const fn=types[schema];if(kindOf(fn)!=="function"){{throw new Error(`Invalid type: ${schema}`)}}const kind=func(fn,defaults,options);const name="scalar";const type=schema;const validate=value=>{const[error,result]=kind.validate(value);if(error){error.type=type;return[error]}return[undefined,result]};return new Kind(name,type,validate)}function tuple(schema,defaults,options){if(kindOf(schema)!=="array"){{throw new Error(`Invalid schema: ${schema}`)}}const kinds=schema.map(s=>any(s,undefined,options));const array=scalar("array",undefined,options);const name="tuple";const type=`[${kinds.map(k=>k.type).join()}]`;const validate=(value=resolveDefaults(defaults))=>{const[error]=array.validate(value);if(error){error.type=type;return[error]}const ret=[];const errors=[];const length=Math.max(value.length,kinds.length);for(let i=0;i<length;i++){const kind=kinds[i];const v=value[i];if(!kind){const e={data:value,path:[i],value:v};errors.push(e);continue}const[e,r]=kind.validate(v);if(e){e.path=[i].concat(e.path);e.data=value;errors.push(e);continue}ret[i]=r}if(errors.length){const first=errors[0];first.errors=errors;return[first]}return[undefined,ret]};return new Kind(name,type,validate)}function union(schema,defaults,options){if(kindOf(schema)!=="array"){{throw new Error(`Invalid schema: ${schema}`)}}const kinds=schema.map(s=>any(s,undefined,options));const name="union";const type=kinds.map(k=>k.type).join(" | ");const validate=(value=resolveDefaults(defaults))=>{let error;for(const k of kinds){const[e,r]=k.validate(value);if(!e)return[undefined,r];error=e}error.type=type;return[error]};return new Kind(name,type,validate)}function intersection(schema,defaults,options){if(kindOf(schema)!=="array"){{throw new Error(`Invalid schema: ${schema}`)}}const types=schema.map(s=>any(s,undefined,options));const name="intersection";const type=types.map(t=>t.type).join(" & ");const validate=(value=resolveDefaults(defaults))=>{let v=value;for(const t of types){const[e,r]=t.validate(v);if(e){e.type=type;return[e]}v=r}return[undefined,v]};return new Kind(name,type,validate)}const Kinds={any:any,dict:dict,enum:en,enums:enums,function:func,instance:instance,interface:inter,list:list,literal:literal,object:object,optional:optional,scalar:scalar,tuple:tuple,union:union,intersection:intersection};const TYPES=["arguments","array","boolean","buffer","date","error","float32array","float64array","function","generatorfunction","int16array","int32array","int8array","map","null","number","object","promise","regexp","set","string","symbol","uint16array","uint32array","uint8array","uint8clampedarray","undefined","weakmap","weakset"];const Types={any:value=>value!==undefined};TYPES.forEach(type=>{Types[type]=(value=>kindOf(value)===type)});var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target};function superstruct(config={}){const types=_extends({},Types,config.types||{});function struct(schema,defaults$$1,options={}){if(isStruct(schema)){schema=schema.schema}const kind=Kinds.any(schema,defaults$$1,_extends({},options,{types:types}));function Struct(data){if(this instanceof Struct){{throw new Error("Invalid `new` keyword!")}}return Struct.assert(data)}Object.defineProperty(Struct,IS_STRUCT,{value:true});Object.defineProperty(Struct,KIND,{value:kind});Struct.kind=kind.name;Struct.type=kind.type;Struct.schema=schema;Struct.defaults=defaults$$1;Struct.options=options;Struct.assert=(value=>{const[error,result]=kind.validate(value);if(error)throw new StructError(error);return result});Struct.test=(value=>{const[error]=kind.validate(value);return!error});Struct.validate=(value=>{const[error,result]=kind.validate(value);if(error)return[new StructError(error)];return[undefined,result]});return Struct}Object.keys(Kinds).forEach(name=>{const kind=Kinds[name];struct[name]=((schema,defaults$$1,options)=>{const type=kind(schema,defaults$$1,_extends({},options,{types:types}));const s=struct(type,defaults$$1,options);return s})});return struct}const struct=superstruct();exports.struct=struct;exports.superstruct=superstruct;exports.isStruct=isStruct;exports.StructError=StructError;Object.defineProperty(exports,"__esModule",{value:true})}); |
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
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
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
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
187684
2.67%2560
3.02%