Merge pull request #630 from greatcare/629-instanceof

Replace instanceof check with duck-typing in Filter#toBer mixin
This commit is contained in:
James Sumners 2020-07-21 17:51:55 -04:00 committed by GitHub
commit 9d69b5f56d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 10 additions and 5 deletions

View File

@ -2,14 +2,10 @@
// var assert = require('assert')
var asn1 = require('asn1')
var Protocol = require('../protocol')
/// --- Globals
var BerWriter = asn1.BerWriter
var TYPES = {
and: Protocol.FILTER_AND,
or: Protocol.FILTER_OR,
@ -38,9 +34,18 @@ function isFilter (filter) {
return false
}
function isBerWriter (ber) {
return Boolean(
ber &&
typeof (ber) === 'object' &&
typeof (ber.startSequence) === 'function' &&
typeof (ber.endSequence) === 'function'
)
}
function mixin (target) {
target.prototype.toBer = function toBer (ber) {
if (!ber || !(ber instanceof BerWriter)) { throw new TypeError('ber (BerWriter) required') }
if (isBerWriter(ber) === false) { throw new TypeError('ber (BerWriter) required') }
ber.startSequence(TYPES[this.type])
ber = this._toBer(ber)