tiny-types
Version:
A tiny library that brings Tiny Types to JavaScript and TypeScript
26 lines • 1.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ObjectMatcher = void 0;
const TinyType_1 = require("../TinyType");
const PatternMatcher_1 = require("./PatternMatcher");
const rules_1 = require("./rules");
/**
* @access private
*/
class ObjectMatcher extends PatternMatcher_1.PatternMatcher {
when(pattern, transformation) {
return new ObjectMatcher(this.value, this.rules.concat(this.rule(pattern, transformation)));
}
rule(pattern, transformation) {
switch (true) {
case pattern instanceof TinyType_1.TinyType:
return new rules_1.MatchesEqualTinyType(pattern, transformation);
case typeof pattern === 'function':
return new rules_1.MatchesObjectsWithCommonPrototype(pattern, transformation);
default:
return new rules_1.MatchesIdentical(pattern, transformation);
}
}
}
exports.ObjectMatcher = ObjectMatcher;
//# sourceMappingURL=ObjectMatcher.js.map