UNPKG

@react-native-ohos/realm

Version:

Realm by MongoDB is an offline-first mobile database: an alternative to SQLite and key-value stores

54 lines 1.9 kB
"use strict"; //////////////////////////////////////////////////////////////////////////// // // Copyright 2022 Realm Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // //////////////////////////////////////////////////////////////////////////// Object.defineProperty(exports, "__esModule", { value: true }); exports.Listeners = void 0; /** @internal */ class Listeners { options; constructor(options) { this.options = options; } /** * Mapping of registered listener callbacks onto the their token in the bindings ObjectNotifier. */ listeners = new Map(); add(callback, ...args) { if (this.listeners.has(callback)) { throw new Error("Remove callback before adding it again"); } const token = this.options.add(callback, ...args); // Store the notification token by the callback to enable later removal. this.listeners.set(callback, token); } remove(callback) { const token = this.listeners.get(callback); if (typeof token !== "undefined") { this.options.remove(token); this.listeners.delete(callback); } } removeAll() { for (const [, token] of this.listeners) { this.options.remove(token); } this.listeners.clear(); } } exports.Listeners = Listeners; //# sourceMappingURL=Listeners.js.map