UNPKG

@nova-odm/auto-marshaller

Version:

A data marshaller that converts JavaScript types into Amazon DynamoDB AttributeValues

78 lines (77 loc) 2.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BinarySet = void 0; var tslib_1 = require("tslib"); var ObjectSet_1 = require("./ObjectSet"); /** * A set of binary values represented as either ArrayBuffer objects or * ArrayBufferView objects. Equality is determined by the underlying byte * sequence and not by the identity or view window type of the provided value. */ var BinarySet = /** @class */ (function (_super) { tslib_1.__extends(BinarySet, _super); function BinarySet() { return _super !== null && _super.apply(this, arguments) || this; } BinarySet.prototype.delete = function (value) { var valueView = getBinaryView(value); var scrubbedValues = this._values.filter(function (item) { return !binaryEquals(getBinaryView(item), valueView); }); var numRemoved = this._values.length - scrubbedValues.length; this._values = scrubbedValues; return numRemoved > 0; }; /** * @inheritDoc * * Equality is determined by inspecting the bytes of the ArrayBuffer or * ArrayBufferView. * * @example On a little-endian system, the following values would be * considered equal: * * new Uint32Array([0xdeadbeef]); * (new Uint32Array([0xdeadbeef])).buffer; * new Uint16Array([0xbeef, 0xdead]); * new Uint8Array([0xef, 0xbe, 0xad, 0xde]); */ BinarySet.prototype.has = function (value) { var e_1, _a; var valueView = getBinaryView(value); try { for (var _b = tslib_1.__values(this), _c = _b.next(); !_c.done; _c = _b.next()) { var item = _c.value; if (binaryEquals(getBinaryView(item), valueView)) { return true; } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_1) throw e_1.error; } } return false; }; return BinarySet; }(ObjectSet_1.ObjectSet)); exports.BinarySet = BinarySet; function binaryEquals(a, b) { if (a.byteLength !== b.byteLength) { return false; } for (var i = 0; i < a.byteLength; i++) { if (a.getUint8(i) !== b.getUint8(i)) { return false; } } return true; } function getBinaryView(value) { return ArrayBuffer.isView(value) ? new DataView(value.buffer, value.byteOffset, value.byteLength) : new DataView(value); }