Socket
Socket
Sign inDemoInstall

@znck/prop-types

Package Overview
Dependencies
Maintainers
1
Versions
30
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@znck/prop-types - npm Package Compare versions

Comparing version 0.4.0-alpha.3 to 0.4.0

10

CHANGELOG.md

@@ -5,2 +5,12 @@ # Change Log

<a name="0.4.0"></a>
# [0.4.0](https://github.com/znck/vue-prop-types/compare/v0.4.0-alpha.3...v0.4.0) (2019-01-19)
### Bug Fixes
* Add babel transform plugin to remove prop-types ([49ae0d5](https://github.com/znck/vue-prop-types/commit/49ae0d5))
<a name="0.4.0-alpha.3"></a>

@@ -7,0 +17,0 @@ # [0.4.0-alpha.3](https://github.com/znck/vue-prop-types/compare/v0.4.0-alpha.2...v0.4.0-alpha.3) (2019-01-19)

476

dist/prop-types.es.js
/**
* @znck/prop-types v0.4.0-alpha.3
* (c) 2019 undefined <undefined> (undefined)
* @znck/prop-types v0.4.0
* (c) 2019 Rahul Kadyan <hi@znck.me> (https://znck.me)
* @license MIT
*/
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function (obj) {
return typeof obj;
};
} else {
_typeof = function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _slicedToArray(arr, i) {
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
}
function _toConsumableArray(arr) {
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
}
function _arrayWithoutHoles(arr) {
if (Array.isArray(arr)) {
for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
return arr2;
}
}
function _arrayWithHoles(arr) {
if (Array.isArray(arr)) return arr;
}
function _iterableToArray(iter) {
if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
}
function _iterableToArrayLimit(arr, i) {
var _arr = [];
var _n = true;
var _d = false;
var _e = undefined;
try {
for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
_arr.push(_s.value);
if (i && _arr.length === i) break;
}
} catch (err) {
_d = true;
_e = err;
} finally {
try {
if (!_n && _i["return"] != null) _i["return"]();
} finally {
if (_d) throw _e;
}
}
return _arr;
}
function _nonIterableSpread() {
throw new TypeError("Invalid attempt to spread non-iterable instance");
}
function _nonIterableRest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance");
}
var TYPES = {
const TYPES = {
string: String,

@@ -109,20 +15,16 @@ number: Number,

};
var typeValues = Object.values(TYPES);
const typeValues = () => Object.values(TYPES);
function runValidation(validator, value) {
var strict = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
var types = ensureArray(validator.type);
return (types.length === 0 || types.some(function (type) {
return isType(type, value, strict || validator.required !== true);
})) && (typeof validator.validator !== 'function' || validator.validator(value));
let strict = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
const types = ensureArray(validator.type);
return (types.length === 0 || types.some(type => isType(type, value, strict || validator.required !== true))) && (typeof validator.validator !== 'function' || validator.validator(value));
}
function isType(type, item) {
var nullAllowed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
let nullAllowed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
if (nullAllowed && (item === null || item === undefined)) return true;
if (Array === type && Array.isArray(item)) return true;
return Object.entries(TYPES).some(function (_ref) {
var _ref2 = _slicedToArray(_ref, 2),
key = _ref2[0],
TYPE = _ref2[1];
return TYPE === type && _typeof(item) === key;
return Object.entries(TYPES).some((_ref) => {
let key = _ref[0],
TYPE = _ref[1];
return TYPE === type && typeof item === key;
} // eslint-disable-line valid-typeof

@@ -140,238 +42,188 @@ );

var PropTypes =
/*#__PURE__*/
function () {
class PropTypes {
/** @private */
function PropTypes(type) {
_classCallCheck(this, PropTypes);
constructor(type) {
this.type = type;
}
_createClass(PropTypes, [{
key: "value",
value: function value(_value) {
this.default = _value && _typeof(_value) === 'object' ? function () {
return _value;
} : _value;
return this;
}
}, {
key: "validate",
value: function validate(cb) {
var _this = this;
get type() {
return this._type;
}
if (!(typeof cb === 'function')) return this;
var validator = this.validator;
set type(value) {
this._type = ensureArray(value);
}
this.validator = function () {
try {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
get isRequired() {
this.required = true;
return this;
}
return (!(typeof validator === 'function') || validator.call(_this, args)) && cb.apply(_this, args);
} catch (err) {
return false;
}
};
value(value) {
this.default = value && typeof value === 'object' ? () => value : value;
return this;
}
return this;
}
/** @private */
validate(cb) {
var _this = this;
}, {
key: "type",
get: function get() {
return this._type;
},
set: function set(value) {
this._type = ensureArray(value);
}
}, {
key: "isRequired",
get: function get() {
this.required = true;
return this;
}
}], [{
key: "create",
value: function create(type) {
return new PropTypes(type);
}
/** @private */
if (!(typeof cb === 'function')) return this;
const validator = this.validator;
}, {
key: "clone",
value: function clone(prop) {
var type = this.create(prop.type);
type.validate(prop.validator);
return type;
}
}, {
key: "instanceOf",
value: function instanceOf(type) {
return this.create(type);
}
}, {
key: "oneOf",
value: function oneOf() {
for (var _len2 = arguments.length, values = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
values[_key2] = arguments[_key2];
this.validator = function () {
try {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return (!(typeof validator === 'function') || validator.call(_this, args)) && cb.apply(_this, args);
} catch (err) {
return false;
}
};
values = values.flat();
ensureOne(values);
return this;
}
/** @private */
var types = _toConsumableArray(new Set(values.map(function (value) {
return TYPES[_typeof(value)] || Object;
})));
var prop = this.create(types);
var setOfValues = new Set(values);
static create(type) {
return new PropTypes(type);
}
/** @private */
prop.validator = function (value) {
return setOfValues.has(value);
};
return prop;
static clone(prop) {
const type = this.create(prop.type);
type.validate(prop.validator);
return type;
}
static get string() {
return this.create(String);
}
static get number() {
return this.create(Number);
}
static get bool() {
return this.create(Boolean);
}
static get array() {
return this.create(Array);
}
static get object() {
return this.create(Object);
}
static get func() {
return this.create(Function);
}
static get symbol() {
return this.create(Symbol);
}
static get any() {
return this.create();
}
static instanceOf(type) {
return this.create(type);
}
static oneOf() {
for (var _len2 = arguments.length, values = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
values[_key2] = arguments[_key2];
}
}, {
key: "oneOfType",
value: function oneOfType() {
for (var _len3 = arguments.length, types = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
types[_key3] = arguments[_key3];
}
types = types.flat().map(normalizeType);
ensureOne(types);
var prop = this.create(types.map(function (type) {
return ensureArray(type.type);
}).flat());
values = values.flat();
ensureOne(values);
const types = [...new Set(values.map(value => TYPES[typeof value] || Object))];
const prop = this.create(types);
const setOfValues = new Set(values);
prop.validator = function (value) {
return types.some(function (validator) {
return runValidation(validator, value);
});
};
prop.validator = value => {
return setOfValues.has(value);
};
return prop;
return prop;
}
static oneOfType() {
for (var _len3 = arguments.length, types = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
types[_key3] = arguments[_key3];
}
}, {
key: "arrayOf",
value: function arrayOf() {
for (var _len4 = arguments.length, expected = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
expected[_key4] = arguments[_key4];
}
return this.collectionOf(Array, expected);
types = types.flat().map(normalizeType);
ensureOne(types);
const prop = this.create(types.map(type => ensureArray(type.type)).flat());
prop.validator = value => types.some(validator => runValidation(validator, value));
return prop;
}
static arrayOf() {
for (var _len4 = arguments.length, expected = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
expected[_key4] = arguments[_key4];
}
}, {
key: "objectOf",
value: function objectOf() {
for (var _len5 = arguments.length, expected = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
expected[_key5] = arguments[_key5];
}
return this.collectionOf(Object, expected);
return this.collectionOf(Array, expected);
}
static objectOf() {
for (var _len5 = arguments.length, expected = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
expected[_key5] = arguments[_key5];
}
/** @private */
}, {
key: "collectionOf",
value: function collectionOf(type, expected) {
var prop = this.create(type);
var types = expected.flat().map(normalizeType);
return this.collectionOf(Object, expected);
}
/** @private */
prop.validator = function (value) {
return Object.values(value).every(function (item) {
return types.some(function (type) {
return runValidation(type, item);
});
});
};
return prop;
}
}, {
key: "shape",
value: function shape(_shape) {
var prop = this.create(Object);
var shapeType = {};
Object.entries(_shape).forEach(function (_ref) {
var _ref2 = _slicedToArray(_ref, 2),
key = _ref2[0],
value = _ref2[1];
static collectionOf(type, expected) {
const prop = this.create(type);
const types = expected.flat().map(normalizeType);
shapeType[key] = normalizeType(value);
prop.validator = value => Object.values(value).every(item => types.some(type => runValidation(type, item)));
return prop;
}
static shape(shape) {
const prop = this.create(Object);
const shapeType = {};
Object.entries(shape).forEach((_ref) => {
let key = _ref[0],
value = _ref[1];
shapeType[key] = normalizeType(value);
});
prop.validator = value => {
if (!(value && typeof value === 'object')) return prop.required !== true;
return Object.entries(shapeType).every((_ref2) => {
let key = _ref2[0],
type = _ref2[1];
return runValidation(type, value[key]);
});
};
prop.validator = function (value) {
if (!(value && _typeof(value) === 'object')) return prop.required !== true;
return Object.entries(shapeType).every(function (_ref3) {
var _ref4 = _slicedToArray(_ref3, 2),
key = _ref4[0],
type = _ref4[1];
return prop;
}
return runValidation(type, value[key]);
});
};
return prop;
}
}, {
key: "validate",
value: function validate(fn) {
try {
if (fn() === false) {
console.error('There are some failing validation.');
}
} catch (e) {
console.error(e);
static validate(fn) {
try {
if (fn() === false) {
console.error('There are some failing validation.');
}
} catch (e) {
console.error(e);
}
}, {
key: "string",
get: function get() {
return this.create(String);
}
}, {
key: "number",
get: function get() {
return this.create(Number);
}
}, {
key: "bool",
get: function get() {
return this.create(Boolean);
}
}, {
key: "array",
get: function get() {
return this.create(Array);
}
}, {
key: "object",
get: function get() {
return this.create(Object);
}
}, {
key: "func",
get: function get() {
return this.create(Function);
}
}, {
key: "symbol",
get: function get() {
return this.create(Symbol);
}
}, {
key: "any",
get: function get() {
return this.create();
}
}]);
}
return PropTypes;
}();
}

@@ -381,3 +233,3 @@ function normalizeType(type) {

if (type in TYPES) return PropTypes.create(TYPES[type]);
if (typeValues.includes(type)) return PropTypes.create(type);
if (typeValues().includes(type)) return PropTypes.create(type);
if (typeof type === 'function') return {

@@ -384,0 +236,0 @@ validator: type,

/**
* @znck/prop-types v0.4.0-alpha.3
* (c) 2019 undefined <undefined> (undefined)
* @znck/prop-types v0.4.0
* (c) 2019 Rahul Kadyan <hi@znck.me> (https://znck.me)
* @license MIT

@@ -8,97 +8,3 @@ */

function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function (obj) {
return typeof obj;
};
} else {
_typeof = function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _slicedToArray(arr, i) {
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
}
function _toConsumableArray(arr) {
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
}
function _arrayWithoutHoles(arr) {
if (Array.isArray(arr)) {
for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
return arr2;
}
}
function _arrayWithHoles(arr) {
if (Array.isArray(arr)) return arr;
}
function _iterableToArray(iter) {
if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
}
function _iterableToArrayLimit(arr, i) {
var _arr = [];
var _n = true;
var _d = false;
var _e = undefined;
try {
for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
_arr.push(_s.value);
if (i && _arr.length === i) break;
}
} catch (err) {
_d = true;
_e = err;
} finally {
try {
if (!_n && _i["return"] != null) _i["return"]();
} finally {
if (_d) throw _e;
}
}
return _arr;
}
function _nonIterableSpread() {
throw new TypeError("Invalid attempt to spread non-iterable instance");
}
function _nonIterableRest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance");
}
var TYPES = {
const TYPES = {
string: String,

@@ -112,20 +18,16 @@ number: Number,

};
var typeValues = Object.values(TYPES);
const typeValues = () => Object.values(TYPES);
function runValidation(validator, value) {
var strict = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
var types = ensureArray(validator.type);
return (types.length === 0 || types.some(function (type) {
return isType(type, value, strict || validator.required !== true);
})) && (typeof validator.validator !== 'function' || validator.validator(value));
let strict = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
const types = ensureArray(validator.type);
return (types.length === 0 || types.some(type => isType(type, value, strict || validator.required !== true))) && (typeof validator.validator !== 'function' || validator.validator(value));
}
function isType(type, item) {
var nullAllowed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
let nullAllowed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
if (nullAllowed && (item === null || item === undefined)) return true;
if (Array === type && Array.isArray(item)) return true;
return Object.entries(TYPES).some(function (_ref) {
var _ref2 = _slicedToArray(_ref, 2),
key = _ref2[0],
TYPE = _ref2[1];
return TYPE === type && _typeof(item) === key;
return Object.entries(TYPES).some((_ref) => {
let key = _ref[0],
TYPE = _ref[1];
return TYPE === type && typeof item === key;
} // eslint-disable-line valid-typeof

@@ -143,238 +45,188 @@ );

var PropTypes =
/*#__PURE__*/
function () {
class PropTypes {
/** @private */
function PropTypes(type) {
_classCallCheck(this, PropTypes);
constructor(type) {
this.type = type;
}
_createClass(PropTypes, [{
key: "value",
value: function value(_value) {
this.default = _value && _typeof(_value) === 'object' ? function () {
return _value;
} : _value;
return this;
}
}, {
key: "validate",
value: function validate(cb) {
var _this = this;
get type() {
return this._type;
}
if (!(typeof cb === 'function')) return this;
var validator = this.validator;
set type(value) {
this._type = ensureArray(value);
}
this.validator = function () {
try {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
get isRequired() {
this.required = true;
return this;
}
return (!(typeof validator === 'function') || validator.call(_this, args)) && cb.apply(_this, args);
} catch (err) {
return false;
}
};
value(value) {
this.default = value && typeof value === 'object' ? () => value : value;
return this;
}
return this;
}
/** @private */
validate(cb) {
var _this = this;
}, {
key: "type",
get: function get() {
return this._type;
},
set: function set(value) {
this._type = ensureArray(value);
}
}, {
key: "isRequired",
get: function get() {
this.required = true;
return this;
}
}], [{
key: "create",
value: function create(type) {
return new PropTypes(type);
}
/** @private */
if (!(typeof cb === 'function')) return this;
const validator = this.validator;
}, {
key: "clone",
value: function clone(prop) {
var type = this.create(prop.type);
type.validate(prop.validator);
return type;
}
}, {
key: "instanceOf",
value: function instanceOf(type) {
return this.create(type);
}
}, {
key: "oneOf",
value: function oneOf() {
for (var _len2 = arguments.length, values = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
values[_key2] = arguments[_key2];
this.validator = function () {
try {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return (!(typeof validator === 'function') || validator.call(_this, args)) && cb.apply(_this, args);
} catch (err) {
return false;
}
};
values = values.flat();
ensureOne(values);
return this;
}
/** @private */
var types = _toConsumableArray(new Set(values.map(function (value) {
return TYPES[_typeof(value)] || Object;
})));
var prop = this.create(types);
var setOfValues = new Set(values);
static create(type) {
return new PropTypes(type);
}
/** @private */
prop.validator = function (value) {
return setOfValues.has(value);
};
return prop;
static clone(prop) {
const type = this.create(prop.type);
type.validate(prop.validator);
return type;
}
static get string() {
return this.create(String);
}
static get number() {
return this.create(Number);
}
static get bool() {
return this.create(Boolean);
}
static get array() {
return this.create(Array);
}
static get object() {
return this.create(Object);
}
static get func() {
return this.create(Function);
}
static get symbol() {
return this.create(Symbol);
}
static get any() {
return this.create();
}
static instanceOf(type) {
return this.create(type);
}
static oneOf() {
for (var _len2 = arguments.length, values = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
values[_key2] = arguments[_key2];
}
}, {
key: "oneOfType",
value: function oneOfType() {
for (var _len3 = arguments.length, types = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
types[_key3] = arguments[_key3];
}
types = types.flat().map(normalizeType);
ensureOne(types);
var prop = this.create(types.map(function (type) {
return ensureArray(type.type);
}).flat());
values = values.flat();
ensureOne(values);
const types = [...new Set(values.map(value => TYPES[typeof value] || Object))];
const prop = this.create(types);
const setOfValues = new Set(values);
prop.validator = function (value) {
return types.some(function (validator) {
return runValidation(validator, value);
});
};
prop.validator = value => {
return setOfValues.has(value);
};
return prop;
return prop;
}
static oneOfType() {
for (var _len3 = arguments.length, types = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
types[_key3] = arguments[_key3];
}
}, {
key: "arrayOf",
value: function arrayOf() {
for (var _len4 = arguments.length, expected = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
expected[_key4] = arguments[_key4];
}
return this.collectionOf(Array, expected);
types = types.flat().map(normalizeType);
ensureOne(types);
const prop = this.create(types.map(type => ensureArray(type.type)).flat());
prop.validator = value => types.some(validator => runValidation(validator, value));
return prop;
}
static arrayOf() {
for (var _len4 = arguments.length, expected = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
expected[_key4] = arguments[_key4];
}
}, {
key: "objectOf",
value: function objectOf() {
for (var _len5 = arguments.length, expected = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
expected[_key5] = arguments[_key5];
}
return this.collectionOf(Object, expected);
return this.collectionOf(Array, expected);
}
static objectOf() {
for (var _len5 = arguments.length, expected = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
expected[_key5] = arguments[_key5];
}
/** @private */
}, {
key: "collectionOf",
value: function collectionOf(type, expected) {
var prop = this.create(type);
var types = expected.flat().map(normalizeType);
return this.collectionOf(Object, expected);
}
/** @private */
prop.validator = function (value) {
return Object.values(value).every(function (item) {
return types.some(function (type) {
return runValidation(type, item);
});
});
};
return prop;
}
}, {
key: "shape",
value: function shape(_shape) {
var prop = this.create(Object);
var shapeType = {};
Object.entries(_shape).forEach(function (_ref) {
var _ref2 = _slicedToArray(_ref, 2),
key = _ref2[0],
value = _ref2[1];
static collectionOf(type, expected) {
const prop = this.create(type);
const types = expected.flat().map(normalizeType);
shapeType[key] = normalizeType(value);
prop.validator = value => Object.values(value).every(item => types.some(type => runValidation(type, item)));
return prop;
}
static shape(shape) {
const prop = this.create(Object);
const shapeType = {};
Object.entries(shape).forEach((_ref) => {
let key = _ref[0],
value = _ref[1];
shapeType[key] = normalizeType(value);
});
prop.validator = value => {
if (!(value && typeof value === 'object')) return prop.required !== true;
return Object.entries(shapeType).every((_ref2) => {
let key = _ref2[0],
type = _ref2[1];
return runValidation(type, value[key]);
});
};
prop.validator = function (value) {
if (!(value && _typeof(value) === 'object')) return prop.required !== true;
return Object.entries(shapeType).every(function (_ref3) {
var _ref4 = _slicedToArray(_ref3, 2),
key = _ref4[0],
type = _ref4[1];
return prop;
}
return runValidation(type, value[key]);
});
};
return prop;
}
}, {
key: "validate",
value: function validate(fn) {
try {
if (fn() === false) {
console.error('There are some failing validation.');
}
} catch (e) {
console.error(e);
static validate(fn) {
try {
if (fn() === false) {
console.error('There are some failing validation.');
}
} catch (e) {
console.error(e);
}
}, {
key: "string",
get: function get() {
return this.create(String);
}
}, {
key: "number",
get: function get() {
return this.create(Number);
}
}, {
key: "bool",
get: function get() {
return this.create(Boolean);
}
}, {
key: "array",
get: function get() {
return this.create(Array);
}
}, {
key: "object",
get: function get() {
return this.create(Object);
}
}, {
key: "func",
get: function get() {
return this.create(Function);
}
}, {
key: "symbol",
get: function get() {
return this.create(Symbol);
}
}, {
key: "any",
get: function get() {
return this.create();
}
}]);
}
return PropTypes;
}();
}

@@ -384,3 +236,3 @@ function normalizeType(type) {

if (type in TYPES) return PropTypes.create(TYPES[type]);
if (typeValues.includes(type)) return PropTypes.create(type);
if (typeValues().includes(type)) return PropTypes.create(type);
if (typeof type === 'function') return {

@@ -387,0 +239,0 @@ validator: type,

{
"name": "@znck/prop-types",
"version": "0.4.0-alpha.3",
"version": "0.4.0",
"description": "Fluent prop validation for Vue",

@@ -52,3 +52,4 @@ "main": "dist/prop-types.js",

"vue": "2.*"
}
},
"sideEffects": false
}

@@ -19,3 +19,4 @@ <div class="text-xs-center" align="center" style="margin: 20px">

> It uses `process.env.NODE_ENV` to detect production build.
> It uses `process.env.NODE_ENV !== 'production'` to detect production build.
> Use `rollup-plugin-replace` for rollup and `DefinePlugin` for webpack.

@@ -37,2 +38,11 @@ ## Usage

```js
// babel.config.js or .babelrc.js
...
plugins: [
'@znck/prop-types/replace'
]
...
```
Here is an example of using PropTypes with a Vue component, which also

@@ -39,0 +49,0 @@ documents the different validators provided:

/**
* @znck/prop-types v0.4.0-alpha.3
* (c) 2019 undefined <undefined> (undefined)
* @znck/prop-types v0.4.0
* (c) 2019 Rahul Kadyan <hi@znck.me> (https://znck.me)
* @license MIT

@@ -8,72 +8,46 @@ */

function _taggedTemplateLiteral(strings, raw) {
if (!raw) {
raw = strings.slice(0);
}
return Object.freeze(Object.defineProperties(strings, {
raw: {
value: Object.freeze(raw)
}
}));
}
function _templateObject2() {
var data = _taggedTemplateLiteral(["if (process.env.NODE_ENV !== 'production') { ", " }"]);
_templateObject2 = function _templateObject2() {
return data;
};
return data;
}
function _templateObject() {
var data = _taggedTemplateLiteral(["process.env.NODE_ENV !== 'production' ? ", " : ", ""]);
_templateObject = function _templateObject() {
return data;
};
return data;
}
function remove (babel) {
var t = babel.types;
var name = 'PropTypes';
var hasPropTypes = false;
var newProps = t.objectExpression([]);
var oldProps;
const t = babel.types;
let name = 'PropTypes';
let hasPropTypes = false;
let newProps = t.objectExpression([]);
let oldProps;
return {
name: '@znck/prop-types/remove',
visitor: {
ImportDeclaration: function ImportDeclaration(path) {
ImportDeclaration(path) {
if (path.node.source.value === '@znck/prop-types') {
hasPropTypes = true;
name = path.node.specifiers.find(function (s) {
return s.type === 'ImportDefaultSpecifier';
}).local.name;
name = path.node.specifiers.find(s => s.type === 'ImportDefaultSpecifier').local.name;
}
},
Identifier: function Identifier(path) {
Identifier(path) {
if (!hasPropTypes) return;
if (!path.isIdentifier({
name: name
name
})) return;
if (path.node._processed) return;
path.node._processed = true;
var prop = path.findParent(function (path) {
return path.isObjectProperty();
});
let prop = path.findParent(path => path.isObjectProperty());
if (prop) {
if (oldProps) {
prop.skip();
path.stop();
return;
}
const props = prop.parentPath;
var info = {};
if (props && props.isObjectExpression()) {
const api = props.parentPath;
if (api && api.isObjectProperty() && api.get('key').isIdentifier({
name: 'props'
})) {
// continue
prop = prop;
} else prop = null;
} else prop = null;
}
if (prop) {
const info = {};
prop.get('value').traverse({
Identifier: function Identifier(path) {
Identifier(path) {
if (path.isIdentifier({

@@ -86,17 +60,19 @@ name: 'boolean'

})) {
var call = path.findParent(function (path) {
return path.isCallExpression();
});
const call = path.findParent(path => path.isCallExpression());
info.default = call.get('arguments.0');
}
},
FunctionExpression: function FunctionExpression() {
FunctionExpression() {
path.skip();
},
ArrayExpression: function ArrayExpression(path) {
ArrayExpression(path) {
path.skip();
},
ObjectExpression: function ObjectExpression(path) {
ObjectExpression(path) {
path.skip();
}
});

@@ -123,10 +99,6 @@

if (prop.container.length === newProps.properties.length) {
oldProps = prop.findParent(function (path) {
return path.isObjectExpression();
});
oldProps = prop.findParent(path => path.isObjectExpression());
if (newProps.properties.every(function (prop) {
return t.isObjectProperty(prop) && t.isObjectExpression(prop.value) && (!prop.value.properties || !prop.value.properties.length);
})) {
var properties = newProps.properties.map(function (prop) {
if (newProps.properties.every(prop => t.isObjectProperty(prop) && t.isObjectExpression(prop.value) && (!prop.value.properties || !prop.value.properties.length))) {
const properties = newProps.properties.map(prop => {
if (prop.computed) return prop;else return t.stringLiteral(prop.key.name);

@@ -137,11 +109,10 @@ });

oldProps.replaceWith(babel.template.ast(_templateObject(), oldProps.node, newProps));
const node = babel.template.ast`process.env.NODE_ENV !== 'production' ? ${oldProps.node} : ${newProps}`;
oldProps.replaceWith(node);
}
} else {
var statement = path.findParent(function (path) {
return path.isExpressionStatement();
});
const statement = path.findParent(path => path.isExpressionStatement());
if (statement) {
var node = babel.template.ast(_templateObject2(), statement.node);
const node = babel.template.ast`if (process.env.NODE_ENV !== 'production') { ${statement.node} }`;

@@ -154,2 +125,3 @@ if (statement.parentPath.isProgram()) {

}
}

@@ -156,0 +128,0 @@ };

@@ -11,4 +11,4 @@ export const TYPES = {

export const typeNames = Object.keys(TYPES)
export const typeValues = Object.values(TYPES)
export const typeNames = () => Object.keys(TYPES)
export const typeValues = () => Object.values(TYPES)

@@ -33,3 +33,3 @@ export function runValidation(validator, value, strict = false) {

return Object.entries(TYPES).some(
([key, TYPE]) => TYPE === type && typeof item === key // eslint-disable-line valid-typeof
({ 0: key, 1: TYPE }) => TYPE === type && typeof item === key // eslint-disable-line valid-typeof
)

@@ -36,0 +36,0 @@ }

@@ -160,3 +160,3 @@ import {

Object.entries(shape).forEach(([key, value]) => {
Object.entries(shape).forEach(({0: key, 1: value}) => {
shapeType[key] = normalizeType(value)

@@ -168,3 +168,3 @@ })

return Object.entries(shapeType).every(([key, type]) =>
return Object.entries(shapeType).every(({0: key, 1: type}) =>
runValidation(type, value[key])

@@ -193,3 +193,3 @@ )

if (typeValues.includes(type)) return PropTypes.create(type)
if (typeValues().includes(type)) return PropTypes.create(type)

@@ -196,0 +196,0 @@ if (typeof type === 'function') return { validator: type, type: [] }

@@ -27,11 +27,20 @@ export default function(babel) {

const prop = path.findParent(path => path.isObjectProperty())
let prop = path.findParent(path => path.isObjectProperty())
if (prop) {
if (oldProps) {
prop.skip()
path.stop()
return
}
const props = prop.parentPath
if (props && props.isObjectExpression()) {
const api = props.parentPath
if (
api &&
api.isObjectProperty() &&
api.get('key').isIdentifier({ name: 'props' })
) {
// continue
prop = prop
} else prop = null
} else prop = null
}
if (prop) {
const info = {}

@@ -131,7 +140,8 @@

oldProps.replaceWith(
babel.template.ast`process.env.NODE_ENV !== 'production' ? ${
oldProps.node
} : ${newProps}`
)
const node = babel.template
.ast`process.env.NODE_ENV !== 'production' ? ${
oldProps.node
} : ${newProps}`
oldProps.replaceWith(node)
}

@@ -138,0 +148,0 @@ } else {

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc