prop-types
Advanced tools
| /** | ||
| * Copyright 2013-present, Facebook, Inc. | ||
| * All rights reserved. | ||
| * | ||
| * This source code is licensed under the BSD-style license found in the | ||
| * LICENSE file in the root directory of this source tree. An additional grant | ||
| * of patent rights can be found in the PATENTS file in the same directory. | ||
| */ | ||
| 'use strict'; | ||
| var invariant = require('fbjs/lib/invariant'); | ||
| var warning = require('fbjs/lib/warning'); | ||
| var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret'); | ||
| var loggedTypeFailures = {}; | ||
| /** | ||
| * Assert that the values match with the type specs. | ||
| * Error messages are memorized and will only be shown once. | ||
| * | ||
| * @param {object} typeSpecs Map of name to a ReactPropType | ||
| * @param {object} values Runtime values that need to be type-checked | ||
| * @param {string} location e.g. "prop", "context", "child context" | ||
| * @param {string} componentName Name of the component for error messages. | ||
| * @param {?Function} getStack Returns the component stack. | ||
| * @private | ||
| */ | ||
| function checkPropTypes(typeSpecs, values, location, componentName, getStack) { | ||
| if (process.env.NODE_ENV !== 'production') { | ||
| for (var typeSpecName in typeSpecs) { | ||
| if (typeSpecs.hasOwnProperty(typeSpecName)) { | ||
| var error; | ||
| // Prop type validation may throw. In case they do, we don't want to | ||
| // fail the render phase where it didn't fail before. So we log it. | ||
| // After these have been cleaned up, we'll let them throw. | ||
| try { | ||
| // This is intentionally an invariant that gets caught. It's the same | ||
| // behavior as without this statement except with a better message. | ||
| invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', componentName || 'React class', location, typeSpecName); | ||
| error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); | ||
| } catch (ex) { | ||
| error = ex; | ||
| } | ||
| process.env.NODE_ENV !== 'production' ? warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error) : void 0; | ||
| if (error instanceof Error && !(error.message in loggedTypeFailures)) { | ||
| // Only monitor this failure once because there tends to be a lot of the | ||
| // same error. | ||
| loggedTypeFailures[error.message] = true; | ||
| var stack = getStack ? getStack() : ''; | ||
| process.env.NODE_ENV !== 'production' ? warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '') : void 0; | ||
| } | ||
| } | ||
| } | ||
| } | ||
| } | ||
| module.exports = checkPropTypes; |
+484
| /** | ||
| * Copyright 2013-present, Facebook, Inc. | ||
| * All rights reserved. | ||
| * | ||
| * This source code is licensed under the BSD-style license found in the | ||
| * LICENSE file in the root directory of this source tree. An additional grant | ||
| * of patent rights can be found in the PATENTS file in the same directory. | ||
| */ | ||
| 'use strict'; | ||
| var emptyFunction = require('fbjs/lib/emptyFunction'); | ||
| var invariant = require('fbjs/lib/invariant'); | ||
| var warning = require('fbjs/lib/warning'); | ||
| var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret'); | ||
| var checkPropTypes = require('./checkPropTypes'); | ||
| module.exports = function (isValidElement) { | ||
| /* global Symbol */ | ||
| var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; | ||
| var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. | ||
| /** | ||
| * Returns the iterator method function contained on the iterable object. | ||
| * | ||
| * Be sure to invoke the function with the iterable as context: | ||
| * | ||
| * var iteratorFn = getIteratorFn(myIterable); | ||
| * if (iteratorFn) { | ||
| * var iterator = iteratorFn.call(myIterable); | ||
| * ... | ||
| * } | ||
| * | ||
| * @param {?object} maybeIterable | ||
| * @return {?function} | ||
| */ | ||
| function getIteratorFn(maybeIterable) { | ||
| var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); | ||
| if (typeof iteratorFn === 'function') { | ||
| return iteratorFn; | ||
| } | ||
| } | ||
| /** | ||
| * Collection of methods that allow declaration and validation of props that are | ||
| * supplied to React components. Example usage: | ||
| * | ||
| * var Props = require('ReactPropTypes'); | ||
| * var MyArticle = React.createClass({ | ||
| * propTypes: { | ||
| * // An optional string prop named "description". | ||
| * description: Props.string, | ||
| * | ||
| * // A required enum prop named "category". | ||
| * category: Props.oneOf(['News','Photos']).isRequired, | ||
| * | ||
| * // A prop named "dialog" that requires an instance of Dialog. | ||
| * dialog: Props.instanceOf(Dialog).isRequired | ||
| * }, | ||
| * render: function() { ... } | ||
| * }); | ||
| * | ||
| * A more formal specification of how these methods are used: | ||
| * | ||
| * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) | ||
| * decl := ReactPropTypes.{type}(.isRequired)? | ||
| * | ||
| * Each and every declaration produces a function with the same signature. This | ||
| * allows the creation of custom validation functions. For example: | ||
| * | ||
| * var MyLink = React.createClass({ | ||
| * propTypes: { | ||
| * // An optional string or URI prop named "href". | ||
| * href: function(props, propName, componentName) { | ||
| * var propValue = props[propName]; | ||
| * if (propValue != null && typeof propValue !== 'string' && | ||
| * !(propValue instanceof URI)) { | ||
| * return new Error( | ||
| * 'Expected a string or an URI for ' + propName + ' in ' + | ||
| * componentName | ||
| * ); | ||
| * } | ||
| * } | ||
| * }, | ||
| * render: function() {...} | ||
| * }); | ||
| * | ||
| * @internal | ||
| */ | ||
| var ANONYMOUS = '<<anonymous>>'; | ||
| var ReactPropTypes; | ||
| if (process.env.NODE_ENV !== 'production') { | ||
| // Keep in sync with production version below | ||
| ReactPropTypes = { | ||
| array: createPrimitiveTypeChecker('array'), | ||
| bool: createPrimitiveTypeChecker('boolean'), | ||
| func: createPrimitiveTypeChecker('function'), | ||
| number: createPrimitiveTypeChecker('number'), | ||
| object: createPrimitiveTypeChecker('object'), | ||
| string: createPrimitiveTypeChecker('string'), | ||
| symbol: createPrimitiveTypeChecker('symbol'), | ||
| any: createAnyTypeChecker(), | ||
| arrayOf: createArrayOfTypeChecker, | ||
| element: createElementTypeChecker(), | ||
| instanceOf: createInstanceTypeChecker, | ||
| node: createNodeChecker(), | ||
| objectOf: createObjectOfTypeChecker, | ||
| oneOf: createEnumTypeChecker, | ||
| oneOfType: createUnionTypeChecker, | ||
| shape: createShapeTypeChecker | ||
| }; | ||
| } else { | ||
| var productionTypeChecker = function () { | ||
| invariant(false, 'React.PropTypes type checking code is stripped in production.'); | ||
| }; | ||
| productionTypeChecker.isRequired = productionTypeChecker; | ||
| var getProductionTypeChecker = function () { | ||
| return productionTypeChecker; | ||
| }; | ||
| // Keep in sync with development version above | ||
| ReactPropTypes = { | ||
| array: productionTypeChecker, | ||
| bool: productionTypeChecker, | ||
| func: productionTypeChecker, | ||
| number: productionTypeChecker, | ||
| object: productionTypeChecker, | ||
| string: productionTypeChecker, | ||
| symbol: productionTypeChecker, | ||
| any: productionTypeChecker, | ||
| arrayOf: getProductionTypeChecker, | ||
| element: productionTypeChecker, | ||
| instanceOf: getProductionTypeChecker, | ||
| node: productionTypeChecker, | ||
| objectOf: getProductionTypeChecker, | ||
| oneOf: getProductionTypeChecker, | ||
| oneOfType: getProductionTypeChecker, | ||
| shape: getProductionTypeChecker | ||
| }; | ||
| } | ||
| /** | ||
| * inlined Object.is polyfill to avoid requiring consumers ship their own | ||
| * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is | ||
| */ | ||
| /*eslint-disable no-self-compare*/ | ||
| function is(x, y) { | ||
| // SameValue algorithm | ||
| if (x === y) { | ||
| // Steps 1-5, 7-10 | ||
| // Steps 6.b-6.e: +0 != -0 | ||
| return x !== 0 || 1 / x === 1 / y; | ||
| } else { | ||
| // Step 6.a: NaN == NaN | ||
| return x !== x && y !== y; | ||
| } | ||
| } | ||
| /*eslint-enable no-self-compare*/ | ||
| /** | ||
| * We use an Error-like object for backward compatibility as people may call | ||
| * PropTypes directly and inspect their output. However, we don't use real | ||
| * Errors anymore. We don't inspect their stack anyway, and creating them | ||
| * is prohibitively expensive if they are created too often, such as what | ||
| * happens in oneOfType() for any type before the one that matched. | ||
| */ | ||
| function PropTypeError(message) { | ||
| this.message = message; | ||
| this.stack = ''; | ||
| } | ||
| // Make `instanceof Error` still work for returned errors. | ||
| PropTypeError.prototype = Error.prototype; | ||
| function createChainableTypeChecker(validate) { | ||
| if (process.env.NODE_ENV !== 'production') { | ||
| var manualPropTypeCallCache = {}; | ||
| } | ||
| function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { | ||
| componentName = componentName || ANONYMOUS; | ||
| propFullName = propFullName || propName; | ||
| if (process.env.NODE_ENV !== 'production') { | ||
| if (secret !== ReactPropTypesSecret && typeof console !== 'undefined') { | ||
| var cacheKey = componentName + ':' + propName; | ||
| if (!manualPropTypeCallCache[cacheKey]) { | ||
| process.env.NODE_ENV !== 'production' ? warning(false, 'You are manually calling a React.PropTypes validation ' + 'function for the `%s` prop on `%s`. This is deprecated ' + 'and will not work in production with the next major version. ' + 'You may be seeing this warning due to a third-party PropTypes ' + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.', propFullName, componentName) : void 0; | ||
| manualPropTypeCallCache[cacheKey] = true; | ||
| } | ||
| } | ||
| } | ||
| if (props[propName] == null) { | ||
| if (isRequired) { | ||
| if (props[propName] === null) { | ||
| return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.')); | ||
| } | ||
| return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.')); | ||
| } | ||
| return null; | ||
| } else { | ||
| return validate(props, propName, componentName, location, propFullName); | ||
| } | ||
| } | ||
| var chainedCheckType = checkType.bind(null, false); | ||
| chainedCheckType.isRequired = checkType.bind(null, true); | ||
| return chainedCheckType; | ||
| } | ||
| function createPrimitiveTypeChecker(expectedType) { | ||
| function validate(props, propName, componentName, location, propFullName, secret) { | ||
| var propValue = props[propName]; | ||
| var propType = getPropType(propValue); | ||
| if (propType !== expectedType) { | ||
| // `propValue` being instance of, say, date/regexp, pass the 'object' | ||
| // check, but we can offer a more precise error message here rather than | ||
| // 'of type `object`'. | ||
| var preciseType = getPreciseType(propValue); | ||
| return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.')); | ||
| } | ||
| return null; | ||
| } | ||
| return createChainableTypeChecker(validate); | ||
| } | ||
| function createAnyTypeChecker() { | ||
| return createChainableTypeChecker(emptyFunction.thatReturnsNull); | ||
| } | ||
| function createArrayOfTypeChecker(typeChecker) { | ||
| function validate(props, propName, componentName, location, propFullName) { | ||
| if (typeof typeChecker !== 'function') { | ||
| return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.'); | ||
| } | ||
| var propValue = props[propName]; | ||
| if (!Array.isArray(propValue)) { | ||
| var propType = getPropType(propValue); | ||
| return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.')); | ||
| } | ||
| for (var i = 0; i < propValue.length; i++) { | ||
| var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret); | ||
| if (error instanceof Error) { | ||
| return error; | ||
| } | ||
| } | ||
| return null; | ||
| } | ||
| return createChainableTypeChecker(validate); | ||
| } | ||
| function createElementTypeChecker() { | ||
| function validate(props, propName, componentName, location, propFullName) { | ||
| var propValue = props[propName]; | ||
| if (!isValidElement(propValue)) { | ||
| var propType = getPropType(propValue); | ||
| return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.')); | ||
| } | ||
| return null; | ||
| } | ||
| return createChainableTypeChecker(validate); | ||
| } | ||
| function createInstanceTypeChecker(expectedClass) { | ||
| function validate(props, propName, componentName, location, propFullName) { | ||
| if (!(props[propName] instanceof expectedClass)) { | ||
| var expectedClassName = expectedClass.name || ANONYMOUS; | ||
| var actualClassName = getClassName(props[propName]); | ||
| return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.')); | ||
| } | ||
| return null; | ||
| } | ||
| return createChainableTypeChecker(validate); | ||
| } | ||
| function createEnumTypeChecker(expectedValues) { | ||
| if (!Array.isArray(expectedValues)) { | ||
| process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0; | ||
| return emptyFunction.thatReturnsNull; | ||
| } | ||
| function validate(props, propName, componentName, location, propFullName) { | ||
| var propValue = props[propName]; | ||
| for (var i = 0; i < expectedValues.length; i++) { | ||
| if (is(propValue, expectedValues[i])) { | ||
| return null; | ||
| } | ||
| } | ||
| var valuesString = JSON.stringify(expectedValues); | ||
| return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); | ||
| } | ||
| return createChainableTypeChecker(validate); | ||
| } | ||
| function createObjectOfTypeChecker(typeChecker) { | ||
| function validate(props, propName, componentName, location, propFullName) { | ||
| if (typeof typeChecker !== 'function') { | ||
| return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); | ||
| } | ||
| var propValue = props[propName]; | ||
| var propType = getPropType(propValue); | ||
| if (propType !== 'object') { | ||
| return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); | ||
| } | ||
| for (var key in propValue) { | ||
| if (propValue.hasOwnProperty(key)) { | ||
| var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); | ||
| if (error instanceof Error) { | ||
| return error; | ||
| } | ||
| } | ||
| } | ||
| return null; | ||
| } | ||
| return createChainableTypeChecker(validate); | ||
| } | ||
| function createUnionTypeChecker(arrayOfTypeCheckers) { | ||
| if (!Array.isArray(arrayOfTypeCheckers)) { | ||
| process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0; | ||
| return emptyFunction.thatReturnsNull; | ||
| } | ||
| function validate(props, propName, componentName, location, propFullName) { | ||
| for (var i = 0; i < arrayOfTypeCheckers.length; i++) { | ||
| var checker = arrayOfTypeCheckers[i]; | ||
| if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) { | ||
| return null; | ||
| } | ||
| } | ||
| return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.')); | ||
| } | ||
| return createChainableTypeChecker(validate); | ||
| } | ||
| function createNodeChecker() { | ||
| function validate(props, propName, componentName, location, propFullName) { | ||
| if (!isNode(props[propName])) { | ||
| return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); | ||
| } | ||
| return null; | ||
| } | ||
| return createChainableTypeChecker(validate); | ||
| } | ||
| function createShapeTypeChecker(shapeTypes) { | ||
| function validate(props, propName, componentName, location, propFullName) { | ||
| var propValue = props[propName]; | ||
| var propType = getPropType(propValue); | ||
| if (propType !== 'object') { | ||
| return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); | ||
| } | ||
| for (var key in shapeTypes) { | ||
| var checker = shapeTypes[key]; | ||
| if (!checker) { | ||
| continue; | ||
| } | ||
| var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); | ||
| if (error) { | ||
| return error; | ||
| } | ||
| } | ||
| return null; | ||
| } | ||
| return createChainableTypeChecker(validate); | ||
| } | ||
| function isNode(propValue) { | ||
| switch (typeof propValue) { | ||
| case 'number': | ||
| case 'string': | ||
| case 'undefined': | ||
| return true; | ||
| case 'boolean': | ||
| return !propValue; | ||
| case 'object': | ||
| if (Array.isArray(propValue)) { | ||
| return propValue.every(isNode); | ||
| } | ||
| if (propValue === null || isValidElement(propValue)) { | ||
| return true; | ||
| } | ||
| var iteratorFn = getIteratorFn(propValue); | ||
| if (iteratorFn) { | ||
| var iterator = iteratorFn.call(propValue); | ||
| var step; | ||
| if (iteratorFn !== propValue.entries) { | ||
| while (!(step = iterator.next()).done) { | ||
| if (!isNode(step.value)) { | ||
| return false; | ||
| } | ||
| } | ||
| } else { | ||
| // Iterator will provide entry [k,v] tuples rather than values. | ||
| while (!(step = iterator.next()).done) { | ||
| var entry = step.value; | ||
| if (entry) { | ||
| if (!isNode(entry[1])) { | ||
| return false; | ||
| } | ||
| } | ||
| } | ||
| } | ||
| } else { | ||
| return false; | ||
| } | ||
| return true; | ||
| default: | ||
| return false; | ||
| } | ||
| } | ||
| function isSymbol(propType, propValue) { | ||
| // Native Symbol. | ||
| if (propType === 'symbol') { | ||
| return true; | ||
| } | ||
| // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' | ||
| if (propValue['@@toStringTag'] === 'Symbol') { | ||
| return true; | ||
| } | ||
| // Fallback for non-spec compliant Symbols which are polyfilled. | ||
| if (typeof Symbol === 'function' && propValue instanceof Symbol) { | ||
| return true; | ||
| } | ||
| return false; | ||
| } | ||
| // Equivalent of `typeof` but with special handling for array and regexp. | ||
| function getPropType(propValue) { | ||
| var propType = typeof propValue; | ||
| if (Array.isArray(propValue)) { | ||
| return 'array'; | ||
| } | ||
| if (propValue instanceof RegExp) { | ||
| // Old webkits (at least until Android 4.0) return 'function' rather than | ||
| // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ | ||
| // passes PropTypes.object. | ||
| return 'object'; | ||
| } | ||
| if (isSymbol(propType, propValue)) { | ||
| return 'symbol'; | ||
| } | ||
| return propType; | ||
| } | ||
| // This handles more types than `getPropType`. Only used for error messages. | ||
| // See `createPrimitiveTypeChecker`. | ||
| function getPreciseType(propValue) { | ||
| var propType = getPropType(propValue); | ||
| if (propType === 'object') { | ||
| if (propValue instanceof Date) { | ||
| return 'date'; | ||
| } else if (propValue instanceof RegExp) { | ||
| return 'regexp'; | ||
| } | ||
| } | ||
| return propType; | ||
| } | ||
| // Returns class name of the object, if any. | ||
| function getClassName(propValue) { | ||
| if (!propValue.constructor || !propValue.constructor.name) { | ||
| return ANONYMOUS; | ||
| } | ||
| return propValue.constructor.name; | ||
| } | ||
| ReactPropTypes.checkPropTypes = checkPropTypes; | ||
| ReactPropTypes.PropTypes = ReactPropTypes; | ||
| return ReactPropTypes; | ||
| }; |
+13
| /** | ||
| * Copyright 2013-present, Facebook, Inc. | ||
| * All rights reserved. | ||
| * | ||
| * This source code is licensed under the BSD-style license found in the | ||
| * LICENSE file in the root directory of this source tree. An additional grant | ||
| * of patent rights can be found in the PATENTS file in the same directory. | ||
| */ | ||
| var React = require('react'); | ||
| var factory = require('./factory'); | ||
| module.exports = factory(React.isValidElement); |
| /** | ||
| * Copyright 2013-present, Facebook, Inc. | ||
| * All rights reserved. | ||
| * | ||
| * This source code is licensed under the BSD-style license found in the | ||
| * LICENSE file in the root directory of this source tree. An additional grant | ||
| * of patent rights can be found in the PATENTS file in the same directory. | ||
| */ | ||
| 'use strict'; | ||
| const ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; | ||
| module.exports = ReactPropTypesSecret; |
+27
-33
| { | ||
| "name": "prop-types", | ||
| "version": "0.2.0", | ||
| "description": "PropType validation extracted from React", | ||
| "main": "lib/index.js", | ||
| "version": "15.5.0-alpha.0", | ||
| "description": "Runtime type checking for React props and similar objects.", | ||
| "main": "index.js", | ||
| "license": "BSD-3-Clause", | ||
| "files": [ | ||
| "LICENSE", | ||
| "PATENTS", | ||
| "factory.js", | ||
| "index.js", | ||
| "checkPropTypes.js", | ||
| "lib" | ||
| ], | ||
| "repository": "facebook/react", | ||
| "keywords": [ | ||
| "react" | ||
| ], | ||
| "bugs": { | ||
| "url": "https://github.com/facebook/react/issues" | ||
| }, | ||
| "homepage": "https://facebook.github.io/react/", | ||
| "dependencies": { | ||
| "fbjs": "^0.8.9" | ||
| }, | ||
| "scripts": { | ||
| "test": "karma start karma.conf.js", | ||
| "prepublish": "webpack" | ||
| "test": "jest" | ||
| }, | ||
| "author": "Aaron Ackerman <theron17@gmail.com>", | ||
| "license": "BSD", | ||
| "devDependencies": { | ||
| "babel-core": "^4.0.1", | ||
| "babel-loader": "^4.0.0", | ||
| "eslint": "^0.14.1", | ||
| "jasmine-core": "^2.1.3", | ||
| "karma": "^0.12.30", | ||
| "karma-chrome-launcher": "^0.1.7", | ||
| "karma-cli": "0.0.4", | ||
| "karma-jasmine": "^0.3.3", | ||
| "karma-phantomjs2-launcher": "^0.1.4", | ||
| "karma-webpack": "^1.3.1", | ||
| "webpack": "^1.4.15", | ||
| "webpack-dev-server": "^1.7.0" | ||
| }, | ||
| "directories": { | ||
| "test": "test" | ||
| }, | ||
| "repository": { | ||
| "type": "git", | ||
| "url": "https://github.com/aackerman/PropTypes.git" | ||
| }, | ||
| "bugs": { | ||
| "url": "https://github.com/aackerman/PropTypes/issues" | ||
| }, | ||
| "homepage": "https://github.com/aackerman/PropTypes", | ||
| "dependencies": { | ||
| "invariant": "^2.2.0" | ||
| "jest": "^19.0.2", | ||
| "react": "^15.4.2", | ||
| "react-dom": "^15.4.2" | ||
| } | ||
| } |
+3
-89
@@ -1,91 +0,5 @@ | ||
| ## PropTypes | ||
| # prop-types | ||
| Extracted from [`React.PropTypes`](http://facebook.github.io/react/docs/reusable-components.html#prop-validation). To use without a dependency on `React`. | ||
| Runtime type checking for React props and similar objects. | ||
| ### Install | ||
| ``` | ||
| npm install --save prop-types | ||
| ``` | ||
| ### API: `PropTypes.validate` | ||
| #### Example | ||
| Pass a PropType schema, a props object, and a descriptive name for warnings. In React the descriptive name would be the `displayName` of a component. | ||
| ```js | ||
| import PropTypes from 'prop-types'; | ||
| var schema = { | ||
| ham: PropTypes.string.isRequired | ||
| }; | ||
| PropTypes.validate(schema, {ham: 'delicious'}, 'Ham'); | ||
| ``` | ||
| ### API: `PropTypes.validateWithErrors` | ||
| Similar to `PropTypes.validate` but will throw errors instead of logging warnings to the console. | ||
| ### API: `PropTypes` | ||
| ```js | ||
| { | ||
| // You can declare that a prop is a specific JS primitive. By default, these | ||
| // are all optional. | ||
| optionalArray: PropTypes.array, | ||
| optionalBool: PropTypes.bool, | ||
| optionalFunc: PropTypes.func, | ||
| optionalNumber: PropTypes.number, | ||
| optionalObject: PropTypes.object, | ||
| optionalString: PropTypes.string, | ||
| // You can also declare that a prop is an instance of a class. This uses | ||
| // JS's instanceof operator. | ||
| optionalMessage: PropTypes.instanceOf(Message), | ||
| // You can ensure that your prop is limited to specific values by treating | ||
| // it as an enum. | ||
| optionalEnum: PropTypes.oneOf(['News', 'Photos']), | ||
| // An object that could be one of many types | ||
| optionalUnion: PropTypes.oneOfType([ | ||
| PropTypes.string, | ||
| PropTypes.number, | ||
| PropTypes.instanceOf(Message) | ||
| ]), | ||
| // An array of a certain type | ||
| optionalArrayOf: PropTypes.arrayOf(PropTypes.number), | ||
| // An object with property values of a certain type | ||
| optionalObjectOf: PropTypes.objectOf(PropTypes.number), | ||
| // An object taking on a particular shape | ||
| optionalObjectWithShape: PropTypes.shape({ | ||
| color: PropTypes.string, | ||
| fontSize: PropTypes.number | ||
| }), | ||
| // You can chain any of the above with `isRequired` to make sure a warning | ||
| // is shown if the prop isn't provided. | ||
| requiredFunc: PropTypes.func.isRequired, | ||
| // A value of any data type | ||
| requiredAny: PropTypes.any.isRequired, | ||
| // You can also specify a custom validator. It should return an Error | ||
| // object if the validation fails. Don't `console.warn` or throw, as this | ||
| // won't work inside `oneOfType`. | ||
| customProp: function(props, propName, descriptiveName) { | ||
| if (!/matchme/.test(props[propName])) { | ||
| return new Error('Validation failed!'); | ||
| } | ||
| } | ||
| } | ||
| ``` | ||
| ### Caveat | ||
| This is not an **exact** drop-in, validations related to React have been stripped out. `PropTypes.element` and `PropTypes.node` are not included. | ||
| Refer to the [React documentation](https://facebook.github.io/react/docs/typechecking-with-proptypes.html) for more information. |
Sorry, the diff of this file is not supported yet
| module.exports = function(config) { | ||
| config.set({ | ||
| basePath: '', | ||
| frameworks: ['jasmine'], | ||
| files: ['src/__tests__/*-test.js'], | ||
| preprocessors: { | ||
| 'src/__tests__/*-test.js': ['webpack'], | ||
| }, | ||
| reporters: ['progress'], | ||
| port: 9876, | ||
| colors: true, | ||
| logLevel: config.LOG_INFO, | ||
| autoWatch: true, | ||
| browsers: ['PhantomJS2'], | ||
| singleRun: false, | ||
| webpackMiddleware: { | ||
| noInfo: true | ||
| }, | ||
| webpack: { | ||
| module: { | ||
| loaders: [ | ||
| { test: /\.js/, loader: 'babel-loader' } | ||
| ] | ||
| } | ||
| }, | ||
| webpackPort: 1234 | ||
| }); | ||
| }; |
-509
| module.exports = | ||
| /******/ (function(modules) { // webpackBootstrap | ||
| /******/ // The module cache | ||
| /******/ var installedModules = {}; | ||
| /******/ // The require function | ||
| /******/ function __webpack_require__(moduleId) { | ||
| /******/ // Check if module is in cache | ||
| /******/ if(installedModules[moduleId]) | ||
| /******/ return installedModules[moduleId].exports; | ||
| /******/ // Create a new module (and put it into the cache) | ||
| /******/ var module = installedModules[moduleId] = { | ||
| /******/ exports: {}, | ||
| /******/ id: moduleId, | ||
| /******/ loaded: false | ||
| /******/ }; | ||
| /******/ // Execute the module function | ||
| /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); | ||
| /******/ // Flag the module as loaded | ||
| /******/ module.loaded = true; | ||
| /******/ // Return the exports of the module | ||
| /******/ return module.exports; | ||
| /******/ } | ||
| /******/ // expose the modules object (__webpack_modules__) | ||
| /******/ __webpack_require__.m = modules; | ||
| /******/ // expose the module cache | ||
| /******/ __webpack_require__.c = installedModules; | ||
| /******/ // __webpack_public_path__ | ||
| /******/ __webpack_require__.p = ""; | ||
| /******/ // Load entry module and return exports | ||
| /******/ return __webpack_require__(0); | ||
| /******/ }) | ||
| /************************************************************************/ | ||
| /******/ ([ | ||
| /* 0 */ | ||
| /***/ function(module, exports, __webpack_require__) { | ||
| "use strict"; | ||
| var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; }; | ||
| var PropTypes = _interopRequire(__webpack_require__(1)); | ||
| var validate = _interopRequire(__webpack_require__(2)); | ||
| var validateWithErrors = _interopRequire(__webpack_require__(3)); | ||
| var assign = 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; | ||
| }; | ||
| module.exports = assign({}, PropTypes, { validate: validate, validateWithErrors: validateWithErrors }); | ||
| /***/ }, | ||
| /* 1 */ | ||
| /***/ function(module, exports, __webpack_require__) { | ||
| "use strict"; | ||
| /** | ||
| * Copyright 2013-2015, Facebook, Inc. | ||
| * All rights reserved. | ||
| * | ||
| * This source code is licensed under the BSD-style license found in the | ||
| * LICENSE file in the root directory of this source tree. An additional grant | ||
| * of patent rights can be found in the PATENTS file in the same directory. | ||
| * | ||
| */ | ||
| function nullFunction() { | ||
| return null; | ||
| } | ||
| var ANONYMOUS = "<<anonymous>>"; | ||
| // Equivalent of `typeof` but with special handling for array and regexp. | ||
| function getPropType(propValue) { | ||
| var propType = typeof propValue; | ||
| if (Array.isArray(propValue)) { | ||
| return "array"; | ||
| } | ||
| if (propValue instanceof RegExp) { | ||
| // Old webkits (at least until Android 4.0) return 'function' rather than | ||
| // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ | ||
| // passes PropTypes.object. | ||
| return "object"; | ||
| } | ||
| return propType; | ||
| } | ||
| function createChainableTypeChecker(validate) { | ||
| function checkType(isRequired, props, propName, descriptiveName, location) { | ||
| descriptiveName = descriptiveName || ANONYMOUS; | ||
| if (props[propName] == null) { | ||
| var locationName = location; | ||
| if (isRequired) { | ||
| return new Error("Required " + locationName + " `" + propName + "` was not specified in " + ("`" + descriptiveName + "`.")); | ||
| } | ||
| return null; | ||
| } else { | ||
| return validate(props, propName, descriptiveName, location); | ||
| } | ||
| } | ||
| var chainedCheckType = checkType.bind(null, false); | ||
| chainedCheckType.isRequired = checkType.bind(null, true); | ||
| return chainedCheckType; | ||
| } | ||
| function createPrimitiveTypeChecker(expectedType) { | ||
| function validate(props, propName, descriptiveName, location) { | ||
| var propValue = props[propName]; | ||
| var propType = getPropType(propValue); | ||
| if (propType !== expectedType) { | ||
| var locationName = location; | ||
| // `propValue` being instance of, say, date/regexp, pass the 'object' | ||
| // check, but we can offer a more precise error message here rather than | ||
| // 'of type `object`'. | ||
| var preciseType = getPreciseType(propValue); | ||
| return new Error("Invalid " + locationName + " `" + propName + "` of type `" + preciseType + "` " + ("supplied to `" + descriptiveName + "`, expected `" + expectedType + "`.")); | ||
| } | ||
| return null; | ||
| } | ||
| return createChainableTypeChecker(validate); | ||
| } | ||
| function createAnyTypeChecker() { | ||
| return createChainableTypeChecker(nullFunction); | ||
| } | ||
| function createArrayOfTypeChecker(typeChecker) { | ||
| function validate(props, propName, descriptiveName, location) { | ||
| var propValue = props[propName]; | ||
| if (!Array.isArray(propValue)) { | ||
| var locationName = location; | ||
| var propType = getPropType(propValue); | ||
| return new Error("Invalid " + locationName + " `" + propName + "` of type " + ("`" + propType + "` supplied to `" + descriptiveName + "`, expected an array.")); | ||
| } | ||
| for (var i = 0; i < propValue.length; i++) { | ||
| var error = typeChecker(propValue, i, descriptiveName, location); | ||
| if (error instanceof Error) { | ||
| return error; | ||
| } | ||
| } | ||
| return null; | ||
| } | ||
| return createChainableTypeChecker(validate); | ||
| } | ||
| function createInstanceTypeChecker(expectedClass) { | ||
| function validate(props, propName, descriptiveName, location) { | ||
| if (!(props[propName] instanceof expectedClass)) { | ||
| var locationName = location; | ||
| var expectedClassName = expectedClass.name || ANONYMOUS; | ||
| return new Error("Invalid " + locationName + " `" + propName + "` supplied to " + ("`" + descriptiveName + "`, expected instance of `" + expectedClassName + "`.")); | ||
| } | ||
| return null; | ||
| } | ||
| return createChainableTypeChecker(validate); | ||
| } | ||
| function createEnumTypeChecker(expectedValues) { | ||
| function validate(props, propName, descriptiveName, location) { | ||
| var propValue = props[propName]; | ||
| for (var i = 0; i < expectedValues.length; i++) { | ||
| if (propValue === expectedValues[i]) { | ||
| return null; | ||
| } | ||
| } | ||
| var locationName = location; | ||
| var valuesString = JSON.stringify(expectedValues); | ||
| return new Error("Invalid " + locationName + " `" + propName + "` of value `" + propValue + "` " + ("supplied to `" + descriptiveName + "`, expected one of " + valuesString + ".")); | ||
| } | ||
| return createChainableTypeChecker(validate); | ||
| } | ||
| function createObjectOfTypeChecker(typeChecker) { | ||
| function validate(props, propName, descriptiveName, location) { | ||
| var propValue = props[propName]; | ||
| var propType = getPropType(propValue); | ||
| if (propType !== "object") { | ||
| var locationName = location; | ||
| return new Error("Invalid " + locationName + " `" + propName + "` of type " + ("`" + propType + "` supplied to `" + descriptiveName + "`, expected an object.")); | ||
| } | ||
| for (var key in propValue) { | ||
| if (propValue.hasOwnProperty(key)) { | ||
| var error = typeChecker(propValue, key, descriptiveName, location); | ||
| if (error instanceof Error) { | ||
| return error; | ||
| } | ||
| } | ||
| } | ||
| return null; | ||
| } | ||
| return createChainableTypeChecker(validate); | ||
| } | ||
| function createUnionTypeChecker(arrayOfTypeCheckers) { | ||
| function validate(props, propName, descriptiveName, location) { | ||
| for (var i = 0; i < arrayOfTypeCheckers.length; i++) { | ||
| var checker = arrayOfTypeCheckers[i]; | ||
| if (checker(props, propName, descriptiveName, location) == null) { | ||
| return null; | ||
| } | ||
| } | ||
| var locationName = location; | ||
| return new Error("Invalid " + locationName + " `" + propName + "` supplied to " + ("`" + descriptiveName + "`.")); | ||
| } | ||
| return createChainableTypeChecker(validate); | ||
| } | ||
| function createShapeTypeChecker(shapeTypes) { | ||
| function validate(props, propName, descriptiveName, location) { | ||
| var propValue = props[propName]; | ||
| var propType = getPropType(propValue); | ||
| if (propType !== "object") { | ||
| var locationName = location; | ||
| return new Error("Invalid " + locationName + " `" + propName + "` of type `" + propType + "` " + ("supplied to `" + descriptiveName + "`, expected `object`.")); | ||
| } | ||
| for (var key in shapeTypes) { | ||
| var checker = shapeTypes[key]; | ||
| if (!checker) { | ||
| continue; | ||
| } | ||
| var error = checker(propValue, key, descriptiveName, location); | ||
| if (error) { | ||
| return error; | ||
| } | ||
| } | ||
| return null; | ||
| } | ||
| return createChainableTypeChecker(validate); | ||
| } | ||
| // This handles more types than `getPropType`. Only used for error messages. | ||
| // See `createPrimitiveTypeChecker`. | ||
| function getPreciseType(propValue) { | ||
| var propType = getPropType(propValue); | ||
| if (propType === "object") { | ||
| if (propValue instanceof Date) { | ||
| return "date"; | ||
| } else if (propValue instanceof RegExp) { | ||
| return "regexp"; | ||
| } | ||
| } | ||
| return propType; | ||
| } | ||
| module.exports = { | ||
| array: createPrimitiveTypeChecker("array"), | ||
| bool: createPrimitiveTypeChecker("boolean"), | ||
| func: createPrimitiveTypeChecker("function"), | ||
| number: createPrimitiveTypeChecker("number"), | ||
| object: createPrimitiveTypeChecker("object"), | ||
| string: createPrimitiveTypeChecker("string"), | ||
| any: createAnyTypeChecker(), | ||
| arrayOf: createArrayOfTypeChecker, | ||
| instanceOf: createInstanceTypeChecker, | ||
| objectOf: createObjectOfTypeChecker, | ||
| oneOf: createEnumTypeChecker, | ||
| oneOfType: createUnionTypeChecker, | ||
| shape: createShapeTypeChecker | ||
| }; | ||
| /***/ }, | ||
| /* 2 */ | ||
| /***/ function(module, exports, __webpack_require__) { | ||
| "use strict"; | ||
| var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; }; | ||
| /** | ||
| * Copyright 2013-2015, Facebook, Inc. | ||
| * All rights reserved. | ||
| * | ||
| * This source code is licensed under the BSD-style license found in the | ||
| * LICENSE file in the root directory of this source tree. An additional grant | ||
| * of patent rights can be found in the PATENTS file in the same directory. | ||
| * | ||
| */ | ||
| var invariant = _interopRequire(__webpack_require__(5)); | ||
| var warning = _interopRequire(__webpack_require__(4)); | ||
| var loggedTypeFailures = {}; | ||
| var validate = function (propTypes, props, className) { | ||
| for (var propName in propTypes) { | ||
| if (propTypes.hasOwnProperty(propName)) { | ||
| var error; | ||
| // Prop type validation may throw. In case they do, we don't want to | ||
| // fail the render phase where it didn't fail before. So we log it. | ||
| // After these have been cleaned up, we'll let them throw. | ||
| try { | ||
| // This is intentionally an invariant that gets caught. It's the same | ||
| // behavior as without this statement except with a better message. | ||
| invariant(typeof propTypes[propName] === "function", "%s: %s type `%s` is invalid; it must be a function, usually from " + "PropTypes.", className, "attributes", propName); | ||
| error = propTypes[propName](props, propName, className, "prop"); | ||
| } catch (ex) { | ||
| error = ex; | ||
| } | ||
| if (error instanceof Error && !(error.message in loggedTypeFailures)) { | ||
| // Only monitor this failure once because there tends to be a lot of the | ||
| // same error. | ||
| loggedTypeFailures[error.message] = true; | ||
| warning(false, "Failed propType: " + error.message); | ||
| } | ||
| } | ||
| } | ||
| }; | ||
| module.exports = validate; | ||
| /***/ }, | ||
| /* 3 */ | ||
| /***/ function(module, exports, __webpack_require__) { | ||
| "use strict"; | ||
| var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; }; | ||
| /** | ||
| * Copyright 2013-2015, Facebook, Inc. | ||
| * All rights reserved. | ||
| * | ||
| * This source code is licensed under the BSD-style license found in the | ||
| * LICENSE file in the root directory of this source tree. An additional grant | ||
| * of patent rights can be found in the PATENTS file in the same directory. | ||
| * | ||
| */ | ||
| var invariant = _interopRequire(__webpack_require__(5)); | ||
| var validateWithErrors = function (propTypes, props, className) { | ||
| for (var propName in propTypes) { | ||
| if (propTypes.hasOwnProperty(propName)) { | ||
| var error; | ||
| // Prop type validation may throw. In case they do, we don't want to | ||
| // fail the render phase where it didn't fail before. So we log it. | ||
| // After these have been cleaned up, we'll let them throw. | ||
| try { | ||
| // This is intentionally an invariant that gets caught. It's the same | ||
| // behavior as without this statement except with a better message. | ||
| invariant(typeof propTypes[propName] === "function", "%s: %s type `%s` is invalid; it must be a function, usually from " + "PropTypes.", className, "attributes", propName); | ||
| error = propTypes[propName](props, propName, className, "prop"); | ||
| } catch (ex) { | ||
| error = ex; | ||
| } | ||
| // rethrow the error | ||
| if (error instanceof Error) { | ||
| throw error; | ||
| } | ||
| } | ||
| } | ||
| }; | ||
| module.exports = validateWithErrors; | ||
| /***/ }, | ||
| /* 4 */ | ||
| /***/ function(module, exports, __webpack_require__) { | ||
| "use strict"; | ||
| /** | ||
| * Copyright 2014-2015, Facebook, Inc. | ||
| * All rights reserved. | ||
| * | ||
| * This source code is licensed under the BSD-style license found in the | ||
| * LICENSE file in the root directory of this source tree. An additional grant | ||
| * of patent rights can be found in the PATENTS file in the same directory. | ||
| * | ||
| */ | ||
| var warning = function (condition, format) { | ||
| for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { | ||
| args[_key - 2] = arguments[_key]; | ||
| } | ||
| if (format === undefined) { | ||
| throw new Error("`warning(condition, format, ...args)` requires a warning " + "message argument"); | ||
| } | ||
| if (format.length < 10 || /^[s\W]*$/.test(format)) { | ||
| throw new Error("The warning format should be able to uniquely identify this " + "warning. Please, use a more descriptive format than: " + format); | ||
| } | ||
| if (!condition) { | ||
| var argIndex = 0; | ||
| var message = "Warning: " + format.replace(/%s/g, function () { | ||
| return args[argIndex++]; | ||
| }); | ||
| console.warn(message); | ||
| try { | ||
| // This error was thrown as a convenience so that you can use this stack | ||
| // to find the callsite that caused this warning to fire. | ||
| throw new Error(message); | ||
| } catch (x) {} | ||
| } | ||
| }; | ||
| module.exports = warning; | ||
| /***/ }, | ||
| /* 5 */ | ||
| /***/ function(module, exports, __webpack_require__) { | ||
| /** | ||
| * BSD License | ||
| * | ||
| * For Flux software | ||
| * | ||
| * Copyright (c) 2014, Facebook, Inc. All rights reserved. | ||
| * | ||
| * Redistribution and use in source and binary forms, with or without modification, | ||
| * are permitted provided that the following conditions are met: | ||
| * | ||
| * * Redistributions of source code must retain the above copyright notice, this | ||
| * list of conditions and the following disclaimer. | ||
| * | ||
| * * Redistributions in binary form must reproduce the above copyright notice, | ||
| * this list of conditions and the following disclaimer in the | ||
| * documentation and/or other materials provided with the distribution. | ||
| * | ||
| * * Neither the name Facebook nor the names of its contributors may be used to | ||
| * endorse or promote products derived from this software without specific | ||
| * prior written permission. | ||
| * | ||
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||
| * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
| * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
| * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR | ||
| * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
| * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | ||
| * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
| * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
| * | ||
| */ | ||
| "use strict"; | ||
| /** | ||
| * Use invariant() to assert state which your program assumes to be true. | ||
| * | ||
| * Provide sprintf-style format (only %s is supported) and arguments | ||
| * to provide information about what broke and what you were | ||
| * expecting. | ||
| * | ||
| * The invariant message will be stripped in production, but the invariant | ||
| * will remain to ensure logic does not differ in production. | ||
| */ | ||
| var invariant = function (condition, format, a, b, c, d, e, f) { | ||
| // if (process.env.NODE_ENV !== 'production') { | ||
| // if (format === undefined) { | ||
| // throw new Error('invariant requires an error message argument'); | ||
| // } | ||
| // } | ||
| if (!condition) { | ||
| var error; | ||
| if (format === undefined) { | ||
| error = new Error("Minified exception occurred; use the non-minified dev environment " + "for the full error message and additional helpful warnings."); | ||
| } else { | ||
| var args = [a, b, c, d, e, f]; | ||
| var argIndex = 0; | ||
| error = new Error("Invariant Violation: " + format.replace(/%s/g, function () { | ||
| return args[argIndex++]; | ||
| })); | ||
| } | ||
| error.framesToPop = 1; // we don't care about invariant's own frame | ||
| throw error; | ||
| } | ||
| }; | ||
| module.exports = invariant; | ||
| /***/ } | ||
| /******/ ]); |
-31
| BSD License | ||
| For React software | ||
| Copyright (c) 2013-2015, Facebook, Inc. | ||
| All rights reserved. | ||
| Redistribution and use in source and binary forms, with or without modification, | ||
| are permitted provided that the following conditions are met: | ||
| * Redistributions of source code must retain the above copyright notice, this | ||
| list of conditions and the following disclaimer. | ||
| * Redistributions in binary form must reproduce the above copyright notice, | ||
| this list of conditions and the following disclaimer in the documentation | ||
| and/or other materials provided with the distribution. | ||
| * Neither the name Facebook nor the names of its contributors may be used to | ||
| endorse or promote products derived from this software without specific | ||
| prior written permission. | ||
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||
| ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
| WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
| DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR | ||
| ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
| (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
| LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | ||
| ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
| SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| var webpack = require('webpack'); | ||
| module.exports = { | ||
| entry: "./src/index", | ||
| output: { | ||
| path: __dirname + '/lib', | ||
| filename: 'index.js', | ||
| libraryTarget: 'commonjs2' | ||
| }, | ||
| module: { | ||
| loaders: [ | ||
| { test: /\.js/, loader: 'babel-loader' } | ||
| ] | ||
| } | ||
| } |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
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
No contributors or author data
MaintenancePackage does not specify a list of contributors or an author in package.json.
Found 1 instance in 1 package
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
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
Mixed license
LicensePackage contains multiple licenses.
Found 1 instance in 1 package
3
-75%0
-100%518
9.28%22599
-3.48%6
-14.29%1
Infinity%6
-93.48%11
120%2
Infinity%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
- Removed