RAHHH
This commit is contained in:
61
backend/frontend/node_modules/tcomb/lib/intersection.js
generated
vendored
Normal file
61
backend/frontend/node_modules/tcomb/lib/intersection.js
generated
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
var assert = require('./assert');
|
||||
var isTypeName = require('./isTypeName');
|
||||
var isFunction = require('./isFunction');
|
||||
var isArray = require('./isArray');
|
||||
var forbidNewOperator = require('./isIdentity');
|
||||
var is = require('./is');
|
||||
var getTypeName = require('./getTypeName');
|
||||
var isIdentity = require('./isIdentity');
|
||||
|
||||
function getDefaultName(types) {
|
||||
return types.map(getTypeName).join(' & ');
|
||||
}
|
||||
|
||||
function intersection(types, name) {
|
||||
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
assert(isArray(types) && types.every(isFunction) && types.length >= 2, function () { return 'Invalid argument types ' + assert.stringify(types) + ' supplied to intersection(types, [name]) combinator (expected an array of at least 2 types)'; });
|
||||
assert(isTypeName(name), function () { return 'Invalid argument name ' + assert.stringify(name) + ' supplied to intersection(types, [name]) combinator (expected a string)'; });
|
||||
}
|
||||
|
||||
var displayName = name || getDefaultName(types);
|
||||
var identity = types.every(isIdentity);
|
||||
|
||||
function Intersection(value, path) {
|
||||
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
if (identity) {
|
||||
forbidNewOperator(this, Intersection);
|
||||
}
|
||||
path = path || [displayName];
|
||||
assert(Intersection.is(value), function () { return 'Invalid value ' + assert.stringify(value) + ' supplied to ' + path.join('/'); });
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
Intersection.meta = {
|
||||
kind: 'intersection',
|
||||
types: types,
|
||||
name: name,
|
||||
identity: identity
|
||||
};
|
||||
|
||||
Intersection.displayName = displayName;
|
||||
|
||||
Intersection.is = function (x) {
|
||||
return types.every(function (type) {
|
||||
return is(x, type);
|
||||
});
|
||||
};
|
||||
|
||||
Intersection.update = function (instance, patch) {
|
||||
return Intersection(assert.update(instance, patch));
|
||||
};
|
||||
|
||||
return Intersection;
|
||||
}
|
||||
|
||||
intersection.getDefaultName = getDefaultName;
|
||||
module.exports = intersection;
|
||||
|
||||
Reference in New Issue
Block a user