@hocuspocus/extension-redis 2.13.5 → 3.0.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hocuspocus-redis.cjs +33131 -21
- package/dist/hocuspocus-redis.cjs.map +1 -1
- package/dist/hocuspocus-redis.esm.js +33122 -5
- package/dist/hocuspocus-redis.esm.js.map +1 -1
- package/dist/packages/common/src/auth.d.ts +1 -1
- package/dist/packages/extension-database/src/Database.d.ts +1 -1
- package/dist/packages/extension-logger/src/Logger.d.ts +1 -1
- package/dist/packages/extension-redis/src/Redis.d.ts +4 -3
- package/dist/packages/extension-sqlite/src/SQLite.d.ts +2 -1
- package/dist/packages/extension-throttle/src/index.d.ts +2 -3
- package/dist/packages/extension-webhook/src/index.d.ts +3 -4
- package/dist/packages/provider/src/HocuspocusProvider.d.ts +4 -13
- package/dist/packages/provider/src/HocuspocusProviderWebsocket.d.ts +5 -5
- package/dist/packages/provider/src/IncomingMessage.d.ts +3 -3
- package/dist/packages/provider/src/MessageReceiver.d.ts +2 -2
- package/dist/packages/provider/src/MessageSender.d.ts +2 -2
- package/dist/packages/provider/src/OutgoingMessage.d.ts +2 -2
- package/dist/packages/provider/src/OutgoingMessages/AuthenticationMessage.d.ts +2 -1
- package/dist/packages/provider/src/OutgoingMessages/AwarenessMessage.d.ts +2 -1
- package/dist/packages/provider/src/OutgoingMessages/CloseMessage.d.ts +2 -1
- package/dist/packages/provider/src/OutgoingMessages/QueryAwarenessMessage.d.ts +2 -1
- package/dist/packages/provider/src/OutgoingMessages/StatelessMessage.d.ts +2 -1
- package/dist/packages/provider/src/OutgoingMessages/SyncStepOneMessage.d.ts +2 -1
- package/dist/packages/provider/src/OutgoingMessages/SyncStepTwoMessage.d.ts +2 -1
- package/dist/packages/provider/src/OutgoingMessages/UpdateMessage.d.ts +2 -1
- package/dist/packages/provider/src/TiptapCollabProvider.d.ts +2 -1
- package/dist/packages/provider/src/TiptapCollabProviderWebsocket.d.ts +2 -1
- package/dist/packages/provider/src/types.d.ts +12 -12
- package/dist/packages/server/src/ClientConnection.d.ts +6 -7
- package/dist/packages/server/src/Connection.d.ts +7 -9
- package/dist/packages/server/src/DirectConnection.d.ts +1 -1
- package/dist/packages/server/src/Document.d.ts +5 -5
- package/dist/packages/server/src/Hocuspocus.d.ts +6 -27
- package/dist/packages/server/src/IncomingMessage.d.ts +3 -3
- package/dist/packages/server/src/MessageReceiver.d.ts +5 -5
- package/dist/packages/server/src/OutgoingMessage.d.ts +3 -3
- package/dist/packages/server/src/Server.d.ts +22 -3
- package/dist/packages/server/src/index.d.ts +1 -0
- package/dist/packages/server/src/types.d.ts +7 -24
- package/dist/packages/server/src/util/getParameters.d.ts +1 -3
- package/dist/packages/transformer/src/Prosemirror.d.ts +1 -1
- package/dist/packages/transformer/src/Tiptap.d.ts +3 -3
- package/dist/packages/transformer/src/types.d.ts +1 -1
- package/dist/tests/utils/newHocuspocus.d.ts +2 -2
- package/dist/tests/utils/newHocuspocusProvider.d.ts +2 -2
- package/dist/tests/utils/newHocuspocusProviderWebsocket.d.ts +4 -3
- package/dist/tests/utils/retryableAssertion.d.ts +1 -1
- package/package.json +2 -2
- package/src/Redis.ts +8 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hocuspocus-redis.cjs","sources":["../src/Redis.ts"],"sourcesContent":["import RedisClient, { ClusterNode, ClusterOptions, RedisOptions } from 'ioredis'\nimport Redlock from 'redlock'\nimport { v4 as uuid } from 'uuid'\nimport {\n IncomingMessage,\n OutgoingMessage,\n Document,\n Extension,\n afterLoadDocumentPayload,\n afterStoreDocumentPayload,\n onDisconnectPayload,\n onStoreDocumentPayload,\n onAwarenessUpdatePayload,\n onChangePayload,\n MessageReceiver,\n Debugger,\n onConfigurePayload,\n beforeBroadcastStatelessPayload, Hocuspocus,\n} from '@hocuspocus/server'\n\nexport type RedisInstance = RedisClient.Cluster | RedisClient.Redis\n\nexport interface Configuration {\n /**\n * Redis port\n */\n port: number,\n /**\n * Redis host\n */\n host: string,\n /**\n * Redis Cluster\n */\n nodes?: ClusterNode[],\n /**\n * Duplicate from an existed Redis instance\n */\n redis?: RedisInstance,\n /**\n * Redis instance creator\n */\n createClient?: () => RedisInstance,\n /**\n * Options passed directly to Redis constructor\n *\n * https://github.com/luin/ioredis/blob/master/API.md#new-redisport-host-options\n */\n options?: ClusterOptions | RedisOptions,\n /**\n * An unique instance name, required to filter messages in Redis.\n * If none is provided an unique id is generated.\n */\n identifier: string,\n /**\n * Namespace for Redis keys, if none is provided 'hocuspocus' is used\n */\n prefix: string,\n /**\n * The maximum time for the Redis lock in ms (in case it can’t be released).\n */\n lockTimeout: number,\n /**\n * A delay before onDisconnect is executed. This allows last minute updates'\n * sync messages to be received by the subscription before it's closed.\n */\n disconnectDelay: number,\n}\n\nexport class Redis implements Extension {\n /**\n * Make sure to give that extension a higher priority, so\n * the `onStoreDocument` hook is able to intercept the chain,\n * before documents are stored to the database.\n */\n priority = 1000\n\n configuration: Configuration = {\n port: 6379,\n host: '127.0.0.1',\n prefix: 'hocuspocus',\n identifier: `host-${uuid()}`,\n lockTimeout: 1000,\n disconnectDelay: 1000,\n }\n\n redisTransactionOrigin = '__hocuspocus__redis__origin__'\n\n pub: RedisInstance\n\n sub: RedisInstance\n\n instance!: Hocuspocus\n\n redlock: Redlock\n\n locks = new Map<string, Redlock.Lock>()\n\n logger: Debugger\n\n messagePrefix: Buffer\n\n public constructor(configuration: Partial<Configuration>) {\n this.configuration = {\n ...this.configuration,\n ...configuration,\n }\n\n // We’ll replace that in the onConfigure hook with the global instance.\n this.logger = new Debugger()\n\n // Create Redis instance\n const {\n port,\n host,\n options,\n nodes,\n redis,\n createClient,\n } = this.configuration\n\n if (typeof createClient === 'function') {\n this.pub = createClient()\n this.sub = createClient()\n } else if (redis) {\n this.pub = redis.duplicate()\n this.sub = redis.duplicate()\n } else if (nodes && nodes.length > 0) {\n this.pub = new RedisClient.Cluster(nodes, options)\n this.sub = new RedisClient.Cluster(nodes, options)\n } else {\n this.pub = new RedisClient(port, host, options)\n this.sub = new RedisClient(port, host, options)\n }\n this.sub.on('messageBuffer', this.handleIncomingMessage)\n\n this.redlock = new Redlock([this.pub], {\n retryCount: 0,\n })\n\n const identifierBuffer = Buffer.from(this.configuration.identifier, 'utf-8')\n this.messagePrefix = Buffer.concat([Buffer.from([identifierBuffer.length]), identifierBuffer])\n }\n\n async onConfigure({ instance }: onConfigurePayload) {\n this.logger = instance.debugger\n this.instance = instance\n }\n\n private getKey(documentName: string) {\n return `${this.configuration.prefix}:${documentName}`\n }\n\n private pubKey(documentName: string) {\n return this.getKey(documentName)\n }\n\n private subKey(documentName: string) {\n return this.getKey(documentName)\n }\n\n private lockKey(documentName: string) {\n return `${this.getKey(documentName)}:lock`\n }\n\n private encodeMessage(message: Uint8Array) {\n return Buffer.concat([this.messagePrefix, Buffer.from(message)])\n }\n\n private decodeMessage(buffer: Buffer) {\n const identifierLength = buffer[0]\n const identifier = buffer.toString('utf-8', 1, identifierLength + 1)\n\n return [identifier, buffer.slice(identifierLength + 1)]\n }\n\n /**\n * Once a document is loaded, subscribe to the channel in Redis.\n */\n public async afterLoadDocument({ documentName, document }: afterLoadDocumentPayload) {\n return new Promise((resolve, reject) => {\n // On document creation the node will connect to pub and sub channels\n // for the document.\n this.sub.subscribe(this.subKey(documentName), async error => {\n if (error) {\n reject(error)\n return\n }\n\n this.publishFirstSyncStep(documentName, document)\n this.requestAwarenessFromOtherInstances(documentName)\n\n resolve(undefined)\n })\n })\n }\n\n /**\n * Publish the first sync step through Redis.\n */\n private async publishFirstSyncStep(documentName: string, document: Document) {\n const syncMessage = new OutgoingMessage(documentName)\n .createSyncMessage()\n .writeFirstSyncStepFor(document)\n\n return this.pub.publishBuffer(this.pubKey(documentName), this.encodeMessage(syncMessage.toUint8Array()))\n }\n\n /**\n * Let’s ask Redis who is connected already.\n */\n private async requestAwarenessFromOtherInstances(documentName: string) {\n const awarenessMessage = new OutgoingMessage(documentName)\n .writeQueryAwareness()\n\n return this.pub.publishBuffer(\n this.pubKey(documentName),\n this.encodeMessage(awarenessMessage.toUint8Array()),\n )\n }\n\n /**\n * Before the document is stored, make sure to set a lock in Redis.\n * That’s meant to avoid conflicts with other instances trying to store the document.\n */\n async onStoreDocument({ documentName }: onStoreDocumentPayload) {\n // Attempt to acquire a lock and read lastReceivedTimestamp from Redis,\n // to avoid conflict with other instances storing the same document.\n\n return new Promise((resolve, reject) => {\n this.redlock.lock(this.lockKey(documentName), this.configuration.lockTimeout, async (error, lock) => {\n if (error || !lock) {\n // Expected behavior: Could not acquire lock, another instance locked it already.\n // No further `onStoreDocument` hooks will be executed.\n console.log('unable to acquire lock')\n reject()\n return\n }\n\n this.locks.set(this.lockKey(documentName), lock)\n\n resolve(undefined)\n })\n })\n }\n\n /**\n * Release the Redis lock, so other instances can store documents.\n */\n async afterStoreDocument({ documentName, socketId }: afterStoreDocumentPayload) {\n this.locks.get(this.lockKey(documentName))?.unlock()\n .catch(() => {\n // Not able to unlock Redis. The lock will expire after ${lockTimeout} ms.\n // console.error(`Not able to unlock Redis. The lock will expire after ${this.configuration.lockTimeout}ms.`)\n })\n .finally(() => {\n this.locks.delete(this.lockKey(documentName))\n })\n\n // if the change was initiated by a directConnection, we need to delay this hook to make sure sync can finish first.\n // for provider connections, this usually happens in the onDisconnect hook\n if (socketId === 'server') {\n await new Promise(resolve => {\n setTimeout(() => resolve(''), this.configuration.disconnectDelay)\n })\n }\n }\n\n /**\n * Handle awareness update messages received directly by this Hocuspocus instance.\n */\n async onAwarenessUpdate({\n documentName, awareness, added, updated, removed,\n }: onAwarenessUpdatePayload) {\n const changedClients = added.concat(updated, removed)\n const message = new OutgoingMessage(documentName)\n .createAwarenessUpdateMessage(awareness, changedClients)\n\n return this.pub.publishBuffer(\n this.pubKey(documentName),\n this.encodeMessage(message.toUint8Array()),\n )\n }\n\n /**\n * Handle incoming messages published on subscribed document channels.\n * Note that this will also include messages from ourselves as it is not possible\n * in Redis to filter these.\n */\n private handleIncomingMessage = async (channel: Buffer, data: Buffer) => {\n const [identifier, messageBuffer] = this.decodeMessage(data)\n\n if (identifier === this.configuration.identifier) {\n return\n }\n\n const message = new IncomingMessage(messageBuffer)\n const documentName = message.readVarString()\n message.writeVarString(documentName)\n\n const document = this.instance.documents.get(documentName)\n\n if (!document) {\n // What does this mean? Why are we subscribed to this document?\n this.logger.log(`Received message for unknown document ${documentName}`)\n return\n }\n\n new MessageReceiver(\n message,\n this.logger,\n this.redisTransactionOrigin,\n ).apply(document, undefined, reply => {\n return this.pub.publishBuffer(\n this.pubKey(document.name),\n this.encodeMessage(reply),\n )\n })\n }\n\n /**\n * if the ydoc changed, we'll need to inform other Hocuspocus servers about it.\n */\n public async onChange(data: onChangePayload): Promise<any> {\n if (data.transactionOrigin !== this.redisTransactionOrigin) {\n return this.publishFirstSyncStep(data.documentName, data.document)\n }\n }\n\n /**\n * Make sure to *not* listen for further changes, when there’s\n * no one connected anymore.\n */\n public onDisconnect = async ({ documentName }: onDisconnectPayload) => {\n const disconnect = () => {\n const document = this.instance.documents.get(documentName)\n\n // Do nothing, when other users are still connected to the document.\n if (!document || document.getConnectionsCount() > 0) {\n return\n }\n\n // Time to end the subscription on the document channel.\n this.sub.unsubscribe(this.subKey(documentName), (error: any) => {\n if (error) {\n console.error(error)\n }\n })\n\n this.instance.unloadDocument(document)\n }\n // Delay the disconnect procedure to allow last minute syncs to happen\n setTimeout(disconnect, this.configuration.disconnectDelay)\n }\n\n async beforeBroadcastStateless(data: beforeBroadcastStatelessPayload) {\n const message = new OutgoingMessage(data.documentName)\n .writeBroadcastStateless(data.payload)\n\n return this.pub.publishBuffer(\n this.pubKey(data.documentName),\n this.encodeMessage(message.toUint8Array()),\n )\n }\n\n /**\n * Kill the Redlock connection immediately.\n */\n async onDestroy() {\n await this.redlock.quit()\n this.pub.disconnect(false)\n this.sub.disconnect(false)\n }\n}\n"],"names":["uuid","IncomingMessage","MessageReceiver","Debugger","RedisClient","Redlock","OutgoingMessage"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hocuspocus-redis.cjs","sources":["../../../node_modules/lodash.defaults/index.js","../../../node_modules/lodash.flatten/index.js","../../../node_modules/lodash.isarguments/index.js","../../../node_modules/ioredis/built/utils/lodash.js","../../../node_modules/denque/index.js","../../../node_modules/redis-commands/index.js","../../../node_modules/cluster-key-slot/lib/index.js","../../../node_modules/standard-as-callback/built/utils.js","../../../node_modules/standard-as-callback/built/index.js","../../../node_modules/debug/node_modules/ms/index.js","../../../node_modules/debug/src/common.js","../../../node_modules/debug/src/browser.js","../../../node_modules/has-flag/index.js","../../../node_modules/supports-color/index.js","../../../node_modules/debug/src/node.js","../../../node_modules/debug/src/index.js","../../../node_modules/ioredis/built/utils/debug.js","../../../node_modules/ioredis/built/constants/TLSProfiles.js","../../../node_modules/ioredis/built/utils/index.js","../../../node_modules/ioredis/built/promiseContainer.js","../../../node_modules/ioredis/built/command.js","../../../node_modules/ioredis/built/script.js","../../../node_modules/ioredis/built/autoPipelining.js","../../../node_modules/ioredis/built/commander.js","../../../node_modules/redis-errors/lib/old.js","../../../node_modules/redis-errors/lib/modern.js","../../../node_modules/redis-errors/index.js","../../../node_modules/ioredis/built/errors/MaxRetriesPerRequestError.js","../../../node_modules/ioredis/built/errors/index.js","../../../node_modules/redis-parser/lib/parser.js","../../../node_modules/redis-parser/index.js","../../../node_modules/ioredis/built/SubscriptionSet.js","../../../node_modules/ioredis/built/DataHandler.js","../../../node_modules/ioredis/built/redis/event_handler.js","../../../node_modules/ioredis/built/connectors/AbstractConnector.js","../../../node_modules/ioredis/built/connectors/StandaloneConnector.js","../../../node_modules/ioredis/built/connectors/SentinelConnector/SentinelIterator.js","../../../node_modules/ioredis/built/connectors/SentinelConnector/FailoverDetector.js","../../../node_modules/ioredis/built/connectors/SentinelConnector/index.js","../../../node_modules/ioredis/built/connectors/index.js","../../../node_modules/ioredis/built/ScanStream.js","../../../node_modules/ioredis/node_modules/p-map/index.js","../../../node_modules/ioredis/built/pipeline.js","../../../node_modules/ioredis/built/transaction.js","../../../node_modules/ioredis/built/redis/RedisOptions.js","../../../node_modules/ioredis/built/redis/index.js","../../../node_modules/ioredis/built/errors/ClusterAllFailedError.js","../../../node_modules/ioredis/built/cluster/util.js","../../../node_modules/ioredis/built/cluster/ConnectionPool.js","../../../node_modules/ioredis/built/cluster/ClusterSubscriber.js","../../../node_modules/ioredis/built/cluster/DelayQueue.js","../../../node_modules/ioredis/built/cluster/ClusterOptions.js","../../../node_modules/ioredis/built/cluster/index.js","../../../node_modules/ioredis/built/index.js","../../../node_modules/bluebird/js/release/es5.js","../../../node_modules/bluebird/js/release/util.js","../../../node_modules/bluebird/js/release/schedule.js","../../../node_modules/bluebird/js/release/queue.js","../../../node_modules/bluebird/js/release/async.js","../../../node_modules/bluebird/js/release/errors.js","../../../node_modules/bluebird/js/release/thenables.js","../../../node_modules/bluebird/js/release/promise_array.js","../../../node_modules/bluebird/js/release/context.js","../../../node_modules/bluebird/js/release/debuggability.js","../../../node_modules/bluebird/js/release/catch_filter.js","../../../node_modules/bluebird/js/release/finally.js","../../../node_modules/bluebird/js/release/nodeback.js","../../../node_modules/bluebird/js/release/method.js","../../../node_modules/bluebird/js/release/bind.js","../../../node_modules/bluebird/js/release/cancel.js","../../../node_modules/bluebird/js/release/direct_resolve.js","../../../node_modules/bluebird/js/release/synchronous_inspection.js","../../../node_modules/bluebird/js/release/join.js","../../../node_modules/bluebird/js/release/call_get.js","../../../node_modules/bluebird/js/release/generators.js","../../../node_modules/bluebird/js/release/map.js","../../../node_modules/bluebird/js/release/nodeify.js","../../../node_modules/bluebird/js/release/promisify.js","../../../node_modules/bluebird/js/release/props.js","../../../node_modules/bluebird/js/release/race.js","../../../node_modules/bluebird/js/release/reduce.js","../../../node_modules/bluebird/js/release/settle.js","../../../node_modules/bluebird/js/release/some.js","../../../node_modules/bluebird/js/release/timers.js","../../../node_modules/bluebird/js/release/using.js","../../../node_modules/bluebird/js/release/any.js","../../../node_modules/bluebird/js/release/each.js","../../../node_modules/bluebird/js/release/filter.js","../../../node_modules/bluebird/js/release/promise.js","../../../node_modules/bluebird/js/release/bluebird.js","../../../node_modules/redlock/redlock.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/native.js","../node_modules/uuid/dist/esm-browser/v4.js","../../../node_modules/async-lock/lib/index.js","../../../node_modules/lib0/math.js","../../../node_modules/lib0/binary.js","../../../node_modules/lib0/number.js","../../../node_modules/lib0/set.js","../../../node_modules/lib0/array.js","../../../node_modules/lib0/string.js","../../../node_modules/lib0/encoding.js","../../../node_modules/lib0/error.js","../../../node_modules/lib0/decoding.js","../../common/src/auth.ts","../../common/src/types.ts","../../server/src/IncomingMessage.ts","../../../node_modules/lib0/time.js","../../../node_modules/lib0/map.js","../../../node_modules/lib0/observable.js","../../../node_modules/lib0/object.js","../../../node_modules/lib0/function.js","../../../node_modules/lib0/webcrypto.js","../../../node_modules/lib0/random.js","../../../node_modules/lib0/promise.js","../../../node_modules/lib0/conditions.js","../../../node_modules/lib0/storage.js","../../../node_modules/lib0/environment.js","../../../node_modules/lib0/buffer.js","../../../node_modules/lib0/pair.js","../../../node_modules/lib0/dom.js","../../../node_modules/lib0/symbol.js","../../../node_modules/lib0/logging.common.js","../../../node_modules/lib0/logging.js","../../../node_modules/lib0/iterator.js","../../../node_modules/yjs/dist/yjs.mjs","../../../node_modules/y-protocols/awareness.js","../../../node_modules/y-protocols/sync.js","../../server/src/types.ts","../../server/src/OutgoingMessage.ts","../../server/src/MessageReceiver.ts","../../server/src/Debugger.ts","../../server/node_modules/ws/lib/constants.js","../../server/node_modules/ws/lib/buffer-util.js","../../server/node_modules/ws/lib/limiter.js","../../server/node_modules/ws/lib/permessage-deflate.js","../../server/node_modules/ws/lib/validation.js","../../server/node_modules/ws/lib/receiver.js","../../server/node_modules/ws/lib/sender.js","../../server/node_modules/ws/lib/event-target.js","../../server/node_modules/ws/lib/extension.js","../../server/node_modules/ws/lib/websocket.js","../../../node_modules/kleur/index.mjs","../src/Redis.ts"],"sourcesContent":["/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Used by `_.defaults` to customize its `_.assignIn` use.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\nfunction assignInDefaults(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n});\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(args) {\n args.push(undefined, assignInDefaults);\n return apply(assignInWith, undefined, args);\n});\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = defaults;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array ? array.length : 0;\n return length ? baseFlatten(array, 1) : [];\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = flatten;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst defaults = require(\"lodash.defaults\");\nexports.defaults = defaults;\nconst flatten = require(\"lodash.flatten\");\nexports.flatten = flatten;\nconst isArguments = require(\"lodash.isarguments\");\nexports.isArguments = isArguments;\nfunction noop() { }\nexports.noop = noop;\n","'use strict';\n\n/**\n * Custom implementation of a double ended queue.\n */\nfunction Denque(array, options) {\n var options = options || {};\n\n this._head = 0;\n this._tail = 0;\n this._capacity = options.capacity;\n this._capacityMask = 0x3;\n this._list = new Array(4);\n if (Array.isArray(array)) {\n this._fromArray(array);\n }\n}\n\n/**\n * -------------\n * PUBLIC API\n * -------------\n */\n\n/**\n * Returns the item at the specified index from the list.\n * 0 is the first element, 1 is the second, and so on...\n * Elements at negative values are that many from the end: -1 is one before the end\n * (the last element), -2 is two before the end (one before last), etc.\n * @param index\n * @returns {*}\n */\nDenque.prototype.peekAt = function peekAt(index) {\n var i = index;\n // expect a number or return undefined\n if ((i !== (i | 0))) {\n return void 0;\n }\n var len = this.size();\n if (i >= len || i < -len) return undefined;\n if (i < 0) i += len;\n i = (this._head + i) & this._capacityMask;\n return this._list[i];\n};\n\n/**\n * Alias for peekAt()\n * @param i\n * @returns {*}\n */\nDenque.prototype.get = function get(i) {\n return this.peekAt(i);\n};\n\n/**\n * Returns the first item in the list without removing it.\n * @returns {*}\n */\nDenque.prototype.peek = function peek() {\n if (this._head === this._tail) return undefined;\n return this._list[this._head];\n};\n\n/**\n * Alias for peek()\n * @returns {*}\n */\nDenque.prototype.peekFront = function peekFront() {\n return this.peek();\n};\n\n/**\n * Returns the item that is at the back of the queue without removing it.\n * Uses peekAt(-1)\n */\nDenque.prototype.peekBack = function peekBack() {\n return this.peekAt(-1);\n};\n\n/**\n * Returns the current length of the queue\n * @return {Number}\n */\nObject.defineProperty(Denque.prototype, 'length', {\n get: function length() {\n return this.size();\n }\n});\n\n/**\n * Return the number of items on the list, or 0 if empty.\n * @returns {number}\n */\nDenque.prototype.size = function size() {\n if (this._head === this._tail) return 0;\n if (this._head < this._tail) return this._tail - this._head;\n else return this._capacityMask + 1 - (this._head - this._tail);\n};\n\n/**\n * Add an item at the beginning of the list.\n * @param item\n */\nDenque.prototype.unshift = function unshift(item) {\n if (item === undefined) return this.size();\n var len = this._list.length;\n this._head = (this._head - 1 + len) & this._capacityMask;\n this._list[this._head] = item;\n if (this._tail === this._head) this._growArray();\n if (this._capacity && this.size() > this._capacity) this.pop();\n if (this._head < this._tail) return this._tail - this._head;\n else return this._capacityMask + 1 - (this._head - this._tail);\n};\n\n/**\n * Remove and return the first item on the list,\n * Returns undefined if the list is empty.\n * @returns {*}\n */\nDenque.prototype.shift = function shift() {\n var head = this._head;\n if (head === this._tail) return undefined;\n var item = this._list[head];\n this._list[head] = undefined;\n this._head = (head + 1) & this._capacityMask;\n if (head < 2 && this._tail > 10000 && this._tail <= this._list.length >>> 2) this._shrinkArray();\n return item;\n};\n\n/**\n * Add an item to the bottom of the list.\n * @param item\n */\nDenque.prototype.push = function push(item) {\n if (item === undefined) return this.size();\n var tail = this._tail;\n this._list[tail] = item;\n this._tail = (tail + 1) & this._capacityMask;\n if (this._tail === this._head) {\n this._growArray();\n }\n if (this._capacity && this.size() > this._capacity) {\n this.shift();\n }\n if (this._head < this._tail) return this._tail - this._head;\n else return this._capacityMask + 1 - (this._head - this._tail);\n};\n\n/**\n * Remove and return the last item on the list.\n * Returns undefined if the list is empty.\n * @returns {*}\n */\nDenque.prototype.pop = function pop() {\n var tail = this._tail;\n if (tail === this._head) return undefined;\n var len = this._list.length;\n this._tail = (tail - 1 + len) & this._capacityMask;\n var item = this._list[this._tail];\n this._list[this._tail] = undefined;\n if (this._head < 2 && tail > 10000 && tail <= len >>> 2) this._shrinkArray();\n return item;\n};\n\n/**\n * Remove and return the item at the specified index from the list.\n * Returns undefined if the list is empty.\n * @param index\n * @returns {*}\n */\nDenque.prototype.removeOne = function removeOne(index) {\n var i = index;\n // expect a number or return undefined\n if ((i !== (i | 0))) {\n return void 0;\n }\n if (this._head === this._tail) return void 0;\n var size = this.size();\n var len = this._list.length;\n if (i >= size || i < -size) return void 0;\n if (i < 0) i += size;\n i = (this._head + i) & this._capacityMask;\n var item = this._list[i];\n var k;\n if (index < size / 2) {\n for (k = index; k > 0; k--) {\n this._list[i] = this._list[i = (i - 1 + len) & this._capacityMask];\n }\n this._list[i] = void 0;\n this._head = (this._head + 1 + len) & this._capacityMask;\n } else {\n for (k = size - 1 - index; k > 0; k--) {\n this._list[i] = this._list[i = ( i + 1 + len) & this._capacityMask];\n }\n this._list[i] = void 0;\n this._tail = (this._tail - 1 + len) & this._capacityMask;\n }\n return item;\n};\n\n/**\n * Remove number of items from the specified index from the list.\n * Returns array of removed items.\n * Returns undefined if the list is empty.\n * @param index\n * @param count\n * @returns {array}\n */\nDenque.prototype.remove = function remove(index, count) {\n var i = index;\n var removed;\n var del_count = count;\n // expect a number or return undefined\n if ((i !== (i | 0))) {\n return void 0;\n }\n if (this._head === this._tail) return void 0;\n var size = this.size();\n var len = this._list.length;\n if (i >= size || i < -size || count < 1) return void 0;\n if (i < 0) i += size;\n if (count === 1 || !count) {\n removed = new Array(1);\n removed[0] = this.removeOne(i);\n return removed;\n }\n if (i === 0 && i + count >= size) {\n removed = this.toArray();\n this.clear();\n return removed;\n }\n if (i + count > size) count = size - i;\n var k;\n removed = new Array(count);\n for (k = 0; k < count; k++) {\n removed[k] = this._list[(this._head + i + k) & this._capacityMask];\n }\n i = (this._head + i) & this._capacityMask;\n if (index + count === size) {\n this._tail = (this._tail - count + len) & this._capacityMask;\n for (k = count; k > 0; k--) {\n this._list[i = (i + 1 + len) & this._capacityMask] = void 0;\n }\n return removed;\n }\n if (index === 0) {\n this._head = (this._head + count + len) & this._capacityMask;\n for (k = count - 1; k > 0; k--) {\n this._list[i = (i + 1 + len) & this._capacityMask] = void 0;\n }\n return removed;\n }\n if (i < size / 2) {\n this._head = (this._head + index + count + len) & this._capacityMask;\n for (k = index; k > 0; k--) {\n this.unshift(this._list[i = (i - 1 + len) & this._capacityMask]);\n }\n i = (this._head - 1 + len) & this._capacityMask;\n while (del_count > 0) {\n this._list[i = (i - 1 + len) & this._capacityMask] = void 0;\n del_count--;\n }\n if (index < 0) this._tail = i;\n } else {\n this._tail = i;\n i = (i + count + len) & this._capacityMask;\n for (k = size - (count + index); k > 0; k--) {\n this.push(this._list[i++]);\n }\n i = this._tail;\n while (del_count > 0) {\n this._list[i = (i + 1 + len) & this._capacityMask] = void 0;\n del_count--;\n }\n }\n if (this._head < 2 && this._tail > 10000 && this._tail <= len >>> 2) this._shrinkArray();\n return removed;\n};\n\n/**\n * Native splice implementation.\n * Remove number of items from the specified index from the list and/or add new elements.\n * Returns array of removed items or empty array if count == 0.\n * Returns undefined if the list is empty.\n *\n * @param index\n * @param count\n * @param {...*} [elements]\n * @returns {array}\n */\nDenque.prototype.splice = function splice(index, count) {\n var i = index;\n // expect a number or return undefined\n if ((i !== (i | 0))) {\n return void 0;\n }\n var size = this.size();\n if (i < 0) i += size;\n if (i > size) return void 0;\n if (arguments.length > 2) {\n var k;\n var temp;\n var removed;\n var arg_len = arguments.length;\n var len = this._list.length;\n var arguments_index = 2;\n if (!size || i < size / 2) {\n temp = new Array(i);\n for (k = 0; k < i; k++) {\n temp[k] = this._list[(this._head + k) & this._capacityMask];\n }\n if (count === 0) {\n removed = [];\n if (i > 0) {\n this._head = (this._head + i + len) & this._capacityMask;\n }\n } else {\n removed = this.remove(i, count);\n this._head = (this._head + i + len) & this._capacityMask;\n }\n while (arg_len > arguments_index) {\n this.unshift(arguments[--arg_len]);\n }\n for (k = i; k > 0; k--) {\n this.unshift(temp[k - 1]);\n }\n } else {\n temp = new Array(size - (i + count));\n var leng = temp.length;\n for (k = 0; k < leng; k++) {\n temp[k] = this._list[(this._head + i + count + k) & this._capacityMask];\n }\n if (count === 0) {\n removed = [];\n if (i != size) {\n this._tail = (this._head + i + len) & this._capacityMask;\n }\n } else {\n removed = this.remove(i, count);\n this._tail = (this._tail - leng + len) & this._capacityMask;\n }\n while (arguments_index < arg_len) {\n this.push(arguments[arguments_index++]);\n }\n for (k = 0; k < leng; k++) {\n this.push(temp[k]);\n }\n }\n return removed;\n } else {\n return this.remove(i, count);\n }\n};\n\n/**\n * Soft clear - does not reset capacity.\n */\nDenque.prototype.clear = function clear() {\n this._head = 0;\n this._tail = 0;\n};\n\n/**\n * Returns true or false whether the list is empty.\n * @returns {boolean}\n */\nDenque.prototype.isEmpty = function isEmpty() {\n return this._head === this._tail;\n};\n\n/**\n * Returns an array of all queue items.\n * @returns {Array}\n */\nDenque.prototype.toArray = function toArray() {\n return this._copyArray(false);\n};\n\n/**\n * -------------\n * INTERNALS\n * -------------\n */\n\n/**\n * Fills the queue with items from an array\n * For use in the constructor\n * @param array\n * @private\n */\nDenque.prototype._fromArray = function _fromArray(array) {\n for (var i = 0; i < array.length; i++) this.push(array[i]);\n};\n\n/**\n *\n * @param fullCopy\n * @returns {Array}\n * @private\n */\nDenque.prototype._copyArray = function _copyArray(fullCopy) {\n var newArray = [];\n var list = this._list;\n var len = list.length;\n var i;\n if (fullCopy || this._head > this._tail) {\n for (i = this._head; i < len; i++) newArray.push(list[i]);\n for (i = 0; i < this._tail; i++) newArray.push(list[i]);\n } else {\n for (i = this._head; i < this._tail; i++) newArray.push(list[i]);\n }\n return newArray;\n};\n\n/**\n * Grows the internal list array.\n * @private\n */\nDenque.prototype._growArray = function _growArray() {\n if (this._head) {\n // copy existing data, head to end, then beginning to tail.\n this._list = this._copyArray(true);\n this._head = 0;\n }\n\n // head is at 0 and array is now full, safe to extend\n this._tail = this._list.length;\n\n this._list.length <<= 1;\n this._capacityMask = (this._capacityMask << 1) | 1;\n};\n\n/**\n * Shrinks the internal list array.\n * @private\n */\nDenque.prototype._shrinkArray = function _shrinkArray() {\n this._list.length >>>= 1;\n this._capacityMask >>>= 1;\n};\n\n\nmodule.exports = Denque;\n","'use strict'\n\nvar commands = require('./commands.json')\n\n/**\n * Redis command list\n *\n * All commands are lowercased.\n *\n * @var {string[]}\n * @public\n */\nexports.list = Object.keys(commands)\n\nvar flags = {}\nexports.list.forEach(function (commandName) {\n flags[commandName] = commands[commandName].flags.reduce(function (flags, flag) {\n flags[flag] = true\n return flags\n }, {})\n})\n/**\n * Check if the command exists\n *\n * @param {string} commandName - the command name\n * @return {boolean} result\n * @public\n */\nexports.exists = function (commandName) {\n return Boolean(commands[commandName])\n}\n\n/**\n * Check if the command has the flag\n *\n * Some of possible flags: readonly, noscript, loading\n * @param {string} commandName - the command name\n * @param {string} flag - the flag to check\n * @return {boolean} result\n * @public\n */\nexports.hasFlag = function (commandName, flag) {\n if (!flags[commandName]) {\n throw new Error('Unknown command ' + commandName)\n }\n\n return Boolean(flags[commandName][flag])\n}\n\n/**\n * Get indexes of keys in the command arguments\n *\n * @param {string} commandName - the command name\n * @param {string[]} args - the arguments of the command\n * @param {object} [options] - options\n * @param {boolean} [options.parseExternalKey] - parse external keys\n * @return {number[]} - the list of the index\n * @public\n *\n * @example\n * ```javascript\n * getKeyIndexes('set', ['key', 'value']) // [0]\n * getKeyIndexes('mget', ['key1', 'key2']) // [0, 1]\n * ```\n */\nexports.getKeyIndexes = function (commandName, args, options) {\n var command = commands[commandName]\n if (!command) {\n throw new Error('Unknown command ' + commandName)\n }\n\n if (!Array.isArray(args)) {\n throw new Error('Expect args to be an array')\n }\n\n var keys = []\n var i, keyStart, keyStop, parseExternalKey\n switch (commandName) {\n case 'zunionstore':\n case 'zinterstore':\n keys.push(0)\n // fall through\n case 'eval':\n case 'evalsha':\n keyStop = Number(args[1]) + 2\n for (i = 2; i < keyStop; i++) {\n keys.push(i)\n }\n break\n case 'sort':\n parseExternalKey = options && options.parseExternalKey\n keys.push(0)\n for (i = 1; i < args.length - 1; i++) {\n if (typeof args[i] !== 'string') {\n continue\n }\n var directive = args[i].toUpperCase()\n if (directive === 'GET') {\n i += 1\n if (args[i] !== '#') {\n if (parseExternalKey) {\n keys.push([i, getExternalKeyNameLength(args[i])])\n } else {\n keys.push(i)\n }\n }\n } else if (directive === 'BY') {\n i += 1\n if (parseExternalKey) {\n keys.push([i, getExternalKeyNameLength(args[i])])\n } else {\n keys.push(i)\n }\n } else if (directive === 'STORE') {\n i += 1\n keys.push(i)\n }\n }\n break\n case 'migrate':\n if (args[2] === '') {\n for (i = 5; i < args.length - 1; i++) {\n if (args[i].toUpperCase() === 'KEYS') {\n for (var j = i + 1; j < args.length; j++) {\n keys.push(j)\n }\n break\n }\n }\n } else {\n keys.push(2)\n }\n break\n case 'xreadgroup':\n case 'xread':\n // Keys are 1st half of the args after STREAMS argument.\n for (i = commandName === 'xread' ? 0 : 3; i < args.length - 1; i++) {\n if (String(args[i]).toUpperCase() === 'STREAMS') {\n for (j = i + 1; j <= i + ((args.length - 1 - i) / 2); j++) {\n keys.push(j)\n }\n break\n }\n }\n break\n default:\n // Step has to be at least one in this case, otherwise the command does\n // not contain a key.\n if (command.step > 0) {\n keyStart = command.keyStart - 1\n keyStop = command.keyStop > 0 ? command.keyStop : args.length + command.keyStop + 1\n for (i = keyStart; i < keyStop; i += command.step) {\n keys.push(i)\n }\n }\n break\n }\n\n return keys\n}\n\nfunction getExternalKeyNameLength (key) {\n if (typeof key !== 'string') {\n key = String(key)\n }\n var hashPos = key.indexOf('->')\n return hashPos === -1 ? key.length : hashPos\n}\n","/*\n * Copyright 2001-2010 Georges Menie (www.menie.org)\n * Copyright 2010 Salvatore Sanfilippo (adapted to Redis coding style)\n * Copyright 2015 Zihua Li (http://zihua.li) (ported to JavaScript)\n * Copyright 2016 Mike Diarmid (http://github.com/salakar) (re-write for performance, ~700% perf inc)\n * All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * * Neither the name of the University of California, Berkeley nor the\n * names of its contributors may be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* CRC16 implementation according to CCITT standards.\n *\n * Note by @antirez: this is actually the XMODEM CRC 16 algorithm, using the\n * following parameters:\n *\n * Name : \"XMODEM\", also known as \"ZMODEM\", \"CRC-16/ACORN\"\n * Width : 16 bit\n * Poly : 1021 (That is actually x^16 + x^12 + x^5 + 1)\n * Initialization : 0000\n * Reflect Input byte : False\n * Reflect Output CRC : False\n * Xor constant to output CRC : 0000\n * Output for \"123456789\" : 31C3\n */\n\nvar lookup = [\n 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,\n 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,\n 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6,\n 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de,\n 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485,\n 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d,\n 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4,\n 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc,\n 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823,\n 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b,\n 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12,\n 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a,\n 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41,\n 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49,\n 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70,\n 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78,\n 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f,\n 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067,\n 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e,\n 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256,\n 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d,\n 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,\n 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c,\n 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634,\n 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab,\n 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3,\n 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a,\n 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92,\n 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9,\n 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1,\n 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,\n 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0\n];\n\n/**\n * Convert a string to a UTF8 array - faster than via buffer\n * @param str\n * @returns {Array}\n */\nvar toUTF8Array = function toUTF8Array(str) {\n var char;\n var i = 0;\n var p = 0;\n var utf8 = [];\n var len = str.length;\n\n for (; i < len; i++) {\n char = str.charCodeAt(i);\n if (char < 128) {\n utf8[p++] = char;\n } else if (char < 2048) {\n utf8[p++] = (char >> 6) | 192;\n utf8[p++] = (char & 63) | 128;\n } else if (\n ((char & 0xFC00) === 0xD800) && (i + 1) < str.length &&\n ((str.charCodeAt(i + 1) & 0xFC00) === 0xDC00)) {\n char = 0x10000 + ((char & 0x03FF) << 10) + (str.charCodeAt(++i) & 0x03FF);\n utf8[p++] = (char >> 18) | 240;\n utf8[p++] = ((char >> 12) & 63) | 128;\n utf8[p++] = ((char >> 6) & 63) | 128;\n utf8[p++] = (char & 63) | 128;\n } else {\n utf8[p++] = (char >> 12) | 224;\n utf8[p++] = ((char >> 6) & 63) | 128;\n utf8[p++] = (char & 63) | 128;\n }\n }\n\n return utf8;\n};\n\n/**\n * Convert a string into a redis slot hash.\n * @param str\n * @returns {number}\n */\nvar generate = module.exports = function generate(str) {\n var char;\n var i = 0;\n var start = -1;\n var result = 0;\n var resultHash = 0;\n var utf8 = typeof str === 'string' ? toUTF8Array(str) : str;\n var len = utf8.length;\n\n while (i < len) {\n char = utf8[i++];\n if (start === -1) {\n if (char === 0x7B) {\n start = i;\n }\n } else if (char !== 0x7D) {\n resultHash = lookup[(char ^ (resultHash >> 8)) & 0xFF] ^ (resultHash << 8);\n } else if (i - 1 !== start) {\n return resultHash & 0x3FFF;\n }\n\n result = lookup[(char ^ (result >> 8)) & 0xFF] ^ (result << 8);\n }\n\n return result & 0x3FFF;\n};\n\n/**\n * Convert an array of multiple strings into a redis slot hash.\n * Returns -1 if one of the keys is not for the same slot as the others\n * @param keys\n * @returns {number}\n */\nmodule.exports.generateMulti = function generateMulti(keys) {\n var i = 1;\n var len = keys.length;\n var base = generate(keys[0]);\n\n while (i < len) {\n if (generate(keys[i++]) !== base) return -1;\n }\n\n return base;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tryCatch = exports.errorObj = void 0;\n//Try catch is not supported in optimizing\n//compiler, so it is isolated\nexports.errorObj = { e: {} };\nlet tryCatchTarget;\nfunction tryCatcher(err, val) {\n try {\n const target = tryCatchTarget;\n tryCatchTarget = null;\n return target.apply(this, arguments);\n }\n catch (e) {\n exports.errorObj.e = e;\n return exports.errorObj;\n }\n}\nfunction tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n}\nexports.tryCatch = tryCatch;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils_1 = require(\"./utils\");\nfunction throwLater(e) {\n setTimeout(function () {\n throw e;\n }, 0);\n}\nfunction asCallback(promise, nodeback, options) {\n if (typeof nodeback === \"function\") {\n promise.then((val) => {\n let ret;\n if (options !== undefined &&\n Object(options).spread &&\n Array.isArray(val)) {\n ret = utils_1.tryCatch(nodeback).apply(undefined, [null].concat(val));\n }\n else {\n ret =\n val === undefined\n ? utils_1.tryCatch(nodeback)(null)\n : utils_1.tryCatch(nodeback)(null, val);\n }\n if (ret === utils_1.errorObj) {\n throwLater(ret.e);\n }\n }, (cause) => {\n if (!cause) {\n const newReason = new Error(cause + \"\");\n Object.assign(newReason, { cause });\n cause = newReason;\n }\n const ret = utils_1.tryCatch(nodeback)(cause);\n if (ret === utils_1.errorObj) {\n throwLater(ret.e);\n }\n });\n }\n return promise;\n}\nexports.default = asCallback;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","'use strict';\nmodule.exports = (flag, argv) => {\n\targv = argv || process.argv;\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst pos = argv.indexOf(prefix + flag);\n\tconst terminatorPos = argv.indexOf('--');\n\treturn pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);\n};\n","'use strict';\nconst os = require('os');\nconst hasFlag = require('has-flag');\n\nconst env = process.env;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false')) {\n\tforceColor = false;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = true;\n}\nif ('FORCE_COLOR' in env) {\n\tforceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0;\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(stream) {\n\tif (forceColor === false) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (stream && !stream.isTTY && forceColor !== true) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor ? 1 : 0;\n\n\tif (process.platform === 'win32') {\n\t\t// Node.js 7.5.0 is the first version of Node.js to include a patch to\n\t\t// libuv that enables 256 color output on Windows. Anything earlier and it\n\t\t// won't work. However, here we target Node.js 8 at minimum as it is an LTS\n\t\t// release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows\n\t\t// release that supports 256 colors. Windows 10 build 14931 is the first release\n\t\t// that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(process.versions.node.split('.')[0]) >= 8 &&\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: getSupportLevel(process.stdout),\n\tstderr: getSupportLevel(process.stderr)\n};\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst debug_1 = require(\"debug\");\nconst MAX_ARGUMENT_LENGTH = 200;\nexports.MAX_ARGUMENT_LENGTH = MAX_ARGUMENT_LENGTH;\nconst NAMESPACE_PREFIX = \"ioredis\";\n/**\n * helper function that tried to get a string value for\n * arbitrary \"debug\" arg\n */\nfunction getStringValue(v) {\n if (v === null) {\n return;\n }\n switch (typeof v) {\n case \"boolean\":\n return;\n case \"number\":\n return;\n case \"object\":\n if (Buffer.isBuffer(v)) {\n return v.toString(\"hex\");\n }\n if (Array.isArray(v)) {\n return v.join(\",\");\n }\n try {\n return JSON.stringify(v);\n }\n catch (e) {\n return;\n }\n case \"string\":\n return v;\n }\n}\nexports.getStringValue = getStringValue;\n/**\n * helper function that redacts a string representation of a \"debug\" arg\n */\nfunction genRedactedString(str, maxLen) {\n const { length } = str;\n return length <= maxLen\n ? str\n : str.slice(0, maxLen) + ' ... <REDACTED full-length=\"' + length + '\">';\n}\nexports.genRedactedString = genRedactedString;\n/**\n * a wrapper for the `debug` module, used to generate\n * \"debug functions\" that trim the values in their output\n */\nfunction genDebugFunction(namespace) {\n const fn = debug_1.default(`${NAMESPACE_PREFIX}:${namespace}`);\n function wrappedDebug(...args) {\n if (!fn.enabled) {\n return; // no-op\n }\n // we skip the first arg because that is the message\n for (let i = 1; i < args.length; i++) {\n const str = getStringValue(args[i]);\n if (typeof str === \"string\" && str.length > MAX_ARGUMENT_LENGTH) {\n args[i] = genRedactedString(str, MAX_ARGUMENT_LENGTH);\n }\n }\n return fn.apply(null, args);\n }\n Object.defineProperties(wrappedDebug, {\n namespace: {\n get() {\n return fn.namespace;\n },\n },\n enabled: {\n get() {\n return fn.enabled;\n },\n },\n destroy: {\n get() {\n return fn.destroy;\n },\n },\n log: {\n get() {\n return fn.log;\n },\n set(l) {\n fn.log = l;\n },\n },\n });\n return wrappedDebug;\n}\nexports.default = genDebugFunction;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = {\n /**\n * TLS settings for Redis.com Cloud Fixed plan. Updated on 2021-10-06.\n */\n RedisCloudFixed: {\n ca: \"-----BEGIN CERTIFICATE-----\\n\" +\n \"MIIDTzCCAjegAwIBAgIJAKSVpiDswLcwMA0GCSqGSIb3DQEBBQUAMD4xFjAUBgNV\\n\" +\n \"BAoMDUdhcmFudGlhIERhdGExJDAiBgNVBAMMG1NTTCBDZXJ0aWZpY2F0aW9uIEF1\\n\" +\n \"dGhvcml0eTAeFw0xMzEwMDExMjE0NTVaFw0yMzA5MjkxMjE0NTVaMD4xFjAUBgNV\\n\" +\n \"BAoMDUdhcmFudGlhIERhdGExJDAiBgNVBAMMG1NTTCBDZXJ0aWZpY2F0aW9uIEF1\\n\" +\n \"dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALZqkh/DczWP\\n\" +\n \"JnxnHLQ7QL0T4B4CDKWBKCcisriGbA6ZePWVNo4hfKQC6JrzfR+081NeD6VcWUiz\\n\" +\n \"rmd+jtPhIY4c+WVQYm5PKaN6DT1imYdxQw7aqO5j2KUCEh/cznpLxeSHoTxlR34E\\n\" +\n \"QwF28Wl3eg2vc5ct8LjU3eozWVk3gb7alx9mSA2SgmuX5lEQawl++rSjsBStemY2\\n\" +\n \"BDwOpAMXIrdEyP/cVn8mkvi/BDs5M5G+09j0gfhyCzRWMQ7Hn71u1eolRxwVxgi3\\n\" +\n \"TMn+/vTaFSqxKjgck6zuAYjBRPaHe7qLxHNr1So/Mc9nPy+3wHebFwbIcnUojwbp\\n\" +\n \"4nctkWbjb2cCAwEAAaNQME4wHQYDVR0OBBYEFP1whtcrydmW3ZJeuSoKZIKjze3w\\n\" +\n \"MB8GA1UdIwQYMBaAFP1whtcrydmW3ZJeuSoKZIKjze3wMAwGA1UdEwQFMAMBAf8w\\n\" +\n \"DQYJKoZIhvcNAQEFBQADggEBAG2erXhwRAa7+ZOBs0B6X57Hwyd1R4kfmXcs0rta\\n\" +\n \"lbPpvgULSiB+TCbf3EbhJnHGyvdCY1tvlffLjdA7HJ0PCOn+YYLBA0pTU/dyvrN6\\n\" +\n \"Su8NuS5yubnt9mb13nDGYo1rnt0YRfxN+8DM3fXIVr038A30UlPX2Ou1ExFJT0MZ\\n\" +\n \"uFKY6ZvLdI6/1cbgmguMlAhM+DhKyV6Sr5699LM3zqeI816pZmlREETYkGr91q7k\\n\" +\n \"BpXJu/dtHaGxg1ZGu6w/PCsYGUcECWENYD4VQPd8N32JjOfu6vEgoEAwfPP+3oGp\\n\" +\n \"Z4m3ewACcWOAenqflb+cQYC4PsF7qbXDmRaWrbKntOlZ3n0=\\n\" +\n \"-----END CERTIFICATE-----\\n\",\n },\n /**\n * TLS settings for Redis.com Cloud Flexible plan. Updated on 2021-10-06.\n */\n RedisCloudFlexible: {\n ca: \"-----BEGIN CERTIFICATE-----\\n\" +\n \"MIIGMTCCBBmgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwajELMAkGA1UEBhMCVVMx\\n\" +\n \"CzAJBgNVBAgMAkNBMQswCQYDVQQHDAJDQTESMBAGA1UECgwJUmVkaXNMYWJzMS0w\\n\" +\n \"KwYDVQQDDCRSZWRpc0xhYnMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN\\n\" +\n \"MTgwMjI1MTUzNzM3WhcNMjgwMjIzMTUzNzM3WjBfMQswCQYDVQQGEwJVUzELMAkG\\n\" +\n \"A1UECAwCQ0ExEjAQBgNVBAoMCVJlZGlzTGFiczEvMC0GA1UEAwwmUkNQIEludGVy\\n\" +\n \"bWVkaWF0ZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA\\n\" +\n \"A4ICDwAwggIKAoICAQDf9dqbxc8Bq7Ctq9rWcxrGNKKHivqLAFpPq02yLPx6fsOv\\n\" +\n \"Tq7GsDChAYBBc4v7Y2Ap9RD5Vs3dIhEANcnolf27QwrG9RMnnvzk8pCvp1o6zSU4\\n\" +\n \"VuOE1W66/O1/7e2rVxyrnTcP7UgK43zNIXu7+tiAqWsO92uSnuMoGPGpeaUm1jym\\n\" +\n \"hjWKtkAwDFSqvHY+XL5qDVBEjeUe+WHkYUg40cAXjusAqgm2hZt29c2wnVrxW25W\\n\" +\n \"P0meNlzHGFdA2AC5z54iRiqj57dTfBTkHoBczQxcyw6hhzxZQ4e5I5zOKjXXEhZN\\n\" +\n \"r0tA3YC14CTabKRus/JmZieyZzRgEy2oti64tmLYTqSlAD78pRL40VNoaSYetXLw\\n\" +\n \"hhNsXCHgWaY6d5bLOc/aIQMAV5oLvZQKvuXAF1IDmhPA+bZbpWipp0zagf1P1H3s\\n\" +\n \"UzsMdn2KM0ejzgotbtNlj5TcrVwpmvE3ktvUAuA+hi3FkVx1US+2Gsp5x4YOzJ7u\\n\" +\n \"P1WPk6ShF0JgnJH2ILdj6kttTWwFzH17keSFICWDfH/+kM+k7Y1v3EXMQXE7y0T9\\n\" +\n \"MjvJskz6d/nv+sQhY04xt64xFMGTnZjlJMzfQNi7zWFLTZnDD0lPowq7l3YiPoTT\\n\" +\n \"t5Xky83lu0KZsZBo0WlWaDG00gLVdtRgVbcuSWxpi5BdLb1kRab66JptWjxwXQID\\n\" +\n \"AQABo4HrMIHoMDoGA1UdHwQzMDEwL6AtoCuGKWh0dHBzOi8vcmwtY2Etc2VydmVy\\n\" +\n \"LnJlZGlzbGFicy5jb20vdjEvY3JsMEYGCCsGAQUFBwEBBDowODA2BggrBgEFBQcw\\n\" +\n \"AYYqaHR0cHM6Ly9ybC1jYS1zZXJ2ZXIucmVkaXNsYWJzLmNvbS92MS9vY3NwMB0G\\n\" +\n \"A1UdDgQWBBQHar5OKvQUpP2qWt6mckzToeCOHDAfBgNVHSMEGDAWgBQi42wH6hM4\\n\" +\n \"L2sujEvLM0/u8lRXTzASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIB\\n\" +\n \"hjANBgkqhkiG9w0BAQsFAAOCAgEAirEn/iTsAKyhd+pu2W3Z5NjCko4NPU0EYUbr\\n\" +\n \"AP7+POK2rzjIrJO3nFYQ/LLuC7KCXG+2qwan2SAOGmqWst13Y+WHp44Kae0kaChW\\n\" +\n \"vcYLXXSoGQGC8QuFSNUdaeg3RbMDYFT04dOkqufeWVccoHVxyTSg9eD8LZuHn5jw\\n\" +\n \"7QDLiEECBmIJHk5Eeo2TAZrx4Yx6ufSUX5HeVjlAzqwtAqdt99uCJ/EL8bgpWbe+\\n\" +\n \"XoSpvUv0SEC1I1dCAhCKAvRlIOA6VBcmzg5Am12KzkqTul12/VEFIgzqu0Zy2Jbc\\n\" +\n \"AUPrYVu/+tOGXQaijy7YgwH8P8n3s7ZeUa1VABJHcxrxYduDDJBLZi+MjheUDaZ1\\n\" +\n \"jQRHYevI2tlqeSBqdPKG4zBY5lS0GiAlmuze5oENt0P3XboHoZPHiqcK3VECgTVh\\n\" +\n \"/BkJcuudETSJcZDmQ8YfoKfBzRQNg2sv/hwvUv73Ss51Sco8GEt2lD8uEdib1Q6z\\n\" +\n \"zDT5lXJowSzOD5ZA9OGDjnSRL+2riNtKWKEqvtEG3VBJoBzu9GoxbAc7wIZLxmli\\n\" +\n \"iF5a/Zf5X+UXD3s4TMmy6C4QZJpAA2egsSQCnraWO2ULhh7iXMysSkF/nzVfZn43\\n\" +\n \"iqpaB8++9a37hWq14ZmOv0TJIDz//b2+KC4VFXWQ5W5QC6whsjT+OlG4p5ZYG0jo\\n\" +\n \"616pxqo=\\n\" +\n \"-----END CERTIFICATE-----\\n\" +\n \"-----BEGIN CERTIFICATE-----\\n\" +\n \"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\\n\" +\n \"-----END CERTIFICATE-----\\n\",\n },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst url_1 = require(\"url\");\nconst lodash_1 = require(\"./lodash\");\nexports.defaults = lodash_1.defaults;\nexports.noop = lodash_1.noop;\nexports.flatten = lodash_1.flatten;\nconst debug_1 = require(\"./debug\");\nexports.Debug = debug_1.default;\nconst TLSProfiles_1 = require(\"../constants/TLSProfiles\");\n/**\n * Test if two buffers are equal\n *\n * @export\n * @param {Buffer} a\n * @param {Buffer} b\n * @returns {boolean} Whether the two buffers are equal\n */\nfunction bufferEqual(a, b) {\n if (typeof a.equals === \"function\") {\n return a.equals(b);\n }\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\nexports.bufferEqual = bufferEqual;\n/**\n * Convert a buffer to string, supports buffer array\n *\n * @param {*} value - The input value\n * @param {string} encoding - string encoding\n * @return {*} The result\n * @example\n * ```js\n * var input = [Buffer.from('foo'), [Buffer.from('bar')]]\n * var res = convertBufferToString(input, 'utf8')\n * expect(res).to.eql(['foo', ['bar']])\n * ```\n * @private\n */\nfunction convertBufferToString(value, encoding) {\n if (value instanceof Buffer) {\n return value.toString(encoding);\n }\n if (Array.isArray(value)) {\n const length = value.length;\n const res = Array(length);\n for (let i = 0; i < length; ++i) {\n res[i] =\n value[i] instanceof Buffer && encoding === \"utf8\"\n ? value[i].toString()\n : convertBufferToString(value[i], encoding);\n }\n return res;\n }\n return value;\n}\nexports.convertBufferToString = convertBufferToString;\n/**\n * Convert a list of results to node-style\n *\n * @param {Array} arr - The input value\n * @return {Array} The output value\n * @example\n * ```js\n * var input = ['a', 'b', new Error('c'), 'd']\n * var output = exports.wrapMultiResult(input)\n * expect(output).to.eql([[null, 'a'], [null, 'b'], [new Error('c')], [null, 'd'])\n * ```\n * @private\n */\nfunction wrapMultiResult(arr) {\n // When using WATCH/EXEC transactions, the EXEC will return\n // a null instead of an array\n if (!arr) {\n return null;\n }\n const result = [];\n const length = arr.length;\n for (let i = 0; i < length; ++i) {\n const item = arr[i];\n if (item instanceof Error) {\n result.push([item]);\n }\n else {\n result.push([null, item]);\n }\n }\n return result;\n}\nexports.wrapMultiResult = wrapMultiResult;\n/**\n * Detect if the argument is a int\n *\n * @param {string} value\n * @return {boolean} Whether the value is a int\n * @example\n * ```js\n * > isInt('123')\n * true\n * > isInt('123.3')\n * false\n * > isInt('1x')\n * false\n * > isInt(123)\n * true\n * > isInt(true)\n * false\n * ```\n * @private\n */\nfunction isInt(value) {\n const x = parseFloat(value);\n return !isNaN(value) && (x | 0) === x;\n}\nexports.isInt = isInt;\n/**\n * Pack an array to an Object\n *\n * @param {array} array\n * @return {object}\n * @example\n * ```js\n * > packObject(['a', 'b', 'c', 'd'])\n * { a: 'b', c: 'd' }\n * ```\n */\nfunction packObject(array) {\n const result = {};\n const length = array.length;\n for (let i = 1; i < length; i += 2) {\n result[array[i - 1]] = array[i];\n }\n return result;\n}\nexports.packObject = packObject;\n/**\n * Return a callback with timeout\n *\n * @param {function} callback\n * @param {number} timeout\n * @return {function}\n */\nfunction timeout(callback, timeout) {\n let timer;\n const run = function () {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n callback.apply(this, arguments);\n }\n };\n timer = setTimeout(run, timeout, new Error(\"timeout\"));\n return run;\n}\nexports.timeout = timeout;\n/**\n * Convert an object to an array\n *\n * @param {object} obj\n * @return {array}\n * @example\n * ```js\n * > convertObjectToArray({ a: '1' })\n * ['a', '1']\n * ```\n */\nfunction convertObjectToArray(obj) {\n const result = [];\n const keys = Object.keys(obj); // Object.entries requires node 7+\n for (let i = 0, l = keys.length; i < l; i++) {\n result.push(keys[i], obj[keys[i]]);\n }\n return result;\n}\nexports.convertObjectToArray = convertObjectToArray;\n/**\n * Convert a map to an array\n *\n * @param {Map} map\n * @return {array}\n * @example\n * ```js\n * > convertMapToArray(new Map([[1, '2']]))\n * [1, '2']\n * ```\n */\nfunction convertMapToArray(map) {\n const result = [];\n let pos = 0;\n map.forEach(function (value, key) {\n result[pos] = key;\n result[pos + 1] = value;\n pos += 2;\n });\n return result;\n}\nexports.convertMapToArray = convertMapToArray;\n/**\n * Convert a non-string arg to a string\n *\n * @param {*} arg\n * @return {string}\n */\nfunction toArg(arg) {\n if (arg === null || typeof arg === \"undefined\") {\n return \"\";\n }\n return String(arg);\n}\nexports.toArg = toArg;\n/**\n * Optimize error stack\n *\n * @param {Error} error - actually error\n * @param {string} friendlyStack - the stack that more meaningful\n * @param {string} filterPath - only show stacks with the specified path\n */\nfunction optimizeErrorStack(error, friendlyStack, filterPath) {\n const stacks = friendlyStack.split(\"\\n\");\n let lines = \"\";\n let i;\n for (i = 1; i < stacks.length; ++i) {\n if (stacks[i].indexOf(filterPath) === -1) {\n break;\n }\n }\n for (let j = i; j < stacks.length; ++j) {\n lines += \"\\n\" + stacks[j];\n }\n const pos = error.stack.indexOf(\"\\n\");\n error.stack = error.stack.slice(0, pos) + lines;\n return error;\n}\nexports.optimizeErrorStack = optimizeErrorStack;\n/**\n * Parse the redis protocol url\n *\n * @param {string} url - the redis protocol url\n * @return {Object}\n */\nfunction parseURL(url) {\n if (isInt(url)) {\n return { port: url };\n }\n let parsed = url_1.parse(url, true, true);\n if (!parsed.slashes && url[0] !== \"/\") {\n url = \"//\" + url;\n parsed = url_1.parse(url, true, true);\n }\n const options = parsed.query || {};\n const allowUsernameInURI = options.allowUsernameInURI && options.allowUsernameInURI !== \"false\";\n delete options.allowUsernameInURI;\n const result = {};\n if (parsed.auth) {\n const index = parsed.auth.indexOf(\":\");\n if (allowUsernameInURI) {\n result.username =\n index === -1 ? parsed.auth : parsed.auth.slice(0, index);\n }\n result.password = index === -1 ? \"\" : parsed.auth.slice(index + 1);\n }\n if (parsed.pathname) {\n if (parsed.protocol === \"redis:\" || parsed.protocol === \"rediss:\") {\n if (parsed.pathname.length > 1) {\n result.db = parsed.pathname.slice(1);\n }\n }\n else {\n result.path = parsed.pathname;\n }\n }\n if (parsed.host) {\n result.host = parsed.hostname;\n }\n if (parsed.port) {\n result.port = parsed.port;\n }\n lodash_1.defaults(result, options);\n return result;\n}\nexports.parseURL = parseURL;\n/**\n * Resolve TLS profile shortcut in connection options\n *\n * @param {Object} options - the redis connection options\n * @return {Object}\n */\nfunction resolveTLSProfile(options) {\n let tls = options === null || options === void 0 ? void 0 : options.tls;\n if (typeof tls === \"string\")\n tls = { profile: tls };\n const profile = TLSProfiles_1.default[tls === null || tls === void 0 ? void 0 : tls.profile];\n if (profile) {\n tls = Object.assign({}, profile, tls);\n delete tls.profile;\n options = Object.assign({}, options, { tls });\n }\n return options;\n}\nexports.resolveTLSProfile = resolveTLSProfile;\n/**\n * Get a random element from `array`\n *\n * @export\n * @template T\n * @param {T[]} array the array\n * @param {number} [from=0] start index\n * @returns {T}\n */\nfunction sample(array, from = 0) {\n const length = array.length;\n if (from >= length) {\n return;\n }\n return array[from + Math.floor(Math.random() * (length - from))];\n}\nexports.sample = sample;\n/**\n * Shuffle the array using the Fisher-Yates Shuffle.\n * This method will mutate the original array.\n *\n * @export\n * @template T\n * @param {T[]} array\n * @returns {T[]}\n */\nfunction shuffle(array) {\n let counter = array.length;\n // While there are elements in the array\n while (counter > 0) {\n // Pick a random index\n const index = Math.floor(Math.random() * counter);\n // Decrease counter by 1\n counter--;\n // And swap the last element with it\n [array[counter], array[index]] = [array[index], array[counter]];\n }\n return array;\n}\nexports.shuffle = shuffle;\n/**\n * Error message for connection being disconnected\n */\nexports.CONNECTION_CLOSED_ERROR_MSG = \"Connection is closed.\";\nfunction zipMap(keys, values) {\n const map = new Map();\n keys.forEach((key, index) => {\n map.set(key, values[index]);\n });\n return map;\n}\nexports.zipMap = zipMap;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isPromise(obj) {\n return (!!obj &&\n (typeof obj === \"object\" || typeof obj === \"function\") &&\n typeof obj.then === \"function\");\n}\nexports.isPromise = isPromise;\nlet promise = Promise;\nfunction get() {\n return promise;\n}\nexports.get = get;\nfunction set(lib) {\n if (typeof lib !== \"function\") {\n throw new Error(`Provided Promise must be a function, got ${lib}`);\n }\n promise = lib;\n}\nexports.set = set;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst commands = require(\"redis-commands\");\nconst calculateSlot = require(\"cluster-key-slot\");\nconst standard_as_callback_1 = require(\"standard-as-callback\");\nconst utils_1 = require(\"./utils\");\nconst lodash_1 = require(\"./utils/lodash\");\nconst promiseContainer_1 = require(\"./promiseContainer\");\n/**\n * Command instance\n *\n * It's rare that you need to create a Command instance yourself.\n *\n * @export\n * @class Command\n *\n * @example\n * ```js\n * var infoCommand = new Command('info', null, function (err, result) {\n * console.log('result', result);\n * });\n *\n * redis.sendCommand(infoCommand);\n *\n * // When no callback provided, Command instance will have a `promise` property,\n * // which will resolve/reject with the result of the command.\n * var getCommand = new Command('get', ['foo']);\n * getCommand.promise.then(function (result) {\n * console.log('result', result);\n * });\n * ```\n * @see {@link Redis#sendCommand} which can send a Command instance to Redis\n */\nclass Command {\n /**\n * Creates an instance of Command.\n * @param {string} name Command name\n * @param {(Array<string | Buffer | number>)} [args=[]] An array of command arguments\n * @param {ICommandOptions} [options={}]\n * @param {CallbackFunction} [callback] The callback that handles the response.\n * If omit, the response will be handled via Promise\n * @memberof Command\n */\n constructor(name, args = [], options = {}, callback) {\n this.name = name;\n this.transformed = false;\n this.isCustomCommand = false;\n this.inTransaction = false;\n this.isResolved = false;\n this.replyEncoding = options.replyEncoding;\n this.errorStack = options.errorStack;\n this.args = lodash_1.flatten(args);\n this.callback = callback;\n this.initPromise();\n if (options.keyPrefix) {\n this._iterateKeys((key) => options.keyPrefix + key);\n }\n if (options.readOnly) {\n this.isReadOnly = true;\n }\n }\n static getFlagMap() {\n if (!this.flagMap) {\n this.flagMap = Object.keys(Command.FLAGS).reduce((map, flagName) => {\n map[flagName] = {};\n Command.FLAGS[flagName].forEach((commandName) => {\n map[flagName][commandName] = true;\n });\n return map;\n }, {});\n }\n return this.flagMap;\n }\n /**\n * Check whether the command has the flag\n *\n * @param {string} flagName\n * @param {string} commandName\n * @return {boolean}\n */\n static checkFlag(flagName, commandName) {\n return !!this.getFlagMap()[flagName][commandName];\n }\n static setArgumentTransformer(name, func) {\n this._transformer.argument[name] = func;\n }\n static setReplyTransformer(name, func) {\n this._transformer.reply[name] = func;\n }\n initPromise() {\n const Promise = promiseContainer_1.get();\n const promise = new Promise((resolve, reject) => {\n if (!this.transformed) {\n this.transformed = true;\n const transformer = Command._transformer.argument[this.name];\n if (transformer) {\n this.args = transformer(this.args);\n }\n this.stringifyArguments();\n }\n this.resolve = this._convertValue(resolve);\n if (this.errorStack) {\n this.reject = (err) => {\n reject(utils_1.optimizeErrorStack(err, this.errorStack.stack, __dirname));\n };\n }\n else {\n this.reject = reject;\n }\n });\n this.promise = standard_as_callback_1.default(promise, this.callback);\n }\n getSlot() {\n if (typeof this.slot === \"undefined\") {\n const key = this.getKeys()[0];\n this.slot = key == null ? null : calculateSlot(key);\n }\n return this.slot;\n }\n getKeys() {\n return this._iterateKeys();\n }\n /**\n * Iterate through the command arguments that are considered keys.\n *\n * @param {Function} [transform=(key) => key] The transformation that should be applied to\n * each key. The transformations will persist.\n * @returns {string[]} The keys of the command.\n * @memberof Command\n */\n _iterateKeys(transform = (key) => key) {\n if (typeof this.keys === \"undefined\") {\n this.keys = [];\n if (commands.exists(this.name)) {\n const keyIndexes = commands.getKeyIndexes(this.name, this.args);\n for (const index of keyIndexes) {\n this.args[index] = transform(this.args[index]);\n this.keys.push(this.args[index]);\n }\n }\n }\n return this.keys;\n }\n /**\n * Convert command to writable buffer or string\n *\n * @return {string|Buffer}\n * @see {@link Redis#sendCommand}\n * @public\n */\n toWritable() {\n let bufferMode = false;\n for (const arg of this.args) {\n if (arg instanceof Buffer) {\n bufferMode = true;\n break;\n }\n }\n let result;\n const commandStr = \"*\" +\n (this.args.length + 1) +\n \"\\r\\n$\" +\n Buffer.byteLength(this.name) +\n \"\\r\\n\" +\n this.name +\n \"\\r\\n\";\n if (bufferMode) {\n const buffers = new MixedBuffers();\n buffers.push(commandStr);\n for (const arg of this.args) {\n if (arg instanceof Buffer) {\n if (arg.length === 0) {\n buffers.push(\"$0\\r\\n\\r\\n\");\n }\n else {\n buffers.push(\"$\" + arg.length + \"\\r\\n\");\n buffers.push(arg);\n buffers.push(\"\\r\\n\");\n }\n }\n else {\n buffers.push(\"$\" +\n Buffer.byteLength(arg) +\n \"\\r\\n\" +\n arg +\n \"\\r\\n\");\n }\n }\n result = buffers.toBuffer();\n }\n else {\n result = commandStr;\n for (const arg of this.args) {\n result +=\n \"$\" +\n Buffer.byteLength(arg) +\n \"\\r\\n\" +\n arg +\n \"\\r\\n\";\n }\n }\n return result;\n }\n stringifyArguments() {\n for (let i = 0; i < this.args.length; ++i) {\n const arg = this.args[i];\n if (!(arg instanceof Buffer) && typeof arg !== \"string\") {\n this.args[i] = utils_1.toArg(arg);\n }\n }\n }\n /**\n * Convert the value from buffer to the target encoding.\n *\n * @private\n * @param {Function} resolve The resolve function of the Promise\n * @returns {Function} A function to transform and resolve a value\n * @memberof Command\n */\n _convertValue(resolve) {\n return (value) => {\n try {\n const existingTimer = this._commandTimeoutTimer;\n if (existingTimer) {\n clearTimeout(existingTimer);\n delete this._commandTimeoutTimer;\n }\n resolve(this.transformReply(value));\n this.isResolved = true;\n }\n catch (err) {\n this.reject(err);\n }\n return this.promise;\n };\n }\n /**\n * Convert buffer/buffer[] to string/string[],\n * and apply reply transformer.\n *\n * @memberof Command\n */\n transformReply(result) {\n if (this.replyEncoding) {\n result = utils_1.convertBufferToString(result, this.replyEncoding);\n }\n const transformer = Command._transformer.reply[this.name];\n if (transformer) {\n result = transformer(result);\n }\n return result;\n }\n /**\n * Set the wait time before terminating the attempt to execute a command\n * and generating an error.\n */\n setTimeout(ms) {\n if (!this._commandTimeoutTimer) {\n this._commandTimeoutTimer = setTimeout(() => {\n if (!this.isResolved) {\n this.reject(new Error(\"Command timed out\"));\n }\n }, ms);\n }\n }\n}\nexports.default = Command;\nCommand.FLAGS = {\n VALID_IN_SUBSCRIBER_MODE: [\n \"subscribe\",\n \"psubscribe\",\n \"unsubscribe\",\n \"punsubscribe\",\n \"ping\",\n \"quit\",\n ],\n VALID_IN_MONITOR_MODE: [\"monitor\", \"auth\"],\n ENTER_SUBSCRIBER_MODE: [\"subscribe\", \"psubscribe\"],\n EXIT_SUBSCRIBER_MODE: [\"unsubscribe\", \"punsubscribe\"],\n WILL_DISCONNECT: [\"quit\"],\n};\nCommand._transformer = {\n argument: {},\n reply: {},\n};\nconst msetArgumentTransformer = function (args) {\n if (args.length === 1) {\n if (typeof Map !== \"undefined\" && args[0] instanceof Map) {\n return utils_1.convertMapToArray(args[0]);\n }\n if (typeof args[0] === \"object\" && args[0] !== null) {\n return utils_1.convertObjectToArray(args[0]);\n }\n }\n return args;\n};\nconst hsetArgumentTransformer = function (args) {\n if (args.length === 2) {\n if (typeof Map !== \"undefined\" && args[1] instanceof Map) {\n return [args[0]].concat(utils_1.convertMapToArray(args[1]));\n }\n if (typeof args[1] === \"object\" && args[1] !== null) {\n return [args[0]].concat(utils_1.convertObjectToArray(args[1]));\n }\n }\n return args;\n};\nCommand.setArgumentTransformer(\"mset\", msetArgumentTransformer);\nCommand.setArgumentTransformer(\"msetnx\", msetArgumentTransformer);\nCommand.setArgumentTransformer(\"hset\", hsetArgumentTransformer);\nCommand.setArgumentTransformer(\"hmset\", hsetArgumentTransformer);\nCommand.setReplyTransformer(\"hgetall\", function (result) {\n if (Array.isArray(result)) {\n const obj = {};\n for (let i = 0; i < result.length; i += 2) {\n const key = result[i];\n const value = result[i + 1];\n if (key in obj) {\n // can only be truthy if the property is special somehow, like '__proto__' or 'constructor'\n // https://github.com/luin/ioredis/issues/1267\n Object.defineProperty(obj, key, {\n value,\n configurable: true,\n enumerable: true,\n writable: true,\n });\n }\n else {\n obj[key] = value;\n }\n }\n return obj;\n }\n return result;\n});\nclass MixedBuffers {\n constructor() {\n this.length = 0;\n this.items = [];\n }\n push(x) {\n this.length += Buffer.byteLength(x);\n this.items.push(x);\n }\n toBuffer() {\n const result = Buffer.allocUnsafe(this.length);\n let offset = 0;\n for (const item of this.items) {\n const length = Buffer.byteLength(item);\n Buffer.isBuffer(item)\n ? item.copy(result, offset)\n : result.write(item, offset, length);\n offset += length;\n }\n return result;\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst crypto_1 = require(\"crypto\");\nconst promiseContainer_1 = require(\"./promiseContainer\");\nconst command_1 = require(\"./command\");\nconst standard_as_callback_1 = require(\"standard-as-callback\");\nclass Script {\n constructor(lua, numberOfKeys = null, keyPrefix = \"\", readOnly = false) {\n this.lua = lua;\n this.numberOfKeys = numberOfKeys;\n this.keyPrefix = keyPrefix;\n this.readOnly = readOnly;\n this.sha = crypto_1.createHash(\"sha1\").update(lua).digest(\"hex\");\n }\n execute(container, args, options, callback) {\n if (typeof this.numberOfKeys === \"number\") {\n args.unshift(this.numberOfKeys);\n }\n if (this.keyPrefix) {\n options.keyPrefix = this.keyPrefix;\n }\n if (this.readOnly) {\n options.readOnly = true;\n }\n const evalsha = new command_1.default(\"evalsha\", [this.sha].concat(args), options);\n evalsha.isCustomCommand = true;\n const result = container.sendCommand(evalsha);\n if (promiseContainer_1.isPromise(result)) {\n return standard_as_callback_1.default(result.catch((err) => {\n if (err.toString().indexOf(\"NOSCRIPT\") === -1) {\n throw err;\n }\n return container.sendCommand(new command_1.default(\"eval\", [this.lua].concat(args), options));\n }), callback);\n }\n // result is not a Promise--probably returned from a pipeline chain; however,\n // we still need the callback to fire when the script is evaluated\n standard_as_callback_1.default(evalsha.promise, callback);\n return result;\n }\n}\nexports.default = Script;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst PromiseContainer = require(\"./promiseContainer\");\nconst lodash_1 = require(\"./utils/lodash\");\nconst calculateSlot = require(\"cluster-key-slot\");\nconst standard_as_callback_1 = require(\"standard-as-callback\");\nexports.kExec = Symbol(\"exec\");\nexports.kCallbacks = Symbol(\"callbacks\");\nexports.notAllowedAutoPipelineCommands = [\n \"auth\",\n \"info\",\n \"script\",\n \"quit\",\n \"cluster\",\n \"pipeline\",\n \"multi\",\n \"subscribe\",\n \"psubscribe\",\n \"unsubscribe\",\n \"unpsubscribe\",\n];\nfunction executeAutoPipeline(client, slotKey) {\n /*\n If a pipeline is already executing, keep queueing up commands\n since ioredis won't serve two pipelines at the same time\n */\n if (client._runningAutoPipelines.has(slotKey)) {\n return;\n }\n if (!client._autoPipelines.has(slotKey)) {\n /*\n Rare edge case. Somehow, something has deleted this running autopipeline in an immediate\n call to executeAutoPipeline.\n \n Maybe the callback in the pipeline.exec is sometimes called in the same tick,\n e.g. if redis is disconnected?\n */\n return;\n }\n client._runningAutoPipelines.add(slotKey);\n // Get the pipeline and immediately delete it so that new commands are queued on a new pipeline\n const pipeline = client._autoPipelines.get(slotKey);\n client._autoPipelines.delete(slotKey);\n const callbacks = pipeline[exports.kCallbacks];\n // Stop keeping a reference to callbacks immediately after the callbacks stop being used.\n // This allows the GC to reclaim objects referenced by callbacks, especially with 16384 slots\n // in Redis.Cluster\n pipeline[exports.kCallbacks] = null;\n // Perform the call\n pipeline.exec(function (err, results) {\n client._runningAutoPipelines.delete(slotKey);\n /*\n Invoke all callback in nextTick so the stack is cleared\n and callbacks can throw errors without affecting other callbacks.\n */\n if (err) {\n for (let i = 0; i < callbacks.length; i++) {\n process.nextTick(callbacks[i], err);\n }\n }\n else {\n for (let i = 0; i < callbacks.length; i++) {\n process.nextTick(callbacks[i], ...results[i]);\n }\n }\n // If there is another pipeline on the same node, immediately execute it without waiting for nextTick\n if (client._autoPipelines.has(slotKey)) {\n executeAutoPipeline(client, slotKey);\n }\n });\n}\nfunction shouldUseAutoPipelining(client, functionName, commandName) {\n return (functionName &&\n client.options.enableAutoPipelining &&\n !client.isPipeline &&\n !exports.notAllowedAutoPipelineCommands.includes(commandName) &&\n !client.options.autoPipeliningIgnoredCommands.includes(commandName));\n}\nexports.shouldUseAutoPipelining = shouldUseAutoPipelining;\n/**\n * @private\n */\nfunction getFirstValueInFlattenedArray(args) {\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (typeof arg === \"string\") {\n return arg;\n }\n else if (Array.isArray(arg) || lodash_1.isArguments(arg)) {\n if (arg.length === 0) {\n continue;\n }\n return arg[0];\n }\n const flattened = lodash_1.flatten([arg]);\n if (flattened.length > 0) {\n return flattened[0];\n }\n }\n return undefined;\n}\nexports.getFirstValueInFlattenedArray = getFirstValueInFlattenedArray;\nfunction executeWithAutoPipelining(client, functionName, commandName, args, callback) {\n const CustomPromise = PromiseContainer.get();\n // On cluster mode let's wait for slots to be available\n if (client.isCluster && !client.slots.length) {\n if (client.status === \"wait\")\n client.connect().catch(lodash_1.noop);\n return standard_as_callback_1.default(new CustomPromise(function (resolve, reject) {\n client.delayUntilReady((err) => {\n if (err) {\n reject(err);\n return;\n }\n executeWithAutoPipelining(client, functionName, commandName, args, null).then(resolve, reject);\n });\n }), callback);\n }\n // If we have slot information, we can improve routing by grouping slots served by the same subset of nodes\n // Note that the first value in args may be a (possibly empty) array.\n // ioredis will only flatten one level of the array, in the Command constructor.\n const prefix = client.options.keyPrefix || \"\";\n const slotKey = client.isCluster\n ? client.slots[calculateSlot(`${prefix}${getFirstValueInFlattenedArray(args)}`)].join(\",\")\n : \"main\";\n if (!client._autoPipelines.has(slotKey)) {\n const pipeline = client.pipeline();\n pipeline[exports.kExec] = false;\n pipeline[exports.kCallbacks] = [];\n client._autoPipelines.set(slotKey, pipeline);\n }\n const pipeline = client._autoPipelines.get(slotKey);\n /*\n Mark the pipeline as scheduled.\n The symbol will make sure that the pipeline is only scheduled once per tick.\n New commands are appended to an already scheduled pipeline.\n */\n if (!pipeline[exports.kExec]) {\n pipeline[exports.kExec] = true;\n /*\n Deferring with setImmediate so we have a chance to capture multiple\n commands that can be scheduled by I/O events already in the event loop queue.\n */\n setImmediate(executeAutoPipeline, client, slotKey);\n }\n // Create the promise which will execute the command in the pipeline.\n const autoPipelinePromise = new CustomPromise(function (resolve, reject) {\n pipeline[exports.kCallbacks].push(function (err, value) {\n if (err) {\n reject(err);\n return;\n }\n resolve(value);\n });\n pipeline[functionName](...args);\n });\n return standard_as_callback_1.default(autoPipelinePromise, callback);\n}\nexports.executeWithAutoPipelining = executeWithAutoPipelining;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst lodash_1 = require(\"./utils/lodash\");\nconst command_1 = require(\"./command\");\nconst script_1 = require(\"./script\");\nconst PromiseContainer = require(\"./promiseContainer\");\nconst standard_as_callback_1 = require(\"standard-as-callback\");\nconst autoPipelining_1 = require(\"./autoPipelining\");\nconst DROP_BUFFER_SUPPORT_ERROR = \"*Buffer methods are not available \" +\n 'because \"dropBufferSupport\" option is enabled.' +\n \"Refer to https://github.com/luin/ioredis/wiki/Improve-Performance for more details.\";\n/**\n * Commander\n *\n * This is the base class of Redis, Redis.Cluster and Pipeline\n *\n * @param {boolean} [options.showFriendlyErrorStack=false] - Whether to show a friendly error stack.\n * Will decrease the performance significantly.\n * @constructor\n */\nfunction Commander() {\n this.options = lodash_1.defaults({}, this.options || {}, {\n showFriendlyErrorStack: false,\n });\n this.scriptsSet = {};\n this.addedBuiltinSet = new Set();\n}\nexports.default = Commander;\nconst commands = require(\"redis-commands\").list.filter(function (command) {\n return command !== \"monitor\";\n});\ncommands.push(\"sentinel\");\n/**\n * Return supported builtin commands\n *\n * @return {string[]} command list\n * @public\n */\nCommander.prototype.getBuiltinCommands = function () {\n return commands.slice(0);\n};\n/**\n * Create a builtin command\n *\n * @param {string} commandName - command name\n * @return {object} functions\n * @public\n */\nCommander.prototype.createBuiltinCommand = function (commandName) {\n return {\n string: generateFunction(null, commandName, \"utf8\"),\n buffer: generateFunction(null, commandName, null),\n };\n};\n/**\n * Create add builtin command\n *\n * @param {string} commandName - command name\n * @return {object} functions\n * @public\n */\nCommander.prototype.addBuiltinCommand = function (commandName) {\n this.addedBuiltinSet.add(commandName);\n this[commandName] = generateFunction(commandName, commandName, \"utf8\");\n this[commandName + \"Buffer\"] = generateFunction(commandName + \"Buffer\", commandName, null);\n};\ncommands.forEach(function (commandName) {\n Commander.prototype[commandName] = generateFunction(commandName, commandName, \"utf8\");\n Commander.prototype[commandName + \"Buffer\"] = generateFunction(commandName + \"Buffer\", commandName, null);\n});\nCommander.prototype.call = generateFunction(\"call\", \"utf8\");\nCommander.prototype.callBuffer = generateFunction(\"callBuffer\", null);\n// eslint-disable-next-line @typescript-eslint/camelcase\nCommander.prototype.send_command = Commander.prototype.call;\n/**\n * Define a custom command using lua script\n *\n * @param {string} name - the command name\n * @param {object} definition\n * @param {string} definition.lua - the lua code\n * @param {number} [definition.numberOfKeys=null] - the number of keys.\n * @param {boolean} [definition.readOnly=false] - force this script to be readonly so it executes on slaves as well.\n * If omit, you have to pass the number of keys as the first argument every time you invoke the command\n */\nCommander.prototype.defineCommand = function (name, definition) {\n const script = new script_1.default(definition.lua, definition.numberOfKeys, this.options.keyPrefix, definition.readOnly);\n this.scriptsSet[name] = script;\n this[name] = generateScriptingFunction(name, name, script, \"utf8\");\n this[name + \"Buffer\"] = generateScriptingFunction(name + \"Buffer\", name, script, null);\n};\n/**\n * Send a command\n *\n * @abstract\n * @public\n */\nCommander.prototype.sendCommand = function () { };\nfunction generateFunction(functionName, _commandName, _encoding) {\n if (typeof _encoding === \"undefined\") {\n _encoding = _commandName;\n _commandName = null;\n }\n return function (...args) {\n const commandName = _commandName || args.shift();\n let callback = args[args.length - 1];\n if (typeof callback === \"function\") {\n args.pop();\n }\n else {\n callback = undefined;\n }\n const options = {\n errorStack: this.options.showFriendlyErrorStack ? new Error() : undefined,\n keyPrefix: this.options.keyPrefix,\n replyEncoding: _encoding,\n };\n if (this.options.dropBufferSupport && !_encoding) {\n return standard_as_callback_1.default(PromiseContainer.get().reject(new Error(DROP_BUFFER_SUPPORT_ERROR)), callback);\n }\n // No auto pipeline, use regular command sending\n if (!autoPipelining_1.shouldUseAutoPipelining(this, functionName, commandName)) {\n return this.sendCommand(new command_1.default(commandName, args, options, callback));\n }\n // Create a new pipeline and make sure it's scheduled\n return autoPipelining_1.executeWithAutoPipelining(this, functionName, commandName, args, callback);\n };\n}\nfunction generateScriptingFunction(functionName, commandName, script, encoding) {\n return function () {\n let length = arguments.length;\n const lastArgIndex = length - 1;\n let callback = arguments[lastArgIndex];\n if (typeof callback !== \"function\") {\n callback = undefined;\n }\n else {\n length = lastArgIndex;\n }\n const args = new Array(length);\n for (let i = 0; i < length; i++) {\n args[i] = arguments[i];\n }\n let options;\n if (this.options.dropBufferSupport) {\n if (!encoding) {\n return standard_as_callback_1.default(PromiseContainer.get().reject(new Error(DROP_BUFFER_SUPPORT_ERROR)), callback);\n }\n options = { replyEncoding: null };\n }\n else {\n options = { replyEncoding: encoding };\n }\n if (this.options.showFriendlyErrorStack) {\n options.errorStack = new Error();\n }\n // No auto pipeline, use regular command sending\n if (!autoPipelining_1.shouldUseAutoPipelining(this, functionName, commandName)) {\n return script.execute(this, args, options, callback);\n }\n // Create a new pipeline and make sure it's scheduled\n return autoPipelining_1.executeWithAutoPipelining(this, functionName, commandName, args, callback);\n };\n}\n","'use strict'\n\nconst assert = require('assert')\nconst util = require('util')\n\n// RedisError\n\nfunction RedisError (message) {\n Object.defineProperty(this, 'message', {\n value: message || '',\n configurable: true,\n writable: true\n })\n Error.captureStackTrace(this, this.constructor)\n}\n\nutil.inherits(RedisError, Error)\n\nObject.defineProperty(RedisError.prototype, 'name', {\n value: 'RedisError',\n configurable: true,\n writable: true\n})\n\n// ParserError\n\nfunction ParserError (message, buffer, offset) {\n assert(buffer)\n assert.strictEqual(typeof offset, 'number')\n\n Object.defineProperty(this, 'message', {\n value: message || '',\n configurable: true,\n writable: true\n })\n\n const tmp = Error.stackTraceLimit\n Error.stackTraceLimit = 2\n Error.captureStackTrace(this, this.constructor)\n Error.stackTraceLimit = tmp\n this.offset = offset\n this.buffer = buffer\n}\n\nutil.inherits(ParserError, RedisError)\n\nObject.defineProperty(ParserError.prototype, 'name', {\n value: 'ParserError',\n configurable: true,\n writable: true\n})\n\n// ReplyError\n\nfunction ReplyError (message) {\n Object.defineProperty(this, 'message', {\n value: message || '',\n configurable: true,\n writable: true\n })\n const tmp = Error.stackTraceLimit\n Error.stackTraceLimit = 2\n Error.captureStackTrace(this, this.constructor)\n Error.stackTraceLimit = tmp\n}\n\nutil.inherits(ReplyError, RedisError)\n\nObject.defineProperty(ReplyError.prototype, 'name', {\n value: 'ReplyError',\n configurable: true,\n writable: true\n})\n\n// AbortError\n\nfunction AbortError (message) {\n Object.defineProperty(this, 'message', {\n value: message || '',\n configurable: true,\n writable: true\n })\n Error.captureStackTrace(this, this.constructor)\n}\n\nutil.inherits(AbortError, RedisError)\n\nObject.defineProperty(AbortError.prototype, 'name', {\n value: 'AbortError',\n configurable: true,\n writable: true\n})\n\n// InterruptError\n\nfunction InterruptError (message) {\n Object.defineProperty(this, 'message', {\n value: message || '',\n configurable: true,\n writable: true\n })\n Error.captureStackTrace(this, this.constructor)\n}\n\nutil.inherits(InterruptError, AbortError)\n\nObject.defineProperty(InterruptError.prototype, 'name', {\n value: 'InterruptError',\n configurable: true,\n writable: true\n})\n\nmodule.exports = {\n RedisError,\n ParserError,\n ReplyError,\n AbortError,\n InterruptError\n}\n","'use strict'\n\nconst assert = require('assert')\n\nclass RedisError extends Error {\n get name () {\n return this.constructor.name\n }\n}\n\nclass ParserError extends RedisError {\n constructor (message, buffer, offset) {\n assert(buffer)\n assert.strictEqual(typeof offset, 'number')\n\n const tmp = Error.stackTraceLimit\n Error.stackTraceLimit = 2\n super(message)\n Error.stackTraceLimit = tmp\n this.offset = offset\n this.buffer = buffer\n }\n\n get name () {\n return this.constructor.name\n }\n}\n\nclass ReplyError extends RedisError {\n constructor (message) {\n const tmp = Error.stackTraceLimit\n Error.stackTraceLimit = 2\n super(message)\n Error.stackTraceLimit = tmp\n }\n get name () {\n return this.constructor.name\n }\n}\n\nclass AbortError extends RedisError {\n get name () {\n return this.constructor.name\n }\n}\n\nclass InterruptError extends AbortError {\n get name () {\n return this.constructor.name\n }\n}\n\nmodule.exports = {\n RedisError,\n ParserError,\n ReplyError,\n AbortError,\n InterruptError\n}\n","'use strict'\n\nconst Errors = process.version.charCodeAt(1) < 55 && process.version.charCodeAt(2) === 46\n ? require('./lib/old') // Node.js < 7\n : require('./lib/modern')\n\nmodule.exports = Errors\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst redis_errors_1 = require(\"redis-errors\");\nclass MaxRetriesPerRequestError extends redis_errors_1.AbortError {\n constructor(maxRetriesPerRequest) {\n const message = `Reached the max retries per request limit (which is ${maxRetriesPerRequest}). Refer to \"maxRetriesPerRequest\" option for details.`;\n super(message);\n Error.captureStackTrace(this, this.constructor);\n }\n get name() {\n return this.constructor.name;\n }\n}\nexports.default = MaxRetriesPerRequestError;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst MaxRetriesPerRequestError_1 = require(\"./MaxRetriesPerRequestError\");\nexports.MaxRetriesPerRequestError = MaxRetriesPerRequestError_1.default;\n","'use strict'\n\nconst Buffer = require('buffer').Buffer\nconst StringDecoder = require('string_decoder').StringDecoder\nconst decoder = new StringDecoder()\nconst errors = require('redis-errors')\nconst ReplyError = errors.ReplyError\nconst ParserError = errors.ParserError\nvar bufferPool = Buffer.allocUnsafe(32 * 1024)\nvar bufferOffset = 0\nvar interval = null\nvar counter = 0\nvar notDecreased = 0\n\n/**\n * Used for integer numbers only\n * @param {JavascriptRedisParser} parser\n * @returns {undefined|number}\n */\nfunction parseSimpleNumbers (parser) {\n const length = parser.buffer.length - 1\n var offset = parser.offset\n var number = 0\n var sign = 1\n\n if (parser.buffer[offset] === 45) {\n sign = -1\n offset++\n }\n\n while (offset < length) {\n const c1 = parser.buffer[offset++]\n if (c1 === 13) { // \\r\\n\n parser.offset = offset + 1\n return sign * number\n }\n number = (number * 10) + (c1 - 48)\n }\n}\n\n/**\n * Used for integer numbers in case of the returnNumbers option\n *\n * Reading the string as parts of n SMI is more efficient than\n * using a string directly.\n *\n * @param {JavascriptRedisParser} parser\n * @returns {undefined|string}\n */\nfunction parseStringNumbers (parser) {\n const length = parser.buffer.length - 1\n var offset = parser.offset\n var number = 0\n var res = ''\n\n if (parser.buffer[offset] === 45) {\n res += '-'\n offset++\n }\n\n while (offset < length) {\n var c1 = parser.buffer[offset++]\n if (c1 === 13) { // \\r\\n\n parser.offset = offset + 1\n if (number !== 0) {\n res += number\n }\n return res\n } else if (number > 429496728) {\n res += (number * 10) + (c1 - 48)\n number = 0\n } else if (c1 === 48 && number === 0) {\n res += 0\n } else {\n number = (number * 10) + (c1 - 48)\n }\n }\n}\n\n/**\n * Parse a '+' redis simple string response but forward the offsets\n * onto convertBufferRange to generate a string.\n * @param {JavascriptRedisParser} parser\n * @returns {undefined|string|Buffer}\n */\nfunction parseSimpleString (parser) {\n const start = parser.offset\n const buffer = parser.buffer\n const length = buffer.length - 1\n var offset = start\n\n while (offset < length) {\n if (buffer[offset++] === 13) { // \\r\\n\n parser.offset = offset + 1\n if (parser.optionReturnBuffers === true) {\n return parser.buffer.slice(start, offset - 1)\n }\n return parser.buffer.toString('utf8', start, offset - 1)\n }\n }\n}\n\n/**\n * Returns the read length\n * @param {JavascriptRedisParser} parser\n * @returns {undefined|number}\n */\nfunction parseLength (parser) {\n const length = parser.buffer.length - 1\n var offset = parser.offset\n var number = 0\n\n while (offset < length) {\n const c1 = parser.buffer[offset++]\n if (c1 === 13) {\n parser.offset = offset + 1\n return number\n }\n number = (number * 10) + (c1 - 48)\n }\n}\n\n/**\n * Parse a ':' redis integer response\n *\n * If stringNumbers is activated the parser always returns numbers as string\n * This is important for big numbers (number > Math.pow(2, 53)) as js numbers\n * are 64bit floating point numbers with reduced precision\n *\n * @param {JavascriptRedisParser} parser\n * @returns {undefined|number|string}\n */\nfunction parseInteger (parser) {\n if (parser.optionStringNumbers === true) {\n return parseStringNumbers(parser)\n }\n return parseSimpleNumbers(parser)\n}\n\n/**\n * Parse a '$' redis bulk string response\n * @param {JavascriptRedisParser} parser\n * @returns {undefined|null|string}\n */\nfunction parseBulkString (parser) {\n const length = parseLength(parser)\n if (length === undefined) {\n return\n }\n if (length < 0) {\n return null\n }\n const offset = parser.offset + length\n if (offset + 2 > parser.buffer.length) {\n parser.bigStrSize = offset + 2\n parser.totalChunkSize = parser.buffer.length\n parser.bufferCache.push(parser.buffer)\n return\n }\n const start = parser.offset\n parser.offset = offset + 2\n if (parser.optionReturnBuffers === true) {\n return parser.buffer.slice(start, offset)\n }\n return parser.buffer.toString('utf8', start, offset)\n}\n\n/**\n * Parse a '-' redis error response\n * @param {JavascriptRedisParser} parser\n * @returns {ReplyError}\n */\nfunction parseError (parser) {\n var string = parseSimpleString(parser)\n if (string !== undefined) {\n if (parser.optionReturnBuffers === true) {\n string = string.toString()\n }\n return new ReplyError(string)\n }\n}\n\n/**\n * Parsing error handler, resets parser buffer\n * @param {JavascriptRedisParser} parser\n * @param {number} type\n * @returns {undefined}\n */\nfunction handleError (parser, type) {\n const err = new ParserError(\n 'Protocol error, got ' + JSON.stringify(String.fromCharCode(type)) + ' as reply type byte',\n JSON.stringify(parser.buffer),\n parser.offset\n )\n parser.buffer = null\n parser.returnFatalError(err)\n}\n\n/**\n * Parse a '*' redis array response\n * @param {JavascriptRedisParser} parser\n * @returns {undefined|null|any[]}\n */\nfunction parseArray (parser) {\n const length = parseLength(parser)\n if (length === undefined) {\n return\n }\n if (length < 0) {\n return null\n }\n const responses = new Array(length)\n return parseArrayElements(parser, responses, 0)\n}\n\n/**\n * Push a partly parsed array to the stack\n *\n * @param {JavascriptRedisParser} parser\n * @param {any[]} array\n * @param {number} pos\n * @returns {undefined}\n */\nfunction pushArrayCache (parser, array, pos) {\n parser.arrayCache.push(array)\n parser.arrayPos.push(pos)\n}\n\n/**\n * Parse chunked redis array response\n * @param {JavascriptRedisParser} parser\n * @returns {undefined|any[]}\n */\nfunction parseArrayChunks (parser) {\n const tmp = parser.arrayCache.pop()\n var pos = parser.arrayPos.pop()\n if (parser.arrayCache.length) {\n const res = parseArrayChunks(parser)\n if (res === undefined) {\n pushArrayCache(parser, tmp, pos)\n return\n }\n tmp[pos++] = res\n }\n return parseArrayElements(parser, tmp, pos)\n}\n\n/**\n * Parse redis array response elements\n * @param {JavascriptRedisParser} parser\n * @param {Array} responses\n * @param {number} i\n * @returns {undefined|null|any[]}\n */\nfunction parseArrayElements (parser, responses, i) {\n const bufferLength = parser.buffer.length\n while (i < responses.length) {\n const offset = parser.offset\n if (parser.offset >= bufferLength) {\n pushArrayCache(parser, responses, i)\n return\n }\n const response = parseType(parser, parser.buffer[parser.offset++])\n if (response === undefined) {\n if (!(parser.arrayCache.length || parser.bufferCache.length)) {\n parser.offset = offset\n }\n pushArrayCache(parser, responses, i)\n return\n }\n responses[i] = response\n i++\n }\n\n return responses\n}\n\n/**\n * Called the appropriate parser for the specified type.\n *\n * 36: $\n * 43: +\n * 42: *\n * 58: :\n * 45: -\n *\n * @param {JavascriptRedisParser} parser\n * @param {number} type\n * @returns {*}\n */\nfunction parseType (parser, type) {\n switch (type) {\n case 36:\n return parseBulkString(parser)\n case 43:\n return parseSimpleString(parser)\n case 42:\n return parseArray(parser)\n case 58:\n return parseInteger(parser)\n case 45:\n return parseError(parser)\n default:\n return handleError(parser, type)\n }\n}\n\n/**\n * Decrease the bufferPool size over time\n *\n * Balance between increasing and decreasing the bufferPool.\n * Decrease the bufferPool by 10% by removing the first 10% of the current pool.\n * @returns {undefined}\n */\nfunction decreaseBufferPool () {\n if (bufferPool.length > 50 * 1024) {\n if (counter === 1 || notDecreased > counter * 2) {\n const minSliceLen = Math.floor(bufferPool.length / 10)\n const sliceLength = minSliceLen < bufferOffset\n ? bufferOffset\n : minSliceLen\n bufferOffset = 0\n bufferPool = bufferPool.slice(sliceLength, bufferPool.length)\n } else {\n notDecreased++\n counter--\n }\n } else {\n clearInterval(interval)\n counter = 0\n notDecreased = 0\n interval = null\n }\n}\n\n/**\n * Check if the requested size fits in the current bufferPool.\n * If it does not, reset and increase the bufferPool accordingly.\n *\n * @param {number} length\n * @returns {undefined}\n */\nfunction resizeBuffer (length) {\n if (bufferPool.length < length + bufferOffset) {\n const multiplier = length > 1024 * 1024 * 75 ? 2 : 3\n if (bufferOffset > 1024 * 1024 * 111) {\n bufferOffset = 1024 * 1024 * 50\n }\n bufferPool = Buffer.allocUnsafe(length * multiplier + bufferOffset)\n bufferOffset = 0\n counter++\n if (interval === null) {\n interval = setInterval(decreaseBufferPool, 50)\n }\n }\n}\n\n/**\n * Concat a bulk string containing multiple chunks\n *\n * Notes:\n * 1) The first chunk might contain the whole bulk string including the \\r\n * 2) We are only safe to fully add up elements that are neither the first nor any of the last two elements\n *\n * @param {JavascriptRedisParser} parser\n * @returns {String}\n */\nfunction concatBulkString (parser) {\n const list = parser.bufferCache\n const oldOffset = parser.offset\n var chunks = list.length\n var offset = parser.bigStrSize - parser.totalChunkSize\n parser.offset = offset\n if (offset <= 2) {\n if (chunks === 2) {\n return list[0].toString('utf8', oldOffset, list[0].length + offset - 2)\n }\n chunks--\n offset = list[list.length - 2].length + offset\n }\n var res = decoder.write(list[0].slice(oldOffset))\n for (var i = 1; i < chunks - 1; i++) {\n res += decoder.write(list[i])\n }\n res += decoder.end(list[i].slice(0, offset - 2))\n return res\n}\n\n/**\n * Concat the collected chunks from parser.bufferCache.\n *\n * Increases the bufferPool size beforehand if necessary.\n *\n * @param {JavascriptRedisParser} parser\n * @returns {Buffer}\n */\nfunction concatBulkBuffer (parser) {\n const list = parser.bufferCache\n const oldOffset = parser.offset\n const length = parser.bigStrSize - oldOffset - 2\n var chunks = list.length\n var offset = parser.bigStrSize - parser.totalChunkSize\n parser.offset = offset\n if (offset <= 2) {\n if (chunks === 2) {\n return list[0].slice(oldOffset, list[0].length + offset - 2)\n }\n chunks--\n offset = list[list.length - 2].length + offset\n }\n resizeBuffer(length)\n const start = bufferOffset\n list[0].copy(bufferPool, start, oldOffset, list[0].length)\n bufferOffset += list[0].length - oldOffset\n for (var i = 1; i < chunks - 1; i++) {\n list[i].copy(bufferPool, bufferOffset)\n bufferOffset += list[i].length\n }\n list[i].copy(bufferPool, bufferOffset, 0, offset - 2)\n bufferOffset += offset - 2\n return bufferPool.slice(start, bufferOffset)\n}\n\nclass JavascriptRedisParser {\n /**\n * Javascript Redis Parser constructor\n * @param {{returnError: Function, returnReply: Function, returnFatalError?: Function, returnBuffers: boolean, stringNumbers: boolean }} options\n * @constructor\n */\n constructor (options) {\n if (!options) {\n throw new TypeError('Options are mandatory.')\n }\n if (typeof options.returnError !== 'function' || typeof options.returnReply !== 'function') {\n throw new TypeError('The returnReply and returnError options have to be functions.')\n }\n this.setReturnBuffers(!!options.returnBuffers)\n this.setStringNumbers(!!options.stringNumbers)\n this.returnError = options.returnError\n this.returnFatalError = options.returnFatalError || options.returnError\n this.returnReply = options.returnReply\n this.reset()\n }\n\n /**\n * Reset the parser values to the initial state\n *\n * @returns {undefined}\n */\n reset () {\n this.offset = 0\n this.buffer = null\n this.bigStrSize = 0\n this.totalChunkSize = 0\n this.bufferCache = []\n this.arrayCache = []\n this.arrayPos = []\n }\n\n /**\n * Set the returnBuffers option\n *\n * @param {boolean} returnBuffers\n * @returns {undefined}\n */\n setReturnBuffers (returnBuffers) {\n if (typeof returnBuffers !== 'boolean') {\n throw new TypeError('The returnBuffers argument has to be a boolean')\n }\n this.optionReturnBuffers = returnBuffers\n }\n\n /**\n * Set the stringNumbers option\n *\n * @param {boolean} stringNumbers\n * @returns {undefined}\n */\n setStringNumbers (stringNumbers) {\n if (typeof stringNumbers !== 'boolean') {\n throw new TypeError('The stringNumbers argument has to be a boolean')\n }\n this.optionStringNumbers = stringNumbers\n }\n\n /**\n * Parse the redis buffer\n * @param {Buffer} buffer\n * @returns {undefined}\n */\n execute (buffer) {\n if (this.buffer === null) {\n this.buffer = buffer\n this.offset = 0\n } else if (this.bigStrSize === 0) {\n const oldLength = this.buffer.length\n const remainingLength = oldLength - this.offset\n const newBuffer = Buffer.allocUnsafe(remainingLength + buffer.length)\n this.buffer.copy(newBuffer, 0, this.offset, oldLength)\n buffer.copy(newBuffer, remainingLength, 0, buffer.length)\n this.buffer = newBuffer\n this.offset = 0\n if (this.arrayCache.length) {\n const arr = parseArrayChunks(this)\n if (arr === undefined) {\n return\n }\n this.returnReply(arr)\n }\n } else if (this.totalChunkSize + buffer.length >= this.bigStrSize) {\n this.bufferCache.push(buffer)\n var tmp = this.optionReturnBuffers ? concatBulkBuffer(this) : concatBulkString(this)\n this.bigStrSize = 0\n this.bufferCache = []\n this.buffer = buffer\n if (this.arrayCache.length) {\n this.arrayCache[0][this.arrayPos[0]++] = tmp\n tmp = parseArrayChunks(this)\n if (tmp === undefined) {\n return\n }\n }\n this.returnReply(tmp)\n } else {\n this.bufferCache.push(buffer)\n this.totalChunkSize += buffer.length\n return\n }\n\n while (this.offset < this.buffer.length) {\n const offset = this.offset\n const type = this.buffer[this.offset++]\n const response = parseType(this, type)\n if (response === undefined) {\n if (!(this.arrayCache.length || this.bufferCache.length)) {\n this.offset = offset\n }\n return\n }\n\n if (type === 45) {\n this.returnError(response)\n } else {\n this.returnReply(response)\n }\n }\n\n this.buffer = null\n }\n}\n\nmodule.exports = JavascriptRedisParser\n","'use strict'\n\nmodule.exports = require('./lib/parser')\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Tiny class to simplify dealing with subscription set\n *\n * @export\n * @class SubscriptionSet\n */\nclass SubscriptionSet {\n constructor() {\n this.set = {\n subscribe: {},\n psubscribe: {},\n };\n }\n add(set, channel) {\n this.set[mapSet(set)][channel] = true;\n }\n del(set, channel) {\n delete this.set[mapSet(set)][channel];\n }\n channels(set) {\n return Object.keys(this.set[mapSet(set)]);\n }\n isEmpty() {\n return (this.channels(\"subscribe\").length === 0 &&\n this.channels(\"psubscribe\").length === 0);\n }\n}\nexports.default = SubscriptionSet;\nfunction mapSet(set) {\n if (set === \"unsubscribe\") {\n return \"subscribe\";\n }\n if (set === \"punsubscribe\") {\n return \"psubscribe\";\n }\n return set;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst command_1 = require(\"./command\");\nconst utils_1 = require(\"./utils\");\nconst RedisParser = require(\"redis-parser\");\nconst SubscriptionSet_1 = require(\"./SubscriptionSet\");\nconst debug = utils_1.Debug(\"dataHandler\");\nclass DataHandler {\n constructor(redis, parserOptions) {\n this.redis = redis;\n const parser = new RedisParser({\n stringNumbers: parserOptions.stringNumbers,\n returnBuffers: !parserOptions.dropBufferSupport,\n returnError: (err) => {\n this.returnError(err);\n },\n returnFatalError: (err) => {\n this.returnFatalError(err);\n },\n returnReply: (reply) => {\n this.returnReply(reply);\n },\n });\n redis.stream.on(\"data\", (data) => {\n parser.execute(data);\n });\n }\n returnFatalError(err) {\n err.message += \". Please report this.\";\n this.redis.recoverFromFatalError(err, err, { offlineQueue: false });\n }\n returnError(err) {\n const item = this.shiftCommand(err);\n if (!item) {\n return;\n }\n err.command = {\n name: item.command.name,\n args: item.command.args,\n };\n this.redis.handleReconnection(err, item);\n }\n returnReply(reply) {\n if (this.handleMonitorReply(reply)) {\n return;\n }\n if (this.handleSubscriberReply(reply)) {\n return;\n }\n const item = this.shiftCommand(reply);\n if (!item) {\n return;\n }\n if (command_1.default.checkFlag(\"ENTER_SUBSCRIBER_MODE\", item.command.name)) {\n this.redis.condition.subscriber = new SubscriptionSet_1.default();\n this.redis.condition.subscriber.add(item.command.name, reply[1].toString());\n if (!fillSubCommand(item.command, reply[2])) {\n this.redis.commandQueue.unshift(item);\n }\n }\n else if (command_1.default.checkFlag(\"EXIT_SUBSCRIBER_MODE\", item.command.name)) {\n if (!fillUnsubCommand(item.command, reply[2])) {\n this.redis.commandQueue.unshift(item);\n }\n }\n else {\n item.command.resolve(reply);\n }\n }\n handleSubscriberReply(reply) {\n if (!this.redis.condition.subscriber) {\n return false;\n }\n const replyType = Array.isArray(reply) ? reply[0].toString() : null;\n debug('receive reply \"%s\" in subscriber mode', replyType);\n switch (replyType) {\n case \"message\":\n if (this.redis.listeners(\"message\").length > 0) {\n // Check if there're listeners to avoid unnecessary `toString()`.\n this.redis.emit(\"message\", reply[1].toString(), reply[2] ? reply[2].toString() : '');\n }\n this.redis.emit(\"messageBuffer\", reply[1], reply[2]);\n break;\n case \"pmessage\": {\n const pattern = reply[1].toString();\n if (this.redis.listeners(\"pmessage\").length > 0) {\n this.redis.emit(\"pmessage\", pattern, reply[2].toString(), reply[3].toString());\n }\n this.redis.emit(\"pmessageBuffer\", pattern, reply[2], reply[3]);\n break;\n }\n case \"subscribe\":\n case \"psubscribe\": {\n const channel = reply[1].toString();\n this.redis.condition.subscriber.add(replyType, channel);\n const item = this.shiftCommand(reply);\n if (!item) {\n return;\n }\n if (!fillSubCommand(item.command, reply[2])) {\n this.redis.commandQueue.unshift(item);\n }\n break;\n }\n case \"unsubscribe\":\n case \"punsubscribe\": {\n const channel = reply[1] ? reply[1].toString() : null;\n if (channel) {\n this.redis.condition.subscriber.del(replyType, channel);\n }\n const count = reply[2];\n if (count === 0) {\n this.redis.condition.subscriber = false;\n }\n const item = this.shiftCommand(reply);\n if (!item) {\n return;\n }\n if (!fillUnsubCommand(item.command, count)) {\n this.redis.commandQueue.unshift(item);\n }\n break;\n }\n default: {\n const item = this.shiftCommand(reply);\n if (!item) {\n return;\n }\n item.command.resolve(reply);\n }\n }\n return true;\n }\n handleMonitorReply(reply) {\n if (this.redis.status !== \"monitoring\") {\n return false;\n }\n const replyStr = reply.toString();\n if (replyStr === \"OK\") {\n // Valid commands in the monitoring mode are AUTH and MONITOR,\n // both of which always reply with 'OK'.\n // So if we got an 'OK', we can make certain that\n // the reply is made to AUTH & MONITO.\n return false;\n }\n // Since commands sent in the monitoring mode will trigger an exception,\n // any replies we received in the monitoring mode should consider to be\n // realtime monitor data instead of result of commands.\n const len = replyStr.indexOf(\" \");\n const timestamp = replyStr.slice(0, len);\n const argindex = replyStr.indexOf('\"');\n const args = replyStr\n .slice(argindex + 1, -1)\n .split('\" \"')\n .map((elem) => elem.replace(/\\\\\"/g, '\"'));\n const dbAndSource = replyStr.slice(len + 2, argindex - 2).split(\" \");\n this.redis.emit(\"monitor\", timestamp, args, dbAndSource[1], dbAndSource[0]);\n return true;\n }\n shiftCommand(reply) {\n const item = this.redis.commandQueue.shift();\n if (!item) {\n const message = \"Command queue state error. If you can reproduce this, please report it.\";\n const error = new Error(message +\n (reply instanceof Error\n ? ` Last error: ${reply.message}`\n : ` Last reply: ${reply.toString()}`));\n this.redis.emit(\"error\", error);\n return null;\n }\n return item;\n }\n}\nexports.default = DataHandler;\nfunction fillSubCommand(command, count) {\n // TODO: use WeakMap here\n if (typeof command.remainReplies === \"undefined\") {\n command.remainReplies = command.args.length;\n }\n if (--command.remainReplies === 0) {\n command.resolve(count);\n return true;\n }\n return false;\n}\nfunction fillUnsubCommand(command, count) {\n if (typeof command.remainReplies === \"undefined\") {\n command.remainReplies = command.args.length;\n }\n if (command.remainReplies === 0) {\n if (count === 0) {\n command.resolve(count);\n return true;\n }\n return false;\n }\n if (--command.remainReplies === 0) {\n command.resolve(count);\n return true;\n }\n return false;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst redis_errors_1 = require(\"redis-errors\");\nconst command_1 = require(\"../command\");\nconst errors_1 = require(\"../errors\");\nconst utils_1 = require(\"../utils\");\nconst DataHandler_1 = require(\"../DataHandler\");\nconst debug = utils_1.Debug(\"connection\");\nfunction connectHandler(self) {\n return function () {\n self.setStatus(\"connect\");\n self.resetCommandQueue();\n // AUTH command should be processed before any other commands\n let flushed = false;\n const { connectionEpoch } = self;\n if (self.condition.auth) {\n self.auth(self.condition.auth, function (err) {\n if (connectionEpoch !== self.connectionEpoch) {\n return;\n }\n if (err) {\n if (err.message.indexOf(\"no password is set\") !== -1) {\n console.warn(\"[WARN] Redis server does not require a password, but a password was supplied.\");\n }\n else if (err.message.indexOf(\"without any password configured for the default user\") !== -1) {\n console.warn(\"[WARN] This Redis server's `default` user does not require a password, but a password was supplied\");\n }\n else if (err.message.indexOf(\"wrong number of arguments for 'auth' command\") !== -1) {\n console.warn(`[ERROR] The server returned \"wrong number of arguments for 'auth' command\". You are probably passing both username and password to Redis version 5 or below. You should only pass the 'password' option for Redis version 5 and under.`);\n }\n else {\n flushed = true;\n self.recoverFromFatalError(err, err);\n }\n }\n });\n }\n if (self.condition.select) {\n self.select(self.condition.select).catch((err) => {\n // If the node is in cluster mode, select is disallowed.\n // In this case, reconnect won't help.\n self.silentEmit(\"error\", err);\n });\n }\n if (!self.options.enableReadyCheck) {\n exports.readyHandler(self)();\n }\n /*\n No need to keep the reference of DataHandler here\n because we don't need to do the cleanup.\n `Stream#end()` will remove all listeners for us.\n */\n new DataHandler_1.default(self, {\n stringNumbers: self.options.stringNumbers,\n dropBufferSupport: self.options.dropBufferSupport,\n });\n if (self.options.enableReadyCheck) {\n self._readyCheck(function (err, info) {\n if (connectionEpoch !== self.connectionEpoch) {\n return;\n }\n if (err) {\n if (!flushed) {\n self.recoverFromFatalError(new Error(\"Ready check failed: \" + err.message), err);\n }\n }\n else {\n self.serverInfo = info;\n if (self.connector.check(info)) {\n exports.readyHandler(self)();\n }\n else {\n self.disconnect(true);\n }\n }\n });\n }\n };\n}\nexports.connectHandler = connectHandler;\nfunction abortError(command) {\n const err = new redis_errors_1.AbortError(\"Command aborted due to connection close\");\n err.command = {\n name: command.name,\n args: command.args,\n };\n return err;\n}\n// If a contiguous set of pipeline commands starts from index zero then they\n// can be safely reattempted. If however we have a chain of pipelined commands\n// starting at index 1 or more it means we received a partial response before\n// the connection close and those pipelined commands must be aborted. For\n// example, if the queue looks like this: [2, 3, 4, 0, 1, 2] then after\n// aborting and purging we'll have a queue that looks like this: [0, 1, 2]\nfunction abortIncompletePipelines(commandQueue) {\n let expectedIndex = 0;\n for (let i = 0; i < commandQueue.length;) {\n const command = commandQueue.peekAt(i).command;\n const pipelineIndex = command.pipelineIndex;\n if (pipelineIndex === undefined || pipelineIndex === 0) {\n expectedIndex = 0;\n }\n if (pipelineIndex !== undefined && pipelineIndex !== expectedIndex++) {\n commandQueue.remove(i, 1);\n command.reject(abortError(command));\n continue;\n }\n i++;\n }\n}\n// If only a partial transaction result was received before connection close,\n// we have to abort any transaction fragments that may have ended up in the\n// offline queue\nfunction abortTransactionFragments(commandQueue) {\n for (let i = 0; i < commandQueue.length;) {\n const command = commandQueue.peekAt(i).command;\n if (command.name === \"multi\") {\n break;\n }\n if (command.name === \"exec\") {\n commandQueue.remove(i, 1);\n command.reject(abortError(command));\n break;\n }\n if (command.inTransaction) {\n commandQueue.remove(i, 1);\n command.reject(abortError(command));\n }\n else {\n i++;\n }\n }\n}\nfunction closeHandler(self) {\n return function () {\n self.setStatus(\"close\");\n if (!self.prevCondition) {\n self.prevCondition = self.condition;\n }\n if (self.commandQueue.length) {\n abortIncompletePipelines(self.commandQueue);\n self.prevCommandQueue = self.commandQueue;\n }\n if (self.offlineQueue.length) {\n abortTransactionFragments(self.offlineQueue);\n }\n self.clearAddedScriptHashesCleanInterval();\n if (self.manuallyClosing) {\n self.manuallyClosing = false;\n debug(\"skip reconnecting since the connection is manually closed.\");\n return close();\n }\n if (typeof self.options.retryStrategy !== \"function\") {\n debug(\"skip reconnecting because `retryStrategy` is not a function\");\n return close();\n }\n const retryDelay = self.options.retryStrategy(++self.retryAttempts);\n if (typeof retryDelay !== \"number\") {\n debug(\"skip reconnecting because `retryStrategy` doesn't return a number\");\n return close();\n }\n debug(\"reconnect in %sms\", retryDelay);\n self.setStatus(\"reconnecting\", retryDelay);\n self.reconnectTimeout = setTimeout(function () {\n self.reconnectTimeout = null;\n self.connect().catch(utils_1.noop);\n }, retryDelay);\n const { maxRetriesPerRequest } = self.options;\n if (typeof maxRetriesPerRequest === \"number\") {\n if (maxRetriesPerRequest < 0) {\n debug(\"maxRetriesPerRequest is negative, ignoring...\");\n }\n else {\n const remainder = self.retryAttempts % (maxRetriesPerRequest + 1);\n if (remainder === 0) {\n debug(\"reach maxRetriesPerRequest limitation, flushing command queue...\");\n self.flushQueue(new errors_1.MaxRetriesPerRequestError(maxRetriesPerRequest));\n }\n }\n }\n };\n function close() {\n self.setStatus(\"end\");\n self.flushQueue(new Error(utils_1.CONNECTION_CLOSED_ERROR_MSG));\n }\n}\nexports.closeHandler = closeHandler;\nfunction errorHandler(self) {\n return function (error) {\n debug(\"error: %s\", error);\n self.silentEmit(\"error\", error);\n };\n}\nexports.errorHandler = errorHandler;\nfunction readyHandler(self) {\n return function () {\n self.setStatus(\"ready\");\n self.retryAttempts = 0;\n if (self.options.monitor) {\n self.call(\"monitor\");\n const { sendCommand } = self;\n self.sendCommand = function (command) {\n if (command_1.default.checkFlag(\"VALID_IN_MONITOR_MODE\", command.name)) {\n return sendCommand.call(self, command);\n }\n command.reject(new Error(\"Connection is in monitoring mode, can't process commands.\"));\n return command.promise;\n };\n self.once(\"close\", function () {\n delete self.sendCommand;\n });\n self.setStatus(\"monitoring\");\n return;\n }\n const finalSelect = self.prevCondition\n ? self.prevCondition.select\n : self.condition.select;\n if (self.options.connectionName) {\n debug(\"set the connection name [%s]\", self.options.connectionName);\n self.client(\"setname\", self.options.connectionName).catch(utils_1.noop);\n }\n if (self.options.readOnly) {\n debug(\"set the connection to readonly mode\");\n self.readonly().catch(utils_1.noop);\n }\n if (self.prevCondition) {\n const condition = self.prevCondition;\n self.prevCondition = null;\n if (condition.subscriber && self.options.autoResubscribe) {\n // We re-select the previous db first since\n // `SELECT` command is not valid in sub mode.\n if (self.condition.select !== finalSelect) {\n debug(\"connect to db [%d]\", finalSelect);\n self.select(finalSelect);\n }\n const subscribeChannels = condition.subscriber.channels(\"subscribe\");\n if (subscribeChannels.length) {\n debug(\"subscribe %d channels\", subscribeChannels.length);\n self.subscribe(subscribeChannels);\n }\n const psubscribeChannels = condition.subscriber.channels(\"psubscribe\");\n if (psubscribeChannels.length) {\n debug(\"psubscribe %d channels\", psubscribeChannels.length);\n self.psubscribe(psubscribeChannels);\n }\n }\n }\n if (self.prevCommandQueue) {\n if (self.options.autoResendUnfulfilledCommands) {\n debug(\"resend %d unfulfilled commands\", self.prevCommandQueue.length);\n while (self.prevCommandQueue.length > 0) {\n const item = self.prevCommandQueue.shift();\n if (item.select !== self.condition.select &&\n item.command.name !== \"select\") {\n self.select(item.select);\n }\n self.sendCommand(item.command, item.stream);\n }\n }\n else {\n self.prevCommandQueue = null;\n }\n }\n if (self.offlineQueue.length) {\n debug(\"send %d commands in offline queue\", self.offlineQueue.length);\n const offlineQueue = self.offlineQueue;\n self.resetOfflineQueue();\n while (offlineQueue.length > 0) {\n const item = offlineQueue.shift();\n if (item.select !== self.condition.select &&\n item.command.name !== \"select\") {\n self.select(item.select);\n }\n self.sendCommand(item.command, item.stream);\n }\n }\n if (self.condition.select !== finalSelect) {\n debug(\"connect to db [%d]\", finalSelect);\n self.select(finalSelect);\n }\n };\n}\nexports.readyHandler = readyHandler;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils_1 = require(\"../utils\");\nconst debug = utils_1.Debug(\"AbstractConnector\");\nclass AbstractConnector {\n constructor(disconnectTimeout) {\n this.connecting = false;\n this.disconnectTimeout = disconnectTimeout;\n }\n check(info) {\n return true;\n }\n disconnect() {\n this.connecting = false;\n if (this.stream) {\n const stream = this.stream; // Make sure callbacks refer to the same instance\n const timeout = setTimeout(() => {\n debug(\"stream %s:%s still open, destroying it\", stream.remoteAddress, stream.remotePort);\n stream.destroy();\n }, this.disconnectTimeout);\n stream.on(\"close\", () => clearTimeout(timeout));\n stream.end();\n }\n }\n}\nexports.default = AbstractConnector;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst net_1 = require(\"net\");\nconst tls_1 = require(\"tls\");\nconst utils_1 = require(\"../utils\");\nconst AbstractConnector_1 = require(\"./AbstractConnector\");\nfunction isIIpcConnectionOptions(value) {\n return value.path;\n}\nexports.isIIpcConnectionOptions = isIIpcConnectionOptions;\nclass StandaloneConnector extends AbstractConnector_1.default {\n constructor(options) {\n super(options.disconnectTimeout);\n this.options = options;\n }\n connect(_) {\n const { options } = this;\n this.connecting = true;\n let connectionOptions;\n if (isIIpcConnectionOptions(options)) {\n connectionOptions = {\n path: options.path,\n };\n }\n else {\n connectionOptions = {};\n if (options.port != null) {\n connectionOptions.port = options.port;\n }\n if (options.host != null) {\n connectionOptions.host = options.host;\n }\n if (options.family != null) {\n connectionOptions.family = options.family;\n }\n }\n if (options.tls) {\n Object.assign(connectionOptions, options.tls);\n }\n // TODO:\n // We use native Promise here since other Promise\n // implementation may use different schedulers that\n // cause issue when the stream is resolved in the\n // next tick.\n // Should use the provided promise in the next major\n // version and do not connect before resolved.\n return new Promise((resolve, reject) => {\n process.nextTick(() => {\n if (!this.connecting) {\n reject(new Error(utils_1.CONNECTION_CLOSED_ERROR_MSG));\n return;\n }\n try {\n if (options.tls) {\n this.stream = tls_1.connect(connectionOptions);\n }\n else {\n this.stream = net_1.createConnection(connectionOptions);\n }\n }\n catch (err) {\n reject(err);\n return;\n }\n this.stream.once(\"error\", (err) => {\n this.firstError = err;\n });\n resolve(this.stream);\n });\n });\n }\n}\nexports.default = StandaloneConnector;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isSentinelEql(a, b) {\n return ((a.host || \"127.0.0.1\") === (b.host || \"127.0.0.1\") &&\n (a.port || 26379) === (b.port || 26379));\n}\nclass SentinelIterator {\n constructor(sentinels) {\n this.cursor = 0;\n this.sentinels = sentinels.slice(0);\n }\n next() {\n const done = this.cursor >= this.sentinels.length;\n return { done, value: done ? undefined : this.sentinels[this.cursor++] };\n }\n reset(moveCurrentEndpointToFirst) {\n if (moveCurrentEndpointToFirst &&\n this.sentinels.length > 1 &&\n this.cursor !== 1) {\n this.sentinels.unshift(...this.sentinels.splice(this.cursor - 1));\n }\n this.cursor = 0;\n }\n add(sentinel) {\n for (let i = 0; i < this.sentinels.length; i++) {\n if (isSentinelEql(sentinel, this.sentinels[i])) {\n return false;\n }\n }\n this.sentinels.push(sentinel);\n return true;\n }\n toString() {\n return `${JSON.stringify(this.sentinels)} @${this.cursor}`;\n }\n}\nexports.default = SentinelIterator;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils_1 = require(\"../../utils\");\nconst debug = utils_1.Debug(\"FailoverDetector\");\nconst CHANNEL_NAME = \"+switch-master\";\nclass FailoverDetector {\n // sentinels can't be used for regular commands after this\n constructor(connector, sentinels) {\n this.isDisconnected = false;\n this.connector = connector;\n this.sentinels = sentinels;\n }\n cleanup() {\n this.isDisconnected = true;\n for (const sentinel of this.sentinels) {\n sentinel.client.disconnect();\n }\n }\n subscribe() {\n return __awaiter(this, void 0, void 0, function* () {\n debug(\"Starting FailoverDetector\");\n const promises = [];\n for (const sentinel of this.sentinels) {\n const promise = sentinel.client.subscribe(CHANNEL_NAME).catch((err) => {\n debug(\"Failed to subscribe to failover messages on sentinel %s:%s (%s)\", sentinel.address.host || \"127.0.0.1\", sentinel.address.port || 26739, err.message);\n });\n promises.push(promise);\n sentinel.client.on(\"message\", (channel) => {\n if (!this.isDisconnected && channel === CHANNEL_NAME) {\n this.disconnect();\n }\n });\n }\n yield Promise.all(promises);\n });\n }\n disconnect() {\n // Avoid disconnecting more than once per failover.\n // A new FailoverDetector will be created after reconnecting.\n this.isDisconnected = true;\n debug(\"Failover detected, disconnecting\");\n // Will call this.cleanup()\n this.connector.disconnect();\n }\n}\nexports.FailoverDetector = FailoverDetector;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst net_1 = require(\"net\");\nconst utils_1 = require(\"../../utils\");\nconst tls_1 = require(\"tls\");\nconst StandaloneConnector_1 = require(\"../StandaloneConnector\");\nconst SentinelIterator_1 = require(\"./SentinelIterator\");\nexports.SentinelIterator = SentinelIterator_1.default;\nconst AbstractConnector_1 = require(\"../AbstractConnector\");\nconst redis_1 = require(\"../../redis\");\nconst FailoverDetector_1 = require(\"./FailoverDetector\");\nconst debug = utils_1.Debug(\"SentinelConnector\");\nclass SentinelConnector extends AbstractConnector_1.default {\n constructor(options) {\n super(options.disconnectTimeout);\n this.options = options;\n this.failoverDetector = null;\n this.emitter = null;\n if (!this.options.sentinels.length) {\n throw new Error(\"Requires at least one sentinel to connect to.\");\n }\n if (!this.options.name) {\n throw new Error(\"Requires the name of master.\");\n }\n this.sentinelIterator = new SentinelIterator_1.default(this.options.sentinels);\n }\n check(info) {\n const roleMatches = !info.role || this.options.role === info.role;\n if (!roleMatches) {\n debug(\"role invalid, expected %s, but got %s\", this.options.role, info.role);\n // Start from the next item.\n // Note that `reset` will move the cursor to the previous element,\n // so we advance two steps here.\n this.sentinelIterator.next();\n this.sentinelIterator.next();\n this.sentinelIterator.reset(true);\n }\n return roleMatches;\n }\n disconnect() {\n super.disconnect();\n if (this.failoverDetector) {\n this.failoverDetector.cleanup();\n }\n }\n connect(eventEmitter) {\n this.connecting = true;\n this.retryAttempts = 0;\n let lastError;\n const connectToNext = () => __awaiter(this, void 0, void 0, function* () {\n const endpoint = this.sentinelIterator.next();\n if (endpoint.done) {\n this.sentinelIterator.reset(false);\n const retryDelay = typeof this.options.sentinelRetryStrategy === \"function\"\n ? this.options.sentinelRetryStrategy(++this.retryAttempts)\n : null;\n let errorMsg = typeof retryDelay !== \"number\"\n ? \"All sentinels are unreachable and retry is disabled.\"\n : `All sentinels are unreachable. Retrying from scratch after ${retryDelay}ms.`;\n if (lastError) {\n errorMsg += ` Last error: ${lastError.message}`;\n }\n debug(errorMsg);\n const error = new Error(errorMsg);\n if (typeof retryDelay === \"number\") {\n eventEmitter(\"error\", error);\n yield new Promise((resolve) => setTimeout(resolve, retryDelay));\n return connectToNext();\n }\n else {\n throw error;\n }\n }\n let resolved = null;\n let err = null;\n try {\n resolved = yield this.resolve(endpoint.value);\n }\n catch (error) {\n err = error;\n }\n if (!this.connecting) {\n throw new Error(utils_1.CONNECTION_CLOSED_ERROR_MSG);\n }\n const endpointAddress = endpoint.value.host + \":\" + endpoint.value.port;\n if (resolved) {\n debug(\"resolved: %s:%s from sentinel %s\", resolved.host, resolved.port, endpointAddress);\n if (this.options.enableTLSForSentinelMode && this.options.tls) {\n Object.assign(resolved, this.options.tls);\n this.stream = tls_1.connect(resolved);\n }\n else {\n this.stream = net_1.createConnection(resolved);\n }\n this.stream.once(\"connect\", () => this.initFailoverDetector());\n this.stream.once(\"error\", (err) => {\n this.firstError = err;\n });\n return this.stream;\n }\n else {\n const errorMsg = err\n ? \"failed to connect to sentinel \" +\n endpointAddress +\n \" because \" +\n err.message\n : \"connected to sentinel \" +\n endpointAddress +\n \" successfully, but got an invalid reply: \" +\n resolved;\n debug(errorMsg);\n eventEmitter(\"sentinelError\", new Error(errorMsg));\n if (err) {\n lastError = err;\n }\n return connectToNext();\n }\n });\n return connectToNext();\n }\n updateSentinels(client) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.options.updateSentinels) {\n return;\n }\n const result = yield client.sentinel(\"sentinels\", this.options.name);\n if (!Array.isArray(result)) {\n return;\n }\n result\n .map(utils_1.packObject)\n .forEach((sentinel) => {\n const flags = sentinel.flags ? sentinel.flags.split(\",\") : [];\n if (flags.indexOf(\"disconnected\") === -1 &&\n sentinel.ip &&\n sentinel.port) {\n const endpoint = this.sentinelNatResolve(addressResponseToAddress(sentinel));\n if (this.sentinelIterator.add(endpoint)) {\n debug(\"adding sentinel %s:%s\", endpoint.host, endpoint.port);\n }\n }\n });\n debug(\"Updated internal sentinels: %s\", this.sentinelIterator);\n });\n }\n resolveMaster(client) {\n return __awaiter(this, void 0, void 0, function* () {\n const result = yield client.sentinel(\"get-master-addr-by-name\", this.options.name);\n yield this.updateSentinels(client);\n return this.sentinelNatResolve(Array.isArray(result)\n ? { host: result[0], port: Number(result[1]) }\n : null);\n });\n }\n resolveSlave(client) {\n return __awaiter(this, void 0, void 0, function* () {\n const result = yield client.sentinel(\"slaves\", this.options.name);\n if (!Array.isArray(result)) {\n return null;\n }\n const availableSlaves = result\n .map(utils_1.packObject)\n .filter((slave) => slave.flags && !slave.flags.match(/(disconnected|s_down|o_down)/));\n return this.sentinelNatResolve(selectPreferredSentinel(availableSlaves, this.options.preferredSlaves));\n });\n }\n sentinelNatResolve(item) {\n if (!item || !this.options.natMap)\n return item;\n return this.options.natMap[`${item.host}:${item.port}`] || item;\n }\n connectToSentinel(endpoint, options) {\n return new redis_1.default(Object.assign({ port: endpoint.port || 26379, host: endpoint.host, username: this.options.sentinelUsername || null, password: this.options.sentinelPassword || null, family: endpoint.family ||\n (StandaloneConnector_1.isIIpcConnectionOptions(this.options)\n ? undefined\n : this.options.family), tls: this.options.sentinelTLS, retryStrategy: null, enableReadyCheck: false, connectTimeout: this.options.connectTimeout, commandTimeout: this.options.sentinelCommandTimeout, dropBufferSupport: true }, options));\n }\n resolve(endpoint) {\n return __awaiter(this, void 0, void 0, function* () {\n const client = this.connectToSentinel(endpoint);\n // ignore the errors since resolve* methods will handle them\n client.on(\"error\", noop);\n try {\n if (this.options.role === \"slave\") {\n return yield this.resolveSlave(client);\n }\n else {\n return yield this.resolveMaster(client);\n }\n }\n finally {\n client.disconnect();\n }\n });\n }\n initFailoverDetector() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.options.failoverDetector) {\n return;\n }\n // Move the current sentinel to the first position\n this.sentinelIterator.reset(true);\n const sentinels = [];\n // In case of a large amount of sentinels, limit the number of concurrent connections\n while (sentinels.length < this.options.sentinelMaxConnections) {\n const { done, value } = this.sentinelIterator.next();\n if (done) {\n break;\n }\n const client = this.connectToSentinel(value, {\n lazyConnect: true,\n retryStrategy: this.options.sentinelReconnectStrategy,\n });\n client.on(\"reconnecting\", () => {\n var _a;\n // Tests listen to this event\n (_a = this.emitter) === null || _a === void 0 ? void 0 : _a.emit(\"sentinelReconnecting\");\n });\n sentinels.push({ address: value, client });\n }\n this.sentinelIterator.reset(false);\n if (this.failoverDetector) {\n // Clean up previous detector\n this.failoverDetector.cleanup();\n }\n this.failoverDetector = new FailoverDetector_1.FailoverDetector(this, sentinels);\n yield this.failoverDetector.subscribe();\n // Tests listen to this event\n (_a = this.emitter) === null || _a === void 0 ? void 0 : _a.emit(\"failoverSubscribed\");\n });\n }\n}\nexports.default = SentinelConnector;\nfunction selectPreferredSentinel(availableSlaves, preferredSlaves) {\n if (availableSlaves.length === 0) {\n return null;\n }\n let selectedSlave;\n if (typeof preferredSlaves === \"function\") {\n selectedSlave = preferredSlaves(availableSlaves);\n }\n else if (preferredSlaves !== null && typeof preferredSlaves === \"object\") {\n const preferredSlavesArray = Array.isArray(preferredSlaves)\n ? preferredSlaves\n : [preferredSlaves];\n // sort by priority\n preferredSlavesArray.sort((a, b) => {\n // default the priority to 1\n if (!a.prio) {\n a.prio = 1;\n }\n if (!b.prio) {\n b.prio = 1;\n }\n // lowest priority first\n if (a.prio < b.prio) {\n return -1;\n }\n if (a.prio > b.prio) {\n return 1;\n }\n return 0;\n });\n // loop over preferred slaves and return the first match\n for (let p = 0; p < preferredSlavesArray.length; p++) {\n for (let a = 0; a < availableSlaves.length; a++) {\n const slave = availableSlaves[a];\n if (slave.ip === preferredSlavesArray[p].ip) {\n if (slave.port === preferredSlavesArray[p].port) {\n selectedSlave = slave;\n break;\n }\n }\n }\n if (selectedSlave) {\n break;\n }\n }\n }\n // if none of the preferred slaves are available, a random available slave is returned\n if (!selectedSlave) {\n selectedSlave = utils_1.sample(availableSlaves);\n }\n return addressResponseToAddress(selectedSlave);\n}\nfunction addressResponseToAddress(input) {\n return { host: input.ip, port: Number(input.port) };\n}\nfunction noop() { }\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst StandaloneConnector_1 = require(\"./StandaloneConnector\");\nexports.StandaloneConnector = StandaloneConnector_1.default;\nconst SentinelConnector_1 = require(\"./SentinelConnector\");\nexports.SentinelConnector = SentinelConnector_1.default;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst stream_1 = require(\"stream\");\n/**\n * Convenient class to convert the process of scaning keys to a readable stream.\n *\n * @export\n * @class ScanStream\n * @extends {Readable}\n */\nclass ScanStream extends stream_1.Readable {\n constructor(opt) {\n super(opt);\n this.opt = opt;\n this._redisCursor = \"0\";\n this._redisDrained = false;\n }\n _read() {\n if (this._redisDrained) {\n this.push(null);\n return;\n }\n const args = [this._redisCursor];\n if (this.opt.key) {\n args.unshift(this.opt.key);\n }\n if (this.opt.match) {\n args.push(\"MATCH\", this.opt.match);\n }\n if (this.opt.type) {\n args.push(\"TYPE\", this.opt.type);\n }\n if (this.opt.count) {\n args.push(\"COUNT\", String(this.opt.count));\n }\n this.opt.redis[this.opt.command](args, (err, res) => {\n if (err) {\n this.emit(\"error\", err);\n return;\n }\n this._redisCursor = res[0] instanceof Buffer ? res[0].toString() : res[0];\n if (this._redisCursor === \"0\") {\n this._redisDrained = true;\n }\n this.push(res[1]);\n });\n }\n close() {\n this._redisDrained = true;\n }\n}\nexports.default = ScanStream;\n","'use strict';\n\nconst pMap = (iterable, mapper, options) => new Promise((resolve, reject) => {\n\toptions = Object.assign({\n\t\tconcurrency: Infinity\n\t}, options);\n\n\tif (typeof mapper !== 'function') {\n\t\tthrow new TypeError('Mapper function is required');\n\t}\n\n\tconst {concurrency} = options;\n\n\tif (!(typeof concurrency === 'number' && concurrency >= 1)) {\n\t\tthrow new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${concurrency}\\` (${typeof concurrency})`);\n\t}\n\n\tconst ret = [];\n\tconst iterator = iterable[Symbol.iterator]();\n\tlet isRejected = false;\n\tlet isIterableDone = false;\n\tlet resolvingCount = 0;\n\tlet currentIndex = 0;\n\n\tconst next = () => {\n\t\tif (isRejected) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst nextItem = iterator.next();\n\t\tconst i = currentIndex;\n\t\tcurrentIndex++;\n\n\t\tif (nextItem.done) {\n\t\t\tisIterableDone = true;\n\n\t\t\tif (resolvingCount === 0) {\n\t\t\t\tresolve(ret);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tresolvingCount++;\n\n\t\tPromise.resolve(nextItem.value)\n\t\t\t.then(element => mapper(element, i))\n\t\t\t.then(\n\t\t\t\tvalue => {\n\t\t\t\t\tret[i] = value;\n\t\t\t\t\tresolvingCount--;\n\t\t\t\t\tnext();\n\t\t\t\t},\n\t\t\t\terror => {\n\t\t\t\t\tisRejected = true;\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\t\t\t);\n\t};\n\n\tfor (let i = 0; i < concurrency; i++) {\n\t\tnext();\n\n\t\tif (isIterableDone) {\n\t\t\tbreak;\n\t\t}\n\t}\n});\n\nmodule.exports = pMap;\n// TODO: Remove this for the next major release\nmodule.exports.default = pMap;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst command_1 = require(\"./command\");\nconst util_1 = require(\"util\");\nconst standard_as_callback_1 = require(\"standard-as-callback\");\nconst redis_commands_1 = require(\"redis-commands\");\nconst calculateSlot = require(\"cluster-key-slot\");\nconst pMap = require(\"p-map\");\nconst PromiseContainer = require(\"./promiseContainer\");\nconst commander_1 = require(\"./commander\");\nconst utils_1 = require(\"./utils\");\n/*\n This function derives from the cluster-key-slot implementation.\n Instead of checking that all keys have the same slot, it checks that all slots are served by the same set of nodes.\n If this is satisfied, it returns the first key's slot.\n*/\nfunction generateMultiWithNodes(redis, keys) {\n const slot = calculateSlot(keys[0]);\n const target = redis._groupsBySlot[slot];\n for (let i = 1; i < keys.length; i++) {\n if (redis._groupsBySlot[calculateSlot(keys[i])] !== target) {\n return -1;\n }\n }\n return slot;\n}\nfunction Pipeline(redis) {\n commander_1.default.call(this);\n this.redis = redis;\n this.isCluster =\n this.redis.constructor.name === \"Cluster\" || this.redis.isCluster;\n this.isPipeline = true;\n this.options = redis.options;\n this._queue = [];\n this._result = [];\n this._transactions = 0;\n this._shaToScript = {};\n Object.keys(redis.scriptsSet).forEach((name) => {\n const script = redis.scriptsSet[name];\n this._shaToScript[script.sha] = script;\n this[name] = redis[name];\n this[name + \"Buffer\"] = redis[name + \"Buffer\"];\n });\n redis.addedBuiltinSet.forEach((name) => {\n this[name] = redis[name];\n this[name + \"Buffer\"] = redis[name + \"Buffer\"];\n });\n const Promise = PromiseContainer.get();\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n const _this = this;\n Object.defineProperty(this, \"length\", {\n get: function () {\n return _this._queue.length;\n },\n });\n}\nexports.default = Pipeline;\nObject.assign(Pipeline.prototype, commander_1.default.prototype);\nPipeline.prototype.fillResult = function (value, position) {\n if (this._queue[position].name === \"exec\" && Array.isArray(value[1])) {\n const execLength = value[1].length;\n for (let i = 0; i < execLength; i++) {\n if (value[1][i] instanceof Error) {\n continue;\n }\n const cmd = this._queue[position - (execLength - i)];\n try {\n value[1][i] = cmd.transformReply(value[1][i]);\n }\n catch (err) {\n value[1][i] = err;\n }\n }\n }\n this._result[position] = value;\n if (--this.replyPending) {\n return;\n }\n if (this.isCluster) {\n let retriable = true;\n let commonError;\n for (let i = 0; i < this._result.length; ++i) {\n const error = this._result[i][0];\n const command = this._queue[i];\n if (error) {\n if (command.name === \"exec\" &&\n error.message ===\n \"EXECABORT Transaction discarded because of previous errors.\") {\n continue;\n }\n if (!commonError) {\n commonError = {\n name: error.name,\n message: error.message,\n };\n }\n else if (commonError.name !== error.name ||\n commonError.message !== error.message) {\n retriable = false;\n break;\n }\n }\n else if (!command.inTransaction) {\n const isReadOnly = redis_commands_1.exists(command.name) && redis_commands_1.hasFlag(command.name, \"readonly\");\n if (!isReadOnly) {\n retriable = false;\n break;\n }\n }\n }\n if (commonError && retriable) {\n const _this = this;\n const errv = commonError.message.split(\" \");\n const queue = this._queue;\n let inTransaction = false;\n this._queue = [];\n for (let i = 0; i < queue.length; ++i) {\n if (errv[0] === \"ASK\" &&\n !inTransaction &&\n queue[i].name !== \"asking\" &&\n (!queue[i - 1] || queue[i - 1].name !== \"asking\")) {\n const asking = new command_1.default(\"asking\");\n asking.ignore = true;\n this.sendCommand(asking);\n }\n queue[i].initPromise();\n this.sendCommand(queue[i]);\n inTransaction = queue[i].inTransaction;\n }\n let matched = true;\n if (typeof this.leftRedirections === \"undefined\") {\n this.leftRedirections = {};\n }\n const exec = function () {\n _this.exec();\n };\n this.redis.handleError(commonError, this.leftRedirections, {\n moved: function (slot, key) {\n _this.preferKey = key;\n _this.redis.slots[errv[1]] = [key];\n _this.redis._groupsBySlot[errv[1]] =\n _this.redis._groupsIds[_this.redis.slots[errv[1]].join(\";\")];\n _this.redis.refreshSlotsCache();\n _this.exec();\n },\n ask: function (slot, key) {\n _this.preferKey = key;\n _this.exec();\n },\n tryagain: exec,\n clusterDown: exec,\n connectionClosed: exec,\n maxRedirections: () => {\n matched = false;\n },\n defaults: () => {\n matched = false;\n },\n });\n if (matched) {\n return;\n }\n }\n }\n let ignoredCount = 0;\n for (let i = 0; i < this._queue.length - ignoredCount; ++i) {\n if (this._queue[i + ignoredCount].ignore) {\n ignoredCount += 1;\n }\n this._result[i] = this._result[i + ignoredCount];\n }\n this.resolve(this._result.slice(0, this._result.length - ignoredCount));\n};\nPipeline.prototype.sendCommand = function (command) {\n if (this._transactions > 0) {\n command.inTransaction = true;\n }\n const position = this._queue.length;\n command.pipelineIndex = position;\n command.promise\n .then((result) => {\n this.fillResult([null, result], position);\n })\n .catch((error) => {\n this.fillResult([error], position);\n });\n this._queue.push(command);\n return this;\n};\nPipeline.prototype.addBatch = function (commands) {\n let command, commandName, args;\n for (let i = 0; i < commands.length; ++i) {\n command = commands[i];\n commandName = command[0];\n args = command.slice(1);\n this[commandName].apply(this, args);\n }\n return this;\n};\nconst multi = Pipeline.prototype.multi;\nPipeline.prototype.multi = function () {\n this._transactions += 1;\n return multi.apply(this, arguments);\n};\nconst execBuffer = Pipeline.prototype.execBuffer;\nconst exec = Pipeline.prototype.exec;\nPipeline.prototype.execBuffer = util_1.deprecate(function () {\n if (this._transactions > 0) {\n this._transactions -= 1;\n }\n return execBuffer.apply(this, arguments);\n}, \"Pipeline#execBuffer: Use Pipeline#exec instead\");\n// NOTE: To avoid an unhandled promise rejection, this will unconditionally always return this.promise,\n// which always has the rejection handled by standard-as-callback\n// adding the provided rejection callback.\n//\n// If a different promise instance were returned, that promise would cause its own unhandled promise rejection\n// errors, even if that promise unconditionally resolved to **the resolved value of** this.promise.\nPipeline.prototype.exec = function (callback) {\n // Wait for the cluster to be connected, since we need nodes information before continuing\n if (this.isCluster && !this.redis.slots.length) {\n if (this.redis.status === \"wait\")\n this.redis.connect().catch(utils_1.noop);\n this.redis.delayUntilReady((err) => {\n if (err) {\n callback(err);\n return;\n }\n this.exec(callback);\n });\n return this.promise;\n }\n if (this._transactions > 0) {\n this._transactions -= 1;\n return (this.options.dropBufferSupport ? exec : execBuffer).apply(this, arguments);\n }\n if (!this.nodeifiedPromise) {\n this.nodeifiedPromise = true;\n standard_as_callback_1.default(this.promise, callback);\n }\n if (!this._queue.length) {\n this.resolve([]);\n }\n let pipelineSlot;\n if (this.isCluster) {\n // List of the first key for each command\n const sampleKeys = [];\n for (let i = 0; i < this._queue.length; i++) {\n const keys = this._queue[i].getKeys();\n if (keys.length) {\n sampleKeys.push(keys[0]);\n }\n // For each command, check that the keys belong to the same slot\n if (keys.length && calculateSlot.generateMulti(keys) < 0) {\n this.reject(new Error(\"All the keys in a pipeline command should belong to the same slot\"));\n return this.promise;\n }\n }\n if (sampleKeys.length) {\n pipelineSlot = generateMultiWithNodes(this.redis, sampleKeys);\n if (pipelineSlot < 0) {\n this.reject(new Error(\"All keys in the pipeline should belong to the same slots allocation group\"));\n return this.promise;\n }\n }\n else {\n // Send the pipeline to a random node\n pipelineSlot = (Math.random() * 16384) | 0;\n }\n }\n // Check whether scripts exists\n const scripts = [];\n for (let i = 0; i < this._queue.length; ++i) {\n const item = this._queue[i];\n if (item.name !== \"evalsha\") {\n continue;\n }\n const script = this._shaToScript[item.args[0]];\n if (!script ||\n this.redis._addedScriptHashes[script.sha] ||\n scripts.includes(script)) {\n continue;\n }\n scripts.push(script);\n }\n const _this = this;\n if (!scripts.length) {\n return execPipeline();\n }\n // In cluster mode, always load scripts before running the pipeline\n if (this.isCluster) {\n pMap(scripts, (script) => _this.redis.script(\"load\", script.lua), {\n concurrency: 10,\n })\n .then(function () {\n for (let i = 0; i < scripts.length; i++) {\n _this.redis._addedScriptHashes[scripts[i].sha] = true;\n }\n })\n .then(execPipeline, this.reject);\n return this.promise;\n }\n this.redis\n .script(\"exists\", scripts.map(({ sha }) => sha))\n .then(function (results) {\n const pending = [];\n for (let i = 0; i < results.length; ++i) {\n if (!results[i]) {\n pending.push(scripts[i]);\n }\n }\n const Promise = PromiseContainer.get();\n return Promise.all(pending.map(function (script) {\n return _this.redis.script(\"load\", script.lua);\n }));\n })\n .then(function () {\n for (let i = 0; i < scripts.length; i++) {\n _this.redis._addedScriptHashes[scripts[i].sha] = true;\n }\n })\n .then(execPipeline, this.reject);\n return this.promise;\n function execPipeline() {\n let data = \"\";\n let buffers;\n let writePending = (_this.replyPending = _this._queue.length);\n let node;\n if (_this.isCluster) {\n node = {\n slot: pipelineSlot,\n redis: _this.redis.connectionPool.nodes.all[_this.preferKey],\n };\n }\n let bufferMode = false;\n const stream = {\n write: function (writable) {\n if (writable instanceof Buffer) {\n bufferMode = true;\n }\n if (bufferMode) {\n if (!buffers) {\n buffers = [];\n }\n if (typeof data === \"string\") {\n buffers.push(Buffer.from(data, \"utf8\"));\n data = undefined;\n }\n buffers.push(typeof writable === \"string\"\n ? Buffer.from(writable, \"utf8\")\n : writable);\n }\n else {\n data += writable;\n }\n if (!--writePending) {\n let sendData;\n if (buffers) {\n sendData = Buffer.concat(buffers);\n }\n else {\n sendData = data;\n }\n if (_this.isCluster) {\n node.redis.stream.write(sendData);\n }\n else {\n _this.redis.stream.write(sendData);\n }\n // Reset writePending for resending\n writePending = _this._queue.length;\n data = \"\";\n buffers = undefined;\n bufferMode = false;\n }\n },\n };\n for (let i = 0; i < _this._queue.length; ++i) {\n _this.redis.sendCommand(_this._queue[i], stream, node);\n }\n return _this.promise;\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils_1 = require(\"./utils\");\nconst standard_as_callback_1 = require(\"standard-as-callback\");\nconst pipeline_1 = require(\"./pipeline\");\nfunction addTransactionSupport(redis) {\n redis.pipeline = function (commands) {\n const pipeline = new pipeline_1.default(this);\n if (Array.isArray(commands)) {\n pipeline.addBatch(commands);\n }\n return pipeline;\n };\n const { multi } = redis;\n redis.multi = function (commands, options) {\n if (typeof options === \"undefined\" && !Array.isArray(commands)) {\n options = commands;\n commands = null;\n }\n if (options && options.pipeline === false) {\n return multi.call(this);\n }\n const pipeline = new pipeline_1.default(this);\n pipeline.multi();\n if (Array.isArray(commands)) {\n pipeline.addBatch(commands);\n }\n const exec = pipeline.exec;\n pipeline.exec = function (callback) {\n // Wait for the cluster to be connected, since we need nodes information before continuing\n if (this.isCluster && !this.redis.slots.length) {\n if (this.redis.status === \"wait\")\n this.redis.connect().catch(utils_1.noop);\n return standard_as_callback_1.default(new Promise((resolve, reject) => {\n this.redis.delayUntilReady((err) => {\n if (err) {\n reject(err);\n return;\n }\n this.exec(pipeline).then(resolve, reject);\n });\n }), callback);\n }\n if (this._transactions > 0) {\n exec.call(pipeline);\n }\n // Returns directly when the pipeline\n // has been called multiple times (retries).\n if (this.nodeifiedPromise) {\n return exec.call(pipeline);\n }\n const promise = exec.call(pipeline);\n return standard_as_callback_1.default(promise.then(function (result) {\n const execResult = result[result.length - 1];\n if (typeof execResult === \"undefined\") {\n throw new Error(\"Pipeline cannot be used to send any commands when the `exec()` has been called on it.\");\n }\n if (execResult[0]) {\n execResult[0].previousErrors = [];\n for (let i = 0; i < result.length - 1; ++i) {\n if (result[i][0]) {\n execResult[0].previousErrors.push(result[i][0]);\n }\n }\n throw execResult[0];\n }\n return utils_1.wrapMultiResult(execResult[1]);\n }), callback);\n };\n const { execBuffer } = pipeline;\n pipeline.execBuffer = function (callback) {\n if (this._transactions > 0) {\n execBuffer.call(pipeline);\n }\n return pipeline.exec(callback);\n };\n return pipeline;\n };\n const { exec } = redis;\n redis.exec = function (callback) {\n return standard_as_callback_1.default(exec.call(this).then(function (results) {\n if (Array.isArray(results)) {\n results = utils_1.wrapMultiResult(results);\n }\n return results;\n }), callback);\n };\n}\nexports.addTransactionSupport = addTransactionSupport;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_REDIS_OPTIONS = {\n // Connection\n port: 6379,\n host: \"localhost\",\n family: 4,\n connectTimeout: 10000,\n disconnectTimeout: 2000,\n retryStrategy: function (times) {\n return Math.min(times * 50, 2000);\n },\n keepAlive: 0,\n noDelay: true,\n connectionName: null,\n // Sentinel\n sentinels: null,\n name: null,\n role: \"master\",\n sentinelRetryStrategy: function (times) {\n return Math.min(times * 10, 1000);\n },\n sentinelReconnectStrategy: function () {\n // This strategy only applies when sentinels are used for detecting\n // a failover, not during initial master resolution.\n // The deployment can still function when some of the sentinels are down\n // for a long period of time, so we may not want to attempt reconnection\n // very often. Therefore the default interval is fairly long (1 minute).\n return 60000;\n },\n natMap: null,\n enableTLSForSentinelMode: false,\n updateSentinels: true,\n failoverDetector: false,\n // Status\n username: null,\n password: null,\n db: 0,\n // Others\n dropBufferSupport: false,\n enableOfflineQueue: true,\n enableReadyCheck: true,\n autoResubscribe: true,\n autoResendUnfulfilledCommands: true,\n lazyConnect: false,\n keyPrefix: \"\",\n reconnectOnError: null,\n readOnly: false,\n stringNumbers: false,\n maxRetriesPerRequest: 20,\n maxLoadingRetryTime: 10000,\n enableAutoPipelining: false,\n autoPipeliningIgnoredCommands: [],\n maxScriptsCachingTime: 60000,\n sentinelMaxConnections: 10,\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst lodash_1 = require(\"../utils/lodash\");\nconst util_1 = require(\"util\");\nconst events_1 = require(\"events\");\nconst Deque = require(\"denque\");\nconst command_1 = require(\"../command\");\nconst commander_1 = require(\"../commander\");\nconst utils_1 = require(\"../utils\");\nconst standard_as_callback_1 = require(\"standard-as-callback\");\nconst eventHandler = require(\"./event_handler\");\nconst connectors_1 = require(\"../connectors\");\nconst ScanStream_1 = require(\"../ScanStream\");\nconst commands = require(\"redis-commands\");\nconst PromiseContainer = require(\"../promiseContainer\");\nconst transaction_1 = require(\"../transaction\");\nconst RedisOptions_1 = require(\"./RedisOptions\");\nconst debug = utils_1.Debug(\"redis\");\n/**\n * Creates a Redis instance\n *\n * @constructor\n * @param {(number|string|Object)} [port=6379] - Port of the Redis server,\n * or a URL string(see the examples below),\n * or the `options` object(see the third argument).\n * @param {string|Object} [host=localhost] - Host of the Redis server,\n * when the first argument is a URL string,\n * this argument is an object represents the options.\n * @param {Object} [options] - Other options.\n * @param {number} [options.port=6379] - Port of the Redis server.\n * @param {string} [options.host=localhost] - Host of the Redis server.\n * @param {string} [options.family=4] - Version of IP stack. Defaults to 4.\n * @param {string} [options.path=null] - Local domain socket path. If set the `port`,\n * `host` and `family` will be ignored.\n * @param {number} [options.keepAlive=0] - TCP KeepAlive on the socket with a X ms delay before start.\n * Set to a non-number value to disable keepAlive.\n * @param {boolean} [options.noDelay=true] - Whether to disable the Nagle's Algorithm. By default we disable\n * it to reduce the latency.\n * @param {string} [options.connectionName=null] - Connection name.\n * @param {number} [options.db=0] - Database index to use.\n * @param {string} [options.password=null] - If set, client will send AUTH command\n * with the value of this option when connected.\n * @param {string} [options.username=null] - Similar to `password`, Provide this for Redis ACL support.\n * @param {boolean} [options.dropBufferSupport=false] - Drop the buffer support for better performance.\n * This option is recommended to be enabled when\n * handling large array response and you don't need the buffer support.\n * @param {boolean} [options.enableReadyCheck=true] - When a connection is established to\n * the Redis server, the server might still be loading the database from disk.\n * While loading, the server not respond to any commands.\n * To work around this, when this option is `true`,\n * ioredis will check the status of the Redis server,\n * and when the Redis server is able to process commands,\n * a `ready` event will be emitted.\n * @param {boolean} [options.enableOfflineQueue=true] - By default,\n * if there is no active connection to the Redis server,\n * commands are added to a queue and are executed once the connection is \"ready\"\n * (when `enableReadyCheck` is `true`,\n * \"ready\" means the Redis server has loaded the database from disk, otherwise means the connection\n * to the Redis server has been established). If this option is false,\n * when execute the command when the connection isn't ready, an error will be returned.\n * @param {number} [options.connectTimeout=10000] - The milliseconds before a timeout occurs during the initial\n * connection to the Redis server.\n * @param {boolean} [options.autoResubscribe=true] - After reconnected, if the previous connection was in the\n * subscriber mode, client will auto re-subscribe these channels.\n * @param {boolean} [options.autoResendUnfulfilledCommands=true] - If true, client will resend unfulfilled\n * commands(e.g. block commands) in the previous connection when reconnected.\n * @param {boolean} [options.lazyConnect=false] - By default,\n * When a new `Redis` instance is created, it will connect to Redis server automatically.\n * If you want to keep the instance disconnected until a command is called, you can pass the `lazyConnect` option to\n * the constructor:\n *\n * ```javascript\n * var redis = new Redis({ lazyConnect: true });\n * // No attempting to connect to the Redis server here.\n\n * // Now let's connect to the Redis server\n * redis.get('foo', function () {\n * });\n * ```\n * @param {Object} [options.tls] - TLS connection support. See https://github.com/luin/ioredis#tls-options\n * @param {string} [options.keyPrefix=''] - The prefix to prepend to all keys in a command.\n * @param {function} [options.retryStrategy] - See \"Quick Start\" section\n * @param {number} [options.maxRetriesPerRequest] - See \"Quick Start\" section\n * @param {number} [options.maxLoadingRetryTime=10000] - when redis server is not ready, we will wait for\n * `loading_eta_seconds` from `info` command or maxLoadingRetryTime (milliseconds), whichever is smaller.\n * @param {function} [options.reconnectOnError] - See \"Quick Start\" section\n * @param {boolean} [options.readOnly=false] - Enable READONLY mode for the connection.\n * Only available for cluster mode.\n * @param {boolean} [options.stringNumbers=false] - Force numbers to be always returned as JavaScript\n * strings. This option is necessary when dealing with big numbers (exceed the [-2^53, +2^53] range).\n * @param {boolean} [options.enableTLSForSentinelMode=false] - Whether to support the `tls` option\n * when connecting to Redis via sentinel mode.\n * @param {NatMap} [options.natMap=null] NAT map for sentinel connector.\n * @param {boolean} [options.updateSentinels=true] - Update the given `sentinels` list with new IP\n * addresses when communicating with existing sentinels.\n * @param {boolean} [options.failoverDetector=false] - Detect failover actively by subscribing to the\n * related channels. With this option disabled, ioredis is still able to detect failovers because Redis\n * Sentinel will disconnect all clients whenever a failover happens, so ioredis will reconnect to the new\n * master. This option is useful when you want to detect failover quicker, but it will create more TCP\n * connections to Redis servers in order to subscribe to related channels.\n* @param {boolean} [options.enableAutoPipelining=false] - When enabled, all commands issued during an event loop\n * iteration are automatically wrapped in a pipeline and sent to the server at the same time.\n * This can dramatically improve performance.\n * @param {string[]} [options.autoPipeliningIgnoredCommands=[]] - The list of commands which must not be automatically wrapped in pipelines.\n * @param {number} [options.maxScriptsCachingTime=60000] Default script definition caching time.\n * @extends [EventEmitter](http://nodejs.org/api/events.html#events_class_events_eventemitter)\n * @extends Commander\n * @example\n * ```js\n * var Redis = require('ioredis');\n *\n * var redis = new Redis();\n *\n * var redisOnPort6380 = new Redis(6380);\n * var anotherRedis = new Redis(6380, '192.168.100.1');\n * var unixSocketRedis = new Redis({ path: '/tmp/echo.sock' });\n * var unixSocketRedis2 = new Redis('/tmp/echo.sock');\n * var urlRedis = new Redis('redis://user:password@redis-service.com:6379/');\n * var urlRedis2 = new Redis('//localhost:6379');\n * var urlRedisTls = new Redis('rediss://user:password@redis-service.com:6379/');\n * var authedRedis = new Redis(6380, '192.168.100.1', { password: 'password' });\n * ```\n */\nexports.default = Redis;\nfunction Redis() {\n if (!(this instanceof Redis)) {\n console.error(new Error(\"Calling `Redis()` like a function is deprecated. Using `new Redis()` instead.\").stack.replace(\"Error\", \"Warning\"));\n return new Redis(arguments[0], arguments[1], arguments[2]);\n }\n this.parseOptions(arguments[0], arguments[1], arguments[2]);\n events_1.EventEmitter.call(this);\n commander_1.default.call(this);\n this.resetCommandQueue();\n this.resetOfflineQueue();\n this.connectionEpoch = 0;\n if (this.options.Connector) {\n this.connector = new this.options.Connector(this.options);\n }\n else if (this.options.sentinels) {\n const sentinelConnector = new connectors_1.SentinelConnector(this.options);\n sentinelConnector.emitter = this;\n this.connector = sentinelConnector;\n }\n else {\n this.connector = new connectors_1.StandaloneConnector(this.options);\n }\n this.retryAttempts = 0;\n // Prepare a cache of scripts and setup a interval which regularly clears it\n this._addedScriptHashes = {};\n // Prepare autopipelines structures\n this._autoPipelines = new Map();\n this._runningAutoPipelines = new Set();\n Object.defineProperty(this, \"autoPipelineQueueSize\", {\n get() {\n let queued = 0;\n for (const pipeline of this._autoPipelines.values()) {\n queued += pipeline.length;\n }\n return queued;\n },\n });\n // end(or wait) -> connecting -> connect -> ready -> end\n if (this.options.lazyConnect) {\n this.setStatus(\"wait\");\n }\n else {\n this.connect().catch(lodash_1.noop);\n }\n}\nutil_1.inherits(Redis, events_1.EventEmitter);\nObject.assign(Redis.prototype, commander_1.default.prototype);\n/**\n * Create a Redis instance\n *\n * @deprecated\n */\n// @ts-ignore\nRedis.createClient = function (...args) {\n // @ts-ignore\n return new Redis(...args);\n};\n/**\n * Default options\n *\n * @var defaultOptions\n * @private\n */\nRedis.defaultOptions = RedisOptions_1.DEFAULT_REDIS_OPTIONS;\nRedis.prototype.resetCommandQueue = function () {\n this.commandQueue = new Deque();\n};\nRedis.prototype.resetOfflineQueue = function () {\n this.offlineQueue = new Deque();\n};\nRedis.prototype.parseOptions = function () {\n this.options = {};\n let isTls = false;\n for (let i = 0; i < arguments.length; ++i) {\n const arg = arguments[i];\n if (arg === null || typeof arg === \"undefined\") {\n continue;\n }\n if (typeof arg === \"object\") {\n lodash_1.defaults(this.options, arg);\n }\n else if (typeof arg === \"string\") {\n lodash_1.defaults(this.options, utils_1.parseURL(arg));\n if (arg.startsWith(\"rediss://\")) {\n isTls = true;\n }\n }\n else if (typeof arg === \"number\") {\n this.options.port = arg;\n }\n else {\n throw new Error(\"Invalid argument \" + arg);\n }\n }\n if (isTls) {\n lodash_1.defaults(this.options, { tls: true });\n }\n lodash_1.defaults(this.options, Redis.defaultOptions);\n if (typeof this.options.port === \"string\") {\n this.options.port = parseInt(this.options.port, 10);\n }\n if (typeof this.options.db === \"string\") {\n this.options.db = parseInt(this.options.db, 10);\n }\n if (this.options.parser === \"hiredis\") {\n console.warn(\"Hiredis parser is abandoned since ioredis v3.0, and JavaScript parser will be used\");\n }\n this.options = utils_1.resolveTLSProfile(this.options);\n};\n/**\n * Change instance's status\n * @private\n */\nRedis.prototype.setStatus = function (status, arg) {\n // @ts-ignore\n if (debug.enabled) {\n debug(\"status[%s]: %s -> %s\", this._getDescription(), this.status || \"[empty]\", status);\n }\n this.status = status;\n process.nextTick(this.emit.bind(this, status, arg));\n};\nRedis.prototype.clearAddedScriptHashesCleanInterval = function () {\n if (this._addedScriptHashesCleanInterval) {\n clearInterval(this._addedScriptHashesCleanInterval);\n this._addedScriptHashesCleanInterval = null;\n }\n};\n/**\n * Create a connection to Redis.\n * This method will be invoked automatically when creating a new Redis instance\n * unless `lazyConnect: true` is passed.\n *\n * When calling this method manually, a Promise is returned, which will\n * be resolved when the connection status is ready.\n * @param {function} [callback]\n * @return {Promise<void>}\n * @public\n */\nRedis.prototype.connect = function (callback) {\n const _Promise = PromiseContainer.get();\n const promise = new _Promise((resolve, reject) => {\n if (this.status === \"connecting\" ||\n this.status === \"connect\" ||\n this.status === \"ready\") {\n reject(new Error(\"Redis is already connecting/connected\"));\n return;\n }\n // Make sure only one timer is active at a time\n this.clearAddedScriptHashesCleanInterval();\n // Scripts need to get reset on reconnect as redis\n // might have been restarted or some failover happened\n this._addedScriptHashes = {};\n // Start the script cache cleaning\n this._addedScriptHashesCleanInterval = setInterval(() => {\n this._addedScriptHashes = {};\n }, this.options.maxScriptsCachingTime);\n this.connectionEpoch += 1;\n this.setStatus(\"connecting\");\n const { options } = this;\n this.condition = {\n select: options.db,\n auth: options.username\n ? [options.username, options.password]\n : options.password,\n subscriber: false,\n };\n const _this = this;\n standard_as_callback_1.default(this.connector.connect(function (type, err) {\n _this.silentEmit(type, err);\n }), function (err, stream) {\n if (err) {\n _this.flushQueue(err);\n _this.silentEmit(\"error\", err);\n reject(err);\n _this.setStatus(\"end\");\n return;\n }\n let CONNECT_EVENT = options.tls ? \"secureConnect\" : \"connect\";\n if (options.sentinels && !options.enableTLSForSentinelMode) {\n CONNECT_EVENT = \"connect\";\n }\n _this.stream = stream;\n if (typeof options.keepAlive === \"number\") {\n stream.setKeepAlive(true, options.keepAlive);\n }\n if (stream.connecting) {\n stream.once(CONNECT_EVENT, eventHandler.connectHandler(_this));\n if (options.connectTimeout) {\n /*\n * Typically, Socket#setTimeout(0) will clear the timer\n * set before. However, in some platforms (Electron 3.x~4.x),\n * the timer will not be cleared. So we introduce a variable here.\n *\n * See https://github.com/electron/electron/issues/14915\n */\n let connectTimeoutCleared = false;\n stream.setTimeout(options.connectTimeout, function () {\n if (connectTimeoutCleared) {\n return;\n }\n stream.setTimeout(0);\n stream.destroy();\n const err = new Error(\"connect ETIMEDOUT\");\n // @ts-ignore\n err.errorno = \"ETIMEDOUT\";\n // @ts-ignore\n err.code = \"ETIMEDOUT\";\n // @ts-ignore\n err.syscall = \"connect\";\n eventHandler.errorHandler(_this)(err);\n });\n stream.once(CONNECT_EVENT, function () {\n connectTimeoutCleared = true;\n stream.setTimeout(0);\n });\n }\n }\n else if (stream.destroyed) {\n const firstError = _this.connector.firstError;\n if (firstError) {\n process.nextTick(() => {\n eventHandler.errorHandler(_this)(firstError);\n });\n }\n process.nextTick(eventHandler.closeHandler(_this));\n }\n else {\n process.nextTick(eventHandler.connectHandler(_this));\n }\n if (!stream.destroyed) {\n stream.once(\"error\", eventHandler.errorHandler(_this));\n stream.once(\"close\", eventHandler.closeHandler(_this));\n }\n if (options.noDelay) {\n stream.setNoDelay(true);\n }\n const connectionReadyHandler = function () {\n _this.removeListener(\"close\", connectionCloseHandler);\n resolve();\n };\n var connectionCloseHandler = function () {\n _this.removeListener(\"ready\", connectionReadyHandler);\n reject(new Error(utils_1.CONNECTION_CLOSED_ERROR_MSG));\n };\n _this.once(\"ready\", connectionReadyHandler);\n _this.once(\"close\", connectionCloseHandler);\n });\n });\n return standard_as_callback_1.default(promise, callback);\n};\n/**\n * Disconnect from Redis.\n *\n * This method closes the connection immediately,\n * and may lose some pending replies that haven't written to client.\n * If you want to wait for the pending replies, use Redis#quit instead.\n * @public\n */\nRedis.prototype.disconnect = function (reconnect) {\n this.clearAddedScriptHashesCleanInterval();\n if (!reconnect) {\n this.manuallyClosing = true;\n }\n if (this.reconnectTimeout && !reconnect) {\n clearTimeout(this.reconnectTimeout);\n this.reconnectTimeout = null;\n }\n if (this.status === \"wait\") {\n eventHandler.closeHandler(this)();\n }\n else {\n this.connector.disconnect();\n }\n};\n/**\n * Disconnect from Redis.\n *\n * @deprecated\n */\nRedis.prototype.end = function () {\n this.disconnect();\n};\n/**\n * Create a new instance with the same options as the current one.\n *\n * @example\n * ```js\n * var redis = new Redis(6380);\n * var anotherRedis = redis.duplicate();\n * ```\n *\n * @public\n */\nRedis.prototype.duplicate = function (override) {\n return new Redis(Object.assign({}, this.options, override || {}));\n};\nRedis.prototype.recoverFromFatalError = function (commandError, err, options) {\n this.flushQueue(err, options);\n this.silentEmit(\"error\", err);\n this.disconnect(true);\n};\nRedis.prototype.handleReconnection = function handleReconnection(err, item) {\n let needReconnect = false;\n if (this.options.reconnectOnError) {\n needReconnect = this.options.reconnectOnError(err);\n }\n switch (needReconnect) {\n case 1:\n case true:\n if (this.status !== \"reconnecting\") {\n this.disconnect(true);\n }\n item.command.reject(err);\n break;\n case 2:\n if (this.status !== \"reconnecting\") {\n this.disconnect(true);\n }\n if (this.condition.select !== item.select &&\n item.command.name !== \"select\") {\n this.select(item.select);\n }\n this.sendCommand(item.command);\n break;\n default:\n item.command.reject(err);\n }\n};\n/**\n * Flush offline queue and command queue with error.\n *\n * @param {Error} error - The error object to send to the commands\n * @param {object} options\n * @private\n */\nRedis.prototype.flushQueue = function (error, options) {\n options = lodash_1.defaults({}, options, {\n offlineQueue: true,\n commandQueue: true,\n });\n let item;\n if (options.offlineQueue) {\n while (this.offlineQueue.length > 0) {\n item = this.offlineQueue.shift();\n item.command.reject(error);\n }\n }\n if (options.commandQueue) {\n if (this.commandQueue.length > 0) {\n if (this.stream) {\n this.stream.removeAllListeners(\"data\");\n }\n while (this.commandQueue.length > 0) {\n item = this.commandQueue.shift();\n item.command.reject(error);\n }\n }\n }\n};\n/**\n * Check whether Redis has finished loading the persistent data and is able to\n * process commands.\n *\n * @param {Function} callback\n * @private\n */\nRedis.prototype._readyCheck = function (callback) {\n const _this = this;\n this.info(function (err, res) {\n if (err) {\n return callback(err);\n }\n if (typeof res !== \"string\") {\n return callback(null, res);\n }\n const info = {};\n const lines = res.split(\"\\r\\n\");\n for (let i = 0; i < lines.length; ++i) {\n const [fieldName, ...fieldValueParts] = lines[i].split(\":\");\n const fieldValue = fieldValueParts.join(\":\");\n if (fieldValue) {\n info[fieldName] = fieldValue;\n }\n }\n if (!info.loading || info.loading === \"0\") {\n callback(null, info);\n }\n else {\n const loadingEtaMs = (info.loading_eta_seconds || 1) * 1000;\n const retryTime = _this.options.maxLoadingRetryTime &&\n _this.options.maxLoadingRetryTime < loadingEtaMs\n ? _this.options.maxLoadingRetryTime\n : loadingEtaMs;\n debug(\"Redis server still loading, trying again in \" + retryTime + \"ms\");\n setTimeout(function () {\n _this._readyCheck(callback);\n }, retryTime);\n }\n });\n};\n/**\n * Emit only when there's at least one listener.\n *\n * @param {string} eventName - Event to emit\n * @param {...*} arguments - Arguments\n * @return {boolean} Returns true if event had listeners, false otherwise.\n * @private\n */\nRedis.prototype.silentEmit = function (eventName) {\n let error;\n if (eventName === \"error\") {\n error = arguments[1];\n if (this.status === \"end\") {\n return;\n }\n if (this.manuallyClosing) {\n // ignore connection related errors when manually disconnecting\n if (error instanceof Error &&\n (error.message === utils_1.CONNECTION_CLOSED_ERROR_MSG ||\n // @ts-ignore\n error.syscall === \"connect\" ||\n // @ts-ignore\n error.syscall === \"read\")) {\n return;\n }\n }\n }\n if (this.listeners(eventName).length > 0) {\n return this.emit.apply(this, arguments);\n }\n if (error && error instanceof Error) {\n console.error(\"[ioredis] Unhandled error event:\", error.stack);\n }\n return false;\n};\n/**\n * Listen for all requests received by the server in real time.\n *\n * This command will create a new connection to Redis and send a\n * MONITOR command via the new connection in order to avoid disturbing\n * the current connection.\n *\n * @param {function} [callback] The callback function. If omit, a promise will be returned.\n * @example\n * ```js\n * var redis = new Redis();\n * redis.monitor(function (err, monitor) {\n * // Entering monitoring mode.\n * monitor.on('monitor', function (time, args, source, database) {\n * console.log(time + \": \" + util.inspect(args));\n * });\n * });\n *\n * // supports promise as well as other commands\n * redis.monitor().then(function (monitor) {\n * monitor.on('monitor', function (time, args, source, database) {\n * console.log(time + \": \" + util.inspect(args));\n * });\n * });\n * ```\n * @public\n */\nRedis.prototype.monitor = function (callback) {\n const monitorInstance = this.duplicate({\n monitor: true,\n lazyConnect: false,\n });\n const Promise = PromiseContainer.get();\n return standard_as_callback_1.default(new Promise(function (resolve) {\n monitorInstance.once(\"monitoring\", function () {\n resolve(monitorInstance);\n });\n }), callback);\n};\ntransaction_1.addTransactionSupport(Redis.prototype);\n/**\n * Send a command to Redis\n *\n * This method is used internally by the `Redis#set`, `Redis#lpush` etc.\n * Most of the time you won't invoke this method directly.\n * However when you want to send a command that is not supported by ioredis yet,\n * this command will be useful.\n *\n * @method sendCommand\n * @memberOf Redis#\n * @param {Command} command - The Command instance to send.\n * @see {@link Command}\n * @example\n * ```js\n * var redis = new Redis();\n *\n * // Use callback\n * var get = new Command('get', ['foo'], 'utf8', function (err, result) {\n * console.log(result);\n * });\n * redis.sendCommand(get);\n *\n * // Use promise\n * var set = new Command('set', ['foo', 'bar'], 'utf8');\n * set.promise.then(function (result) {\n * console.log(result);\n * });\n * redis.sendCommand(set);\n * ```\n * @private\n */\nRedis.prototype.sendCommand = function (command, stream) {\n if (this.status === \"wait\") {\n this.connect().catch(lodash_1.noop);\n }\n if (this.status === \"end\") {\n command.reject(new Error(utils_1.CONNECTION_CLOSED_ERROR_MSG));\n return command.promise;\n }\n if (this.condition.subscriber &&\n !command_1.default.checkFlag(\"VALID_IN_SUBSCRIBER_MODE\", command.name)) {\n command.reject(new Error(\"Connection in subscriber mode, only subscriber commands may be used\"));\n return command.promise;\n }\n if (typeof this.options.commandTimeout === \"number\") {\n command.setTimeout(this.options.commandTimeout);\n }\n if (command.name === \"quit\") {\n this.clearAddedScriptHashesCleanInterval();\n }\n let writable = this.status === \"ready\" ||\n (!stream &&\n this.status === \"connect\" &&\n commands.exists(command.name) &&\n commands.hasFlag(command.name, \"loading\"));\n if (!this.stream) {\n writable = false;\n }\n else if (!this.stream.writable) {\n writable = false;\n }\n else if (this.stream._writableState && this.stream._writableState.ended) {\n // https://github.com/iojs/io.js/pull/1217\n writable = false;\n }\n if (!writable && !this.options.enableOfflineQueue) {\n command.reject(new Error(\"Stream isn't writeable and enableOfflineQueue options is false\"));\n return command.promise;\n }\n if (!writable && command.name === \"quit\" && this.offlineQueue.length === 0) {\n this.disconnect();\n command.resolve(Buffer.from(\"OK\"));\n return command.promise;\n }\n if (writable) {\n // @ts-ignore\n if (debug.enabled) {\n debug(\"write command[%s]: %d -> %s(%o)\", this._getDescription(), this.condition.select, command.name, command.args);\n }\n (stream || this.stream).write(command.toWritable());\n this.commandQueue.push({\n command: command,\n stream: stream,\n select: this.condition.select,\n });\n if (command_1.default.checkFlag(\"WILL_DISCONNECT\", command.name)) {\n this.manuallyClosing = true;\n }\n }\n else if (this.options.enableOfflineQueue) {\n // @ts-ignore\n if (debug.enabled) {\n debug(\"queue command[%s]: %d -> %s(%o)\", this._getDescription(), this.condition.select, command.name, command.args);\n }\n this.offlineQueue.push({\n command: command,\n stream: stream,\n select: this.condition.select,\n });\n }\n if (command.name === \"select\" && utils_1.isInt(command.args[0])) {\n const db = parseInt(command.args[0], 10);\n if (this.condition.select !== db) {\n this.condition.select = db;\n this.emit(\"select\", db);\n debug(\"switch to db [%d]\", this.condition.select);\n }\n }\n return command.promise;\n};\n/**\n * Get description of the connection. Used for debugging.\n * @private\n */\nRedis.prototype._getDescription = function () {\n let description;\n if (this.options.path) {\n description = this.options.path;\n }\n else if (this.stream &&\n this.stream.remoteAddress &&\n this.stream.remotePort) {\n description = this.stream.remoteAddress + \":\" + this.stream.remotePort;\n }\n else {\n description = this.options.host + \":\" + this.options.port;\n }\n if (this.options.connectionName) {\n description += ` (${this.options.connectionName})`;\n }\n return description;\n};\n[\n \"scan\",\n \"sscan\",\n \"hscan\",\n \"zscan\",\n \"scanBuffer\",\n \"sscanBuffer\",\n \"hscanBuffer\",\n \"zscanBuffer\",\n].forEach(function (command) {\n Redis.prototype[command + \"Stream\"] = function (key, options) {\n if (command === \"scan\" || command === \"scanBuffer\") {\n options = key;\n key = null;\n }\n return new ScanStream_1.default(lodash_1.defaults({\n objectMode: true,\n key: key,\n redis: this,\n command: command,\n }, options));\n };\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst redis_errors_1 = require(\"redis-errors\");\nclass ClusterAllFailedError extends redis_errors_1.RedisError {\n constructor(message, lastNodeError) {\n super(message);\n this.lastNodeError = lastNodeError;\n Error.captureStackTrace(this, this.constructor);\n }\n get name() {\n return this.constructor.name;\n }\n}\nexports.default = ClusterAllFailedError;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils_1 = require(\"../utils\");\nconst net_1 = require(\"net\");\nfunction getNodeKey(node) {\n node.port = node.port || 6379;\n node.host = node.host || \"127.0.0.1\";\n return node.host + \":\" + node.port;\n}\nexports.getNodeKey = getNodeKey;\nfunction nodeKeyToRedisOptions(nodeKey) {\n const portIndex = nodeKey.lastIndexOf(\":\");\n if (portIndex === -1) {\n throw new Error(`Invalid node key ${nodeKey}`);\n }\n return {\n host: nodeKey.slice(0, portIndex),\n port: Number(nodeKey.slice(portIndex + 1)),\n };\n}\nexports.nodeKeyToRedisOptions = nodeKeyToRedisOptions;\nfunction normalizeNodeOptions(nodes) {\n return nodes.map((node) => {\n const options = {};\n if (typeof node === \"object\") {\n Object.assign(options, node);\n }\n else if (typeof node === \"string\") {\n Object.assign(options, utils_1.parseURL(node));\n }\n else if (typeof node === \"number\") {\n options.port = node;\n }\n else {\n throw new Error(\"Invalid argument \" + node);\n }\n if (typeof options.port === \"string\") {\n options.port = parseInt(options.port, 10);\n }\n // Cluster mode only support db 0\n delete options.db;\n if (!options.port) {\n options.port = 6379;\n }\n if (!options.host) {\n options.host = \"127.0.0.1\";\n }\n return utils_1.resolveTLSProfile(options);\n });\n}\nexports.normalizeNodeOptions = normalizeNodeOptions;\nfunction getUniqueHostnamesFromOptions(nodes) {\n const uniqueHostsMap = {};\n nodes.forEach((node) => {\n uniqueHostsMap[node.host] = true;\n });\n return Object.keys(uniqueHostsMap).filter((host) => !net_1.isIP(host));\n}\nexports.getUniqueHostnamesFromOptions = getUniqueHostnamesFromOptions;\nfunction groupSrvRecords(records) {\n const recordsByPriority = {};\n for (const record of records) {\n if (!recordsByPriority.hasOwnProperty(record.priority)) {\n recordsByPriority[record.priority] = {\n totalWeight: record.weight,\n records: [record],\n };\n }\n else {\n recordsByPriority[record.priority].totalWeight += record.weight;\n recordsByPriority[record.priority].records.push(record);\n }\n }\n return recordsByPriority;\n}\nexports.groupSrvRecords = groupSrvRecords;\nfunction weightSrvRecords(recordsGroup) {\n if (recordsGroup.records.length === 1) {\n recordsGroup.totalWeight = 0;\n return recordsGroup.records.shift();\n }\n // + `recordsGroup.records.length` to support `weight` 0\n const random = Math.floor(Math.random() * (recordsGroup.totalWeight + recordsGroup.records.length));\n let total = 0;\n for (const [i, record] of recordsGroup.records.entries()) {\n total += 1 + record.weight;\n if (total > random) {\n recordsGroup.totalWeight -= record.weight;\n recordsGroup.records.splice(i, 1);\n return record;\n }\n }\n}\nexports.weightSrvRecords = weightSrvRecords;\nfunction getConnectionName(component, nodeConnectionName) {\n const prefix = `ioredis-cluster(${component})`;\n return nodeConnectionName ? `${prefix}:${nodeConnectionName}` : prefix;\n}\nexports.getConnectionName = getConnectionName;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst events_1 = require(\"events\");\nconst utils_1 = require(\"../utils\");\nconst util_1 = require(\"./util\");\nconst redis_1 = require(\"../redis\");\nconst debug = utils_1.Debug(\"cluster:connectionPool\");\nclass ConnectionPool extends events_1.EventEmitter {\n constructor(redisOptions) {\n super();\n this.redisOptions = redisOptions;\n // master + slave = all\n this.nodes = {\n all: {},\n master: {},\n slave: {},\n };\n this.specifiedOptions = {};\n }\n getNodes(role = \"all\") {\n const nodes = this.nodes[role];\n return Object.keys(nodes).map((key) => nodes[key]);\n }\n getInstanceByKey(key) {\n return this.nodes.all[key];\n }\n getSampleInstance(role) {\n const keys = Object.keys(this.nodes[role]);\n const sampleKey = utils_1.sample(keys);\n return this.nodes[role][sampleKey];\n }\n /**\n * Find or create a connection to the node\n *\n * @param {IRedisOptions} node\n * @param {boolean} [readOnly=false]\n * @returns {*}\n * @memberof ConnectionPool\n */\n findOrCreate(node, readOnly = false) {\n const key = util_1.getNodeKey(node);\n readOnly = Boolean(readOnly);\n if (this.specifiedOptions[key]) {\n Object.assign(node, this.specifiedOptions[key]);\n }\n else {\n this.specifiedOptions[key] = node;\n }\n let redis;\n if (this.nodes.all[key]) {\n redis = this.nodes.all[key];\n if (redis.options.readOnly !== readOnly) {\n redis.options.readOnly = readOnly;\n debug(\"Change role of %s to %s\", key, readOnly ? \"slave\" : \"master\");\n redis[readOnly ? \"readonly\" : \"readwrite\"]().catch(utils_1.noop);\n if (readOnly) {\n delete this.nodes.master[key];\n this.nodes.slave[key] = redis;\n }\n else {\n delete this.nodes.slave[key];\n this.nodes.master[key] = redis;\n }\n }\n }\n else {\n debug(\"Connecting to %s as %s\", key, readOnly ? \"slave\" : \"master\");\n redis = new redis_1.default(utils_1.defaults({\n // Never try to reconnect when a node is lose,\n // instead, waiting for a `MOVED` error and\n // fetch the slots again.\n retryStrategy: null,\n // Offline queue should be enabled so that\n // we don't need to wait for the `ready` event\n // before sending commands to the node.\n enableOfflineQueue: true,\n readOnly: readOnly,\n }, node, this.redisOptions, { lazyConnect: true }));\n this.nodes.all[key] = redis;\n this.nodes[readOnly ? \"slave\" : \"master\"][key] = redis;\n redis.once(\"end\", () => {\n this.removeNode(key);\n this.emit(\"-node\", redis, key);\n if (!Object.keys(this.nodes.all).length) {\n this.emit(\"drain\");\n }\n });\n this.emit(\"+node\", redis, key);\n redis.on(\"error\", function (error) {\n this.emit(\"nodeError\", error, key);\n });\n }\n return redis;\n }\n /**\n * Remove a node from the pool.\n */\n removeNode(key) {\n const { nodes } = this;\n if (nodes.all[key]) {\n debug(\"Remove %s from the pool\", key);\n delete nodes.all[key];\n }\n delete nodes.master[key];\n delete nodes.slave[key];\n }\n /**\n * Reset the pool with a set of nodes.\n * The old node will be removed.\n *\n * @param {(Array<string | number | object>)} nodes\n * @memberof ConnectionPool\n */\n reset(nodes) {\n debug(\"Reset with %O\", nodes);\n const newNodes = {};\n nodes.forEach((node) => {\n const key = util_1.getNodeKey(node);\n // Don't override the existing (master) node\n // when the current one is slave.\n if (!(node.readOnly && newNodes[key])) {\n newNodes[key] = node;\n }\n });\n Object.keys(this.nodes.all).forEach((key) => {\n if (!newNodes[key]) {\n debug(\"Disconnect %s because the node does not hold any slot\", key);\n this.nodes.all[key].disconnect();\n this.removeNode(key);\n }\n });\n Object.keys(newNodes).forEach((key) => {\n const node = newNodes[key];\n this.findOrCreate(node, node.readOnly);\n });\n }\n}\nexports.default = ConnectionPool;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"./util\");\nconst utils_1 = require(\"../utils\");\nconst redis_1 = require(\"../redis\");\nconst debug = utils_1.Debug(\"cluster:subscriber\");\nclass ClusterSubscriber {\n constructor(connectionPool, emitter) {\n this.connectionPool = connectionPool;\n this.emitter = emitter;\n this.started = false;\n this.subscriber = null;\n this.connectionPool.on(\"-node\", (_, key) => {\n if (!this.started || !this.subscriber) {\n return;\n }\n if (util_1.getNodeKey(this.subscriber.options) === key) {\n debug(\"subscriber has left, selecting a new one...\");\n this.selectSubscriber();\n }\n });\n this.connectionPool.on(\"+node\", () => {\n if (!this.started || this.subscriber) {\n return;\n }\n debug(\"a new node is discovered and there is no subscriber, selecting a new one...\");\n this.selectSubscriber();\n });\n }\n getInstance() {\n return this.subscriber;\n }\n selectSubscriber() {\n const lastActiveSubscriber = this.lastActiveSubscriber;\n // Disconnect the previous subscriber even if there\n // will not be a new one.\n if (lastActiveSubscriber) {\n lastActiveSubscriber.disconnect();\n }\n if (this.subscriber) {\n this.subscriber.disconnect();\n }\n const sampleNode = utils_1.sample(this.connectionPool.getNodes());\n if (!sampleNode) {\n debug(\"selecting subscriber failed since there is no node discovered in the cluster yet\");\n this.subscriber = null;\n return;\n }\n const { options } = sampleNode;\n debug(\"selected a subscriber %s:%s\", options.host, options.port);\n /*\n * Create a specialized Redis connection for the subscription.\n * Note that auto reconnection is enabled here.\n *\n * `enableReadyCheck` is also enabled because although subscription is allowed\n * while redis is loading data from the disk, we can check if the password\n * provided for the subscriber is correct, and if not, the current subscriber\n * will be disconnected and a new subscriber will be selected.\n */\n this.subscriber = new redis_1.default({\n port: options.port,\n host: options.host,\n username: options.username,\n password: options.password,\n enableReadyCheck: true,\n connectionName: util_1.getConnectionName(\"subscriber\", options.connectionName),\n lazyConnect: true,\n tls: options.tls,\n });\n // Ignore the errors since they're handled in the connection pool.\n this.subscriber.on(\"error\", utils_1.noop);\n // Re-subscribe previous channels\n const previousChannels = { subscribe: [], psubscribe: [] };\n if (lastActiveSubscriber) {\n const condition = lastActiveSubscriber.condition || lastActiveSubscriber.prevCondition;\n if (condition && condition.subscriber) {\n previousChannels.subscribe = condition.subscriber.channels(\"subscribe\");\n previousChannels.psubscribe = condition.subscriber.channels(\"psubscribe\");\n }\n }\n if (previousChannels.subscribe.length ||\n previousChannels.psubscribe.length) {\n let pending = 0;\n for (const type of [\"subscribe\", \"psubscribe\"]) {\n const channels = previousChannels[type];\n if (channels.length) {\n pending += 1;\n debug(\"%s %d channels\", type, channels.length);\n this.subscriber[type](channels)\n .then(() => {\n if (!--pending) {\n this.lastActiveSubscriber = this.subscriber;\n }\n })\n .catch(() => {\n // TODO: should probably disconnect the subscriber and try again.\n debug(\"failed to %s %d channels\", type, channels.length);\n });\n }\n }\n }\n else {\n this.lastActiveSubscriber = this.subscriber;\n }\n for (const event of [\"message\", \"messageBuffer\"]) {\n this.subscriber.on(event, (arg1, arg2) => {\n this.emitter.emit(event, arg1, arg2);\n });\n }\n for (const event of [\"pmessage\", \"pmessageBuffer\"]) {\n this.subscriber.on(event, (arg1, arg2, arg3) => {\n this.emitter.emit(event, arg1, arg2, arg3);\n });\n }\n }\n start() {\n this.started = true;\n this.selectSubscriber();\n debug(\"started\");\n }\n stop() {\n this.started = false;\n if (this.subscriber) {\n this.subscriber.disconnect();\n this.subscriber = null;\n }\n debug(\"stopped\");\n }\n}\nexports.default = ClusterSubscriber;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils_1 = require(\"../utils\");\nconst Deque = require(\"denque\");\nconst debug = utils_1.Debug(\"delayqueue\");\n/**\n * Queue that runs items after specified duration\n *\n * @export\n * @class DelayQueue\n */\nclass DelayQueue {\n constructor() {\n this.queues = {};\n this.timeouts = {};\n }\n /**\n * Add a new item to the queue\n *\n * @param {string} bucket bucket name\n * @param {Function} item function that will run later\n * @param {IDelayQueueOptions} options\n * @memberof DelayQueue\n */\n push(bucket, item, options) {\n const callback = options.callback || process.nextTick;\n if (!this.queues[bucket]) {\n this.queues[bucket] = new Deque();\n }\n const queue = this.queues[bucket];\n queue.push(item);\n if (!this.timeouts[bucket]) {\n this.timeouts[bucket] = setTimeout(() => {\n callback(() => {\n this.timeouts[bucket] = null;\n this.execute(bucket);\n });\n }, options.timeout);\n }\n }\n execute(bucket) {\n const queue = this.queues[bucket];\n if (!queue) {\n return;\n }\n const { length } = queue;\n if (!length) {\n return;\n }\n debug(\"send %d commands in %s queue\", length, bucket);\n this.queues[bucket] = null;\n while (queue.length > 0) {\n queue.shift()();\n }\n }\n}\nexports.default = DelayQueue;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst dns_1 = require(\"dns\");\nexports.DEFAULT_CLUSTER_OPTIONS = {\n clusterRetryStrategy: (times) => Math.min(100 + times * 2, 2000),\n enableOfflineQueue: true,\n enableReadyCheck: true,\n scaleReads: \"master\",\n maxRedirections: 16,\n retryDelayOnMoved: 0,\n retryDelayOnFailover: 100,\n retryDelayOnClusterDown: 100,\n retryDelayOnTryAgain: 100,\n slotsRefreshTimeout: 1000,\n slotsRefreshInterval: 5000,\n useSRVRecords: false,\n resolveSrv: dns_1.resolveSrv,\n dnsLookup: dns_1.lookup,\n enableAutoPipelining: false,\n autoPipeliningIgnoredCommands: [],\n maxScriptsCachingTime: 60000,\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst events_1 = require(\"events\");\nconst ClusterAllFailedError_1 = require(\"../errors/ClusterAllFailedError\");\nconst utils_1 = require(\"../utils\");\nconst ConnectionPool_1 = require(\"./ConnectionPool\");\nconst util_1 = require(\"./util\");\nconst ClusterSubscriber_1 = require(\"./ClusterSubscriber\");\nconst DelayQueue_1 = require(\"./DelayQueue\");\nconst ScanStream_1 = require(\"../ScanStream\");\nconst redis_errors_1 = require(\"redis-errors\");\nconst standard_as_callback_1 = require(\"standard-as-callback\");\nconst PromiseContainer = require(\"../promiseContainer\");\nconst ClusterOptions_1 = require(\"./ClusterOptions\");\nconst utils_2 = require(\"../utils\");\nconst commands = require(\"redis-commands\");\nconst command_1 = require(\"../command\");\nconst redis_1 = require(\"../redis\");\nconst commander_1 = require(\"../commander\");\nconst Deque = require(\"denque\");\nconst debug = utils_1.Debug(\"cluster\");\n/**\n * Client for the official Redis Cluster\n *\n * @class Cluster\n * @extends {EventEmitter}\n */\nclass Cluster extends events_1.EventEmitter {\n /**\n * Creates an instance of Cluster.\n *\n * @param {((string | number | object)[])} startupNodes\n * @param {IClusterOptions} [options={}]\n * @memberof Cluster\n */\n constructor(startupNodes, options = {}) {\n super();\n this.slots = [];\n this.retryAttempts = 0;\n this.delayQueue = new DelayQueue_1.default();\n this.offlineQueue = new Deque();\n this.isRefreshing = false;\n this.isCluster = true;\n this._autoPipelines = new Map();\n this._groupsIds = {};\n this._groupsBySlot = Array(16384);\n this._runningAutoPipelines = new Set();\n this._readyDelayedCallbacks = [];\n this._addedScriptHashes = {};\n /**\n * Every time Cluster#connect() is called, this value will be\n * auto-incrementing. The purpose of this value is used for\n * discarding previous connect attampts when creating a new\n * connection.\n *\n * @private\n * @type {number}\n * @memberof Cluster\n */\n this.connectionEpoch = 0;\n commander_1.default.call(this);\n this.startupNodes = startupNodes;\n this.options = utils_1.defaults({}, options, ClusterOptions_1.DEFAULT_CLUSTER_OPTIONS, this.options);\n // validate options\n if (typeof this.options.scaleReads !== \"function\" &&\n [\"all\", \"master\", \"slave\"].indexOf(this.options.scaleReads) === -1) {\n throw new Error('Invalid option scaleReads \"' +\n this.options.scaleReads +\n '\". Expected \"all\", \"master\", \"slave\" or a custom function');\n }\n this.connectionPool = new ConnectionPool_1.default(this.options.redisOptions);\n this.connectionPool.on(\"-node\", (redis, key) => {\n this.emit(\"-node\", redis);\n });\n this.connectionPool.on(\"+node\", (redis) => {\n this.emit(\"+node\", redis);\n });\n this.connectionPool.on(\"drain\", () => {\n this.setStatus(\"close\");\n });\n this.connectionPool.on(\"nodeError\", (error, key) => {\n this.emit(\"node error\", error, key);\n });\n this.subscriber = new ClusterSubscriber_1.default(this.connectionPool, this);\n if (this.options.lazyConnect) {\n this.setStatus(\"wait\");\n }\n else {\n this.connect().catch((err) => {\n debug(\"connecting failed: %s\", err);\n });\n }\n }\n resetOfflineQueue() {\n this.offlineQueue = new Deque();\n }\n clearNodesRefreshInterval() {\n if (this.slotsTimer) {\n clearTimeout(this.slotsTimer);\n this.slotsTimer = null;\n }\n }\n clearAddedScriptHashesCleanInterval() {\n if (this._addedScriptHashesCleanInterval) {\n clearInterval(this._addedScriptHashesCleanInterval);\n this._addedScriptHashesCleanInterval = null;\n }\n }\n resetNodesRefreshInterval() {\n if (this.slotsTimer) {\n return;\n }\n const nextRound = () => {\n this.slotsTimer = setTimeout(() => {\n debug('refreshing slot caches... (triggered by \"slotsRefreshInterval\" option)');\n this.refreshSlotsCache(() => {\n nextRound();\n });\n }, this.options.slotsRefreshInterval);\n };\n nextRound();\n }\n /**\n * Connect to a cluster\n *\n * @returns {Promise<void>}\n * @memberof Cluster\n */\n connect() {\n const Promise = PromiseContainer.get();\n return new Promise((resolve, reject) => {\n if (this.status === \"connecting\" ||\n this.status === \"connect\" ||\n this.status === \"ready\") {\n reject(new Error(\"Redis is already connecting/connected\"));\n return;\n }\n // Make sure only one timer is active at a time\n this.clearAddedScriptHashesCleanInterval();\n // Start the script cache cleaning\n this._addedScriptHashesCleanInterval = setInterval(() => {\n this._addedScriptHashes = {};\n }, this.options.maxScriptsCachingTime);\n const epoch = ++this.connectionEpoch;\n this.setStatus(\"connecting\");\n this.resolveStartupNodeHostnames()\n .then((nodes) => {\n if (this.connectionEpoch !== epoch) {\n debug(\"discard connecting after resolving startup nodes because epoch not match: %d != %d\", epoch, this.connectionEpoch);\n reject(new redis_errors_1.RedisError(\"Connection is discarded because a new connection is made\"));\n return;\n }\n if (this.status !== \"connecting\") {\n debug(\"discard connecting after resolving startup nodes because the status changed to %s\", this.status);\n reject(new redis_errors_1.RedisError(\"Connection is aborted\"));\n return;\n }\n this.connectionPool.reset(nodes);\n function readyHandler() {\n this.setStatus(\"ready\");\n this.retryAttempts = 0;\n this.executeOfflineCommands();\n this.resetNodesRefreshInterval();\n resolve();\n }\n let closeListener = undefined;\n const refreshListener = () => {\n this.invokeReadyDelayedCallbacks(undefined);\n this.removeListener(\"close\", closeListener);\n this.manuallyClosing = false;\n this.setStatus(\"connect\");\n if (this.options.enableReadyCheck) {\n this.readyCheck((err, fail) => {\n if (err || fail) {\n debug(\"Ready check failed (%s). Reconnecting...\", err || fail);\n if (this.status === \"connect\") {\n this.disconnect(true);\n }\n }\n else {\n readyHandler.call(this);\n }\n });\n }\n else {\n readyHandler.call(this);\n }\n };\n closeListener = function () {\n const error = new Error(\"None of startup nodes is available\");\n this.removeListener(\"refresh\", refreshListener);\n this.invokeReadyDelayedCallbacks(error);\n reject(error);\n };\n this.once(\"refresh\", refreshListener);\n this.once(\"close\", closeListener);\n this.once(\"close\", this.handleCloseEvent.bind(this));\n this.refreshSlotsCache(function (err) {\n if (err && err.message === \"Failed to refresh slots cache.\") {\n redis_1.default.prototype.silentEmit.call(this, \"error\", err);\n this.connectionPool.reset([]);\n }\n }.bind(this));\n this.subscriber.start();\n })\n .catch((err) => {\n this.setStatus(\"close\");\n this.handleCloseEvent(err);\n this.invokeReadyDelayedCallbacks(err);\n reject(err);\n });\n });\n }\n /**\n * Called when closed to check whether a reconnection should be made\n *\n * @private\n * @memberof Cluster\n */\n handleCloseEvent(reason) {\n if (reason) {\n debug(\"closed because %s\", reason);\n }\n this.clearAddedScriptHashesCleanInterval();\n let retryDelay;\n if (!this.manuallyClosing &&\n typeof this.options.clusterRetryStrategy === \"function\") {\n retryDelay = this.options.clusterRetryStrategy.call(this, ++this.retryAttempts, reason);\n }\n if (typeof retryDelay === \"number\") {\n this.setStatus(\"reconnecting\");\n this.reconnectTimeout = setTimeout(function () {\n this.reconnectTimeout = null;\n debug(\"Cluster is disconnected. Retrying after %dms\", retryDelay);\n this.connect().catch(function (err) {\n debug(\"Got error %s when reconnecting. Ignoring...\", err);\n });\n }.bind(this), retryDelay);\n }\n else {\n this.setStatus(\"end\");\n this.flushQueue(new Error(\"None of startup nodes is available\"));\n }\n }\n /**\n * Disconnect from every node in the cluster.\n *\n * @param {boolean} [reconnect=false]\n * @memberof Cluster\n */\n disconnect(reconnect = false) {\n const status = this.status;\n this.setStatus(\"disconnecting\");\n this.clearAddedScriptHashesCleanInterval();\n if (!reconnect) {\n this.manuallyClosing = true;\n }\n if (this.reconnectTimeout && !reconnect) {\n clearTimeout(this.reconnectTimeout);\n this.reconnectTimeout = null;\n debug(\"Canceled reconnecting attempts\");\n }\n this.clearNodesRefreshInterval();\n this.subscriber.stop();\n if (status === \"wait\") {\n this.setStatus(\"close\");\n this.handleCloseEvent();\n }\n else {\n this.connectionPool.reset([]);\n }\n }\n /**\n * Quit the cluster gracefully.\n *\n * @param {CallbackFunction<'OK'>} [callback]\n * @returns {Promise<'OK'>}\n * @memberof Cluster\n */\n quit(callback) {\n const status = this.status;\n this.setStatus(\"disconnecting\");\n this.clearAddedScriptHashesCleanInterval();\n this.manuallyClosing = true;\n if (this.reconnectTimeout) {\n clearTimeout(this.reconnectTimeout);\n this.reconnectTimeout = null;\n }\n this.clearNodesRefreshInterval();\n this.subscriber.stop();\n const Promise = PromiseContainer.get();\n if (status === \"wait\") {\n const ret = standard_as_callback_1.default(Promise.resolve(\"OK\"), callback);\n // use setImmediate to make sure \"close\" event\n // being emitted after quit() is returned\n setImmediate(function () {\n this.setStatus(\"close\");\n this.handleCloseEvent();\n }.bind(this));\n return ret;\n }\n return standard_as_callback_1.default(Promise.all(this.nodes().map((node) => node.quit().catch((err) => {\n // Ignore the error caused by disconnecting since\n // we're disconnecting...\n if (err.message === utils_2.CONNECTION_CLOSED_ERROR_MSG) {\n return \"OK\";\n }\n throw err;\n }))).then(() => \"OK\"), callback);\n }\n /**\n * Create a new instance with the same startup nodes and options as the current one.\n *\n * @example\n * ```js\n * var cluster = new Redis.Cluster([{ host: \"127.0.0.1\", port: \"30001\" }]);\n * var anotherCluster = cluster.duplicate();\n * ```\n *\n * @public\n * @param {((string | number | object)[])} [overrideStartupNodes=[]]\n * @param {IClusterOptions} [overrideOptions={}]\n * @memberof Cluster\n */\n duplicate(overrideStartupNodes = [], overrideOptions = {}) {\n const startupNodes = overrideStartupNodes.length > 0\n ? overrideStartupNodes\n : this.startupNodes.slice(0);\n const options = Object.assign({}, this.options, overrideOptions);\n return new Cluster(startupNodes, options);\n }\n /**\n * Get nodes with the specified role\n *\n * @param {NodeRole} [role='all']\n * @returns {any[]}\n * @memberof Cluster\n */\n nodes(role = \"all\") {\n if (role !== \"all\" && role !== \"master\" && role !== \"slave\") {\n throw new Error('Invalid role \"' + role + '\". Expected \"all\", \"master\" or \"slave\"');\n }\n return this.connectionPool.getNodes(role);\n }\n // This is needed in order not to install a listener for each auto pipeline\n delayUntilReady(callback) {\n this._readyDelayedCallbacks.push(callback);\n }\n /**\n * Get the number of commands queued in automatic pipelines.\n *\n * This is not available (and returns 0) until the cluster is connected and slots information have been received.\n */\n get autoPipelineQueueSize() {\n let queued = 0;\n for (const pipeline of this._autoPipelines.values()) {\n queued += pipeline.length;\n }\n return queued;\n }\n /**\n * Change cluster instance's status\n *\n * @private\n * @param {ClusterStatus} status\n * @memberof Cluster\n */\n setStatus(status) {\n debug(\"status: %s -> %s\", this.status || \"[empty]\", status);\n this.status = status;\n process.nextTick(() => {\n this.emit(status);\n });\n }\n /**\n * Refresh the slot cache\n *\n * @private\n * @param {CallbackFunction} [callback]\n * @memberof Cluster\n */\n refreshSlotsCache(callback) {\n if (this.isRefreshing) {\n if (typeof callback === \"function\") {\n process.nextTick(callback);\n }\n return;\n }\n this.isRefreshing = true;\n const _this = this;\n const wrapper = function (error) {\n _this.isRefreshing = false;\n if (typeof callback === \"function\") {\n callback(error);\n }\n };\n const nodes = utils_2.shuffle(this.connectionPool.getNodes());\n let lastNodeError = null;\n function tryNode(index) {\n if (index === nodes.length) {\n const error = new ClusterAllFailedError_1.default(\"Failed to refresh slots cache.\", lastNodeError);\n return wrapper(error);\n }\n const node = nodes[index];\n const key = `${node.options.host}:${node.options.port}`;\n debug(\"getting slot cache from %s\", key);\n _this.getInfoFromNode(node, function (err) {\n switch (_this.status) {\n case \"close\":\n case \"end\":\n return wrapper(new Error(\"Cluster is disconnected.\"));\n case \"disconnecting\":\n return wrapper(new Error(\"Cluster is disconnecting.\"));\n }\n if (err) {\n _this.emit(\"node error\", err, key);\n lastNodeError = err;\n tryNode(index + 1);\n }\n else {\n _this.emit(\"refresh\");\n wrapper();\n }\n });\n }\n tryNode(0);\n }\n /**\n * Flush offline queue with error.\n *\n * @param {Error} error\n * @memberof Cluster\n */\n flushQueue(error) {\n let item;\n while (this.offlineQueue.length > 0) {\n item = this.offlineQueue.shift();\n item.command.reject(error);\n }\n }\n executeOfflineCommands() {\n if (this.offlineQueue.length) {\n debug(\"send %d commands in offline queue\", this.offlineQueue.length);\n const offlineQueue = this.offlineQueue;\n this.resetOfflineQueue();\n while (offlineQueue.length > 0) {\n const item = offlineQueue.shift();\n this.sendCommand(item.command, item.stream, item.node);\n }\n }\n }\n natMapper(nodeKey) {\n if (this.options.natMap && typeof this.options.natMap === \"object\") {\n const key = typeof nodeKey === \"string\"\n ? nodeKey\n : `${nodeKey.host}:${nodeKey.port}`;\n const mapped = this.options.natMap[key];\n if (mapped) {\n debug(\"NAT mapping %s -> %O\", key, mapped);\n return Object.assign({}, mapped);\n }\n }\n return typeof nodeKey === \"string\"\n ? util_1.nodeKeyToRedisOptions(nodeKey)\n : nodeKey;\n }\n sendCommand(command, stream, node) {\n if (this.status === \"wait\") {\n this.connect().catch(utils_1.noop);\n }\n if (this.status === \"end\") {\n command.reject(new Error(utils_2.CONNECTION_CLOSED_ERROR_MSG));\n return command.promise;\n }\n let to = this.options.scaleReads;\n if (to !== \"master\") {\n const isCommandReadOnly = command.isReadOnly ||\n (commands.exists(command.name) &&\n commands.hasFlag(command.name, \"readonly\"));\n if (!isCommandReadOnly) {\n to = \"master\";\n }\n }\n let targetSlot = node ? node.slot : command.getSlot();\n const ttl = {};\n const _this = this;\n if (!node && !command.__is_reject_overwritten) {\n // eslint-disable-next-line @typescript-eslint/camelcase\n command.__is_reject_overwritten = true;\n const reject = command.reject;\n command.reject = function (err) {\n const partialTry = tryConnection.bind(null, true);\n _this.handleError(err, ttl, {\n moved: function (slot, key) {\n debug(\"command %s is moved to %s\", command.name, key);\n targetSlot = Number(slot);\n if (_this.slots[slot]) {\n _this.slots[slot][0] = key;\n }\n else {\n _this.slots[slot] = [key];\n }\n _this._groupsBySlot[slot] =\n _this._groupsIds[_this.slots[slot].join(\";\")];\n _this.connectionPool.findOrCreate(_this.natMapper(key));\n tryConnection();\n debug(\"refreshing slot caches... (triggered by MOVED error)\");\n _this.refreshSlotsCache();\n },\n ask: function (slot, key) {\n debug(\"command %s is required to ask %s:%s\", command.name, key);\n const mapped = _this.natMapper(key);\n _this.connectionPool.findOrCreate(mapped);\n tryConnection(false, `${mapped.host}:${mapped.port}`);\n },\n tryagain: partialTry,\n clusterDown: partialTry,\n connectionClosed: partialTry,\n maxRedirections: function (redirectionError) {\n reject.call(command, redirectionError);\n },\n defaults: function () {\n reject.call(command, err);\n },\n });\n };\n }\n tryConnection();\n function tryConnection(random, asking) {\n if (_this.status === \"end\") {\n command.reject(new redis_errors_1.AbortError(\"Cluster is ended.\"));\n return;\n }\n let redis;\n if (_this.status === \"ready\" || command.name === \"cluster\") {\n if (node && node.redis) {\n redis = node.redis;\n }\n else if (command_1.default.checkFlag(\"ENTER_SUBSCRIBER_MODE\", command.name) ||\n command_1.default.checkFlag(\"EXIT_SUBSCRIBER_MODE\", command.name)) {\n redis = _this.subscriber.getInstance();\n if (!redis) {\n command.reject(new redis_errors_1.AbortError(\"No subscriber for the cluster\"));\n return;\n }\n }\n else {\n if (!random) {\n if (typeof targetSlot === \"number\" && _this.slots[targetSlot]) {\n const nodeKeys = _this.slots[targetSlot];\n if (typeof to === \"function\") {\n const nodes = nodeKeys.map(function (key) {\n return _this.connectionPool.getInstanceByKey(key);\n });\n redis = to(nodes, command);\n if (Array.isArray(redis)) {\n redis = utils_2.sample(redis);\n }\n if (!redis) {\n redis = nodes[0];\n }\n }\n else {\n let key;\n if (to === \"all\") {\n key = utils_2.sample(nodeKeys);\n }\n else if (to === \"slave\" && nodeKeys.length > 1) {\n key = utils_2.sample(nodeKeys, 1);\n }\n else {\n key = nodeKeys[0];\n }\n redis = _this.connectionPool.getInstanceByKey(key);\n }\n }\n if (asking) {\n redis = _this.connectionPool.getInstanceByKey(asking);\n redis.asking();\n }\n }\n if (!redis) {\n redis =\n (typeof to === \"function\"\n ? null\n : _this.connectionPool.getSampleInstance(to)) ||\n _this.connectionPool.getSampleInstance(\"all\");\n }\n }\n if (node && !node.redis) {\n node.redis = redis;\n }\n }\n if (redis) {\n redis.sendCommand(command, stream);\n }\n else if (_this.options.enableOfflineQueue) {\n _this.offlineQueue.push({\n command: command,\n stream: stream,\n node: node,\n });\n }\n else {\n command.reject(new Error(\"Cluster isn't ready and enableOfflineQueue options is false\"));\n }\n }\n return command.promise;\n }\n handleError(error, ttl, handlers) {\n if (typeof ttl.value === \"undefined\") {\n ttl.value = this.options.maxRedirections;\n }\n else {\n ttl.value -= 1;\n }\n if (ttl.value <= 0) {\n handlers.maxRedirections(new Error(\"Too many Cluster redirections. Last error: \" + error));\n return;\n }\n const errv = error.message.split(\" \");\n if (errv[0] === \"MOVED\") {\n const timeout = this.options.retryDelayOnMoved;\n if (timeout && typeof timeout === \"number\") {\n this.delayQueue.push(\"moved\", handlers.moved.bind(null, errv[1], errv[2]), { timeout });\n }\n else {\n handlers.moved(errv[1], errv[2]);\n }\n }\n else if (errv[0] === \"ASK\") {\n handlers.ask(errv[1], errv[2]);\n }\n else if (errv[0] === \"TRYAGAIN\") {\n this.delayQueue.push(\"tryagain\", handlers.tryagain, {\n timeout: this.options.retryDelayOnTryAgain,\n });\n }\n else if (errv[0] === \"CLUSTERDOWN\" &&\n this.options.retryDelayOnClusterDown > 0) {\n this.delayQueue.push(\"clusterdown\", handlers.connectionClosed, {\n timeout: this.options.retryDelayOnClusterDown,\n callback: this.refreshSlotsCache.bind(this),\n });\n }\n else if (error.message === utils_2.CONNECTION_CLOSED_ERROR_MSG &&\n this.options.retryDelayOnFailover > 0 &&\n this.status === \"ready\") {\n this.delayQueue.push(\"failover\", handlers.connectionClosed, {\n timeout: this.options.retryDelayOnFailover,\n callback: this.refreshSlotsCache.bind(this),\n });\n }\n else {\n handlers.defaults();\n }\n }\n getInfoFromNode(redis, callback) {\n if (!redis) {\n return callback(new Error(\"Node is disconnected\"));\n }\n // Use a duplication of the connection to avoid\n // timeouts when the connection is in the blocking\n // mode (e.g. waiting for BLPOP).\n const duplicatedConnection = redis.duplicate({\n enableOfflineQueue: true,\n enableReadyCheck: false,\n retryStrategy: null,\n connectionName: util_1.getConnectionName(\"refresher\", this.options.redisOptions && this.options.redisOptions.connectionName),\n });\n // Ignore error events since we will handle\n // exceptions for the CLUSTER SLOTS command.\n duplicatedConnection.on(\"error\", utils_1.noop);\n duplicatedConnection.cluster(\"slots\", utils_2.timeout((err, result) => {\n duplicatedConnection.disconnect();\n if (err) {\n return callback(err);\n }\n if (this.status === \"disconnecting\" ||\n this.status === \"close\" ||\n this.status === \"end\") {\n debug(\"ignore CLUSTER.SLOTS results (count: %d) since cluster status is %s\", result.length, this.status);\n callback();\n return;\n }\n const nodes = [];\n debug(\"cluster slots result count: %d\", result.length);\n for (let i = 0; i < result.length; ++i) {\n const items = result[i];\n const slotRangeStart = items[0];\n const slotRangeEnd = items[1];\n const keys = [];\n for (let j = 2; j < items.length; j++) {\n if (!items[j][0]) {\n continue;\n }\n items[j] = this.natMapper({ host: items[j][0], port: items[j][1] });\n items[j].readOnly = j !== 2;\n nodes.push(items[j]);\n keys.push(items[j].host + \":\" + items[j].port);\n }\n debug(\"cluster slots result [%d]: slots %d~%d served by %s\", i, slotRangeStart, slotRangeEnd, keys);\n for (let slot = slotRangeStart; slot <= slotRangeEnd; slot++) {\n this.slots[slot] = keys;\n }\n }\n // Assign to each node keys a numeric value to make autopipeline comparison faster.\n this._groupsIds = Object.create(null);\n let j = 0;\n for (let i = 0; i < 16384; i++) {\n const target = (this.slots[i] || []).join(\";\");\n if (!target.length) {\n this._groupsBySlot[i] = undefined;\n continue;\n }\n if (!this._groupsIds[target]) {\n this._groupsIds[target] = ++j;\n }\n this._groupsBySlot[i] = this._groupsIds[target];\n }\n this.connectionPool.reset(nodes);\n callback();\n }, this.options.slotsRefreshTimeout));\n }\n invokeReadyDelayedCallbacks(err) {\n for (const c of this._readyDelayedCallbacks) {\n process.nextTick(c, err);\n }\n this._readyDelayedCallbacks = [];\n }\n /**\n * Check whether Cluster is able to process commands\n *\n * @param {Function} callback\n * @private\n */\n readyCheck(callback) {\n this.cluster(\"info\", function (err, res) {\n if (err) {\n return callback(err);\n }\n if (typeof res !== \"string\") {\n return callback();\n }\n let state;\n const lines = res.split(\"\\r\\n\");\n for (let i = 0; i < lines.length; ++i) {\n const parts = lines[i].split(\":\");\n if (parts[0] === \"cluster_state\") {\n state = parts[1];\n break;\n }\n }\n if (state === \"fail\") {\n debug(\"cluster state not ok (%s)\", state);\n callback(null, state);\n }\n else {\n callback();\n }\n });\n }\n resolveSrv(hostname) {\n return new Promise((resolve, reject) => {\n this.options.resolveSrv(hostname, (err, records) => {\n if (err) {\n return reject(err);\n }\n const self = this, groupedRecords = util_1.groupSrvRecords(records), sortedKeys = Object.keys(groupedRecords).sort((a, b) => parseInt(a) - parseInt(b));\n function tryFirstOne(err) {\n if (!sortedKeys.length) {\n return reject(err);\n }\n const key = sortedKeys[0], group = groupedRecords[key], record = util_1.weightSrvRecords(group);\n if (!group.records.length) {\n sortedKeys.shift();\n }\n self.dnsLookup(record.name).then((host) => resolve({\n host,\n port: record.port,\n }), tryFirstOne);\n }\n tryFirstOne();\n });\n });\n }\n dnsLookup(hostname) {\n return new Promise((resolve, reject) => {\n this.options.dnsLookup(hostname, (err, address) => {\n if (err) {\n debug(\"failed to resolve hostname %s to IP: %s\", hostname, err.message);\n reject(err);\n }\n else {\n debug(\"resolved hostname %s to IP %s\", hostname, address);\n resolve(address);\n }\n });\n });\n }\n /**\n * Normalize startup nodes, and resolving hostnames to IPs.\n *\n * This process happens every time when #connect() is called since\n * #startupNodes and DNS records may chanage.\n *\n * @private\n * @returns {Promise<IRedisOptions[]>}\n */\n resolveStartupNodeHostnames() {\n if (!Array.isArray(this.startupNodes) || this.startupNodes.length === 0) {\n return Promise.reject(new Error(\"`startupNodes` should contain at least one node.\"));\n }\n const startupNodes = util_1.normalizeNodeOptions(this.startupNodes);\n const hostnames = util_1.getUniqueHostnamesFromOptions(startupNodes);\n if (hostnames.length === 0) {\n return Promise.resolve(startupNodes);\n }\n return Promise.all(hostnames.map((this.options.useSRVRecords ? this.resolveSrv : this.dnsLookup).bind(this))).then((configs) => {\n const hostnameToConfig = utils_2.zipMap(hostnames, configs);\n return startupNodes.map((node) => {\n const config = hostnameToConfig.get(node.host);\n if (!config) {\n return node;\n }\n else if (this.options.useSRVRecords) {\n return Object.assign({}, node, config);\n }\n else {\n return Object.assign({}, node, { host: config });\n }\n });\n });\n }\n}\nObject.getOwnPropertyNames(commander_1.default.prototype).forEach((name) => {\n if (!Cluster.prototype.hasOwnProperty(name)) {\n Cluster.prototype[name] = commander_1.default.prototype[name];\n }\n});\nconst scanCommands = [\n \"sscan\",\n \"hscan\",\n \"zscan\",\n \"sscanBuffer\",\n \"hscanBuffer\",\n \"zscanBuffer\",\n];\nscanCommands.forEach((command) => {\n Cluster.prototype[command + \"Stream\"] = function (key, options) {\n return new ScanStream_1.default(utils_1.defaults({\n objectMode: true,\n key: key,\n redis: this,\n command: command,\n }, options));\n };\n});\nrequire(\"../transaction\").addTransactionSupport(Cluster.prototype);\nexports.default = Cluster;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports = module.exports = require(\"./redis\").default;\nvar redis_1 = require(\"./redis\");\nexports.default = redis_1.default;\nvar cluster_1 = require(\"./cluster\");\nexports.Cluster = cluster_1.default;\nvar command_1 = require(\"./command\");\nexports.Command = command_1.default;\nvar ScanStream_1 = require(\"./ScanStream\");\nexports.ScanStream = ScanStream_1.default;\nvar pipeline_1 = require(\"./pipeline\");\nexports.Pipeline = pipeline_1.default;\nvar AbstractConnector_1 = require(\"./connectors/AbstractConnector\");\nexports.AbstractConnector = AbstractConnector_1.default;\nvar SentinelConnector_1 = require(\"./connectors/SentinelConnector\");\nexports.SentinelConnector = SentinelConnector_1.default;\nexports.SentinelIterator = SentinelConnector_1.SentinelIterator;\n// No TS typings\nexports.ReplyError = require(\"redis-errors\").ReplyError;\nconst PromiseContainer = require(\"./promiseContainer\");\nObject.defineProperty(exports, \"Promise\", {\n get() {\n return PromiseContainer.get();\n },\n set(lib) {\n PromiseContainer.set(lib);\n },\n});\nfunction print(err, reply) {\n if (err) {\n console.log(\"Error: \" + err);\n }\n else {\n console.log(\"Reply: \" + reply);\n }\n}\nexports.print = print;\n","var isES5 = (function(){\n \"use strict\";\n return this === undefined;\n})();\n\nif (isES5) {\n module.exports = {\n freeze: Object.freeze,\n defineProperty: Object.defineProperty,\n getDescriptor: Object.getOwnPropertyDescriptor,\n keys: Object.keys,\n names: Object.getOwnPropertyNames,\n getPrototypeOf: Object.getPrototypeOf,\n isArray: Array.isArray,\n isES5: isES5,\n propertyIsWritable: function(obj, prop) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n return !!(!descriptor || descriptor.writable || descriptor.set);\n }\n };\n} else {\n var has = {}.hasOwnProperty;\n var str = {}.toString;\n var proto = {}.constructor.prototype;\n\n var ObjectKeys = function (o) {\n var ret = [];\n for (var key in o) {\n if (has.call(o, key)) {\n ret.push(key);\n }\n }\n return ret;\n };\n\n var ObjectGetDescriptor = function(o, key) {\n return {value: o[key]};\n };\n\n var ObjectDefineProperty = function (o, key, desc) {\n o[key] = desc.value;\n return o;\n };\n\n var ObjectFreeze = function (obj) {\n return obj;\n };\n\n var ObjectGetPrototypeOf = function (obj) {\n try {\n return Object(obj).constructor.prototype;\n }\n catch (e) {\n return proto;\n }\n };\n\n var ArrayIsArray = function (obj) {\n try {\n return str.call(obj) === \"[object Array]\";\n }\n catch(e) {\n return false;\n }\n };\n\n module.exports = {\n isArray: ArrayIsArray,\n keys: ObjectKeys,\n names: ObjectKeys,\n defineProperty: ObjectDefineProperty,\n getDescriptor: ObjectGetDescriptor,\n freeze: ObjectFreeze,\n getPrototypeOf: ObjectGetPrototypeOf,\n isES5: isES5,\n propertyIsWritable: function() {\n return true;\n }\n };\n}\n","\"use strict\";\nvar es5 = require(\"./es5\");\nvar canEvaluate = typeof navigator == \"undefined\";\n\nvar errorObj = {e: {}};\nvar tryCatchTarget;\nvar globalObject = typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n typeof global !== \"undefined\" ? global :\n this !== undefined ? this : null;\n\nfunction tryCatcher() {\n try {\n var target = tryCatchTarget;\n tryCatchTarget = null;\n return target.apply(this, arguments);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\nfunction tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n}\n\nvar inherits = function(Child, Parent) {\n var hasProp = {}.hasOwnProperty;\n\n function T() {\n this.constructor = Child;\n this.constructor$ = Parent;\n for (var propertyName in Parent.prototype) {\n if (hasProp.call(Parent.prototype, propertyName) &&\n propertyName.charAt(propertyName.length-1) !== \"$\"\n ) {\n this[propertyName + \"$\"] = Parent.prototype[propertyName];\n }\n }\n }\n T.prototype = Parent.prototype;\n Child.prototype = new T();\n return Child.prototype;\n};\n\n\nfunction isPrimitive(val) {\n return val == null || val === true || val === false ||\n typeof val === \"string\" || typeof val === \"number\";\n\n}\n\nfunction isObject(value) {\n return typeof value === \"function\" ||\n typeof value === \"object\" && value !== null;\n}\n\nfunction maybeWrapAsError(maybeError) {\n if (!isPrimitive(maybeError)) return maybeError;\n\n return new Error(safeToString(maybeError));\n}\n\nfunction withAppended(target, appendee) {\n var len = target.length;\n var ret = new Array(len + 1);\n var i;\n for (i = 0; i < len; ++i) {\n ret[i] = target[i];\n }\n ret[i] = appendee;\n return ret;\n}\n\nfunction getDataPropertyOrDefault(obj, key, defaultValue) {\n if (es5.isES5) {\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n if (desc != null) {\n return desc.get == null && desc.set == null\n ? desc.value\n : defaultValue;\n }\n } else {\n return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;\n }\n}\n\nfunction notEnumerableProp(obj, name, value) {\n if (isPrimitive(obj)) return obj;\n var descriptor = {\n value: value,\n configurable: true,\n enumerable: false,\n writable: true\n };\n es5.defineProperty(obj, name, descriptor);\n return obj;\n}\n\nfunction thrower(r) {\n throw r;\n}\n\nvar inheritedDataKeys = (function() {\n var excludedPrototypes = [\n Array.prototype,\n Object.prototype,\n Function.prototype\n ];\n\n var isExcludedProto = function(val) {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (excludedPrototypes[i] === val) {\n return true;\n }\n }\n return false;\n };\n\n if (es5.isES5) {\n var getKeys = Object.getOwnPropertyNames;\n return function(obj) {\n var ret = [];\n var visitedKeys = Object.create(null);\n while (obj != null && !isExcludedProto(obj)) {\n var keys;\n try {\n keys = getKeys(obj);\n } catch (e) {\n return ret;\n }\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (visitedKeys[key]) continue;\n visitedKeys[key] = true;\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n if (desc != null && desc.get == null && desc.set == null) {\n ret.push(key);\n }\n }\n obj = es5.getPrototypeOf(obj);\n }\n return ret;\n };\n } else {\n var hasProp = {}.hasOwnProperty;\n return function(obj) {\n if (isExcludedProto(obj)) return [];\n var ret = [];\n\n /*jshint forin:false */\n enumeration: for (var key in obj) {\n if (hasProp.call(obj, key)) {\n ret.push(key);\n } else {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (hasProp.call(excludedPrototypes[i], key)) {\n continue enumeration;\n }\n }\n ret.push(key);\n }\n }\n return ret;\n };\n }\n\n})();\n\nvar thisAssignmentPattern = /this\\s*\\.\\s*\\S+\\s*=/;\nfunction isClass(fn) {\n try {\n if (typeof fn === \"function\") {\n var keys = es5.names(fn.prototype);\n\n var hasMethods = es5.isES5 && keys.length > 1;\n var hasMethodsOtherThanConstructor = keys.length > 0 &&\n !(keys.length === 1 && keys[0] === \"constructor\");\n var hasThisAssignmentAndStaticMethods =\n thisAssignmentPattern.test(fn + \"\") && es5.names(fn).length > 0;\n\n if (hasMethods || hasMethodsOtherThanConstructor ||\n hasThisAssignmentAndStaticMethods) {\n return true;\n }\n }\n return false;\n } catch (e) {\n return false;\n }\n}\n\nfunction toFastProperties(obj) {\n /*jshint -W027,-W055,-W031*/\n function FakeConstructor() {}\n FakeConstructor.prototype = obj;\n var receiver = new FakeConstructor();\n function ic() {\n return typeof receiver.foo;\n }\n ic();\n ic();\n return obj;\n eval(obj);\n}\n\nvar rident = /^[a-z$_][a-z$_0-9]*$/i;\nfunction isIdentifier(str) {\n return rident.test(str);\n}\n\nfunction filledRange(count, prefix, suffix) {\n var ret = new Array(count);\n for(var i = 0; i < count; ++i) {\n ret[i] = prefix + i + suffix;\n }\n return ret;\n}\n\nfunction safeToString(obj) {\n try {\n return obj + \"\";\n } catch (e) {\n return \"[no string representation]\";\n }\n}\n\nfunction isError(obj) {\n return obj instanceof Error ||\n (obj !== null &&\n typeof obj === \"object\" &&\n typeof obj.message === \"string\" &&\n typeof obj.name === \"string\");\n}\n\nfunction markAsOriginatingFromRejection(e) {\n try {\n notEnumerableProp(e, \"isOperational\", true);\n }\n catch(ignore) {}\n}\n\nfunction originatesFromRejection(e) {\n if (e == null) return false;\n return ((e instanceof Error[\"__BluebirdErrorTypes__\"].OperationalError) ||\n e[\"isOperational\"] === true);\n}\n\nfunction canAttachTrace(obj) {\n return isError(obj) && es5.propertyIsWritable(obj, \"stack\");\n}\n\nvar ensureErrorObject = (function() {\n if (!(\"stack\" in new Error())) {\n return function(value) {\n if (canAttachTrace(value)) return value;\n try {throw new Error(safeToString(value));}\n catch(err) {return err;}\n };\n } else {\n return function(value) {\n if (canAttachTrace(value)) return value;\n return new Error(safeToString(value));\n };\n }\n})();\n\nfunction classString(obj) {\n return {}.toString.call(obj);\n}\n\nfunction copyDescriptors(from, to, filter) {\n var keys = es5.names(from);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (filter(key)) {\n try {\n es5.defineProperty(to, key, es5.getDescriptor(from, key));\n } catch (ignore) {}\n }\n }\n}\n\nvar asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n }\n return null;\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n var ArrayFrom = typeof Array.from === \"function\" ? function(v) {\n return Array.from(v);\n } : function(v) {\n var ret = [];\n var it = v[Symbol.iterator]();\n var itResult;\n while (!((itResult = it.next()).done)) {\n ret.push(itResult.value);\n }\n return ret;\n };\n\n asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n } else if (v != null && typeof v[Symbol.iterator] === \"function\") {\n return ArrayFrom(v);\n }\n return null;\n };\n}\n\nvar isNode = typeof process !== \"undefined\" &&\n classString(process).toLowerCase() === \"[object process]\";\n\nvar hasEnvVariables = typeof process !== \"undefined\" &&\n typeof process.env !== \"undefined\";\n\nfunction env(key) {\n return hasEnvVariables ? process.env[key] : undefined;\n}\n\nfunction getNativePromise() {\n if (typeof Promise === \"function\") {\n try {\n var promise = new Promise(function(){});\n if (classString(promise) === \"[object Promise]\") {\n return Promise;\n }\n } catch (e) {}\n }\n}\n\nvar reflectHandler;\nfunction contextBind(ctx, cb) {\n if (ctx === null ||\n typeof cb !== \"function\" ||\n cb === reflectHandler) {\n return cb;\n }\n\n if (ctx.domain !== null) {\n cb = ctx.domain.bind(cb);\n }\n\n var async = ctx.async;\n if (async !== null) {\n var old = cb;\n cb = function() {\n var $_len = arguments.length + 2;var args = new Array($_len); for(var $_i = 2; $_i < $_len ; ++$_i) {args[$_i] = arguments[$_i - 2];};\n args[0] = old;\n args[1] = this;\n return async.runInAsyncScope.apply(async, args);\n };\n }\n return cb;\n}\n\nvar ret = {\n setReflectHandler: function(fn) {\n reflectHandler = fn;\n },\n isClass: isClass,\n isIdentifier: isIdentifier,\n inheritedDataKeys: inheritedDataKeys,\n getDataPropertyOrDefault: getDataPropertyOrDefault,\n thrower: thrower,\n isArray: es5.isArray,\n asArray: asArray,\n notEnumerableProp: notEnumerableProp,\n isPrimitive: isPrimitive,\n isObject: isObject,\n isError: isError,\n canEvaluate: canEvaluate,\n errorObj: errorObj,\n tryCatch: tryCatch,\n inherits: inherits,\n withAppended: withAppended,\n maybeWrapAsError: maybeWrapAsError,\n toFastProperties: toFastProperties,\n filledRange: filledRange,\n toString: safeToString,\n canAttachTrace: canAttachTrace,\n ensureErrorObject: ensureErrorObject,\n originatesFromRejection: originatesFromRejection,\n markAsOriginatingFromRejection: markAsOriginatingFromRejection,\n classString: classString,\n copyDescriptors: copyDescriptors,\n isNode: isNode,\n hasEnvVariables: hasEnvVariables,\n env: env,\n global: globalObject,\n getNativePromise: getNativePromise,\n contextBind: contextBind\n};\nret.isRecentNode = ret.isNode && (function() {\n var version;\n if (process.versions && process.versions.node) {\n version = process.versions.node.split(\".\").map(Number);\n } else if (process.version) {\n version = process.version.split(\".\").map(Number);\n }\n return (version[0] === 0 && version[1] > 10) || (version[0] > 0);\n})();\nret.nodeSupportsAsyncResource = ret.isNode && (function() {\n var supportsAsync = false;\n try {\n var res = require(\"async_hooks\").AsyncResource;\n supportsAsync = typeof res.prototype.runInAsyncScope === \"function\";\n } catch (e) {\n supportsAsync = false;\n }\n return supportsAsync;\n})();\n\nif (ret.isNode) ret.toFastProperties(process);\n\ntry {throw new Error(); } catch (e) {ret.lastLineError = e;}\nmodule.exports = ret;\n","\"use strict\";\nvar util = require(\"./util\");\nvar schedule;\nvar noAsyncScheduler = function() {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar NativePromise = util.getNativePromise();\nif (util.isNode && typeof MutationObserver === \"undefined\") {\n var GlobalSetImmediate = global.setImmediate;\n var ProcessNextTick = process.nextTick;\n schedule = util.isRecentNode\n ? function(fn) { GlobalSetImmediate.call(global, fn); }\n : function(fn) { ProcessNextTick.call(process, fn); };\n} else if (typeof NativePromise === \"function\" &&\n typeof NativePromise.resolve === \"function\") {\n var nativePromise = NativePromise.resolve();\n schedule = function(fn) {\n nativePromise.then(fn);\n };\n} else if ((typeof MutationObserver !== \"undefined\") &&\n !(typeof window !== \"undefined\" &&\n window.navigator &&\n (window.navigator.standalone || window.cordova)) &&\n (\"classList\" in document.documentElement)) {\n schedule = (function() {\n var div = document.createElement(\"div\");\n var opts = {attributes: true};\n var toggleScheduled = false;\n var div2 = document.createElement(\"div\");\n var o2 = new MutationObserver(function() {\n div.classList.toggle(\"foo\");\n toggleScheduled = false;\n });\n o2.observe(div2, opts);\n\n var scheduleToggle = function() {\n if (toggleScheduled) return;\n toggleScheduled = true;\n div2.classList.toggle(\"foo\");\n };\n\n return function schedule(fn) {\n var o = new MutationObserver(function() {\n o.disconnect();\n fn();\n });\n o.observe(div, opts);\n scheduleToggle();\n };\n })();\n} else if (typeof setImmediate !== \"undefined\") {\n schedule = function (fn) {\n setImmediate(fn);\n };\n} else if (typeof setTimeout !== \"undefined\") {\n schedule = function (fn) {\n setTimeout(fn, 0);\n };\n} else {\n schedule = noAsyncScheduler;\n}\nmodule.exports = schedule;\n","\"use strict\";\nfunction arrayMove(src, srcIndex, dst, dstIndex, len) {\n for (var j = 0; j < len; ++j) {\n dst[j + dstIndex] = src[j + srcIndex];\n src[j + srcIndex] = void 0;\n }\n}\n\nfunction Queue(capacity) {\n this._capacity = capacity;\n this._length = 0;\n this._front = 0;\n}\n\nQueue.prototype._willBeOverCapacity = function (size) {\n return this._capacity < size;\n};\n\nQueue.prototype._pushOne = function (arg) {\n var length = this.length();\n this._checkCapacity(length + 1);\n var i = (this._front + length) & (this._capacity - 1);\n this[i] = arg;\n this._length = length + 1;\n};\n\nQueue.prototype.push = function (fn, receiver, arg) {\n var length = this.length() + 3;\n if (this._willBeOverCapacity(length)) {\n this._pushOne(fn);\n this._pushOne(receiver);\n this._pushOne(arg);\n return;\n }\n var j = this._front + length - 3;\n this._checkCapacity(length);\n var wrapMask = this._capacity - 1;\n this[(j + 0) & wrapMask] = fn;\n this[(j + 1) & wrapMask] = receiver;\n this[(j + 2) & wrapMask] = arg;\n this._length = length;\n};\n\nQueue.prototype.shift = function () {\n var front = this._front,\n ret = this[front];\n\n this[front] = undefined;\n this._front = (front + 1) & (this._capacity - 1);\n this._length--;\n return ret;\n};\n\nQueue.prototype.length = function () {\n return this._length;\n};\n\nQueue.prototype._checkCapacity = function (size) {\n if (this._capacity < size) {\n this._resizeTo(this._capacity << 1);\n }\n};\n\nQueue.prototype._resizeTo = function (capacity) {\n var oldCapacity = this._capacity;\n this._capacity = capacity;\n var front = this._front;\n var length = this._length;\n var moveItemsCount = (front + length) & (oldCapacity - 1);\n arrayMove(this, 0, this, oldCapacity, moveItemsCount);\n};\n\nmodule.exports = Queue;\n","\"use strict\";\nvar firstLineError;\ntry {throw new Error(); } catch (e) {firstLineError = e;}\nvar schedule = require(\"./schedule\");\nvar Queue = require(\"./queue\");\n\nfunction Async() {\n this._customScheduler = false;\n this._isTickUsed = false;\n this._lateQueue = new Queue(16);\n this._normalQueue = new Queue(16);\n this._haveDrainedQueues = false;\n var self = this;\n this.drainQueues = function () {\n self._drainQueues();\n };\n this._schedule = schedule;\n}\n\nAsync.prototype.setScheduler = function(fn) {\n var prev = this._schedule;\n this._schedule = fn;\n this._customScheduler = true;\n return prev;\n};\n\nAsync.prototype.hasCustomScheduler = function() {\n return this._customScheduler;\n};\n\nAsync.prototype.haveItemsQueued = function () {\n return this._isTickUsed || this._haveDrainedQueues;\n};\n\n\nAsync.prototype.fatalError = function(e, isNode) {\n if (isNode) {\n process.stderr.write(\"Fatal \" + (e instanceof Error ? e.stack : e) +\n \"\\n\");\n process.exit(2);\n } else {\n this.throwLater(e);\n }\n};\n\nAsync.prototype.throwLater = function(fn, arg) {\n if (arguments.length === 1) {\n arg = fn;\n fn = function () { throw arg; };\n }\n if (typeof setTimeout !== \"undefined\") {\n setTimeout(function() {\n fn(arg);\n }, 0);\n } else try {\n this._schedule(function() {\n fn(arg);\n });\n } catch (e) {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n};\n\nfunction AsyncInvokeLater(fn, receiver, arg) {\n this._lateQueue.push(fn, receiver, arg);\n this._queueTick();\n}\n\nfunction AsyncInvoke(fn, receiver, arg) {\n this._normalQueue.push(fn, receiver, arg);\n this._queueTick();\n}\n\nfunction AsyncSettlePromises(promise) {\n this._normalQueue._pushOne(promise);\n this._queueTick();\n}\n\nAsync.prototype.invokeLater = AsyncInvokeLater;\nAsync.prototype.invoke = AsyncInvoke;\nAsync.prototype.settlePromises = AsyncSettlePromises;\n\n\nfunction _drainQueue(queue) {\n while (queue.length() > 0) {\n _drainQueueStep(queue);\n }\n}\n\nfunction _drainQueueStep(queue) {\n var fn = queue.shift();\n if (typeof fn !== \"function\") {\n fn._settlePromises();\n } else {\n var receiver = queue.shift();\n var arg = queue.shift();\n fn.call(receiver, arg);\n }\n}\n\nAsync.prototype._drainQueues = function () {\n _drainQueue(this._normalQueue);\n this._reset();\n this._haveDrainedQueues = true;\n _drainQueue(this._lateQueue);\n};\n\nAsync.prototype._queueTick = function () {\n if (!this._isTickUsed) {\n this._isTickUsed = true;\n this._schedule(this.drainQueues);\n }\n};\n\nAsync.prototype._reset = function () {\n this._isTickUsed = false;\n};\n\nmodule.exports = Async;\nmodule.exports.firstLineError = firstLineError;\n","\"use strict\";\nvar es5 = require(\"./es5\");\nvar Objectfreeze = es5.freeze;\nvar util = require(\"./util\");\nvar inherits = util.inherits;\nvar notEnumerableProp = util.notEnumerableProp;\n\nfunction subError(nameProperty, defaultMessage) {\n function SubError(message) {\n if (!(this instanceof SubError)) return new SubError(message);\n notEnumerableProp(this, \"message\",\n typeof message === \"string\" ? message : defaultMessage);\n notEnumerableProp(this, \"name\", nameProperty);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n Error.call(this);\n }\n }\n inherits(SubError, Error);\n return SubError;\n}\n\nvar _TypeError, _RangeError;\nvar Warning = subError(\"Warning\", \"warning\");\nvar CancellationError = subError(\"CancellationError\", \"cancellation error\");\nvar TimeoutError = subError(\"TimeoutError\", \"timeout error\");\nvar AggregateError = subError(\"AggregateError\", \"aggregate error\");\ntry {\n _TypeError = TypeError;\n _RangeError = RangeError;\n} catch(e) {\n _TypeError = subError(\"TypeError\", \"type error\");\n _RangeError = subError(\"RangeError\", \"range error\");\n}\n\nvar methods = (\"join pop push shift unshift slice filter forEach some \" +\n \"every map indexOf lastIndexOf reduce reduceRight sort reverse\").split(\" \");\n\nfor (var i = 0; i < methods.length; ++i) {\n if (typeof Array.prototype[methods[i]] === \"function\") {\n AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];\n }\n}\n\nes5.defineProperty(AggregateError.prototype, \"length\", {\n value: 0,\n configurable: false,\n writable: true,\n enumerable: true\n});\nAggregateError.prototype[\"isOperational\"] = true;\nvar level = 0;\nAggregateError.prototype.toString = function() {\n var indent = Array(level * 4 + 1).join(\" \");\n var ret = \"\\n\" + indent + \"AggregateError of:\" + \"\\n\";\n level++;\n indent = Array(level * 4 + 1).join(\" \");\n for (var i = 0; i < this.length; ++i) {\n var str = this[i] === this ? \"[Circular AggregateError]\" : this[i] + \"\";\n var lines = str.split(\"\\n\");\n for (var j = 0; j < lines.length; ++j) {\n lines[j] = indent + lines[j];\n }\n str = lines.join(\"\\n\");\n ret += str + \"\\n\";\n }\n level--;\n return ret;\n};\n\nfunction OperationalError(message) {\n if (!(this instanceof OperationalError))\n return new OperationalError(message);\n notEnumerableProp(this, \"name\", \"OperationalError\");\n notEnumerableProp(this, \"message\", message);\n this.cause = message;\n this[\"isOperational\"] = true;\n\n if (message instanceof Error) {\n notEnumerableProp(this, \"message\", message.message);\n notEnumerableProp(this, \"stack\", message.stack);\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n}\ninherits(OperationalError, Error);\n\nvar errorTypes = Error[\"__BluebirdErrorTypes__\"];\nif (!errorTypes) {\n errorTypes = Objectfreeze({\n CancellationError: CancellationError,\n TimeoutError: TimeoutError,\n OperationalError: OperationalError,\n RejectionError: OperationalError,\n AggregateError: AggregateError\n });\n es5.defineProperty(Error, \"__BluebirdErrorTypes__\", {\n value: errorTypes,\n writable: false,\n enumerable: false,\n configurable: false\n });\n}\n\nmodule.exports = {\n Error: Error,\n TypeError: _TypeError,\n RangeError: _RangeError,\n CancellationError: errorTypes.CancellationError,\n OperationalError: errorTypes.OperationalError,\n TimeoutError: errorTypes.TimeoutError,\n AggregateError: errorTypes.AggregateError,\n Warning: Warning\n};\n","\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar util = require(\"./util\");\nvar errorObj = util.errorObj;\nvar isObject = util.isObject;\n\nfunction tryConvertToPromise(obj, context) {\n if (isObject(obj)) {\n if (obj instanceof Promise) return obj;\n var then = getThen(obj);\n if (then === errorObj) {\n if (context) context._pushContext();\n var ret = Promise.reject(then.e);\n if (context) context._popContext();\n return ret;\n } else if (typeof then === \"function\") {\n if (isAnyBluebirdPromise(obj)) {\n var ret = new Promise(INTERNAL);\n obj._then(\n ret._fulfill,\n ret._reject,\n undefined,\n ret,\n null\n );\n return ret;\n }\n return doThenable(obj, then, context);\n }\n }\n return obj;\n}\n\nfunction doGetThen(obj) {\n return obj.then;\n}\n\nfunction getThen(obj) {\n try {\n return doGetThen(obj);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\n\nvar hasProp = {}.hasOwnProperty;\nfunction isAnyBluebirdPromise(obj) {\n try {\n return hasProp.call(obj, \"_promise0\");\n } catch (e) {\n return false;\n }\n}\n\nfunction doThenable(x, then, context) {\n var promise = new Promise(INTERNAL);\n var ret = promise;\n if (context) context._pushContext();\n promise._captureStackTrace();\n if (context) context._popContext();\n var synchronous = true;\n var result = util.tryCatch(then).call(x, resolve, reject);\n synchronous = false;\n\n if (promise && result === errorObj) {\n promise._rejectCallback(result.e, true, true);\n promise = null;\n }\n\n function resolve(value) {\n if (!promise) return;\n promise._resolveCallback(value);\n promise = null;\n }\n\n function reject(reason) {\n if (!promise) return;\n promise._rejectCallback(reason, synchronous, true);\n promise = null;\n }\n return ret;\n}\n\nreturn tryConvertToPromise;\n};\n","\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise,\n apiRejection, Proxyable) {\nvar util = require(\"./util\");\nvar isArray = util.isArray;\n\nfunction toResolutionValue(val) {\n switch(val) {\n case -2: return [];\n case -3: return {};\n case -6: return new Map();\n }\n}\n\nfunction PromiseArray(values) {\n var promise = this._promise = new Promise(INTERNAL);\n if (values instanceof Promise) {\n promise._propagateFrom(values, 3);\n values.suppressUnhandledRejections();\n }\n promise._setOnCancel(this);\n this._values = values;\n this._length = 0;\n this._totalResolved = 0;\n this._init(undefined, -2);\n}\nutil.inherits(PromiseArray, Proxyable);\n\nPromiseArray.prototype.length = function () {\n return this._length;\n};\n\nPromiseArray.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {\n var values = tryConvertToPromise(this._values, this._promise);\n if (values instanceof Promise) {\n values = values._target();\n var bitField = values._bitField;\n ;\n this._values = values;\n\n if (((bitField & 50397184) === 0)) {\n this._promise._setAsyncGuaranteed();\n return values._then(\n init,\n this._reject,\n undefined,\n this,\n resolveValueIfEmpty\n );\n } else if (((bitField & 33554432) !== 0)) {\n values = values._value();\n } else if (((bitField & 16777216) !== 0)) {\n return this._reject(values._reason());\n } else {\n return this._cancel();\n }\n }\n values = util.asArray(values);\n if (values === null) {\n var err = apiRejection(\n \"expecting an array or an iterable object but got \" + util.classString(values)).reason();\n this._promise._rejectCallback(err, false);\n return;\n }\n\n if (values.length === 0) {\n if (resolveValueIfEmpty === -5) {\n this._resolveEmptyArray();\n }\n else {\n this._resolve(toResolutionValue(resolveValueIfEmpty));\n }\n return;\n }\n this._iterate(values);\n};\n\nPromiseArray.prototype._iterate = function(values) {\n var len = this.getActualLength(values.length);\n this._length = len;\n this._values = this.shouldCopyValues() ? new Array(len) : this._values;\n var result = this._promise;\n var isResolved = false;\n var bitField = null;\n for (var i = 0; i < len; ++i) {\n var maybePromise = tryConvertToPromise(values[i], result);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n bitField = maybePromise._bitField;\n } else {\n bitField = null;\n }\n\n if (isResolved) {\n if (bitField !== null) {\n maybePromise.suppressUnhandledRejections();\n }\n } else if (bitField !== null) {\n if (((bitField & 50397184) === 0)) {\n maybePromise._proxy(this, i);\n this._values[i] = maybePromise;\n } else if (((bitField & 33554432) !== 0)) {\n isResolved = this._promiseFulfilled(maybePromise._value(), i);\n } else if (((bitField & 16777216) !== 0)) {\n isResolved = this._promiseRejected(maybePromise._reason(), i);\n } else {\n isResolved = this._promiseCancelled(i);\n }\n } else {\n isResolved = this._promiseFulfilled(maybePromise, i);\n }\n }\n if (!isResolved) result._setAsyncGuaranteed();\n};\n\nPromiseArray.prototype._isResolved = function () {\n return this._values === null;\n};\n\nPromiseArray.prototype._resolve = function (value) {\n this._values = null;\n this._promise._fulfill(value);\n};\n\nPromiseArray.prototype._cancel = function() {\n if (this._isResolved() || !this._promise._isCancellable()) return;\n this._values = null;\n this._promise._cancel();\n};\n\nPromiseArray.prototype._reject = function (reason) {\n this._values = null;\n this._promise._rejectCallback(reason, false);\n};\n\nPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nPromiseArray.prototype._promiseCancelled = function() {\n this._cancel();\n return true;\n};\n\nPromiseArray.prototype._promiseRejected = function (reason) {\n this._totalResolved++;\n this._reject(reason);\n return true;\n};\n\nPromiseArray.prototype._resultCancelled = function() {\n if (this._isResolved()) return;\n var values = this._values;\n this._cancel();\n if (values instanceof Promise) {\n values.cancel();\n } else {\n for (var i = 0; i < values.length; ++i) {\n if (values[i] instanceof Promise) {\n values[i].cancel();\n }\n }\n }\n};\n\nPromiseArray.prototype.shouldCopyValues = function () {\n return true;\n};\n\nPromiseArray.prototype.getActualLength = function (len) {\n return len;\n};\n\nreturn PromiseArray;\n};\n","\"use strict\";\nmodule.exports = function(Promise) {\nvar longStackTraces = false;\nvar contextStack = [];\n\nPromise.prototype._promiseCreated = function() {};\nPromise.prototype._pushContext = function() {};\nPromise.prototype._popContext = function() {return null;};\nPromise._peekContext = Promise.prototype._peekContext = function() {};\n\nfunction Context() {\n this._trace = new Context.CapturedTrace(peekContext());\n}\nContext.prototype._pushContext = function () {\n if (this._trace !== undefined) {\n this._trace._promiseCreated = null;\n contextStack.push(this._trace);\n }\n};\n\nContext.prototype._popContext = function () {\n if (this._trace !== undefined) {\n var trace = contextStack.pop();\n var ret = trace._promiseCreated;\n trace._promiseCreated = null;\n return ret;\n }\n return null;\n};\n\nfunction createContext() {\n if (longStackTraces) return new Context();\n}\n\nfunction peekContext() {\n var lastIndex = contextStack.length - 1;\n if (lastIndex >= 0) {\n return contextStack[lastIndex];\n }\n return undefined;\n}\nContext.CapturedTrace = null;\nContext.create = createContext;\nContext.deactivateLongStackTraces = function() {};\nContext.activateLongStackTraces = function() {\n var Promise_pushContext = Promise.prototype._pushContext;\n var Promise_popContext = Promise.prototype._popContext;\n var Promise_PeekContext = Promise._peekContext;\n var Promise_peekContext = Promise.prototype._peekContext;\n var Promise_promiseCreated = Promise.prototype._promiseCreated;\n Context.deactivateLongStackTraces = function() {\n Promise.prototype._pushContext = Promise_pushContext;\n Promise.prototype._popContext = Promise_popContext;\n Promise._peekContext = Promise_PeekContext;\n Promise.prototype._peekContext = Promise_peekContext;\n Promise.prototype._promiseCreated = Promise_promiseCreated;\n longStackTraces = false;\n };\n longStackTraces = true;\n Promise.prototype._pushContext = Context.prototype._pushContext;\n Promise.prototype._popContext = Context.prototype._popContext;\n Promise._peekContext = Promise.prototype._peekContext = peekContext;\n Promise.prototype._promiseCreated = function() {\n var ctx = this._peekContext();\n if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;\n };\n};\nreturn Context;\n};\n","\"use strict\";\nmodule.exports = function(Promise, Context,\n enableAsyncHooks, disableAsyncHooks) {\nvar async = Promise._async;\nvar Warning = require(\"./errors\").Warning;\nvar util = require(\"./util\");\nvar es5 = require(\"./es5\");\nvar canAttachTrace = util.canAttachTrace;\nvar unhandledRejectionHandled;\nvar possiblyUnhandledRejection;\nvar bluebirdFramePattern =\n /[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/;\nvar nodeFramePattern = /\\((?:timers\\.js):\\d+:\\d+\\)/;\nvar parseLinePattern = /[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/;\nvar stackFramePattern = null;\nvar formatStack = null;\nvar indentStackFrames = false;\nvar printWarning;\nvar debugging = !!(util.env(\"BLUEBIRD_DEBUG\") != 0 &&\n (false ||\n util.env(\"BLUEBIRD_DEBUG\") ||\n util.env(\"NODE_ENV\") === \"development\"));\n\nvar warnings = !!(util.env(\"BLUEBIRD_WARNINGS\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_WARNINGS\")));\n\nvar longStackTraces = !!(util.env(\"BLUEBIRD_LONG_STACK_TRACES\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_LONG_STACK_TRACES\")));\n\nvar wForgottenReturn = util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\") != 0 &&\n (warnings || !!util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));\n\nvar deferUnhandledRejectionCheck;\n(function() {\n var promises = [];\n\n function unhandledRejectionCheck() {\n for (var i = 0; i < promises.length; ++i) {\n promises[i]._notifyUnhandledRejection();\n }\n unhandledRejectionClear();\n }\n\n function unhandledRejectionClear() {\n promises.length = 0;\n }\n\n deferUnhandledRejectionCheck = function(promise) {\n promises.push(promise);\n setTimeout(unhandledRejectionCheck, 1);\n };\n\n es5.defineProperty(Promise, \"_unhandledRejectionCheck\", {\n value: unhandledRejectionCheck\n });\n es5.defineProperty(Promise, \"_unhandledRejectionClear\", {\n value: unhandledRejectionClear\n });\n})();\n\nPromise.prototype.suppressUnhandledRejections = function() {\n var target = this._target();\n target._bitField = ((target._bitField & (~1048576)) |\n 524288);\n};\n\nPromise.prototype._ensurePossibleRejectionHandled = function () {\n if ((this._bitField & 524288) !== 0) return;\n this._setRejectionIsUnhandled();\n deferUnhandledRejectionCheck(this);\n};\n\nPromise.prototype._notifyUnhandledRejectionIsHandled = function () {\n fireRejectionEvent(\"rejectionHandled\",\n unhandledRejectionHandled, undefined, this);\n};\n\nPromise.prototype._setReturnedNonUndefined = function() {\n this._bitField = this._bitField | 268435456;\n};\n\nPromise.prototype._returnedNonUndefined = function() {\n return (this._bitField & 268435456) !== 0;\n};\n\nPromise.prototype._notifyUnhandledRejection = function () {\n if (this._isRejectionUnhandled()) {\n var reason = this._settledValue();\n this._setUnhandledRejectionIsNotified();\n fireRejectionEvent(\"unhandledRejection\",\n possiblyUnhandledRejection, reason, this);\n }\n};\n\nPromise.prototype._setUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField | 262144;\n};\n\nPromise.prototype._unsetUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField & (~262144);\n};\n\nPromise.prototype._isUnhandledRejectionNotified = function () {\n return (this._bitField & 262144) > 0;\n};\n\nPromise.prototype._setRejectionIsUnhandled = function () {\n this._bitField = this._bitField | 1048576;\n};\n\nPromise.prototype._unsetRejectionIsUnhandled = function () {\n this._bitField = this._bitField & (~1048576);\n if (this._isUnhandledRejectionNotified()) {\n this._unsetUnhandledRejectionIsNotified();\n this._notifyUnhandledRejectionIsHandled();\n }\n};\n\nPromise.prototype._isRejectionUnhandled = function () {\n return (this._bitField & 1048576) > 0;\n};\n\nPromise.prototype._warn = function(message, shouldUseOwnTrace, promise) {\n return warn(message, shouldUseOwnTrace, promise || this);\n};\n\nPromise.onPossiblyUnhandledRejection = function (fn) {\n var context = Promise._getContext();\n possiblyUnhandledRejection = util.contextBind(context, fn);\n};\n\nPromise.onUnhandledRejectionHandled = function (fn) {\n var context = Promise._getContext();\n unhandledRejectionHandled = util.contextBind(context, fn);\n};\n\nvar disableLongStackTraces = function() {};\nPromise.longStackTraces = function () {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (!config.longStackTraces && longStackTracesIsSupported()) {\n var Promise_captureStackTrace = Promise.prototype._captureStackTrace;\n var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace;\n var Promise_dereferenceTrace = Promise.prototype._dereferenceTrace;\n config.longStackTraces = true;\n disableLongStackTraces = function() {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n Promise.prototype._captureStackTrace = Promise_captureStackTrace;\n Promise.prototype._attachExtraTrace = Promise_attachExtraTrace;\n Promise.prototype._dereferenceTrace = Promise_dereferenceTrace;\n Context.deactivateLongStackTraces();\n config.longStackTraces = false;\n };\n Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;\n Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;\n Promise.prototype._dereferenceTrace = longStackTracesDereferenceTrace;\n Context.activateLongStackTraces();\n }\n};\n\nPromise.hasLongStackTraces = function () {\n return config.longStackTraces && longStackTracesIsSupported();\n};\n\n\nvar legacyHandlers = {\n unhandledrejection: {\n before: function() {\n var ret = util.global.onunhandledrejection;\n util.global.onunhandledrejection = null;\n return ret;\n },\n after: function(fn) {\n util.global.onunhandledrejection = fn;\n }\n },\n rejectionhandled: {\n before: function() {\n var ret = util.global.onrejectionhandled;\n util.global.onrejectionhandled = null;\n return ret;\n },\n after: function(fn) {\n util.global.onrejectionhandled = fn;\n }\n }\n};\n\nvar fireDomEvent = (function() {\n var dispatch = function(legacy, e) {\n if (legacy) {\n var fn;\n try {\n fn = legacy.before();\n return !util.global.dispatchEvent(e);\n } finally {\n legacy.after(fn);\n }\n } else {\n return !util.global.dispatchEvent(e);\n }\n };\n try {\n if (typeof CustomEvent === \"function\") {\n var event = new CustomEvent(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n name = name.toLowerCase();\n var eventData = {\n detail: event,\n cancelable: true\n };\n var domEvent = new CustomEvent(name, eventData);\n es5.defineProperty(\n domEvent, \"promise\", {value: event.promise});\n es5.defineProperty(\n domEvent, \"reason\", {value: event.reason});\n\n return dispatch(legacyHandlers[name], domEvent);\n };\n } else if (typeof Event === \"function\") {\n var event = new Event(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n name = name.toLowerCase();\n var domEvent = new Event(name, {\n cancelable: true\n });\n domEvent.detail = event;\n es5.defineProperty(domEvent, \"promise\", {value: event.promise});\n es5.defineProperty(domEvent, \"reason\", {value: event.reason});\n return dispatch(legacyHandlers[name], domEvent);\n };\n } else {\n var event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(\"testingtheevent\", false, true, {});\n util.global.dispatchEvent(event);\n return function(name, event) {\n name = name.toLowerCase();\n var domEvent = document.createEvent(\"CustomEvent\");\n domEvent.initCustomEvent(name, false, true,\n event);\n return dispatch(legacyHandlers[name], domEvent);\n };\n }\n } catch (e) {}\n return function() {\n return false;\n };\n})();\n\nvar fireGlobalEvent = (function() {\n if (util.isNode) {\n return function() {\n return process.emit.apply(process, arguments);\n };\n } else {\n if (!util.global) {\n return function() {\n return false;\n };\n }\n return function(name) {\n var methodName = \"on\" + name.toLowerCase();\n var method = util.global[methodName];\n if (!method) return false;\n method.apply(util.global, [].slice.call(arguments, 1));\n return true;\n };\n }\n})();\n\nfunction generatePromiseLifecycleEventObject(name, promise) {\n return {promise: promise};\n}\n\nvar eventToObjectGenerator = {\n promiseCreated: generatePromiseLifecycleEventObject,\n promiseFulfilled: generatePromiseLifecycleEventObject,\n promiseRejected: generatePromiseLifecycleEventObject,\n promiseResolved: generatePromiseLifecycleEventObject,\n promiseCancelled: generatePromiseLifecycleEventObject,\n promiseChained: function(name, promise, child) {\n return {promise: promise, child: child};\n },\n warning: function(name, warning) {\n return {warning: warning};\n },\n unhandledRejection: function (name, reason, promise) {\n return {reason: reason, promise: promise};\n },\n rejectionHandled: generatePromiseLifecycleEventObject\n};\n\nvar activeFireEvent = function (name) {\n var globalEventFired = false;\n try {\n globalEventFired = fireGlobalEvent.apply(null, arguments);\n } catch (e) {\n async.throwLater(e);\n globalEventFired = true;\n }\n\n var domEventFired = false;\n try {\n domEventFired = fireDomEvent(name,\n eventToObjectGenerator[name].apply(null, arguments));\n } catch (e) {\n async.throwLater(e);\n domEventFired = true;\n }\n\n return domEventFired || globalEventFired;\n};\n\nPromise.config = function(opts) {\n opts = Object(opts);\n if (\"longStackTraces\" in opts) {\n if (opts.longStackTraces) {\n Promise.longStackTraces();\n } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) {\n disableLongStackTraces();\n }\n }\n if (\"warnings\" in opts) {\n var warningsOption = opts.warnings;\n config.warnings = !!warningsOption;\n wForgottenReturn = config.warnings;\n\n if (util.isObject(warningsOption)) {\n if (\"wForgottenReturn\" in warningsOption) {\n wForgottenReturn = !!warningsOption.wForgottenReturn;\n }\n }\n }\n if (\"cancellation\" in opts && opts.cancellation && !config.cancellation) {\n if (async.haveItemsQueued()) {\n throw new Error(\n \"cannot enable cancellation after promises are in use\");\n }\n Promise.prototype._clearCancellationData =\n cancellationClearCancellationData;\n Promise.prototype._propagateFrom = cancellationPropagateFrom;\n Promise.prototype._onCancel = cancellationOnCancel;\n Promise.prototype._setOnCancel = cancellationSetOnCancel;\n Promise.prototype._attachCancellationCallback =\n cancellationAttachCancellationCallback;\n Promise.prototype._execute = cancellationExecute;\n propagateFromFunction = cancellationPropagateFrom;\n config.cancellation = true;\n }\n if (\"monitoring\" in opts) {\n if (opts.monitoring && !config.monitoring) {\n config.monitoring = true;\n Promise.prototype._fireEvent = activeFireEvent;\n } else if (!opts.monitoring && config.monitoring) {\n config.monitoring = false;\n Promise.prototype._fireEvent = defaultFireEvent;\n }\n }\n if (\"asyncHooks\" in opts && util.nodeSupportsAsyncResource) {\n var prev = config.asyncHooks;\n var cur = !!opts.asyncHooks;\n if (prev !== cur) {\n config.asyncHooks = cur;\n if (cur) {\n enableAsyncHooks();\n } else {\n disableAsyncHooks();\n }\n }\n }\n return Promise;\n};\n\nfunction defaultFireEvent() { return false; }\n\nPromise.prototype._fireEvent = defaultFireEvent;\nPromise.prototype._execute = function(executor, resolve, reject) {\n try {\n executor(resolve, reject);\n } catch (e) {\n return e;\n }\n};\nPromise.prototype._onCancel = function () {};\nPromise.prototype._setOnCancel = function (handler) { ; };\nPromise.prototype._attachCancellationCallback = function(onCancel) {\n ;\n};\nPromise.prototype._captureStackTrace = function () {};\nPromise.prototype._attachExtraTrace = function () {};\nPromise.prototype._dereferenceTrace = function () {};\nPromise.prototype._clearCancellationData = function() {};\nPromise.prototype._propagateFrom = function (parent, flags) {\n ;\n ;\n};\n\nfunction cancellationExecute(executor, resolve, reject) {\n var promise = this;\n try {\n executor(resolve, reject, function(onCancel) {\n if (typeof onCancel !== \"function\") {\n throw new TypeError(\"onCancel must be a function, got: \" +\n util.toString(onCancel));\n }\n promise._attachCancellationCallback(onCancel);\n });\n } catch (e) {\n return e;\n }\n}\n\nfunction cancellationAttachCancellationCallback(onCancel) {\n if (!this._isCancellable()) return this;\n\n var previousOnCancel = this._onCancel();\n if (previousOnCancel !== undefined) {\n if (util.isArray(previousOnCancel)) {\n previousOnCancel.push(onCancel);\n } else {\n this._setOnCancel([previousOnCancel, onCancel]);\n }\n } else {\n this._setOnCancel(onCancel);\n }\n}\n\nfunction cancellationOnCancel() {\n return this._onCancelField;\n}\n\nfunction cancellationSetOnCancel(onCancel) {\n this._onCancelField = onCancel;\n}\n\nfunction cancellationClearCancellationData() {\n this._cancellationParent = undefined;\n this._onCancelField = undefined;\n}\n\nfunction cancellationPropagateFrom(parent, flags) {\n if ((flags & 1) !== 0) {\n this._cancellationParent = parent;\n var branchesRemainingToCancel = parent._branchesRemainingToCancel;\n if (branchesRemainingToCancel === undefined) {\n branchesRemainingToCancel = 0;\n }\n parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;\n }\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\n\nfunction bindingPropagateFrom(parent, flags) {\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\nvar propagateFromFunction = bindingPropagateFrom;\n\nfunction boundValueFunction() {\n var ret = this._boundTo;\n if (ret !== undefined) {\n if (ret instanceof Promise) {\n if (ret.isFulfilled()) {\n return ret.value();\n } else {\n return undefined;\n }\n }\n }\n return ret;\n}\n\nfunction longStackTracesCaptureStackTrace() {\n this._trace = new CapturedTrace(this._peekContext());\n}\n\nfunction longStackTracesAttachExtraTrace(error, ignoreSelf) {\n if (canAttachTrace(error)) {\n var trace = this._trace;\n if (trace !== undefined) {\n if (ignoreSelf) trace = trace._parent;\n }\n if (trace !== undefined) {\n trace.attachExtraTrace(error);\n } else if (!error.__stackCleaned__) {\n var parsed = parseStackAndMessage(error);\n util.notEnumerableProp(error, \"stack\",\n parsed.message + \"\\n\" + parsed.stack.join(\"\\n\"));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n }\n }\n}\n\nfunction longStackTracesDereferenceTrace() {\n this._trace = undefined;\n}\n\nfunction checkForgottenReturns(returnValue, promiseCreated, name, promise,\n parent) {\n if (returnValue === undefined && promiseCreated !== null &&\n wForgottenReturn) {\n if (parent !== undefined && parent._returnedNonUndefined()) return;\n if ((promise._bitField & 65535) === 0) return;\n\n if (name) name = name + \" \";\n var handlerLine = \"\";\n var creatorLine = \"\";\n if (promiseCreated._trace) {\n var traceLines = promiseCreated._trace.stack.split(\"\\n\");\n var stack = cleanStack(traceLines);\n for (var i = stack.length - 1; i >= 0; --i) {\n var line = stack[i];\n if (!nodeFramePattern.test(line)) {\n var lineMatches = line.match(parseLinePattern);\n if (lineMatches) {\n handlerLine = \"at \" + lineMatches[1] +\n \":\" + lineMatches[2] + \":\" + lineMatches[3] + \" \";\n }\n break;\n }\n }\n\n if (stack.length > 0) {\n var firstUserLine = stack[0];\n for (var i = 0; i < traceLines.length; ++i) {\n\n if (traceLines[i] === firstUserLine) {\n if (i > 0) {\n creatorLine = \"\\n\" + traceLines[i - 1];\n }\n break;\n }\n }\n\n }\n }\n var msg = \"a promise was created in a \" + name +\n \"handler \" + handlerLine + \"but was not returned from it, \" +\n \"see http://goo.gl/rRqMUw\" +\n creatorLine;\n promise._warn(msg, true, promiseCreated);\n }\n}\n\nfunction deprecated(name, replacement) {\n var message = name +\n \" is deprecated and will be removed in a future version.\";\n if (replacement) message += \" Use \" + replacement + \" instead.\";\n return warn(message);\n}\n\nfunction warn(message, shouldUseOwnTrace, promise) {\n if (!config.warnings) return;\n var warning = new Warning(message);\n var ctx;\n if (shouldUseOwnTrace) {\n promise._attachExtraTrace(warning);\n } else if (config.longStackTraces && (ctx = Promise._peekContext())) {\n ctx.attachExtraTrace(warning);\n } else {\n var parsed = parseStackAndMessage(warning);\n warning.stack = parsed.message + \"\\n\" + parsed.stack.join(\"\\n\");\n }\n\n if (!activeFireEvent(\"warning\", warning)) {\n formatAndLogError(warning, \"\", true);\n }\n}\n\nfunction reconstructStack(message, stacks) {\n for (var i = 0; i < stacks.length - 1; ++i) {\n stacks[i].push(\"From previous event:\");\n stacks[i] = stacks[i].join(\"\\n\");\n }\n if (i < stacks.length) {\n stacks[i] = stacks[i].join(\"\\n\");\n }\n return message + \"\\n\" + stacks.join(\"\\n\");\n}\n\nfunction removeDuplicateOrEmptyJumps(stacks) {\n for (var i = 0; i < stacks.length; ++i) {\n if (stacks[i].length === 0 ||\n ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) {\n stacks.splice(i, 1);\n i--;\n }\n }\n}\n\nfunction removeCommonRoots(stacks) {\n var current = stacks[0];\n for (var i = 1; i < stacks.length; ++i) {\n var prev = stacks[i];\n var currentLastIndex = current.length - 1;\n var currentLastLine = current[currentLastIndex];\n var commonRootMeetPoint = -1;\n\n for (var j = prev.length - 1; j >= 0; --j) {\n if (prev[j] === currentLastLine) {\n commonRootMeetPoint = j;\n break;\n }\n }\n\n for (var j = commonRootMeetPoint; j >= 0; --j) {\n var line = prev[j];\n if (current[currentLastIndex] === line) {\n current.pop();\n currentLastIndex--;\n } else {\n break;\n }\n }\n current = prev;\n }\n}\n\nfunction cleanStack(stack) {\n var ret = [];\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n var isTraceLine = \" (No stack trace)\" === line ||\n stackFramePattern.test(line);\n var isInternalFrame = isTraceLine && shouldIgnore(line);\n if (isTraceLine && !isInternalFrame) {\n if (indentStackFrames && line.charAt(0) !== \" \") {\n line = \" \" + line;\n }\n ret.push(line);\n }\n }\n return ret;\n}\n\nfunction stackFramesAsArray(error) {\n var stack = error.stack.replace(/\\s+$/g, \"\").split(\"\\n\");\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n if (\" (No stack trace)\" === line || stackFramePattern.test(line)) {\n break;\n }\n }\n if (i > 0 && error.name != \"SyntaxError\") {\n stack = stack.slice(i);\n }\n return stack;\n}\n\nfunction parseStackAndMessage(error) {\n var stack = error.stack;\n var message = error.toString();\n stack = typeof stack === \"string\" && stack.length > 0\n ? stackFramesAsArray(error) : [\" (No stack trace)\"];\n return {\n message: message,\n stack: error.name == \"SyntaxError\" ? stack : cleanStack(stack)\n };\n}\n\nfunction formatAndLogError(error, title, isSoft) {\n if (typeof console !== \"undefined\") {\n var message;\n if (util.isObject(error)) {\n var stack = error.stack;\n message = title + formatStack(stack, error);\n } else {\n message = title + String(error);\n }\n if (typeof printWarning === \"function\") {\n printWarning(message, isSoft);\n } else if (typeof console.log === \"function\" ||\n typeof console.log === \"object\") {\n console.log(message);\n }\n }\n}\n\nfunction fireRejectionEvent(name, localHandler, reason, promise) {\n var localEventFired = false;\n try {\n if (typeof localHandler === \"function\") {\n localEventFired = true;\n if (name === \"rejectionHandled\") {\n localHandler(promise);\n } else {\n localHandler(reason, promise);\n }\n }\n } catch (e) {\n async.throwLater(e);\n }\n\n if (name === \"unhandledRejection\") {\n if (!activeFireEvent(name, reason, promise) && !localEventFired) {\n formatAndLogError(reason, \"Unhandled rejection \");\n }\n } else {\n activeFireEvent(name, promise);\n }\n}\n\nfunction formatNonError(obj) {\n var str;\n if (typeof obj === \"function\") {\n str = \"[function \" +\n (obj.name || \"anonymous\") +\n \"]\";\n } else {\n str = obj && typeof obj.toString === \"function\"\n ? obj.toString() : util.toString(obj);\n var ruselessToString = /\\[object [a-zA-Z0-9$_]+\\]/;\n if (ruselessToString.test(str)) {\n try {\n var newStr = JSON.stringify(obj);\n str = newStr;\n }\n catch(e) {\n\n }\n }\n if (str.length === 0) {\n str = \"(empty array)\";\n }\n }\n return (\"(<\" + snip(str) + \">, no stack trace)\");\n}\n\nfunction snip(str) {\n var maxChars = 41;\n if (str.length < maxChars) {\n return str;\n }\n return str.substr(0, maxChars - 3) + \"...\";\n}\n\nfunction longStackTracesIsSupported() {\n return typeof captureStackTrace === \"function\";\n}\n\nvar shouldIgnore = function() { return false; };\nvar parseLineInfoRegex = /[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;\nfunction parseLineInfo(line) {\n var matches = line.match(parseLineInfoRegex);\n if (matches) {\n return {\n fileName: matches[1],\n line: parseInt(matches[2], 10)\n };\n }\n}\n\nfunction setBounds(firstLineError, lastLineError) {\n if (!longStackTracesIsSupported()) return;\n var firstStackLines = (firstLineError.stack || \"\").split(\"\\n\");\n var lastStackLines = (lastLineError.stack || \"\").split(\"\\n\");\n var firstIndex = -1;\n var lastIndex = -1;\n var firstFileName;\n var lastFileName;\n for (var i = 0; i < firstStackLines.length; ++i) {\n var result = parseLineInfo(firstStackLines[i]);\n if (result) {\n firstFileName = result.fileName;\n firstIndex = result.line;\n break;\n }\n }\n for (var i = 0; i < lastStackLines.length; ++i) {\n var result = parseLineInfo(lastStackLines[i]);\n if (result) {\n lastFileName = result.fileName;\n lastIndex = result.line;\n break;\n }\n }\n if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName ||\n firstFileName !== lastFileName || firstIndex >= lastIndex) {\n return;\n }\n\n shouldIgnore = function(line) {\n if (bluebirdFramePattern.test(line)) return true;\n var info = parseLineInfo(line);\n if (info) {\n if (info.fileName === firstFileName &&\n (firstIndex <= info.line && info.line <= lastIndex)) {\n return true;\n }\n }\n return false;\n };\n}\n\nfunction CapturedTrace(parent) {\n this._parent = parent;\n this._promisesCreated = 0;\n var length = this._length = 1 + (parent === undefined ? 0 : parent._length);\n captureStackTrace(this, CapturedTrace);\n if (length > 32) this.uncycle();\n}\nutil.inherits(CapturedTrace, Error);\nContext.CapturedTrace = CapturedTrace;\n\nCapturedTrace.prototype.uncycle = function() {\n var length = this._length;\n if (length < 2) return;\n var nodes = [];\n var stackToIndex = {};\n\n for (var i = 0, node = this; node !== undefined; ++i) {\n nodes.push(node);\n node = node._parent;\n }\n length = this._length = i;\n for (var i = length - 1; i >= 0; --i) {\n var stack = nodes[i].stack;\n if (stackToIndex[stack] === undefined) {\n stackToIndex[stack] = i;\n }\n }\n for (var i = 0; i < length; ++i) {\n var currentStack = nodes[i].stack;\n var index = stackToIndex[currentStack];\n if (index !== undefined && index !== i) {\n if (index > 0) {\n nodes[index - 1]._parent = undefined;\n nodes[index - 1]._length = 1;\n }\n nodes[i]._parent = undefined;\n nodes[i]._length = 1;\n var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;\n\n if (index < length - 1) {\n cycleEdgeNode._parent = nodes[index + 1];\n cycleEdgeNode._parent.uncycle();\n cycleEdgeNode._length =\n cycleEdgeNode._parent._length + 1;\n } else {\n cycleEdgeNode._parent = undefined;\n cycleEdgeNode._length = 1;\n }\n var currentChildLength = cycleEdgeNode._length + 1;\n for (var j = i - 2; j >= 0; --j) {\n nodes[j]._length = currentChildLength;\n currentChildLength++;\n }\n return;\n }\n }\n};\n\nCapturedTrace.prototype.attachExtraTrace = function(error) {\n if (error.__stackCleaned__) return;\n this.uncycle();\n var parsed = parseStackAndMessage(error);\n var message = parsed.message;\n var stacks = [parsed.stack];\n\n var trace = this;\n while (trace !== undefined) {\n stacks.push(cleanStack(trace.stack.split(\"\\n\")));\n trace = trace._parent;\n }\n removeCommonRoots(stacks);\n removeDuplicateOrEmptyJumps(stacks);\n util.notEnumerableProp(error, \"stack\", reconstructStack(message, stacks));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n};\n\nvar captureStackTrace = (function stackDetection() {\n var v8stackFramePattern = /^\\s*at\\s*/;\n var v8stackFormatter = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if (error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n if (typeof Error.stackTraceLimit === \"number\" &&\n typeof Error.captureStackTrace === \"function\") {\n Error.stackTraceLimit += 6;\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n var captureStackTrace = Error.captureStackTrace;\n\n shouldIgnore = function(line) {\n return bluebirdFramePattern.test(line);\n };\n return function(receiver, ignoreUntil) {\n Error.stackTraceLimit += 6;\n captureStackTrace(receiver, ignoreUntil);\n Error.stackTraceLimit -= 6;\n };\n }\n var err = new Error();\n\n if (typeof err.stack === \"string\" &&\n err.stack.split(\"\\n\")[0].indexOf(\"stackDetection@\") >= 0) {\n stackFramePattern = /@/;\n formatStack = v8stackFormatter;\n indentStackFrames = true;\n return function captureStackTrace(o) {\n o.stack = new Error().stack;\n };\n }\n\n var hasStackAfterThrow;\n try { throw new Error(); }\n catch(e) {\n hasStackAfterThrow = (\"stack\" in e);\n }\n if (!(\"stack\" in err) && hasStackAfterThrow &&\n typeof Error.stackTraceLimit === \"number\") {\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n return function captureStackTrace(o) {\n Error.stackTraceLimit += 6;\n try { throw new Error(); }\n catch(e) { o.stack = e.stack; }\n Error.stackTraceLimit -= 6;\n };\n }\n\n formatStack = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if ((typeof error === \"object\" ||\n typeof error === \"function\") &&\n error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n return null;\n\n})([]);\n\nif (typeof console !== \"undefined\" && typeof console.warn !== \"undefined\") {\n printWarning = function (message) {\n console.warn(message);\n };\n if (util.isNode && process.stderr.isTTY) {\n printWarning = function(message, isSoft) {\n var color = isSoft ? \"\\u001b[33m\" : \"\\u001b[31m\";\n console.warn(color + message + \"\\u001b[0m\\n\");\n };\n } else if (!util.isNode && typeof (new Error().stack) === \"string\") {\n printWarning = function(message, isSoft) {\n console.warn(\"%c\" + message,\n isSoft ? \"color: darkorange\" : \"color: red\");\n };\n }\n}\n\nvar config = {\n warnings: warnings,\n longStackTraces: false,\n cancellation: false,\n monitoring: false,\n asyncHooks: false\n};\n\nif (longStackTraces) Promise.longStackTraces();\n\nreturn {\n asyncHooks: function() {\n return config.asyncHooks;\n },\n longStackTraces: function() {\n return config.longStackTraces;\n },\n warnings: function() {\n return config.warnings;\n },\n cancellation: function() {\n return config.cancellation;\n },\n monitoring: function() {\n return config.monitoring;\n },\n propagateFromFunction: function() {\n return propagateFromFunction;\n },\n boundValueFunction: function() {\n return boundValueFunction;\n },\n checkForgottenReturns: checkForgottenReturns,\n setBounds: setBounds,\n warn: warn,\n deprecated: deprecated,\n CapturedTrace: CapturedTrace,\n fireDomEvent: fireDomEvent,\n fireGlobalEvent: fireGlobalEvent\n};\n};\n","\"use strict\";\nmodule.exports = function(NEXT_FILTER) {\nvar util = require(\"./util\");\nvar getKeys = require(\"./es5\").keys;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction catchFilter(instances, cb, promise) {\n return function(e) {\n var boundTo = promise._boundValue();\n predicateLoop: for (var i = 0; i < instances.length; ++i) {\n var item = instances[i];\n\n if (item === Error ||\n (item != null && item.prototype instanceof Error)) {\n if (e instanceof item) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (typeof item === \"function\") {\n var matchesPredicate = tryCatch(item).call(boundTo, e);\n if (matchesPredicate === errorObj) {\n return matchesPredicate;\n } else if (matchesPredicate) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (util.isObject(e)) {\n var keys = getKeys(item);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n if (item[key] != e[key]) {\n continue predicateLoop;\n }\n }\n return tryCatch(cb).call(boundTo, e);\n }\n }\n return NEXT_FILTER;\n };\n}\n\nreturn catchFilter;\n};\n","\"use strict\";\nmodule.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) {\nvar util = require(\"./util\");\nvar CancellationError = Promise.CancellationError;\nvar errorObj = util.errorObj;\nvar catchFilter = require(\"./catch_filter\")(NEXT_FILTER);\n\nfunction PassThroughHandlerContext(promise, type, handler) {\n this.promise = promise;\n this.type = type;\n this.handler = handler;\n this.called = false;\n this.cancelPromise = null;\n}\n\nPassThroughHandlerContext.prototype.isFinallyHandler = function() {\n return this.type === 0;\n};\n\nfunction FinallyHandlerCancelReaction(finallyHandler) {\n this.finallyHandler = finallyHandler;\n}\n\nFinallyHandlerCancelReaction.prototype._resultCancelled = function() {\n checkCancel(this.finallyHandler);\n};\n\nfunction checkCancel(ctx, reason) {\n if (ctx.cancelPromise != null) {\n if (arguments.length > 1) {\n ctx.cancelPromise._reject(reason);\n } else {\n ctx.cancelPromise._cancel();\n }\n ctx.cancelPromise = null;\n return true;\n }\n return false;\n}\n\nfunction succeed() {\n return finallyHandler.call(this, this.promise._target()._settledValue());\n}\nfunction fail(reason) {\n if (checkCancel(this, reason)) return;\n errorObj.e = reason;\n return errorObj;\n}\nfunction finallyHandler(reasonOrValue) {\n var promise = this.promise;\n var handler = this.handler;\n\n if (!this.called) {\n this.called = true;\n var ret = this.isFinallyHandler()\n ? handler.call(promise._boundValue())\n : handler.call(promise._boundValue(), reasonOrValue);\n if (ret === NEXT_FILTER) {\n return ret;\n } else if (ret !== undefined) {\n promise._setReturnedNonUndefined();\n var maybePromise = tryConvertToPromise(ret, promise);\n if (maybePromise instanceof Promise) {\n if (this.cancelPromise != null) {\n if (maybePromise._isCancelled()) {\n var reason =\n new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n errorObj.e = reason;\n return errorObj;\n } else if (maybePromise.isPending()) {\n maybePromise._attachCancellationCallback(\n new FinallyHandlerCancelReaction(this));\n }\n }\n return maybePromise._then(\n succeed, fail, undefined, this, undefined);\n }\n }\n }\n\n if (promise.isRejected()) {\n checkCancel(this);\n errorObj.e = reasonOrValue;\n return errorObj;\n } else {\n checkCancel(this);\n return reasonOrValue;\n }\n}\n\nPromise.prototype._passThrough = function(handler, type, success, fail) {\n if (typeof handler !== \"function\") return this.then();\n return this._then(success,\n fail,\n undefined,\n new PassThroughHandlerContext(this, type, handler),\n undefined);\n};\n\nPromise.prototype.lastly =\nPromise.prototype[\"finally\"] = function (handler) {\n return this._passThrough(handler,\n 0,\n finallyHandler,\n finallyHandler);\n};\n\n\nPromise.prototype.tap = function (handler) {\n return this._passThrough(handler, 1, finallyHandler);\n};\n\nPromise.prototype.tapCatch = function (handlerOrPredicate) {\n var len = arguments.length;\n if(len === 1) {\n return this._passThrough(handlerOrPredicate,\n 1,\n undefined,\n finallyHandler);\n } else {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return Promise.reject(new TypeError(\n \"tapCatch statement predicate: \"\n + \"expecting an object but got \" + util.classString(item)\n ));\n }\n }\n catchInstances.length = j;\n var handler = arguments[i];\n return this._passThrough(catchFilter(catchInstances, handler, this),\n 1,\n undefined,\n finallyHandler);\n }\n\n};\n\nreturn PassThroughHandlerContext;\n};\n","\"use strict\";\nvar util = require(\"./util\");\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar errors = require(\"./errors\");\nvar OperationalError = errors.OperationalError;\nvar es5 = require(\"./es5\");\n\nfunction isUntypedError(obj) {\n return obj instanceof Error &&\n es5.getPrototypeOf(obj) === Error.prototype;\n}\n\nvar rErrorKey = /^(?:name|message|stack|cause)$/;\nfunction wrapAsOperationalError(obj) {\n var ret;\n if (isUntypedError(obj)) {\n ret = new OperationalError(obj);\n ret.name = obj.name;\n ret.message = obj.message;\n ret.stack = obj.stack;\n var keys = es5.keys(obj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!rErrorKey.test(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n }\n util.markAsOriginatingFromRejection(obj);\n return obj;\n}\n\nfunction nodebackForPromise(promise, multiArgs) {\n return function(err, value) {\n if (promise === null) return;\n if (err) {\n var wrapped = wrapAsOperationalError(maybeWrapAsError(err));\n promise._attachExtraTrace(wrapped);\n promise._reject(wrapped);\n } else if (!multiArgs) {\n promise._fulfill(value);\n } else {\n var $_len = arguments.length;var args = new Array(Math.max($_len - 1, 0)); for(var $_i = 1; $_i < $_len; ++$_i) {args[$_i - 1] = arguments[$_i];};\n promise._fulfill(args);\n }\n promise = null;\n };\n}\n\nmodule.exports = nodebackForPromise;\n","\"use strict\";\nmodule.exports =\nfunction(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {\nvar util = require(\"./util\");\nvar tryCatch = util.tryCatch;\n\nPromise.method = function (fn) {\n if (typeof fn !== \"function\") {\n throw new Promise.TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return function () {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value = tryCatch(fn).apply(this, arguments);\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.method\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n };\n};\n\nPromise.attempt = Promise[\"try\"] = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value;\n if (arguments.length > 1) {\n debug.deprecated(\"calling Promise.try with more than 1 argument\");\n var arg = arguments[1];\n var ctx = arguments[2];\n value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg)\n : tryCatch(fn).call(ctx, arg);\n } else {\n value = tryCatch(fn)();\n }\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.try\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n};\n\nPromise.prototype._resolveFromSyncValue = function (value) {\n if (value === util.errorObj) {\n this._rejectCallback(value.e, false);\n } else {\n this._resolveCallback(value, true);\n }\n};\n};\n","\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) {\nvar calledBind = false;\nvar rejectThis = function(_, e) {\n this._reject(e);\n};\n\nvar targetRejected = function(e, context) {\n context.promiseRejectionQueued = true;\n context.bindingPromise._then(rejectThis, rejectThis, null, this, e);\n};\n\nvar bindingResolved = function(thisArg, context) {\n if (((this._bitField & 50397184) === 0)) {\n this._resolveCallback(context.target);\n }\n};\n\nvar bindingRejected = function(e, context) {\n if (!context.promiseRejectionQueued) this._reject(e);\n};\n\nPromise.prototype.bind = function (thisArg) {\n if (!calledBind) {\n calledBind = true;\n Promise.prototype._propagateFrom = debug.propagateFromFunction();\n Promise.prototype._boundValue = debug.boundValueFunction();\n }\n var maybePromise = tryConvertToPromise(thisArg);\n var ret = new Promise(INTERNAL);\n ret._propagateFrom(this, 1);\n var target = this._target();\n ret._setBoundTo(maybePromise);\n if (maybePromise instanceof Promise) {\n var context = {\n promiseRejectionQueued: false,\n promise: ret,\n target: target,\n bindingPromise: maybePromise\n };\n target._then(INTERNAL, targetRejected, undefined, ret, context);\n maybePromise._then(\n bindingResolved, bindingRejected, undefined, ret, context);\n ret._setOnCancel(maybePromise);\n } else {\n ret._resolveCallback(target);\n }\n return ret;\n};\n\nPromise.prototype._setBoundTo = function (obj) {\n if (obj !== undefined) {\n this._bitField = this._bitField | 2097152;\n this._boundTo = obj;\n } else {\n this._bitField = this._bitField & (~2097152);\n }\n};\n\nPromise.prototype._isBound = function () {\n return (this._bitField & 2097152) === 2097152;\n};\n\nPromise.bind = function (thisArg, value) {\n return Promise.resolve(value).bind(thisArg);\n};\n};\n","\"use strict\";\nmodule.exports = function(Promise, PromiseArray, apiRejection, debug) {\nvar util = require(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nPromise.prototype[\"break\"] = Promise.prototype.cancel = function() {\n if (!debug.cancellation()) return this._warn(\"cancellation is disabled\");\n\n var promise = this;\n var child = promise;\n while (promise._isCancellable()) {\n if (!promise._cancelBy(child)) {\n if (child._isFollowing()) {\n child._followee().cancel();\n } else {\n child._cancelBranched();\n }\n break;\n }\n\n var parent = promise._cancellationParent;\n if (parent == null || !parent._isCancellable()) {\n if (promise._isFollowing()) {\n promise._followee().cancel();\n } else {\n promise._cancelBranched();\n }\n break;\n } else {\n if (promise._isFollowing()) promise._followee().cancel();\n promise._setWillBeCancelled();\n child = promise;\n promise = parent;\n }\n }\n};\n\nPromise.prototype._branchHasCancelled = function() {\n this._branchesRemainingToCancel--;\n};\n\nPromise.prototype._enoughBranchesHaveCancelled = function() {\n return this._branchesRemainingToCancel === undefined ||\n this._branchesRemainingToCancel <= 0;\n};\n\nPromise.prototype._cancelBy = function(canceller) {\n if (canceller === this) {\n this._branchesRemainingToCancel = 0;\n this._invokeOnCancel();\n return true;\n } else {\n this._branchHasCancelled();\n if (this._enoughBranchesHaveCancelled()) {\n this._invokeOnCancel();\n return true;\n }\n }\n return false;\n};\n\nPromise.prototype._cancelBranched = function() {\n if (this._enoughBranchesHaveCancelled()) {\n this._cancel();\n }\n};\n\nPromise.prototype._cancel = function() {\n if (!this._isCancellable()) return;\n this._setCancelled();\n async.invoke(this._cancelPromises, this, undefined);\n};\n\nPromise.prototype._cancelPromises = function() {\n if (this._length() > 0) this._settlePromises();\n};\n\nPromise.prototype._unsetOnCancel = function() {\n this._onCancelField = undefined;\n};\n\nPromise.prototype._isCancellable = function() {\n return this.isPending() && !this._isCancelled();\n};\n\nPromise.prototype.isCancellable = function() {\n return this.isPending() && !this.isCancelled();\n};\n\nPromise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) {\n if (util.isArray(onCancelCallback)) {\n for (var i = 0; i < onCancelCallback.length; ++i) {\n this._doInvokeOnCancel(onCancelCallback[i], internalOnly);\n }\n } else if (onCancelCallback !== undefined) {\n if (typeof onCancelCallback === \"function\") {\n if (!internalOnly) {\n var e = tryCatch(onCancelCallback).call(this._boundValue());\n if (e === errorObj) {\n this._attachExtraTrace(e.e);\n async.throwLater(e.e);\n }\n }\n } else {\n onCancelCallback._resultCancelled(this);\n }\n }\n};\n\nPromise.prototype._invokeOnCancel = function() {\n var onCancelCallback = this._onCancel();\n this._unsetOnCancel();\n async.invoke(this._doInvokeOnCancel, this, onCancelCallback);\n};\n\nPromise.prototype._invokeInternalOnCancel = function() {\n if (this._isCancellable()) {\n this._doInvokeOnCancel(this._onCancel(), true);\n this._unsetOnCancel();\n }\n};\n\nPromise.prototype._resultCancelled = function() {\n this.cancel();\n};\n\n};\n","\"use strict\";\nmodule.exports = function(Promise) {\nfunction returner() {\n return this.value;\n}\nfunction thrower() {\n throw this.reason;\n}\n\nPromise.prototype[\"return\"] =\nPromise.prototype.thenReturn = function (value) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n returner, undefined, undefined, {value: value}, undefined);\n};\n\nPromise.prototype[\"throw\"] =\nPromise.prototype.thenThrow = function (reason) {\n return this._then(\n thrower, undefined, undefined, {reason: reason}, undefined);\n};\n\nPromise.prototype.catchThrow = function (reason) {\n if (arguments.length <= 1) {\n return this._then(\n undefined, thrower, undefined, {reason: reason}, undefined);\n } else {\n var _reason = arguments[1];\n var handler = function() {throw _reason;};\n return this.caught(reason, handler);\n }\n};\n\nPromise.prototype.catchReturn = function (value) {\n if (arguments.length <= 1) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n undefined, returner, undefined, {value: value}, undefined);\n } else {\n var _value = arguments[1];\n if (_value instanceof Promise) _value.suppressUnhandledRejections();\n var handler = function() {return _value;};\n return this.caught(value, handler);\n }\n};\n};\n","\"use strict\";\nmodule.exports = function(Promise) {\nfunction PromiseInspection(promise) {\n if (promise !== undefined) {\n promise = promise._target();\n this._bitField = promise._bitField;\n this._settledValueField = promise._isFateSealed()\n ? promise._settledValue() : undefined;\n }\n else {\n this._bitField = 0;\n this._settledValueField = undefined;\n }\n}\n\nPromiseInspection.prototype._settledValue = function() {\n return this._settledValueField;\n};\n\nvar value = PromiseInspection.prototype.value = function () {\n if (!this.isFulfilled()) {\n throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar reason = PromiseInspection.prototype.error =\nPromiseInspection.prototype.reason = function () {\n if (!this.isRejected()) {\n throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar isFulfilled = PromiseInspection.prototype.isFulfilled = function() {\n return (this._bitField & 33554432) !== 0;\n};\n\nvar isRejected = PromiseInspection.prototype.isRejected = function () {\n return (this._bitField & 16777216) !== 0;\n};\n\nvar isPending = PromiseInspection.prototype.isPending = function () {\n return (this._bitField & 50397184) === 0;\n};\n\nvar isResolved = PromiseInspection.prototype.isResolved = function () {\n return (this._bitField & 50331648) !== 0;\n};\n\nPromiseInspection.prototype.isCancelled = function() {\n return (this._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.__isCancelled = function() {\n return (this._bitField & 65536) === 65536;\n};\n\nPromise.prototype._isCancelled = function() {\n return this._target().__isCancelled();\n};\n\nPromise.prototype.isCancelled = function() {\n return (this._target()._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.isPending = function() {\n return isPending.call(this._target());\n};\n\nPromise.prototype.isRejected = function() {\n return isRejected.call(this._target());\n};\n\nPromise.prototype.isFulfilled = function() {\n return isFulfilled.call(this._target());\n};\n\nPromise.prototype.isResolved = function() {\n return isResolved.call(this._target());\n};\n\nPromise.prototype.value = function() {\n return value.call(this._target());\n};\n\nPromise.prototype.reason = function() {\n var target = this._target();\n target._unsetRejectionIsUnhandled();\n return reason.call(target);\n};\n\nPromise.prototype._value = function() {\n return this._settledValue();\n};\n\nPromise.prototype._reason = function() {\n this._unsetRejectionIsUnhandled();\n return this._settledValue();\n};\n\nPromise.PromiseInspection = PromiseInspection;\n};\n","\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async) {\nvar util = require(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar reject;\n\nif (!false) {\nif (canEvaluate) {\n var thenCallback = function(i) {\n return new Function(\"value\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = value; \\n\\\n holder.checkFulfillment(this); \\n\\\n \".replace(/Index/g, i));\n };\n\n var promiseSetter = function(i) {\n return new Function(\"promise\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = promise; \\n\\\n \".replace(/Index/g, i));\n };\n\n var generateHolderClass = function(total) {\n var props = new Array(total);\n for (var i = 0; i < props.length; ++i) {\n props[i] = \"this.p\" + (i+1);\n }\n var assignment = props.join(\" = \") + \" = null;\";\n var cancellationCode= \"var promise;\\n\" + props.map(function(prop) {\n return \" \\n\\\n promise = \" + prop + \"; \\n\\\n if (promise instanceof Promise) { \\n\\\n promise.cancel(); \\n\\\n } \\n\\\n \";\n }).join(\"\\n\");\n var passedArguments = props.join(\", \");\n var name = \"Holder$\" + total;\n\n\n var code = \"return function(tryCatch, errorObj, Promise, async) { \\n\\\n 'use strict'; \\n\\\n function [TheName](fn) { \\n\\\n [TheProperties] \\n\\\n this.fn = fn; \\n\\\n this.asyncNeeded = true; \\n\\\n this.now = 0; \\n\\\n } \\n\\\n \\n\\\n [TheName].prototype._callFunction = function(promise) { \\n\\\n promise._pushContext(); \\n\\\n var ret = tryCatch(this.fn)([ThePassedArguments]); \\n\\\n promise._popContext(); \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(ret.e, false); \\n\\\n } else { \\n\\\n promise._resolveCallback(ret); \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype.checkFulfillment = function(promise) { \\n\\\n var now = ++this.now; \\n\\\n if (now === [TheTotal]) { \\n\\\n if (this.asyncNeeded) { \\n\\\n async.invoke(this._callFunction, this, promise); \\n\\\n } else { \\n\\\n this._callFunction(promise); \\n\\\n } \\n\\\n \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype._resultCancelled = function() { \\n\\\n [CancellationCode] \\n\\\n }; \\n\\\n \\n\\\n return [TheName]; \\n\\\n }(tryCatch, errorObj, Promise, async); \\n\\\n \";\n\n code = code.replace(/\\[TheName\\]/g, name)\n .replace(/\\[TheTotal\\]/g, total)\n .replace(/\\[ThePassedArguments\\]/g, passedArguments)\n .replace(/\\[TheProperties\\]/g, assignment)\n .replace(/\\[CancellationCode\\]/g, cancellationCode);\n\n return new Function(\"tryCatch\", \"errorObj\", \"Promise\", \"async\", code)\n (tryCatch, errorObj, Promise, async);\n };\n\n var holderClasses = [];\n var thenCallbacks = [];\n var promiseSetters = [];\n\n for (var i = 0; i < 8; ++i) {\n holderClasses.push(generateHolderClass(i + 1));\n thenCallbacks.push(thenCallback(i + 1));\n promiseSetters.push(promiseSetter(i + 1));\n }\n\n reject = function (reason) {\n this._reject(reason);\n };\n}}\n\nPromise.join = function () {\n var last = arguments.length - 1;\n var fn;\n if (last > 0 && typeof arguments[last] === \"function\") {\n fn = arguments[last];\n if (!false) {\n if (last <= 8 && canEvaluate) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var HolderClass = holderClasses[last - 1];\n var holder = new HolderClass(fn);\n var callbacks = thenCallbacks;\n\n for (var i = 0; i < last; ++i) {\n var maybePromise = tryConvertToPromise(arguments[i], ret);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n maybePromise._then(callbacks[i], reject,\n undefined, ret, holder);\n promiseSetters[i](maybePromise, holder);\n holder.asyncNeeded = false;\n } else if (((bitField & 33554432) !== 0)) {\n callbacks[i].call(ret,\n maybePromise._value(), holder);\n } else if (((bitField & 16777216) !== 0)) {\n ret._reject(maybePromise._reason());\n } else {\n ret._cancel();\n }\n } else {\n callbacks[i].call(ret, maybePromise, holder);\n }\n }\n\n if (!ret._isFateSealed()) {\n if (holder.asyncNeeded) {\n var context = Promise._getContext();\n holder.fn = util.contextBind(context, holder.fn);\n }\n ret._setAsyncGuaranteed();\n ret._setOnCancel(holder);\n }\n return ret;\n }\n }\n }\n var $_len = arguments.length;var args = new Array($_len); for(var $_i = 0; $_i < $_len ; ++$_i) {args[$_i] = arguments[$_i ];};\n if (fn) args.pop();\n var ret = new PromiseArray(args).promise();\n return fn !== undefined ? ret.spread(fn) : ret;\n};\n\n};\n","\"use strict\";\nvar cr = Object.create;\nif (cr) {\n var callerCache = cr(null);\n var getterCache = cr(null);\n callerCache[\" size\"] = getterCache[\" size\"] = 0;\n}\n\nmodule.exports = function(Promise) {\nvar util = require(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar isIdentifier = util.isIdentifier;\n\nvar getMethodCaller;\nvar getGetter;\nif (!false) {\nvar makeMethodCaller = function (methodName) {\n return new Function(\"ensureMethod\", \" \\n\\\n return function(obj) { \\n\\\n 'use strict' \\n\\\n var len = this.length; \\n\\\n ensureMethod(obj, 'methodName'); \\n\\\n switch(len) { \\n\\\n case 1: return obj.methodName(this[0]); \\n\\\n case 2: return obj.methodName(this[0], this[1]); \\n\\\n case 3: return obj.methodName(this[0], this[1], this[2]); \\n\\\n case 0: return obj.methodName(); \\n\\\n default: \\n\\\n return obj.methodName.apply(obj, this); \\n\\\n } \\n\\\n }; \\n\\\n \".replace(/methodName/g, methodName))(ensureMethod);\n};\n\nvar makeGetter = function (propertyName) {\n return new Function(\"obj\", \" \\n\\\n 'use strict'; \\n\\\n return obj.propertyName; \\n\\\n \".replace(\"propertyName\", propertyName));\n};\n\nvar getCompiled = function(name, compiler, cache) {\n var ret = cache[name];\n if (typeof ret !== \"function\") {\n if (!isIdentifier(name)) {\n return null;\n }\n ret = compiler(name);\n cache[name] = ret;\n cache[\" size\"]++;\n if (cache[\" size\"] > 512) {\n var keys = Object.keys(cache);\n for (var i = 0; i < 256; ++i) delete cache[keys[i]];\n cache[\" size\"] = keys.length - 256;\n }\n }\n return ret;\n};\n\ngetMethodCaller = function(name) {\n return getCompiled(name, makeMethodCaller, callerCache);\n};\n\ngetGetter = function(name) {\n return getCompiled(name, makeGetter, getterCache);\n};\n}\n\nfunction ensureMethod(obj, methodName) {\n var fn;\n if (obj != null) fn = obj[methodName];\n if (typeof fn !== \"function\") {\n var message = \"Object \" + util.classString(obj) + \" has no method '\" +\n util.toString(methodName) + \"'\";\n throw new Promise.TypeError(message);\n }\n return fn;\n}\n\nfunction caller(obj) {\n var methodName = this.pop();\n var fn = ensureMethod(obj, methodName);\n return fn.apply(obj, this);\n}\nPromise.prototype.call = function (methodName) {\n var $_len = arguments.length;var args = new Array(Math.max($_len - 1, 0)); for(var $_i = 1; $_i < $_len; ++$_i) {args[$_i - 1] = arguments[$_i];};\n if (!false) {\n if (canEvaluate) {\n var maybeCaller = getMethodCaller(methodName);\n if (maybeCaller !== null) {\n return this._then(\n maybeCaller, undefined, undefined, args, undefined);\n }\n }\n }\n args.push(methodName);\n return this._then(caller, undefined, undefined, args, undefined);\n};\n\nfunction namedGetter(obj) {\n return obj[this];\n}\nfunction indexedGetter(obj) {\n var index = +this;\n if (index < 0) index = Math.max(0, index + obj.length);\n return obj[index];\n}\nPromise.prototype.get = function (propertyName) {\n var isIndex = (typeof propertyName === \"number\");\n var getter;\n if (!isIndex) {\n if (canEvaluate) {\n var maybeGetter = getGetter(propertyName);\n getter = maybeGetter !== null ? maybeGetter : namedGetter;\n } else {\n getter = namedGetter;\n }\n } else {\n getter = indexedGetter;\n }\n return this._then(getter, undefined, undefined, propertyName, undefined);\n};\n};\n","\"use strict\";\nmodule.exports = function(Promise,\n apiRejection,\n INTERNAL,\n tryConvertToPromise,\n Proxyable,\n debug) {\nvar errors = require(\"./errors\");\nvar TypeError = errors.TypeError;\nvar util = require(\"./util\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nvar yieldHandlers = [];\n\nfunction promiseFromYieldHandler(value, yieldHandlers, traceParent) {\n for (var i = 0; i < yieldHandlers.length; ++i) {\n traceParent._pushContext();\n var result = tryCatch(yieldHandlers[i])(value);\n traceParent._popContext();\n if (result === errorObj) {\n traceParent._pushContext();\n var ret = Promise.reject(errorObj.e);\n traceParent._popContext();\n return ret;\n }\n var maybePromise = tryConvertToPromise(result, traceParent);\n if (maybePromise instanceof Promise) return maybePromise;\n }\n return null;\n}\n\nfunction PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {\n if (debug.cancellation()) {\n var internal = new Promise(INTERNAL);\n var _finallyPromise = this._finallyPromise = new Promise(INTERNAL);\n this._promise = internal.lastly(function() {\n return _finallyPromise;\n });\n internal._captureStackTrace();\n internal._setOnCancel(this);\n } else {\n var promise = this._promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n }\n this._stack = stack;\n this._generatorFunction = generatorFunction;\n this._receiver = receiver;\n this._generator = undefined;\n this._yieldHandlers = typeof yieldHandler === \"function\"\n ? [yieldHandler].concat(yieldHandlers)\n : yieldHandlers;\n this._yieldedPromise = null;\n this._cancellationPhase = false;\n}\nutil.inherits(PromiseSpawn, Proxyable);\n\nPromiseSpawn.prototype._isResolved = function() {\n return this._promise === null;\n};\n\nPromiseSpawn.prototype._cleanup = function() {\n this._promise = this._generator = null;\n if (debug.cancellation() && this._finallyPromise !== null) {\n this._finallyPromise._fulfill();\n this._finallyPromise = null;\n }\n};\n\nPromiseSpawn.prototype._promiseCancelled = function() {\n if (this._isResolved()) return;\n var implementsReturn = typeof this._generator[\"return\"] !== \"undefined\";\n\n var result;\n if (!implementsReturn) {\n var reason = new Promise.CancellationError(\n \"generator .return() sentinel\");\n Promise.coroutine.returnSentinel = reason;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n result = tryCatch(this._generator[\"throw\"]).call(this._generator,\n reason);\n this._promise._popContext();\n } else {\n this._promise._pushContext();\n result = tryCatch(this._generator[\"return\"]).call(this._generator,\n undefined);\n this._promise._popContext();\n }\n this._cancellationPhase = true;\n this._yieldedPromise = null;\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseFulfilled = function(value) {\n this._yieldedPromise = null;\n this._promise._pushContext();\n var result = tryCatch(this._generator.next).call(this._generator, value);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseRejected = function(reason) {\n this._yieldedPromise = null;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n var result = tryCatch(this._generator[\"throw\"])\n .call(this._generator, reason);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._resultCancelled = function() {\n if (this._yieldedPromise instanceof Promise) {\n var promise = this._yieldedPromise;\n this._yieldedPromise = null;\n promise.cancel();\n }\n};\n\nPromiseSpawn.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseSpawn.prototype._run = function () {\n this._generator = this._generatorFunction.call(this._receiver);\n this._receiver =\n this._generatorFunction = undefined;\n this._promiseFulfilled(undefined);\n};\n\nPromiseSpawn.prototype._continue = function (result) {\n var promise = this._promise;\n if (result === errorObj) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._rejectCallback(result.e, false);\n }\n }\n\n var value = result.value;\n if (result.done === true) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._resolveCallback(value);\n }\n } else {\n var maybePromise = tryConvertToPromise(value, this._promise);\n if (!(maybePromise instanceof Promise)) {\n maybePromise =\n promiseFromYieldHandler(maybePromise,\n this._yieldHandlers,\n this._promise);\n if (maybePromise === null) {\n this._promiseRejected(\n new TypeError(\n \"A value %s was yielded that could not be treated as a promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\\u000a\".replace(\"%s\", String(value)) +\n \"From coroutine:\\u000a\" +\n this._stack.split(\"\\n\").slice(1, -7).join(\"\\n\")\n )\n );\n return;\n }\n }\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n this._yieldedPromise = maybePromise;\n maybePromise._proxy(this, null);\n } else if (((bitField & 33554432) !== 0)) {\n Promise._async.invoke(\n this._promiseFulfilled, this, maybePromise._value()\n );\n } else if (((bitField & 16777216) !== 0)) {\n Promise._async.invoke(\n this._promiseRejected, this, maybePromise._reason()\n );\n } else {\n this._promiseCancelled();\n }\n }\n};\n\nPromise.coroutine = function (generatorFunction, options) {\n if (typeof generatorFunction !== \"function\") {\n throw new TypeError(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var yieldHandler = Object(options).yieldHandler;\n var PromiseSpawn$ = PromiseSpawn;\n var stack = new Error().stack;\n return function () {\n var generator = generatorFunction.apply(this, arguments);\n var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler,\n stack);\n var ret = spawn.promise();\n spawn._generator = generator;\n spawn._promiseFulfilled(undefined);\n return ret;\n };\n};\n\nPromise.coroutine.addYieldHandler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n yieldHandlers.push(fn);\n};\n\nPromise.spawn = function (generatorFunction) {\n debug.deprecated(\"Promise.spawn()\", \"Promise.coroutine()\");\n if (typeof generatorFunction !== \"function\") {\n return apiRejection(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var spawn = new PromiseSpawn(generatorFunction, this);\n var ret = spawn.promise();\n spawn._run(Promise.spawn);\n return ret;\n};\n};\n","\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar util = require(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nfunction MappingPromiseArray(promises, fn, limit, _filter) {\n this.constructor$(promises);\n this._promise._captureStackTrace();\n var context = Promise._getContext();\n this._callback = util.contextBind(context, fn);\n this._preservedValues = _filter === INTERNAL\n ? new Array(this.length())\n : null;\n this._limit = limit;\n this._inFlight = 0;\n this._queue = [];\n async.invoke(this._asyncInit, this, undefined);\n if (util.isArray(promises)) {\n for (var i = 0; i < promises.length; ++i) {\n var maybePromise = promises[i];\n if (maybePromise instanceof Promise) {\n maybePromise.suppressUnhandledRejections();\n }\n }\n }\n}\nutil.inherits(MappingPromiseArray, PromiseArray);\n\nMappingPromiseArray.prototype._asyncInit = function() {\n this._init$(undefined, -2);\n};\n\nMappingPromiseArray.prototype._init = function () {};\n\nMappingPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var values = this._values;\n var length = this.length();\n var preservedValues = this._preservedValues;\n var limit = this._limit;\n\n if (index < 0) {\n index = (index * -1) - 1;\n values[index] = value;\n if (limit >= 1) {\n this._inFlight--;\n this._drainQueue();\n if (this._isResolved()) return true;\n }\n } else {\n if (limit >= 1 && this._inFlight >= limit) {\n values[index] = value;\n this._queue.push(index);\n return false;\n }\n if (preservedValues !== null) preservedValues[index] = value;\n\n var promise = this._promise;\n var callback = this._callback;\n var receiver = promise._boundValue();\n promise._pushContext();\n var ret = tryCatch(callback).call(receiver, value, index, length);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n preservedValues !== null ? \"Promise.filter\" : \"Promise.map\",\n promise\n );\n if (ret === errorObj) {\n this._reject(ret.e);\n return true;\n }\n\n var maybePromise = tryConvertToPromise(ret, this._promise);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n if (limit >= 1) this._inFlight++;\n values[index] = maybePromise;\n maybePromise._proxy(this, (index + 1) * -1);\n return false;\n } else if (((bitField & 33554432) !== 0)) {\n ret = maybePromise._value();\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(maybePromise._reason());\n return true;\n } else {\n this._cancel();\n return true;\n }\n }\n values[index] = ret;\n }\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= length) {\n if (preservedValues !== null) {\n this._filter(values, preservedValues);\n } else {\n this._resolve(values);\n }\n return true;\n }\n return false;\n};\n\nMappingPromiseArray.prototype._drainQueue = function () {\n var queue = this._queue;\n var limit = this._limit;\n var values = this._values;\n while (queue.length > 0 && this._inFlight < limit) {\n if (this._isResolved()) return;\n var index = queue.pop();\n this._promiseFulfilled(values[index], index);\n }\n};\n\nMappingPromiseArray.prototype._filter = function (booleans, values) {\n var len = values.length;\n var ret = new Array(len);\n var j = 0;\n for (var i = 0; i < len; ++i) {\n if (booleans[i]) ret[j++] = values[i];\n }\n ret.length = j;\n this._resolve(ret);\n};\n\nMappingPromiseArray.prototype.preservedValues = function () {\n return this._preservedValues;\n};\n\nfunction map(promises, fn, options, _filter) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var limit = 0;\n if (options !== undefined) {\n if (typeof options === \"object\" && options !== null) {\n if (typeof options.concurrency !== \"number\") {\n return Promise.reject(\n new TypeError(\"'concurrency' must be a number but it is \" +\n util.classString(options.concurrency)));\n }\n limit = options.concurrency;\n } else {\n return Promise.reject(new TypeError(\n \"options argument must be an object but it is \" +\n util.classString(options)));\n }\n }\n limit = typeof limit === \"number\" &&\n isFinite(limit) && limit >= 1 ? limit : 0;\n return new MappingPromiseArray(promises, fn, limit, _filter).promise();\n}\n\nPromise.prototype.map = function (fn, options) {\n return map(this, fn, options, null);\n};\n\nPromise.map = function (promises, fn, options, _filter) {\n return map(promises, fn, options, _filter);\n};\n\n\n};\n","\"use strict\";\nmodule.exports = function(Promise) {\nvar util = require(\"./util\");\nvar async = Promise._async;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction spreadAdapter(val, nodeback) {\n var promise = this;\n if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);\n var ret =\n tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nfunction successAdapter(val, nodeback) {\n var promise = this;\n var receiver = promise._boundValue();\n var ret = val === undefined\n ? tryCatch(nodeback).call(receiver, null)\n : tryCatch(nodeback).call(receiver, null, val);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\nfunction errorAdapter(reason, nodeback) {\n var promise = this;\n if (!reason) {\n var newReason = new Error(reason + \"\");\n newReason.cause = reason;\n reason = newReason;\n }\n var ret = tryCatch(nodeback).call(promise._boundValue(), reason);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nPromise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback,\n options) {\n if (typeof nodeback == \"function\") {\n var adapter = successAdapter;\n if (options !== undefined && Object(options).spread) {\n adapter = spreadAdapter;\n }\n this._then(\n adapter,\n errorAdapter,\n undefined,\n this,\n nodeback\n );\n }\n return this;\n};\n};\n","\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar THIS = {};\nvar util = require(\"./util\");\nvar nodebackForPromise = require(\"./nodeback\");\nvar withAppended = util.withAppended;\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar canEvaluate = util.canEvaluate;\nvar TypeError = require(\"./errors\").TypeError;\nvar defaultSuffix = \"Async\";\nvar defaultPromisified = {__isPromisified__: true};\nvar noCopyProps = [\n \"arity\", \"length\",\n \"name\",\n \"arguments\",\n \"caller\",\n \"callee\",\n \"prototype\",\n \"__isPromisified__\"\n];\nvar noCopyPropsPattern = new RegExp(\"^(?:\" + noCopyProps.join(\"|\") + \")$\");\n\nvar defaultFilter = function(name) {\n return util.isIdentifier(name) &&\n name.charAt(0) !== \"_\" &&\n name !== \"constructor\";\n};\n\nfunction propsFilter(key) {\n return !noCopyPropsPattern.test(key);\n}\n\nfunction isPromisified(fn) {\n try {\n return fn.__isPromisified__ === true;\n }\n catch (e) {\n return false;\n }\n}\n\nfunction hasPromisified(obj, key, suffix) {\n var val = util.getDataPropertyOrDefault(obj, key + suffix,\n defaultPromisified);\n return val ? isPromisified(val) : false;\n}\nfunction checkValid(ret, suffix, suffixRegexp) {\n for (var i = 0; i < ret.length; i += 2) {\n var key = ret[i];\n if (suffixRegexp.test(key)) {\n var keyWithoutAsyncSuffix = key.replace(suffixRegexp, \"\");\n for (var j = 0; j < ret.length; j += 2) {\n if (ret[j] === keyWithoutAsyncSuffix) {\n throw new TypeError(\"Cannot promisify an API that has normal methods with '%s'-suffix\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\"\n .replace(\"%s\", suffix));\n }\n }\n }\n }\n}\n\nfunction promisifiableMethods(obj, suffix, suffixRegexp, filter) {\n var keys = util.inheritedDataKeys(obj);\n var ret = [];\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var value = obj[key];\n var passesDefaultFilter = filter === defaultFilter\n ? true : defaultFilter(key, value, obj);\n if (typeof value === \"function\" &&\n !isPromisified(value) &&\n !hasPromisified(obj, key, suffix) &&\n filter(key, value, obj, passesDefaultFilter)) {\n ret.push(key, value);\n }\n }\n checkValid(ret, suffix, suffixRegexp);\n return ret;\n}\n\nvar escapeIdentRegex = function(str) {\n return str.replace(/([$])/, \"\\\\$\");\n};\n\nvar makeNodePromisifiedEval;\nif (!false) {\nvar switchCaseArgumentOrder = function(likelyArgumentCount) {\n var ret = [likelyArgumentCount];\n var min = Math.max(0, likelyArgumentCount - 1 - 3);\n for(var i = likelyArgumentCount - 1; i >= min; --i) {\n ret.push(i);\n }\n for(var i = likelyArgumentCount + 1; i <= 3; ++i) {\n ret.push(i);\n }\n return ret;\n};\n\nvar argumentSequence = function(argumentCount) {\n return util.filledRange(argumentCount, \"_arg\", \"\");\n};\n\nvar parameterDeclaration = function(parameterCount) {\n return util.filledRange(\n Math.max(parameterCount, 3), \"_arg\", \"\");\n};\n\nvar parameterCount = function(fn) {\n if (typeof fn.length === \"number\") {\n return Math.max(Math.min(fn.length, 1023 + 1), 0);\n }\n return 0;\n};\n\nmakeNodePromisifiedEval =\nfunction(callback, receiver, originalName, fn, _, multiArgs) {\n var newParameterCount = Math.max(0, parameterCount(fn) - 1);\n var argumentOrder = switchCaseArgumentOrder(newParameterCount);\n var shouldProxyThis = typeof callback === \"string\" || receiver === THIS;\n\n function generateCallForArgumentCount(count) {\n var args = argumentSequence(count).join(\", \");\n var comma = count > 0 ? \", \" : \"\";\n var ret;\n if (shouldProxyThis) {\n ret = \"ret = callback.call(this, {{args}}, nodeback); break;\\n\";\n } else {\n ret = receiver === undefined\n ? \"ret = callback({{args}}, nodeback); break;\\n\"\n : \"ret = callback.call(receiver, {{args}}, nodeback); break;\\n\";\n }\n return ret.replace(\"{{args}}\", args).replace(\", \", comma);\n }\n\n function generateArgumentSwitchCase() {\n var ret = \"\";\n for (var i = 0; i < argumentOrder.length; ++i) {\n ret += \"case \" + argumentOrder[i] +\":\" +\n generateCallForArgumentCount(argumentOrder[i]);\n }\n\n ret += \" \\n\\\n default: \\n\\\n var args = new Array(len + 1); \\n\\\n var i = 0; \\n\\\n for (var i = 0; i < len; ++i) { \\n\\\n args[i] = arguments[i]; \\n\\\n } \\n\\\n args[i] = nodeback; \\n\\\n [CodeForCall] \\n\\\n break; \\n\\\n \".replace(\"[CodeForCall]\", (shouldProxyThis\n ? \"ret = callback.apply(this, args);\\n\"\n : \"ret = callback.apply(receiver, args);\\n\"));\n return ret;\n }\n\n var getFunctionCode = typeof callback === \"string\"\n ? (\"this != null ? this['\"+callback+\"'] : fn\")\n : \"fn\";\n var body = \"'use strict'; \\n\\\n var ret = function (Parameters) { \\n\\\n 'use strict'; \\n\\\n var len = arguments.length; \\n\\\n var promise = new Promise(INTERNAL); \\n\\\n promise._captureStackTrace(); \\n\\\n var nodeback = nodebackForPromise(promise, \" + multiArgs + \"); \\n\\\n var ret; \\n\\\n var callback = tryCatch([GetFunctionCode]); \\n\\\n switch(len) { \\n\\\n [CodeForSwitchCase] \\n\\\n } \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\\n\\\n } \\n\\\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \\n\\\n return promise; \\n\\\n }; \\n\\\n notEnumerableProp(ret, '__isPromisified__', true); \\n\\\n return ret; \\n\\\n \".replace(\"[CodeForSwitchCase]\", generateArgumentSwitchCase())\n .replace(\"[GetFunctionCode]\", getFunctionCode);\n body = body.replace(\"Parameters\", parameterDeclaration(newParameterCount));\n return new Function(\"Promise\",\n \"fn\",\n \"receiver\",\n \"withAppended\",\n \"maybeWrapAsError\",\n \"nodebackForPromise\",\n \"tryCatch\",\n \"errorObj\",\n \"notEnumerableProp\",\n \"INTERNAL\",\n body)(\n Promise,\n fn,\n receiver,\n withAppended,\n maybeWrapAsError,\n nodebackForPromise,\n util.tryCatch,\n util.errorObj,\n util.notEnumerableProp,\n INTERNAL);\n};\n}\n\nfunction makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) {\n var defaultThis = (function() {return this;})();\n var method = callback;\n if (typeof method === \"string\") {\n callback = fn;\n }\n function promisified() {\n var _receiver = receiver;\n if (receiver === THIS) _receiver = this;\n var promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n var cb = typeof method === \"string\" && this !== defaultThis\n ? this[method] : callback;\n var fn = nodebackForPromise(promise, multiArgs);\n try {\n cb.apply(_receiver, withAppended(arguments, fn));\n } catch(e) {\n promise._rejectCallback(maybeWrapAsError(e), true, true);\n }\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed();\n return promise;\n }\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n return promisified;\n}\n\nvar makeNodePromisified = canEvaluate\n ? makeNodePromisifiedEval\n : makeNodePromisifiedClosure;\n\nfunction promisifyAll(obj, suffix, filter, promisifier, multiArgs) {\n var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + \"$\");\n var methods =\n promisifiableMethods(obj, suffix, suffixRegexp, filter);\n\n for (var i = 0, len = methods.length; i < len; i+= 2) {\n var key = methods[i];\n var fn = methods[i+1];\n var promisifiedKey = key + suffix;\n if (promisifier === makeNodePromisified) {\n obj[promisifiedKey] =\n makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n } else {\n var promisified = promisifier(fn, function() {\n return makeNodePromisified(key, THIS, key,\n fn, suffix, multiArgs);\n });\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n obj[promisifiedKey] = promisified;\n }\n }\n util.toFastProperties(obj);\n return obj;\n}\n\nfunction promisify(callback, receiver, multiArgs) {\n return makeNodePromisified(callback, receiver, undefined,\n callback, null, multiArgs);\n}\n\nPromise.promisify = function (fn, options) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n if (isPromisified(fn)) {\n return fn;\n }\n options = Object(options);\n var receiver = options.context === undefined ? THIS : options.context;\n var multiArgs = !!options.multiArgs;\n var ret = promisify(fn, receiver, multiArgs);\n util.copyDescriptors(fn, ret, propsFilter);\n return ret;\n};\n\nPromise.promisifyAll = function (target, options) {\n if (typeof target !== \"function\" && typeof target !== \"object\") {\n throw new TypeError(\"the target of promisifyAll must be an object or a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n options = Object(options);\n var multiArgs = !!options.multiArgs;\n var suffix = options.suffix;\n if (typeof suffix !== \"string\") suffix = defaultSuffix;\n var filter = options.filter;\n if (typeof filter !== \"function\") filter = defaultFilter;\n var promisifier = options.promisifier;\n if (typeof promisifier !== \"function\") promisifier = makeNodePromisified;\n\n if (!util.isIdentifier(suffix)) {\n throw new RangeError(\"suffix must be a valid identifier\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n\n var keys = util.inheritedDataKeys(target);\n for (var i = 0; i < keys.length; ++i) {\n var value = target[keys[i]];\n if (keys[i] !== \"constructor\" &&\n util.isClass(value)) {\n promisifyAll(value.prototype, suffix, filter, promisifier,\n multiArgs);\n promisifyAll(value, suffix, filter, promisifier, multiArgs);\n }\n }\n\n return promisifyAll(target, suffix, filter, promisifier, multiArgs);\n};\n};\n\n","\"use strict\";\nmodule.exports = function(\n Promise, PromiseArray, tryConvertToPromise, apiRejection) {\nvar util = require(\"./util\");\nvar isObject = util.isObject;\nvar es5 = require(\"./es5\");\nvar Es6Map;\nif (typeof Map === \"function\") Es6Map = Map;\n\nvar mapToEntries = (function() {\n var index = 0;\n var size = 0;\n\n function extractEntry(value, key) {\n this[index] = value;\n this[index + size] = key;\n index++;\n }\n\n return function mapToEntries(map) {\n size = map.size;\n index = 0;\n var ret = new Array(map.size * 2);\n map.forEach(extractEntry, ret);\n return ret;\n };\n})();\n\nvar entriesToMap = function(entries) {\n var ret = new Es6Map();\n var length = entries.length / 2 | 0;\n for (var i = 0; i < length; ++i) {\n var key = entries[length + i];\n var value = entries[i];\n ret.set(key, value);\n }\n return ret;\n};\n\nfunction PropertiesPromiseArray(obj) {\n var isMap = false;\n var entries;\n if (Es6Map !== undefined && obj instanceof Es6Map) {\n entries = mapToEntries(obj);\n isMap = true;\n } else {\n var keys = es5.keys(obj);\n var len = keys.length;\n entries = new Array(len * 2);\n for (var i = 0; i < len; ++i) {\n var key = keys[i];\n entries[i] = obj[key];\n entries[i + len] = key;\n }\n }\n this.constructor$(entries);\n this._isMap = isMap;\n this._init$(undefined, isMap ? -6 : -3);\n}\nutil.inherits(PropertiesPromiseArray, PromiseArray);\n\nPropertiesPromiseArray.prototype._init = function () {};\n\nPropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n var val;\n if (this._isMap) {\n val = entriesToMap(this._values);\n } else {\n val = {};\n var keyOffset = this.length();\n for (var i = 0, len = this.length(); i < len; ++i) {\n val[this._values[i + keyOffset]] = this._values[i];\n }\n }\n this._resolve(val);\n return true;\n }\n return false;\n};\n\nPropertiesPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nPropertiesPromiseArray.prototype.getActualLength = function (len) {\n return len >> 1;\n};\n\nfunction props(promises) {\n var ret;\n var castValue = tryConvertToPromise(promises);\n\n if (!isObject(castValue)) {\n return apiRejection(\"cannot await properties of a non-object\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n } else if (castValue instanceof Promise) {\n ret = castValue._then(\n Promise.props, undefined, undefined, undefined, undefined);\n } else {\n ret = new PropertiesPromiseArray(castValue).promise();\n }\n\n if (castValue instanceof Promise) {\n ret._propagateFrom(castValue, 2);\n }\n return ret;\n}\n\nPromise.prototype.props = function () {\n return props(this);\n};\n\nPromise.props = function (promises) {\n return props(promises);\n};\n};\n","\"use strict\";\nmodule.exports = function(\n Promise, INTERNAL, tryConvertToPromise, apiRejection) {\nvar util = require(\"./util\");\n\nvar raceLater = function (promise) {\n return promise.then(function(array) {\n return race(array, promise);\n });\n};\n\nfunction race(promises, parent) {\n var maybePromise = tryConvertToPromise(promises);\n\n if (maybePromise instanceof Promise) {\n return raceLater(maybePromise);\n } else {\n promises = util.asArray(promises);\n if (promises === null)\n return apiRejection(\"expecting an array or an iterable object but got \" + util.classString(promises));\n }\n\n var ret = new Promise(INTERNAL);\n if (parent !== undefined) {\n ret._propagateFrom(parent, 3);\n }\n var fulfill = ret._fulfill;\n var reject = ret._reject;\n for (var i = 0, len = promises.length; i < len; ++i) {\n var val = promises[i];\n\n if (val === undefined && !(i in promises)) {\n continue;\n }\n\n Promise.cast(val)._then(fulfill, reject, undefined, ret, null);\n }\n return ret;\n}\n\nPromise.race = function (promises) {\n return race(promises, undefined);\n};\n\nPromise.prototype.race = function () {\n return race(this, undefined);\n};\n\n};\n","\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar util = require(\"./util\");\nvar tryCatch = util.tryCatch;\n\nfunction ReductionPromiseArray(promises, fn, initialValue, _each) {\n this.constructor$(promises);\n var context = Promise._getContext();\n this._fn = util.contextBind(context, fn);\n if (initialValue !== undefined) {\n initialValue = Promise.resolve(initialValue);\n initialValue._attachCancellationCallback(this);\n }\n this._initialValue = initialValue;\n this._currentCancellable = null;\n if(_each === INTERNAL) {\n this._eachValues = Array(this._length);\n } else if (_each === 0) {\n this._eachValues = null;\n } else {\n this._eachValues = undefined;\n }\n this._promise._captureStackTrace();\n this._init$(undefined, -5);\n}\nutil.inherits(ReductionPromiseArray, PromiseArray);\n\nReductionPromiseArray.prototype._gotAccum = function(accum) {\n if (this._eachValues !== undefined &&\n this._eachValues !== null &&\n accum !== INTERNAL) {\n this._eachValues.push(accum);\n }\n};\n\nReductionPromiseArray.prototype._eachComplete = function(value) {\n if (this._eachValues !== null) {\n this._eachValues.push(value);\n }\n return this._eachValues;\n};\n\nReductionPromiseArray.prototype._init = function() {};\n\nReductionPromiseArray.prototype._resolveEmptyArray = function() {\n this._resolve(this._eachValues !== undefined ? this._eachValues\n : this._initialValue);\n};\n\nReductionPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nReductionPromiseArray.prototype._resolve = function(value) {\n this._promise._resolveCallback(value);\n this._values = null;\n};\n\nReductionPromiseArray.prototype._resultCancelled = function(sender) {\n if (sender === this._initialValue) return this._cancel();\n if (this._isResolved()) return;\n this._resultCancelled$();\n if (this._currentCancellable instanceof Promise) {\n this._currentCancellable.cancel();\n }\n if (this._initialValue instanceof Promise) {\n this._initialValue.cancel();\n }\n};\n\nReductionPromiseArray.prototype._iterate = function (values) {\n this._values = values;\n var value;\n var i;\n var length = values.length;\n if (this._initialValue !== undefined) {\n value = this._initialValue;\n i = 0;\n } else {\n value = Promise.resolve(values[0]);\n i = 1;\n }\n\n this._currentCancellable = value;\n\n for (var j = i; j < length; ++j) {\n var maybePromise = values[j];\n if (maybePromise instanceof Promise) {\n maybePromise.suppressUnhandledRejections();\n }\n }\n\n if (!value.isRejected()) {\n for (; i < length; ++i) {\n var ctx = {\n accum: null,\n value: values[i],\n index: i,\n length: length,\n array: this\n };\n\n value = value._then(gotAccum, undefined, undefined, ctx, undefined);\n\n if ((i & 127) === 0) {\n value._setNoAsyncGuarantee();\n }\n }\n }\n\n if (this._eachValues !== undefined) {\n value = value\n ._then(this._eachComplete, undefined, undefined, this, undefined);\n }\n value._then(completed, completed, undefined, value, this);\n};\n\nPromise.prototype.reduce = function (fn, initialValue) {\n return reduce(this, fn, initialValue, null);\n};\n\nPromise.reduce = function (promises, fn, initialValue, _each) {\n return reduce(promises, fn, initialValue, _each);\n};\n\nfunction completed(valueOrReason, array) {\n if (this.isFulfilled()) {\n array._resolve(valueOrReason);\n } else {\n array._reject(valueOrReason);\n }\n}\n\nfunction reduce(promises, fn, initialValue, _each) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var array = new ReductionPromiseArray(promises, fn, initialValue, _each);\n return array.promise();\n}\n\nfunction gotAccum(accum) {\n this.accum = accum;\n this.array._gotAccum(accum);\n var value = tryConvertToPromise(this.value, this.array._promise);\n if (value instanceof Promise) {\n this.array._currentCancellable = value;\n return value._then(gotValue, undefined, undefined, this, undefined);\n } else {\n return gotValue.call(this, value);\n }\n}\n\nfunction gotValue(value) {\n var array = this.array;\n var promise = array._promise;\n var fn = tryCatch(array._fn);\n promise._pushContext();\n var ret;\n if (array._eachValues !== undefined) {\n ret = fn.call(promise._boundValue(), value, this.index, this.length);\n } else {\n ret = fn.call(promise._boundValue(),\n this.accum, value, this.index, this.length);\n }\n if (ret instanceof Promise) {\n array._currentCancellable = ret;\n }\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n array._eachValues !== undefined ? \"Promise.each\" : \"Promise.reduce\",\n promise\n );\n return ret;\n}\n};\n","\"use strict\";\nmodule.exports =\n function(Promise, PromiseArray, debug) {\nvar PromiseInspection = Promise.PromiseInspection;\nvar util = require(\"./util\");\n\nfunction SettledPromiseArray(values) {\n this.constructor$(values);\n}\nutil.inherits(SettledPromiseArray, PromiseArray);\n\nSettledPromiseArray.prototype._promiseResolved = function (index, inspection) {\n this._values[index] = inspection;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nSettledPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var ret = new PromiseInspection();\n ret._bitField = 33554432;\n ret._settledValueField = value;\n return this._promiseResolved(index, ret);\n};\nSettledPromiseArray.prototype._promiseRejected = function (reason, index) {\n var ret = new PromiseInspection();\n ret._bitField = 16777216;\n ret._settledValueField = reason;\n return this._promiseResolved(index, ret);\n};\n\nPromise.settle = function (promises) {\n debug.deprecated(\".settle()\", \".reflect()\");\n return new SettledPromiseArray(promises).promise();\n};\n\nPromise.allSettled = function (promises) {\n return new SettledPromiseArray(promises).promise();\n};\n\nPromise.prototype.settle = function () {\n return Promise.settle(this);\n};\n};\n","\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, apiRejection) {\nvar util = require(\"./util\");\nvar RangeError = require(\"./errors\").RangeError;\nvar AggregateError = require(\"./errors\").AggregateError;\nvar isArray = util.isArray;\nvar CANCELLATION = {};\n\n\nfunction SomePromiseArray(values) {\n this.constructor$(values);\n this._howMany = 0;\n this._unwrap = false;\n this._initialized = false;\n}\nutil.inherits(SomePromiseArray, PromiseArray);\n\nSomePromiseArray.prototype._init = function () {\n if (!this._initialized) {\n return;\n }\n if (this._howMany === 0) {\n this._resolve([]);\n return;\n }\n this._init$(undefined, -5);\n var isArrayResolved = isArray(this._values);\n if (!this._isResolved() &&\n isArrayResolved &&\n this._howMany > this._canPossiblyFulfill()) {\n this._reject(this._getRangeError(this.length()));\n }\n};\n\nSomePromiseArray.prototype.init = function () {\n this._initialized = true;\n this._init();\n};\n\nSomePromiseArray.prototype.setUnwrap = function () {\n this._unwrap = true;\n};\n\nSomePromiseArray.prototype.howMany = function () {\n return this._howMany;\n};\n\nSomePromiseArray.prototype.setHowMany = function (count) {\n this._howMany = count;\n};\n\nSomePromiseArray.prototype._promiseFulfilled = function (value) {\n this._addFulfilled(value);\n if (this._fulfilled() === this.howMany()) {\n this._values.length = this.howMany();\n if (this.howMany() === 1 && this._unwrap) {\n this._resolve(this._values[0]);\n } else {\n this._resolve(this._values);\n }\n return true;\n }\n return false;\n\n};\nSomePromiseArray.prototype._promiseRejected = function (reason) {\n this._addRejected(reason);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._promiseCancelled = function () {\n if (this._values instanceof Promise || this._values == null) {\n return this._cancel();\n }\n this._addRejected(CANCELLATION);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._checkOutcome = function() {\n if (this.howMany() > this._canPossiblyFulfill()) {\n var e = new AggregateError();\n for (var i = this.length(); i < this._values.length; ++i) {\n if (this._values[i] !== CANCELLATION) {\n e.push(this._values[i]);\n }\n }\n if (e.length > 0) {\n this._reject(e);\n } else {\n this._cancel();\n }\n return true;\n }\n return false;\n};\n\nSomePromiseArray.prototype._fulfilled = function () {\n return this._totalResolved;\n};\n\nSomePromiseArray.prototype._rejected = function () {\n return this._values.length - this.length();\n};\n\nSomePromiseArray.prototype._addRejected = function (reason) {\n this._values.push(reason);\n};\n\nSomePromiseArray.prototype._addFulfilled = function (value) {\n this._values[this._totalResolved++] = value;\n};\n\nSomePromiseArray.prototype._canPossiblyFulfill = function () {\n return this.length() - this._rejected();\n};\n\nSomePromiseArray.prototype._getRangeError = function (count) {\n var message = \"Input array must contain at least \" +\n this._howMany + \" items but contains only \" + count + \" items\";\n return new RangeError(message);\n};\n\nSomePromiseArray.prototype._resolveEmptyArray = function () {\n this._reject(this._getRangeError(0));\n};\n\nfunction some(promises, howMany) {\n if ((howMany | 0) !== howMany || howMany < 0) {\n return apiRejection(\"expecting a positive integer\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(howMany);\n ret.init();\n return promise;\n}\n\nPromise.some = function (promises, howMany) {\n return some(promises, howMany);\n};\n\nPromise.prototype.some = function (howMany) {\n return some(this, howMany);\n};\n\nPromise._SomePromiseArray = SomePromiseArray;\n};\n","\"use strict\";\nmodule.exports = function(Promise, INTERNAL, debug) {\nvar util = require(\"./util\");\nvar TimeoutError = Promise.TimeoutError;\n\nfunction HandleWrapper(handle) {\n this.handle = handle;\n}\n\nHandleWrapper.prototype._resultCancelled = function() {\n clearTimeout(this.handle);\n};\n\nvar afterValue = function(value) { return delay(+this).thenReturn(value); };\nvar delay = Promise.delay = function (ms, value) {\n var ret;\n var handle;\n if (value !== undefined) {\n ret = Promise.resolve(value)\n ._then(afterValue, null, null, ms, undefined);\n if (debug.cancellation() && value instanceof Promise) {\n ret._setOnCancel(value);\n }\n } else {\n ret = new Promise(INTERNAL);\n handle = setTimeout(function() { ret._fulfill(); }, +ms);\n if (debug.cancellation()) {\n ret._setOnCancel(new HandleWrapper(handle));\n }\n ret._captureStackTrace();\n }\n ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.prototype.delay = function (ms) {\n return delay(ms, this);\n};\n\nvar afterTimeout = function (promise, message, parent) {\n var err;\n if (typeof message !== \"string\") {\n if (message instanceof Error) {\n err = message;\n } else {\n err = new TimeoutError(\"operation timed out\");\n }\n } else {\n err = new TimeoutError(message);\n }\n util.markAsOriginatingFromRejection(err);\n promise._attachExtraTrace(err);\n promise._reject(err);\n\n if (parent != null) {\n parent.cancel();\n }\n};\n\nfunction successClear(value) {\n clearTimeout(this.handle);\n return value;\n}\n\nfunction failureClear(reason) {\n clearTimeout(this.handle);\n throw reason;\n}\n\nPromise.prototype.timeout = function (ms, message) {\n ms = +ms;\n var ret, parent;\n\n var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() {\n if (ret.isPending()) {\n afterTimeout(ret, message, parent);\n }\n }, ms));\n\n if (debug.cancellation()) {\n parent = this.then();\n ret = parent._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n ret._setOnCancel(handleWrapper);\n } else {\n ret = this._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n }\n\n return ret;\n};\n\n};\n","\"use strict\";\nmodule.exports = function (Promise, apiRejection, tryConvertToPromise,\n createContext, INTERNAL, debug) {\n var util = require(\"./util\");\n var TypeError = require(\"./errors\").TypeError;\n var inherits = require(\"./util\").inherits;\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n var NULL = {};\n\n function thrower(e) {\n setTimeout(function(){throw e;}, 0);\n }\n\n function castPreservingDisposable(thenable) {\n var maybePromise = tryConvertToPromise(thenable);\n if (maybePromise !== thenable &&\n typeof thenable._isDisposable === \"function\" &&\n typeof thenable._getDisposer === \"function\" &&\n thenable._isDisposable()) {\n maybePromise._setDisposable(thenable._getDisposer());\n }\n return maybePromise;\n }\n function dispose(resources, inspection) {\n var i = 0;\n var len = resources.length;\n var ret = new Promise(INTERNAL);\n function iterator() {\n if (i >= len) return ret._fulfill();\n var maybePromise = castPreservingDisposable(resources[i++]);\n if (maybePromise instanceof Promise &&\n maybePromise._isDisposable()) {\n try {\n maybePromise = tryConvertToPromise(\n maybePromise._getDisposer().tryDispose(inspection),\n resources.promise);\n } catch (e) {\n return thrower(e);\n }\n if (maybePromise instanceof Promise) {\n return maybePromise._then(iterator, thrower,\n null, null, null);\n }\n }\n iterator();\n }\n iterator();\n return ret;\n }\n\n function Disposer(data, promise, context) {\n this._data = data;\n this._promise = promise;\n this._context = context;\n }\n\n Disposer.prototype.data = function () {\n return this._data;\n };\n\n Disposer.prototype.promise = function () {\n return this._promise;\n };\n\n Disposer.prototype.resource = function () {\n if (this.promise().isFulfilled()) {\n return this.promise().value();\n }\n return NULL;\n };\n\n Disposer.prototype.tryDispose = function(inspection) {\n var resource = this.resource();\n var context = this._context;\n if (context !== undefined) context._pushContext();\n var ret = resource !== NULL\n ? this.doDispose(resource, inspection) : null;\n if (context !== undefined) context._popContext();\n this._promise._unsetDisposable();\n this._data = null;\n return ret;\n };\n\n Disposer.isDisposer = function (d) {\n return (d != null &&\n typeof d.resource === \"function\" &&\n typeof d.tryDispose === \"function\");\n };\n\n function FunctionDisposer(fn, promise, context) {\n this.constructor$(fn, promise, context);\n }\n inherits(FunctionDisposer, Disposer);\n\n FunctionDisposer.prototype.doDispose = function (resource, inspection) {\n var fn = this.data();\n return fn.call(resource, resource, inspection);\n };\n\n function maybeUnwrapDisposer(value) {\n if (Disposer.isDisposer(value)) {\n this.resources[this.index]._setDisposable(value);\n return value.promise();\n }\n return value;\n }\n\n function ResourceList(length) {\n this.length = length;\n this.promise = null;\n this[length-1] = null;\n }\n\n ResourceList.prototype._resultCancelled = function() {\n var len = this.length;\n for (var i = 0; i < len; ++i) {\n var item = this[i];\n if (item instanceof Promise) {\n item.cancel();\n }\n }\n };\n\n Promise.using = function () {\n var len = arguments.length;\n if (len < 2) return apiRejection(\n \"you must pass at least 2 arguments to Promise.using\");\n var fn = arguments[len - 1];\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var input;\n var spreadArgs = true;\n if (len === 2 && Array.isArray(arguments[0])) {\n input = arguments[0];\n len = input.length;\n spreadArgs = false;\n } else {\n input = arguments;\n len--;\n }\n var resources = new ResourceList(len);\n for (var i = 0; i < len; ++i) {\n var resource = input[i];\n if (Disposer.isDisposer(resource)) {\n var disposer = resource;\n resource = resource.promise();\n resource._setDisposable(disposer);\n } else {\n var maybePromise = tryConvertToPromise(resource);\n if (maybePromise instanceof Promise) {\n resource =\n maybePromise._then(maybeUnwrapDisposer, null, null, {\n resources: resources,\n index: i\n }, undefined);\n }\n }\n resources[i] = resource;\n }\n\n var reflectedResources = new Array(resources.length);\n for (var i = 0; i < reflectedResources.length; ++i) {\n reflectedResources[i] = Promise.resolve(resources[i]).reflect();\n }\n\n var resultPromise = Promise.all(reflectedResources)\n .then(function(inspections) {\n for (var i = 0; i < inspections.length; ++i) {\n var inspection = inspections[i];\n if (inspection.isRejected()) {\n errorObj.e = inspection.error();\n return errorObj;\n } else if (!inspection.isFulfilled()) {\n resultPromise.cancel();\n return;\n }\n inspections[i] = inspection.value();\n }\n promise._pushContext();\n\n fn = tryCatch(fn);\n var ret = spreadArgs\n ? fn.apply(undefined, inspections) : fn(inspections);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret, promiseCreated, \"Promise.using\", promise);\n return ret;\n });\n\n var promise = resultPromise.lastly(function() {\n var inspection = new Promise.PromiseInspection(resultPromise);\n return dispose(resources, inspection);\n });\n resources.promise = promise;\n promise._setOnCancel(resources);\n return promise;\n };\n\n Promise.prototype._setDisposable = function (disposer) {\n this._bitField = this._bitField | 131072;\n this._disposer = disposer;\n };\n\n Promise.prototype._isDisposable = function () {\n return (this._bitField & 131072) > 0;\n };\n\n Promise.prototype._getDisposer = function () {\n return this._disposer;\n };\n\n Promise.prototype._unsetDisposable = function () {\n this._bitField = this._bitField & (~131072);\n this._disposer = undefined;\n };\n\n Promise.prototype.disposer = function (fn) {\n if (typeof fn === \"function\") {\n return new FunctionDisposer(fn, this, createContext());\n }\n throw new TypeError();\n };\n\n};\n","\"use strict\";\nmodule.exports = function(Promise) {\nvar SomePromiseArray = Promise._SomePromiseArray;\nfunction any(promises) {\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(1);\n ret.setUnwrap();\n ret.init();\n return promise;\n}\n\nPromise.any = function (promises) {\n return any(promises);\n};\n\nPromise.prototype.any = function () {\n return any(this);\n};\n\n};\n","\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseReduce = Promise.reduce;\nvar PromiseAll = Promise.all;\n\nfunction promiseAllThis() {\n return PromiseAll(this);\n}\n\nfunction PromiseMapSeries(promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, INTERNAL);\n}\n\nPromise.prototype.each = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, this, undefined);\n};\n\nPromise.prototype.mapSeries = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, INTERNAL);\n};\n\nPromise.each = function (promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, promises, undefined);\n};\n\nPromise.mapSeries = PromiseMapSeries;\n};\n\n","\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseMap = Promise.map;\n\nPromise.prototype.filter = function (fn, options) {\n return PromiseMap(this, fn, options, INTERNAL);\n};\n\nPromise.filter = function (promises, fn, options) {\n return PromiseMap(promises, fn, options, INTERNAL);\n};\n};\n","\"use strict\";\nmodule.exports = function() {\nvar makeSelfResolutionError = function () {\n return new TypeError(\"circular promise resolution chain\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar reflectHandler = function() {\n return new Promise.PromiseInspection(this._target());\n};\nvar apiRejection = function(msg) {\n return Promise.reject(new TypeError(msg));\n};\nfunction Proxyable() {}\nvar UNDEFINED_BINDING = {};\nvar util = require(\"./util\");\nutil.setReflectHandler(reflectHandler);\n\nvar getDomain = function() {\n var domain = process.domain;\n if (domain === undefined) {\n return null;\n }\n return domain;\n};\nvar getContextDefault = function() {\n return null;\n};\nvar getContextDomain = function() {\n return {\n domain: getDomain(),\n async: null\n };\n};\nvar AsyncResource = util.isNode && util.nodeSupportsAsyncResource ?\n require(\"async_hooks\").AsyncResource : null;\nvar getContextAsyncHooks = function() {\n return {\n domain: getDomain(),\n async: new AsyncResource(\"Bluebird::Promise\")\n };\n};\nvar getContext = util.isNode ? getContextDomain : getContextDefault;\nutil.notEnumerableProp(Promise, \"_getContext\", getContext);\nvar enableAsyncHooks = function() {\n getContext = getContextAsyncHooks;\n util.notEnumerableProp(Promise, \"_getContext\", getContextAsyncHooks);\n};\nvar disableAsyncHooks = function() {\n getContext = getContextDomain;\n util.notEnumerableProp(Promise, \"_getContext\", getContextDomain);\n};\n\nvar es5 = require(\"./es5\");\nvar Async = require(\"./async\");\nvar async = new Async();\nes5.defineProperty(Promise, \"_async\", {value: async});\nvar errors = require(\"./errors\");\nvar TypeError = Promise.TypeError = errors.TypeError;\nPromise.RangeError = errors.RangeError;\nvar CancellationError = Promise.CancellationError = errors.CancellationError;\nPromise.TimeoutError = errors.TimeoutError;\nPromise.OperationalError = errors.OperationalError;\nPromise.RejectionError = errors.OperationalError;\nPromise.AggregateError = errors.AggregateError;\nvar INTERNAL = function(){};\nvar APPLY = {};\nvar NEXT_FILTER = {};\nvar tryConvertToPromise = require(\"./thenables\")(Promise, INTERNAL);\nvar PromiseArray =\n require(\"./promise_array\")(Promise, INTERNAL,\n tryConvertToPromise, apiRejection, Proxyable);\nvar Context = require(\"./context\")(Promise);\n /*jshint unused:false*/\nvar createContext = Context.create;\n\nvar debug = require(\"./debuggability\")(Promise, Context,\n enableAsyncHooks, disableAsyncHooks);\nvar CapturedTrace = debug.CapturedTrace;\nvar PassThroughHandlerContext =\n require(\"./finally\")(Promise, tryConvertToPromise, NEXT_FILTER);\nvar catchFilter = require(\"./catch_filter\")(NEXT_FILTER);\nvar nodebackForPromise = require(\"./nodeback\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nfunction check(self, executor) {\n if (self == null || self.constructor !== Promise) {\n throw new TypeError(\"the promise constructor cannot be invoked directly\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (typeof executor !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(executor));\n }\n\n}\n\nfunction Promise(executor) {\n if (executor !== INTERNAL) {\n check(this, executor);\n }\n this._bitField = 0;\n this._fulfillmentHandler0 = undefined;\n this._rejectionHandler0 = undefined;\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._resolveFromExecutor(executor);\n this._promiseCreated();\n this._fireEvent(\"promiseCreated\", this);\n}\n\nPromise.prototype.toString = function () {\n return \"[object Promise]\";\n};\n\nPromise.prototype.caught = Promise.prototype[\"catch\"] = function (fn) {\n var len = arguments.length;\n if (len > 1) {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return apiRejection(\"Catch statement predicate: \" +\n \"expecting an object but got \" + util.classString(item));\n }\n }\n catchInstances.length = j;\n fn = arguments[i];\n\n if (typeof fn !== \"function\") {\n throw new TypeError(\"The last argument to .catch() \" +\n \"must be a function, got \" + util.toString(fn));\n }\n return this.then(undefined, catchFilter(catchInstances, fn, this));\n }\n return this.then(undefined, fn);\n};\n\nPromise.prototype.reflect = function () {\n return this._then(reflectHandler,\n reflectHandler, undefined, this, undefined);\n};\n\nPromise.prototype.then = function (didFulfill, didReject) {\n if (debug.warnings() && arguments.length > 0 &&\n typeof didFulfill !== \"function\" &&\n typeof didReject !== \"function\") {\n var msg = \".then() only accepts functions but was passed: \" +\n util.classString(didFulfill);\n if (arguments.length > 1) {\n msg += \", \" + util.classString(didReject);\n }\n this._warn(msg);\n }\n return this._then(didFulfill, didReject, undefined, undefined, undefined);\n};\n\nPromise.prototype.done = function (didFulfill, didReject) {\n var promise =\n this._then(didFulfill, didReject, undefined, undefined, undefined);\n promise._setIsFinal();\n};\n\nPromise.prototype.spread = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n return this.all()._then(fn, undefined, undefined, APPLY, undefined);\n};\n\nPromise.prototype.toJSON = function () {\n var ret = {\n isFulfilled: false,\n isRejected: false,\n fulfillmentValue: undefined,\n rejectionReason: undefined\n };\n if (this.isFulfilled()) {\n ret.fulfillmentValue = this.value();\n ret.isFulfilled = true;\n } else if (this.isRejected()) {\n ret.rejectionReason = this.reason();\n ret.isRejected = true;\n }\n return ret;\n};\n\nPromise.prototype.all = function () {\n if (arguments.length > 0) {\n this._warn(\".all() was passed arguments but it does not take any\");\n }\n return new PromiseArray(this).promise();\n};\n\nPromise.prototype.error = function (fn) {\n return this.caught(util.originatesFromRejection, fn);\n};\n\nPromise.getNewLibraryCopy = module.exports;\n\nPromise.is = function (val) {\n return val instanceof Promise;\n};\n\nPromise.fromNode = Promise.fromCallback = function(fn) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs\n : false;\n var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs));\n if (result === errorObj) {\n ret._rejectCallback(result.e, true);\n }\n if (!ret._isFateSealed()) ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.all = function (promises) {\n return new PromiseArray(promises).promise();\n};\n\nPromise.cast = function (obj) {\n var ret = tryConvertToPromise(obj);\n if (!(ret instanceof Promise)) {\n ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._setFulfilled();\n ret._rejectionHandler0 = obj;\n }\n return ret;\n};\n\nPromise.resolve = Promise.fulfilled = Promise.cast;\n\nPromise.reject = Promise.rejected = function (reason) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._rejectCallback(reason, true);\n return ret;\n};\n\nPromise.setScheduler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return async.setScheduler(fn);\n};\n\nPromise.prototype._then = function (\n didFulfill,\n didReject,\n _, receiver,\n internalData\n) {\n var haveInternalData = internalData !== undefined;\n var promise = haveInternalData ? internalData : new Promise(INTERNAL);\n var target = this._target();\n var bitField = target._bitField;\n\n if (!haveInternalData) {\n promise._propagateFrom(this, 3);\n promise._captureStackTrace();\n if (receiver === undefined &&\n ((this._bitField & 2097152) !== 0)) {\n if (!((bitField & 50397184) === 0)) {\n receiver = this._boundValue();\n } else {\n receiver = target === this ? undefined : this._boundTo;\n }\n }\n this._fireEvent(\"promiseChained\", this, promise);\n }\n\n var context = getContext();\n if (!((bitField & 50397184) === 0)) {\n var handler, value, settler = target._settlePromiseCtx;\n if (((bitField & 33554432) !== 0)) {\n value = target._rejectionHandler0;\n handler = didFulfill;\n } else if (((bitField & 16777216) !== 0)) {\n value = target._fulfillmentHandler0;\n handler = didReject;\n target._unsetRejectionIsUnhandled();\n } else {\n settler = target._settlePromiseLateCancellationObserver;\n value = new CancellationError(\"late cancellation observer\");\n target._attachExtraTrace(value);\n handler = didReject;\n }\n\n async.invoke(settler, target, {\n handler: util.contextBind(context, handler),\n promise: promise,\n receiver: receiver,\n value: value\n });\n } else {\n target._addCallbacks(didFulfill, didReject, promise,\n receiver, context);\n }\n\n return promise;\n};\n\nPromise.prototype._length = function () {\n return this._bitField & 65535;\n};\n\nPromise.prototype._isFateSealed = function () {\n return (this._bitField & 117506048) !== 0;\n};\n\nPromise.prototype._isFollowing = function () {\n return (this._bitField & 67108864) === 67108864;\n};\n\nPromise.prototype._setLength = function (len) {\n this._bitField = (this._bitField & -65536) |\n (len & 65535);\n};\n\nPromise.prototype._setFulfilled = function () {\n this._bitField = this._bitField | 33554432;\n this._fireEvent(\"promiseFulfilled\", this);\n};\n\nPromise.prototype._setRejected = function () {\n this._bitField = this._bitField | 16777216;\n this._fireEvent(\"promiseRejected\", this);\n};\n\nPromise.prototype._setFollowing = function () {\n this._bitField = this._bitField | 67108864;\n this._fireEvent(\"promiseResolved\", this);\n};\n\nPromise.prototype._setIsFinal = function () {\n this._bitField = this._bitField | 4194304;\n};\n\nPromise.prototype._isFinal = function () {\n return (this._bitField & 4194304) > 0;\n};\n\nPromise.prototype._unsetCancelled = function() {\n this._bitField = this._bitField & (~65536);\n};\n\nPromise.prototype._setCancelled = function() {\n this._bitField = this._bitField | 65536;\n this._fireEvent(\"promiseCancelled\", this);\n};\n\nPromise.prototype._setWillBeCancelled = function() {\n this._bitField = this._bitField | 8388608;\n};\n\nPromise.prototype._setAsyncGuaranteed = function() {\n if (async.hasCustomScheduler()) return;\n var bitField = this._bitField;\n this._bitField = bitField |\n (((bitField & 536870912) >> 2) ^\n 134217728);\n};\n\nPromise.prototype._setNoAsyncGuarantee = function() {\n this._bitField = (this._bitField | 536870912) &\n (~134217728);\n};\n\nPromise.prototype._receiverAt = function (index) {\n var ret = index === 0 ? this._receiver0 : this[\n index * 4 - 4 + 3];\n if (ret === UNDEFINED_BINDING) {\n return undefined;\n } else if (ret === undefined && this._isBound()) {\n return this._boundValue();\n }\n return ret;\n};\n\nPromise.prototype._promiseAt = function (index) {\n return this[\n index * 4 - 4 + 2];\n};\n\nPromise.prototype._fulfillmentHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 0];\n};\n\nPromise.prototype._rejectionHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 1];\n};\n\nPromise.prototype._boundValue = function() {};\n\nPromise.prototype._migrateCallback0 = function (follower) {\n var bitField = follower._bitField;\n var fulfill = follower._fulfillmentHandler0;\n var reject = follower._rejectionHandler0;\n var promise = follower._promise0;\n var receiver = follower._receiverAt(0);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._migrateCallbackAt = function (follower, index) {\n var fulfill = follower._fulfillmentHandlerAt(index);\n var reject = follower._rejectionHandlerAt(index);\n var promise = follower._promiseAt(index);\n var receiver = follower._receiverAt(index);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._addCallbacks = function (\n fulfill,\n reject,\n promise,\n receiver,\n context\n) {\n var index = this._length();\n\n if (index >= 65535 - 4) {\n index = 0;\n this._setLength(0);\n }\n\n if (index === 0) {\n this._promise0 = promise;\n this._receiver0 = receiver;\n if (typeof fulfill === \"function\") {\n this._fulfillmentHandler0 = util.contextBind(context, fulfill);\n }\n if (typeof reject === \"function\") {\n this._rejectionHandler0 = util.contextBind(context, reject);\n }\n } else {\n var base = index * 4 - 4;\n this[base + 2] = promise;\n this[base + 3] = receiver;\n if (typeof fulfill === \"function\") {\n this[base + 0] =\n util.contextBind(context, fulfill);\n }\n if (typeof reject === \"function\") {\n this[base + 1] =\n util.contextBind(context, reject);\n }\n }\n this._setLength(index + 1);\n return index;\n};\n\nPromise.prototype._proxy = function (proxyable, arg) {\n this._addCallbacks(undefined, undefined, arg, proxyable, null);\n};\n\nPromise.prototype._resolveCallback = function(value, shouldBind) {\n if (((this._bitField & 117506048) !== 0)) return;\n if (value === this)\n return this._rejectCallback(makeSelfResolutionError(), false);\n var maybePromise = tryConvertToPromise(value, this);\n if (!(maybePromise instanceof Promise)) return this._fulfill(value);\n\n if (shouldBind) this._propagateFrom(maybePromise, 2);\n\n\n var promise = maybePromise._target();\n\n if (promise === this) {\n this._reject(makeSelfResolutionError());\n return;\n }\n\n var bitField = promise._bitField;\n if (((bitField & 50397184) === 0)) {\n var len = this._length();\n if (len > 0) promise._migrateCallback0(this);\n for (var i = 1; i < len; ++i) {\n promise._migrateCallbackAt(this, i);\n }\n this._setFollowing();\n this._setLength(0);\n this._setFollowee(maybePromise);\n } else if (((bitField & 33554432) !== 0)) {\n this._fulfill(promise._value());\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(promise._reason());\n } else {\n var reason = new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n this._reject(reason);\n }\n};\n\nPromise.prototype._rejectCallback =\nfunction(reason, synchronous, ignoreNonErrorWarnings) {\n var trace = util.ensureErrorObject(reason);\n var hasStack = trace === reason;\n if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {\n var message = \"a promise was rejected with a non-error: \" +\n util.classString(reason);\n this._warn(message, true);\n }\n this._attachExtraTrace(trace, synchronous ? hasStack : false);\n this._reject(reason);\n};\n\nPromise.prototype._resolveFromExecutor = function (executor) {\n if (executor === INTERNAL) return;\n var promise = this;\n this._captureStackTrace();\n this._pushContext();\n var synchronous = true;\n var r = this._execute(executor, function(value) {\n promise._resolveCallback(value);\n }, function (reason) {\n promise._rejectCallback(reason, synchronous);\n });\n synchronous = false;\n this._popContext();\n\n if (r !== undefined) {\n promise._rejectCallback(r, true);\n }\n};\n\nPromise.prototype._settlePromiseFromHandler = function (\n handler, receiver, value, promise\n) {\n var bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n promise._pushContext();\n var x;\n if (receiver === APPLY) {\n if (!value || typeof value.length !== \"number\") {\n x = errorObj;\n x.e = new TypeError(\"cannot .spread() a non-array: \" +\n util.classString(value));\n } else {\n x = tryCatch(handler).apply(this._boundValue(), value);\n }\n } else {\n x = tryCatch(handler).call(receiver, value);\n }\n var promiseCreated = promise._popContext();\n bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n\n if (x === NEXT_FILTER) {\n promise._reject(value);\n } else if (x === errorObj) {\n promise._rejectCallback(x.e, false);\n } else {\n debug.checkForgottenReturns(x, promiseCreated, \"\", promise, this);\n promise._resolveCallback(x);\n }\n};\n\nPromise.prototype._target = function() {\n var ret = this;\n while (ret._isFollowing()) ret = ret._followee();\n return ret;\n};\n\nPromise.prototype._followee = function() {\n return this._rejectionHandler0;\n};\n\nPromise.prototype._setFollowee = function(promise) {\n this._rejectionHandler0 = promise;\n};\n\nPromise.prototype._settlePromise = function(promise, handler, receiver, value) {\n var isPromise = promise instanceof Promise;\n var bitField = this._bitField;\n var asyncGuaranteed = ((bitField & 134217728) !== 0);\n if (((bitField & 65536) !== 0)) {\n if (isPromise) promise._invokeInternalOnCancel();\n\n if (receiver instanceof PassThroughHandlerContext &&\n receiver.isFinallyHandler()) {\n receiver.cancelPromise = promise;\n if (tryCatch(handler).call(receiver, value) === errorObj) {\n promise._reject(errorObj.e);\n }\n } else if (handler === reflectHandler) {\n promise._fulfill(reflectHandler.call(receiver));\n } else if (receiver instanceof Proxyable) {\n receiver._promiseCancelled(promise);\n } else if (isPromise || promise instanceof PromiseArray) {\n promise._cancel();\n } else {\n receiver.cancel();\n }\n } else if (typeof handler === \"function\") {\n if (!isPromise) {\n handler.call(receiver, value, promise);\n } else {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (receiver instanceof Proxyable) {\n if (!receiver._isResolved()) {\n if (((bitField & 33554432) !== 0)) {\n receiver._promiseFulfilled(value, promise);\n } else {\n receiver._promiseRejected(value, promise);\n }\n }\n } else if (isPromise) {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n if (((bitField & 33554432) !== 0)) {\n promise._fulfill(value);\n } else {\n promise._reject(value);\n }\n }\n};\n\nPromise.prototype._settlePromiseLateCancellationObserver = function(ctx) {\n var handler = ctx.handler;\n var promise = ctx.promise;\n var receiver = ctx.receiver;\n var value = ctx.value;\n if (typeof handler === \"function\") {\n if (!(promise instanceof Promise)) {\n handler.call(receiver, value, promise);\n } else {\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (promise instanceof Promise) {\n promise._reject(value);\n }\n};\n\nPromise.prototype._settlePromiseCtx = function(ctx) {\n this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);\n};\n\nPromise.prototype._settlePromise0 = function(handler, value, bitField) {\n var promise = this._promise0;\n var receiver = this._receiverAt(0);\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._settlePromise(promise, handler, receiver, value);\n};\n\nPromise.prototype._clearCallbackDataAtIndex = function(index) {\n var base = index * 4 - 4;\n this[base + 2] =\n this[base + 3] =\n this[base + 0] =\n this[base + 1] = undefined;\n};\n\nPromise.prototype._fulfill = function (value) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n if (value === this) {\n var err = makeSelfResolutionError();\n this._attachExtraTrace(err);\n return this._reject(err);\n }\n this._setFulfilled();\n this._rejectionHandler0 = value;\n\n if ((bitField & 65535) > 0) {\n if (((bitField & 134217728) !== 0)) {\n this._settlePromises();\n } else {\n async.settlePromises(this);\n }\n this._dereferenceTrace();\n }\n};\n\nPromise.prototype._reject = function (reason) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n this._setRejected();\n this._fulfillmentHandler0 = reason;\n\n if (this._isFinal()) {\n return async.fatalError(reason, util.isNode);\n }\n\n if ((bitField & 65535) > 0) {\n async.settlePromises(this);\n } else {\n this._ensurePossibleRejectionHandled();\n }\n};\n\nPromise.prototype._fulfillPromises = function (len, value) {\n for (var i = 1; i < len; i++) {\n var handler = this._fulfillmentHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, value);\n }\n};\n\nPromise.prototype._rejectPromises = function (len, reason) {\n for (var i = 1; i < len; i++) {\n var handler = this._rejectionHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, reason);\n }\n};\n\nPromise.prototype._settlePromises = function () {\n var bitField = this._bitField;\n var len = (bitField & 65535);\n\n if (len > 0) {\n if (((bitField & 16842752) !== 0)) {\n var reason = this._fulfillmentHandler0;\n this._settlePromise0(this._rejectionHandler0, reason, bitField);\n this._rejectPromises(len, reason);\n } else {\n var value = this._rejectionHandler0;\n this._settlePromise0(this._fulfillmentHandler0, value, bitField);\n this._fulfillPromises(len, value);\n }\n this._setLength(0);\n }\n this._clearCancellationData();\n};\n\nPromise.prototype._settledValue = function() {\n var bitField = this._bitField;\n if (((bitField & 33554432) !== 0)) {\n return this._rejectionHandler0;\n } else if (((bitField & 16777216) !== 0)) {\n return this._fulfillmentHandler0;\n }\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.toStringTag) {\n es5.defineProperty(Promise.prototype, Symbol.toStringTag, {\n get: function () {\n return \"Object\";\n }\n });\n}\n\nfunction deferResolve(v) {this.promise._resolveCallback(v);}\nfunction deferReject(v) {this.promise._rejectCallback(v, false);}\n\nPromise.defer = Promise.pending = function() {\n debug.deprecated(\"Promise.defer\", \"new Promise\");\n var promise = new Promise(INTERNAL);\n return {\n promise: promise,\n resolve: deferResolve,\n reject: deferReject\n };\n};\n\nutil.notEnumerableProp(Promise,\n \"_makeSelfResolutionError\",\n makeSelfResolutionError);\n\nrequire(\"./method\")(Promise, INTERNAL, tryConvertToPromise, apiRejection,\n debug);\nrequire(\"./bind\")(Promise, INTERNAL, tryConvertToPromise, debug);\nrequire(\"./cancel\")(Promise, PromiseArray, apiRejection, debug);\nrequire(\"./direct_resolve\")(Promise);\nrequire(\"./synchronous_inspection\")(Promise);\nrequire(\"./join\")(\n Promise, PromiseArray, tryConvertToPromise, INTERNAL, async);\nPromise.Promise = Promise;\nPromise.version = \"3.7.2\";\nrequire('./call_get.js')(Promise);\nrequire('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug);\nrequire('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\nrequire('./nodeify.js')(Promise);\nrequire('./promisify.js')(Promise, INTERNAL);\nrequire('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection);\nrequire('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection);\nrequire('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\nrequire('./settle.js')(Promise, PromiseArray, debug);\nrequire('./some.js')(Promise, PromiseArray, apiRejection);\nrequire('./timers.js')(Promise, INTERNAL, debug);\nrequire('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug);\nrequire('./any.js')(Promise);\nrequire('./each.js')(Promise, INTERNAL);\nrequire('./filter.js')(Promise, INTERNAL);\n \n util.toFastProperties(Promise); \n util.toFastProperties(Promise.prototype); \n function fillTypes(value) { \n var p = new Promise(INTERNAL); \n p._fulfillmentHandler0 = value; \n p._rejectionHandler0 = value; \n p._promise0 = value; \n p._receiver0 = value; \n } \n // Complete slack tracking, opt out of field-type tracking and \n // stabilize map \n fillTypes({a: 1}); \n fillTypes({b: 2}); \n fillTypes({c: 3}); \n fillTypes(1); \n fillTypes(function(){}); \n fillTypes(undefined); \n fillTypes(false); \n fillTypes(new Promise(INTERNAL)); \n debug.setBounds(Async.firstLineError, util.lastLineError); \n return Promise; \n\n};\n","\"use strict\";\nvar old;\nif (typeof Promise !== \"undefined\") old = Promise;\nfunction noConflict() {\n try { if (Promise === bluebird) Promise = old; }\n catch (e) {}\n return bluebird;\n}\nvar bluebird = require(\"./promise\")();\nbluebird.noConflict = noConflict;\nmodule.exports = bluebird;\n","'use strict';\n\nconst util = require('util');\nconst crypto = require('crypto');\nconst Promise = require('bluebird');\nconst EventEmitter = require('events');\n\n// constants\nconst lockScript = `\n\t-- Return 0 if an entry already exists.\n\tfor i, key in ipairs(KEYS) do\n\t\tif redis.call(\"exists\", key) == 1 then\n\t\t\treturn 0\n\t\tend\n\tend\n\n\t-- Create an entry for each provided key.\n\tfor i, key in ipairs(KEYS) do\n\t\tredis.call(\"set\", key, ARGV[1], \"PX\", ARGV[2])\n\tend\n\n\t-- Return the number of entries added.\n\treturn #KEYS\n`;\n\nconst unlockScript = `\n\tlocal count = 0\n\tfor i, key in ipairs(KEYS) do\n\t\t-- Only remove entries for *this* lock value.\n\t\tif redis.call(\"get\", key) == ARGV[1] then\n\t\t\tredis.pcall(\"del\", key)\n\t\t\tcount = count + 1\n\t\tend\n\tend\n\n\t-- Return the number of entries removed.\n\treturn count\n`;\n\nconst extendScript = `\n\t-- Return 0 if an entry exists with a *different* lock value.\n\tfor i, key in ipairs(KEYS) do\n\t\tif redis.call(\"get\", key) ~= ARGV[1] then\n\t\t\treturn 0\n\t\tend\n\tend\n\n\t-- Update the entry for each provided key.\n\tfor i, key in ipairs(KEYS) do\n\t\tredis.call(\"set\", key, ARGV[1], \"PX\", ARGV[2])\n\tend\n\n\t-- Return the number of entries updated.\n\treturn #KEYS\n`;\n\n// defaults\nconst defaults = {\n\tdriftFactor: 0.01,\n\tretryCount: 10,\n\tretryDelay: 200,\n\tretryJitter: 100\n};\n\n\n\n\n\n// LockError\n// ---------\n// This error is returned when there is an error locking a resource.\nfunction LockError(message, attempts) {\n\tError.call(this);\n\tError.captureStackTrace(this, LockError);\n\tthis.name = 'LockError';\n\tthis.message = message || 'Failed to lock the resource.';\n\tthis.attempts = attempts;\n}\n\nutil.inherits(LockError, Error);\n\n\n\n\n\n\n// Lock\n// ----\n// An object of this type is returned when a resource is successfully locked. It contains\n// convenience methods `unlock` and `extend` which perform the associated Redlock method on\n// itself.\nfunction Lock(redlock, resource, value, expiration, attempts, attemptsRemaining) {\n\tthis.redlock = redlock;\n\tthis.resource = resource;\n\tthis.value = value;\n\tthis.expiration = expiration;\n\tthis.attempts = attempts;\n\tthis.attemptsRemaining = attemptsRemaining;\n}\n\nLock.prototype.unlock = function unlock(callback) {\n\treturn this.redlock.unlock(this, callback);\n};\n\nLock.prototype.extend = function extend(ttl, callback) {\n\treturn this.redlock.extend(this, ttl, callback);\n};\n\n// Attach a reference to Lock, which allows the application to use instanceof\n// to ensure type.\nRedlock.Lock = Lock;\n\n\n// Redlock\n// -------\n// A redlock object is instantiated with an array of at least one redis client and an optional\n// `options` object. Properties of the Redlock object should NOT be changed after it is first\n// used, as doing so could have unintended consequences for live locks.\nfunction Redlock(clients, options) {\n\t// set default options\n\toptions = options || {};\n\tthis.driftFactor = typeof options.driftFactor === 'number' ? options.driftFactor : defaults.driftFactor;\n\tthis.retryCount = typeof options.retryCount === 'number' ? options.retryCount : defaults.retryCount;\n\tthis.retryDelay = typeof options.retryDelay === 'number' ? options.retryDelay : defaults.retryDelay;\n\tthis.retryJitter = typeof options.retryJitter === 'number' ? options.retryJitter : defaults.retryJitter;\n\tthis.lockScript = typeof options.lockScript === 'function' ? options.lockScript(lockScript) : lockScript;\n\tthis.unlockScript = typeof options.unlockScript === 'function' ? options.unlockScript(unlockScript) : unlockScript;\n\tthis.extendScript = typeof options.extendScript === 'function' ? options.extendScript(extendScript) : extendScript;\n\t// set the redis servers from additional arguments\n\tthis.servers = clients;\n\tif(this.servers.length === 0)\n\t\tthrow new Error('Redlock must be instantiated with at least one redis server.');\n\n\tthis.scripts = {\n\t\tlockScript: { value: this.lockScript, hash: this._hashScript(this.lockScript) },\n\t\tunlockScript: { value: this.unlockScript, hash: this._hashScript(this.unlockScript) },\n\t\textendScript: { value: this.extendScript, hash: this._hashScript(this.extendScript) },\n\t};\n}\n\n// Inherit all the EventEmitter methods, like `on`, and `off`\nutil.inherits(Redlock, EventEmitter);\n\n\n// Attach a reference to LockError per issue #7, which allows the application to use instanceof\n// to destinguish between error types.\nRedlock.LockError = LockError;\n\n// quit\n// ----\n// This method runs `.quit()` on all client connections.\n\nRedlock.prototype.quit = function quit(callback) {\n\n\t// quit all clients\n\treturn Promise.map(this.servers, function(client) {\n\t\treturn client.quit();\n\t})\n\n\t// optionally run callback\n\t.nodeify(callback);\n};\n\n\n// lock\n// ----\n// This method locks a resource using the redlock algorithm.\n//\n// ```js\n// redlock.lock(\n// 'some-resource', // the resource to lock\n// 2000, // ttl in ms\n// function(err, lock) { // callback function (optional)\n// ...\n// }\n// )\n// ```\nRedlock.prototype.acquire =\nRedlock.prototype.lock = function lock(resource, ttl, callback) {\n\treturn this._lock(resource, null, ttl, {}, callback);\n};\n\n// lockWithOptions\n// ---------------\n// This method locks a resource and overwrites some of the options\n// ```js\n// redlock.lockWithOptions(\n// 'some-resource', // the resource to lock\n// 2000, // ttl in ms\n// { retryCount: 1, retryDelay: 100 }, // additional options\n// function(err, lock) { // callback function (optional)\n// ...\n// }\n// )\n// ```\nRedlock.prototype.acquireWithOptions =\nRedlock.prototype.lockWithOptions = function lock(resource, ttl, options, callback) {\n\treturn this._lock(resource, null, ttl, options, callback);\n};\n\n// lock\n// ----\n// This method locks a resource using the redlock algorithm,\n// and returns a bluebird disposer.\n//\n// ```js\n// using(\n// redlock.disposer(\n// 'some-resource', // the resource to lock\n// 2000 // ttl in ms\n// ),\n// function(lock) {\n// ...\n// }\n// );\n// ```\nRedlock.prototype.disposer = function disposer(resource, ttl, errorHandler) {\n\terrorHandler = errorHandler || function(err) {};\n\treturn this._lock(resource, null, ttl, {}).disposer(function(lock){\n\t\treturn lock.unlock().catch(errorHandler);\n\t});\n};\n\n\n// unlock\n// ------\n// This method unlocks the provided lock from all servers still persisting it. It will fail\n// with an error if it is unable to release the lock on a quorum of nodes, but will make no\n// attempt to restore the lock on nodes that failed to release. It is safe to re-attempt an\n// unlock or to ignore the error, as the lock will automatically expire after its timeout.\nRedlock.prototype.release =\nRedlock.prototype.unlock = function unlock(lock, callback) {\n\tconst self = this;\n\n\t// array of locked resources\n\tconst resource = Array.isArray(lock.resource)\n\t\t? lock.resource\n\t\t: [lock.resource];\n\t\n\t// immediately invalidate the lock\n\tlock.expiration = 0;\n\n\treturn new Promise(function(resolve, reject) {\n\n\t\t// the number of votes needed for consensus\n\t\tconst quorum = Math.floor(self.servers.length / 2) + 1;\n\n\t\t// the number of servers which have agreed to release this lock\n\t\tlet votes = 0;\n\n\t\t// the number of async redis calls still waiting to finish\n\t\tlet waiting = self.servers.length;\n\n\t\t// release the lock on each server\n\t\tself.servers.forEach(function(server){\n\t\t\treturn self._executeScript(server, 'unlockScript', [\n\t\t\t\t\tresource.length,\n\t\t\t\t\t...resource,\n\t\t\t\t\tlock.value\n\t\t\t], loop);\n\t\t});\n\n\t\tfunction loop(err, response) {\n\t\t\tif(err) self.emit('clientError', err);\n\n\t\t\t// - If the response is less than the resource length, than one or\n\t\t\t// more resources failed to unlock:\n\t\t\t// - It may have been re-acquired by another process;\n\t\t\t// - It may hava already been manually released;\n\t\t\t// - It may have expired;\n\n\t\t\tif(response === resource.length || response === '' + resource.length)\n\t\t\t\tvotes++;\n\n\t\t\tif(waiting-- > 1) return;\n\n\t\t\t// SUCCESS: there is concensus and the lock is released\n\t\t\tif(votes >= quorum)\n\t\t\t\treturn resolve();\n\n\t\t\t// FAILURE: the lock could not be released\n\t\t\treturn reject(new LockError('Unable to fully release the lock on resource \"' + lock.resource + '\".'));\n\t\t}\n\t})\n\n\t// optionally run callback\n\t.nodeify(callback);\n};\n\n\n// extend\n// ------\n// This method extends a valid lock by the provided `ttl`.\nRedlock.prototype.extend = function extend(lock, ttl, callback) {\n\tconst self = this;\n\n\t// the lock has expired\n\tif(lock.expiration < Date.now())\n\t\treturn Promise.reject(new LockError('Cannot extend lock on resource \"' + lock.resource + '\" because the lock has already expired.', 0)).nodeify(callback);\n\n\t// extend the lock\n\treturn self._lock(lock.resource, lock.value, ttl, {})\n\n\t// modify and return the original lock object\n\t.then(function(extension){\n\t\tlock.value = extension.value;\n\t\tlock.expiration = extension.expiration;\n\t\treturn lock;\n\t})\n\n\t// optionally run callback\n\t.nodeify(callback);\n};\n\n\n// _lock\n// -----\n// This method locks a resource using the redlock algorithm.\n//\n// ###Creating New Locks:\n//\n// ```js\n// redlock._lock(\n// 'some-resource', // the resource to lock\n// null, // no original lock value\n// 2000, // ttl in ms\n// {}, // option overrides {retryCount, retryDelay}\n// function(err, lock) { // callback function (optional)\n// ...\n// }\n// )\n// ```\n//\n// ###Extending Existing Locks:\n//\n// ```js\n// redlock._lock(\n// 'some-resource', // the resource to lock\n// 'dkkk18g4gy39dx6r', // the value of the original lock\n// 2000, // ttl in ms\n// {}, // option overrides {retryCount, retryDelay}\n// function(err, lock) { // callback function (optional)\n// ...\n// }\n// )\n// ```\nRedlock.prototype._lock = function _lock(resource, value, ttl, options, callback) {\n\tconst self = this;\n\n\t// backwards compatibility with previous method signature: _lock(resource, value, ttl, callback)\n\tif (typeof options === 'function' && typeof callback === 'undefined') {\n\t\tcallback = options;\n\t\toptions = {};\n\t}\n\n\t// array of locked resources\n\tresource = Array.isArray(resource) ? resource : [resource];\n\n\treturn new Promise(function(resolve, reject) {\n\t\tlet request;\n\n\t\t// the number of times we have attempted this lock\n\t\tlet attempts = 0;\n\n\t\t// create a new lock\n\t\tif(value === null) {\n\t\t\tvalue = self._random();\n\t\t\trequest = function(server, loop){\n\t\t\t\treturn self._executeScript(server, 'lockScript', [\n\t\t\t\t\t\tresource.length,\n\t\t\t\t\t\t...resource,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tttl\n\t\t\t\t], loop);\n\t\t\t};\n\t\t}\n\n\t\t// extend an existing lock\n\t\telse {\n\t\t\trequest = function(server, loop){\n\t\t\t\treturn self._executeScript(server, 'extendScript', [\n\t\t\t\t\t\tresource.length,\n\t\t\t\t\t\t...resource,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tttl\n\t\t\t\t], loop);\n\t\t\t};\n\t\t}\n\n\t\tfunction attempt(){\n\t\t\tattempts++;\n\n\t\t\tlet retryCount = options.retryCount || self.retryCount;\n\t\t\tlet retryDelay = options.retryDelay || self.retryDelay;\n\n\t\t\t// the time when this attempt started\n\t\t\tconst start = Date.now();\n\n\t\t\t// the number of votes needed for consensus\n\t\t\tconst quorum = Math.floor(self.servers.length / 2) + 1;\n\n\t\t\t// the number of servers which have agreed to this lock\n\t\t\tlet votes = 0;\n\n\t\t\t// the number of async redis calls still waiting to finish\n\t\t\tlet waiting = self.servers.length;\n\n\t\t\tfunction loop(err, response) {\n\t\t\t\tif(err) self.emit('clientError', err);\n\t\t\t\tif(response === resource.length || response === '' + resource.length) votes++;\n\t\t\t\tif(waiting-- > 1) return;\n\t\t\t\t\n\t\t\t\t// Add 2 milliseconds to the drift to account for Redis expires precision, which is 1 ms,\n\t\t\t\t// plus the configured allowable drift factor\n\t\t\t\tconst drift = Math.round(self.driftFactor * ttl) + 2;\n\t\t\t\tconst lock = new Lock(self, resource, value, start + ttl - drift, attempts, retryCount - attempts);\n\t\t\t\t\n\t\t\t\t// SUCCESS: there is concensus and the lock is not expired\n\t\t\t\tif(votes >= quorum && lock.expiration > Date.now())\n\t\t\t\t\treturn resolve(lock);\n\n\n\t\t\t\t// remove this lock from servers that voted for it\n\t\t\t\treturn lock.unlock(function(){\n\n\t\t\t\t\t// RETRY\n\t\t\t\t\tif(retryCount === -1 || attempts <= retryCount)\n\t\t\t\t\t\treturn setTimeout(attempt, Math.max(0, retryDelay + Math.floor((Math.random() * 2 - 1) * self.retryJitter)));\n\n\t\t\t\t\t// FAILED\n\t\t\t\t\treturn reject(new LockError('Exceeded ' + retryCount + ' attempts to lock the resource \"' + resource + '\".', attempts));\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn self.servers.forEach(function(server){\n\t\t\t\treturn request(server, loop);\n\t\t\t});\n\t\t}\n\n\t\treturn attempt();\n\t})\n\n\t// optionally run callback\n\t.nodeify(callback);\n};\n\n\nRedlock.prototype._random = function _random(){\n\treturn crypto.randomBytes(16).toString('hex');\n};\n\nRedlock.prototype._executeScript = function(server, name, args, callback) {\n\tconst script = this.scripts[name];\n\n\treturn server.evalsha(script.hash, args, (err, result) => {\n\t\tif(err !== null && err.message.startsWith(\"NOSCRIPT\")) {\n\t\t\t// Script is not loaded yet, call eval and it will populate it in redis lua scripts cache\n\t\t\targs.unshift(script.value);\n\t\t\treturn server.eval(args, callback);\n\t\t}\n\n\t\treturn callback(err, result);\n\t});\n}\n\nRedlock.prototype._hashScript = function(value) {\n\treturn crypto.createHash('sha1').update(value).digest('hex');\n}\n\nmodule.exports = Redlock;\n","import validate from './validate.js';\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n //\n // Note to future-self: No, you can't remove the `toLowerCase()` call.\n // REF: https://github.com/uuidjs/uuid/pull/677#issuecomment-1757351351\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n var uuid = unsafeStringify(arr, offset);\n // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\n\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n return getRandomValues(rnds8);\n}","var randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n offset = offset || 0;\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;","'use strict';\n\nvar AsyncLock = function (opts) {\n\topts = opts || {};\n\n\tthis.Promise = opts.Promise || Promise;\n\n\t// format: {key : [fn, fn]}\n\t// queues[key] = null indicates no job running for key\n\tthis.queues = Object.create(null);\n\n\t// lock is reentrant for same domain\n\tthis.domainReentrant = opts.domainReentrant || false;\n\tif (this.domainReentrant) {\n\t\tif (typeof process === 'undefined' || typeof process.domain === 'undefined') {\n\t\t\tthrow new Error(\n\t\t\t\t'Domain-reentrant locks require `process.domain` to exist. Please flip `opts.domainReentrant = false`, ' +\n\t\t\t\t'use a NodeJS version that still implements Domain, or install a browser polyfill.');\n\t\t}\n\t\t// domain of current running func {key : fn}\n\t\tthis.domains = Object.create(null);\n\t}\n\n\tthis.timeout = opts.timeout || AsyncLock.DEFAULT_TIMEOUT;\n\tthis.maxOccupationTime = opts.maxOccupationTime || AsyncLock.DEFAULT_MAX_OCCUPATION_TIME;\n\tthis.maxExecutionTime = opts.maxExecutionTime || AsyncLock.DEFAULT_MAX_EXECUTION_TIME;\n\tif (opts.maxPending === Infinity || (Number.isInteger(opts.maxPending) && opts.maxPending >= 0)) {\n\t\tthis.maxPending = opts.maxPending;\n\t} else {\n\t\tthis.maxPending = AsyncLock.DEFAULT_MAX_PENDING;\n\t}\n};\n\nAsyncLock.DEFAULT_TIMEOUT = 0; //Never\nAsyncLock.DEFAULT_MAX_OCCUPATION_TIME = 0; //Never\nAsyncLock.DEFAULT_MAX_EXECUTION_TIME = 0; //Never\nAsyncLock.DEFAULT_MAX_PENDING = 1000;\n\n/**\n * Acquire Locks\n *\n * @param {String|Array} key \tresource key or keys to lock\n * @param {function} fn \tasync function\n * @param {function} cb \tcallback function, otherwise will return a promise\n * @param {Object} opts \toptions\n */\nAsyncLock.prototype.acquire = function (key, fn, cb, opts) {\n\tif (Array.isArray(key)) {\n\t\treturn this._acquireBatch(key, fn, cb, opts);\n\t}\n\n\tif (typeof (fn) !== 'function') {\n\t\tthrow new Error('You must pass a function to execute');\n\t}\n\n\t// faux-deferred promise using new Promise() (as Promise.defer is deprecated)\n\tvar deferredResolve = null;\n\tvar deferredReject = null;\n\tvar deferred = null;\n\n\tif (typeof (cb) !== 'function') {\n\t\topts = cb;\n\t\tcb = null;\n\n\t\t// will return a promise\n\t\tdeferred = new this.Promise(function(resolve, reject) {\n\t\t\tdeferredResolve = resolve;\n\t\t\tdeferredReject = reject;\n\t\t});\n\t}\n\n\topts = opts || {};\n\n\tvar resolved = false;\n\tvar timer = null;\n\tvar occupationTimer = null;\n\tvar executionTimer = null;\n\tvar self = this;\n\n\tvar done = function (locked, err, ret) {\n\n\t\tif (occupationTimer) {\n\t\t\tclearTimeout(occupationTimer);\n\t\t\toccupationTimer = null;\n\t\t}\n\n\t\tif (executionTimer) {\n\t\t\tclearTimeout(executionTimer);\n\t\t\texecutionTimer = null;\n\t\t}\n\n\t\tif (locked) {\n\t\t\tif (!!self.queues[key] && self.queues[key].length === 0) {\n\t\t\t\tdelete self.queues[key];\n\t\t\t}\n\t\t\tif (self.domainReentrant) {\n\t\t\t\tdelete self.domains[key];\n\t\t\t}\n\t\t}\n\n\t\tif (!resolved) {\n\t\t\tif (!deferred) {\n\t\t\t\tif (typeof (cb) === 'function') {\n\t\t\t\t\tcb(err, ret);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t//promise mode\n\t\t\t\tif (err) {\n\t\t\t\t\tdeferredReject(err);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdeferredResolve(ret);\n\t\t\t\t}\n\t\t\t}\n\t\t\tresolved = true;\n\t\t}\n\n\t\tif (locked) {\n\t\t\t//run next func\n\t\t\tif (!!self.queues[key] && self.queues[key].length > 0) {\n\t\t\t\tself.queues[key].shift()();\n\t\t\t}\n\t\t}\n\t};\n\n\tvar exec = function (locked) {\n\t\tif (resolved) { // may due to timed out\n\t\t\treturn done(locked);\n\t\t}\n\n\t\tif (timer) {\n\t\t\tclearTimeout(timer);\n\t\t\ttimer = null;\n\t\t}\n\n\t\tif (self.domainReentrant && locked) {\n\t\t\tself.domains[key] = process.domain;\n\t\t}\n\n\t\tvar maxExecutionTime = opts.maxExecutionTime || self.maxExecutionTime;\n\t\tif (maxExecutionTime) {\n\t\t\texecutionTimer = setTimeout(function () {\n\t\t\t\tif (!!self.queues[key]) {\n\t\t\t\t\tdone(locked, new Error('Maximum execution time is exceeded ' + key));\n\t\t\t\t}\n\t\t\t}, maxExecutionTime);\n\t\t}\n\n\t\t// Callback mode\n\t\tif (fn.length === 1) {\n\t\t\tvar called = false;\n\t\t\ttry {\n\t\t\t\tfn(function (err, ret) {\n\t\t\t\t\tif (!called) {\n\t\t\t\t\t\tcalled = true;\n\t\t\t\t\t\tdone(locked, err, ret);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} catch (err) {\n\t\t\t\t// catching error thrown in user function fn\n\t\t\t\tif (!called) {\n\t\t\t\t\tcalled = true;\n\t\t\t\t\tdone(locked, err);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// Promise mode\n\t\t\tself._promiseTry(function () {\n\t\t\t\treturn fn();\n\t\t\t})\n\t\t\t.then(function(ret){\n\t\t\t\tdone(locked, undefined, ret);\n\t\t\t}, function(error){\n\t\t\t\tdone(locked, error);\n\t\t\t});\n\t\t}\n\t};\n\n\tif (self.domainReentrant && !!process.domain) {\n\t\texec = process.domain.bind(exec);\n\t}\n\n\tvar maxPending = opts.maxPending || self.maxPending;\n\n\tif (!self.queues[key]) {\n\t\tself.queues[key] = [];\n\t\texec(true);\n\t}\n\telse if (self.domainReentrant && !!process.domain && process.domain === self.domains[key]) {\n\t\t// If code is in the same domain of current running task, run it directly\n\t\t// Since lock is re-enterable\n\t\texec(false);\n\t}\n\telse if (self.queues[key].length >= maxPending) {\n\t\tdone(false, new Error('Too many pending tasks in queue ' + key));\n\t}\n\telse {\n\t\tvar taskFn = function () {\n\t\t\texec(true);\n\t\t};\n\t\tif (opts.skipQueue) {\n\t\t\tself.queues[key].unshift(taskFn);\n\t\t} else {\n\t\t\tself.queues[key].push(taskFn);\n\t\t}\n\n\t\tvar timeout = opts.timeout || self.timeout;\n\t\tif (timeout) {\n\t\t\ttimer = setTimeout(function () {\n\t\t\t\ttimer = null;\n\t\t\t\tdone(false, new Error('async-lock timed out in queue ' + key));\n\t\t\t}, timeout);\n\t\t}\n\t}\n\n\tvar maxOccupationTime = opts.maxOccupationTime || self.maxOccupationTime;\n\t\tif (maxOccupationTime) {\n\t\t\toccupationTimer = setTimeout(function () {\n\t\t\t\tif (!!self.queues[key]) {\n\t\t\t\t\tdone(false, new Error('Maximum occupation time is exceeded in queue ' + key));\n\t\t\t\t}\n\t\t\t}, maxOccupationTime);\n\t\t}\n\n\tif (deferred) {\n\t\treturn deferred;\n\t}\n};\n\n/*\n * Below is how this function works:\n *\n * Equivalent code:\n * self.acquire(key1, function(cb){\n * self.acquire(key2, function(cb){\n * self.acquire(key3, fn, cb);\n * }, cb);\n * }, cb);\n *\n * Equivalent code:\n * var fn3 = getFn(key3, fn);\n * var fn2 = getFn(key2, fn3);\n * var fn1 = getFn(key1, fn2);\n * fn1(cb);\n */\nAsyncLock.prototype._acquireBatch = function (keys, fn, cb, opts) {\n\tif (typeof (cb) !== 'function') {\n\t\topts = cb;\n\t\tcb = null;\n\t}\n\n\tvar self = this;\n\tvar getFn = function (key, fn) {\n\t\treturn function (cb) {\n\t\t\tself.acquire(key, fn, cb, opts);\n\t\t};\n\t};\n\n\tvar fnx = keys.reduceRight(function (prev, key) {\n\t\treturn getFn(key, prev);\n\t}, fn);\n\n\tif (typeof (cb) === 'function') {\n\t\tfnx(cb);\n\t}\n\telse {\n\t\treturn new this.Promise(function (resolve, reject) {\n\t\t\t// check for promise mode in case keys is empty array\n\t\t\tif (fnx.length === 1) {\n\t\t\t\tfnx(function (err, ret) {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresolve(ret);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tresolve(fnx());\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\n *\tWhether there is any running or pending asyncFunc\n *\n *\t@param {String} key\n */\nAsyncLock.prototype.isBusy = function (key) {\n\tif (!key) {\n\t\treturn Object.keys(this.queues).length > 0;\n\t}\n\telse {\n\t\treturn !!this.queues[key];\n\t}\n};\n\n/**\n * Promise.try() implementation to become independent of Q-specific methods\n */\nAsyncLock.prototype._promiseTry = function(fn) {\n\ttry {\n\t\treturn this.Promise.resolve(fn());\n\t} catch (e) {\n\t\treturn this.Promise.reject(e);\n\t}\n};\n\nmodule.exports = AsyncLock;\n","/**\n * Common Math expressions.\n *\n * @module math\n */\n\nexport const floor = Math.floor\nexport const ceil = Math.ceil\nexport const abs = Math.abs\nexport const imul = Math.imul\nexport const round = Math.round\nexport const log10 = Math.log10\nexport const log2 = Math.log2\nexport const log = Math.log\nexport const sqrt = Math.sqrt\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The sum of a and b\n */\nexport const add = (a, b) => a + b\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The smaller element of a and b\n */\nexport const min = (a, b) => a < b ? a : b\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The bigger element of a and b\n */\nexport const max = (a, b) => a > b ? a : b\n\nexport const isNaN = Number.isNaN\n\nexport const pow = Math.pow\n/**\n * Base 10 exponential function. Returns the value of 10 raised to the power of pow.\n *\n * @param {number} exp\n * @return {number}\n */\nexport const exp10 = exp => Math.pow(10, exp)\n\nexport const sign = Math.sign\n\n/**\n * @param {number} n\n * @return {boolean} Wether n is negative. This function also differentiates between -0 and +0\n */\nexport const isNegativeZero = n => n !== 0 ? n < 0 : 1 / n < 0\n","/* eslint-env browser */\n\n/**\n * Binary data constants.\n *\n * @module binary\n */\n\n/**\n * n-th bit activated.\n *\n * @type {number}\n */\nexport const BIT1 = 1\nexport const BIT2 = 2\nexport const BIT3 = 4\nexport const BIT4 = 8\nexport const BIT5 = 16\nexport const BIT6 = 32\nexport const BIT7 = 64\nexport const BIT8 = 128\nexport const BIT9 = 256\nexport const BIT10 = 512\nexport const BIT11 = 1024\nexport const BIT12 = 2048\nexport const BIT13 = 4096\nexport const BIT14 = 8192\nexport const BIT15 = 16384\nexport const BIT16 = 32768\nexport const BIT17 = 65536\nexport const BIT18 = 1 << 17\nexport const BIT19 = 1 << 18\nexport const BIT20 = 1 << 19\nexport const BIT21 = 1 << 20\nexport const BIT22 = 1 << 21\nexport const BIT23 = 1 << 22\nexport const BIT24 = 1 << 23\nexport const BIT25 = 1 << 24\nexport const BIT26 = 1 << 25\nexport const BIT27 = 1 << 26\nexport const BIT28 = 1 << 27\nexport const BIT29 = 1 << 28\nexport const BIT30 = 1 << 29\nexport const BIT31 = 1 << 30\nexport const BIT32 = 1 << 31\n\n/**\n * First n bits activated.\n *\n * @type {number}\n */\nexport const BITS0 = 0\nexport const BITS1 = 1\nexport const BITS2 = 3\nexport const BITS3 = 7\nexport const BITS4 = 15\nexport const BITS5 = 31\nexport const BITS6 = 63\nexport const BITS7 = 127\nexport const BITS8 = 255\nexport const BITS9 = 511\nexport const BITS10 = 1023\nexport const BITS11 = 2047\nexport const BITS12 = 4095\nexport const BITS13 = 8191\nexport const BITS14 = 16383\nexport const BITS15 = 32767\nexport const BITS16 = 65535\nexport const BITS17 = BIT18 - 1\nexport const BITS18 = BIT19 - 1\nexport const BITS19 = BIT20 - 1\nexport const BITS20 = BIT21 - 1\nexport const BITS21 = BIT22 - 1\nexport const BITS22 = BIT23 - 1\nexport const BITS23 = BIT24 - 1\nexport const BITS24 = BIT25 - 1\nexport const BITS25 = BIT26 - 1\nexport const BITS26 = BIT27 - 1\nexport const BITS27 = BIT28 - 1\nexport const BITS28 = BIT29 - 1\nexport const BITS29 = BIT30 - 1\nexport const BITS30 = BIT31 - 1\n/**\n * @type {number}\n */\nexport const BITS31 = 0x7FFFFFFF\n/**\n * @type {number}\n */\nexport const BITS32 = 0xFFFFFFFF\n","/**\n * Utility helpers for working with numbers.\n *\n * @module number\n */\n\nimport * as math from './math.js'\nimport * as binary from './binary.js'\n\nexport const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER\nexport const MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER\n\nexport const LOWEST_INT32 = 1 << 31\nexport const HIGHEST_INT32 = binary.BITS31\nexport const HIGHEST_UINT32 = binary.BITS32\n\n/* c8 ignore next */\nexport const isInteger = Number.isInteger || (num => typeof num === 'number' && isFinite(num) && math.floor(num) === num)\nexport const isNaN = Number.isNaN\nexport const parseInt = Number.parseInt\n\n/**\n * Count the number of \"1\" bits in an unsigned 32bit number.\n *\n * Super fun bitcount algorithm by Brian Kernighan.\n *\n * @param {number} n\n */\nexport const countBits = n => {\n n &= binary.BITS32\n let count = 0\n while (n) {\n n &= (n - 1)\n count++\n }\n return count\n}\n","/**\n * Utility module to work with sets.\n *\n * @module set\n */\n\nexport const create = () => new Set()\n\n/**\n * @template T\n * @param {Set<T>} set\n * @return {Array<T>}\n */\nexport const toArray = set => Array.from(set)\n\n/**\n * @template T\n * @param {Set<T>} set\n * @return {T}\n */\nexport const first = set =>\n set.values().next().value ?? undefined\n\n/**\n * @template T\n * @param {Iterable<T>} entries\n * @return {Set<T>}\n */\nexport const from = entries => new Set(entries)\n","/**\n * Utility module to work with Arrays.\n *\n * @module array\n */\n\nimport * as set from './set.js'\n\n/**\n * Return the last element of an array. The element must exist\n *\n * @template L\n * @param {ArrayLike<L>} arr\n * @return {L}\n */\nexport const last = arr => arr[arr.length - 1]\n\n/**\n * @template C\n * @return {Array<C>}\n */\nexport const create = () => /** @type {Array<C>} */ ([])\n\n/**\n * @template D\n * @param {Array<D>} a\n * @return {Array<D>}\n */\nexport const copy = a => /** @type {Array<D>} */ (a.slice())\n\n/**\n * Append elements from src to dest\n *\n * @template M\n * @param {Array<M>} dest\n * @param {Array<M>} src\n */\nexport const appendTo = (dest, src) => {\n for (let i = 0; i < src.length; i++) {\n dest.push(src[i])\n }\n}\n\n/**\n * Transforms something array-like to an actual Array.\n *\n * @function\n * @template T\n * @param {ArrayLike<T>|Iterable<T>} arraylike\n * @return {T}\n */\nexport const from = Array.from\n\n/**\n * True iff condition holds on every element in the Array.\n *\n * @function\n * @template ITEM\n * @template {ArrayLike<ITEM>} ARR\n *\n * @param {ARR} arr\n * @param {function(ITEM, number, ARR):boolean} f\n * @return {boolean}\n */\nexport const every = (arr, f) => {\n for (let i = 0; i < arr.length; i++) {\n if (!f(arr[i], i, arr)) {\n return false\n }\n }\n return true\n}\n\n/**\n * True iff condition holds on some element in the Array.\n *\n * @function\n * @template S\n * @template {ArrayLike<S>} ARR\n * @param {ARR} arr\n * @param {function(S, number, ARR):boolean} f\n * @return {boolean}\n */\nexport const some = (arr, f) => {\n for (let i = 0; i < arr.length; i++) {\n if (f(arr[i], i, arr)) {\n return true\n }\n }\n return false\n}\n\n/**\n * @template ELEM\n *\n * @param {ArrayLike<ELEM>} a\n * @param {ArrayLike<ELEM>} b\n * @return {boolean}\n */\nexport const equalFlat = (a, b) => a.length === b.length && every(a, (item, index) => item === b[index])\n\n/**\n * @template ELEM\n * @param {Array<Array<ELEM>>} arr\n * @return {Array<ELEM>}\n */\nexport const flatten = arr => fold(arr, /** @type {Array<ELEM>} */ ([]), (acc, val) => acc.concat(val))\n\n/**\n * @template T\n * @param {number} len\n * @param {function(number, Array<T>):T} f\n * @return {Array<T>}\n */\nexport const unfold = (len, f) => {\n const array = new Array(len)\n for (let i = 0; i < len; i++) {\n array[i] = f(i, array)\n }\n return array\n}\n\n/**\n * @template T\n * @template RESULT\n * @param {Array<T>} arr\n * @param {RESULT} seed\n * @param {function(RESULT, T, number):RESULT} folder\n */\nexport const fold = (arr, seed, folder) => arr.reduce(folder, seed)\n\nexport const isArray = Array.isArray\n\n/**\n * @template T\n * @param {Array<T>} arr\n * @return {Array<T>}\n */\nexport const unique = arr => from(set.from(arr))\n\n/**\n * @template T\n * @template M\n * @param {ArrayLike<T>} arr\n * @param {function(T):M} mapper\n * @return {Array<T>}\n */\nexport const uniqueBy = (arr, mapper) => {\n /**\n * @type {Set<M>}\n */\n const happened = set.create()\n /**\n * @type {Array<T>}\n */\n const result = []\n for (let i = 0; i < arr.length; i++) {\n const el = arr[i]\n const mapped = mapper(el)\n if (!happened.has(mapped)) {\n happened.add(mapped)\n result.push(el)\n }\n }\n return result\n}\n\n/**\n * @template {ArrayLike<any>} ARR\n * @template {function(ARR extends ArrayLike<infer T> ? T : never, number, ARR):any} MAPPER\n * @param {ARR} arr\n * @param {MAPPER} mapper\n * @return {Array<MAPPER extends function(...any): infer M ? M : never>}\n */\nexport const map = (arr, mapper) => {\n /**\n * @type {Array<any>}\n */\n const res = Array(arr.length)\n for (let i = 0; i < arr.length; i++) {\n res[i] = mapper(/** @type {any} */ (arr[i]), i, /** @type {any} */ (arr))\n }\n return /** @type {any} */ (res)\n}\n","import * as array from './array.js'\n\n/**\n * Utility module to work with strings.\n *\n * @module string\n */\n\nexport const fromCharCode = String.fromCharCode\nexport const fromCodePoint = String.fromCodePoint\n\n/**\n * The largest utf16 character.\n * Corresponds to Uint8Array([255, 255]) or charcodeof(2x2^8)\n */\nexport const MAX_UTF16_CHARACTER = fromCharCode(65535)\n\n/**\n * @param {string} s\n * @return {string}\n */\nconst toLowerCase = s => s.toLowerCase()\n\nconst trimLeftRegex = /^\\s*/g\n\n/**\n * @param {string} s\n * @return {string}\n */\nexport const trimLeft = s => s.replace(trimLeftRegex, '')\n\nconst fromCamelCaseRegex = /([A-Z])/g\n\n/**\n * @param {string} s\n * @param {string} separator\n * @return {string}\n */\nexport const fromCamelCase = (s, separator) => trimLeft(s.replace(fromCamelCaseRegex, match => `${separator}${toLowerCase(match)}`))\n\n/**\n * Compute the utf8ByteLength\n * @param {string} str\n * @return {number}\n */\nexport const utf8ByteLength = str => unescape(encodeURIComponent(str)).length\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\nexport const _encodeUtf8Polyfill = str => {\n const encodedString = unescape(encodeURIComponent(str))\n const len = encodedString.length\n const buf = new Uint8Array(len)\n for (let i = 0; i < len; i++) {\n buf[i] = /** @type {number} */ (encodedString.codePointAt(i))\n }\n return buf\n}\n\n/* c8 ignore next */\nexport const utf8TextEncoder = /** @type {TextEncoder} */ (typeof TextEncoder !== 'undefined' ? new TextEncoder() : null)\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\nexport const _encodeUtf8Native = str => utf8TextEncoder.encode(str)\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\n/* c8 ignore next */\nexport const encodeUtf8 = utf8TextEncoder ? _encodeUtf8Native : _encodeUtf8Polyfill\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\nexport const _decodeUtf8Polyfill = buf => {\n let remainingLen = buf.length\n let encodedString = ''\n let bufPos = 0\n while (remainingLen > 0) {\n const nextLen = remainingLen < 10000 ? remainingLen : 10000\n const bytes = buf.subarray(bufPos, bufPos + nextLen)\n bufPos += nextLen\n // Starting with ES5.1 we can supply a generic array-like object as arguments\n encodedString += String.fromCodePoint.apply(null, /** @type {any} */ (bytes))\n remainingLen -= nextLen\n }\n return decodeURIComponent(escape(encodedString))\n}\n\n/* c8 ignore next */\nexport let utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf-8', { fatal: true, ignoreBOM: true })\n\n/* c8 ignore start */\nif (utf8TextDecoder && utf8TextDecoder.decode(new Uint8Array()).length === 1) {\n // Safari doesn't handle BOM correctly.\n // This fixes a bug in Safari 13.0.5 where it produces a BOM the first time it is called.\n // utf8TextDecoder.decode(new Uint8Array()).length === 1 on the first call and\n // utf8TextDecoder.decode(new Uint8Array()).length === 1 on the second call\n // Another issue is that from then on no BOM chars are recognized anymore\n /* c8 ignore next */\n utf8TextDecoder = null\n}\n/* c8 ignore stop */\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\nexport const _decodeUtf8Native = buf => /** @type {TextDecoder} */ (utf8TextDecoder).decode(buf)\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\n/* c8 ignore next */\nexport const decodeUtf8 = utf8TextDecoder ? _decodeUtf8Native : _decodeUtf8Polyfill\n\n/**\n * @param {string} str The initial string\n * @param {number} index Starting position\n * @param {number} remove Number of characters to remove\n * @param {string} insert New content to insert\n */\nexport const splice = (str, index, remove, insert = '') => str.slice(0, index) + insert + str.slice(index + remove)\n\n/**\n * @param {string} source\n * @param {number} n\n */\nexport const repeat = (source, n) => array.unfold(n, () => source).join('')\n","/**\n * Efficient schema-less binary encoding with support for variable length encoding.\n *\n * Use [lib0/encoding] with [lib0/decoding]. Every encoding function has a corresponding decoding function.\n *\n * Encodes numbers in little-endian order (least to most significant byte order)\n * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)\n * which is also used in Protocol Buffers.\n *\n * ```js\n * // encoding step\n * const encoder = encoding.createEncoder()\n * encoding.writeVarUint(encoder, 256)\n * encoding.writeVarString(encoder, 'Hello world!')\n * const buf = encoding.toUint8Array(encoder)\n * ```\n *\n * ```js\n * // decoding step\n * const decoder = decoding.createDecoder(buf)\n * decoding.readVarUint(decoder) // => 256\n * decoding.readVarString(decoder) // => 'Hello world!'\n * decoding.hasContent(decoder) // => false - all data is read\n * ```\n *\n * @module encoding\n */\n\nimport * as math from './math.js'\nimport * as number from './number.js'\nimport * as binary from './binary.js'\nimport * as string from './string.js'\nimport * as array from './array.js'\n\n/**\n * A BinaryEncoder handles the encoding to an Uint8Array.\n */\nexport class Encoder {\n constructor () {\n this.cpos = 0\n this.cbuf = new Uint8Array(100)\n /**\n * @type {Array<Uint8Array>}\n */\n this.bufs = []\n }\n}\n\n/**\n * @function\n * @return {Encoder}\n */\nexport const createEncoder = () => new Encoder()\n\n/**\n * @param {function(Encoder):void} f\n */\nexport const encode = (f) => {\n const encoder = createEncoder()\n f(encoder)\n return toUint8Array(encoder)\n}\n\n/**\n * The current length of the encoded data.\n *\n * @function\n * @param {Encoder} encoder\n * @return {number}\n */\nexport const length = encoder => {\n let len = encoder.cpos\n for (let i = 0; i < encoder.bufs.length; i++) {\n len += encoder.bufs[i].length\n }\n return len\n}\n\n/**\n * Check whether encoder is empty.\n *\n * @function\n * @param {Encoder} encoder\n * @return {boolean}\n */\nexport const hasContent = encoder => encoder.cpos > 0 || encoder.bufs.length > 0\n\n/**\n * Transform to Uint8Array.\n *\n * @function\n * @param {Encoder} encoder\n * @return {Uint8Array} The created ArrayBuffer.\n */\nexport const toUint8Array = encoder => {\n const uint8arr = new Uint8Array(length(encoder))\n let curPos = 0\n for (let i = 0; i < encoder.bufs.length; i++) {\n const d = encoder.bufs[i]\n uint8arr.set(d, curPos)\n curPos += d.length\n }\n uint8arr.set(new Uint8Array(encoder.cbuf.buffer, 0, encoder.cpos), curPos)\n return uint8arr\n}\n\n/**\n * Verify that it is possible to write `len` bytes wtihout checking. If\n * necessary, a new Buffer with the required length is attached.\n *\n * @param {Encoder} encoder\n * @param {number} len\n */\nexport const verifyLen = (encoder, len) => {\n const bufferLen = encoder.cbuf.length\n if (bufferLen - encoder.cpos < len) {\n encoder.bufs.push(new Uint8Array(encoder.cbuf.buffer, 0, encoder.cpos))\n encoder.cbuf = new Uint8Array(math.max(bufferLen, len) * 2)\n encoder.cpos = 0\n }\n}\n\n/**\n * Write one byte to the encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The byte that is to be encoded.\n */\nexport const write = (encoder, num) => {\n const bufferLen = encoder.cbuf.length\n if (encoder.cpos === bufferLen) {\n encoder.bufs.push(encoder.cbuf)\n encoder.cbuf = new Uint8Array(bufferLen * 2)\n encoder.cpos = 0\n }\n encoder.cbuf[encoder.cpos++] = num\n}\n\n/**\n * Write one byte at a specific position.\n * Position must already be written (i.e. encoder.length > pos)\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos Position to which to write data\n * @param {number} num Unsigned 8-bit integer\n */\nexport const set = (encoder, pos, num) => {\n let buffer = null\n // iterate all buffers and adjust position\n for (let i = 0; i < encoder.bufs.length && buffer === null; i++) {\n const b = encoder.bufs[i]\n if (pos < b.length) {\n buffer = b // found buffer\n } else {\n pos -= b.length\n }\n }\n if (buffer === null) {\n // use current buffer\n buffer = encoder.cbuf\n }\n buffer[pos] = num\n}\n\n/**\n * Write one byte as an unsigned integer.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint8 = write\n\n/**\n * Write one byte as an unsigned Integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint8 = set\n\n/**\n * Write two bytes as an unsigned integer.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint16 = (encoder, num) => {\n write(encoder, num & binary.BITS8)\n write(encoder, (num >>> 8) & binary.BITS8)\n}\n/**\n * Write two bytes as an unsigned integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint16 = (encoder, pos, num) => {\n set(encoder, pos, num & binary.BITS8)\n set(encoder, pos + 1, (num >>> 8) & binary.BITS8)\n}\n\n/**\n * Write two bytes as an unsigned integer\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint32 = (encoder, num) => {\n for (let i = 0; i < 4; i++) {\n write(encoder, num & binary.BITS8)\n num >>>= 8\n }\n}\n\n/**\n * Write two bytes as an unsigned integer in big endian order.\n * (most significant byte first)\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint32BigEndian = (encoder, num) => {\n for (let i = 3; i >= 0; i--) {\n write(encoder, (num >>> (8 * i)) & binary.BITS8)\n }\n}\n\n/**\n * Write two bytes as an unsigned integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint32 = (encoder, pos, num) => {\n for (let i = 0; i < 4; i++) {\n set(encoder, pos + i, num & binary.BITS8)\n num >>>= 8\n }\n}\n\n/**\n * Write a variable length unsigned integer. Max encodable integer is 2^53.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeVarUint = (encoder, num) => {\n while (num > binary.BITS7) {\n write(encoder, binary.BIT8 | (binary.BITS7 & num))\n num = math.floor(num / 128) // shift >>> 7\n }\n write(encoder, binary.BITS7 & num)\n}\n\n/**\n * Write a variable length integer.\n *\n * We use the 7th bit instead for signaling that this is a negative number.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeVarInt = (encoder, num) => {\n const isNegative = math.isNegativeZero(num)\n if (isNegative) {\n num = -num\n }\n // |- whether to continue reading |- whether is negative |- number\n write(encoder, (num > binary.BITS6 ? binary.BIT8 : 0) | (isNegative ? binary.BIT7 : 0) | (binary.BITS6 & num))\n num = math.floor(num / 64) // shift >>> 6\n // We don't need to consider the case of num === 0 so we can use a different\n // pattern here than above.\n while (num > 0) {\n write(encoder, (num > binary.BITS7 ? binary.BIT8 : 0) | (binary.BITS7 & num))\n num = math.floor(num / 128) // shift >>> 7\n }\n}\n\n/**\n * A cache to store strings temporarily\n */\nconst _strBuffer = new Uint8Array(30000)\nconst _maxStrBSize = _strBuffer.length / 3\n\n/**\n * Write a variable length string.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\nexport const _writeVarStringNative = (encoder, str) => {\n if (str.length < _maxStrBSize) {\n // We can encode the string into the existing buffer\n /* c8 ignore next */\n const written = string.utf8TextEncoder.encodeInto(str, _strBuffer).written || 0\n writeVarUint(encoder, written)\n for (let i = 0; i < written; i++) {\n write(encoder, _strBuffer[i])\n }\n } else {\n writeVarUint8Array(encoder, string.encodeUtf8(str))\n }\n}\n\n/**\n * Write a variable length string.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\nexport const _writeVarStringPolyfill = (encoder, str) => {\n const encodedString = unescape(encodeURIComponent(str))\n const len = encodedString.length\n writeVarUint(encoder, len)\n for (let i = 0; i < len; i++) {\n write(encoder, /** @type {number} */ (encodedString.codePointAt(i)))\n }\n}\n\n/**\n * Write a variable length string.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\n/* c8 ignore next */\nexport const writeVarString = (string.utf8TextEncoder && /** @type {any} */ (string.utf8TextEncoder).encodeInto) ? _writeVarStringNative : _writeVarStringPolyfill\n\n/**\n * Write a string terminated by a special byte sequence. This is not very performant and is\n * generally discouraged. However, the resulting byte arrays are lexiographically ordered which\n * makes this a nice feature for databases.\n *\n * The string will be encoded using utf8 and then terminated and escaped using writeTerminatingUint8Array.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\nexport const writeTerminatedString = (encoder, str) =>\n writeTerminatedUint8Array(encoder, string.encodeUtf8(str))\n\n/**\n * Write a terminating Uint8Array. Note that this is not performant and is generally\n * discouraged. There are few situations when this is needed.\n *\n * We use 0x0 as a terminating character. 0x1 serves as an escape character for 0x0 and 0x1.\n *\n * Example: [0,1,2] is encoded to [1,0,1,1,2,0]. 0x0, and 0x1 needed to be escaped using 0x1. Then\n * the result is terminated using the 0x0 character.\n *\n * This is basically how many systems implement null terminated strings. However, we use an escape\n * character 0x1 to avoid issues and potenial attacks on our database (if this is used as a key\n * encoder for NoSql databases).\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} buf The string that is to be encoded.\n */\nexport const writeTerminatedUint8Array = (encoder, buf) => {\n for (let i = 0; i < buf.length; i++) {\n const b = buf[i]\n if (b === 0 || b === 1) {\n write(encoder, 1)\n }\n write(encoder, buf[i])\n }\n write(encoder, 0)\n}\n\n/**\n * Write the content of another Encoder.\n *\n * @TODO: can be improved!\n * - Note: Should consider that when appending a lot of small Encoders, we should rather clone than referencing the old structure.\n * Encoders start with a rather big initial buffer.\n *\n * @function\n * @param {Encoder} encoder The enUint8Arr\n * @param {Encoder} append The BinaryEncoder to be written.\n */\nexport const writeBinaryEncoder = (encoder, append) => writeUint8Array(encoder, toUint8Array(append))\n\n/**\n * Append fixed-length Uint8Array to the encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} uint8Array\n */\nexport const writeUint8Array = (encoder, uint8Array) => {\n const bufferLen = encoder.cbuf.length\n const cpos = encoder.cpos\n const leftCopyLen = math.min(bufferLen - cpos, uint8Array.length)\n const rightCopyLen = uint8Array.length - leftCopyLen\n encoder.cbuf.set(uint8Array.subarray(0, leftCopyLen), cpos)\n encoder.cpos += leftCopyLen\n if (rightCopyLen > 0) {\n // Still something to write, write right half..\n // Append new buffer\n encoder.bufs.push(encoder.cbuf)\n // must have at least size of remaining buffer\n encoder.cbuf = new Uint8Array(math.max(bufferLen * 2, rightCopyLen))\n // copy array\n encoder.cbuf.set(uint8Array.subarray(leftCopyLen))\n encoder.cpos = rightCopyLen\n }\n}\n\n/**\n * Append an Uint8Array to Encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} uint8Array\n */\nexport const writeVarUint8Array = (encoder, uint8Array) => {\n writeVarUint(encoder, uint8Array.byteLength)\n writeUint8Array(encoder, uint8Array)\n}\n\n/**\n * Create an DataView of the next `len` bytes. Use it to write data after\n * calling this function.\n *\n * ```js\n * // write float32 using DataView\n * const dv = writeOnDataView(encoder, 4)\n * dv.setFloat32(0, 1.1)\n * // read float32 using DataView\n * const dv = readFromDataView(encoder, 4)\n * dv.getFloat32(0) // => 1.100000023841858 (leaving it to the reader to find out why this is the correct result)\n * ```\n *\n * @param {Encoder} encoder\n * @param {number} len\n * @return {DataView}\n */\nexport const writeOnDataView = (encoder, len) => {\n verifyLen(encoder, len)\n const dview = new DataView(encoder.cbuf.buffer, encoder.cpos, len)\n encoder.cpos += len\n return dview\n}\n\n/**\n * @param {Encoder} encoder\n * @param {number} num\n */\nexport const writeFloat32 = (encoder, num) => writeOnDataView(encoder, 4).setFloat32(0, num, false)\n\n/**\n * @param {Encoder} encoder\n * @param {number} num\n */\nexport const writeFloat64 = (encoder, num) => writeOnDataView(encoder, 8).setFloat64(0, num, false)\n\n/**\n * @param {Encoder} encoder\n * @param {bigint} num\n */\nexport const writeBigInt64 = (encoder, num) => /** @type {any} */ (writeOnDataView(encoder, 8)).setBigInt64(0, num, false)\n\n/**\n * @param {Encoder} encoder\n * @param {bigint} num\n */\nexport const writeBigUint64 = (encoder, num) => /** @type {any} */ (writeOnDataView(encoder, 8)).setBigUint64(0, num, false)\n\nconst floatTestBed = new DataView(new ArrayBuffer(4))\n/**\n * Check if a number can be encoded as a 32 bit float.\n *\n * @param {number} num\n * @return {boolean}\n */\nconst isFloat32 = num => {\n floatTestBed.setFloat32(0, num)\n return floatTestBed.getFloat32(0) === num\n}\n\n/**\n * Encode data with efficient binary format.\n *\n * Differences to JSON:\n * • Transforms data to a binary format (not to a string)\n * • Encodes undefined, NaN, and ArrayBuffer (these can't be represented in JSON)\n * • Numbers are efficiently encoded either as a variable length integer, as a\n * 32 bit float, as a 64 bit float, or as a 64 bit bigint.\n *\n * Encoding table:\n *\n * | Data Type | Prefix | Encoding Method | Comment |\n * | ------------------- | -------- | ------------------ | ------- |\n * | undefined | 127 | | Functions, symbol, and everything that cannot be identified is encoded as undefined |\n * | null | 126 | | |\n * | integer | 125 | writeVarInt | Only encodes 32 bit signed integers |\n * | float32 | 124 | writeFloat32 | |\n * | float64 | 123 | writeFloat64 | |\n * | bigint | 122 | writeBigInt64 | |\n * | boolean (false) | 121 | | True and false are different data types so we save the following byte |\n * | boolean (true) | 120 | | - 0b01111000 so the last bit determines whether true or false |\n * | string | 119 | writeVarString | |\n * | object<string,any> | 118 | custom | Writes {length} then {length} key-value pairs |\n * | array<any> | 117 | custom | Writes {length} then {length} json values |\n * | Uint8Array | 116 | writeVarUint8Array | We use Uint8Array for any kind of binary data |\n *\n * Reasons for the decreasing prefix:\n * We need the first bit for extendability (later we may want to encode the\n * prefix with writeVarUint). The remaining 7 bits are divided as follows:\n * [0-30] the beginning of the data range is used for custom purposes\n * (defined by the function that uses this library)\n * [31-127] the end of the data range is used for data encoding by\n * lib0/encoding.js\n *\n * @param {Encoder} encoder\n * @param {undefined|null|number|bigint|boolean|string|Object<string,any>|Array<any>|Uint8Array} data\n */\nexport const writeAny = (encoder, data) => {\n switch (typeof data) {\n case 'string':\n // TYPE 119: STRING\n write(encoder, 119)\n writeVarString(encoder, data)\n break\n case 'number':\n if (number.isInteger(data) && math.abs(data) <= binary.BITS31) {\n // TYPE 125: INTEGER\n write(encoder, 125)\n writeVarInt(encoder, data)\n } else if (isFloat32(data)) {\n // TYPE 124: FLOAT32\n write(encoder, 124)\n writeFloat32(encoder, data)\n } else {\n // TYPE 123: FLOAT64\n write(encoder, 123)\n writeFloat64(encoder, data)\n }\n break\n case 'bigint':\n // TYPE 122: BigInt\n write(encoder, 122)\n writeBigInt64(encoder, data)\n break\n case 'object':\n if (data === null) {\n // TYPE 126: null\n write(encoder, 126)\n } else if (array.isArray(data)) {\n // TYPE 117: Array\n write(encoder, 117)\n writeVarUint(encoder, data.length)\n for (let i = 0; i < data.length; i++) {\n writeAny(encoder, data[i])\n }\n } else if (data instanceof Uint8Array) {\n // TYPE 116: ArrayBuffer\n write(encoder, 116)\n writeVarUint8Array(encoder, data)\n } else {\n // TYPE 118: Object\n write(encoder, 118)\n const keys = Object.keys(data)\n writeVarUint(encoder, keys.length)\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n writeVarString(encoder, key)\n writeAny(encoder, data[key])\n }\n }\n break\n case 'boolean':\n // TYPE 120/121: boolean (true/false)\n write(encoder, data ? 120 : 121)\n break\n default:\n // TYPE 127: undefined\n write(encoder, 127)\n }\n}\n\n/**\n * Now come a few stateful encoder that have their own classes.\n */\n\n/**\n * Basic Run Length Encoder - a basic compression implementation.\n *\n * Encodes [1,1,1,7] to [1,3,7,1] (3 times 1, 1 time 7). This encoder might do more harm than good if there are a lot of values that are not repeated.\n *\n * It was originally used for image compression. Cool .. article http://csbruce.com/cbm/transactor/pdfs/trans_v7_i06.pdf\n *\n * @note T must not be null!\n *\n * @template T\n */\nexport class RleEncoder extends Encoder {\n /**\n * @param {function(Encoder, T):void} writer\n */\n constructor (writer) {\n super()\n /**\n * The writer\n */\n this.w = writer\n /**\n * Current state\n * @type {T|null}\n */\n this.s = null\n this.count = 0\n }\n\n /**\n * @param {T} v\n */\n write (v) {\n if (this.s === v) {\n this.count++\n } else {\n if (this.count > 0) {\n // flush counter, unless this is the first value (count = 0)\n writeVarUint(this, this.count - 1) // since count is always > 0, we can decrement by one. non-standard encoding ftw\n }\n this.count = 1\n // write first value\n this.w(this, v)\n this.s = v\n }\n }\n}\n\n/**\n * Basic diff decoder using variable length encoding.\n *\n * Encodes the values [3, 1100, 1101, 1050, 0] to [3, 1097, 1, -51, -1050] using writeVarInt.\n */\nexport class IntDiffEncoder extends Encoder {\n /**\n * @param {number} start\n */\n constructor (start) {\n super()\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n writeVarInt(this, v - this.s)\n this.s = v\n }\n}\n\n/**\n * A combination of IntDiffEncoder and RleEncoder.\n *\n * Basically first writes the IntDiffEncoder and then counts duplicate diffs using RleEncoding.\n *\n * Encodes the values [1,1,1,2,3,4,5,6] as [1,1,0,2,1,5] (RLE([1,0,0,1,1,1,1,1]) ⇒ RleIntDiff[1,1,0,2,1,5])\n */\nexport class RleIntDiffEncoder extends Encoder {\n /**\n * @param {number} start\n */\n constructor (start) {\n super()\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n this.count = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.s === v && this.count > 0) {\n this.count++\n } else {\n if (this.count > 0) {\n // flush counter, unless this is the first value (count = 0)\n writeVarUint(this, this.count - 1) // since count is always > 0, we can decrement by one. non-standard encoding ftw\n }\n this.count = 1\n // write first value\n writeVarInt(this, v - this.s)\n this.s = v\n }\n }\n}\n\n/**\n * @param {UintOptRleEncoder} encoder\n */\nconst flushUintOptRleEncoder = encoder => {\n if (encoder.count > 0) {\n // flush counter, unless this is the first value (count = 0)\n // case 1: just a single value. set sign to positive\n // case 2: write several values. set sign to negative to indicate that there is a length coming\n writeVarInt(encoder.encoder, encoder.count === 1 ? encoder.s : -encoder.s)\n if (encoder.count > 1) {\n writeVarUint(encoder.encoder, encoder.count - 2) // since count is always > 1, we can decrement by one. non-standard encoding ftw\n }\n }\n}\n\n/**\n * Optimized Rle encoder that does not suffer from the mentioned problem of the basic Rle encoder.\n *\n * Internally uses VarInt encoder to write unsigned integers. If the input occurs multiple times, we write\n * write it as a negative number. The UintOptRleDecoder then understands that it needs to read a count.\n *\n * Encodes [1,2,3,3,3] as [1,2,-3,3] (once 1, once 2, three times 3)\n */\nexport class UintOptRleEncoder {\n constructor () {\n this.encoder = new Encoder()\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.s === v) {\n this.count++\n } else {\n flushUintOptRleEncoder(this)\n this.count = 1\n this.s = v\n }\n }\n\n /**\n * Flush the encoded state and transform this to a Uint8Array.\n *\n * Note that this should only be called once.\n */\n toUint8Array () {\n flushUintOptRleEncoder(this)\n return toUint8Array(this.encoder)\n }\n}\n\n/**\n * Increasing Uint Optimized RLE Encoder\n *\n * The RLE encoder counts the number of same occurences of the same value.\n * The IncUintOptRle encoder counts if the value increases.\n * I.e. 7, 8, 9, 10 will be encoded as [-7, 4]. 1, 3, 5 will be encoded\n * as [1, 3, 5].\n */\nexport class IncUintOptRleEncoder {\n constructor () {\n this.encoder = new Encoder()\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.s + this.count === v) {\n this.count++\n } else {\n flushUintOptRleEncoder(this)\n this.count = 1\n this.s = v\n }\n }\n\n /**\n * Flush the encoded state and transform this to a Uint8Array.\n *\n * Note that this should only be called once.\n */\n toUint8Array () {\n flushUintOptRleEncoder(this)\n return toUint8Array(this.encoder)\n }\n}\n\n/**\n * @param {IntDiffOptRleEncoder} encoder\n */\nconst flushIntDiffOptRleEncoder = encoder => {\n if (encoder.count > 0) {\n // 31 bit making up the diff | wether to write the counter\n // const encodedDiff = encoder.diff << 1 | (encoder.count === 1 ? 0 : 1)\n const encodedDiff = encoder.diff * 2 + (encoder.count === 1 ? 0 : 1)\n // flush counter, unless this is the first value (count = 0)\n // case 1: just a single value. set first bit to positive\n // case 2: write several values. set first bit to negative to indicate that there is a length coming\n writeVarInt(encoder.encoder, encodedDiff)\n if (encoder.count > 1) {\n writeVarUint(encoder.encoder, encoder.count - 2) // since count is always > 1, we can decrement by one. non-standard encoding ftw\n }\n }\n}\n\n/**\n * A combination of the IntDiffEncoder and the UintOptRleEncoder.\n *\n * The count approach is similar to the UintDiffOptRleEncoder, but instead of using the negative bitflag, it encodes\n * in the LSB whether a count is to be read. Therefore this Encoder only supports 31 bit integers!\n *\n * Encodes [1, 2, 3, 2] as [3, 1, 6, -1] (more specifically [(1 << 1) | 1, (3 << 0) | 0, -1])\n *\n * Internally uses variable length encoding. Contrary to normal UintVar encoding, the first byte contains:\n * * 1 bit that denotes whether the next value is a count (LSB)\n * * 1 bit that denotes whether this value is negative (MSB - 1)\n * * 1 bit that denotes whether to continue reading the variable length integer (MSB)\n *\n * Therefore, only five bits remain to encode diff ranges.\n *\n * Use this Encoder only when appropriate. In most cases, this is probably a bad idea.\n */\nexport class IntDiffOptRleEncoder {\n constructor () {\n this.encoder = new Encoder()\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n this.diff = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.diff === v - this.s) {\n this.s = v\n this.count++\n } else {\n flushIntDiffOptRleEncoder(this)\n this.count = 1\n this.diff = v - this.s\n this.s = v\n }\n }\n\n /**\n * Flush the encoded state and transform this to a Uint8Array.\n *\n * Note that this should only be called once.\n */\n toUint8Array () {\n flushIntDiffOptRleEncoder(this)\n return toUint8Array(this.encoder)\n }\n}\n\n/**\n * Optimized String Encoder.\n *\n * Encoding many small strings in a simple Encoder is not very efficient. The function call to decode a string takes some time and creates references that must be eventually deleted.\n * In practice, when decoding several million small strings, the GC will kick in more and more often to collect orphaned string objects (or maybe there is another reason?).\n *\n * This string encoder solves the above problem. All strings are concatenated and written as a single string using a single encoding call.\n *\n * The lengths are encoded using a UintOptRleEncoder.\n */\nexport class StringEncoder {\n constructor () {\n /**\n * @type {Array<string>}\n */\n this.sarr = []\n this.s = ''\n this.lensE = new UintOptRleEncoder()\n }\n\n /**\n * @param {string} string\n */\n write (string) {\n this.s += string\n if (this.s.length > 19) {\n this.sarr.push(this.s)\n this.s = ''\n }\n this.lensE.write(string.length)\n }\n\n toUint8Array () {\n const encoder = new Encoder()\n this.sarr.push(this.s)\n this.s = ''\n writeVarString(encoder, this.sarr.join(''))\n writeUint8Array(encoder, this.lensE.toUint8Array())\n return toUint8Array(encoder)\n }\n}\n","/**\n * Error helpers.\n *\n * @module error\n */\n\n/**\n * @param {string} s\n * @return {Error}\n */\n/* c8 ignore next */\nexport const create = s => new Error(s)\n\n/**\n * @throws {Error}\n * @return {never}\n */\n/* c8 ignore next 3 */\nexport const methodUnimplemented = () => {\n throw create('Method unimplemented')\n}\n\n/**\n * @throws {Error}\n * @return {never}\n */\n/* c8 ignore next 3 */\nexport const unexpectedCase = () => {\n throw create('Unexpected case')\n}\n","/**\n * Efficient schema-less binary decoding with support for variable length encoding.\n *\n * Use [lib0/decoding] with [lib0/encoding]. Every encoding function has a corresponding decoding function.\n *\n * Encodes numbers in little-endian order (least to most significant byte order)\n * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)\n * which is also used in Protocol Buffers.\n *\n * ```js\n * // encoding step\n * const encoder = encoding.createEncoder()\n * encoding.writeVarUint(encoder, 256)\n * encoding.writeVarString(encoder, 'Hello world!')\n * const buf = encoding.toUint8Array(encoder)\n * ```\n *\n * ```js\n * // decoding step\n * const decoder = decoding.createDecoder(buf)\n * decoding.readVarUint(decoder) // => 256\n * decoding.readVarString(decoder) // => 'Hello world!'\n * decoding.hasContent(decoder) // => false - all data is read\n * ```\n *\n * @module decoding\n */\n\nimport * as binary from './binary.js'\nimport * as math from './math.js'\nimport * as number from './number.js'\nimport * as string from './string.js'\nimport * as error from './error.js'\nimport * as encoding from './encoding.js'\n\nconst errorUnexpectedEndOfArray = error.create('Unexpected end of array')\nconst errorIntegerOutOfRange = error.create('Integer out of Range')\n\n/**\n * A Decoder handles the decoding of an Uint8Array.\n */\nexport class Decoder {\n /**\n * @param {Uint8Array} uint8Array Binary data to decode\n */\n constructor (uint8Array) {\n /**\n * Decoding target.\n *\n * @type {Uint8Array}\n */\n this.arr = uint8Array\n /**\n * Current decoding position.\n *\n * @type {number}\n */\n this.pos = 0\n }\n}\n\n/**\n * @function\n * @param {Uint8Array} uint8Array\n * @return {Decoder}\n */\nexport const createDecoder = uint8Array => new Decoder(uint8Array)\n\n/**\n * @function\n * @param {Decoder} decoder\n * @return {boolean}\n */\nexport const hasContent = decoder => decoder.pos !== decoder.arr.length\n\n/**\n * Clone a decoder instance.\n * Optionally set a new position parameter.\n *\n * @function\n * @param {Decoder} decoder The decoder instance\n * @param {number} [newPos] Defaults to current position\n * @return {Decoder} A clone of `decoder`\n */\nexport const clone = (decoder, newPos = decoder.pos) => {\n const _decoder = createDecoder(decoder.arr)\n _decoder.pos = newPos\n return _decoder\n}\n\n/**\n * Create an Uint8Array view of the next `len` bytes and advance the position by `len`.\n *\n * Important: The Uint8Array still points to the underlying ArrayBuffer. Make sure to discard the result as soon as possible to prevent any memory leaks.\n * Use `buffer.copyUint8Array` to copy the result into a new Uint8Array.\n *\n * @function\n * @param {Decoder} decoder The decoder instance\n * @param {number} len The length of bytes to read\n * @return {Uint8Array}\n */\nexport const readUint8Array = (decoder, len) => {\n const view = new Uint8Array(decoder.arr.buffer, decoder.pos + decoder.arr.byteOffset, len)\n decoder.pos += len\n return view\n}\n\n/**\n * Read variable length Uint8Array.\n *\n * Important: The Uint8Array still points to the underlying ArrayBuffer. Make sure to discard the result as soon as possible to prevent any memory leaks.\n * Use `buffer.copyUint8Array` to copy the result into a new Uint8Array.\n *\n * @function\n * @param {Decoder} decoder\n * @return {Uint8Array}\n */\nexport const readVarUint8Array = decoder => readUint8Array(decoder, readVarUint(decoder))\n\n/**\n * Read the rest of the content as an ArrayBuffer\n * @function\n * @param {Decoder} decoder\n * @return {Uint8Array}\n */\nexport const readTailAsUint8Array = decoder => readUint8Array(decoder, decoder.arr.length - decoder.pos)\n\n/**\n * Skip one byte, jump to the next position.\n * @function\n * @param {Decoder} decoder The decoder instance\n * @return {number} The next position\n */\nexport const skip8 = decoder => decoder.pos++\n\n/**\n * Read one byte as unsigned integer.\n * @function\n * @param {Decoder} decoder The decoder instance\n * @return {number} Unsigned 8-bit integer\n */\nexport const readUint8 = decoder => decoder.arr[decoder.pos++]\n\n/**\n * Read 2 bytes as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const readUint16 = decoder => {\n const uint =\n decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8)\n decoder.pos += 2\n return uint\n}\n\n/**\n * Read 4 bytes as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const readUint32 = decoder => {\n const uint =\n (decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8) +\n (decoder.arr[decoder.pos + 2] << 16) +\n (decoder.arr[decoder.pos + 3] << 24)) >>> 0\n decoder.pos += 4\n return uint\n}\n\n/**\n * Read 4 bytes as unsigned integer in big endian order.\n * (most significant byte first)\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const readUint32BigEndian = decoder => {\n const uint =\n (decoder.arr[decoder.pos + 3] +\n (decoder.arr[decoder.pos + 2] << 8) +\n (decoder.arr[decoder.pos + 1] << 16) +\n (decoder.arr[decoder.pos] << 24)) >>> 0\n decoder.pos += 4\n return uint\n}\n\n/**\n * Look ahead without incrementing the position\n * to the next byte and read it as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const peekUint8 = decoder => decoder.arr[decoder.pos]\n\n/**\n * Look ahead without incrementing the position\n * to the next byte and read it as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const peekUint16 = decoder =>\n decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8)\n\n/**\n * Look ahead without incrementing the position\n * to the next byte and read it as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const peekUint32 = decoder => (\n decoder.arr[decoder.pos] +\n (decoder.arr[decoder.pos + 1] << 8) +\n (decoder.arr[decoder.pos + 2] << 16) +\n (decoder.arr[decoder.pos + 3] << 24)\n) >>> 0\n\n/**\n * Read unsigned integer (32bit) with variable length.\n * 1/8th of the storage is used as encoding overhead.\n * * numbers < 2^7 is stored in one bytlength\n * * numbers < 2^14 is stored in two bylength\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.length\n */\nexport const readVarUint = decoder => {\n let num = 0\n let mult = 1\n const len = decoder.arr.length\n while (decoder.pos < len) {\n const r = decoder.arr[decoder.pos++]\n // num = num | ((r & binary.BITS7) << len)\n num = num + (r & binary.BITS7) * mult // shift $r << (7*#iterations) and add it to num\n mult *= 128 // next iteration, shift 7 \"more\" to the left\n if (r < binary.BIT8) {\n return num\n }\n /* c8 ignore start */\n if (num > number.MAX_SAFE_INTEGER) {\n throw errorIntegerOutOfRange\n }\n /* c8 ignore stop */\n }\n throw errorUnexpectedEndOfArray\n}\n\n/**\n * Read signed integer (32bit) with variable length.\n * 1/8th of the storage is used as encoding overhead.\n * * numbers < 2^7 is stored in one bytlength\n * * numbers < 2^14 is stored in two bylength\n * @todo This should probably create the inverse ~num if number is negative - but this would be a breaking change.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.length\n */\nexport const readVarInt = decoder => {\n let r = decoder.arr[decoder.pos++]\n let num = r & binary.BITS6\n let mult = 64\n const sign = (r & binary.BIT7) > 0 ? -1 : 1\n if ((r & binary.BIT8) === 0) {\n // don't continue reading\n return sign * num\n }\n const len = decoder.arr.length\n while (decoder.pos < len) {\n r = decoder.arr[decoder.pos++]\n // num = num | ((r & binary.BITS7) << len)\n num = num + (r & binary.BITS7) * mult\n mult *= 128\n if (r < binary.BIT8) {\n return sign * num\n }\n /* c8 ignore start */\n if (num > number.MAX_SAFE_INTEGER) {\n throw errorIntegerOutOfRange\n }\n /* c8 ignore stop */\n }\n throw errorUnexpectedEndOfArray\n}\n\n/**\n * Look ahead and read varUint without incrementing position\n *\n * @function\n * @param {Decoder} decoder\n * @return {number}\n */\nexport const peekVarUint = decoder => {\n const pos = decoder.pos\n const s = readVarUint(decoder)\n decoder.pos = pos\n return s\n}\n\n/**\n * Look ahead and read varUint without incrementing position\n *\n * @function\n * @param {Decoder} decoder\n * @return {number}\n */\nexport const peekVarInt = decoder => {\n const pos = decoder.pos\n const s = readVarInt(decoder)\n decoder.pos = pos\n return s\n}\n\n/**\n * We don't test this function anymore as we use native decoding/encoding by default now.\n * Better not modify this anymore..\n *\n * Transforming utf8 to a string is pretty expensive. The code performs 10x better\n * when String.fromCodePoint is fed with all characters as arguments.\n * But most environments have a maximum number of arguments per functions.\n * For effiency reasons we apply a maximum of 10000 characters at once.\n *\n * @function\n * @param {Decoder} decoder\n * @return {String} The read String.\n */\n/* c8 ignore start */\nexport const _readVarStringPolyfill = decoder => {\n let remainingLen = readVarUint(decoder)\n if (remainingLen === 0) {\n return ''\n } else {\n let encodedString = String.fromCodePoint(readUint8(decoder)) // remember to decrease remainingLen\n if (--remainingLen < 100) { // do not create a Uint8Array for small strings\n while (remainingLen--) {\n encodedString += String.fromCodePoint(readUint8(decoder))\n }\n } else {\n while (remainingLen > 0) {\n const nextLen = remainingLen < 10000 ? remainingLen : 10000\n // this is dangerous, we create a fresh array view from the existing buffer\n const bytes = decoder.arr.subarray(decoder.pos, decoder.pos + nextLen)\n decoder.pos += nextLen\n // Starting with ES5.1 we can supply a generic array-like object as arguments\n encodedString += String.fromCodePoint.apply(null, /** @type {any} */ (bytes))\n remainingLen -= nextLen\n }\n }\n return decodeURIComponent(escape(encodedString))\n }\n}\n/* c8 ignore stop */\n\n/**\n * @function\n * @param {Decoder} decoder\n * @return {String} The read String\n */\nexport const _readVarStringNative = decoder =>\n /** @type any */ (string.utf8TextDecoder).decode(readVarUint8Array(decoder))\n\n/**\n * Read string of variable length\n * * varUint is used to store the length of the string\n *\n * @function\n * @param {Decoder} decoder\n * @return {String} The read String\n *\n */\n/* c8 ignore next */\nexport const readVarString = string.utf8TextDecoder ? _readVarStringNative : _readVarStringPolyfill\n\n/**\n * @param {Decoder} decoder\n * @return {Uint8Array}\n */\nexport const readTerminatedUint8Array = decoder => {\n const encoder = encoding.createEncoder()\n let b\n while (true) {\n b = readUint8(decoder)\n if (b === 0) {\n return encoding.toUint8Array(encoder)\n }\n if (b === 1) {\n b = readUint8(decoder)\n }\n encoding.write(encoder, b)\n }\n}\n\n/**\n * @param {Decoder} decoder\n * @return {string}\n */\nexport const readTerminatedString = decoder => string.decodeUtf8(readTerminatedUint8Array(decoder))\n\n/**\n * Look ahead and read varString without incrementing position\n *\n * @function\n * @param {Decoder} decoder\n * @return {string}\n */\nexport const peekVarString = decoder => {\n const pos = decoder.pos\n const s = readVarString(decoder)\n decoder.pos = pos\n return s\n}\n\n/**\n * @param {Decoder} decoder\n * @param {number} len\n * @return {DataView}\n */\nexport const readFromDataView = (decoder, len) => {\n const dv = new DataView(decoder.arr.buffer, decoder.arr.byteOffset + decoder.pos, len)\n decoder.pos += len\n return dv\n}\n\n/**\n * @param {Decoder} decoder\n */\nexport const readFloat32 = decoder => readFromDataView(decoder, 4).getFloat32(0, false)\n\n/**\n * @param {Decoder} decoder\n */\nexport const readFloat64 = decoder => readFromDataView(decoder, 8).getFloat64(0, false)\n\n/**\n * @param {Decoder} decoder\n */\nexport const readBigInt64 = decoder => /** @type {any} */ (readFromDataView(decoder, 8)).getBigInt64(0, false)\n\n/**\n * @param {Decoder} decoder\n */\nexport const readBigUint64 = decoder => /** @type {any} */ (readFromDataView(decoder, 8)).getBigUint64(0, false)\n\n/**\n * @type {Array<function(Decoder):any>}\n */\nconst readAnyLookupTable = [\n decoder => undefined, // CASE 127: undefined\n decoder => null, // CASE 126: null\n readVarInt, // CASE 125: integer\n readFloat32, // CASE 124: float32\n readFloat64, // CASE 123: float64\n readBigInt64, // CASE 122: bigint\n decoder => false, // CASE 121: boolean (false)\n decoder => true, // CASE 120: boolean (true)\n readVarString, // CASE 119: string\n decoder => { // CASE 118: object<string,any>\n const len = readVarUint(decoder)\n /**\n * @type {Object<string,any>}\n */\n const obj = {}\n for (let i = 0; i < len; i++) {\n const key = readVarString(decoder)\n obj[key] = readAny(decoder)\n }\n return obj\n },\n decoder => { // CASE 117: array<any>\n const len = readVarUint(decoder)\n const arr = []\n for (let i = 0; i < len; i++) {\n arr.push(readAny(decoder))\n }\n return arr\n },\n readVarUint8Array // CASE 116: Uint8Array\n]\n\n/**\n * @param {Decoder} decoder\n */\nexport const readAny = decoder => readAnyLookupTable[127 - readUint8(decoder)](decoder)\n\n/**\n * T must not be null.\n *\n * @template T\n */\nexport class RleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n * @param {function(Decoder):T} reader\n */\n constructor (uint8Array, reader) {\n super(uint8Array)\n /**\n * The reader\n */\n this.reader = reader\n /**\n * Current state\n * @type {T|null}\n */\n this.s = null\n this.count = 0\n }\n\n read () {\n if (this.count === 0) {\n this.s = this.reader(this)\n if (hasContent(this)) {\n this.count = readVarUint(this) + 1 // see encoder implementation for the reason why this is incremented\n } else {\n this.count = -1 // read the current value forever\n }\n }\n this.count--\n return /** @type {T} */ (this.s)\n }\n}\n\nexport class IntDiffDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n * @param {number} start\n */\n constructor (uint8Array, start) {\n super(uint8Array)\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n }\n\n /**\n * @return {number}\n */\n read () {\n this.s += readVarInt(this)\n return this.s\n }\n}\n\nexport class RleIntDiffDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n * @param {number} start\n */\n constructor (uint8Array, start) {\n super(uint8Array)\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n this.count = 0\n }\n\n /**\n * @return {number}\n */\n read () {\n if (this.count === 0) {\n this.s += readVarInt(this)\n if (hasContent(this)) {\n this.count = readVarUint(this) + 1 // see encoder implementation for the reason why this is incremented\n } else {\n this.count = -1 // read the current value forever\n }\n }\n this.count--\n return /** @type {number} */ (this.s)\n }\n}\n\nexport class UintOptRleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n super(uint8Array)\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n read () {\n if (this.count === 0) {\n this.s = readVarInt(this)\n // if the sign is negative, we read the count too, otherwise count is 1\n const isNegative = math.isNegativeZero(this.s)\n this.count = 1\n if (isNegative) {\n this.s = -this.s\n this.count = readVarUint(this) + 2\n }\n }\n this.count--\n return /** @type {number} */ (this.s)\n }\n}\n\nexport class IncUintOptRleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n super(uint8Array)\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n read () {\n if (this.count === 0) {\n this.s = readVarInt(this)\n // if the sign is negative, we read the count too, otherwise count is 1\n const isNegative = math.isNegativeZero(this.s)\n this.count = 1\n if (isNegative) {\n this.s = -this.s\n this.count = readVarUint(this) + 2\n }\n }\n this.count--\n return /** @type {number} */ (this.s++)\n }\n}\n\nexport class IntDiffOptRleDecoder extends Decoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n super(uint8Array)\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n this.diff = 0\n }\n\n /**\n * @return {number}\n */\n read () {\n if (this.count === 0) {\n const diff = readVarInt(this)\n // if the first bit is set, we read more data\n const hasCount = diff & 1\n this.diff = math.floor(diff / 2) // shift >> 1\n this.count = 1\n if (hasCount) {\n this.count = readVarUint(this) + 2\n }\n }\n this.s += this.diff\n this.count--\n return this.s\n }\n}\n\nexport class StringDecoder {\n /**\n * @param {Uint8Array} uint8Array\n */\n constructor (uint8Array) {\n this.decoder = new UintOptRleDecoder(uint8Array)\n this.str = readVarString(this.decoder)\n /**\n * @type {number}\n */\n this.spos = 0\n }\n\n /**\n * @return {string}\n */\n read () {\n const end = this.spos + this.decoder.read()\n const res = this.str.slice(this.spos, end)\n this.spos = end\n return res\n }\n}\n","import * as encoding from 'lib0/encoding'\nimport * as decoding from 'lib0/decoding'\n\nenum AuthMessageType {\n Token = 0,\n PermissionDenied = 1,\n Authenticated = 2,\n}\n\nexport const writeAuthentication = (encoder: encoding.Encoder, auth: string) => {\n encoding.writeVarUint(encoder, AuthMessageType.Token)\n encoding.writeVarString(encoder, auth)\n}\n\nexport const writePermissionDenied = (encoder: encoding.Encoder, reason: string) => {\n encoding.writeVarUint(encoder, AuthMessageType.PermissionDenied)\n encoding.writeVarString(encoder, reason)\n}\n\nexport const writeAuthenticated = (encoder: encoding.Encoder, scope: 'readonly' | 'read-write') => {\n encoding.writeVarUint(encoder, AuthMessageType.Authenticated)\n encoding.writeVarString(encoder, scope)\n}\n\nexport const readAuthMessage = (\n decoder: decoding.Decoder,\n permissionDeniedHandler: (reason: string) => void,\n authenticatedHandler: (scope: string) => void,\n) => {\n switch (decoding.readVarUint(decoder)) {\n case AuthMessageType.PermissionDenied: {\n permissionDeniedHandler(decoding.readVarString(decoder))\n break\n }\n case AuthMessageType.Authenticated: {\n authenticatedHandler(decoding.readVarString(decoder))\n break\n }\n default:\n }\n}\n","/**\n * State of the WebSocket connection.\n * https://developer.mozilla.org/de/docs/Web/API/WebSocket/readyState\n */\nexport enum WsReadyStates {\n Connecting = 0,\n Open = 1,\n Closing = 2,\n Closed = 3,\n}\n","import type {\n Decoder} from 'lib0/decoding'\nimport {\n createDecoder,\n readVarUint,\n readVarUint8Array,\n readVarString,\n} from 'lib0/decoding'\nimport type {\n Encoder} from 'lib0/encoding'\nimport {\n createEncoder,\n toUint8Array,\n writeVarUint,\n writeVarString,\n length,\n} from 'lib0/encoding'\nimport type { MessageType } from './types.js'\n\nexport class IncomingMessage {\n /**\n * Access to the received message.\n */\n decoder: Decoder\n\n /**\n * Private encoder; can be undefined.\n *\n * Lazy creation of the encoder speeds up IncomingMessages that need only a decoder.\n */\n private encoderInternal?: Encoder\n\n constructor(input: any) {\n if (!(input instanceof Uint8Array)) {\n input = new Uint8Array(input)\n }\n\n this.decoder = createDecoder(input)\n }\n\n get encoder() {\n if (!this.encoderInternal) {\n this.encoderInternal = createEncoder()\n }\n return this.encoderInternal\n }\n\n readVarUint8Array() {\n return readVarUint8Array(this.decoder)\n }\n\n readVarUint() {\n return readVarUint(this.decoder)\n }\n\n readVarString() {\n return readVarString(this.decoder)\n }\n\n toUint8Array() {\n return toUint8Array(this.encoder)\n }\n\n writeVarUint(type: MessageType) {\n writeVarUint(this.encoder, type)\n }\n\n writeVarString(string: string) {\n writeVarString(this.encoder, string)\n }\n\n get length(): number {\n return length(this.encoder)\n }\n}\n","/**\n * Utility module to work with time.\n *\n * @module time\n */\n\nimport * as metric from './metric.js'\nimport * as math from './math.js'\n\n/**\n * Return current time.\n *\n * @return {Date}\n */\nexport const getDate = () => new Date()\n\n/**\n * Return current unix time.\n *\n * @return {number}\n */\nexport const getUnixTime = Date.now\n\n/**\n * Transform time (in ms) to a human readable format. E.g. 1100 => 1.1s. 60s => 1min. .001 => 10μs.\n *\n * @param {number} d duration in milliseconds\n * @return {string} humanized approximation of time\n */\nexport const humanizeDuration = d => {\n if (d < 60000) {\n const p = metric.prefix(d, -1)\n return math.round(p.n * 100) / 100 + p.prefix + 's'\n }\n d = math.floor(d / 1000)\n const seconds = d % 60\n const minutes = math.floor(d / 60) % 60\n const hours = math.floor(d / 3600) % 24\n const days = math.floor(d / 86400)\n if (days > 0) {\n return days + 'd' + ((hours > 0 || minutes > 30) ? ' ' + (minutes > 30 ? hours + 1 : hours) + 'h' : '')\n }\n if (hours > 0) {\n /* c8 ignore next */\n return hours + 'h' + ((minutes > 0 || seconds > 30) ? ' ' + (seconds > 30 ? minutes + 1 : minutes) + 'min' : '')\n }\n return minutes + 'min' + (seconds > 0 ? ' ' + seconds + 's' : '')\n}\n","/**\n * Utility module to work with key-value stores.\n *\n * @module map\n */\n\n/**\n * Creates a new Map instance.\n *\n * @function\n * @return {Map<any, any>}\n *\n * @function\n */\nexport const create = () => new Map()\n\n/**\n * Copy a Map object into a fresh Map object.\n *\n * @function\n * @template K,V\n * @param {Map<K,V>} m\n * @return {Map<K,V>}\n */\nexport const copy = m => {\n const r = create()\n m.forEach((v, k) => { r.set(k, v) })\n return r\n}\n\n/**\n * Get map property. Create T if property is undefined and set T on map.\n *\n * ```js\n * const listeners = map.setIfUndefined(events, 'eventName', set.create)\n * listeners.add(listener)\n * ```\n *\n * @function\n * @template {Map<any, any>} MAP\n * @template {MAP extends Map<any,infer V> ? function():V : unknown} CF\n * @param {MAP} map\n * @param {MAP extends Map<infer K,any> ? K : unknown} key\n * @param {CF} createT\n * @return {ReturnType<CF>}\n */\nexport const setIfUndefined = (map, key, createT) => {\n let set = map.get(key)\n if (set === undefined) {\n map.set(key, set = createT())\n }\n return set\n}\n\n/**\n * Creates an Array and populates it with the content of all key-value pairs using the `f(value, key)` function.\n *\n * @function\n * @template K\n * @template V\n * @template R\n * @param {Map<K,V>} m\n * @param {function(V,K):R} f\n * @return {Array<R>}\n */\nexport const map = (m, f) => {\n const res = []\n for (const [key, value] of m) {\n res.push(f(value, key))\n }\n return res\n}\n\n/**\n * Tests whether any key-value pairs pass the test implemented by `f(value, key)`.\n *\n * @todo should rename to some - similarly to Array.some\n *\n * @function\n * @template K\n * @template V\n * @param {Map<K,V>} m\n * @param {function(V,K):boolean} f\n * @return {boolean}\n */\nexport const any = (m, f) => {\n for (const [key, value] of m) {\n if (f(value, key)) {\n return true\n }\n }\n return false\n}\n\n/**\n * Tests whether all key-value pairs pass the test implemented by `f(value, key)`.\n *\n * @function\n * @template K\n * @template V\n * @param {Map<K,V>} m\n * @param {function(V,K):boolean} f\n * @return {boolean}\n */\nexport const all = (m, f) => {\n for (const [key, value] of m) {\n if (!f(value, key)) {\n return false\n }\n }\n return true\n}\n","/**\n * Observable class prototype.\n *\n * @module observable\n */\n\nimport * as map from './map.js'\nimport * as set from './set.js'\nimport * as array from './array.js'\n\n/**\n * Handles named events.\n * @experimental\n *\n * This is basically a (better typed) duplicate of Observable, which will replace Observable in the\n * next release.\n *\n * @template {{[key in keyof EVENTS]: function(...any):void}} EVENTS\n */\nexport class ObservableV2 {\n constructor () {\n /**\n * Some desc.\n * @type {Map<string, Set<any>>}\n */\n this._observers = map.create()\n }\n\n /**\n * @template {keyof EVENTS & string} NAME\n * @param {NAME} name\n * @param {EVENTS[NAME]} f\n */\n on (name, f) {\n map.setIfUndefined(this._observers, /** @type {string} */ (name), set.create).add(f)\n return f\n }\n\n /**\n * @template {keyof EVENTS & string} NAME\n * @param {NAME} name\n * @param {EVENTS[NAME]} f\n */\n once (name, f) {\n /**\n * @param {...any} args\n */\n const _f = (...args) => {\n this.off(name, /** @type {any} */ (_f))\n f(...args)\n }\n this.on(name, /** @type {any} */ (_f))\n }\n\n /**\n * @template {keyof EVENTS & string} NAME\n * @param {NAME} name\n * @param {EVENTS[NAME]} f\n */\n off (name, f) {\n const observers = this._observers.get(name)\n if (observers !== undefined) {\n observers.delete(f)\n if (observers.size === 0) {\n this._observers.delete(name)\n }\n }\n }\n\n /**\n * Emit a named event. All registered event listeners that listen to the\n * specified name will receive the event.\n *\n * @todo This should catch exceptions\n *\n * @template {keyof EVENTS & string} NAME\n * @param {NAME} name The event name.\n * @param {Parameters<EVENTS[NAME]>} args The arguments that are applied to the event listener.\n */\n emit (name, args) {\n // copy all listeners to an array first to make sure that no event is emitted to listeners that are subscribed while the event handler is called.\n return array.from((this._observers.get(name) || map.create()).values()).forEach(f => f(...args))\n }\n\n destroy () {\n this._observers = map.create()\n }\n}\n\n/* c8 ignore start */\n/**\n * Handles named events.\n *\n * @deprecated\n * @template N\n */\nexport class Observable {\n constructor () {\n /**\n * Some desc.\n * @type {Map<N, any>}\n */\n this._observers = map.create()\n }\n\n /**\n * @param {N} name\n * @param {function} f\n */\n on (name, f) {\n map.setIfUndefined(this._observers, name, set.create).add(f)\n }\n\n /**\n * @param {N} name\n * @param {function} f\n */\n once (name, f) {\n /**\n * @param {...any} args\n */\n const _f = (...args) => {\n this.off(name, _f)\n f(...args)\n }\n this.on(name, _f)\n }\n\n /**\n * @param {N} name\n * @param {function} f\n */\n off (name, f) {\n const observers = this._observers.get(name)\n if (observers !== undefined) {\n observers.delete(f)\n if (observers.size === 0) {\n this._observers.delete(name)\n }\n }\n }\n\n /**\n * Emit a named event. All registered event listeners that listen to the\n * specified name will receive the event.\n *\n * @todo This should catch exceptions\n *\n * @param {N} name The event name.\n * @param {Array<any>} args The arguments that are applied to the event listener.\n */\n emit (name, args) {\n // copy all listeners to an array first to make sure that no event is emitted to listeners that are subscribed while the event handler is called.\n return array.from((this._observers.get(name) || map.create()).values()).forEach(f => f(...args))\n }\n\n destroy () {\n this._observers = map.create()\n }\n}\n/* c8 ignore end */\n","/**\n * Utility functions for working with EcmaScript objects.\n *\n * @module object\n */\n\n/**\n * @return {Object<string,any>} obj\n */\nexport const create = () => Object.create(null)\n\n/**\n * Object.assign\n */\nexport const assign = Object.assign\n\n/**\n * @param {Object<string,any>} obj\n */\nexport const keys = Object.keys\n\n/**\n * @template V\n * @param {{[k:string]:V}} obj\n * @param {function(V,string):any} f\n */\nexport const forEach = (obj, f) => {\n for (const key in obj) {\n f(obj[key], key)\n }\n}\n\n/**\n * @todo implement mapToArray & map\n *\n * @template R\n * @param {Object<string,any>} obj\n * @param {function(any,string):R} f\n * @return {Array<R>}\n */\nexport const map = (obj, f) => {\n const results = []\n for (const key in obj) {\n results.push(f(obj[key], key))\n }\n return results\n}\n\n/**\n * @deprecated use object.size instead\n * @param {Object<string,any>} obj\n * @return {number}\n */\nexport const length = obj => keys(obj).length\n\n/**\n * @param {Object<string,any>} obj\n * @return {number}\n */\nexport const size = obj => keys(obj).length\n\n/**\n * @param {Object<string,any>} obj\n * @param {function(any,string):boolean} f\n * @return {boolean}\n */\nexport const some = (obj, f) => {\n for (const key in obj) {\n if (f(obj[key], key)) {\n return true\n }\n }\n return false\n}\n\n/**\n * @param {Object|undefined} obj\n */\nexport const isEmpty = obj => {\n // eslint-disable-next-line\n for (const _k in obj) {\n return false\n }\n return true\n}\n\n/**\n * @param {Object<string,any>} obj\n * @param {function(any,string):boolean} f\n * @return {boolean}\n */\nexport const every = (obj, f) => {\n for (const key in obj) {\n if (!f(obj[key], key)) {\n return false\n }\n }\n return true\n}\n\n/**\n * Calls `Object.prototype.hasOwnProperty`.\n *\n * @param {any} obj\n * @param {string|symbol} key\n * @return {boolean}\n */\nexport const hasProperty = (obj, key) => Object.prototype.hasOwnProperty.call(obj, key)\n\n/**\n * @param {Object<string,any>} a\n * @param {Object<string,any>} b\n * @return {boolean}\n */\nexport const equalFlat = (a, b) => a === b || (size(a) === size(b) && every(a, (val, key) => (val !== undefined || hasProperty(b, key)) && b[key] === val))\n","/**\n * Common functions and function call helpers.\n *\n * @module function\n */\n\nimport * as array from './array.js'\nimport * as object from './object.js'\n\n/**\n * Calls all functions in `fs` with args. Only throws after all functions were called.\n *\n * @param {Array<function>} fs\n * @param {Array<any>} args\n */\nexport const callAll = (fs, args, i = 0) => {\n try {\n for (; i < fs.length; i++) {\n fs[i](...args)\n }\n } finally {\n if (i < fs.length) {\n callAll(fs, args, i + 1)\n }\n }\n}\n\nexport const nop = () => {}\n\n/**\n * @template T\n * @param {function():T} f\n * @return {T}\n */\nexport const apply = f => f()\n\n/**\n * @template A\n *\n * @param {A} a\n * @return {A}\n */\nexport const id = a => a\n\n/**\n * @template T\n *\n * @param {T} a\n * @param {T} b\n * @return {boolean}\n */\nexport const equalityStrict = (a, b) => a === b\n\n/**\n * @template T\n *\n * @param {Array<T>|object} a\n * @param {Array<T>|object} b\n * @return {boolean}\n */\nexport const equalityFlat = (a, b) => a === b || (a != null && b != null && a.constructor === b.constructor && ((array.isArray(a) && array.equalFlat(a, /** @type {Array<T>} */ (b))) || (typeof a === 'object' && object.equalFlat(a, b))))\n\n/* c8 ignore start */\n\n/**\n * @param {any} a\n * @param {any} b\n * @return {boolean}\n */\nexport const equalityDeep = (a, b) => {\n if (a == null || b == null) {\n return equalityStrict(a, b)\n }\n if (a.constructor !== b.constructor) {\n return false\n }\n if (a === b) {\n return true\n }\n switch (a.constructor) {\n case ArrayBuffer:\n a = new Uint8Array(a)\n b = new Uint8Array(b)\n // eslint-disable-next-line no-fallthrough\n case Uint8Array: {\n if (a.byteLength !== b.byteLength) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false\n }\n }\n break\n }\n case Set: {\n if (a.size !== b.size) {\n return false\n }\n for (const value of a) {\n if (!b.has(value)) {\n return false\n }\n }\n break\n }\n case Map: {\n if (a.size !== b.size) {\n return false\n }\n for (const key of a.keys()) {\n if (!b.has(key) || !equalityDeep(a.get(key), b.get(key))) {\n return false\n }\n }\n break\n }\n case Object:\n if (object.length(a) !== object.length(b)) {\n return false\n }\n for (const key in a) {\n if (!object.hasProperty(a, key) || !equalityDeep(a[key], b[key])) {\n return false\n }\n }\n break\n case Array:\n if (a.length !== b.length) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (!equalityDeep(a[i], b[i])) {\n return false\n }\n }\n break\n default:\n return false\n }\n return true\n}\n\n/**\n * @template V\n * @template {V} OPTS\n *\n * @param {V} value\n * @param {Array<OPTS>} options\n */\n// @ts-ignore\nexport const isOneOf = (value, options) => options.includes(value)\n/* c8 ignore stop */\n\nexport const isArray = array.isArray\n\n/**\n * @param {any} s\n * @return {s is String}\n */\nexport const isString = (s) => s && s.constructor === String\n\n/**\n * @param {any} n\n * @return {n is Number}\n */\nexport const isNumber = n => n != null && n.constructor === Number\n\n/**\n * @template {abstract new (...args: any) => any} TYPE\n * @param {any} n\n * @param {TYPE} T\n * @return {n is InstanceType<TYPE>}\n */\nexport const is = (n, T) => n && n.constructor === T\n\n/**\n * @template {abstract new (...args: any) => any} TYPE\n * @param {TYPE} T\n */\nexport const isTemplate = (T) =>\n /**\n * @param {any} n\n * @return {n is InstanceType<TYPE>}\n **/\n n => n && n.constructor === T\n","/* eslint-env browser */\n\nexport const subtle = crypto.subtle\nexport const getRandomValues = crypto.getRandomValues.bind(crypto)\n","/**\n * Isomorphic module for true random numbers / buffers / uuids.\n *\n * Attention: falls back to Math.random if the browser does not support crypto.\n *\n * @module random\n */\n\nimport * as math from './math.js'\nimport * as binary from './binary.js'\nimport { getRandomValues } from 'lib0/webcrypto'\n\nexport const rand = Math.random\n\nexport const uint32 = () => getRandomValues(new Uint32Array(1))[0]\n\nexport const uint53 = () => {\n const arr = getRandomValues(new Uint32Array(8))\n return (arr[0] & binary.BITS21) * (binary.BITS32 + 1) + (arr[1] >>> 0)\n}\n\n/**\n * @template T\n * @param {Array<T>} arr\n * @return {T}\n */\nexport const oneOf = arr => arr[math.floor(rand() * arr.length)]\n\n// @ts-ignore\nconst uuidv4Template = [1e7] + -1e3 + -4e3 + -8e3 + -1e11\n\n/**\n * @return {string}\n */\nexport const uuidv4 = () => uuidv4Template.replace(/[018]/g, /** @param {number} c */ c =>\n (c ^ uint32() & 15 >> c / 4).toString(16)\n)\n","/**\n * Utility helpers to work with promises.\n *\n * @module promise\n */\n\nimport * as time from './time.js'\n\n/**\n * @template T\n * @callback PromiseResolve\n * @param {T|PromiseLike<T>} [result]\n */\n\n/**\n * @template T\n * @param {function(PromiseResolve<T>,function(Error):void):any} f\n * @return {Promise<T>}\n */\nexport const create = f => /** @type {Promise<T>} */ (new Promise(f))\n\n/**\n * @param {function(function():void,function(Error):void):void} f\n * @return {Promise<void>}\n */\nexport const createEmpty = f => new Promise(f)\n\n/**\n * `Promise.all` wait for all promises in the array to resolve and return the result\n * @template {unknown[] | []} PS\n *\n * @param {PS} ps\n * @return {Promise<{ -readonly [P in keyof PS]: Awaited<PS[P]> }>}\n */\nexport const all = Promise.all.bind(Promise)\n\n/**\n * @param {Error} [reason]\n * @return {Promise<never>}\n */\nexport const reject = reason => Promise.reject(reason)\n\n/**\n * @template T\n * @param {T|void} res\n * @return {Promise<T|void>}\n */\nexport const resolve = res => Promise.resolve(res)\n\n/**\n * @template T\n * @param {T} res\n * @return {Promise<T>}\n */\nexport const resolveWith = res => Promise.resolve(res)\n\n/**\n * @todo Next version, reorder parameters: check, [timeout, [intervalResolution]]\n * @deprecated use untilAsync instead\n *\n * @param {number} timeout\n * @param {function():boolean} check\n * @param {number} [intervalResolution]\n * @return {Promise<void>}\n */\nexport const until = (timeout, check, intervalResolution = 10) => create((resolve, reject) => {\n const startTime = time.getUnixTime()\n const hasTimeout = timeout > 0\n const untilInterval = () => {\n if (check()) {\n clearInterval(intervalHandle)\n resolve()\n } else if (hasTimeout) {\n /* c8 ignore else */\n if (time.getUnixTime() - startTime > timeout) {\n clearInterval(intervalHandle)\n reject(new Error('Timeout'))\n }\n }\n }\n const intervalHandle = setInterval(untilInterval, intervalResolution)\n})\n\n/**\n * @param {()=>Promise<boolean>|boolean} check\n * @param {number} timeout\n * @param {number} intervalResolution\n * @return {Promise<void>}\n */\nexport const untilAsync = async (check, timeout = 0, intervalResolution = 10) => {\n const startTime = time.getUnixTime()\n const noTimeout = timeout <= 0\n // eslint-disable-next-line no-unmodified-loop-condition\n while (noTimeout || time.getUnixTime() - startTime <= timeout) {\n if (await check()) return\n await wait(intervalResolution)\n }\n throw new Error('Timeout')\n}\n\n/**\n * @param {number} timeout\n * @return {Promise<undefined>}\n */\nexport const wait = timeout => create((resolve, _reject) => setTimeout(resolve, timeout))\n\n/**\n * Checks if an object is a promise using ducktyping.\n *\n * Promises are often polyfilled, so it makes sense to add some additional guarantees if the user of this\n * library has some insane environment where global Promise objects are overwritten.\n *\n * @param {any} p\n * @return {boolean}\n */\nexport const isPromise = p => p instanceof Promise || (p && p.then && p.catch && p.finally)\n","/**\n * Often used conditions.\n *\n * @module conditions\n */\n\n/**\n * @template T\n * @param {T|null|undefined} v\n * @return {T|null}\n */\n/* c8 ignore next */\nexport const undefinedToNull = v => v === undefined ? null : v\n","/* eslint-env browser */\n\n/**\n * Isomorphic variable storage.\n *\n * Uses LocalStorage in the browser and falls back to in-memory storage.\n *\n * @module storage\n */\n\n/* c8 ignore start */\nclass VarStoragePolyfill {\n constructor () {\n this.map = new Map()\n }\n\n /**\n * @param {string} key\n * @param {any} newValue\n */\n setItem (key, newValue) {\n this.map.set(key, newValue)\n }\n\n /**\n * @param {string} key\n */\n getItem (key) {\n return this.map.get(key)\n }\n}\n/* c8 ignore stop */\n\n/**\n * @type {any}\n */\nlet _localStorage = new VarStoragePolyfill()\nlet usePolyfill = true\n\n/* c8 ignore start */\ntry {\n // if the same-origin rule is violated, accessing localStorage might thrown an error\n if (typeof localStorage !== 'undefined' && localStorage) {\n _localStorage = localStorage\n usePolyfill = false\n }\n} catch (e) { }\n/* c8 ignore stop */\n\n/**\n * This is basically localStorage in browser, or a polyfill in nodejs\n */\n/* c8 ignore next */\nexport const varStorage = _localStorage\n\n/**\n * A polyfill for `addEventListener('storage', event => {..})` that does nothing if the polyfill is being used.\n *\n * @param {function({ key: string, newValue: string, oldValue: string }): void} eventHandler\n * @function\n */\n/* c8 ignore next */\nexport const onChange = eventHandler => usePolyfill || addEventListener('storage', /** @type {any} */ (eventHandler))\n\n/**\n * A polyfill for `removeEventListener('storage', event => {..})` that does nothing if the polyfill is being used.\n *\n * @param {function({ key: string, newValue: string, oldValue: string }): void} eventHandler\n * @function\n */\n/* c8 ignore next */\nexport const offChange = eventHandler => usePolyfill || removeEventListener('storage', /** @type {any} */ (eventHandler))\n","/**\n * Isomorphic module to work access the environment (query params, env variables).\n *\n * @module map\n */\n\nimport * as map from './map.js'\nimport * as string from './string.js'\nimport * as conditions from './conditions.js'\nimport * as storage from './storage.js'\nimport * as f from './function.js'\n\n/* c8 ignore next 2 */\n// @ts-ignore\nexport const isNode = typeof process !== 'undefined' && process.release && /node|io\\.js/.test(process.release.name) && Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n\n/* c8 ignore next */\nexport const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && !isNode\n/* c8 ignore next 3 */\nexport const isMac = typeof navigator !== 'undefined'\n ? /Mac/.test(navigator.platform)\n : false\n\n/**\n * @type {Map<string,string>}\n */\nlet params\nconst args = []\n\n/* c8 ignore start */\nconst computeParams = () => {\n if (params === undefined) {\n if (isNode) {\n params = map.create()\n const pargs = process.argv\n let currParamName = null\n for (let i = 0; i < pargs.length; i++) {\n const parg = pargs[i]\n if (parg[0] === '-') {\n if (currParamName !== null) {\n params.set(currParamName, '')\n }\n currParamName = parg\n } else {\n if (currParamName !== null) {\n params.set(currParamName, parg)\n currParamName = null\n } else {\n args.push(parg)\n }\n }\n }\n if (currParamName !== null) {\n params.set(currParamName, '')\n }\n // in ReactNative for example this would not be true (unless connected to the Remote Debugger)\n } else if (typeof location === 'object') {\n params = map.create(); // eslint-disable-next-line no-undef\n (location.search || '?').slice(1).split('&').forEach((kv) => {\n if (kv.length !== 0) {\n const [key, value] = kv.split('=')\n params.set(`--${string.fromCamelCase(key, '-')}`, value)\n params.set(`-${string.fromCamelCase(key, '-')}`, value)\n }\n })\n } else {\n params = map.create()\n }\n }\n return params\n}\n/* c8 ignore stop */\n\n/**\n * @param {string} name\n * @return {boolean}\n */\n/* c8 ignore next */\nexport const hasParam = (name) => computeParams().has(name)\n\n/**\n * @param {string} name\n * @param {string} defaultVal\n * @return {string}\n */\n/* c8 ignore next 2 */\nexport const getParam = (name, defaultVal) =>\n computeParams().get(name) || defaultVal\n\n/**\n * @param {string} name\n * @return {string|null}\n */\n/* c8 ignore next 4 */\nexport const getVariable = (name) =>\n isNode\n ? conditions.undefinedToNull(process.env[name.toUpperCase().replaceAll('-', '_')])\n : conditions.undefinedToNull(storage.varStorage.getItem(name))\n\n/**\n * @param {string} name\n * @return {string|null}\n */\n/* c8 ignore next 2 */\nexport const getConf = (name) =>\n computeParams().get('--' + name) || getVariable(name)\n\n/**\n * @param {string} name\n * @return {string}\n */\n/* c8 ignore next 5 */\nexport const ensureConf = (name) => {\n const c = getConf(name)\n if (c == null) throw new Error(`Expected configuration \"${name.toUpperCase().replaceAll('-', '_')}\"`)\n return c\n}\n\n/**\n * @param {string} name\n * @return {boolean}\n */\n/* c8 ignore next 2 */\nexport const hasConf = (name) =>\n hasParam('--' + name) || getVariable(name) !== null\n\n/* c8 ignore next */\nexport const production = hasConf('production')\n\n/* c8 ignore next 2 */\nconst forceColor = isNode &&\n f.isOneOf(process.env.FORCE_COLOR, ['true', '1', '2'])\n\n/* c8 ignore start */\n/**\n * Color is enabled by default if the terminal supports it.\n *\n * Explicitly enable color using `--color` parameter\n * Disable color using `--no-color` parameter or using `NO_COLOR=1` environment variable.\n * `FORCE_COLOR=1` enables color and takes precedence over all.\n */\nexport const supportsColor = forceColor || (\n !hasParam('--no-colors') && // @todo deprecate --no-colors\n !hasConf('no-color') &&\n (!isNode || process.stdout.isTTY) && (\n !isNode ||\n hasParam('--color') ||\n getVariable('COLORTERM') !== null ||\n (getVariable('TERM') || '').includes('color')\n )\n)\n/* c8 ignore stop */\n","/**\n * Utility functions to work with buffers (Uint8Array).\n *\n * @module buffer\n */\n\nimport * as string from './string.js'\nimport * as env from './environment.js'\nimport * as array from './array.js'\nimport * as math from './math.js'\nimport * as encoding from './encoding.js'\nimport * as decoding from './decoding.js'\n\n/**\n * @param {number} len\n */\nexport const createUint8ArrayFromLen = len => new Uint8Array(len)\n\n/**\n * Create Uint8Array with initial content from buffer\n *\n * @param {ArrayBuffer} buffer\n * @param {number} byteOffset\n * @param {number} length\n */\nexport const createUint8ArrayViewFromArrayBuffer = (buffer, byteOffset, length) => new Uint8Array(buffer, byteOffset, length)\n\n/**\n * Create Uint8Array with initial content from buffer\n *\n * @param {ArrayBuffer} buffer\n */\nexport const createUint8ArrayFromArrayBuffer = buffer => new Uint8Array(buffer)\n\n/* c8 ignore start */\n/**\n * @param {Uint8Array} bytes\n * @return {string}\n */\nconst toBase64Browser = bytes => {\n let s = ''\n for (let i = 0; i < bytes.byteLength; i++) {\n s += string.fromCharCode(bytes[i])\n }\n // eslint-disable-next-line no-undef\n return btoa(s)\n}\n/* c8 ignore stop */\n\n/**\n * @param {Uint8Array} bytes\n * @return {string}\n */\nconst toBase64Node = bytes => Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).toString('base64')\n\n/* c8 ignore start */\n/**\n * @param {string} s\n * @return {Uint8Array}\n */\nconst fromBase64Browser = s => {\n // eslint-disable-next-line no-undef\n const a = atob(s)\n const bytes = createUint8ArrayFromLen(a.length)\n for (let i = 0; i < a.length; i++) {\n bytes[i] = a.charCodeAt(i)\n }\n return bytes\n}\n/* c8 ignore stop */\n\n/**\n * @param {string} s\n */\nconst fromBase64Node = s => {\n const buf = Buffer.from(s, 'base64')\n return createUint8ArrayViewFromArrayBuffer(buf.buffer, buf.byteOffset, buf.byteLength)\n}\n\n/* c8 ignore next */\nexport const toBase64 = env.isBrowser ? toBase64Browser : toBase64Node\n\n/* c8 ignore next */\nexport const fromBase64 = env.isBrowser ? fromBase64Browser : fromBase64Node\n\n/**\n * Implements base64url - see https://datatracker.ietf.org/doc/html/rfc4648#section-5\n * @param {Uint8Array} buf\n */\nexport const toBase64UrlEncoded = buf => toBase64(buf).replaceAll('+', '-').replaceAll('/', '_').replaceAll('=', '')\n\n/**\n * @param {string} base64\n */\nexport const fromBase64UrlEncoded = base64 => fromBase64(base64.replaceAll('-', '+').replaceAll('_', '/'))\n\n/**\n * Base64 is always a more efficient choice. This exists for utility purposes only.\n *\n * @param {Uint8Array} buf\n */\nexport const toHexString = buf => array.map(buf, b => b.toString(16).padStart(2, '0')).join('')\n\n/**\n * Note: This function expects that the hex doesn't start with 0x..\n *\n * @param {string} hex\n */\nexport const fromHexString = hex => {\n const hlen = hex.length\n const buf = new Uint8Array(math.ceil(hlen / 2))\n for (let i = 0; i < hlen; i += 2) {\n buf[buf.length - i / 2 - 1] = Number.parseInt(hex.slice(hlen - i - 2, hlen - i), 16)\n }\n return buf\n}\n\n/**\n * Copy the content of an Uint8Array view to a new ArrayBuffer.\n *\n * @param {Uint8Array} uint8Array\n * @return {Uint8Array}\n */\nexport const copyUint8Array = uint8Array => {\n const newBuf = createUint8ArrayFromLen(uint8Array.byteLength)\n newBuf.set(uint8Array)\n return newBuf\n}\n\n/**\n * Encode anything as a UInt8Array. It's a pun on typescripts's `any` type.\n * See encoding.writeAny for more information.\n *\n * @param {any} data\n * @return {Uint8Array}\n */\nexport const encodeAny = data =>\n encoding.encode(encoder => encoding.writeAny(encoder, data))\n\n/**\n * Decode an any-encoded value.\n *\n * @param {Uint8Array} buf\n * @return {any}\n */\nexport const decodeAny = buf => decoding.readAny(decoding.createDecoder(buf))\n\n/**\n * Shift Byte Array {N} bits to the left. Does not expand byte array.\n *\n * @param {Uint8Array} bs\n * @param {number} N should be in the range of [0-7]\n */\nexport const shiftNBitsLeft = (bs, N) => {\n if (N === 0) return bs\n bs = new Uint8Array(bs)\n bs[0] <<= N\n for (let i = 1; i < bs.length; i++) {\n bs[i - 1] |= bs[i] >>> (8 - N)\n bs[i] <<= N\n }\n return bs\n}\n","/**\n * Working with value pairs.\n *\n * @module pair\n */\n\n/**\n * @template L,R\n */\nexport class Pair {\n /**\n * @param {L} left\n * @param {R} right\n */\n constructor (left, right) {\n this.left = left\n this.right = right\n }\n}\n\n/**\n * @template L,R\n * @param {L} left\n * @param {R} right\n * @return {Pair<L,R>}\n */\nexport const create = (left, right) => new Pair(left, right)\n\n/**\n * @template L,R\n * @param {R} right\n * @param {L} left\n * @return {Pair<L,R>}\n */\nexport const createReversed = (right, left) => new Pair(left, right)\n\n/**\n * @template L,R\n * @param {Array<Pair<L,R>>} arr\n * @param {function(L, R):any} f\n */\nexport const forEach = (arr, f) => arr.forEach(p => f(p.left, p.right))\n\n/**\n * @template L,R,X\n * @param {Array<Pair<L,R>>} arr\n * @param {function(L, R):X} f\n * @return {Array<X>}\n */\nexport const map = (arr, f) => arr.map(p => f(p.left, p.right))\n","/* eslint-env browser */\n\n/**\n * Utility module to work with the DOM.\n *\n * @module dom\n */\n\nimport * as pair from './pair.js'\nimport * as map from './map.js'\n\n/* c8 ignore start */\n/**\n * @type {Document}\n */\nexport const doc = /** @type {Document} */ (typeof document !== 'undefined' ? document : {})\n\n/**\n * @param {string} name\n * @return {HTMLElement}\n */\nexport const createElement = name => doc.createElement(name)\n\n/**\n * @return {DocumentFragment}\n */\nexport const createDocumentFragment = () => doc.createDocumentFragment()\n\n/**\n * @param {string} text\n * @return {Text}\n */\nexport const createTextNode = text => doc.createTextNode(text)\n\nexport const domParser = /** @type {DOMParser} */ (typeof DOMParser !== 'undefined' ? new DOMParser() : null)\n\n/**\n * @param {HTMLElement} el\n * @param {string} name\n * @param {Object} opts\n */\nexport const emitCustomEvent = (el, name, opts) => el.dispatchEvent(new CustomEvent(name, opts))\n\n/**\n * @param {Element} el\n * @param {Array<pair.Pair<string,string|boolean>>} attrs Array of key-value pairs\n * @return {Element}\n */\nexport const setAttributes = (el, attrs) => {\n pair.forEach(attrs, (key, value) => {\n if (value === false) {\n el.removeAttribute(key)\n } else if (value === true) {\n el.setAttribute(key, '')\n } else {\n // @ts-ignore\n el.setAttribute(key, value)\n }\n })\n return el\n}\n\n/**\n * @param {Element} el\n * @param {Map<string, string>} attrs Array of key-value pairs\n * @return {Element}\n */\nexport const setAttributesMap = (el, attrs) => {\n attrs.forEach((value, key) => { el.setAttribute(key, value) })\n return el\n}\n\n/**\n * @param {Array<Node>|HTMLCollection} children\n * @return {DocumentFragment}\n */\nexport const fragment = children => {\n const fragment = createDocumentFragment()\n for (let i = 0; i < children.length; i++) {\n appendChild(fragment, children[i])\n }\n return fragment\n}\n\n/**\n * @param {Element} parent\n * @param {Array<Node>} nodes\n * @return {Element}\n */\nexport const append = (parent, nodes) => {\n appendChild(parent, fragment(nodes))\n return parent\n}\n\n/**\n * @param {HTMLElement} el\n */\nexport const remove = el => el.remove()\n\n/**\n * @param {EventTarget} el\n * @param {string} name\n * @param {EventListener} f\n */\nexport const addEventListener = (el, name, f) => el.addEventListener(name, f)\n\n/**\n * @param {EventTarget} el\n * @param {string} name\n * @param {EventListener} f\n */\nexport const removeEventListener = (el, name, f) => el.removeEventListener(name, f)\n\n/**\n * @param {Node} node\n * @param {Array<pair.Pair<string,EventListener>>} listeners\n * @return {Node}\n */\nexport const addEventListeners = (node, listeners) => {\n pair.forEach(listeners, (name, f) => addEventListener(node, name, f))\n return node\n}\n\n/**\n * @param {Node} node\n * @param {Array<pair.Pair<string,EventListener>>} listeners\n * @return {Node}\n */\nexport const removeEventListeners = (node, listeners) => {\n pair.forEach(listeners, (name, f) => removeEventListener(node, name, f))\n return node\n}\n\n/**\n * @param {string} name\n * @param {Array<pair.Pair<string,string>|pair.Pair<string,boolean>>} attrs Array of key-value pairs\n * @param {Array<Node>} children\n * @return {Element}\n */\nexport const element = (name, attrs = [], children = []) =>\n append(setAttributes(createElement(name), attrs), children)\n\n/**\n * @param {number} width\n * @param {number} height\n */\nexport const canvas = (width, height) => {\n const c = /** @type {HTMLCanvasElement} */ (createElement('canvas'))\n c.height = height\n c.width = width\n return c\n}\n\n/**\n * @param {string} t\n * @return {Text}\n */\nexport const text = createTextNode\n\n/**\n * @param {pair.Pair<string,string>} pair\n */\nexport const pairToStyleString = pair => `${pair.left}:${pair.right};`\n\n/**\n * @param {Array<pair.Pair<string,string>>} pairs\n * @return {string}\n */\nexport const pairsToStyleString = pairs => pairs.map(pairToStyleString).join('')\n\n/**\n * @param {Map<string,string>} m\n * @return {string}\n */\nexport const mapToStyleString = m => map.map(m, (value, key) => `${key}:${value};`).join('')\n\n/**\n * @todo should always query on a dom element\n *\n * @param {HTMLElement|ShadowRoot} el\n * @param {string} query\n * @return {HTMLElement | null}\n */\nexport const querySelector = (el, query) => el.querySelector(query)\n\n/**\n * @param {HTMLElement|ShadowRoot} el\n * @param {string} query\n * @return {NodeListOf<HTMLElement>}\n */\nexport const querySelectorAll = (el, query) => el.querySelectorAll(query)\n\n/**\n * @param {string} id\n * @return {HTMLElement}\n */\nexport const getElementById = id => /** @type {HTMLElement} */ (doc.getElementById(id))\n\n/**\n * @param {string} html\n * @return {HTMLElement}\n */\nconst _parse = html => domParser.parseFromString(`<html><body>${html}</body></html>`, 'text/html').body\n\n/**\n * @param {string} html\n * @return {DocumentFragment}\n */\nexport const parseFragment = html => fragment(/** @type {any} */ (_parse(html).childNodes))\n\n/**\n * @param {string} html\n * @return {HTMLElement}\n */\nexport const parseElement = html => /** @type HTMLElement */ (_parse(html).firstElementChild)\n\n/**\n * @param {HTMLElement} oldEl\n * @param {HTMLElement|DocumentFragment} newEl\n */\nexport const replaceWith = (oldEl, newEl) => oldEl.replaceWith(newEl)\n\n/**\n * @param {HTMLElement} parent\n * @param {HTMLElement} el\n * @param {Node|null} ref\n * @return {HTMLElement}\n */\nexport const insertBefore = (parent, el, ref) => parent.insertBefore(el, ref)\n\n/**\n * @param {Node} parent\n * @param {Node} child\n * @return {Node}\n */\nexport const appendChild = (parent, child) => parent.appendChild(child)\n\nexport const ELEMENT_NODE = doc.ELEMENT_NODE\nexport const TEXT_NODE = doc.TEXT_NODE\nexport const CDATA_SECTION_NODE = doc.CDATA_SECTION_NODE\nexport const COMMENT_NODE = doc.COMMENT_NODE\nexport const DOCUMENT_NODE = doc.DOCUMENT_NODE\nexport const DOCUMENT_TYPE_NODE = doc.DOCUMENT_TYPE_NODE\nexport const DOCUMENT_FRAGMENT_NODE = doc.DOCUMENT_FRAGMENT_NODE\n\n/**\n * @param {any} node\n * @param {number} type\n */\nexport const checkNodeType = (node, type) => node.nodeType === type\n\n/**\n * @param {Node} parent\n * @param {HTMLElement} child\n */\nexport const isParentOf = (parent, child) => {\n let p = child.parentNode\n while (p && p !== parent) {\n p = p.parentNode\n }\n return p === parent\n}\n/* c8 ignore stop */\n","/**\n * Utility module to work with EcmaScript Symbols.\n *\n * @module symbol\n */\n\n/**\n * Return fresh symbol.\n *\n * @return {Symbol}\n */\nexport const create = Symbol\n\n/**\n * @param {any} s\n * @return {boolean}\n */\nexport const isSymbol = s => typeof s === 'symbol'\n","import * as symbol from './symbol.js'\nimport * as time from './time.js'\nimport * as env from './environment.js'\nimport * as func from './function.js'\nimport * as json from './json.js'\n\nexport const BOLD = symbol.create()\nexport const UNBOLD = symbol.create()\nexport const BLUE = symbol.create()\nexport const GREY = symbol.create()\nexport const GREEN = symbol.create()\nexport const RED = symbol.create()\nexport const PURPLE = symbol.create()\nexport const ORANGE = symbol.create()\nexport const UNCOLOR = symbol.create()\n\n/* c8 ignore start */\n/**\n * @param {Array<undefined|string|Symbol|Object|number|function():any>} args\n * @return {Array<string|object|number|undefined>}\n */\nexport const computeNoColorLoggingArgs = args => {\n if (args.length === 1 && args[0]?.constructor === Function) {\n args = /** @type {Array<string|Symbol|Object|number>} */ (/** @type {[function]} */ (args)[0]())\n }\n const strBuilder = []\n const logArgs = []\n // try with formatting until we find something unsupported\n let i = 0\n for (; i < args.length; i++) {\n const arg = args[i]\n if (arg === undefined) {\n break\n } else if (arg.constructor === String || arg.constructor === Number) {\n strBuilder.push(arg)\n } else if (arg.constructor === Object) {\n break\n }\n }\n if (i > 0) {\n // create logArgs with what we have so far\n logArgs.push(strBuilder.join(''))\n }\n // append the rest\n for (; i < args.length; i++) {\n const arg = args[i]\n if (!(arg instanceof Symbol)) {\n logArgs.push(arg)\n }\n }\n return logArgs\n}\n/* c8 ignore stop */\n\nconst loggingColors = [GREEN, PURPLE, ORANGE, BLUE]\nlet nextColor = 0\nlet lastLoggingTime = time.getUnixTime()\n\n/* c8 ignore start */\n/**\n * @param {function(...any):void} _print\n * @param {string} moduleName\n * @return {function(...any):void}\n */\nexport const createModuleLogger = (_print, moduleName) => {\n const color = loggingColors[nextColor]\n const debugRegexVar = env.getVariable('log')\n const doLogging = debugRegexVar !== null &&\n (debugRegexVar === '*' || debugRegexVar === 'true' ||\n new RegExp(debugRegexVar, 'gi').test(moduleName))\n nextColor = (nextColor + 1) % loggingColors.length\n moduleName += ': '\n return !doLogging\n ? func.nop\n : (...args) => {\n if (args.length === 1 && args[0]?.constructor === Function) {\n args = args[0]()\n }\n const timeNow = time.getUnixTime()\n const timeDiff = timeNow - lastLoggingTime\n lastLoggingTime = timeNow\n _print(\n color,\n moduleName,\n UNCOLOR,\n ...args.map((arg) => {\n if (arg != null && arg.constructor === Uint8Array) {\n arg = Array.from(arg)\n }\n const t = typeof arg\n switch (t) {\n case 'string':\n case 'symbol':\n return arg\n default: {\n return json.stringify(arg)\n }\n }\n }),\n color,\n ' +' + timeDiff + 'ms'\n )\n }\n}\n/* c8 ignore stop */\n","/**\n * Isomorphic logging module with support for colors!\n *\n * @module logging\n */\n\nimport * as env from './environment.js'\nimport * as set from './set.js'\nimport * as pair from './pair.js'\nimport * as dom from './dom.js'\nimport * as json from './json.js'\nimport * as map from './map.js'\nimport * as eventloop from './eventloop.js'\nimport * as math from './math.js'\nimport * as common from './logging.common.js'\n\nexport { BOLD, UNBOLD, BLUE, GREY, GREEN, RED, PURPLE, ORANGE, UNCOLOR } from './logging.common.js'\n\n/**\n * @type {Object<Symbol,pair.Pair<string,string>>}\n */\nconst _browserStyleMap = {\n [common.BOLD]: pair.create('font-weight', 'bold'),\n [common.UNBOLD]: pair.create('font-weight', 'normal'),\n [common.BLUE]: pair.create('color', 'blue'),\n [common.GREEN]: pair.create('color', 'green'),\n [common.GREY]: pair.create('color', 'grey'),\n [common.RED]: pair.create('color', 'red'),\n [common.PURPLE]: pair.create('color', 'purple'),\n [common.ORANGE]: pair.create('color', 'orange'), // not well supported in chrome when debugging node with inspector - TODO: deprecate\n [common.UNCOLOR]: pair.create('color', 'black')\n}\n\n/**\n * @param {Array<string|Symbol|Object|number|function():any>} args\n * @return {Array<string|object|number>}\n */\n/* c8 ignore start */\nconst computeBrowserLoggingArgs = (args) => {\n if (args.length === 1 && args[0]?.constructor === Function) {\n args = /** @type {Array<string|Symbol|Object|number>} */ (/** @type {[function]} */ (args)[0]())\n }\n const strBuilder = []\n const styles = []\n const currentStyle = map.create()\n /**\n * @type {Array<string|Object|number>}\n */\n let logArgs = []\n // try with formatting until we find something unsupported\n let i = 0\n for (; i < args.length; i++) {\n const arg = args[i]\n // @ts-ignore\n const style = _browserStyleMap[arg]\n if (style !== undefined) {\n currentStyle.set(style.left, style.right)\n } else {\n if (arg === undefined) {\n break\n }\n if (arg.constructor === String || arg.constructor === Number) {\n const style = dom.mapToStyleString(currentStyle)\n if (i > 0 || style.length > 0) {\n strBuilder.push('%c' + arg)\n styles.push(style)\n } else {\n strBuilder.push(arg)\n }\n } else {\n break\n }\n }\n }\n if (i > 0) {\n // create logArgs with what we have so far\n logArgs = styles\n logArgs.unshift(strBuilder.join(''))\n }\n // append the rest\n for (; i < args.length; i++) {\n const arg = args[i]\n if (!(arg instanceof Symbol)) {\n logArgs.push(arg)\n }\n }\n return logArgs\n}\n/* c8 ignore stop */\n\n/* c8 ignore start */\nconst computeLoggingArgs = env.supportsColor\n ? computeBrowserLoggingArgs\n : common.computeNoColorLoggingArgs\n/* c8 ignore stop */\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\nexport const print = (...args) => {\n console.log(...computeLoggingArgs(args))\n /* c8 ignore next */\n vconsoles.forEach((vc) => vc.print(args))\n}\n\n/* c8 ignore start */\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\nexport const warn = (...args) => {\n console.warn(...computeLoggingArgs(args))\n args.unshift(common.ORANGE)\n vconsoles.forEach((vc) => vc.print(args))\n}\n/* c8 ignore stop */\n\n/**\n * @param {Error} err\n */\n/* c8 ignore start */\nexport const printError = (err) => {\n console.error(err)\n vconsoles.forEach((vc) => vc.printError(err))\n}\n/* c8 ignore stop */\n\n/**\n * @param {string} url image location\n * @param {number} height height of the image in pixel\n */\n/* c8 ignore start */\nexport const printImg = (url, height) => {\n if (env.isBrowser) {\n console.log(\n '%c ',\n `font-size: ${height}px; background-size: contain; background-repeat: no-repeat; background-image: url(${url})`\n )\n // console.log('%c ', `font-size: ${height}x; background: url(${url}) no-repeat;`)\n }\n vconsoles.forEach((vc) => vc.printImg(url, height))\n}\n/* c8 ignore stop */\n\n/**\n * @param {string} base64\n * @param {number} height\n */\n/* c8 ignore next 2 */\nexport const printImgBase64 = (base64, height) =>\n printImg(`data:image/gif;base64,${base64}`, height)\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\nexport const group = (...args) => {\n console.group(...computeLoggingArgs(args))\n /* c8 ignore next */\n vconsoles.forEach((vc) => vc.group(args))\n}\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\nexport const groupCollapsed = (...args) => {\n console.groupCollapsed(...computeLoggingArgs(args))\n /* c8 ignore next */\n vconsoles.forEach((vc) => vc.groupCollapsed(args))\n}\n\nexport const groupEnd = () => {\n console.groupEnd()\n /* c8 ignore next */\n vconsoles.forEach((vc) => vc.groupEnd())\n}\n\n/**\n * @param {function():Node} createNode\n */\n/* c8 ignore next 2 */\nexport const printDom = (createNode) =>\n vconsoles.forEach((vc) => vc.printDom(createNode()))\n\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {number} height\n */\n/* c8 ignore next 2 */\nexport const printCanvas = (canvas, height) =>\n printImg(canvas.toDataURL(), height)\n\nexport const vconsoles = set.create()\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n * @return {Array<Element>}\n */\n/* c8 ignore start */\nconst _computeLineSpans = (args) => {\n const spans = []\n const currentStyle = new Map()\n // try with formatting until we find something unsupported\n let i = 0\n for (; i < args.length; i++) {\n let arg = args[i]\n // @ts-ignore\n const style = _browserStyleMap[arg]\n if (style !== undefined) {\n currentStyle.set(style.left, style.right)\n } else {\n if (arg === undefined) {\n arg = 'undefined '\n }\n if (arg.constructor === String || arg.constructor === Number) {\n // @ts-ignore\n const span = dom.element('span', [\n pair.create('style', dom.mapToStyleString(currentStyle))\n ], [dom.text(arg.toString())])\n if (span.innerHTML === '') {\n span.innerHTML = ' '\n }\n spans.push(span)\n } else {\n break\n }\n }\n }\n // append the rest\n for (; i < args.length; i++) {\n let content = args[i]\n if (!(content instanceof Symbol)) {\n if (content.constructor !== String && content.constructor !== Number) {\n content = ' ' + json.stringify(content) + ' '\n }\n spans.push(\n dom.element('span', [], [dom.text(/** @type {string} */ (content))])\n )\n }\n }\n return spans\n}\n/* c8 ignore stop */\n\nconst lineStyle =\n 'font-family:monospace;border-bottom:1px solid #e2e2e2;padding:2px;'\n\n/* c8 ignore start */\nexport class VConsole {\n /**\n * @param {Element} dom\n */\n constructor (dom) {\n this.dom = dom\n /**\n * @type {Element}\n */\n this.ccontainer = this.dom\n this.depth = 0\n vconsoles.add(this)\n }\n\n /**\n * @param {Array<string|Symbol|Object|number>} args\n * @param {boolean} collapsed\n */\n group (args, collapsed = false) {\n eventloop.enqueue(() => {\n const triangleDown = dom.element('span', [\n pair.create('hidden', collapsed),\n pair.create('style', 'color:grey;font-size:120%;')\n ], [dom.text('▼')])\n const triangleRight = dom.element('span', [\n pair.create('hidden', !collapsed),\n pair.create('style', 'color:grey;font-size:125%;')\n ], [dom.text('▶')])\n const content = dom.element(\n 'div',\n [pair.create(\n 'style',\n `${lineStyle};padding-left:${this.depth * 10}px`\n )],\n [triangleDown, triangleRight, dom.text(' ')].concat(\n _computeLineSpans(args)\n )\n )\n const nextContainer = dom.element('div', [\n pair.create('hidden', collapsed)\n ])\n const nextLine = dom.element('div', [], [content, nextContainer])\n dom.append(this.ccontainer, [nextLine])\n this.ccontainer = nextContainer\n this.depth++\n // when header is clicked, collapse/uncollapse container\n dom.addEventListener(content, 'click', (_event) => {\n nextContainer.toggleAttribute('hidden')\n triangleDown.toggleAttribute('hidden')\n triangleRight.toggleAttribute('hidden')\n })\n })\n }\n\n /**\n * @param {Array<string|Symbol|Object|number>} args\n */\n groupCollapsed (args) {\n this.group(args, true)\n }\n\n groupEnd () {\n eventloop.enqueue(() => {\n if (this.depth > 0) {\n this.depth--\n // @ts-ignore\n this.ccontainer = this.ccontainer.parentElement.parentElement\n }\n })\n }\n\n /**\n * @param {Array<string|Symbol|Object|number>} args\n */\n print (args) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [\n dom.element('div', [\n pair.create(\n 'style',\n `${lineStyle};padding-left:${this.depth * 10}px`\n )\n ], _computeLineSpans(args))\n ])\n })\n }\n\n /**\n * @param {Error} err\n */\n printError (err) {\n this.print([common.RED, common.BOLD, err.toString()])\n }\n\n /**\n * @param {string} url\n * @param {number} height\n */\n printImg (url, height) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [\n dom.element('img', [\n pair.create('src', url),\n pair.create('height', `${math.round(height * 1.5)}px`)\n ])\n ])\n })\n }\n\n /**\n * @param {Node} node\n */\n printDom (node) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [node])\n })\n }\n\n destroy () {\n eventloop.enqueue(() => {\n vconsoles.delete(this)\n })\n }\n}\n/* c8 ignore stop */\n\n/**\n * @param {Element} dom\n */\n/* c8 ignore next */\nexport const createVConsole = (dom) => new VConsole(dom)\n\n/**\n * @param {string} moduleName\n * @return {function(...any):void}\n */\nexport const createModuleLogger = (moduleName) => common.createModuleLogger(print, moduleName)\n","/**\n * Utility module to create and manipulate Iterators.\n *\n * @module iterator\n */\n\n/**\n * @template T,R\n * @param {Iterator<T>} iterator\n * @param {function(T):R} f\n * @return {IterableIterator<R>}\n */\nexport const mapIterator = (iterator, f) => ({\n [Symbol.iterator] () {\n return this\n },\n // @ts-ignore\n next () {\n const r = iterator.next()\n return { value: r.done ? undefined : f(r.value), done: r.done }\n }\n})\n\n/**\n * @template T\n * @param {function():IteratorResult<T>} next\n * @return {IterableIterator<T>}\n */\nexport const createIterator = next => ({\n /**\n * @return {IterableIterator<T>}\n */\n [Symbol.iterator] () {\n return this\n },\n // @ts-ignore\n next\n})\n\n/**\n * @template T\n * @param {Iterator<T>} iterator\n * @param {function(T):boolean} filter\n */\nexport const iteratorFilter = (iterator, filter) => createIterator(() => {\n let res\n do {\n res = iterator.next()\n } while (!res.done && !filter(res.value))\n return res\n})\n\n/**\n * @template T,M\n * @param {Iterator<T>} iterator\n * @param {function(T):M} fmap\n */\nexport const iteratorMap = (iterator, fmap) => createIterator(() => {\n const { done, value } = iterator.next()\n return { done, value: done ? undefined : fmap(value) }\n})\n","import { ObservableV2 } from 'lib0/observable';\nimport * as array from 'lib0/array';\nimport * as math from 'lib0/math';\nimport * as map from 'lib0/map';\nimport * as encoding from 'lib0/encoding';\nimport * as decoding from 'lib0/decoding';\nimport * as random from 'lib0/random';\nimport * as promise from 'lib0/promise';\nimport * as buffer from 'lib0/buffer';\nimport * as error from 'lib0/error';\nimport * as binary from 'lib0/binary';\nimport * as f from 'lib0/function';\nimport { callAll } from 'lib0/function';\nimport * as set from 'lib0/set';\nimport * as logging from 'lib0/logging';\nimport * as time from 'lib0/time';\nimport * as string from 'lib0/string';\nimport * as iterator from 'lib0/iterator';\nimport * as object from 'lib0/object';\n\n/**\n * This is an abstract interface that all Connectors should implement to keep them interchangeable.\n *\n * @note This interface is experimental and it is not advised to actually inherit this class.\n * It just serves as typing information.\n *\n * @extends {ObservableV2<any>}\n */\nclass AbstractConnector extends ObservableV2 {\n /**\n * @param {Doc} ydoc\n * @param {any} awareness\n */\n constructor (ydoc, awareness) {\n super();\n this.doc = ydoc;\n this.awareness = awareness;\n }\n}\n\nclass DeleteItem {\n /**\n * @param {number} clock\n * @param {number} len\n */\n constructor (clock, len) {\n /**\n * @type {number}\n */\n this.clock = clock;\n /**\n * @type {number}\n */\n this.len = len;\n }\n}\n\n/**\n * We no longer maintain a DeleteStore. DeleteSet is a temporary object that is created when needed.\n * - When created in a transaction, it must only be accessed after sorting, and merging\n * - This DeleteSet is send to other clients\n * - We do not create a DeleteSet when we send a sync message. The DeleteSet message is created directly from StructStore\n * - We read a DeleteSet as part of a sync/update message. In this case the DeleteSet is already sorted and merged.\n */\nclass DeleteSet {\n constructor () {\n /**\n * @type {Map<number,Array<DeleteItem>>}\n */\n this.clients = new Map();\n }\n}\n\n/**\n * Iterate over all structs that the DeleteSet gc's.\n *\n * @param {Transaction} transaction\n * @param {DeleteSet} ds\n * @param {function(GC|Item):void} f\n *\n * @function\n */\nconst iterateDeletedStructs = (transaction, ds, f) =>\n ds.clients.forEach((deletes, clientid) => {\n const structs = /** @type {Array<GC|Item>} */ (transaction.doc.store.clients.get(clientid));\n for (let i = 0; i < deletes.length; i++) {\n const del = deletes[i];\n iterateStructs(transaction, structs, del.clock, del.len, f);\n }\n });\n\n/**\n * @param {Array<DeleteItem>} dis\n * @param {number} clock\n * @return {number|null}\n *\n * @private\n * @function\n */\nconst findIndexDS = (dis, clock) => {\n let left = 0;\n let right = dis.length - 1;\n while (left <= right) {\n const midindex = math.floor((left + right) / 2);\n const mid = dis[midindex];\n const midclock = mid.clock;\n if (midclock <= clock) {\n if (clock < midclock + mid.len) {\n return midindex\n }\n left = midindex + 1;\n } else {\n right = midindex - 1;\n }\n }\n return null\n};\n\n/**\n * @param {DeleteSet} ds\n * @param {ID} id\n * @return {boolean}\n *\n * @private\n * @function\n */\nconst isDeleted = (ds, id) => {\n const dis = ds.clients.get(id.client);\n return dis !== undefined && findIndexDS(dis, id.clock) !== null\n};\n\n/**\n * @param {DeleteSet} ds\n *\n * @private\n * @function\n */\nconst sortAndMergeDeleteSet = ds => {\n ds.clients.forEach(dels => {\n dels.sort((a, b) => a.clock - b.clock);\n // merge items without filtering or splicing the array\n // i is the current pointer\n // j refers to the current insert position for the pointed item\n // try to merge dels[i] into dels[j-1] or set dels[j]=dels[i]\n let i, j;\n for (i = 1, j = 1; i < dels.length; i++) {\n const left = dels[j - 1];\n const right = dels[i];\n if (left.clock + left.len >= right.clock) {\n left.len = math.max(left.len, right.clock + right.len - left.clock);\n } else {\n if (j < i) {\n dels[j] = right;\n }\n j++;\n }\n }\n dels.length = j;\n });\n};\n\n/**\n * @param {Array<DeleteSet>} dss\n * @return {DeleteSet} A fresh DeleteSet\n */\nconst mergeDeleteSets = dss => {\n const merged = new DeleteSet();\n for (let dssI = 0; dssI < dss.length; dssI++) {\n dss[dssI].clients.forEach((delsLeft, client) => {\n if (!merged.clients.has(client)) {\n // Write all missing keys from current ds and all following.\n // If merged already contains `client` current ds has already been added.\n /**\n * @type {Array<DeleteItem>}\n */\n const dels = delsLeft.slice();\n for (let i = dssI + 1; i < dss.length; i++) {\n array.appendTo(dels, dss[i].clients.get(client) || []);\n }\n merged.clients.set(client, dels);\n }\n });\n }\n sortAndMergeDeleteSet(merged);\n return merged\n};\n\n/**\n * @param {DeleteSet} ds\n * @param {number} client\n * @param {number} clock\n * @param {number} length\n *\n * @private\n * @function\n */\nconst addToDeleteSet = (ds, client, clock, length) => {\n map.setIfUndefined(ds.clients, client, () => /** @type {Array<DeleteItem>} */ ([])).push(new DeleteItem(clock, length));\n};\n\nconst createDeleteSet = () => new DeleteSet();\n\n/**\n * @param {StructStore} ss\n * @return {DeleteSet} Merged and sorted DeleteSet\n *\n * @private\n * @function\n */\nconst createDeleteSetFromStructStore = ss => {\n const ds = createDeleteSet();\n ss.clients.forEach((structs, client) => {\n /**\n * @type {Array<DeleteItem>}\n */\n const dsitems = [];\n for (let i = 0; i < structs.length; i++) {\n const struct = structs[i];\n if (struct.deleted) {\n const clock = struct.id.clock;\n let len = struct.length;\n if (i + 1 < structs.length) {\n for (let next = structs[i + 1]; i + 1 < structs.length && next.deleted; next = structs[++i + 1]) {\n len += next.length;\n }\n }\n dsitems.push(new DeleteItem(clock, len));\n }\n }\n if (dsitems.length > 0) {\n ds.clients.set(client, dsitems);\n }\n });\n return ds\n};\n\n/**\n * @param {DSEncoderV1 | DSEncoderV2} encoder\n * @param {DeleteSet} ds\n *\n * @private\n * @function\n */\nconst writeDeleteSet = (encoder, ds) => {\n encoding.writeVarUint(encoder.restEncoder, ds.clients.size);\n\n // Ensure that the delete set is written in a deterministic order\n array.from(ds.clients.entries())\n .sort((a, b) => b[0] - a[0])\n .forEach(([client, dsitems]) => {\n encoder.resetDsCurVal();\n encoding.writeVarUint(encoder.restEncoder, client);\n const len = dsitems.length;\n encoding.writeVarUint(encoder.restEncoder, len);\n for (let i = 0; i < len; i++) {\n const item = dsitems[i];\n encoder.writeDsClock(item.clock);\n encoder.writeDsLen(item.len);\n }\n });\n};\n\n/**\n * @param {DSDecoderV1 | DSDecoderV2} decoder\n * @return {DeleteSet}\n *\n * @private\n * @function\n */\nconst readDeleteSet = decoder => {\n const ds = new DeleteSet();\n const numClients = decoding.readVarUint(decoder.restDecoder);\n for (let i = 0; i < numClients; i++) {\n decoder.resetDsCurVal();\n const client = decoding.readVarUint(decoder.restDecoder);\n const numberOfDeletes = decoding.readVarUint(decoder.restDecoder);\n if (numberOfDeletes > 0) {\n const dsField = map.setIfUndefined(ds.clients, client, () => /** @type {Array<DeleteItem>} */ ([]));\n for (let i = 0; i < numberOfDeletes; i++) {\n dsField.push(new DeleteItem(decoder.readDsClock(), decoder.readDsLen()));\n }\n }\n }\n return ds\n};\n\n/**\n * @todo YDecoder also contains references to String and other Decoders. Would make sense to exchange YDecoder.toUint8Array for YDecoder.DsToUint8Array()..\n */\n\n/**\n * @param {DSDecoderV1 | DSDecoderV2} decoder\n * @param {Transaction} transaction\n * @param {StructStore} store\n * @return {Uint8Array|null} Returns a v2 update containing all deletes that couldn't be applied yet; or null if all deletes were applied successfully.\n *\n * @private\n * @function\n */\nconst readAndApplyDeleteSet = (decoder, transaction, store) => {\n const unappliedDS = new DeleteSet();\n const numClients = decoding.readVarUint(decoder.restDecoder);\n for (let i = 0; i < numClients; i++) {\n decoder.resetDsCurVal();\n const client = decoding.readVarUint(decoder.restDecoder);\n const numberOfDeletes = decoding.readVarUint(decoder.restDecoder);\n const structs = store.clients.get(client) || [];\n const state = getState(store, client);\n for (let i = 0; i < numberOfDeletes; i++) {\n const clock = decoder.readDsClock();\n const clockEnd = clock + decoder.readDsLen();\n if (clock < state) {\n if (state < clockEnd) {\n addToDeleteSet(unappliedDS, client, state, clockEnd - state);\n }\n let index = findIndexSS(structs, clock);\n /**\n * We can ignore the case of GC and Delete structs, because we are going to skip them\n * @type {Item}\n */\n // @ts-ignore\n let struct = structs[index];\n // split the first item if necessary\n if (!struct.deleted && struct.id.clock < clock) {\n structs.splice(index + 1, 0, splitItem(transaction, struct, clock - struct.id.clock));\n index++; // increase we now want to use the next struct\n }\n while (index < structs.length) {\n // @ts-ignore\n struct = structs[index++];\n if (struct.id.clock < clockEnd) {\n if (!struct.deleted) {\n if (clockEnd < struct.id.clock + struct.length) {\n structs.splice(index, 0, splitItem(transaction, struct, clockEnd - struct.id.clock));\n }\n struct.delete(transaction);\n }\n } else {\n break\n }\n }\n } else {\n addToDeleteSet(unappliedDS, client, clock, clockEnd - clock);\n }\n }\n }\n if (unappliedDS.clients.size > 0) {\n const ds = new UpdateEncoderV2();\n encoding.writeVarUint(ds.restEncoder, 0); // encode 0 structs\n writeDeleteSet(ds, unappliedDS);\n return ds.toUint8Array()\n }\n return null\n};\n\n/**\n * @param {DeleteSet} ds1\n * @param {DeleteSet} ds2\n */\nconst equalDeleteSets = (ds1, ds2) => {\n if (ds1.clients.size !== ds2.clients.size) return false\n for (const [client, deleteItems1] of ds1.clients.entries()) {\n const deleteItems2 = /** @type {Array<import('../internals.js').DeleteItem>} */ (ds2.clients.get(client));\n if (deleteItems2 === undefined || deleteItems1.length !== deleteItems2.length) return false\n for (let i = 0; i < deleteItems1.length; i++) {\n const di1 = deleteItems1[i];\n const di2 = deleteItems2[i];\n if (di1.clock !== di2.clock || di1.len !== di2.len) {\n return false\n }\n }\n }\n return true\n};\n\n/**\n * @module Y\n */\n\n\nconst generateNewClientId = random.uint32;\n\n/**\n * @typedef {Object} DocOpts\n * @property {boolean} [DocOpts.gc=true] Disable garbage collection (default: gc=true)\n * @property {function(Item):boolean} [DocOpts.gcFilter] Will be called before an Item is garbage collected. Return false to keep the Item.\n * @property {string} [DocOpts.guid] Define a globally unique identifier for this document\n * @property {string | null} [DocOpts.collectionid] Associate this document with a collection. This only plays a role if your provider has a concept of collection.\n * @property {any} [DocOpts.meta] Any kind of meta information you want to associate with this document. If this is a subdocument, remote peers will store the meta information as well.\n * @property {boolean} [DocOpts.autoLoad] If a subdocument, automatically load document. If this is a subdocument, remote peers will load the document as well automatically.\n * @property {boolean} [DocOpts.shouldLoad] Whether the document should be synced by the provider now. This is toggled to true when you call ydoc.load()\n */\n\n/**\n * @typedef {Object} DocEvents\n * @property {function(Doc):void} DocEvents.destroy\n * @property {function(Doc):void} DocEvents.load\n * @property {function(boolean, Doc):void} DocEvents.sync\n * @property {function(Uint8Array, any, Doc, Transaction):void} DocEvents.update\n * @property {function(Uint8Array, any, Doc, Transaction):void} DocEvents.updateV2\n * @property {function(Doc):void} DocEvents.beforeAllTransactions\n * @property {function(Transaction, Doc):void} DocEvents.beforeTransaction\n * @property {function(Transaction, Doc):void} DocEvents.beforeObserverCalls\n * @property {function(Transaction, Doc):void} DocEvents.afterTransaction\n * @property {function(Transaction, Doc):void} DocEvents.afterTransactionCleanup\n * @property {function(Doc, Array<Transaction>):void} DocEvents.afterAllTransactions\n * @property {function({ loaded: Set<Doc>, added: Set<Doc>, removed: Set<Doc> }, Doc, Transaction):void} DocEvents.subdocs\n */\n\n/**\n * A Yjs instance handles the state of shared data.\n * @extends ObservableV2<DocEvents>\n */\nclass Doc extends ObservableV2 {\n /**\n * @param {DocOpts} opts configuration\n */\n constructor ({ guid = random.uuidv4(), collectionid = null, gc = true, gcFilter = () => true, meta = null, autoLoad = false, shouldLoad = true } = {}) {\n super();\n this.gc = gc;\n this.gcFilter = gcFilter;\n this.clientID = generateNewClientId();\n this.guid = guid;\n this.collectionid = collectionid;\n /**\n * @type {Map<string, AbstractType<YEvent<any>>>}\n */\n this.share = new Map();\n this.store = new StructStore();\n /**\n * @type {Transaction | null}\n */\n this._transaction = null;\n /**\n * @type {Array<Transaction>}\n */\n this._transactionCleanups = [];\n /**\n * @type {Set<Doc>}\n */\n this.subdocs = new Set();\n /**\n * If this document is a subdocument - a document integrated into another document - then _item is defined.\n * @type {Item?}\n */\n this._item = null;\n this.shouldLoad = shouldLoad;\n this.autoLoad = autoLoad;\n this.meta = meta;\n /**\n * This is set to true when the persistence provider loaded the document from the database or when the `sync` event fires.\n * Note that not all providers implement this feature. Provider authors are encouraged to fire the `load` event when the doc content is loaded from the database.\n *\n * @type {boolean}\n */\n this.isLoaded = false;\n /**\n * This is set to true when the connection provider has successfully synced with a backend.\n * Note that when using peer-to-peer providers this event may not provide very useful.\n * Also note that not all providers implement this feature. Provider authors are encouraged to fire\n * the `sync` event when the doc has been synced (with `true` as a parameter) or if connection is\n * lost (with false as a parameter).\n */\n this.isSynced = false;\n /**\n * Promise that resolves once the document has been loaded from a presistence provider.\n */\n this.whenLoaded = promise.create(resolve => {\n this.on('load', () => {\n this.isLoaded = true;\n resolve(this);\n });\n });\n const provideSyncedPromise = () => promise.create(resolve => {\n /**\n * @param {boolean} isSynced\n */\n const eventHandler = (isSynced) => {\n if (isSynced === undefined || isSynced === true) {\n this.off('sync', eventHandler);\n resolve();\n }\n };\n this.on('sync', eventHandler);\n });\n this.on('sync', isSynced => {\n if (isSynced === false && this.isSynced) {\n this.whenSynced = provideSyncedPromise();\n }\n this.isSynced = isSynced === undefined || isSynced === true;\n if (this.isSynced && !this.isLoaded) {\n this.emit('load', [this]);\n }\n });\n /**\n * Promise that resolves once the document has been synced with a backend.\n * This promise is recreated when the connection is lost.\n * Note the documentation about the `isSynced` property.\n */\n this.whenSynced = provideSyncedPromise();\n }\n\n /**\n * Notify the parent document that you request to load data into this subdocument (if it is a subdocument).\n *\n * `load()` might be used in the future to request any provider to load the most current data.\n *\n * It is safe to call `load()` multiple times.\n */\n load () {\n const item = this._item;\n if (item !== null && !this.shouldLoad) {\n transact(/** @type {any} */ (item.parent).doc, transaction => {\n transaction.subdocsLoaded.add(this);\n }, null, true);\n }\n this.shouldLoad = true;\n }\n\n getSubdocs () {\n return this.subdocs\n }\n\n getSubdocGuids () {\n return new Set(array.from(this.subdocs).map(doc => doc.guid))\n }\n\n /**\n * Changes that happen inside of a transaction are bundled. This means that\n * the observer fires _after_ the transaction is finished and that all changes\n * that happened inside of the transaction are sent as one message to the\n * other peers.\n *\n * @template T\n * @param {function(Transaction):T} f The function that should be executed as a transaction\n * @param {any} [origin] Origin of who started the transaction. Will be stored on transaction.origin\n * @return T\n *\n * @public\n */\n transact (f, origin = null) {\n return transact(this, f, origin)\n }\n\n /**\n * Define a shared data type.\n *\n * Multiple calls of `ydoc.get(name, TypeConstructor)` yield the same result\n * and do not overwrite each other. I.e.\n * `ydoc.get(name, Y.Array) === ydoc.get(name, Y.Array)`\n *\n * After this method is called, the type is also available on `ydoc.share.get(name)`.\n *\n * *Best Practices:*\n * Define all types right after the Y.Doc instance is created and store them in a separate object.\n * Also use the typed methods `getText(name)`, `getArray(name)`, ..\n *\n * @template {typeof AbstractType<any>} Type\n * @example\n * const ydoc = new Y.Doc(..)\n * const appState = {\n * document: ydoc.getText('document')\n * comments: ydoc.getArray('comments')\n * }\n *\n * @param {string} name\n * @param {Type} TypeConstructor The constructor of the type definition. E.g. Y.Text, Y.Array, Y.Map, ...\n * @return {InstanceType<Type>} The created type. Constructed with TypeConstructor\n *\n * @public\n */\n get (name, TypeConstructor = /** @type {any} */ (AbstractType)) {\n const type = map.setIfUndefined(this.share, name, () => {\n // @ts-ignore\n const t = new TypeConstructor();\n t._integrate(this, null);\n return t\n });\n const Constr = type.constructor;\n if (TypeConstructor !== AbstractType && Constr !== TypeConstructor) {\n if (Constr === AbstractType) {\n // @ts-ignore\n const t = new TypeConstructor();\n t._map = type._map;\n type._map.forEach(/** @param {Item?} n */ n => {\n for (; n !== null; n = n.left) {\n // @ts-ignore\n n.parent = t;\n }\n });\n t._start = type._start;\n for (let n = t._start; n !== null; n = n.right) {\n n.parent = t;\n }\n t._length = type._length;\n this.share.set(name, t);\n t._integrate(this, null);\n return /** @type {InstanceType<Type>} */ (t)\n } else {\n throw new Error(`Type with the name ${name} has already been defined with a different constructor`)\n }\n }\n return /** @type {InstanceType<Type>} */ (type)\n }\n\n /**\n * @template T\n * @param {string} [name]\n * @return {YArray<T>}\n *\n * @public\n */\n getArray (name = '') {\n return /** @type {YArray<T>} */ (this.get(name, YArray))\n }\n\n /**\n * @param {string} [name]\n * @return {YText}\n *\n * @public\n */\n getText (name = '') {\n return this.get(name, YText)\n }\n\n /**\n * @template T\n * @param {string} [name]\n * @return {YMap<T>}\n *\n * @public\n */\n getMap (name = '') {\n return /** @type {YMap<T>} */ (this.get(name, YMap))\n }\n\n /**\n * @param {string} [name]\n * @return {YXmlElement}\n *\n * @public\n */\n getXmlElement (name = '') {\n return /** @type {YXmlElement<{[key:string]:string}>} */ (this.get(name, YXmlElement))\n }\n\n /**\n * @param {string} [name]\n * @return {YXmlFragment}\n *\n * @public\n */\n getXmlFragment (name = '') {\n return this.get(name, YXmlFragment)\n }\n\n /**\n * Converts the entire document into a js object, recursively traversing each yjs type\n * Doesn't log types that have not been defined (using ydoc.getType(..)).\n *\n * @deprecated Do not use this method and rather call toJSON directly on the shared types.\n *\n * @return {Object<string, any>}\n */\n toJSON () {\n /**\n * @type {Object<string, any>}\n */\n const doc = {};\n\n this.share.forEach((value, key) => {\n doc[key] = value.toJSON();\n });\n\n return doc\n }\n\n /**\n * Emit `destroy` event and unregister all event handlers.\n */\n destroy () {\n array.from(this.subdocs).forEach(subdoc => subdoc.destroy());\n const item = this._item;\n if (item !== null) {\n this._item = null;\n const content = /** @type {ContentDoc} */ (item.content);\n content.doc = new Doc({ guid: this.guid, ...content.opts, shouldLoad: false });\n content.doc._item = item;\n transact(/** @type {any} */ (item).parent.doc, transaction => {\n const doc = content.doc;\n if (!item.deleted) {\n transaction.subdocsAdded.add(doc);\n }\n transaction.subdocsRemoved.add(this);\n }, null, true);\n }\n // @ts-ignore\n this.emit('destroyed', [true]); // DEPRECATED!\n this.emit('destroy', [this]);\n super.destroy();\n }\n}\n\nclass DSDecoderV1 {\n /**\n * @param {decoding.Decoder} decoder\n */\n constructor (decoder) {\n this.restDecoder = decoder;\n }\n\n resetDsCurVal () {\n // nop\n }\n\n /**\n * @return {number}\n */\n readDsClock () {\n return decoding.readVarUint(this.restDecoder)\n }\n\n /**\n * @return {number}\n */\n readDsLen () {\n return decoding.readVarUint(this.restDecoder)\n }\n}\n\nclass UpdateDecoderV1 extends DSDecoderV1 {\n /**\n * @return {ID}\n */\n readLeftID () {\n return createID(decoding.readVarUint(this.restDecoder), decoding.readVarUint(this.restDecoder))\n }\n\n /**\n * @return {ID}\n */\n readRightID () {\n return createID(decoding.readVarUint(this.restDecoder), decoding.readVarUint(this.restDecoder))\n }\n\n /**\n * Read the next client id.\n * Use this in favor of readID whenever possible to reduce the number of objects created.\n */\n readClient () {\n return decoding.readVarUint(this.restDecoder)\n }\n\n /**\n * @return {number} info An unsigned 8-bit integer\n */\n readInfo () {\n return decoding.readUint8(this.restDecoder)\n }\n\n /**\n * @return {string}\n */\n readString () {\n return decoding.readVarString(this.restDecoder)\n }\n\n /**\n * @return {boolean} isKey\n */\n readParentInfo () {\n return decoding.readVarUint(this.restDecoder) === 1\n }\n\n /**\n * @return {number} info An unsigned 8-bit integer\n */\n readTypeRef () {\n return decoding.readVarUint(this.restDecoder)\n }\n\n /**\n * Write len of a struct - well suited for Opt RLE encoder.\n *\n * @return {number} len\n */\n readLen () {\n return decoding.readVarUint(this.restDecoder)\n }\n\n /**\n * @return {any}\n */\n readAny () {\n return decoding.readAny(this.restDecoder)\n }\n\n /**\n * @return {Uint8Array}\n */\n readBuf () {\n return buffer.copyUint8Array(decoding.readVarUint8Array(this.restDecoder))\n }\n\n /**\n * Legacy implementation uses JSON parse. We use any-decoding in v2.\n *\n * @return {any}\n */\n readJSON () {\n return JSON.parse(decoding.readVarString(this.restDecoder))\n }\n\n /**\n * @return {string}\n */\n readKey () {\n return decoding.readVarString(this.restDecoder)\n }\n}\n\nclass DSDecoderV2 {\n /**\n * @param {decoding.Decoder} decoder\n */\n constructor (decoder) {\n /**\n * @private\n */\n this.dsCurrVal = 0;\n this.restDecoder = decoder;\n }\n\n resetDsCurVal () {\n this.dsCurrVal = 0;\n }\n\n /**\n * @return {number}\n */\n readDsClock () {\n this.dsCurrVal += decoding.readVarUint(this.restDecoder);\n return this.dsCurrVal\n }\n\n /**\n * @return {number}\n */\n readDsLen () {\n const diff = decoding.readVarUint(this.restDecoder) + 1;\n this.dsCurrVal += diff;\n return diff\n }\n}\n\nclass UpdateDecoderV2 extends DSDecoderV2 {\n /**\n * @param {decoding.Decoder} decoder\n */\n constructor (decoder) {\n super(decoder);\n /**\n * List of cached keys. If the keys[id] does not exist, we read a new key\n * from stringEncoder and push it to keys.\n *\n * @type {Array<string>}\n */\n this.keys = [];\n decoding.readVarUint(decoder); // read feature flag - currently unused\n this.keyClockDecoder = new decoding.IntDiffOptRleDecoder(decoding.readVarUint8Array(decoder));\n this.clientDecoder = new decoding.UintOptRleDecoder(decoding.readVarUint8Array(decoder));\n this.leftClockDecoder = new decoding.IntDiffOptRleDecoder(decoding.readVarUint8Array(decoder));\n this.rightClockDecoder = new decoding.IntDiffOptRleDecoder(decoding.readVarUint8Array(decoder));\n this.infoDecoder = new decoding.RleDecoder(decoding.readVarUint8Array(decoder), decoding.readUint8);\n this.stringDecoder = new decoding.StringDecoder(decoding.readVarUint8Array(decoder));\n this.parentInfoDecoder = new decoding.RleDecoder(decoding.readVarUint8Array(decoder), decoding.readUint8);\n this.typeRefDecoder = new decoding.UintOptRleDecoder(decoding.readVarUint8Array(decoder));\n this.lenDecoder = new decoding.UintOptRleDecoder(decoding.readVarUint8Array(decoder));\n }\n\n /**\n * @return {ID}\n */\n readLeftID () {\n return new ID(this.clientDecoder.read(), this.leftClockDecoder.read())\n }\n\n /**\n * @return {ID}\n */\n readRightID () {\n return new ID(this.clientDecoder.read(), this.rightClockDecoder.read())\n }\n\n /**\n * Read the next client id.\n * Use this in favor of readID whenever possible to reduce the number of objects created.\n */\n readClient () {\n return this.clientDecoder.read()\n }\n\n /**\n * @return {number} info An unsigned 8-bit integer\n */\n readInfo () {\n return /** @type {number} */ (this.infoDecoder.read())\n }\n\n /**\n * @return {string}\n */\n readString () {\n return this.stringDecoder.read()\n }\n\n /**\n * @return {boolean}\n */\n readParentInfo () {\n return this.parentInfoDecoder.read() === 1\n }\n\n /**\n * @return {number} An unsigned 8-bit integer\n */\n readTypeRef () {\n return this.typeRefDecoder.read()\n }\n\n /**\n * Write len of a struct - well suited for Opt RLE encoder.\n *\n * @return {number}\n */\n readLen () {\n return this.lenDecoder.read()\n }\n\n /**\n * @return {any}\n */\n readAny () {\n return decoding.readAny(this.restDecoder)\n }\n\n /**\n * @return {Uint8Array}\n */\n readBuf () {\n return decoding.readVarUint8Array(this.restDecoder)\n }\n\n /**\n * This is mainly here for legacy purposes.\n *\n * Initial we incoded objects using JSON. Now we use the much faster lib0/any-encoder. This method mainly exists for legacy purposes for the v1 encoder.\n *\n * @return {any}\n */\n readJSON () {\n return decoding.readAny(this.restDecoder)\n }\n\n /**\n * @return {string}\n */\n readKey () {\n const keyClock = this.keyClockDecoder.read();\n if (keyClock < this.keys.length) {\n return this.keys[keyClock]\n } else {\n const key = this.stringDecoder.read();\n this.keys.push(key);\n return key\n }\n }\n}\n\nclass DSEncoderV1 {\n constructor () {\n this.restEncoder = encoding.createEncoder();\n }\n\n toUint8Array () {\n return encoding.toUint8Array(this.restEncoder)\n }\n\n resetDsCurVal () {\n // nop\n }\n\n /**\n * @param {number} clock\n */\n writeDsClock (clock) {\n encoding.writeVarUint(this.restEncoder, clock);\n }\n\n /**\n * @param {number} len\n */\n writeDsLen (len) {\n encoding.writeVarUint(this.restEncoder, len);\n }\n}\n\nclass UpdateEncoderV1 extends DSEncoderV1 {\n /**\n * @param {ID} id\n */\n writeLeftID (id) {\n encoding.writeVarUint(this.restEncoder, id.client);\n encoding.writeVarUint(this.restEncoder, id.clock);\n }\n\n /**\n * @param {ID} id\n */\n writeRightID (id) {\n encoding.writeVarUint(this.restEncoder, id.client);\n encoding.writeVarUint(this.restEncoder, id.clock);\n }\n\n /**\n * Use writeClient and writeClock instead of writeID if possible.\n * @param {number} client\n */\n writeClient (client) {\n encoding.writeVarUint(this.restEncoder, client);\n }\n\n /**\n * @param {number} info An unsigned 8-bit integer\n */\n writeInfo (info) {\n encoding.writeUint8(this.restEncoder, info);\n }\n\n /**\n * @param {string} s\n */\n writeString (s) {\n encoding.writeVarString(this.restEncoder, s);\n }\n\n /**\n * @param {boolean} isYKey\n */\n writeParentInfo (isYKey) {\n encoding.writeVarUint(this.restEncoder, isYKey ? 1 : 0);\n }\n\n /**\n * @param {number} info An unsigned 8-bit integer\n */\n writeTypeRef (info) {\n encoding.writeVarUint(this.restEncoder, info);\n }\n\n /**\n * Write len of a struct - well suited for Opt RLE encoder.\n *\n * @param {number} len\n */\n writeLen (len) {\n encoding.writeVarUint(this.restEncoder, len);\n }\n\n /**\n * @param {any} any\n */\n writeAny (any) {\n encoding.writeAny(this.restEncoder, any);\n }\n\n /**\n * @param {Uint8Array} buf\n */\n writeBuf (buf) {\n encoding.writeVarUint8Array(this.restEncoder, buf);\n }\n\n /**\n * @param {any} embed\n */\n writeJSON (embed) {\n encoding.writeVarString(this.restEncoder, JSON.stringify(embed));\n }\n\n /**\n * @param {string} key\n */\n writeKey (key) {\n encoding.writeVarString(this.restEncoder, key);\n }\n}\n\nclass DSEncoderV2 {\n constructor () {\n this.restEncoder = encoding.createEncoder(); // encodes all the rest / non-optimized\n this.dsCurrVal = 0;\n }\n\n toUint8Array () {\n return encoding.toUint8Array(this.restEncoder)\n }\n\n resetDsCurVal () {\n this.dsCurrVal = 0;\n }\n\n /**\n * @param {number} clock\n */\n writeDsClock (clock) {\n const diff = clock - this.dsCurrVal;\n this.dsCurrVal = clock;\n encoding.writeVarUint(this.restEncoder, diff);\n }\n\n /**\n * @param {number} len\n */\n writeDsLen (len) {\n if (len === 0) {\n error.unexpectedCase();\n }\n encoding.writeVarUint(this.restEncoder, len - 1);\n this.dsCurrVal += len;\n }\n}\n\nclass UpdateEncoderV2 extends DSEncoderV2 {\n constructor () {\n super();\n /**\n * @type {Map<string,number>}\n */\n this.keyMap = new Map();\n /**\n * Refers to the next uniqe key-identifier to me used.\n * See writeKey method for more information.\n *\n * @type {number}\n */\n this.keyClock = 0;\n this.keyClockEncoder = new encoding.IntDiffOptRleEncoder();\n this.clientEncoder = new encoding.UintOptRleEncoder();\n this.leftClockEncoder = new encoding.IntDiffOptRleEncoder();\n this.rightClockEncoder = new encoding.IntDiffOptRleEncoder();\n this.infoEncoder = new encoding.RleEncoder(encoding.writeUint8);\n this.stringEncoder = new encoding.StringEncoder();\n this.parentInfoEncoder = new encoding.RleEncoder(encoding.writeUint8);\n this.typeRefEncoder = new encoding.UintOptRleEncoder();\n this.lenEncoder = new encoding.UintOptRleEncoder();\n }\n\n toUint8Array () {\n const encoder = encoding.createEncoder();\n encoding.writeVarUint(encoder, 0); // this is a feature flag that we might use in the future\n encoding.writeVarUint8Array(encoder, this.keyClockEncoder.toUint8Array());\n encoding.writeVarUint8Array(encoder, this.clientEncoder.toUint8Array());\n encoding.writeVarUint8Array(encoder, this.leftClockEncoder.toUint8Array());\n encoding.writeVarUint8Array(encoder, this.rightClockEncoder.toUint8Array());\n encoding.writeVarUint8Array(encoder, encoding.toUint8Array(this.infoEncoder));\n encoding.writeVarUint8Array(encoder, this.stringEncoder.toUint8Array());\n encoding.writeVarUint8Array(encoder, encoding.toUint8Array(this.parentInfoEncoder));\n encoding.writeVarUint8Array(encoder, this.typeRefEncoder.toUint8Array());\n encoding.writeVarUint8Array(encoder, this.lenEncoder.toUint8Array());\n // @note The rest encoder is appended! (note the missing var)\n encoding.writeUint8Array(encoder, encoding.toUint8Array(this.restEncoder));\n return encoding.toUint8Array(encoder)\n }\n\n /**\n * @param {ID} id\n */\n writeLeftID (id) {\n this.clientEncoder.write(id.client);\n this.leftClockEncoder.write(id.clock);\n }\n\n /**\n * @param {ID} id\n */\n writeRightID (id) {\n this.clientEncoder.write(id.client);\n this.rightClockEncoder.write(id.clock);\n }\n\n /**\n * @param {number} client\n */\n writeClient (client) {\n this.clientEncoder.write(client);\n }\n\n /**\n * @param {number} info An unsigned 8-bit integer\n */\n writeInfo (info) {\n this.infoEncoder.write(info);\n }\n\n /**\n * @param {string} s\n */\n writeString (s) {\n this.stringEncoder.write(s);\n }\n\n /**\n * @param {boolean} isYKey\n */\n writeParentInfo (isYKey) {\n this.parentInfoEncoder.write(isYKey ? 1 : 0);\n }\n\n /**\n * @param {number} info An unsigned 8-bit integer\n */\n writeTypeRef (info) {\n this.typeRefEncoder.write(info);\n }\n\n /**\n * Write len of a struct - well suited for Opt RLE encoder.\n *\n * @param {number} len\n */\n writeLen (len) {\n this.lenEncoder.write(len);\n }\n\n /**\n * @param {any} any\n */\n writeAny (any) {\n encoding.writeAny(this.restEncoder, any);\n }\n\n /**\n * @param {Uint8Array} buf\n */\n writeBuf (buf) {\n encoding.writeVarUint8Array(this.restEncoder, buf);\n }\n\n /**\n * This is mainly here for legacy purposes.\n *\n * Initial we incoded objects using JSON. Now we use the much faster lib0/any-encoder. This method mainly exists for legacy purposes for the v1 encoder.\n *\n * @param {any} embed\n */\n writeJSON (embed) {\n encoding.writeAny(this.restEncoder, embed);\n }\n\n /**\n * Property keys are often reused. For example, in y-prosemirror the key `bold` might\n * occur very often. For a 3d application, the key `position` might occur very often.\n *\n * We cache these keys in a Map and refer to them via a unique number.\n *\n * @param {string} key\n */\n writeKey (key) {\n const clock = this.keyMap.get(key);\n if (clock === undefined) {\n /**\n * @todo uncomment to introduce this feature finally\n *\n * Background. The ContentFormat object was always encoded using writeKey, but the decoder used to use readString.\n * Furthermore, I forgot to set the keyclock. So everything was working fine.\n *\n * However, this feature here is basically useless as it is not being used (it actually only consumes extra memory).\n *\n * I don't know yet how to reintroduce this feature..\n *\n * Older clients won't be able to read updates when we reintroduce this feature. So this should probably be done using a flag.\n *\n */\n // this.keyMap.set(key, this.keyClock)\n this.keyClockEncoder.write(this.keyClock++);\n this.stringEncoder.write(key);\n } else {\n this.keyClockEncoder.write(clock);\n }\n }\n}\n\n/**\n * @module encoding\n */\n/*\n * We use the first five bits in the info flag for determining the type of the struct.\n *\n * 0: GC\n * 1: Item with Deleted content\n * 2: Item with JSON content\n * 3: Item with Binary content\n * 4: Item with String content\n * 5: Item with Embed content (for richtext content)\n * 6: Item with Format content (a formatting marker for richtext content)\n * 7: Item with Type\n */\n\n\n/**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {Array<GC|Item>} structs All structs by `client`\n * @param {number} client\n * @param {number} clock write structs starting with `ID(client,clock)`\n *\n * @function\n */\nconst writeStructs = (encoder, structs, client, clock) => {\n // write first id\n clock = math.max(clock, structs[0].id.clock); // make sure the first id exists\n const startNewStructs = findIndexSS(structs, clock);\n // write # encoded structs\n encoding.writeVarUint(encoder.restEncoder, structs.length - startNewStructs);\n encoder.writeClient(client);\n encoding.writeVarUint(encoder.restEncoder, clock);\n const firstStruct = structs[startNewStructs];\n // write first struct with an offset\n firstStruct.write(encoder, clock - firstStruct.id.clock);\n for (let i = startNewStructs + 1; i < structs.length; i++) {\n structs[i].write(encoder, 0);\n }\n};\n\n/**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {StructStore} store\n * @param {Map<number,number>} _sm\n *\n * @private\n * @function\n */\nconst writeClientsStructs = (encoder, store, _sm) => {\n // we filter all valid _sm entries into sm\n const sm = new Map();\n _sm.forEach((clock, client) => {\n // only write if new structs are available\n if (getState(store, client) > clock) {\n sm.set(client, clock);\n }\n });\n getStateVector(store).forEach((_clock, client) => {\n if (!_sm.has(client)) {\n sm.set(client, 0);\n }\n });\n // write # states that were updated\n encoding.writeVarUint(encoder.restEncoder, sm.size);\n // Write items with higher client ids first\n // This heavily improves the conflict algorithm.\n array.from(sm.entries()).sort((a, b) => b[0] - a[0]).forEach(([client, clock]) => {\n writeStructs(encoder, /** @type {Array<GC|Item>} */ (store.clients.get(client)), client, clock);\n });\n};\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder The decoder object to read data from.\n * @param {Doc} doc\n * @return {Map<number, { i: number, refs: Array<Item | GC> }>}\n *\n * @private\n * @function\n */\nconst readClientsStructRefs = (decoder, doc) => {\n /**\n * @type {Map<number, { i: number, refs: Array<Item | GC> }>}\n */\n const clientRefs = map.create();\n const numOfStateUpdates = decoding.readVarUint(decoder.restDecoder);\n for (let i = 0; i < numOfStateUpdates; i++) {\n const numberOfStructs = decoding.readVarUint(decoder.restDecoder);\n /**\n * @type {Array<GC|Item>}\n */\n const refs = new Array(numberOfStructs);\n const client = decoder.readClient();\n let clock = decoding.readVarUint(decoder.restDecoder);\n // const start = performance.now()\n clientRefs.set(client, { i: 0, refs });\n for (let i = 0; i < numberOfStructs; i++) {\n const info = decoder.readInfo();\n switch (binary.BITS5 & info) {\n case 0: { // GC\n const len = decoder.readLen();\n refs[i] = new GC(createID(client, clock), len);\n clock += len;\n break\n }\n case 10: { // Skip Struct (nothing to apply)\n // @todo we could reduce the amount of checks by adding Skip struct to clientRefs so we know that something is missing.\n const len = decoding.readVarUint(decoder.restDecoder);\n refs[i] = new Skip(createID(client, clock), len);\n clock += len;\n break\n }\n default: { // Item with content\n /**\n * The optimized implementation doesn't use any variables because inlining variables is faster.\n * Below a non-optimized version is shown that implements the basic algorithm with\n * a few comments\n */\n const cantCopyParentInfo = (info & (binary.BIT7 | binary.BIT8)) === 0;\n // If parent = null and neither left nor right are defined, then we know that `parent` is child of `y`\n // and we read the next string as parentYKey.\n // It indicates how we store/retrieve parent from `y.share`\n // @type {string|null}\n const struct = new Item(\n createID(client, clock),\n null, // left\n (info & binary.BIT8) === binary.BIT8 ? decoder.readLeftID() : null, // origin\n null, // right\n (info & binary.BIT7) === binary.BIT7 ? decoder.readRightID() : null, // right origin\n cantCopyParentInfo ? (decoder.readParentInfo() ? doc.get(decoder.readString()) : decoder.readLeftID()) : null, // parent\n cantCopyParentInfo && (info & binary.BIT6) === binary.BIT6 ? decoder.readString() : null, // parentSub\n readItemContent(decoder, info) // item content\n );\n /* A non-optimized implementation of the above algorithm:\n\n // The item that was originally to the left of this item.\n const origin = (info & binary.BIT8) === binary.BIT8 ? decoder.readLeftID() : null\n // The item that was originally to the right of this item.\n const rightOrigin = (info & binary.BIT7) === binary.BIT7 ? decoder.readRightID() : null\n const cantCopyParentInfo = (info & (binary.BIT7 | binary.BIT8)) === 0\n const hasParentYKey = cantCopyParentInfo ? decoder.readParentInfo() : false\n // If parent = null and neither left nor right are defined, then we know that `parent` is child of `y`\n // and we read the next string as parentYKey.\n // It indicates how we store/retrieve parent from `y.share`\n // @type {string|null}\n const parentYKey = cantCopyParentInfo && hasParentYKey ? decoder.readString() : null\n\n const struct = new Item(\n createID(client, clock),\n null, // left\n origin, // origin\n null, // right\n rightOrigin, // right origin\n cantCopyParentInfo && !hasParentYKey ? decoder.readLeftID() : (parentYKey !== null ? doc.get(parentYKey) : null), // parent\n cantCopyParentInfo && (info & binary.BIT6) === binary.BIT6 ? decoder.readString() : null, // parentSub\n readItemContent(decoder, info) // item content\n )\n */\n refs[i] = struct;\n clock += struct.length;\n }\n }\n }\n // console.log('time to read: ', performance.now() - start) // @todo remove\n }\n return clientRefs\n};\n\n/**\n * Resume computing structs generated by struct readers.\n *\n * While there is something to do, we integrate structs in this order\n * 1. top element on stack, if stack is not empty\n * 2. next element from current struct reader (if empty, use next struct reader)\n *\n * If struct causally depends on another struct (ref.missing), we put next reader of\n * `ref.id.client` on top of stack.\n *\n * At some point we find a struct that has no causal dependencies,\n * then we start emptying the stack.\n *\n * It is not possible to have circles: i.e. struct1 (from client1) depends on struct2 (from client2)\n * depends on struct3 (from client1). Therefore the max stack size is eqaul to `structReaders.length`.\n *\n * This method is implemented in a way so that we can resume computation if this update\n * causally depends on another update.\n *\n * @param {Transaction} transaction\n * @param {StructStore} store\n * @param {Map<number, { i: number, refs: (GC | Item)[] }>} clientsStructRefs\n * @return { null | { update: Uint8Array, missing: Map<number,number> } }\n *\n * @private\n * @function\n */\nconst integrateStructs = (transaction, store, clientsStructRefs) => {\n /**\n * @type {Array<Item | GC>}\n */\n const stack = [];\n // sort them so that we take the higher id first, in case of conflicts the lower id will probably not conflict with the id from the higher user.\n let clientsStructRefsIds = array.from(clientsStructRefs.keys()).sort((a, b) => a - b);\n if (clientsStructRefsIds.length === 0) {\n return null\n }\n const getNextStructTarget = () => {\n if (clientsStructRefsIds.length === 0) {\n return null\n }\n let nextStructsTarget = /** @type {{i:number,refs:Array<GC|Item>}} */ (clientsStructRefs.get(clientsStructRefsIds[clientsStructRefsIds.length - 1]));\n while (nextStructsTarget.refs.length === nextStructsTarget.i) {\n clientsStructRefsIds.pop();\n if (clientsStructRefsIds.length > 0) {\n nextStructsTarget = /** @type {{i:number,refs:Array<GC|Item>}} */ (clientsStructRefs.get(clientsStructRefsIds[clientsStructRefsIds.length - 1]));\n } else {\n return null\n }\n }\n return nextStructsTarget\n };\n let curStructsTarget = getNextStructTarget();\n if (curStructsTarget === null) {\n return null\n }\n\n /**\n * @type {StructStore}\n */\n const restStructs = new StructStore();\n const missingSV = new Map();\n /**\n * @param {number} client\n * @param {number} clock\n */\n const updateMissingSv = (client, clock) => {\n const mclock = missingSV.get(client);\n if (mclock == null || mclock > clock) {\n missingSV.set(client, clock);\n }\n };\n /**\n * @type {GC|Item}\n */\n let stackHead = /** @type {any} */ (curStructsTarget).refs[/** @type {any} */ (curStructsTarget).i++];\n // caching the state because it is used very often\n const state = new Map();\n\n const addStackToRestSS = () => {\n for (const item of stack) {\n const client = item.id.client;\n const unapplicableItems = clientsStructRefs.get(client);\n if (unapplicableItems) {\n // decrement because we weren't able to apply previous operation\n unapplicableItems.i--;\n restStructs.clients.set(client, unapplicableItems.refs.slice(unapplicableItems.i));\n clientsStructRefs.delete(client);\n unapplicableItems.i = 0;\n unapplicableItems.refs = [];\n } else {\n // item was the last item on clientsStructRefs and the field was already cleared. Add item to restStructs and continue\n restStructs.clients.set(client, [item]);\n }\n // remove client from clientsStructRefsIds to prevent users from applying the same update again\n clientsStructRefsIds = clientsStructRefsIds.filter(c => c !== client);\n }\n stack.length = 0;\n };\n\n // iterate over all struct readers until we are done\n while (true) {\n if (stackHead.constructor !== Skip) {\n const localClock = map.setIfUndefined(state, stackHead.id.client, () => getState(store, stackHead.id.client));\n const offset = localClock - stackHead.id.clock;\n if (offset < 0) {\n // update from the same client is missing\n stack.push(stackHead);\n updateMissingSv(stackHead.id.client, stackHead.id.clock - 1);\n // hid a dead wall, add all items from stack to restSS\n addStackToRestSS();\n } else {\n const missing = stackHead.getMissing(transaction, store);\n if (missing !== null) {\n stack.push(stackHead);\n // get the struct reader that has the missing struct\n /**\n * @type {{ refs: Array<GC|Item>, i: number }}\n */\n const structRefs = clientsStructRefs.get(/** @type {number} */ (missing)) || { refs: [], i: 0 };\n if (structRefs.refs.length === structRefs.i) {\n // This update message causally depends on another update message that doesn't exist yet\n updateMissingSv(/** @type {number} */ (missing), getState(store, missing));\n addStackToRestSS();\n } else {\n stackHead = structRefs.refs[structRefs.i++];\n continue\n }\n } else if (offset === 0 || offset < stackHead.length) {\n // all fine, apply the stackhead\n stackHead.integrate(transaction, offset);\n state.set(stackHead.id.client, stackHead.id.clock + stackHead.length);\n }\n }\n }\n // iterate to next stackHead\n if (stack.length > 0) {\n stackHead = /** @type {GC|Item} */ (stack.pop());\n } else if (curStructsTarget !== null && curStructsTarget.i < curStructsTarget.refs.length) {\n stackHead = /** @type {GC|Item} */ (curStructsTarget.refs[curStructsTarget.i++]);\n } else {\n curStructsTarget = getNextStructTarget();\n if (curStructsTarget === null) {\n // we are done!\n break\n } else {\n stackHead = /** @type {GC|Item} */ (curStructsTarget.refs[curStructsTarget.i++]);\n }\n }\n }\n if (restStructs.clients.size > 0) {\n const encoder = new UpdateEncoderV2();\n writeClientsStructs(encoder, restStructs, new Map());\n // write empty deleteset\n // writeDeleteSet(encoder, new DeleteSet())\n encoding.writeVarUint(encoder.restEncoder, 0); // => no need for an extra function call, just write 0 deletes\n return { missing: missingSV, update: encoder.toUint8Array() }\n }\n return null\n};\n\n/**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {Transaction} transaction\n *\n * @private\n * @function\n */\nconst writeStructsFromTransaction = (encoder, transaction) => writeClientsStructs(encoder, transaction.doc.store, transaction.beforeState);\n\n/**\n * Read and apply a document update.\n *\n * This function has the same effect as `applyUpdate` but accepts a decoder.\n *\n * @param {decoding.Decoder} decoder\n * @param {Doc} ydoc\n * @param {any} [transactionOrigin] This will be stored on `transaction.origin` and `.on('update', (update, origin))`\n * @param {UpdateDecoderV1 | UpdateDecoderV2} [structDecoder]\n *\n * @function\n */\nconst readUpdateV2 = (decoder, ydoc, transactionOrigin, structDecoder = new UpdateDecoderV2(decoder)) =>\n transact(ydoc, transaction => {\n // force that transaction.local is set to non-local\n transaction.local = false;\n let retry = false;\n const doc = transaction.doc;\n const store = doc.store;\n // let start = performance.now()\n const ss = readClientsStructRefs(structDecoder, doc);\n // console.log('time to read structs: ', performance.now() - start) // @todo remove\n // start = performance.now()\n // console.log('time to merge: ', performance.now() - start) // @todo remove\n // start = performance.now()\n const restStructs = integrateStructs(transaction, store, ss);\n const pending = store.pendingStructs;\n if (pending) {\n // check if we can apply something\n for (const [client, clock] of pending.missing) {\n if (clock < getState(store, client)) {\n retry = true;\n break\n }\n }\n if (restStructs) {\n // merge restStructs into store.pending\n for (const [client, clock] of restStructs.missing) {\n const mclock = pending.missing.get(client);\n if (mclock == null || mclock > clock) {\n pending.missing.set(client, clock);\n }\n }\n pending.update = mergeUpdatesV2([pending.update, restStructs.update]);\n }\n } else {\n store.pendingStructs = restStructs;\n }\n // console.log('time to integrate: ', performance.now() - start) // @todo remove\n // start = performance.now()\n const dsRest = readAndApplyDeleteSet(structDecoder, transaction, store);\n if (store.pendingDs) {\n // @todo we could make a lower-bound state-vector check as we do above\n const pendingDSUpdate = new UpdateDecoderV2(decoding.createDecoder(store.pendingDs));\n decoding.readVarUint(pendingDSUpdate.restDecoder); // read 0 structs, because we only encode deletes in pendingdsupdate\n const dsRest2 = readAndApplyDeleteSet(pendingDSUpdate, transaction, store);\n if (dsRest && dsRest2) {\n // case 1: ds1 != null && ds2 != null\n store.pendingDs = mergeUpdatesV2([dsRest, dsRest2]);\n } else {\n // case 2: ds1 != null\n // case 3: ds2 != null\n // case 4: ds1 == null && ds2 == null\n store.pendingDs = dsRest || dsRest2;\n }\n } else {\n // Either dsRest == null && pendingDs == null OR dsRest != null\n store.pendingDs = dsRest;\n }\n // console.log('time to cleanup: ', performance.now() - start) // @todo remove\n // start = performance.now()\n\n // console.log('time to resume delete readers: ', performance.now() - start) // @todo remove\n // start = performance.now()\n if (retry) {\n const update = /** @type {{update: Uint8Array}} */ (store.pendingStructs).update;\n store.pendingStructs = null;\n applyUpdateV2(transaction.doc, update);\n }\n }, transactionOrigin, false);\n\n/**\n * Read and apply a document update.\n *\n * This function has the same effect as `applyUpdate` but accepts a decoder.\n *\n * @param {decoding.Decoder} decoder\n * @param {Doc} ydoc\n * @param {any} [transactionOrigin] This will be stored on `transaction.origin` and `.on('update', (update, origin))`\n *\n * @function\n */\nconst readUpdate = (decoder, ydoc, transactionOrigin) => readUpdateV2(decoder, ydoc, transactionOrigin, new UpdateDecoderV1(decoder));\n\n/**\n * Apply a document update created by, for example, `y.on('update', update => ..)` or `update = encodeStateAsUpdate()`.\n *\n * This function has the same effect as `readUpdate` but accepts an Uint8Array instead of a Decoder.\n *\n * @param {Doc} ydoc\n * @param {Uint8Array} update\n * @param {any} [transactionOrigin] This will be stored on `transaction.origin` and `.on('update', (update, origin))`\n * @param {typeof UpdateDecoderV1 | typeof UpdateDecoderV2} [YDecoder]\n *\n * @function\n */\nconst applyUpdateV2 = (ydoc, update, transactionOrigin, YDecoder = UpdateDecoderV2) => {\n const decoder = decoding.createDecoder(update);\n readUpdateV2(decoder, ydoc, transactionOrigin, new YDecoder(decoder));\n};\n\n/**\n * Apply a document update created by, for example, `y.on('update', update => ..)` or `update = encodeStateAsUpdate()`.\n *\n * This function has the same effect as `readUpdate` but accepts an Uint8Array instead of a Decoder.\n *\n * @param {Doc} ydoc\n * @param {Uint8Array} update\n * @param {any} [transactionOrigin] This will be stored on `transaction.origin` and `.on('update', (update, origin))`\n *\n * @function\n */\nconst applyUpdate = (ydoc, update, transactionOrigin) => applyUpdateV2(ydoc, update, transactionOrigin, UpdateDecoderV1);\n\n/**\n * Write all the document as a single update message. If you specify the state of the remote client (`targetStateVector`) it will\n * only write the operations that are missing.\n *\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {Doc} doc\n * @param {Map<number,number>} [targetStateVector] The state of the target that receives the update. Leave empty to write all known structs\n *\n * @function\n */\nconst writeStateAsUpdate = (encoder, doc, targetStateVector = new Map()) => {\n writeClientsStructs(encoder, doc.store, targetStateVector);\n writeDeleteSet(encoder, createDeleteSetFromStructStore(doc.store));\n};\n\n/**\n * Write all the document as a single update message that can be applied on the remote document. If you specify the state of the remote client (`targetState`) it will\n * only write the operations that are missing.\n *\n * Use `writeStateAsUpdate` instead if you are working with lib0/encoding.js#Encoder\n *\n * @param {Doc} doc\n * @param {Uint8Array} [encodedTargetStateVector] The state of the target that receives the update. Leave empty to write all known structs\n * @param {UpdateEncoderV1 | UpdateEncoderV2} [encoder]\n * @return {Uint8Array}\n *\n * @function\n */\nconst encodeStateAsUpdateV2 = (doc, encodedTargetStateVector = new Uint8Array([0]), encoder = new UpdateEncoderV2()) => {\n const targetStateVector = decodeStateVector(encodedTargetStateVector);\n writeStateAsUpdate(encoder, doc, targetStateVector);\n const updates = [encoder.toUint8Array()];\n // also add the pending updates (if there are any)\n if (doc.store.pendingDs) {\n updates.push(doc.store.pendingDs);\n }\n if (doc.store.pendingStructs) {\n updates.push(diffUpdateV2(doc.store.pendingStructs.update, encodedTargetStateVector));\n }\n if (updates.length > 1) {\n if (encoder.constructor === UpdateEncoderV1) {\n return mergeUpdates(updates.map((update, i) => i === 0 ? update : convertUpdateFormatV2ToV1(update)))\n } else if (encoder.constructor === UpdateEncoderV2) {\n return mergeUpdatesV2(updates)\n }\n }\n return updates[0]\n};\n\n/**\n * Write all the document as a single update message that can be applied on the remote document. If you specify the state of the remote client (`targetState`) it will\n * only write the operations that are missing.\n *\n * Use `writeStateAsUpdate` instead if you are working with lib0/encoding.js#Encoder\n *\n * @param {Doc} doc\n * @param {Uint8Array} [encodedTargetStateVector] The state of the target that receives the update. Leave empty to write all known structs\n * @return {Uint8Array}\n *\n * @function\n */\nconst encodeStateAsUpdate = (doc, encodedTargetStateVector) => encodeStateAsUpdateV2(doc, encodedTargetStateVector, new UpdateEncoderV1());\n\n/**\n * Read state vector from Decoder and return as Map\n *\n * @param {DSDecoderV1 | DSDecoderV2} decoder\n * @return {Map<number,number>} Maps `client` to the number next expected `clock` from that client.\n *\n * @function\n */\nconst readStateVector = decoder => {\n const ss = new Map();\n const ssLength = decoding.readVarUint(decoder.restDecoder);\n for (let i = 0; i < ssLength; i++) {\n const client = decoding.readVarUint(decoder.restDecoder);\n const clock = decoding.readVarUint(decoder.restDecoder);\n ss.set(client, clock);\n }\n return ss\n};\n\n/**\n * Read decodedState and return State as Map.\n *\n * @param {Uint8Array} decodedState\n * @return {Map<number,number>} Maps `client` to the number next expected `clock` from that client.\n *\n * @function\n */\n// export const decodeStateVectorV2 = decodedState => readStateVector(new DSDecoderV2(decoding.createDecoder(decodedState)))\n\n/**\n * Read decodedState and return State as Map.\n *\n * @param {Uint8Array} decodedState\n * @return {Map<number,number>} Maps `client` to the number next expected `clock` from that client.\n *\n * @function\n */\nconst decodeStateVector = decodedState => readStateVector(new DSDecoderV1(decoding.createDecoder(decodedState)));\n\n/**\n * @param {DSEncoderV1 | DSEncoderV2} encoder\n * @param {Map<number,number>} sv\n * @function\n */\nconst writeStateVector = (encoder, sv) => {\n encoding.writeVarUint(encoder.restEncoder, sv.size);\n array.from(sv.entries()).sort((a, b) => b[0] - a[0]).forEach(([client, clock]) => {\n encoding.writeVarUint(encoder.restEncoder, client); // @todo use a special client decoder that is based on mapping\n encoding.writeVarUint(encoder.restEncoder, clock);\n });\n return encoder\n};\n\n/**\n * @param {DSEncoderV1 | DSEncoderV2} encoder\n * @param {Doc} doc\n *\n * @function\n */\nconst writeDocumentStateVector = (encoder, doc) => writeStateVector(encoder, getStateVector(doc.store));\n\n/**\n * Encode State as Uint8Array.\n *\n * @param {Doc|Map<number,number>} doc\n * @param {DSEncoderV1 | DSEncoderV2} [encoder]\n * @return {Uint8Array}\n *\n * @function\n */\nconst encodeStateVectorV2 = (doc, encoder = new DSEncoderV2()) => {\n if (doc instanceof Map) {\n writeStateVector(encoder, doc);\n } else {\n writeDocumentStateVector(encoder, doc);\n }\n return encoder.toUint8Array()\n};\n\n/**\n * Encode State as Uint8Array.\n *\n * @param {Doc|Map<number,number>} doc\n * @return {Uint8Array}\n *\n * @function\n */\nconst encodeStateVector = doc => encodeStateVectorV2(doc, new DSEncoderV1());\n\n/**\n * General event handler implementation.\n *\n * @template ARG0, ARG1\n *\n * @private\n */\nclass EventHandler {\n constructor () {\n /**\n * @type {Array<function(ARG0, ARG1):void>}\n */\n this.l = [];\n }\n}\n\n/**\n * @template ARG0,ARG1\n * @returns {EventHandler<ARG0,ARG1>}\n *\n * @private\n * @function\n */\nconst createEventHandler = () => new EventHandler();\n\n/**\n * Adds an event listener that is called when\n * {@link EventHandler#callEventListeners} is called.\n *\n * @template ARG0,ARG1\n * @param {EventHandler<ARG0,ARG1>} eventHandler\n * @param {function(ARG0,ARG1):void} f The event handler.\n *\n * @private\n * @function\n */\nconst addEventHandlerListener = (eventHandler, f) =>\n eventHandler.l.push(f);\n\n/**\n * Removes an event listener.\n *\n * @template ARG0,ARG1\n * @param {EventHandler<ARG0,ARG1>} eventHandler\n * @param {function(ARG0,ARG1):void} f The event handler that was added with\n * {@link EventHandler#addEventListener}\n *\n * @private\n * @function\n */\nconst removeEventHandlerListener = (eventHandler, f) => {\n const l = eventHandler.l;\n const len = l.length;\n eventHandler.l = l.filter(g => f !== g);\n if (len === eventHandler.l.length) {\n console.error('[yjs] Tried to remove event handler that doesn\\'t exist.');\n }\n};\n\n/**\n * Call all event listeners that were added via\n * {@link EventHandler#addEventListener}.\n *\n * @template ARG0,ARG1\n * @param {EventHandler<ARG0,ARG1>} eventHandler\n * @param {ARG0} arg0\n * @param {ARG1} arg1\n *\n * @private\n * @function\n */\nconst callEventHandlerListeners = (eventHandler, arg0, arg1) =>\n f.callAll(eventHandler.l, [arg0, arg1]);\n\nclass ID {\n /**\n * @param {number} client client id\n * @param {number} clock unique per client id, continuous number\n */\n constructor (client, clock) {\n /**\n * Client id\n * @type {number}\n */\n this.client = client;\n /**\n * unique per client id, continuous number\n * @type {number}\n */\n this.clock = clock;\n }\n}\n\n/**\n * @param {ID | null} a\n * @param {ID | null} b\n * @return {boolean}\n *\n * @function\n */\nconst compareIDs = (a, b) => a === b || (a !== null && b !== null && a.client === b.client && a.clock === b.clock);\n\n/**\n * @param {number} client\n * @param {number} clock\n *\n * @private\n * @function\n */\nconst createID = (client, clock) => new ID(client, clock);\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {ID} id\n *\n * @private\n * @function\n */\nconst writeID = (encoder, id) => {\n encoding.writeVarUint(encoder, id.client);\n encoding.writeVarUint(encoder, id.clock);\n};\n\n/**\n * Read ID.\n * * If first varUint read is 0xFFFFFF a RootID is returned.\n * * Otherwise an ID is returned\n *\n * @param {decoding.Decoder} decoder\n * @return {ID}\n *\n * @private\n * @function\n */\nconst readID = decoder =>\n createID(decoding.readVarUint(decoder), decoding.readVarUint(decoder));\n\n/**\n * The top types are mapped from y.share.get(keyname) => type.\n * `type` does not store any information about the `keyname`.\n * This function finds the correct `keyname` for `type` and throws otherwise.\n *\n * @param {AbstractType<any>} type\n * @return {string}\n *\n * @private\n * @function\n */\nconst findRootTypeKey = type => {\n // @ts-ignore _y must be defined, otherwise unexpected case\n for (const [key, value] of type.doc.share.entries()) {\n if (value === type) {\n return key\n }\n }\n throw error.unexpectedCase()\n};\n\n/**\n * Check if `parent` is a parent of `child`.\n *\n * @param {AbstractType<any>} parent\n * @param {Item|null} child\n * @return {Boolean} Whether `parent` is a parent of `child`.\n *\n * @private\n * @function\n */\nconst isParentOf = (parent, child) => {\n while (child !== null) {\n if (child.parent === parent) {\n return true\n }\n child = /** @type {AbstractType<any>} */ (child.parent)._item;\n }\n return false\n};\n\n/**\n * Convenient helper to log type information.\n *\n * Do not use in productive systems as the output can be immense!\n *\n * @param {AbstractType<any>} type\n */\nconst logType = type => {\n const res = [];\n let n = type._start;\n while (n) {\n res.push(n);\n n = n.right;\n }\n console.log('Children: ', res);\n console.log('Children content: ', res.filter(m => !m.deleted).map(m => m.content));\n};\n\nclass PermanentUserData {\n /**\n * @param {Doc} doc\n * @param {YMap<any>} [storeType]\n */\n constructor (doc, storeType = doc.getMap('users')) {\n /**\n * @type {Map<string,DeleteSet>}\n */\n const dss = new Map();\n this.yusers = storeType;\n this.doc = doc;\n /**\n * Maps from clientid to userDescription\n *\n * @type {Map<number,string>}\n */\n this.clients = new Map();\n this.dss = dss;\n /**\n * @param {YMap<any>} user\n * @param {string} userDescription\n */\n const initUser = (user, userDescription) => {\n /**\n * @type {YArray<Uint8Array>}\n */\n const ds = user.get('ds');\n const ids = user.get('ids');\n const addClientId = /** @param {number} clientid */ clientid => this.clients.set(clientid, userDescription);\n ds.observe(/** @param {YArrayEvent<any>} event */ event => {\n event.changes.added.forEach(item => {\n item.content.getContent().forEach(encodedDs => {\n if (encodedDs instanceof Uint8Array) {\n this.dss.set(userDescription, mergeDeleteSets([this.dss.get(userDescription) || createDeleteSet(), readDeleteSet(new DSDecoderV1(decoding.createDecoder(encodedDs)))]));\n }\n });\n });\n });\n this.dss.set(userDescription, mergeDeleteSets(ds.map(encodedDs => readDeleteSet(new DSDecoderV1(decoding.createDecoder(encodedDs))))));\n ids.observe(/** @param {YArrayEvent<any>} event */ event =>\n event.changes.added.forEach(item => item.content.getContent().forEach(addClientId))\n );\n ids.forEach(addClientId);\n };\n // observe users\n storeType.observe(event => {\n event.keysChanged.forEach(userDescription =>\n initUser(storeType.get(userDescription), userDescription)\n );\n });\n // add intial data\n storeType.forEach(initUser);\n }\n\n /**\n * @param {Doc} doc\n * @param {number} clientid\n * @param {string} userDescription\n * @param {Object} conf\n * @param {function(Transaction, DeleteSet):boolean} [conf.filter]\n */\n setUserMapping (doc, clientid, userDescription, { filter = () => true } = {}) {\n const users = this.yusers;\n let user = users.get(userDescription);\n if (!user) {\n user = new YMap();\n user.set('ids', new YArray());\n user.set('ds', new YArray());\n users.set(userDescription, user);\n }\n user.get('ids').push([clientid]);\n users.observe(_event => {\n setTimeout(() => {\n const userOverwrite = users.get(userDescription);\n if (userOverwrite !== user) {\n // user was overwritten, port all data over to the next user object\n // @todo Experiment with Y.Sets here\n user = userOverwrite;\n // @todo iterate over old type\n this.clients.forEach((_userDescription, clientid) => {\n if (userDescription === _userDescription) {\n user.get('ids').push([clientid]);\n }\n });\n const encoder = new DSEncoderV1();\n const ds = this.dss.get(userDescription);\n if (ds) {\n writeDeleteSet(encoder, ds);\n user.get('ds').push([encoder.toUint8Array()]);\n }\n }\n }, 0);\n });\n doc.on('afterTransaction', /** @param {Transaction} transaction */ transaction => {\n setTimeout(() => {\n const yds = user.get('ds');\n const ds = transaction.deleteSet;\n if (transaction.local && ds.clients.size > 0 && filter(transaction, ds)) {\n const encoder = new DSEncoderV1();\n writeDeleteSet(encoder, ds);\n yds.push([encoder.toUint8Array()]);\n }\n });\n });\n }\n\n /**\n * @param {number} clientid\n * @return {any}\n */\n getUserByClientId (clientid) {\n return this.clients.get(clientid) || null\n }\n\n /**\n * @param {ID} id\n * @return {string | null}\n */\n getUserByDeletedId (id) {\n for (const [userDescription, ds] of this.dss.entries()) {\n if (isDeleted(ds, id)) {\n return userDescription\n }\n }\n return null\n }\n}\n\n/**\n * A relative position is based on the Yjs model and is not affected by document changes.\n * E.g. If you place a relative position before a certain character, it will always point to this character.\n * If you place a relative position at the end of a type, it will always point to the end of the type.\n *\n * A numeric position is often unsuited for user selections, because it does not change when content is inserted\n * before or after.\n *\n * ```Insert(0, 'x')('a|bc') = 'xa|bc'``` Where | is the relative position.\n *\n * One of the properties must be defined.\n *\n * @example\n * // Current cursor position is at position 10\n * const relativePosition = createRelativePositionFromIndex(yText, 10)\n * // modify yText\n * yText.insert(0, 'abc')\n * yText.delete(3, 10)\n * // Compute the cursor position\n * const absolutePosition = createAbsolutePositionFromRelativePosition(y, relativePosition)\n * absolutePosition.type === yText // => true\n * console.log('cursor location is ' + absolutePosition.index) // => cursor location is 3\n *\n */\nclass RelativePosition {\n /**\n * @param {ID|null} type\n * @param {string|null} tname\n * @param {ID|null} item\n * @param {number} assoc\n */\n constructor (type, tname, item, assoc = 0) {\n /**\n * @type {ID|null}\n */\n this.type = type;\n /**\n * @type {string|null}\n */\n this.tname = tname;\n /**\n * @type {ID | null}\n */\n this.item = item;\n /**\n * A relative position is associated to a specific character. By default\n * assoc >= 0, the relative position is associated to the character\n * after the meant position.\n * I.e. position 1 in 'ab' is associated to character 'b'.\n *\n * If assoc < 0, then the relative position is associated to the caharacter\n * before the meant position.\n *\n * @type {number}\n */\n this.assoc = assoc;\n }\n}\n\n/**\n * @param {RelativePosition} rpos\n * @return {any}\n */\nconst relativePositionToJSON = rpos => {\n const json = {};\n if (rpos.type) {\n json.type = rpos.type;\n }\n if (rpos.tname) {\n json.tname = rpos.tname;\n }\n if (rpos.item) {\n json.item = rpos.item;\n }\n if (rpos.assoc != null) {\n json.assoc = rpos.assoc;\n }\n return json\n};\n\n/**\n * @param {any} json\n * @return {RelativePosition}\n *\n * @function\n */\nconst createRelativePositionFromJSON = json => new RelativePosition(json.type == null ? null : createID(json.type.client, json.type.clock), json.tname ?? null, json.item == null ? null : createID(json.item.client, json.item.clock), json.assoc == null ? 0 : json.assoc);\n\nclass AbsolutePosition {\n /**\n * @param {AbstractType<any>} type\n * @param {number} index\n * @param {number} [assoc]\n */\n constructor (type, index, assoc = 0) {\n /**\n * @type {AbstractType<any>}\n */\n this.type = type;\n /**\n * @type {number}\n */\n this.index = index;\n this.assoc = assoc;\n }\n}\n\n/**\n * @param {AbstractType<any>} type\n * @param {number} index\n * @param {number} [assoc]\n *\n * @function\n */\nconst createAbsolutePosition = (type, index, assoc = 0) => new AbsolutePosition(type, index, assoc);\n\n/**\n * @param {AbstractType<any>} type\n * @param {ID|null} item\n * @param {number} [assoc]\n *\n * @function\n */\nconst createRelativePosition = (type, item, assoc) => {\n let typeid = null;\n let tname = null;\n if (type._item === null) {\n tname = findRootTypeKey(type);\n } else {\n typeid = createID(type._item.id.client, type._item.id.clock);\n }\n return new RelativePosition(typeid, tname, item, assoc)\n};\n\n/**\n * Create a relativePosition based on a absolute position.\n *\n * @param {AbstractType<any>} type The base type (e.g. YText or YArray).\n * @param {number} index The absolute position.\n * @param {number} [assoc]\n * @return {RelativePosition}\n *\n * @function\n */\nconst createRelativePositionFromTypeIndex = (type, index, assoc = 0) => {\n let t = type._start;\n if (assoc < 0) {\n // associated to the left character or the beginning of a type, increment index if possible.\n if (index === 0) {\n return createRelativePosition(type, null, assoc)\n }\n index--;\n }\n while (t !== null) {\n if (!t.deleted && t.countable) {\n if (t.length > index) {\n // case 1: found position somewhere in the linked list\n return createRelativePosition(type, createID(t.id.client, t.id.clock + index), assoc)\n }\n index -= t.length;\n }\n if (t.right === null && assoc < 0) {\n // left-associated position, return last available id\n return createRelativePosition(type, t.lastId, assoc)\n }\n t = t.right;\n }\n return createRelativePosition(type, null, assoc)\n};\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {RelativePosition} rpos\n *\n * @function\n */\nconst writeRelativePosition = (encoder, rpos) => {\n const { type, tname, item, assoc } = rpos;\n if (item !== null) {\n encoding.writeVarUint(encoder, 0);\n writeID(encoder, item);\n } else if (tname !== null) {\n // case 2: found position at the end of the list and type is stored in y.share\n encoding.writeUint8(encoder, 1);\n encoding.writeVarString(encoder, tname);\n } else if (type !== null) {\n // case 3: found position at the end of the list and type is attached to an item\n encoding.writeUint8(encoder, 2);\n writeID(encoder, type);\n } else {\n throw error.unexpectedCase()\n }\n encoding.writeVarInt(encoder, assoc);\n return encoder\n};\n\n/**\n * @param {RelativePosition} rpos\n * @return {Uint8Array}\n */\nconst encodeRelativePosition = rpos => {\n const encoder = encoding.createEncoder();\n writeRelativePosition(encoder, rpos);\n return encoding.toUint8Array(encoder)\n};\n\n/**\n * @param {decoding.Decoder} decoder\n * @return {RelativePosition}\n *\n * @function\n */\nconst readRelativePosition = decoder => {\n let type = null;\n let tname = null;\n let itemID = null;\n switch (decoding.readVarUint(decoder)) {\n case 0:\n // case 1: found position somewhere in the linked list\n itemID = readID(decoder);\n break\n case 1:\n // case 2: found position at the end of the list and type is stored in y.share\n tname = decoding.readVarString(decoder);\n break\n case 2: {\n // case 3: found position at the end of the list and type is attached to an item\n type = readID(decoder);\n }\n }\n const assoc = decoding.hasContent(decoder) ? decoding.readVarInt(decoder) : 0;\n return new RelativePosition(type, tname, itemID, assoc)\n};\n\n/**\n * @param {Uint8Array} uint8Array\n * @return {RelativePosition}\n */\nconst decodeRelativePosition = uint8Array => readRelativePosition(decoding.createDecoder(uint8Array));\n\n/**\n * Transform a relative position to an absolute position.\n *\n * If you want to share the relative position with other users, you should set\n * `followUndoneDeletions` to false to get consistent results across all clients.\n *\n * When calculating the absolute position, we try to follow the \"undone deletions\". This yields\n * better results for the user who performed undo. However, only the user who performed the undo\n * will get the better results, the other users don't know which operations recreated a deleted\n * range of content. There is more information in this ticket: https://github.com/yjs/yjs/issues/638\n *\n * @param {RelativePosition} rpos\n * @param {Doc} doc\n * @param {boolean} followUndoneDeletions - whether to follow undone deletions - see https://github.com/yjs/yjs/issues/638\n * @return {AbsolutePosition|null}\n *\n * @function\n */\nconst createAbsolutePositionFromRelativePosition = (rpos, doc, followUndoneDeletions = true) => {\n const store = doc.store;\n const rightID = rpos.item;\n const typeID = rpos.type;\n const tname = rpos.tname;\n const assoc = rpos.assoc;\n let type = null;\n let index = 0;\n if (rightID !== null) {\n if (getState(store, rightID.client) <= rightID.clock) {\n return null\n }\n const res = followUndoneDeletions ? followRedone(store, rightID) : { item: getItem(store, rightID), diff: 0 };\n const right = res.item;\n if (!(right instanceof Item)) {\n return null\n }\n type = /** @type {AbstractType<any>} */ (right.parent);\n if (type._item === null || !type._item.deleted) {\n index = (right.deleted || !right.countable) ? 0 : (res.diff + (assoc >= 0 ? 0 : 1)); // adjust position based on left association if necessary\n let n = right.left;\n while (n !== null) {\n if (!n.deleted && n.countable) {\n index += n.length;\n }\n n = n.left;\n }\n }\n } else {\n if (tname !== null) {\n type = doc.get(tname);\n } else if (typeID !== null) {\n if (getState(store, typeID.client) <= typeID.clock) {\n // type does not exist yet\n return null\n }\n const { item } = followUndoneDeletions ? followRedone(store, typeID) : { item: getItem(store, typeID) };\n if (item instanceof Item && item.content instanceof ContentType) {\n type = item.content.type;\n } else {\n // struct is garbage collected\n return null\n }\n } else {\n throw error.unexpectedCase()\n }\n if (assoc >= 0) {\n index = type._length;\n } else {\n index = 0;\n }\n }\n return createAbsolutePosition(type, index, rpos.assoc)\n};\n\n/**\n * @param {RelativePosition|null} a\n * @param {RelativePosition|null} b\n * @return {boolean}\n *\n * @function\n */\nconst compareRelativePositions = (a, b) => a === b || (\n a !== null && b !== null && a.tname === b.tname && compareIDs(a.item, b.item) && compareIDs(a.type, b.type) && a.assoc === b.assoc\n);\n\nclass Snapshot {\n /**\n * @param {DeleteSet} ds\n * @param {Map<number,number>} sv state map\n */\n constructor (ds, sv) {\n /**\n * @type {DeleteSet}\n */\n this.ds = ds;\n /**\n * State Map\n * @type {Map<number,number>}\n */\n this.sv = sv;\n }\n}\n\n/**\n * @param {Snapshot} snap1\n * @param {Snapshot} snap2\n * @return {boolean}\n */\nconst equalSnapshots = (snap1, snap2) => {\n const ds1 = snap1.ds.clients;\n const ds2 = snap2.ds.clients;\n const sv1 = snap1.sv;\n const sv2 = snap2.sv;\n if (sv1.size !== sv2.size || ds1.size !== ds2.size) {\n return false\n }\n for (const [key, value] of sv1.entries()) {\n if (sv2.get(key) !== value) {\n return false\n }\n }\n for (const [client, dsitems1] of ds1.entries()) {\n const dsitems2 = ds2.get(client) || [];\n if (dsitems1.length !== dsitems2.length) {\n return false\n }\n for (let i = 0; i < dsitems1.length; i++) {\n const dsitem1 = dsitems1[i];\n const dsitem2 = dsitems2[i];\n if (dsitem1.clock !== dsitem2.clock || dsitem1.len !== dsitem2.len) {\n return false\n }\n }\n }\n return true\n};\n\n/**\n * @param {Snapshot} snapshot\n * @param {DSEncoderV1 | DSEncoderV2} [encoder]\n * @return {Uint8Array}\n */\nconst encodeSnapshotV2 = (snapshot, encoder = new DSEncoderV2()) => {\n writeDeleteSet(encoder, snapshot.ds);\n writeStateVector(encoder, snapshot.sv);\n return encoder.toUint8Array()\n};\n\n/**\n * @param {Snapshot} snapshot\n * @return {Uint8Array}\n */\nconst encodeSnapshot = snapshot => encodeSnapshotV2(snapshot, new DSEncoderV1());\n\n/**\n * @param {Uint8Array} buf\n * @param {DSDecoderV1 | DSDecoderV2} [decoder]\n * @return {Snapshot}\n */\nconst decodeSnapshotV2 = (buf, decoder = new DSDecoderV2(decoding.createDecoder(buf))) => {\n return new Snapshot(readDeleteSet(decoder), readStateVector(decoder))\n};\n\n/**\n * @param {Uint8Array} buf\n * @return {Snapshot}\n */\nconst decodeSnapshot = buf => decodeSnapshotV2(buf, new DSDecoderV1(decoding.createDecoder(buf)));\n\n/**\n * @param {DeleteSet} ds\n * @param {Map<number,number>} sm\n * @return {Snapshot}\n */\nconst createSnapshot = (ds, sm) => new Snapshot(ds, sm);\n\nconst emptySnapshot = createSnapshot(createDeleteSet(), new Map());\n\n/**\n * @param {Doc} doc\n * @return {Snapshot}\n */\nconst snapshot = doc => createSnapshot(createDeleteSetFromStructStore(doc.store), getStateVector(doc.store));\n\n/**\n * @param {Item} item\n * @param {Snapshot|undefined} snapshot\n *\n * @protected\n * @function\n */\nconst isVisible = (item, snapshot) => snapshot === undefined\n ? !item.deleted\n : snapshot.sv.has(item.id.client) && (snapshot.sv.get(item.id.client) || 0) > item.id.clock && !isDeleted(snapshot.ds, item.id);\n\n/**\n * @param {Transaction} transaction\n * @param {Snapshot} snapshot\n */\nconst splitSnapshotAffectedStructs = (transaction, snapshot) => {\n const meta = map.setIfUndefined(transaction.meta, splitSnapshotAffectedStructs, set.create);\n const store = transaction.doc.store;\n // check if we already split for this snapshot\n if (!meta.has(snapshot)) {\n snapshot.sv.forEach((clock, client) => {\n if (clock < getState(store, client)) {\n getItemCleanStart(transaction, createID(client, clock));\n }\n });\n iterateDeletedStructs(transaction, snapshot.ds, _item => {});\n meta.add(snapshot);\n }\n};\n\n/**\n * @example\n * const ydoc = new Y.Doc({ gc: false })\n * ydoc.getText().insert(0, 'world!')\n * const snapshot = Y.snapshot(ydoc)\n * ydoc.getText().insert(0, 'hello ')\n * const restored = Y.createDocFromSnapshot(ydoc, snapshot)\n * assert(restored.getText().toString() === 'world!')\n *\n * @param {Doc} originDoc\n * @param {Snapshot} snapshot\n * @param {Doc} [newDoc] Optionally, you may define the Yjs document that receives the data from originDoc\n * @return {Doc}\n */\nconst createDocFromSnapshot = (originDoc, snapshot, newDoc = new Doc()) => {\n if (originDoc.gc) {\n // we should not try to restore a GC-ed document, because some of the restored items might have their content deleted\n throw new Error('Garbage-collection must be disabled in `originDoc`!')\n }\n const { sv, ds } = snapshot;\n\n const encoder = new UpdateEncoderV2();\n originDoc.transact(transaction => {\n let size = 0;\n sv.forEach(clock => {\n if (clock > 0) {\n size++;\n }\n });\n encoding.writeVarUint(encoder.restEncoder, size);\n // splitting the structs before writing them to the encoder\n for (const [client, clock] of sv) {\n if (clock === 0) {\n continue\n }\n if (clock < getState(originDoc.store, client)) {\n getItemCleanStart(transaction, createID(client, clock));\n }\n const structs = originDoc.store.clients.get(client) || [];\n const lastStructIndex = findIndexSS(structs, clock - 1);\n // write # encoded structs\n encoding.writeVarUint(encoder.restEncoder, lastStructIndex + 1);\n encoder.writeClient(client);\n // first clock written is 0\n encoding.writeVarUint(encoder.restEncoder, 0);\n for (let i = 0; i <= lastStructIndex; i++) {\n structs[i].write(encoder, 0);\n }\n }\n writeDeleteSet(encoder, ds);\n });\n\n applyUpdateV2(newDoc, encoder.toUint8Array(), 'snapshot');\n return newDoc\n};\n\n/**\n * @param {Snapshot} snapshot\n * @param {Uint8Array} update\n * @param {typeof UpdateDecoderV2 | typeof UpdateDecoderV1} [YDecoder]\n */\nconst snapshotContainsUpdateV2 = (snapshot, update, YDecoder = UpdateDecoderV2) => {\n const updateDecoder = new YDecoder(decoding.createDecoder(update));\n const lazyDecoder = new LazyStructReader(updateDecoder, false);\n for (let curr = lazyDecoder.curr; curr !== null; curr = lazyDecoder.next()) {\n if ((snapshot.sv.get(curr.id.client) || 0) < curr.id.clock + curr.length) {\n return false\n }\n }\n const mergedDS = mergeDeleteSets([snapshot.ds, readDeleteSet(updateDecoder)]);\n return equalDeleteSets(snapshot.ds, mergedDS)\n};\n\n/**\n * @param {Snapshot} snapshot\n * @param {Uint8Array} update\n */\nconst snapshotContainsUpdate = (snapshot, update) => snapshotContainsUpdateV2(snapshot, update, UpdateDecoderV1);\n\nclass StructStore {\n constructor () {\n /**\n * @type {Map<number,Array<GC|Item>>}\n */\n this.clients = new Map();\n /**\n * @type {null | { missing: Map<number, number>, update: Uint8Array }}\n */\n this.pendingStructs = null;\n /**\n * @type {null | Uint8Array}\n */\n this.pendingDs = null;\n }\n}\n\n/**\n * Return the states as a Map<client,clock>.\n * Note that clock refers to the next expected clock id.\n *\n * @param {StructStore} store\n * @return {Map<number,number>}\n *\n * @public\n * @function\n */\nconst getStateVector = store => {\n const sm = new Map();\n store.clients.forEach((structs, client) => {\n const struct = structs[structs.length - 1];\n sm.set(client, struct.id.clock + struct.length);\n });\n return sm\n};\n\n/**\n * @param {StructStore} store\n * @param {number} client\n * @return {number}\n *\n * @public\n * @function\n */\nconst getState = (store, client) => {\n const structs = store.clients.get(client);\n if (structs === undefined) {\n return 0\n }\n const lastStruct = structs[structs.length - 1];\n return lastStruct.id.clock + lastStruct.length\n};\n\n/**\n * @param {StructStore} store\n * @param {GC|Item} struct\n *\n * @private\n * @function\n */\nconst addStruct = (store, struct) => {\n let structs = store.clients.get(struct.id.client);\n if (structs === undefined) {\n structs = [];\n store.clients.set(struct.id.client, structs);\n } else {\n const lastStruct = structs[structs.length - 1];\n if (lastStruct.id.clock + lastStruct.length !== struct.id.clock) {\n throw error.unexpectedCase()\n }\n }\n structs.push(struct);\n};\n\n/**\n * Perform a binary search on a sorted array\n * @param {Array<Item|GC>} structs\n * @param {number} clock\n * @return {number}\n *\n * @private\n * @function\n */\nconst findIndexSS = (structs, clock) => {\n let left = 0;\n let right = structs.length - 1;\n let mid = structs[right];\n let midclock = mid.id.clock;\n if (midclock === clock) {\n return right\n }\n // @todo does it even make sense to pivot the search?\n // If a good split misses, it might actually increase the time to find the correct item.\n // Currently, the only advantage is that search with pivoting might find the item on the first try.\n let midindex = math.floor((clock / (midclock + mid.length - 1)) * right); // pivoting the search\n while (left <= right) {\n mid = structs[midindex];\n midclock = mid.id.clock;\n if (midclock <= clock) {\n if (clock < midclock + mid.length) {\n return midindex\n }\n left = midindex + 1;\n } else {\n right = midindex - 1;\n }\n midindex = math.floor((left + right) / 2);\n }\n // Always check state before looking for a struct in StructStore\n // Therefore the case of not finding a struct is unexpected\n throw error.unexpectedCase()\n};\n\n/**\n * Expects that id is actually in store. This function throws or is an infinite loop otherwise.\n *\n * @param {StructStore} store\n * @param {ID} id\n * @return {GC|Item}\n *\n * @private\n * @function\n */\nconst find = (store, id) => {\n /**\n * @type {Array<GC|Item>}\n */\n // @ts-ignore\n const structs = store.clients.get(id.client);\n return structs[findIndexSS(structs, id.clock)]\n};\n\n/**\n * Expects that id is actually in store. This function throws or is an infinite loop otherwise.\n * @private\n * @function\n */\nconst getItem = /** @type {function(StructStore,ID):Item} */ (find);\n\n/**\n * @param {Transaction} transaction\n * @param {Array<Item|GC>} structs\n * @param {number} clock\n */\nconst findIndexCleanStart = (transaction, structs, clock) => {\n const index = findIndexSS(structs, clock);\n const struct = structs[index];\n if (struct.id.clock < clock && struct instanceof Item) {\n structs.splice(index + 1, 0, splitItem(transaction, struct, clock - struct.id.clock));\n return index + 1\n }\n return index\n};\n\n/**\n * Expects that id is actually in store. This function throws or is an infinite loop otherwise.\n *\n * @param {Transaction} transaction\n * @param {ID} id\n * @return {Item}\n *\n * @private\n * @function\n */\nconst getItemCleanStart = (transaction, id) => {\n const structs = /** @type {Array<Item>} */ (transaction.doc.store.clients.get(id.client));\n return structs[findIndexCleanStart(transaction, structs, id.clock)]\n};\n\n/**\n * Expects that id is actually in store. This function throws or is an infinite loop otherwise.\n *\n * @param {Transaction} transaction\n * @param {StructStore} store\n * @param {ID} id\n * @return {Item}\n *\n * @private\n * @function\n */\nconst getItemCleanEnd = (transaction, store, id) => {\n /**\n * @type {Array<Item>}\n */\n // @ts-ignore\n const structs = store.clients.get(id.client);\n const index = findIndexSS(structs, id.clock);\n const struct = structs[index];\n if (id.clock !== struct.id.clock + struct.length - 1 && struct.constructor !== GC) {\n structs.splice(index + 1, 0, splitItem(transaction, struct, id.clock - struct.id.clock + 1));\n }\n return struct\n};\n\n/**\n * Replace `item` with `newitem` in store\n * @param {StructStore} store\n * @param {GC|Item} struct\n * @param {GC|Item} newStruct\n *\n * @private\n * @function\n */\nconst replaceStruct = (store, struct, newStruct) => {\n const structs = /** @type {Array<GC|Item>} */ (store.clients.get(struct.id.client));\n structs[findIndexSS(structs, struct.id.clock)] = newStruct;\n};\n\n/**\n * Iterate over a range of structs\n *\n * @param {Transaction} transaction\n * @param {Array<Item|GC>} structs\n * @param {number} clockStart Inclusive start\n * @param {number} len\n * @param {function(GC|Item):void} f\n *\n * @function\n */\nconst iterateStructs = (transaction, structs, clockStart, len, f) => {\n if (len === 0) {\n return\n }\n const clockEnd = clockStart + len;\n let index = findIndexCleanStart(transaction, structs, clockStart);\n let struct;\n do {\n struct = structs[index++];\n if (clockEnd < struct.id.clock + struct.length) {\n findIndexCleanStart(transaction, structs, clockEnd);\n }\n f(struct);\n } while (index < structs.length && structs[index].id.clock < clockEnd)\n};\n\n/**\n * A transaction is created for every change on the Yjs model. It is possible\n * to bundle changes on the Yjs model in a single transaction to\n * minimize the number on messages sent and the number of observer calls.\n * If possible the user of this library should bundle as many changes as\n * possible. Here is an example to illustrate the advantages of bundling:\n *\n * @example\n * const ydoc = new Y.Doc()\n * const map = ydoc.getMap('map')\n * // Log content when change is triggered\n * map.observe(() => {\n * console.log('change triggered')\n * })\n * // Each change on the map type triggers a log message:\n * map.set('a', 0) // => \"change triggered\"\n * map.set('b', 0) // => \"change triggered\"\n * // When put in a transaction, it will trigger the log after the transaction:\n * ydoc.transact(() => {\n * map.set('a', 1)\n * map.set('b', 1)\n * }) // => \"change triggered\"\n *\n * @public\n */\nclass Transaction {\n /**\n * @param {Doc} doc\n * @param {any} origin\n * @param {boolean} local\n */\n constructor (doc, origin, local) {\n /**\n * The Yjs instance.\n * @type {Doc}\n */\n this.doc = doc;\n /**\n * Describes the set of deleted items by ids\n * @type {DeleteSet}\n */\n this.deleteSet = new DeleteSet();\n /**\n * Holds the state before the transaction started.\n * @type {Map<Number,Number>}\n */\n this.beforeState = getStateVector(doc.store);\n /**\n * Holds the state after the transaction.\n * @type {Map<Number,Number>}\n */\n this.afterState = new Map();\n /**\n * All types that were directly modified (property added or child\n * inserted/deleted). New types are not included in this Set.\n * Maps from type to parentSubs (`item.parentSub = null` for YArray)\n * @type {Map<AbstractType<YEvent<any>>,Set<String|null>>}\n */\n this.changed = new Map();\n /**\n * Stores the events for the types that observe also child elements.\n * It is mainly used by `observeDeep`.\n * @type {Map<AbstractType<YEvent<any>>,Array<YEvent<any>>>}\n */\n this.changedParentTypes = new Map();\n /**\n * @type {Array<AbstractStruct>}\n */\n this._mergeStructs = [];\n /**\n * @type {any}\n */\n this.origin = origin;\n /**\n * Stores meta information on the transaction\n * @type {Map<any,any>}\n */\n this.meta = new Map();\n /**\n * Whether this change originates from this doc.\n * @type {boolean}\n */\n this.local = local;\n /**\n * @type {Set<Doc>}\n */\n this.subdocsAdded = new Set();\n /**\n * @type {Set<Doc>}\n */\n this.subdocsRemoved = new Set();\n /**\n * @type {Set<Doc>}\n */\n this.subdocsLoaded = new Set();\n /**\n * @type {boolean}\n */\n this._needFormattingCleanup = false;\n }\n}\n\n/**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {Transaction} transaction\n * @return {boolean} Whether data was written.\n */\nconst writeUpdateMessageFromTransaction = (encoder, transaction) => {\n if (transaction.deleteSet.clients.size === 0 && !map.any(transaction.afterState, (clock, client) => transaction.beforeState.get(client) !== clock)) {\n return false\n }\n sortAndMergeDeleteSet(transaction.deleteSet);\n writeStructsFromTransaction(encoder, transaction);\n writeDeleteSet(encoder, transaction.deleteSet);\n return true\n};\n\n/**\n * If `type.parent` was added in current transaction, `type` technically\n * did not change, it was just added and we should not fire events for `type`.\n *\n * @param {Transaction} transaction\n * @param {AbstractType<YEvent<any>>} type\n * @param {string|null} parentSub\n */\nconst addChangedTypeToTransaction = (transaction, type, parentSub) => {\n const item = type._item;\n if (item === null || (item.id.clock < (transaction.beforeState.get(item.id.client) || 0) && !item.deleted)) {\n map.setIfUndefined(transaction.changed, type, set.create).add(parentSub);\n }\n};\n\n/**\n * @param {Array<AbstractStruct>} structs\n * @param {number} pos\n * @return {number} # of merged structs\n */\nconst tryToMergeWithLefts = (structs, pos) => {\n let right = structs[pos];\n let left = structs[pos - 1];\n let i = pos;\n for (; i > 0; right = left, left = structs[--i - 1]) {\n if (left.deleted === right.deleted && left.constructor === right.constructor) {\n if (left.mergeWith(right)) {\n if (right instanceof Item && right.parentSub !== null && /** @type {AbstractType<any>} */ (right.parent)._map.get(right.parentSub) === right) {\n /** @type {AbstractType<any>} */ (right.parent)._map.set(right.parentSub, /** @type {Item} */ (left));\n }\n continue\n }\n }\n break\n }\n const merged = pos - i;\n if (merged) {\n // remove all merged structs from the array\n structs.splice(pos + 1 - merged, merged);\n }\n return merged\n};\n\n/**\n * @param {DeleteSet} ds\n * @param {StructStore} store\n * @param {function(Item):boolean} gcFilter\n */\nconst tryGcDeleteSet = (ds, store, gcFilter) => {\n for (const [client, deleteItems] of ds.clients.entries()) {\n const structs = /** @type {Array<GC|Item>} */ (store.clients.get(client));\n for (let di = deleteItems.length - 1; di >= 0; di--) {\n const deleteItem = deleteItems[di];\n const endDeleteItemClock = deleteItem.clock + deleteItem.len;\n for (\n let si = findIndexSS(structs, deleteItem.clock), struct = structs[si];\n si < structs.length && struct.id.clock < endDeleteItemClock;\n struct = structs[++si]\n ) {\n const struct = structs[si];\n if (deleteItem.clock + deleteItem.len <= struct.id.clock) {\n break\n }\n if (struct instanceof Item && struct.deleted && !struct.keep && gcFilter(struct)) {\n struct.gc(store, false);\n }\n }\n }\n }\n};\n\n/**\n * @param {DeleteSet} ds\n * @param {StructStore} store\n */\nconst tryMergeDeleteSet = (ds, store) => {\n // try to merge deleted / gc'd items\n // merge from right to left for better efficiency and so we don't miss any merge targets\n ds.clients.forEach((deleteItems, client) => {\n const structs = /** @type {Array<GC|Item>} */ (store.clients.get(client));\n for (let di = deleteItems.length - 1; di >= 0; di--) {\n const deleteItem = deleteItems[di];\n // start with merging the item next to the last deleted item\n const mostRightIndexToCheck = math.min(structs.length - 1, 1 + findIndexSS(structs, deleteItem.clock + deleteItem.len - 1));\n for (\n let si = mostRightIndexToCheck, struct = structs[si];\n si > 0 && struct.id.clock >= deleteItem.clock;\n struct = structs[si]\n ) {\n si -= 1 + tryToMergeWithLefts(structs, si);\n }\n }\n });\n};\n\n/**\n * @param {DeleteSet} ds\n * @param {StructStore} store\n * @param {function(Item):boolean} gcFilter\n */\nconst tryGc = (ds, store, gcFilter) => {\n tryGcDeleteSet(ds, store, gcFilter);\n tryMergeDeleteSet(ds, store);\n};\n\n/**\n * @param {Array<Transaction>} transactionCleanups\n * @param {number} i\n */\nconst cleanupTransactions = (transactionCleanups, i) => {\n if (i < transactionCleanups.length) {\n const transaction = transactionCleanups[i];\n const doc = transaction.doc;\n const store = doc.store;\n const ds = transaction.deleteSet;\n const mergeStructs = transaction._mergeStructs;\n try {\n sortAndMergeDeleteSet(ds);\n transaction.afterState = getStateVector(transaction.doc.store);\n doc.emit('beforeObserverCalls', [transaction, doc]);\n /**\n * An array of event callbacks.\n *\n * Each callback is called even if the other ones throw errors.\n *\n * @type {Array<function():void>}\n */\n const fs = [];\n // observe events on changed types\n transaction.changed.forEach((subs, itemtype) =>\n fs.push(() => {\n if (itemtype._item === null || !itemtype._item.deleted) {\n itemtype._callObserver(transaction, subs);\n }\n })\n );\n fs.push(() => {\n // deep observe events\n transaction.changedParentTypes.forEach((events, type) => {\n // We need to think about the possibility that the user transforms the\n // Y.Doc in the event.\n if (type._dEH.l.length > 0 && (type._item === null || !type._item.deleted)) {\n events = events\n .filter(event =>\n event.target._item === null || !event.target._item.deleted\n );\n events\n .forEach(event => {\n event.currentTarget = type;\n // path is relative to the current target\n event._path = null;\n });\n // sort events by path length so that top-level events are fired first.\n events\n .sort((event1, event2) => event1.path.length - event2.path.length);\n // We don't need to check for events.length\n // because we know it has at least one element\n callEventHandlerListeners(type._dEH, events, transaction);\n }\n });\n });\n fs.push(() => doc.emit('afterTransaction', [transaction, doc]));\n callAll(fs, []);\n if (transaction._needFormattingCleanup) {\n cleanupYTextAfterTransaction(transaction);\n }\n } finally {\n // Replace deleted items with ItemDeleted / GC.\n // This is where content is actually remove from the Yjs Doc.\n if (doc.gc) {\n tryGcDeleteSet(ds, store, doc.gcFilter);\n }\n tryMergeDeleteSet(ds, store);\n\n // on all affected store.clients props, try to merge\n transaction.afterState.forEach((clock, client) => {\n const beforeClock = transaction.beforeState.get(client) || 0;\n if (beforeClock !== clock) {\n const structs = /** @type {Array<GC|Item>} */ (store.clients.get(client));\n // we iterate from right to left so we can safely remove entries\n const firstChangePos = math.max(findIndexSS(structs, beforeClock), 1);\n for (let i = structs.length - 1; i >= firstChangePos;) {\n i -= 1 + tryToMergeWithLefts(structs, i);\n }\n }\n });\n // try to merge mergeStructs\n // @todo: it makes more sense to transform mergeStructs to a DS, sort it, and merge from right to left\n // but at the moment DS does not handle duplicates\n for (let i = mergeStructs.length - 1; i >= 0; i--) {\n const { client, clock } = mergeStructs[i].id;\n const structs = /** @type {Array<GC|Item>} */ (store.clients.get(client));\n const replacedStructPos = findIndexSS(structs, clock);\n if (replacedStructPos + 1 < structs.length) {\n if (tryToMergeWithLefts(structs, replacedStructPos + 1) > 1) {\n continue // no need to perform next check, both are already merged\n }\n }\n if (replacedStructPos > 0) {\n tryToMergeWithLefts(structs, replacedStructPos);\n }\n }\n if (!transaction.local && transaction.afterState.get(doc.clientID) !== transaction.beforeState.get(doc.clientID)) {\n logging.print(logging.ORANGE, logging.BOLD, '[yjs] ', logging.UNBOLD, logging.RED, 'Changed the client-id because another client seems to be using it.');\n doc.clientID = generateNewClientId();\n }\n // @todo Merge all the transactions into one and provide send the data as a single update message\n doc.emit('afterTransactionCleanup', [transaction, doc]);\n if (doc._observers.has('update')) {\n const encoder = new UpdateEncoderV1();\n const hasContent = writeUpdateMessageFromTransaction(encoder, transaction);\n if (hasContent) {\n doc.emit('update', [encoder.toUint8Array(), transaction.origin, doc, transaction]);\n }\n }\n if (doc._observers.has('updateV2')) {\n const encoder = new UpdateEncoderV2();\n const hasContent = writeUpdateMessageFromTransaction(encoder, transaction);\n if (hasContent) {\n doc.emit('updateV2', [encoder.toUint8Array(), transaction.origin, doc, transaction]);\n }\n }\n const { subdocsAdded, subdocsLoaded, subdocsRemoved } = transaction;\n if (subdocsAdded.size > 0 || subdocsRemoved.size > 0 || subdocsLoaded.size > 0) {\n subdocsAdded.forEach(subdoc => {\n subdoc.clientID = doc.clientID;\n if (subdoc.collectionid == null) {\n subdoc.collectionid = doc.collectionid;\n }\n doc.subdocs.add(subdoc);\n });\n subdocsRemoved.forEach(subdoc => doc.subdocs.delete(subdoc));\n doc.emit('subdocs', [{ loaded: subdocsLoaded, added: subdocsAdded, removed: subdocsRemoved }, doc, transaction]);\n subdocsRemoved.forEach(subdoc => subdoc.destroy());\n }\n\n if (transactionCleanups.length <= i + 1) {\n doc._transactionCleanups = [];\n doc.emit('afterAllTransactions', [doc, transactionCleanups]);\n } else {\n cleanupTransactions(transactionCleanups, i + 1);\n }\n }\n }\n};\n\n/**\n * Implements the functionality of `y.transact(()=>{..})`\n *\n * @template T\n * @param {Doc} doc\n * @param {function(Transaction):T} f\n * @param {any} [origin=true]\n * @return {T}\n *\n * @function\n */\nconst transact = (doc, f, origin = null, local = true) => {\n const transactionCleanups = doc._transactionCleanups;\n let initialCall = false;\n /**\n * @type {any}\n */\n let result = null;\n if (doc._transaction === null) {\n initialCall = true;\n doc._transaction = new Transaction(doc, origin, local);\n transactionCleanups.push(doc._transaction);\n if (transactionCleanups.length === 1) {\n doc.emit('beforeAllTransactions', [doc]);\n }\n doc.emit('beforeTransaction', [doc._transaction, doc]);\n }\n try {\n result = f(doc._transaction);\n } finally {\n if (initialCall) {\n const finishCleanup = doc._transaction === transactionCleanups[0];\n doc._transaction = null;\n if (finishCleanup) {\n // The first transaction ended, now process observer calls.\n // Observer call may create new transactions for which we need to call the observers and do cleanup.\n // We don't want to nest these calls, so we execute these calls one after\n // another.\n // Also we need to ensure that all cleanups are called, even if the\n // observes throw errors.\n // This file is full of hacky try {} finally {} blocks to ensure that an\n // event can throw errors and also that the cleanup is called.\n cleanupTransactions(transactionCleanups, 0);\n }\n }\n }\n return result\n};\n\nclass StackItem {\n /**\n * @param {DeleteSet} deletions\n * @param {DeleteSet} insertions\n */\n constructor (deletions, insertions) {\n this.insertions = insertions;\n this.deletions = deletions;\n /**\n * Use this to save and restore metadata like selection range\n */\n this.meta = new Map();\n }\n}\n/**\n * @param {Transaction} tr\n * @param {UndoManager} um\n * @param {StackItem} stackItem\n */\nconst clearUndoManagerStackItem = (tr, um, stackItem) => {\n iterateDeletedStructs(tr, stackItem.deletions, item => {\n if (item instanceof Item && um.scope.some(type => isParentOf(type, item))) {\n keepItem(item, false);\n }\n });\n};\n\n/**\n * @param {UndoManager} undoManager\n * @param {Array<StackItem>} stack\n * @param {'undo'|'redo'} eventType\n * @return {StackItem?}\n */\nconst popStackItem = (undoManager, stack, eventType) => {\n /**\n * Keep a reference to the transaction so we can fire the event with the changedParentTypes\n * @type {any}\n */\n let _tr = null;\n const doc = undoManager.doc;\n const scope = undoManager.scope;\n transact(doc, transaction => {\n while (stack.length > 0 && undoManager.currStackItem === null) {\n const store = doc.store;\n const stackItem = /** @type {StackItem} */ (stack.pop());\n /**\n * @type {Set<Item>}\n */\n const itemsToRedo = new Set();\n /**\n * @type {Array<Item>}\n */\n const itemsToDelete = [];\n let performedChange = false;\n iterateDeletedStructs(transaction, stackItem.insertions, struct => {\n if (struct instanceof Item) {\n if (struct.redone !== null) {\n let { item, diff } = followRedone(store, struct.id);\n if (diff > 0) {\n item = getItemCleanStart(transaction, createID(item.id.client, item.id.clock + diff));\n }\n struct = item;\n }\n if (!struct.deleted && scope.some(type => isParentOf(type, /** @type {Item} */ (struct)))) {\n itemsToDelete.push(struct);\n }\n }\n });\n iterateDeletedStructs(transaction, stackItem.deletions, struct => {\n if (\n struct instanceof Item &&\n scope.some(type => isParentOf(type, struct)) &&\n // Never redo structs in stackItem.insertions because they were created and deleted in the same capture interval.\n !isDeleted(stackItem.insertions, struct.id)\n ) {\n itemsToRedo.add(struct);\n }\n });\n itemsToRedo.forEach(struct => {\n performedChange = redoItem(transaction, struct, itemsToRedo, stackItem.insertions, undoManager.ignoreRemoteMapChanges, undoManager) !== null || performedChange;\n });\n // We want to delete in reverse order so that children are deleted before\n // parents, so we have more information available when items are filtered.\n for (let i = itemsToDelete.length - 1; i >= 0; i--) {\n const item = itemsToDelete[i];\n if (undoManager.deleteFilter(item)) {\n item.delete(transaction);\n performedChange = true;\n }\n }\n undoManager.currStackItem = performedChange ? stackItem : null;\n }\n transaction.changed.forEach((subProps, type) => {\n // destroy search marker if necessary\n if (subProps.has(null) && type._searchMarker) {\n type._searchMarker.length = 0;\n }\n });\n _tr = transaction;\n }, undoManager);\n const res = undoManager.currStackItem;\n if (res != null) {\n const changedParentTypes = _tr.changedParentTypes;\n undoManager.emit('stack-item-popped', [{ stackItem: res, type: eventType, changedParentTypes, origin: undoManager }, undoManager]);\n undoManager.currStackItem = null;\n }\n return res\n};\n\n/**\n * @typedef {Object} UndoManagerOptions\n * @property {number} [UndoManagerOptions.captureTimeout=500]\n * @property {function(Transaction):boolean} [UndoManagerOptions.captureTransaction] Do not capture changes of a Transaction if result false.\n * @property {function(Item):boolean} [UndoManagerOptions.deleteFilter=()=>true] Sometimes\n * it is necessary to filter what an Undo/Redo operation can delete. If this\n * filter returns false, the type/item won't be deleted even it is in the\n * undo/redo scope.\n * @property {Set<any>} [UndoManagerOptions.trackedOrigins=new Set([null])]\n * @property {boolean} [ignoreRemoteMapChanges] Experimental. By default, the UndoManager will never overwrite remote changes. Enable this property to enable overwriting remote changes on key-value changes (Y.Map, properties on Y.Xml, etc..).\n * @property {Doc} [doc] The document that this UndoManager operates on. Only needed if typeScope is empty.\n */\n\n/**\n * @typedef {Object} StackItemEvent\n * @property {StackItem} StackItemEvent.stackItem\n * @property {any} StackItemEvent.origin\n * @property {'undo'|'redo'} StackItemEvent.type\n * @property {Map<AbstractType<YEvent<any>>,Array<YEvent<any>>>} StackItemEvent.changedParentTypes\n */\n\n/**\n * Fires 'stack-item-added' event when a stack item was added to either the undo- or\n * the redo-stack. You may store additional stack information via the\n * metadata property on `event.stackItem.meta` (it is a `Map` of metadata properties).\n * Fires 'stack-item-popped' event when a stack item was popped from either the\n * undo- or the redo-stack. You may restore the saved stack information from `event.stackItem.meta`.\n *\n * @extends {ObservableV2<{'stack-item-added':function(StackItemEvent, UndoManager):void, 'stack-item-popped': function(StackItemEvent, UndoManager):void, 'stack-cleared': function({ undoStackCleared: boolean, redoStackCleared: boolean }):void, 'stack-item-updated': function(StackItemEvent, UndoManager):void }>}\n */\nclass UndoManager extends ObservableV2 {\n /**\n * @param {AbstractType<any>|Array<AbstractType<any>>} typeScope Accepts either a single type, or an array of types\n * @param {UndoManagerOptions} options\n */\n constructor (typeScope, {\n captureTimeout = 500,\n captureTransaction = _tr => true,\n deleteFilter = () => true,\n trackedOrigins = new Set([null]),\n ignoreRemoteMapChanges = false,\n doc = /** @type {Doc} */ (array.isArray(typeScope) ? typeScope[0].doc : typeScope.doc)\n } = {}) {\n super();\n /**\n * @type {Array<AbstractType<any>>}\n */\n this.scope = [];\n this.doc = doc;\n this.addToScope(typeScope);\n this.deleteFilter = deleteFilter;\n trackedOrigins.add(this);\n this.trackedOrigins = trackedOrigins;\n this.captureTransaction = captureTransaction;\n /**\n * @type {Array<StackItem>}\n */\n this.undoStack = [];\n /**\n * @type {Array<StackItem>}\n */\n this.redoStack = [];\n /**\n * Whether the client is currently undoing (calling UndoManager.undo)\n *\n * @type {boolean}\n */\n this.undoing = false;\n this.redoing = false;\n /**\n * The currently popped stack item if UndoManager.undoing or UndoManager.redoing\n *\n * @type {StackItem|null}\n */\n this.currStackItem = null;\n this.lastChange = 0;\n this.ignoreRemoteMapChanges = ignoreRemoteMapChanges;\n this.captureTimeout = captureTimeout;\n /**\n * @param {Transaction} transaction\n */\n this.afterTransactionHandler = transaction => {\n // Only track certain transactions\n if (\n !this.captureTransaction(transaction) ||\n !this.scope.some(type => transaction.changedParentTypes.has(type)) ||\n (!this.trackedOrigins.has(transaction.origin) && (!transaction.origin || !this.trackedOrigins.has(transaction.origin.constructor)))\n ) {\n return\n }\n const undoing = this.undoing;\n const redoing = this.redoing;\n const stack = undoing ? this.redoStack : this.undoStack;\n if (undoing) {\n this.stopCapturing(); // next undo should not be appended to last stack item\n } else if (!redoing) {\n // neither undoing nor redoing: delete redoStack\n this.clear(false, true);\n }\n const insertions = new DeleteSet();\n transaction.afterState.forEach((endClock, client) => {\n const startClock = transaction.beforeState.get(client) || 0;\n const len = endClock - startClock;\n if (len > 0) {\n addToDeleteSet(insertions, client, startClock, len);\n }\n });\n const now = time.getUnixTime();\n let didAdd = false;\n if (this.lastChange > 0 && now - this.lastChange < this.captureTimeout && stack.length > 0 && !undoing && !redoing) {\n // append change to last stack op\n const lastOp = stack[stack.length - 1];\n lastOp.deletions = mergeDeleteSets([lastOp.deletions, transaction.deleteSet]);\n lastOp.insertions = mergeDeleteSets([lastOp.insertions, insertions]);\n } else {\n // create a new stack op\n stack.push(new StackItem(transaction.deleteSet, insertions));\n didAdd = true;\n }\n if (!undoing && !redoing) {\n this.lastChange = now;\n }\n // make sure that deleted structs are not gc'd\n iterateDeletedStructs(transaction, transaction.deleteSet, /** @param {Item|GC} item */ item => {\n if (item instanceof Item && this.scope.some(type => isParentOf(type, item))) {\n keepItem(item, true);\n }\n });\n /**\n * @type {[StackItemEvent, UndoManager]}\n */\n const changeEvent = [{ stackItem: stack[stack.length - 1], origin: transaction.origin, type: undoing ? 'redo' : 'undo', changedParentTypes: transaction.changedParentTypes }, this];\n if (didAdd) {\n this.emit('stack-item-added', changeEvent);\n } else {\n this.emit('stack-item-updated', changeEvent);\n }\n };\n this.doc.on('afterTransaction', this.afterTransactionHandler);\n this.doc.on('destroy', () => {\n this.destroy();\n });\n }\n\n /**\n * @param {Array<AbstractType<any>> | AbstractType<any>} ytypes\n */\n addToScope (ytypes) {\n ytypes = array.isArray(ytypes) ? ytypes : [ytypes];\n ytypes.forEach(ytype => {\n if (this.scope.every(yt => yt !== ytype)) {\n if (ytype.doc !== this.doc) logging.warn('[yjs#509] Not same Y.Doc'); // use MultiDocUndoManager instead. also see https://github.com/yjs/yjs/issues/509\n this.scope.push(ytype);\n }\n });\n }\n\n /**\n * @param {any} origin\n */\n addTrackedOrigin (origin) {\n this.trackedOrigins.add(origin);\n }\n\n /**\n * @param {any} origin\n */\n removeTrackedOrigin (origin) {\n this.trackedOrigins.delete(origin);\n }\n\n clear (clearUndoStack = true, clearRedoStack = true) {\n if ((clearUndoStack && this.canUndo()) || (clearRedoStack && this.canRedo())) {\n this.doc.transact(tr => {\n if (clearUndoStack) {\n this.undoStack.forEach(item => clearUndoManagerStackItem(tr, this, item));\n this.undoStack = [];\n }\n if (clearRedoStack) {\n this.redoStack.forEach(item => clearUndoManagerStackItem(tr, this, item));\n this.redoStack = [];\n }\n this.emit('stack-cleared', [{ undoStackCleared: clearUndoStack, redoStackCleared: clearRedoStack }]);\n });\n }\n }\n\n /**\n * UndoManager merges Undo-StackItem if they are created within time-gap\n * smaller than `options.captureTimeout`. Call `um.stopCapturing()` so that the next\n * StackItem won't be merged.\n *\n *\n * @example\n * // without stopCapturing\n * ytext.insert(0, 'a')\n * ytext.insert(1, 'b')\n * um.undo()\n * ytext.toString() // => '' (note that 'ab' was removed)\n * // with stopCapturing\n * ytext.insert(0, 'a')\n * um.stopCapturing()\n * ytext.insert(0, 'b')\n * um.undo()\n * ytext.toString() // => 'a' (note that only 'b' was removed)\n *\n */\n stopCapturing () {\n this.lastChange = 0;\n }\n\n /**\n * Undo last changes on type.\n *\n * @return {StackItem?} Returns StackItem if a change was applied\n */\n undo () {\n this.undoing = true;\n let res;\n try {\n res = popStackItem(this, this.undoStack, 'undo');\n } finally {\n this.undoing = false;\n }\n return res\n }\n\n /**\n * Redo last undo operation.\n *\n * @return {StackItem?} Returns StackItem if a change was applied\n */\n redo () {\n this.redoing = true;\n let res;\n try {\n res = popStackItem(this, this.redoStack, 'redo');\n } finally {\n this.redoing = false;\n }\n return res\n }\n\n /**\n * Are undo steps available?\n *\n * @return {boolean} `true` if undo is possible\n */\n canUndo () {\n return this.undoStack.length > 0\n }\n\n /**\n * Are redo steps available?\n *\n * @return {boolean} `true` if redo is possible\n */\n canRedo () {\n return this.redoStack.length > 0\n }\n\n destroy () {\n this.trackedOrigins.delete(this);\n this.doc.off('afterTransaction', this.afterTransactionHandler);\n super.destroy();\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n */\nfunction * lazyStructReaderGenerator (decoder) {\n const numOfStateUpdates = decoding.readVarUint(decoder.restDecoder);\n for (let i = 0; i < numOfStateUpdates; i++) {\n const numberOfStructs = decoding.readVarUint(decoder.restDecoder);\n const client = decoder.readClient();\n let clock = decoding.readVarUint(decoder.restDecoder);\n for (let i = 0; i < numberOfStructs; i++) {\n const info = decoder.readInfo();\n // @todo use switch instead of ifs\n if (info === 10) {\n const len = decoding.readVarUint(decoder.restDecoder);\n yield new Skip(createID(client, clock), len);\n clock += len;\n } else if ((binary.BITS5 & info) !== 0) {\n const cantCopyParentInfo = (info & (binary.BIT7 | binary.BIT8)) === 0;\n // If parent = null and neither left nor right are defined, then we know that `parent` is child of `y`\n // and we read the next string as parentYKey.\n // It indicates how we store/retrieve parent from `y.share`\n // @type {string|null}\n const struct = new Item(\n createID(client, clock),\n null, // left\n (info & binary.BIT8) === binary.BIT8 ? decoder.readLeftID() : null, // origin\n null, // right\n (info & binary.BIT7) === binary.BIT7 ? decoder.readRightID() : null, // right origin\n // @ts-ignore Force writing a string here.\n cantCopyParentInfo ? (decoder.readParentInfo() ? decoder.readString() : decoder.readLeftID()) : null, // parent\n cantCopyParentInfo && (info & binary.BIT6) === binary.BIT6 ? decoder.readString() : null, // parentSub\n readItemContent(decoder, info) // item content\n );\n yield struct;\n clock += struct.length;\n } else {\n const len = decoder.readLen();\n yield new GC(createID(client, clock), len);\n clock += len;\n }\n }\n }\n}\n\nclass LazyStructReader {\n /**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @param {boolean} filterSkips\n */\n constructor (decoder, filterSkips) {\n this.gen = lazyStructReaderGenerator(decoder);\n /**\n * @type {null | Item | Skip | GC}\n */\n this.curr = null;\n this.done = false;\n this.filterSkips = filterSkips;\n this.next();\n }\n\n /**\n * @return {Item | GC | Skip |null}\n */\n next () {\n // ignore \"Skip\" structs\n do {\n this.curr = this.gen.next().value || null;\n } while (this.filterSkips && this.curr !== null && this.curr.constructor === Skip)\n return this.curr\n }\n}\n\n/**\n * @param {Uint8Array} update\n *\n */\nconst logUpdate = update => logUpdateV2(update, UpdateDecoderV1);\n\n/**\n * @param {Uint8Array} update\n * @param {typeof UpdateDecoderV2 | typeof UpdateDecoderV1} [YDecoder]\n *\n */\nconst logUpdateV2 = (update, YDecoder = UpdateDecoderV2) => {\n const structs = [];\n const updateDecoder = new YDecoder(decoding.createDecoder(update));\n const lazyDecoder = new LazyStructReader(updateDecoder, false);\n for (let curr = lazyDecoder.curr; curr !== null; curr = lazyDecoder.next()) {\n structs.push(curr);\n }\n logging.print('Structs: ', structs);\n const ds = readDeleteSet(updateDecoder);\n logging.print('DeleteSet: ', ds);\n};\n\n/**\n * @param {Uint8Array} update\n *\n */\nconst decodeUpdate = (update) => decodeUpdateV2(update, UpdateDecoderV1);\n\n/**\n * @param {Uint8Array} update\n * @param {typeof UpdateDecoderV2 | typeof UpdateDecoderV1} [YDecoder]\n *\n */\nconst decodeUpdateV2 = (update, YDecoder = UpdateDecoderV2) => {\n const structs = [];\n const updateDecoder = new YDecoder(decoding.createDecoder(update));\n const lazyDecoder = new LazyStructReader(updateDecoder, false);\n for (let curr = lazyDecoder.curr; curr !== null; curr = lazyDecoder.next()) {\n structs.push(curr);\n }\n return {\n structs,\n ds: readDeleteSet(updateDecoder)\n }\n};\n\nclass LazyStructWriter {\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n */\n constructor (encoder) {\n this.currClient = 0;\n this.startClock = 0;\n this.written = 0;\n this.encoder = encoder;\n /**\n * We want to write operations lazily, but also we need to know beforehand how many operations we want to write for each client.\n *\n * This kind of meta-information (#clients, #structs-per-client-written) is written to the restEncoder.\n *\n * We fragment the restEncoder and store a slice of it per-client until we know how many clients there are.\n * When we flush (toUint8Array) we write the restEncoder using the fragments and the meta-information.\n *\n * @type {Array<{ written: number, restEncoder: Uint8Array }>}\n */\n this.clientStructs = [];\n }\n}\n\n/**\n * @param {Array<Uint8Array>} updates\n * @return {Uint8Array}\n */\nconst mergeUpdates = updates => mergeUpdatesV2(updates, UpdateDecoderV1, UpdateEncoderV1);\n\n/**\n * @param {Uint8Array} update\n * @param {typeof DSEncoderV1 | typeof DSEncoderV2} YEncoder\n * @param {typeof UpdateDecoderV1 | typeof UpdateDecoderV2} YDecoder\n * @return {Uint8Array}\n */\nconst encodeStateVectorFromUpdateV2 = (update, YEncoder = DSEncoderV2, YDecoder = UpdateDecoderV2) => {\n const encoder = new YEncoder();\n const updateDecoder = new LazyStructReader(new YDecoder(decoding.createDecoder(update)), false);\n let curr = updateDecoder.curr;\n if (curr !== null) {\n let size = 0;\n let currClient = curr.id.client;\n let stopCounting = curr.id.clock !== 0; // must start at 0\n let currClock = stopCounting ? 0 : curr.id.clock + curr.length;\n for (; curr !== null; curr = updateDecoder.next()) {\n if (currClient !== curr.id.client) {\n if (currClock !== 0) {\n size++;\n // We found a new client\n // write what we have to the encoder\n encoding.writeVarUint(encoder.restEncoder, currClient);\n encoding.writeVarUint(encoder.restEncoder, currClock);\n }\n currClient = curr.id.client;\n currClock = 0;\n stopCounting = curr.id.clock !== 0;\n }\n // we ignore skips\n if (curr.constructor === Skip) {\n stopCounting = true;\n }\n if (!stopCounting) {\n currClock = curr.id.clock + curr.length;\n }\n }\n // write what we have\n if (currClock !== 0) {\n size++;\n encoding.writeVarUint(encoder.restEncoder, currClient);\n encoding.writeVarUint(encoder.restEncoder, currClock);\n }\n // prepend the size of the state vector\n const enc = encoding.createEncoder();\n encoding.writeVarUint(enc, size);\n encoding.writeBinaryEncoder(enc, encoder.restEncoder);\n encoder.restEncoder = enc;\n return encoder.toUint8Array()\n } else {\n encoding.writeVarUint(encoder.restEncoder, 0);\n return encoder.toUint8Array()\n }\n};\n\n/**\n * @param {Uint8Array} update\n * @return {Uint8Array}\n */\nconst encodeStateVectorFromUpdate = update => encodeStateVectorFromUpdateV2(update, DSEncoderV1, UpdateDecoderV1);\n\n/**\n * @param {Uint8Array} update\n * @param {typeof UpdateDecoderV1 | typeof UpdateDecoderV2} YDecoder\n * @return {{ from: Map<number,number>, to: Map<number,number> }}\n */\nconst parseUpdateMetaV2 = (update, YDecoder = UpdateDecoderV2) => {\n /**\n * @type {Map<number, number>}\n */\n const from = new Map();\n /**\n * @type {Map<number, number>}\n */\n const to = new Map();\n const updateDecoder = new LazyStructReader(new YDecoder(decoding.createDecoder(update)), false);\n let curr = updateDecoder.curr;\n if (curr !== null) {\n let currClient = curr.id.client;\n let currClock = curr.id.clock;\n // write the beginning to `from`\n from.set(currClient, currClock);\n for (; curr !== null; curr = updateDecoder.next()) {\n if (currClient !== curr.id.client) {\n // We found a new client\n // write the end to `to`\n to.set(currClient, currClock);\n // write the beginning to `from`\n from.set(curr.id.client, curr.id.clock);\n // update currClient\n currClient = curr.id.client;\n }\n currClock = curr.id.clock + curr.length;\n }\n // write the end to `to`\n to.set(currClient, currClock);\n }\n return { from, to }\n};\n\n/**\n * @param {Uint8Array} update\n * @return {{ from: Map<number,number>, to: Map<number,number> }}\n */\nconst parseUpdateMeta = update => parseUpdateMetaV2(update, UpdateDecoderV1);\n\n/**\n * This method is intended to slice any kind of struct and retrieve the right part.\n * It does not handle side-effects, so it should only be used by the lazy-encoder.\n *\n * @param {Item | GC | Skip} left\n * @param {number} diff\n * @return {Item | GC}\n */\nconst sliceStruct = (left, diff) => {\n if (left.constructor === GC) {\n const { client, clock } = left.id;\n return new GC(createID(client, clock + diff), left.length - diff)\n } else if (left.constructor === Skip) {\n const { client, clock } = left.id;\n return new Skip(createID(client, clock + diff), left.length - diff)\n } else {\n const leftItem = /** @type {Item} */ (left);\n const { client, clock } = leftItem.id;\n return new Item(\n createID(client, clock + diff),\n null,\n createID(client, clock + diff - 1),\n null,\n leftItem.rightOrigin,\n leftItem.parent,\n leftItem.parentSub,\n leftItem.content.splice(diff)\n )\n }\n};\n\n/**\n *\n * This function works similarly to `readUpdateV2`.\n *\n * @param {Array<Uint8Array>} updates\n * @param {typeof UpdateDecoderV1 | typeof UpdateDecoderV2} [YDecoder]\n * @param {typeof UpdateEncoderV1 | typeof UpdateEncoderV2} [YEncoder]\n * @return {Uint8Array}\n */\nconst mergeUpdatesV2 = (updates, YDecoder = UpdateDecoderV2, YEncoder = UpdateEncoderV2) => {\n if (updates.length === 1) {\n return updates[0]\n }\n const updateDecoders = updates.map(update => new YDecoder(decoding.createDecoder(update)));\n let lazyStructDecoders = updateDecoders.map(decoder => new LazyStructReader(decoder, true));\n\n /**\n * @todo we don't need offset because we always slice before\n * @type {null | { struct: Item | GC | Skip, offset: number }}\n */\n let currWrite = null;\n\n const updateEncoder = new YEncoder();\n // write structs lazily\n const lazyStructEncoder = new LazyStructWriter(updateEncoder);\n\n // Note: We need to ensure that all lazyStructDecoders are fully consumed\n // Note: Should merge document updates whenever possible - even from different updates\n // Note: Should handle that some operations cannot be applied yet ()\n\n while (true) {\n // Write higher clients first ⇒ sort by clientID & clock and remove decoders without content\n lazyStructDecoders = lazyStructDecoders.filter(dec => dec.curr !== null);\n lazyStructDecoders.sort(\n /** @type {function(any,any):number} */ (dec1, dec2) => {\n if (dec1.curr.id.client === dec2.curr.id.client) {\n const clockDiff = dec1.curr.id.clock - dec2.curr.id.clock;\n if (clockDiff === 0) {\n // @todo remove references to skip since the structDecoders must filter Skips.\n return dec1.curr.constructor === dec2.curr.constructor\n ? 0\n : dec1.curr.constructor === Skip ? 1 : -1 // we are filtering skips anyway.\n } else {\n return clockDiff\n }\n } else {\n return dec2.curr.id.client - dec1.curr.id.client\n }\n }\n );\n if (lazyStructDecoders.length === 0) {\n break\n }\n const currDecoder = lazyStructDecoders[0];\n // write from currDecoder until the next operation is from another client or if filler-struct\n // then we need to reorder the decoders and find the next operation to write\n const firstClient = /** @type {Item | GC} */ (currDecoder.curr).id.client;\n\n if (currWrite !== null) {\n let curr = /** @type {Item | GC | null} */ (currDecoder.curr);\n let iterated = false;\n\n // iterate until we find something that we haven't written already\n // remember: first the high client-ids are written\n while (curr !== null && curr.id.clock + curr.length <= currWrite.struct.id.clock + currWrite.struct.length && curr.id.client >= currWrite.struct.id.client) {\n curr = currDecoder.next();\n iterated = true;\n }\n if (\n curr === null || // current decoder is empty\n curr.id.client !== firstClient || // check whether there is another decoder that has has updates from `firstClient`\n (iterated && curr.id.clock > currWrite.struct.id.clock + currWrite.struct.length) // the above while loop was used and we are potentially missing updates\n ) {\n continue\n }\n\n if (firstClient !== currWrite.struct.id.client) {\n writeStructToLazyStructWriter(lazyStructEncoder, currWrite.struct, currWrite.offset);\n currWrite = { struct: curr, offset: 0 };\n currDecoder.next();\n } else {\n if (currWrite.struct.id.clock + currWrite.struct.length < curr.id.clock) {\n // @todo write currStruct & set currStruct = Skip(clock = currStruct.id.clock + currStruct.length, length = curr.id.clock - self.clock)\n if (currWrite.struct.constructor === Skip) {\n // extend existing skip\n currWrite.struct.length = curr.id.clock + curr.length - currWrite.struct.id.clock;\n } else {\n writeStructToLazyStructWriter(lazyStructEncoder, currWrite.struct, currWrite.offset);\n const diff = curr.id.clock - currWrite.struct.id.clock - currWrite.struct.length;\n /**\n * @type {Skip}\n */\n const struct = new Skip(createID(firstClient, currWrite.struct.id.clock + currWrite.struct.length), diff);\n currWrite = { struct, offset: 0 };\n }\n } else { // if (currWrite.struct.id.clock + currWrite.struct.length >= curr.id.clock) {\n const diff = currWrite.struct.id.clock + currWrite.struct.length - curr.id.clock;\n if (diff > 0) {\n if (currWrite.struct.constructor === Skip) {\n // prefer to slice Skip because the other struct might contain more information\n currWrite.struct.length -= diff;\n } else {\n curr = sliceStruct(curr, diff);\n }\n }\n if (!currWrite.struct.mergeWith(/** @type {any} */ (curr))) {\n writeStructToLazyStructWriter(lazyStructEncoder, currWrite.struct, currWrite.offset);\n currWrite = { struct: curr, offset: 0 };\n currDecoder.next();\n }\n }\n }\n } else {\n currWrite = { struct: /** @type {Item | GC} */ (currDecoder.curr), offset: 0 };\n currDecoder.next();\n }\n for (\n let next = currDecoder.curr;\n next !== null && next.id.client === firstClient && next.id.clock === currWrite.struct.id.clock + currWrite.struct.length && next.constructor !== Skip;\n next = currDecoder.next()\n ) {\n writeStructToLazyStructWriter(lazyStructEncoder, currWrite.struct, currWrite.offset);\n currWrite = { struct: next, offset: 0 };\n }\n }\n if (currWrite !== null) {\n writeStructToLazyStructWriter(lazyStructEncoder, currWrite.struct, currWrite.offset);\n currWrite = null;\n }\n finishLazyStructWriting(lazyStructEncoder);\n\n const dss = updateDecoders.map(decoder => readDeleteSet(decoder));\n const ds = mergeDeleteSets(dss);\n writeDeleteSet(updateEncoder, ds);\n return updateEncoder.toUint8Array()\n};\n\n/**\n * @param {Uint8Array} update\n * @param {Uint8Array} sv\n * @param {typeof UpdateDecoderV1 | typeof UpdateDecoderV2} [YDecoder]\n * @param {typeof UpdateEncoderV1 | typeof UpdateEncoderV2} [YEncoder]\n */\nconst diffUpdateV2 = (update, sv, YDecoder = UpdateDecoderV2, YEncoder = UpdateEncoderV2) => {\n const state = decodeStateVector(sv);\n const encoder = new YEncoder();\n const lazyStructWriter = new LazyStructWriter(encoder);\n const decoder = new YDecoder(decoding.createDecoder(update));\n const reader = new LazyStructReader(decoder, false);\n while (reader.curr) {\n const curr = reader.curr;\n const currClient = curr.id.client;\n const svClock = state.get(currClient) || 0;\n if (reader.curr.constructor === Skip) {\n // the first written struct shouldn't be a skip\n reader.next();\n continue\n }\n if (curr.id.clock + curr.length > svClock) {\n writeStructToLazyStructWriter(lazyStructWriter, curr, math.max(svClock - curr.id.clock, 0));\n reader.next();\n while (reader.curr && reader.curr.id.client === currClient) {\n writeStructToLazyStructWriter(lazyStructWriter, reader.curr, 0);\n reader.next();\n }\n } else {\n // read until something new comes up\n while (reader.curr && reader.curr.id.client === currClient && reader.curr.id.clock + reader.curr.length <= svClock) {\n reader.next();\n }\n }\n }\n finishLazyStructWriting(lazyStructWriter);\n // write ds\n const ds = readDeleteSet(decoder);\n writeDeleteSet(encoder, ds);\n return encoder.toUint8Array()\n};\n\n/**\n * @param {Uint8Array} update\n * @param {Uint8Array} sv\n */\nconst diffUpdate = (update, sv) => diffUpdateV2(update, sv, UpdateDecoderV1, UpdateEncoderV1);\n\n/**\n * @param {LazyStructWriter} lazyWriter\n */\nconst flushLazyStructWriter = lazyWriter => {\n if (lazyWriter.written > 0) {\n lazyWriter.clientStructs.push({ written: lazyWriter.written, restEncoder: encoding.toUint8Array(lazyWriter.encoder.restEncoder) });\n lazyWriter.encoder.restEncoder = encoding.createEncoder();\n lazyWriter.written = 0;\n }\n};\n\n/**\n * @param {LazyStructWriter} lazyWriter\n * @param {Item | GC} struct\n * @param {number} offset\n */\nconst writeStructToLazyStructWriter = (lazyWriter, struct, offset) => {\n // flush curr if we start another client\n if (lazyWriter.written > 0 && lazyWriter.currClient !== struct.id.client) {\n flushLazyStructWriter(lazyWriter);\n }\n if (lazyWriter.written === 0) {\n lazyWriter.currClient = struct.id.client;\n // write next client\n lazyWriter.encoder.writeClient(struct.id.client);\n // write startClock\n encoding.writeVarUint(lazyWriter.encoder.restEncoder, struct.id.clock + offset);\n }\n struct.write(lazyWriter.encoder, offset);\n lazyWriter.written++;\n};\n/**\n * Call this function when we collected all parts and want to\n * put all the parts together. After calling this method,\n * you can continue using the UpdateEncoder.\n *\n * @param {LazyStructWriter} lazyWriter\n */\nconst finishLazyStructWriting = (lazyWriter) => {\n flushLazyStructWriter(lazyWriter);\n\n // this is a fresh encoder because we called flushCurr\n const restEncoder = lazyWriter.encoder.restEncoder;\n\n /**\n * Now we put all the fragments together.\n * This works similarly to `writeClientsStructs`\n */\n\n // write # states that were updated - i.e. the clients\n encoding.writeVarUint(restEncoder, lazyWriter.clientStructs.length);\n\n for (let i = 0; i < lazyWriter.clientStructs.length; i++) {\n const partStructs = lazyWriter.clientStructs[i];\n /**\n * Works similarly to `writeStructs`\n */\n // write # encoded structs\n encoding.writeVarUint(restEncoder, partStructs.written);\n // write the rest of the fragment\n encoding.writeUint8Array(restEncoder, partStructs.restEncoder);\n }\n};\n\n/**\n * @param {Uint8Array} update\n * @param {function(Item|GC|Skip):Item|GC|Skip} blockTransformer\n * @param {typeof UpdateDecoderV2 | typeof UpdateDecoderV1} YDecoder\n * @param {typeof UpdateEncoderV2 | typeof UpdateEncoderV1 } YEncoder\n */\nconst convertUpdateFormat = (update, blockTransformer, YDecoder, YEncoder) => {\n const updateDecoder = new YDecoder(decoding.createDecoder(update));\n const lazyDecoder = new LazyStructReader(updateDecoder, false);\n const updateEncoder = new YEncoder();\n const lazyWriter = new LazyStructWriter(updateEncoder);\n for (let curr = lazyDecoder.curr; curr !== null; curr = lazyDecoder.next()) {\n writeStructToLazyStructWriter(lazyWriter, blockTransformer(curr), 0);\n }\n finishLazyStructWriting(lazyWriter);\n const ds = readDeleteSet(updateDecoder);\n writeDeleteSet(updateEncoder, ds);\n return updateEncoder.toUint8Array()\n};\n\n/**\n * @typedef {Object} ObfuscatorOptions\n * @property {boolean} [ObfuscatorOptions.formatting=true]\n * @property {boolean} [ObfuscatorOptions.subdocs=true]\n * @property {boolean} [ObfuscatorOptions.yxml=true] Whether to obfuscate nodeName / hookName\n */\n\n/**\n * @param {ObfuscatorOptions} obfuscator\n */\nconst createObfuscator = ({ formatting = true, subdocs = true, yxml = true } = {}) => {\n let i = 0;\n const mapKeyCache = map.create();\n const nodeNameCache = map.create();\n const formattingKeyCache = map.create();\n const formattingValueCache = map.create();\n formattingValueCache.set(null, null); // end of a formatting range should always be the end of a formatting range\n /**\n * @param {Item|GC|Skip} block\n * @return {Item|GC|Skip}\n */\n return block => {\n switch (block.constructor) {\n case GC:\n case Skip:\n return block\n case Item: {\n const item = /** @type {Item} */ (block);\n const content = item.content;\n switch (content.constructor) {\n case ContentDeleted:\n break\n case ContentType: {\n if (yxml) {\n const type = /** @type {ContentType} */ (content).type;\n if (type instanceof YXmlElement) {\n type.nodeName = map.setIfUndefined(nodeNameCache, type.nodeName, () => 'node-' + i);\n }\n if (type instanceof YXmlHook) {\n type.hookName = map.setIfUndefined(nodeNameCache, type.hookName, () => 'hook-' + i);\n }\n }\n break\n }\n case ContentAny: {\n const c = /** @type {ContentAny} */ (content);\n c.arr = c.arr.map(() => i);\n break\n }\n case ContentBinary: {\n const c = /** @type {ContentBinary} */ (content);\n c.content = new Uint8Array([i]);\n break\n }\n case ContentDoc: {\n const c = /** @type {ContentDoc} */ (content);\n if (subdocs) {\n c.opts = {};\n c.doc.guid = i + '';\n }\n break\n }\n case ContentEmbed: {\n const c = /** @type {ContentEmbed} */ (content);\n c.embed = {};\n break\n }\n case ContentFormat: {\n const c = /** @type {ContentFormat} */ (content);\n if (formatting) {\n c.key = map.setIfUndefined(formattingKeyCache, c.key, () => i + '');\n c.value = map.setIfUndefined(formattingValueCache, c.value, () => ({ i }));\n }\n break\n }\n case ContentJSON: {\n const c = /** @type {ContentJSON} */ (content);\n c.arr = c.arr.map(() => i);\n break\n }\n case ContentString: {\n const c = /** @type {ContentString} */ (content);\n c.str = string.repeat((i % 10) + '', c.str.length);\n break\n }\n default:\n // unknown content type\n error.unexpectedCase();\n }\n if (item.parentSub) {\n item.parentSub = map.setIfUndefined(mapKeyCache, item.parentSub, () => i + '');\n }\n i++;\n return block\n }\n default:\n // unknown block-type\n error.unexpectedCase();\n }\n }\n};\n\n/**\n * This function obfuscates the content of a Yjs update. This is useful to share\n * buggy Yjs documents while significantly limiting the possibility that a\n * developer can on the user. Note that it might still be possible to deduce\n * some information by analyzing the \"structure\" of the document or by analyzing\n * the typing behavior using the CRDT-related metadata that is still kept fully\n * intact.\n *\n * @param {Uint8Array} update\n * @param {ObfuscatorOptions} [opts]\n */\nconst obfuscateUpdate = (update, opts) => convertUpdateFormat(update, createObfuscator(opts), UpdateDecoderV1, UpdateEncoderV1);\n\n/**\n * @param {Uint8Array} update\n * @param {ObfuscatorOptions} [opts]\n */\nconst obfuscateUpdateV2 = (update, opts) => convertUpdateFormat(update, createObfuscator(opts), UpdateDecoderV2, UpdateEncoderV2);\n\n/**\n * @param {Uint8Array} update\n */\nconst convertUpdateFormatV1ToV2 = update => convertUpdateFormat(update, f.id, UpdateDecoderV1, UpdateEncoderV2);\n\n/**\n * @param {Uint8Array} update\n */\nconst convertUpdateFormatV2ToV1 = update => convertUpdateFormat(update, f.id, UpdateDecoderV2, UpdateEncoderV1);\n\nconst errorComputeChanges = 'You must not compute changes after the event-handler fired.';\n\n/**\n * @template {AbstractType<any>} T\n * YEvent describes the changes on a YType.\n */\nclass YEvent {\n /**\n * @param {T} target The changed type.\n * @param {Transaction} transaction\n */\n constructor (target, transaction) {\n /**\n * The type on which this event was created on.\n * @type {T}\n */\n this.target = target;\n /**\n * The current target on which the observe callback is called.\n * @type {AbstractType<any>}\n */\n this.currentTarget = target;\n /**\n * The transaction that triggered this event.\n * @type {Transaction}\n */\n this.transaction = transaction;\n /**\n * @type {Object|null}\n */\n this._changes = null;\n /**\n * @type {null | Map<string, { action: 'add' | 'update' | 'delete', oldValue: any, newValue: any }>}\n */\n this._keys = null;\n /**\n * @type {null | Array<{ insert?: string | Array<any> | object | AbstractType<any>, retain?: number, delete?: number, attributes?: Object<string, any> }>}\n */\n this._delta = null;\n /**\n * @type {Array<string|number>|null}\n */\n this._path = null;\n }\n\n /**\n * Computes the path from `y` to the changed type.\n *\n * @todo v14 should standardize on path: Array<{parent, index}> because that is easier to work with.\n *\n * The following property holds:\n * @example\n * let type = y\n * event.path.forEach(dir => {\n * type = type.get(dir)\n * })\n * type === event.target // => true\n */\n get path () {\n return this._path || (this._path = getPathTo(this.currentTarget, this.target))\n }\n\n /**\n * Check if a struct is deleted by this event.\n *\n * In contrast to change.deleted, this method also returns true if the struct was added and then deleted.\n *\n * @param {AbstractStruct} struct\n * @return {boolean}\n */\n deletes (struct) {\n return isDeleted(this.transaction.deleteSet, struct.id)\n }\n\n /**\n * @type {Map<string, { action: 'add' | 'update' | 'delete', oldValue: any, newValue: any }>}\n */\n get keys () {\n if (this._keys === null) {\n if (this.transaction.doc._transactionCleanups.length === 0) {\n throw error.create(errorComputeChanges)\n }\n const keys = new Map();\n const target = this.target;\n const changed = /** @type Set<string|null> */ (this.transaction.changed.get(target));\n changed.forEach(key => {\n if (key !== null) {\n const item = /** @type {Item} */ (target._map.get(key));\n /**\n * @type {'delete' | 'add' | 'update'}\n */\n let action;\n let oldValue;\n if (this.adds(item)) {\n let prev = item.left;\n while (prev !== null && this.adds(prev)) {\n prev = prev.left;\n }\n if (this.deletes(item)) {\n if (prev !== null && this.deletes(prev)) {\n action = 'delete';\n oldValue = array.last(prev.content.getContent());\n } else {\n return\n }\n } else {\n if (prev !== null && this.deletes(prev)) {\n action = 'update';\n oldValue = array.last(prev.content.getContent());\n } else {\n action = 'add';\n oldValue = undefined;\n }\n }\n } else {\n if (this.deletes(item)) {\n action = 'delete';\n oldValue = array.last(/** @type {Item} */ item.content.getContent());\n } else {\n return // nop\n }\n }\n keys.set(key, { action, oldValue });\n }\n });\n this._keys = keys;\n }\n return this._keys\n }\n\n /**\n * This is a computed property. Note that this can only be safely computed during the\n * event call. Computing this property after other changes happened might result in\n * unexpected behavior (incorrect computation of deltas). A safe way to collect changes\n * is to store the `changes` or the `delta` object. Avoid storing the `transaction` object.\n *\n * @type {Array<{insert?: string | Array<any> | object | AbstractType<any>, retain?: number, delete?: number, attributes?: Object<string, any>}>}\n */\n get delta () {\n return this.changes.delta\n }\n\n /**\n * Check if a struct is added by this event.\n *\n * In contrast to change.deleted, this method also returns true if the struct was added and then deleted.\n *\n * @param {AbstractStruct} struct\n * @return {boolean}\n */\n adds (struct) {\n return struct.id.clock >= (this.transaction.beforeState.get(struct.id.client) || 0)\n }\n\n /**\n * This is a computed property. Note that this can only be safely computed during the\n * event call. Computing this property after other changes happened might result in\n * unexpected behavior (incorrect computation of deltas). A safe way to collect changes\n * is to store the `changes` or the `delta` object. Avoid storing the `transaction` object.\n *\n * @type {{added:Set<Item>,deleted:Set<Item>,keys:Map<string,{action:'add'|'update'|'delete',oldValue:any}>,delta:Array<{insert?:Array<any>|string, delete?:number, retain?:number}>}}\n */\n get changes () {\n let changes = this._changes;\n if (changes === null) {\n if (this.transaction.doc._transactionCleanups.length === 0) {\n throw error.create(errorComputeChanges)\n }\n const target = this.target;\n const added = set.create();\n const deleted = set.create();\n /**\n * @type {Array<{insert:Array<any>}|{delete:number}|{retain:number}>}\n */\n const delta = [];\n changes = {\n added,\n deleted,\n delta,\n keys: this.keys\n };\n const changed = /** @type Set<string|null> */ (this.transaction.changed.get(target));\n if (changed.has(null)) {\n /**\n * @type {any}\n */\n let lastOp = null;\n const packOp = () => {\n if (lastOp) {\n delta.push(lastOp);\n }\n };\n for (let item = target._start; item !== null; item = item.right) {\n if (item.deleted) {\n if (this.deletes(item) && !this.adds(item)) {\n if (lastOp === null || lastOp.delete === undefined) {\n packOp();\n lastOp = { delete: 0 };\n }\n lastOp.delete += item.length;\n deleted.add(item);\n } // else nop\n } else {\n if (this.adds(item)) {\n if (lastOp === null || lastOp.insert === undefined) {\n packOp();\n lastOp = { insert: [] };\n }\n lastOp.insert = lastOp.insert.concat(item.content.getContent());\n added.add(item);\n } else {\n if (lastOp === null || lastOp.retain === undefined) {\n packOp();\n lastOp = { retain: 0 };\n }\n lastOp.retain += item.length;\n }\n }\n }\n if (lastOp !== null && lastOp.retain === undefined) {\n packOp();\n }\n }\n this._changes = changes;\n }\n return /** @type {any} */ (changes)\n }\n}\n\n/**\n * Compute the path from this type to the specified target.\n *\n * @example\n * // `child` should be accessible via `type.get(path[0]).get(path[1])..`\n * const path = type.getPathTo(child)\n * // assuming `type instanceof YArray`\n * console.log(path) // might look like => [2, 'key1']\n * child === type.get(path[0]).get(path[1])\n *\n * @param {AbstractType<any>} parent\n * @param {AbstractType<any>} child target\n * @return {Array<string|number>} Path to the target\n *\n * @private\n * @function\n */\nconst getPathTo = (parent, child) => {\n const path = [];\n while (child._item !== null && child !== parent) {\n if (child._item.parentSub !== null) {\n // parent is map-ish\n path.unshift(child._item.parentSub);\n } else {\n // parent is array-ish\n let i = 0;\n let c = /** @type {AbstractType<any>} */ (child._item.parent)._start;\n while (c !== child._item && c !== null) {\n if (!c.deleted && c.countable) {\n i += c.length;\n }\n c = c.right;\n }\n path.unshift(i);\n }\n child = /** @type {AbstractType<any>} */ (child._item.parent);\n }\n return path\n};\n\nconst maxSearchMarker = 80;\n\n/**\n * A unique timestamp that identifies each marker.\n *\n * Time is relative,.. this is more like an ever-increasing clock.\n *\n * @type {number}\n */\nlet globalSearchMarkerTimestamp = 0;\n\nclass ArraySearchMarker {\n /**\n * @param {Item} p\n * @param {number} index\n */\n constructor (p, index) {\n p.marker = true;\n this.p = p;\n this.index = index;\n this.timestamp = globalSearchMarkerTimestamp++;\n }\n}\n\n/**\n * @param {ArraySearchMarker} marker\n */\nconst refreshMarkerTimestamp = marker => { marker.timestamp = globalSearchMarkerTimestamp++; };\n\n/**\n * This is rather complex so this function is the only thing that should overwrite a marker\n *\n * @param {ArraySearchMarker} marker\n * @param {Item} p\n * @param {number} index\n */\nconst overwriteMarker = (marker, p, index) => {\n marker.p.marker = false;\n marker.p = p;\n p.marker = true;\n marker.index = index;\n marker.timestamp = globalSearchMarkerTimestamp++;\n};\n\n/**\n * @param {Array<ArraySearchMarker>} searchMarker\n * @param {Item} p\n * @param {number} index\n */\nconst markPosition = (searchMarker, p, index) => {\n if (searchMarker.length >= maxSearchMarker) {\n // override oldest marker (we don't want to create more objects)\n const marker = searchMarker.reduce((a, b) => a.timestamp < b.timestamp ? a : b);\n overwriteMarker(marker, p, index);\n return marker\n } else {\n // create new marker\n const pm = new ArraySearchMarker(p, index);\n searchMarker.push(pm);\n return pm\n }\n};\n\n/**\n * Search marker help us to find positions in the associative array faster.\n *\n * They speed up the process of finding a position without much bookkeeping.\n *\n * A maximum of `maxSearchMarker` objects are created.\n *\n * This function always returns a refreshed marker (updated timestamp)\n *\n * @param {AbstractType<any>} yarray\n * @param {number} index\n */\nconst findMarker = (yarray, index) => {\n if (yarray._start === null || index === 0 || yarray._searchMarker === null) {\n return null\n }\n const marker = yarray._searchMarker.length === 0 ? null : yarray._searchMarker.reduce((a, b) => math.abs(index - a.index) < math.abs(index - b.index) ? a : b);\n let p = yarray._start;\n let pindex = 0;\n if (marker !== null) {\n p = marker.p;\n pindex = marker.index;\n refreshMarkerTimestamp(marker); // we used it, we might need to use it again\n }\n // iterate to right if possible\n while (p.right !== null && pindex < index) {\n if (!p.deleted && p.countable) {\n if (index < pindex + p.length) {\n break\n }\n pindex += p.length;\n }\n p = p.right;\n }\n // iterate to left if necessary (might be that pindex > index)\n while (p.left !== null && pindex > index) {\n p = p.left;\n if (!p.deleted && p.countable) {\n pindex -= p.length;\n }\n }\n // we want to make sure that p can't be merged with left, because that would screw up everything\n // in that cas just return what we have (it is most likely the best marker anyway)\n // iterate to left until p can't be merged with left\n while (p.left !== null && p.left.id.client === p.id.client && p.left.id.clock + p.left.length === p.id.clock) {\n p = p.left;\n if (!p.deleted && p.countable) {\n pindex -= p.length;\n }\n }\n\n // @todo remove!\n // assure position\n // {\n // let start = yarray._start\n // let pos = 0\n // while (start !== p) {\n // if (!start.deleted && start.countable) {\n // pos += start.length\n // }\n // start = /** @type {Item} */ (start.right)\n // }\n // if (pos !== pindex) {\n // debugger\n // throw new Error('Gotcha position fail!')\n // }\n // }\n // if (marker) {\n // if (window.lengthes == null) {\n // window.lengthes = []\n // window.getLengthes = () => window.lengthes.sort((a, b) => a - b)\n // }\n // window.lengthes.push(marker.index - pindex)\n // console.log('distance', marker.index - pindex, 'len', p && p.parent.length)\n // }\n if (marker !== null && math.abs(marker.index - pindex) < /** @type {YText|YArray<any>} */ (p.parent).length / maxSearchMarker) {\n // adjust existing marker\n overwriteMarker(marker, p, pindex);\n return marker\n } else {\n // create new marker\n return markPosition(yarray._searchMarker, p, pindex)\n }\n};\n\n/**\n * Update markers when a change happened.\n *\n * This should be called before doing a deletion!\n *\n * @param {Array<ArraySearchMarker>} searchMarker\n * @param {number} index\n * @param {number} len If insertion, len is positive. If deletion, len is negative.\n */\nconst updateMarkerChanges = (searchMarker, index, len) => {\n for (let i = searchMarker.length - 1; i >= 0; i--) {\n const m = searchMarker[i];\n if (len > 0) {\n /**\n * @type {Item|null}\n */\n let p = m.p;\n p.marker = false;\n // Ideally we just want to do a simple position comparison, but this will only work if\n // search markers don't point to deleted items for formats.\n // Iterate marker to prev undeleted countable position so we know what to do when updating a position\n while (p && (p.deleted || !p.countable)) {\n p = p.left;\n if (p && !p.deleted && p.countable) {\n // adjust position. the loop should break now\n m.index -= p.length;\n }\n }\n if (p === null || p.marker === true) {\n // remove search marker if updated position is null or if position is already marked\n searchMarker.splice(i, 1);\n continue\n }\n m.p = p;\n p.marker = true;\n }\n if (index < m.index || (len > 0 && index === m.index)) { // a simple index <= m.index check would actually suffice\n m.index = math.max(index, m.index + len);\n }\n }\n};\n\n/**\n * Accumulate all (list) children of a type and return them as an Array.\n *\n * @param {AbstractType<any>} t\n * @return {Array<Item>}\n */\nconst getTypeChildren = t => {\n let s = t._start;\n const arr = [];\n while (s) {\n arr.push(s);\n s = s.right;\n }\n return arr\n};\n\n/**\n * Call event listeners with an event. This will also add an event to all\n * parents (for `.observeDeep` handlers).\n *\n * @template EventType\n * @param {AbstractType<EventType>} type\n * @param {Transaction} transaction\n * @param {EventType} event\n */\nconst callTypeObservers = (type, transaction, event) => {\n const changedType = type;\n const changedParentTypes = transaction.changedParentTypes;\n while (true) {\n // @ts-ignore\n map.setIfUndefined(changedParentTypes, type, () => []).push(event);\n if (type._item === null) {\n break\n }\n type = /** @type {AbstractType<any>} */ (type._item.parent);\n }\n callEventHandlerListeners(changedType._eH, event, transaction);\n};\n\n/**\n * @template EventType\n * Abstract Yjs Type class\n */\nclass AbstractType {\n constructor () {\n /**\n * @type {Item|null}\n */\n this._item = null;\n /**\n * @type {Map<string,Item>}\n */\n this._map = new Map();\n /**\n * @type {Item|null}\n */\n this._start = null;\n /**\n * @type {Doc|null}\n */\n this.doc = null;\n this._length = 0;\n /**\n * Event handlers\n * @type {EventHandler<EventType,Transaction>}\n */\n this._eH = createEventHandler();\n /**\n * Deep event handlers\n * @type {EventHandler<Array<YEvent<any>>,Transaction>}\n */\n this._dEH = createEventHandler();\n /**\n * @type {null | Array<ArraySearchMarker>}\n */\n this._searchMarker = null;\n }\n\n /**\n * @return {AbstractType<any>|null}\n */\n get parent () {\n return this._item ? /** @type {AbstractType<any>} */ (this._item.parent) : null\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item|null} item\n */\n _integrate (y, item) {\n this.doc = y;\n this._item = item;\n }\n\n /**\n * @return {AbstractType<EventType>}\n */\n _copy () {\n throw error.methodUnimplemented()\n }\n\n /**\n * Makes a copy of this data type that can be included somewhere else.\n *\n * Note that the content is only readable _after_ it has been included somewhere in the Ydoc.\n *\n * @return {AbstractType<EventType>}\n */\n clone () {\n throw error.methodUnimplemented()\n }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} _encoder\n */\n _write (_encoder) { }\n\n /**\n * The first non-deleted item\n */\n get _first () {\n let n = this._start;\n while (n !== null && n.deleted) {\n n = n.right;\n }\n return n\n }\n\n /**\n * Creates YEvent and calls all type observers.\n * Must be implemented by each type.\n *\n * @param {Transaction} transaction\n * @param {Set<null|string>} _parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, _parentSubs) {\n if (!transaction.local && this._searchMarker) {\n this._searchMarker.length = 0;\n }\n }\n\n /**\n * Observe all events that are created on this type.\n *\n * @param {function(EventType, Transaction):void} f Observer function\n */\n observe (f) {\n addEventHandlerListener(this._eH, f);\n }\n\n /**\n * Observe all events that are created by this type and its children.\n *\n * @param {function(Array<YEvent<any>>,Transaction):void} f Observer function\n */\n observeDeep (f) {\n addEventHandlerListener(this._dEH, f);\n }\n\n /**\n * Unregister an observer function.\n *\n * @param {function(EventType,Transaction):void} f Observer function\n */\n unobserve (f) {\n removeEventHandlerListener(this._eH, f);\n }\n\n /**\n * Unregister an observer function.\n *\n * @param {function(Array<YEvent<any>>,Transaction):void} f Observer function\n */\n unobserveDeep (f) {\n removeEventHandlerListener(this._dEH, f);\n }\n\n /**\n * @abstract\n * @return {any}\n */\n toJSON () {}\n}\n\n/**\n * @param {AbstractType<any>} type\n * @param {number} start\n * @param {number} end\n * @return {Array<any>}\n *\n * @private\n * @function\n */\nconst typeListSlice = (type, start, end) => {\n if (start < 0) {\n start = type._length + start;\n }\n if (end < 0) {\n end = type._length + end;\n }\n let len = end - start;\n const cs = [];\n let n = type._start;\n while (n !== null && len > 0) {\n if (n.countable && !n.deleted) {\n const c = n.content.getContent();\n if (c.length <= start) {\n start -= c.length;\n } else {\n for (let i = start; i < c.length && len > 0; i++) {\n cs.push(c[i]);\n len--;\n }\n start = 0;\n }\n }\n n = n.right;\n }\n return cs\n};\n\n/**\n * @param {AbstractType<any>} type\n * @return {Array<any>}\n *\n * @private\n * @function\n */\nconst typeListToArray = type => {\n const cs = [];\n let n = type._start;\n while (n !== null) {\n if (n.countable && !n.deleted) {\n const c = n.content.getContent();\n for (let i = 0; i < c.length; i++) {\n cs.push(c[i]);\n }\n }\n n = n.right;\n }\n return cs\n};\n\n/**\n * @param {AbstractType<any>} type\n * @param {Snapshot} snapshot\n * @return {Array<any>}\n *\n * @private\n * @function\n */\nconst typeListToArraySnapshot = (type, snapshot) => {\n const cs = [];\n let n = type._start;\n while (n !== null) {\n if (n.countable && isVisible(n, snapshot)) {\n const c = n.content.getContent();\n for (let i = 0; i < c.length; i++) {\n cs.push(c[i]);\n }\n }\n n = n.right;\n }\n return cs\n};\n\n/**\n * Executes a provided function on once on every element of this YArray.\n *\n * @param {AbstractType<any>} type\n * @param {function(any,number,any):void} f A function to execute on every element of this YArray.\n *\n * @private\n * @function\n */\nconst typeListForEach = (type, f) => {\n let index = 0;\n let n = type._start;\n while (n !== null) {\n if (n.countable && !n.deleted) {\n const c = n.content.getContent();\n for (let i = 0; i < c.length; i++) {\n f(c[i], index++, type);\n }\n }\n n = n.right;\n }\n};\n\n/**\n * @template C,R\n * @param {AbstractType<any>} type\n * @param {function(C,number,AbstractType<any>):R} f\n * @return {Array<R>}\n *\n * @private\n * @function\n */\nconst typeListMap = (type, f) => {\n /**\n * @type {Array<any>}\n */\n const result = [];\n typeListForEach(type, (c, i) => {\n result.push(f(c, i, type));\n });\n return result\n};\n\n/**\n * @param {AbstractType<any>} type\n * @return {IterableIterator<any>}\n *\n * @private\n * @function\n */\nconst typeListCreateIterator = type => {\n let n = type._start;\n /**\n * @type {Array<any>|null}\n */\n let currentContent = null;\n let currentContentIndex = 0;\n return {\n [Symbol.iterator] () {\n return this\n },\n next: () => {\n // find some content\n if (currentContent === null) {\n while (n !== null && n.deleted) {\n n = n.right;\n }\n // check if we reached the end, no need to check currentContent, because it does not exist\n if (n === null) {\n return {\n done: true,\n value: undefined\n }\n }\n // we found n, so we can set currentContent\n currentContent = n.content.getContent();\n currentContentIndex = 0;\n n = n.right; // we used the content of n, now iterate to next\n }\n const value = currentContent[currentContentIndex++];\n // check if we need to empty currentContent\n if (currentContent.length <= currentContentIndex) {\n currentContent = null;\n }\n return {\n done: false,\n value\n }\n }\n }\n};\n\n/**\n * @param {AbstractType<any>} type\n * @param {number} index\n * @return {any}\n *\n * @private\n * @function\n */\nconst typeListGet = (type, index) => {\n const marker = findMarker(type, index);\n let n = type._start;\n if (marker !== null) {\n n = marker.p;\n index -= marker.index;\n }\n for (; n !== null; n = n.right) {\n if (!n.deleted && n.countable) {\n if (index < n.length) {\n return n.content.getContent()[index]\n }\n index -= n.length;\n }\n }\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType<any>} parent\n * @param {Item?} referenceItem\n * @param {Array<Object<string,any>|Array<any>|boolean|number|null|string|Uint8Array>} content\n *\n * @private\n * @function\n */\nconst typeListInsertGenericsAfter = (transaction, parent, referenceItem, content) => {\n let left = referenceItem;\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n const store = doc.store;\n const right = referenceItem === null ? parent._start : referenceItem.right;\n /**\n * @type {Array<Object|Array<any>|number|null>}\n */\n let jsonContent = [];\n const packJsonContent = () => {\n if (jsonContent.length > 0) {\n left = new Item(createID(ownClientId, getState(store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentAny(jsonContent));\n left.integrate(transaction, 0);\n jsonContent = [];\n }\n };\n content.forEach(c => {\n if (c === null) {\n jsonContent.push(c);\n } else {\n switch (c.constructor) {\n case Number:\n case Object:\n case Boolean:\n case Array:\n case String:\n jsonContent.push(c);\n break\n default:\n packJsonContent();\n switch (c.constructor) {\n case Uint8Array:\n case ArrayBuffer:\n left = new Item(createID(ownClientId, getState(store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentBinary(new Uint8Array(/** @type {Uint8Array} */ (c))));\n left.integrate(transaction, 0);\n break\n case Doc:\n left = new Item(createID(ownClientId, getState(store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentDoc(/** @type {Doc} */ (c)));\n left.integrate(transaction, 0);\n break\n default:\n if (c instanceof AbstractType) {\n left = new Item(createID(ownClientId, getState(store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentType(c));\n left.integrate(transaction, 0);\n } else {\n throw new Error('Unexpected content type in insert operation')\n }\n }\n }\n }\n });\n packJsonContent();\n};\n\nconst lengthExceeded = () => error.create('Length exceeded!');\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType<any>} parent\n * @param {number} index\n * @param {Array<Object<string,any>|Array<any>|number|null|string|Uint8Array>} content\n *\n * @private\n * @function\n */\nconst typeListInsertGenerics = (transaction, parent, index, content) => {\n if (index > parent._length) {\n throw lengthExceeded()\n }\n if (index === 0) {\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, index, content.length);\n }\n return typeListInsertGenericsAfter(transaction, parent, null, content)\n }\n const startIndex = index;\n const marker = findMarker(parent, index);\n let n = parent._start;\n if (marker !== null) {\n n = marker.p;\n index -= marker.index;\n // we need to iterate one to the left so that the algorithm works\n if (index === 0) {\n // @todo refactor this as it actually doesn't consider formats\n n = n.prev; // important! get the left undeleted item so that we can actually decrease index\n index += (n && n.countable && !n.deleted) ? n.length : 0;\n }\n }\n for (; n !== null; n = n.right) {\n if (!n.deleted && n.countable) {\n if (index <= n.length) {\n if (index < n.length) {\n // insert in-between\n getItemCleanStart(transaction, createID(n.id.client, n.id.clock + index));\n }\n break\n }\n index -= n.length;\n }\n }\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, startIndex, content.length);\n }\n return typeListInsertGenericsAfter(transaction, parent, n, content)\n};\n\n/**\n * Pushing content is special as we generally want to push after the last item. So we don't have to update\n * the serach marker.\n *\n * @param {Transaction} transaction\n * @param {AbstractType<any>} parent\n * @param {Array<Object<string,any>|Array<any>|number|null|string|Uint8Array>} content\n *\n * @private\n * @function\n */\nconst typeListPushGenerics = (transaction, parent, content) => {\n // Use the marker with the highest index and iterate to the right.\n const marker = (parent._searchMarker || []).reduce((maxMarker, currMarker) => currMarker.index > maxMarker.index ? currMarker : maxMarker, { index: 0, p: parent._start });\n let n = marker.p;\n if (n) {\n while (n.right) {\n n = n.right;\n }\n }\n return typeListInsertGenericsAfter(transaction, parent, n, content)\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType<any>} parent\n * @param {number} index\n * @param {number} length\n *\n * @private\n * @function\n */\nconst typeListDelete = (transaction, parent, index, length) => {\n if (length === 0) { return }\n const startIndex = index;\n const startLength = length;\n const marker = findMarker(parent, index);\n let n = parent._start;\n if (marker !== null) {\n n = marker.p;\n index -= marker.index;\n }\n // compute the first item to be deleted\n for (; n !== null && index > 0; n = n.right) {\n if (!n.deleted && n.countable) {\n if (index < n.length) {\n getItemCleanStart(transaction, createID(n.id.client, n.id.clock + index));\n }\n index -= n.length;\n }\n }\n // delete all items until done\n while (length > 0 && n !== null) {\n if (!n.deleted) {\n if (length < n.length) {\n getItemCleanStart(transaction, createID(n.id.client, n.id.clock + length));\n }\n n.delete(transaction);\n length -= n.length;\n }\n n = n.right;\n }\n if (length > 0) {\n throw lengthExceeded()\n }\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, startIndex, -startLength + length /* in case we remove the above exception */);\n }\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType<any>} parent\n * @param {string} key\n *\n * @private\n * @function\n */\nconst typeMapDelete = (transaction, parent, key) => {\n const c = parent._map.get(key);\n if (c !== undefined) {\n c.delete(transaction);\n }\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType<any>} parent\n * @param {string} key\n * @param {Object|number|null|Array<any>|string|Uint8Array|AbstractType<any>} value\n *\n * @private\n * @function\n */\nconst typeMapSet = (transaction, parent, key, value) => {\n const left = parent._map.get(key) || null;\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n let content;\n if (value == null) {\n content = new ContentAny([value]);\n } else {\n switch (value.constructor) {\n case Number:\n case Object:\n case Boolean:\n case Array:\n case String:\n content = new ContentAny([value]);\n break\n case Uint8Array:\n content = new ContentBinary(/** @type {Uint8Array} */ (value));\n break\n case Doc:\n content = new ContentDoc(/** @type {Doc} */ (value));\n break\n default:\n if (value instanceof AbstractType) {\n content = new ContentType(value);\n } else {\n throw new Error('Unexpected content type')\n }\n }\n }\n new Item(createID(ownClientId, getState(doc.store, ownClientId)), left, left && left.lastId, null, null, parent, key, content).integrate(transaction, 0);\n};\n\n/**\n * @param {AbstractType<any>} parent\n * @param {string} key\n * @return {Object<string,any>|number|null|Array<any>|string|Uint8Array|AbstractType<any>|undefined}\n *\n * @private\n * @function\n */\nconst typeMapGet = (parent, key) => {\n const val = parent._map.get(key);\n return val !== undefined && !val.deleted ? val.content.getContent()[val.length - 1] : undefined\n};\n\n/**\n * @param {AbstractType<any>} parent\n * @return {Object<string,Object<string,any>|number|null|Array<any>|string|Uint8Array|AbstractType<any>|undefined>}\n *\n * @private\n * @function\n */\nconst typeMapGetAll = (parent) => {\n /**\n * @type {Object<string,any>}\n */\n const res = {};\n parent._map.forEach((value, key) => {\n if (!value.deleted) {\n res[key] = value.content.getContent()[value.length - 1];\n }\n });\n return res\n};\n\n/**\n * @param {AbstractType<any>} parent\n * @param {string} key\n * @return {boolean}\n *\n * @private\n * @function\n */\nconst typeMapHas = (parent, key) => {\n const val = parent._map.get(key);\n return val !== undefined && !val.deleted\n};\n\n/**\n * @param {AbstractType<any>} parent\n * @param {string} key\n * @param {Snapshot} snapshot\n * @return {Object<string,any>|number|null|Array<any>|string|Uint8Array|AbstractType<any>|undefined}\n *\n * @private\n * @function\n */\nconst typeMapGetSnapshot = (parent, key, snapshot) => {\n let v = parent._map.get(key) || null;\n while (v !== null && (!snapshot.sv.has(v.id.client) || v.id.clock >= (snapshot.sv.get(v.id.client) || 0))) {\n v = v.left;\n }\n return v !== null && isVisible(v, snapshot) ? v.content.getContent()[v.length - 1] : undefined\n};\n\n/**\n * @param {AbstractType<any>} parent\n * @param {Snapshot} snapshot\n * @return {Object<string,Object<string,any>|number|null|Array<any>|string|Uint8Array|AbstractType<any>|undefined>}\n *\n * @private\n * @function\n */\nconst typeMapGetAllSnapshot = (parent, snapshot) => {\n /**\n * @type {Object<string,any>}\n */\n const res = {};\n parent._map.forEach((value, key) => {\n /**\n * @type {Item|null}\n */\n let v = value;\n while (v !== null && (!snapshot.sv.has(v.id.client) || v.id.clock >= (snapshot.sv.get(v.id.client) || 0))) {\n v = v.left;\n }\n if (v !== null && isVisible(v, snapshot)) {\n res[key] = v.content.getContent()[v.length - 1];\n }\n });\n return res\n};\n\n/**\n * @param {Map<string,Item>} map\n * @return {IterableIterator<Array<any>>}\n *\n * @private\n * @function\n */\nconst createMapIterator = map => iterator.iteratorFilter(map.entries(), /** @param {any} entry */ entry => !entry[1].deleted);\n\n/**\n * @module YArray\n */\n\n\n/**\n * Event that describes the changes on a YArray\n * @template T\n * @extends YEvent<YArray<T>>\n */\nclass YArrayEvent extends YEvent {}\n\n/**\n * A shared Array implementation.\n * @template T\n * @extends AbstractType<YArrayEvent<T>>\n * @implements {Iterable<T>}\n */\nclass YArray extends AbstractType {\n constructor () {\n super();\n /**\n * @type {Array<any>?}\n * @private\n */\n this._prelimContent = [];\n /**\n * @type {Array<ArraySearchMarker>}\n */\n this._searchMarker = [];\n }\n\n /**\n * Construct a new YArray containing the specified items.\n * @template {Object<string,any>|Array<any>|number|null|string|Uint8Array} T\n * @param {Array<T>} items\n * @return {YArray<T>}\n */\n static from (items) {\n /**\n * @type {YArray<T>}\n */\n const a = new YArray();\n a.push(items);\n return a\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item);\n this.insert(0, /** @type {Array<any>} */ (this._prelimContent));\n this._prelimContent = null;\n }\n\n /**\n * @return {YArray<T>}\n */\n _copy () {\n return new YArray()\n }\n\n /**\n * Makes a copy of this data type that can be included somewhere else.\n *\n * Note that the content is only readable _after_ it has been included somewhere in the Ydoc.\n *\n * @return {YArray<T>}\n */\n clone () {\n /**\n * @type {YArray<T>}\n */\n const arr = new YArray();\n arr.insert(0, this.toArray().map(el =>\n el instanceof AbstractType ? /** @type {typeof el} */ (el.clone()) : el\n ));\n return arr\n }\n\n get length () {\n return this._prelimContent === null ? this._length : this._prelimContent.length\n }\n\n /**\n * Creates YArrayEvent and calls observers.\n *\n * @param {Transaction} transaction\n * @param {Set<null|string>} parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, parentSubs) {\n super._callObserver(transaction, parentSubs);\n callTypeObservers(this, transaction, new YArrayEvent(this, transaction));\n }\n\n /**\n * Inserts new content at an index.\n *\n * Important: This function expects an array of content. Not just a content\n * object. The reason for this \"weirdness\" is that inserting several elements\n * is very efficient when it is done as a single operation.\n *\n * @example\n * // Insert character 'a' at position 0\n * yarray.insert(0, ['a'])\n * // Insert numbers 1, 2 at position 1\n * yarray.insert(1, [1, 2])\n *\n * @param {number} index The index to insert content at.\n * @param {Array<T>} content The array of content\n */\n insert (index, content) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeListInsertGenerics(transaction, this, index, /** @type {any} */ (content));\n });\n } else {\n /** @type {Array<any>} */ (this._prelimContent).splice(index, 0, ...content);\n }\n }\n\n /**\n * Appends content to this YArray.\n *\n * @param {Array<T>} content Array of content to append.\n *\n * @todo Use the following implementation in all types.\n */\n push (content) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeListPushGenerics(transaction, this, /** @type {any} */ (content));\n });\n } else {\n /** @type {Array<any>} */ (this._prelimContent).push(...content);\n }\n }\n\n /**\n * Prepends content to this YArray.\n *\n * @param {Array<T>} content Array of content to prepend.\n */\n unshift (content) {\n this.insert(0, content);\n }\n\n /**\n * Deletes elements starting from an index.\n *\n * @param {number} index Index at which to start deleting elements\n * @param {number} length The number of elements to remove. Defaults to 1.\n */\n delete (index, length = 1) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeListDelete(transaction, this, index, length);\n });\n } else {\n /** @type {Array<any>} */ (this._prelimContent).splice(index, length);\n }\n }\n\n /**\n * Returns the i-th element from a YArray.\n *\n * @param {number} index The index of the element to return from the YArray\n * @return {T}\n */\n get (index) {\n return typeListGet(this, index)\n }\n\n /**\n * Transforms this YArray to a JavaScript Array.\n *\n * @return {Array<T>}\n */\n toArray () {\n return typeListToArray(this)\n }\n\n /**\n * Returns a portion of this YArray into a JavaScript Array selected\n * from start to end (end not included).\n *\n * @param {number} [start]\n * @param {number} [end]\n * @return {Array<T>}\n */\n slice (start = 0, end = this.length) {\n return typeListSlice(this, start, end)\n }\n\n /**\n * Transforms this Shared Type to a JSON object.\n *\n * @return {Array<any>}\n */\n toJSON () {\n return this.map(c => c instanceof AbstractType ? c.toJSON() : c)\n }\n\n /**\n * Returns an Array with the result of calling a provided function on every\n * element of this YArray.\n *\n * @template M\n * @param {function(T,number,YArray<T>):M} f Function that produces an element of the new Array\n * @return {Array<M>} A new array with each element being the result of the\n * callback function\n */\n map (f) {\n return typeListMap(this, /** @type {any} */ (f))\n }\n\n /**\n * Executes a provided function once on every element of this YArray.\n *\n * @param {function(T,number,YArray<T>):void} f A function to execute on every element of this YArray.\n */\n forEach (f) {\n typeListForEach(this, f);\n }\n\n /**\n * @return {IterableIterator<T>}\n */\n [Symbol.iterator] () {\n return typeListCreateIterator(this)\n }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n */\n _write (encoder) {\n encoder.writeTypeRef(YArrayRefID);\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} _decoder\n *\n * @private\n * @function\n */\nconst readYArray = _decoder => new YArray();\n\n/**\n * @module YMap\n */\n\n\n/**\n * @template T\n * @extends YEvent<YMap<T>>\n * Event that describes the changes on a YMap.\n */\nclass YMapEvent extends YEvent {\n /**\n * @param {YMap<T>} ymap The YArray that changed.\n * @param {Transaction} transaction\n * @param {Set<any>} subs The keys that changed.\n */\n constructor (ymap, transaction, subs) {\n super(ymap, transaction);\n this.keysChanged = subs;\n }\n}\n\n/**\n * @template MapType\n * A shared Map implementation.\n *\n * @extends AbstractType<YMapEvent<MapType>>\n * @implements {Iterable<[string, MapType]>}\n */\nclass YMap extends AbstractType {\n /**\n *\n * @param {Iterable<readonly [string, any]>=} entries - an optional iterable to initialize the YMap\n */\n constructor (entries) {\n super();\n /**\n * @type {Map<string,any>?}\n * @private\n */\n this._prelimContent = null;\n\n if (entries === undefined) {\n this._prelimContent = new Map();\n } else {\n this._prelimContent = new Map(entries);\n }\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item)\n ;/** @type {Map<string, any>} */ (this._prelimContent).forEach((value, key) => {\n this.set(key, value);\n });\n this._prelimContent = null;\n }\n\n /**\n * @return {YMap<MapType>}\n */\n _copy () {\n return new YMap()\n }\n\n /**\n * Makes a copy of this data type that can be included somewhere else.\n *\n * Note that the content is only readable _after_ it has been included somewhere in the Ydoc.\n *\n * @return {YMap<MapType>}\n */\n clone () {\n /**\n * @type {YMap<MapType>}\n */\n const map = new YMap();\n this.forEach((value, key) => {\n map.set(key, value instanceof AbstractType ? /** @type {typeof value} */ (value.clone()) : value);\n });\n return map\n }\n\n /**\n * Creates YMapEvent and calls observers.\n *\n * @param {Transaction} transaction\n * @param {Set<null|string>} parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, parentSubs) {\n callTypeObservers(this, transaction, new YMapEvent(this, transaction, parentSubs));\n }\n\n /**\n * Transforms this Shared Type to a JSON object.\n *\n * @return {Object<string,any>}\n */\n toJSON () {\n /**\n * @type {Object<string,MapType>}\n */\n const map = {};\n this._map.forEach((item, key) => {\n if (!item.deleted) {\n const v = item.content.getContent()[item.length - 1];\n map[key] = v instanceof AbstractType ? v.toJSON() : v;\n }\n });\n return map\n }\n\n /**\n * Returns the size of the YMap (count of key/value pairs)\n *\n * @return {number}\n */\n get size () {\n return [...createMapIterator(this._map)].length\n }\n\n /**\n * Returns the keys for each element in the YMap Type.\n *\n * @return {IterableIterator<string>}\n */\n keys () {\n return iterator.iteratorMap(createMapIterator(this._map), /** @param {any} v */ v => v[0])\n }\n\n /**\n * Returns the values for each element in the YMap Type.\n *\n * @return {IterableIterator<MapType>}\n */\n values () {\n return iterator.iteratorMap(createMapIterator(this._map), /** @param {any} v */ v => v[1].content.getContent()[v[1].length - 1])\n }\n\n /**\n * Returns an Iterator of [key, value] pairs\n *\n * @return {IterableIterator<[string, MapType]>}\n */\n entries () {\n return iterator.iteratorMap(createMapIterator(this._map), /** @param {any} v */ v => /** @type {any} */ ([v[0], v[1].content.getContent()[v[1].length - 1]]))\n }\n\n /**\n * Executes a provided function on once on every key-value pair.\n *\n * @param {function(MapType,string,YMap<MapType>):void} f A function to execute on every element of this YArray.\n */\n forEach (f) {\n this._map.forEach((item, key) => {\n if (!item.deleted) {\n f(item.content.getContent()[item.length - 1], key, this);\n }\n });\n }\n\n /**\n * Returns an Iterator of [key, value] pairs\n *\n * @return {IterableIterator<[string, MapType]>}\n */\n [Symbol.iterator] () {\n return this.entries()\n }\n\n /**\n * Remove a specified element from this YMap.\n *\n * @param {string} key The key of the element to remove.\n */\n delete (key) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapDelete(transaction, this, key);\n });\n } else {\n /** @type {Map<string, any>} */ (this._prelimContent).delete(key);\n }\n }\n\n /**\n * Adds or updates an element with a specified key and value.\n * @template {MapType} VAL\n *\n * @param {string} key The key of the element to add to this YMap\n * @param {VAL} value The value of the element to add\n * @return {VAL}\n */\n set (key, value) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapSet(transaction, this, key, /** @type {any} */ (value));\n });\n } else {\n /** @type {Map<string, any>} */ (this._prelimContent).set(key, value);\n }\n return value\n }\n\n /**\n * Returns a specified element from this YMap.\n *\n * @param {string} key\n * @return {MapType|undefined}\n */\n get (key) {\n return /** @type {any} */ (typeMapGet(this, key))\n }\n\n /**\n * Returns a boolean indicating whether the specified key exists or not.\n *\n * @param {string} key The key to test.\n * @return {boolean}\n */\n has (key) {\n return typeMapHas(this, key)\n }\n\n /**\n * Removes all elements from this YMap.\n */\n clear () {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n this.forEach(function (_value, key, map) {\n typeMapDelete(transaction, map, key);\n });\n });\n } else {\n /** @type {Map<string, any>} */ (this._prelimContent).clear();\n }\n }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n */\n _write (encoder) {\n encoder.writeTypeRef(YMapRefID);\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} _decoder\n *\n * @private\n * @function\n */\nconst readYMap = _decoder => new YMap();\n\n/**\n * @module YText\n */\n\n\n/**\n * @param {any} a\n * @param {any} b\n * @return {boolean}\n */\nconst equalAttrs = (a, b) => a === b || (typeof a === 'object' && typeof b === 'object' && a && b && object.equalFlat(a, b));\n\nclass ItemTextListPosition {\n /**\n * @param {Item|null} left\n * @param {Item|null} right\n * @param {number} index\n * @param {Map<string,any>} currentAttributes\n */\n constructor (left, right, index, currentAttributes) {\n this.left = left;\n this.right = right;\n this.index = index;\n this.currentAttributes = currentAttributes;\n }\n\n /**\n * Only call this if you know that this.right is defined\n */\n forward () {\n if (this.right === null) {\n error.unexpectedCase();\n }\n switch (this.right.content.constructor) {\n case ContentFormat:\n if (!this.right.deleted) {\n updateCurrentAttributes(this.currentAttributes, /** @type {ContentFormat} */ (this.right.content));\n }\n break\n default:\n if (!this.right.deleted) {\n this.index += this.right.length;\n }\n break\n }\n this.left = this.right;\n this.right = this.right.right;\n }\n}\n\n/**\n * @param {Transaction} transaction\n * @param {ItemTextListPosition} pos\n * @param {number} count steps to move forward\n * @return {ItemTextListPosition}\n *\n * @private\n * @function\n */\nconst findNextPosition = (transaction, pos, count) => {\n while (pos.right !== null && count > 0) {\n switch (pos.right.content.constructor) {\n case ContentFormat:\n if (!pos.right.deleted) {\n updateCurrentAttributes(pos.currentAttributes, /** @type {ContentFormat} */ (pos.right.content));\n }\n break\n default:\n if (!pos.right.deleted) {\n if (count < pos.right.length) {\n // split right\n getItemCleanStart(transaction, createID(pos.right.id.client, pos.right.id.clock + count));\n }\n pos.index += pos.right.length;\n count -= pos.right.length;\n }\n break\n }\n pos.left = pos.right;\n pos.right = pos.right.right;\n // pos.forward() - we don't forward because that would halve the performance because we already do the checks above\n }\n return pos\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType<any>} parent\n * @param {number} index\n * @param {boolean} useSearchMarker\n * @return {ItemTextListPosition}\n *\n * @private\n * @function\n */\nconst findPosition = (transaction, parent, index, useSearchMarker) => {\n const currentAttributes = new Map();\n const marker = useSearchMarker ? findMarker(parent, index) : null;\n if (marker) {\n const pos = new ItemTextListPosition(marker.p.left, marker.p, marker.index, currentAttributes);\n return findNextPosition(transaction, pos, index - marker.index)\n } else {\n const pos = new ItemTextListPosition(null, parent._start, 0, currentAttributes);\n return findNextPosition(transaction, pos, index)\n }\n};\n\n/**\n * Negate applied formats\n *\n * @param {Transaction} transaction\n * @param {AbstractType<any>} parent\n * @param {ItemTextListPosition} currPos\n * @param {Map<string,any>} negatedAttributes\n *\n * @private\n * @function\n */\nconst insertNegatedAttributes = (transaction, parent, currPos, negatedAttributes) => {\n // check if we really need to remove attributes\n while (\n currPos.right !== null && (\n currPos.right.deleted === true || (\n currPos.right.content.constructor === ContentFormat &&\n equalAttrs(negatedAttributes.get(/** @type {ContentFormat} */ (currPos.right.content).key), /** @type {ContentFormat} */ (currPos.right.content).value)\n )\n )\n ) {\n if (!currPos.right.deleted) {\n negatedAttributes.delete(/** @type {ContentFormat} */ (currPos.right.content).key);\n }\n currPos.forward();\n }\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n negatedAttributes.forEach((val, key) => {\n const left = currPos.left;\n const right = currPos.right;\n const nextFormat = new Item(createID(ownClientId, getState(doc.store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentFormat(key, val));\n nextFormat.integrate(transaction, 0);\n currPos.right = nextFormat;\n currPos.forward();\n });\n};\n\n/**\n * @param {Map<string,any>} currentAttributes\n * @param {ContentFormat} format\n *\n * @private\n * @function\n */\nconst updateCurrentAttributes = (currentAttributes, format) => {\n const { key, value } = format;\n if (value === null) {\n currentAttributes.delete(key);\n } else {\n currentAttributes.set(key, value);\n }\n};\n\n/**\n * @param {ItemTextListPosition} currPos\n * @param {Object<string,any>} attributes\n *\n * @private\n * @function\n */\nconst minimizeAttributeChanges = (currPos, attributes) => {\n // go right while attributes[right.key] === right.value (or right is deleted)\n while (true) {\n if (currPos.right === null) {\n break\n } else if (currPos.right.deleted || (currPos.right.content.constructor === ContentFormat && equalAttrs(attributes[(/** @type {ContentFormat} */ (currPos.right.content)).key] ?? null, /** @type {ContentFormat} */ (currPos.right.content).value))) ; else {\n break\n }\n currPos.forward();\n }\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType<any>} parent\n * @param {ItemTextListPosition} currPos\n * @param {Object<string,any>} attributes\n * @return {Map<string,any>}\n *\n * @private\n * @function\n **/\nconst insertAttributes = (transaction, parent, currPos, attributes) => {\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n const negatedAttributes = new Map();\n // insert format-start items\n for (const key in attributes) {\n const val = attributes[key];\n const currentVal = currPos.currentAttributes.get(key) ?? null;\n if (!equalAttrs(currentVal, val)) {\n // save negated attribute (set null if currentVal undefined)\n negatedAttributes.set(key, currentVal);\n const { left, right } = currPos;\n currPos.right = new Item(createID(ownClientId, getState(doc.store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentFormat(key, val));\n currPos.right.integrate(transaction, 0);\n currPos.forward();\n }\n }\n return negatedAttributes\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType<any>} parent\n * @param {ItemTextListPosition} currPos\n * @param {string|object|AbstractType<any>} text\n * @param {Object<string,any>} attributes\n *\n * @private\n * @function\n **/\nconst insertText = (transaction, parent, currPos, text, attributes) => {\n currPos.currentAttributes.forEach((_val, key) => {\n if (attributes[key] === undefined) {\n attributes[key] = null;\n }\n });\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n minimizeAttributeChanges(currPos, attributes);\n const negatedAttributes = insertAttributes(transaction, parent, currPos, attributes);\n // insert content\n const content = text.constructor === String ? new ContentString(/** @type {string} */ (text)) : (text instanceof AbstractType ? new ContentType(text) : new ContentEmbed(text));\n let { left, right, index } = currPos;\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, currPos.index, content.getLength());\n }\n right = new Item(createID(ownClientId, getState(doc.store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, content);\n right.integrate(transaction, 0);\n currPos.right = right;\n currPos.index = index;\n currPos.forward();\n insertNegatedAttributes(transaction, parent, currPos, negatedAttributes);\n};\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType<any>} parent\n * @param {ItemTextListPosition} currPos\n * @param {number} length\n * @param {Object<string,any>} attributes\n *\n * @private\n * @function\n */\nconst formatText = (transaction, parent, currPos, length, attributes) => {\n const doc = transaction.doc;\n const ownClientId = doc.clientID;\n minimizeAttributeChanges(currPos, attributes);\n const negatedAttributes = insertAttributes(transaction, parent, currPos, attributes);\n // iterate until first non-format or null is found\n // delete all formats with attributes[format.key] != null\n // also check the attributes after the first non-format as we do not want to insert redundant negated attributes there\n // eslint-disable-next-line no-labels\n iterationLoop: while (\n currPos.right !== null &&\n (length > 0 ||\n (\n negatedAttributes.size > 0 &&\n (currPos.right.deleted || currPos.right.content.constructor === ContentFormat)\n )\n )\n ) {\n if (!currPos.right.deleted) {\n switch (currPos.right.content.constructor) {\n case ContentFormat: {\n const { key, value } = /** @type {ContentFormat} */ (currPos.right.content);\n const attr = attributes[key];\n if (attr !== undefined) {\n if (equalAttrs(attr, value)) {\n negatedAttributes.delete(key);\n } else {\n if (length === 0) {\n // no need to further extend negatedAttributes\n // eslint-disable-next-line no-labels\n break iterationLoop\n }\n negatedAttributes.set(key, value);\n }\n currPos.right.delete(transaction);\n } else {\n currPos.currentAttributes.set(key, value);\n }\n break\n }\n default:\n if (length < currPos.right.length) {\n getItemCleanStart(transaction, createID(currPos.right.id.client, currPos.right.id.clock + length));\n }\n length -= currPos.right.length;\n break\n }\n }\n currPos.forward();\n }\n // Quill just assumes that the editor starts with a newline and that it always\n // ends with a newline. We only insert that newline when a new newline is\n // inserted - i.e when length is bigger than type.length\n if (length > 0) {\n let newlines = '';\n for (; length > 0; length--) {\n newlines += '\\n';\n }\n currPos.right = new Item(createID(ownClientId, getState(doc.store, ownClientId)), currPos.left, currPos.left && currPos.left.lastId, currPos.right, currPos.right && currPos.right.id, parent, null, new ContentString(newlines));\n currPos.right.integrate(transaction, 0);\n currPos.forward();\n }\n insertNegatedAttributes(transaction, parent, currPos, negatedAttributes);\n};\n\n/**\n * Call this function after string content has been deleted in order to\n * clean up formatting Items.\n *\n * @param {Transaction} transaction\n * @param {Item} start\n * @param {Item|null} curr exclusive end, automatically iterates to the next Content Item\n * @param {Map<string,any>} startAttributes\n * @param {Map<string,any>} currAttributes\n * @return {number} The amount of formatting Items deleted.\n *\n * @function\n */\nconst cleanupFormattingGap = (transaction, start, curr, startAttributes, currAttributes) => {\n /**\n * @type {Item|null}\n */\n let end = start;\n /**\n * @type {Map<string,ContentFormat>}\n */\n const endFormats = map.create();\n while (end && (!end.countable || end.deleted)) {\n if (!end.deleted && end.content.constructor === ContentFormat) {\n const cf = /** @type {ContentFormat} */ (end.content);\n endFormats.set(cf.key, cf);\n }\n end = end.right;\n }\n let cleanups = 0;\n let reachedCurr = false;\n while (start !== end) {\n if (curr === start) {\n reachedCurr = true;\n }\n if (!start.deleted) {\n const content = start.content;\n switch (content.constructor) {\n case ContentFormat: {\n const { key, value } = /** @type {ContentFormat} */ (content);\n const startAttrValue = startAttributes.get(key) ?? null;\n if (endFormats.get(key) !== content || startAttrValue === value) {\n // Either this format is overwritten or it is not necessary because the attribute already existed.\n start.delete(transaction);\n cleanups++;\n if (!reachedCurr && (currAttributes.get(key) ?? null) === value && startAttrValue !== value) {\n if (startAttrValue === null) {\n currAttributes.delete(key);\n } else {\n currAttributes.set(key, startAttrValue);\n }\n }\n }\n if (!reachedCurr && !start.deleted) {\n updateCurrentAttributes(currAttributes, /** @type {ContentFormat} */ (content));\n }\n break\n }\n }\n }\n start = /** @type {Item} */ (start.right);\n }\n return cleanups\n};\n\n/**\n * @param {Transaction} transaction\n * @param {Item | null} item\n */\nconst cleanupContextlessFormattingGap = (transaction, item) => {\n // iterate until item.right is null or content\n while (item && item.right && (item.right.deleted || !item.right.countable)) {\n item = item.right;\n }\n const attrs = new Set();\n // iterate back until a content item is found\n while (item && (item.deleted || !item.countable)) {\n if (!item.deleted && item.content.constructor === ContentFormat) {\n const key = /** @type {ContentFormat} */ (item.content).key;\n if (attrs.has(key)) {\n item.delete(transaction);\n } else {\n attrs.add(key);\n }\n }\n item = item.left;\n }\n};\n\n/**\n * This function is experimental and subject to change / be removed.\n *\n * Ideally, we don't need this function at all. Formatting attributes should be cleaned up\n * automatically after each change. This function iterates twice over the complete YText type\n * and removes unnecessary formatting attributes. This is also helpful for testing.\n *\n * This function won't be exported anymore as soon as there is confidence that the YText type works as intended.\n *\n * @param {YText} type\n * @return {number} How many formatting attributes have been cleaned up.\n */\nconst cleanupYTextFormatting = type => {\n let res = 0;\n transact(/** @type {Doc} */ (type.doc), transaction => {\n let start = /** @type {Item} */ (type._start);\n let end = type._start;\n let startAttributes = map.create();\n const currentAttributes = map.copy(startAttributes);\n while (end) {\n if (end.deleted === false) {\n switch (end.content.constructor) {\n case ContentFormat:\n updateCurrentAttributes(currentAttributes, /** @type {ContentFormat} */ (end.content));\n break\n default:\n res += cleanupFormattingGap(transaction, start, end, startAttributes, currentAttributes);\n startAttributes = map.copy(currentAttributes);\n start = end;\n break\n }\n }\n end = end.right;\n }\n });\n return res\n};\n\n/**\n * This will be called by the transction once the event handlers are called to potentially cleanup\n * formatting attributes.\n *\n * @param {Transaction} transaction\n */\nconst cleanupYTextAfterTransaction = transaction => {\n /**\n * @type {Set<YText>}\n */\n const needFullCleanup = new Set();\n // check if another formatting item was inserted\n const doc = transaction.doc;\n for (const [client, afterClock] of transaction.afterState.entries()) {\n const clock = transaction.beforeState.get(client) || 0;\n if (afterClock === clock) {\n continue\n }\n iterateStructs(transaction, /** @type {Array<Item|GC>} */ (doc.store.clients.get(client)), clock, afterClock, item => {\n if (\n !item.deleted && /** @type {Item} */ (item).content.constructor === ContentFormat && item.constructor !== GC\n ) {\n needFullCleanup.add(/** @type {any} */ (item).parent);\n }\n });\n }\n // cleanup in a new transaction\n transact(doc, (t) => {\n iterateDeletedStructs(transaction, transaction.deleteSet, item => {\n if (item instanceof GC || !(/** @type {YText} */ (item.parent)._hasFormatting) || needFullCleanup.has(/** @type {YText} */ (item.parent))) {\n return\n }\n const parent = /** @type {YText} */ (item.parent);\n if (item.content.constructor === ContentFormat) {\n needFullCleanup.add(parent);\n } else {\n // If no formatting attribute was inserted or deleted, we can make due with contextless\n // formatting cleanups.\n // Contextless: it is not necessary to compute currentAttributes for the affected position.\n cleanupContextlessFormattingGap(t, item);\n }\n });\n // If a formatting item was inserted, we simply clean the whole type.\n // We need to compute currentAttributes for the current position anyway.\n for (const yText of needFullCleanup) {\n cleanupYTextFormatting(yText);\n }\n });\n};\n\n/**\n * @param {Transaction} transaction\n * @param {ItemTextListPosition} currPos\n * @param {number} length\n * @return {ItemTextListPosition}\n *\n * @private\n * @function\n */\nconst deleteText = (transaction, currPos, length) => {\n const startLength = length;\n const startAttrs = map.copy(currPos.currentAttributes);\n const start = currPos.right;\n while (length > 0 && currPos.right !== null) {\n if (currPos.right.deleted === false) {\n switch (currPos.right.content.constructor) {\n case ContentType:\n case ContentEmbed:\n case ContentString:\n if (length < currPos.right.length) {\n getItemCleanStart(transaction, createID(currPos.right.id.client, currPos.right.id.clock + length));\n }\n length -= currPos.right.length;\n currPos.right.delete(transaction);\n break\n }\n }\n currPos.forward();\n }\n if (start) {\n cleanupFormattingGap(transaction, start, currPos.right, startAttrs, currPos.currentAttributes);\n }\n const parent = /** @type {AbstractType<any>} */ (/** @type {Item} */ (currPos.left || currPos.right).parent);\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, currPos.index, -startLength + length);\n }\n return currPos\n};\n\n/**\n * The Quill Delta format represents changes on a text document with\n * formatting information. For mor information visit {@link https://quilljs.com/docs/delta/|Quill Delta}\n *\n * @example\n * {\n * ops: [\n * { insert: 'Gandalf', attributes: { bold: true } },\n * { insert: ' the ' },\n * { insert: 'Grey', attributes: { color: '#cccccc' } }\n * ]\n * }\n *\n */\n\n/**\n * Attributes that can be assigned to a selection of text.\n *\n * @example\n * {\n * bold: true,\n * font-size: '40px'\n * }\n *\n * @typedef {Object} TextAttributes\n */\n\n/**\n * @extends YEvent<YText>\n * Event that describes the changes on a YText type.\n */\nclass YTextEvent extends YEvent {\n /**\n * @param {YText} ytext\n * @param {Transaction} transaction\n * @param {Set<any>} subs The keys that changed\n */\n constructor (ytext, transaction, subs) {\n super(ytext, transaction);\n /**\n * Whether the children changed.\n * @type {Boolean}\n * @private\n */\n this.childListChanged = false;\n /**\n * Set of all changed attributes.\n * @type {Set<string>}\n */\n this.keysChanged = new Set();\n subs.forEach((sub) => {\n if (sub === null) {\n this.childListChanged = true;\n } else {\n this.keysChanged.add(sub);\n }\n });\n }\n\n /**\n * @type {{added:Set<Item>,deleted:Set<Item>,keys:Map<string,{action:'add'|'update'|'delete',oldValue:any}>,delta:Array<{insert?:Array<any>|string, delete?:number, retain?:number}>}}\n */\n get changes () {\n if (this._changes === null) {\n /**\n * @type {{added:Set<Item>,deleted:Set<Item>,keys:Map<string,{action:'add'|'update'|'delete',oldValue:any}>,delta:Array<{insert?:Array<any>|string|AbstractType<any>|object, delete?:number, retain?:number}>}}\n */\n const changes = {\n keys: this.keys,\n delta: this.delta,\n added: new Set(),\n deleted: new Set()\n };\n this._changes = changes;\n }\n return /** @type {any} */ (this._changes)\n }\n\n /**\n * Compute the changes in the delta format.\n * A {@link https://quilljs.com/docs/delta/|Quill Delta}) that represents the changes on the document.\n *\n * @type {Array<{insert?:string|object|AbstractType<any>, delete?:number, retain?:number, attributes?: Object<string,any>}>}\n *\n * @public\n */\n get delta () {\n if (this._delta === null) {\n const y = /** @type {Doc} */ (this.target.doc);\n /**\n * @type {Array<{insert?:string|object|AbstractType<any>, delete?:number, retain?:number, attributes?: Object<string,any>}>}\n */\n const delta = [];\n transact(y, transaction => {\n const currentAttributes = new Map(); // saves all current attributes for insert\n const oldAttributes = new Map();\n let item = this.target._start;\n /**\n * @type {string?}\n */\n let action = null;\n /**\n * @type {Object<string,any>}\n */\n const attributes = {}; // counts added or removed new attributes for retain\n /**\n * @type {string|object}\n */\n let insert = '';\n let retain = 0;\n let deleteLen = 0;\n const addOp = () => {\n if (action !== null) {\n /**\n * @type {any}\n */\n let op = null;\n switch (action) {\n case 'delete':\n if (deleteLen > 0) {\n op = { delete: deleteLen };\n }\n deleteLen = 0;\n break\n case 'insert':\n if (typeof insert === 'object' || insert.length > 0) {\n op = { insert };\n if (currentAttributes.size > 0) {\n op.attributes = {};\n currentAttributes.forEach((value, key) => {\n if (value !== null) {\n op.attributes[key] = value;\n }\n });\n }\n }\n insert = '';\n break\n case 'retain':\n if (retain > 0) {\n op = { retain };\n if (!object.isEmpty(attributes)) {\n op.attributes = object.assign({}, attributes);\n }\n }\n retain = 0;\n break\n }\n if (op) delta.push(op);\n action = null;\n }\n };\n while (item !== null) {\n switch (item.content.constructor) {\n case ContentType:\n case ContentEmbed:\n if (this.adds(item)) {\n if (!this.deletes(item)) {\n addOp();\n action = 'insert';\n insert = item.content.getContent()[0];\n addOp();\n }\n } else if (this.deletes(item)) {\n if (action !== 'delete') {\n addOp();\n action = 'delete';\n }\n deleteLen += 1;\n } else if (!item.deleted) {\n if (action !== 'retain') {\n addOp();\n action = 'retain';\n }\n retain += 1;\n }\n break\n case ContentString:\n if (this.adds(item)) {\n if (!this.deletes(item)) {\n if (action !== 'insert') {\n addOp();\n action = 'insert';\n }\n insert += /** @type {ContentString} */ (item.content).str;\n }\n } else if (this.deletes(item)) {\n if (action !== 'delete') {\n addOp();\n action = 'delete';\n }\n deleteLen += item.length;\n } else if (!item.deleted) {\n if (action !== 'retain') {\n addOp();\n action = 'retain';\n }\n retain += item.length;\n }\n break\n case ContentFormat: {\n const { key, value } = /** @type {ContentFormat} */ (item.content);\n if (this.adds(item)) {\n if (!this.deletes(item)) {\n const curVal = currentAttributes.get(key) ?? null;\n if (!equalAttrs(curVal, value)) {\n if (action === 'retain') {\n addOp();\n }\n if (equalAttrs(value, (oldAttributes.get(key) ?? null))) {\n delete attributes[key];\n } else {\n attributes[key] = value;\n }\n } else if (value !== null) {\n item.delete(transaction);\n }\n }\n } else if (this.deletes(item)) {\n oldAttributes.set(key, value);\n const curVal = currentAttributes.get(key) ?? null;\n if (!equalAttrs(curVal, value)) {\n if (action === 'retain') {\n addOp();\n }\n attributes[key] = curVal;\n }\n } else if (!item.deleted) {\n oldAttributes.set(key, value);\n const attr = attributes[key];\n if (attr !== undefined) {\n if (!equalAttrs(attr, value)) {\n if (action === 'retain') {\n addOp();\n }\n if (value === null) {\n delete attributes[key];\n } else {\n attributes[key] = value;\n }\n } else if (attr !== null) { // this will be cleaned up automatically by the contextless cleanup function\n item.delete(transaction);\n }\n }\n }\n if (!item.deleted) {\n if (action === 'insert') {\n addOp();\n }\n updateCurrentAttributes(currentAttributes, /** @type {ContentFormat} */ (item.content));\n }\n break\n }\n }\n item = item.right;\n }\n addOp();\n while (delta.length > 0) {\n const lastOp = delta[delta.length - 1];\n if (lastOp.retain !== undefined && lastOp.attributes === undefined) {\n // retain delta's if they don't assign attributes\n delta.pop();\n } else {\n break\n }\n }\n });\n this._delta = delta;\n }\n return /** @type {any} */ (this._delta)\n }\n}\n\n/**\n * Type that represents text with formatting information.\n *\n * This type replaces y-richtext as this implementation is able to handle\n * block formats (format information on a paragraph), embeds (complex elements\n * like pictures and videos), and text formats (**bold**, *italic*).\n *\n * @extends AbstractType<YTextEvent>\n */\nclass YText extends AbstractType {\n /**\n * @param {String} [string] The initial value of the YText.\n */\n constructor (string) {\n super();\n /**\n * Array of pending operations on this type\n * @type {Array<function():void>?}\n */\n this._pending = string !== undefined ? [() => this.insert(0, string)] : [];\n /**\n * @type {Array<ArraySearchMarker>|null}\n */\n this._searchMarker = [];\n /**\n * Whether this YText contains formatting attributes.\n * This flag is updated when a formatting item is integrated (see ContentFormat.integrate)\n */\n this._hasFormatting = false;\n }\n\n /**\n * Number of characters of this text type.\n *\n * @type {number}\n */\n get length () {\n return this._length\n }\n\n /**\n * @param {Doc} y\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item);\n try {\n /** @type {Array<function>} */ (this._pending).forEach(f => f());\n } catch (e) {\n console.error(e);\n }\n this._pending = null;\n }\n\n _copy () {\n return new YText()\n }\n\n /**\n * Makes a copy of this data type that can be included somewhere else.\n *\n * Note that the content is only readable _after_ it has been included somewhere in the Ydoc.\n *\n * @return {YText}\n */\n clone () {\n const text = new YText();\n text.applyDelta(this.toDelta());\n return text\n }\n\n /**\n * Creates YTextEvent and calls observers.\n *\n * @param {Transaction} transaction\n * @param {Set<null|string>} parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, parentSubs) {\n super._callObserver(transaction, parentSubs);\n const event = new YTextEvent(this, transaction, parentSubs);\n callTypeObservers(this, transaction, event);\n // If a remote change happened, we try to cleanup potential formatting duplicates.\n if (!transaction.local && this._hasFormatting) {\n transaction._needFormattingCleanup = true;\n }\n }\n\n /**\n * Returns the unformatted string representation of this YText type.\n *\n * @public\n */\n toString () {\n let str = '';\n /**\n * @type {Item|null}\n */\n let n = this._start;\n while (n !== null) {\n if (!n.deleted && n.countable && n.content.constructor === ContentString) {\n str += /** @type {ContentString} */ (n.content).str;\n }\n n = n.right;\n }\n return str\n }\n\n /**\n * Returns the unformatted string representation of this YText type.\n *\n * @return {string}\n * @public\n */\n toJSON () {\n return this.toString()\n }\n\n /**\n * Apply a {@link Delta} on this shared YText type.\n *\n * @param {any} delta The changes to apply on this element.\n * @param {object} opts\n * @param {boolean} [opts.sanitize] Sanitize input delta. Removes ending newlines if set to true.\n *\n *\n * @public\n */\n applyDelta (delta, { sanitize = true } = {}) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n const currPos = new ItemTextListPosition(null, this._start, 0, new Map());\n for (let i = 0; i < delta.length; i++) {\n const op = delta[i];\n if (op.insert !== undefined) {\n // Quill assumes that the content starts with an empty paragraph.\n // Yjs/Y.Text assumes that it starts empty. We always hide that\n // there is a newline at the end of the content.\n // If we omit this step, clients will see a different number of\n // paragraphs, but nothing bad will happen.\n const ins = (!sanitize && typeof op.insert === 'string' && i === delta.length - 1 && currPos.right === null && op.insert.slice(-1) === '\\n') ? op.insert.slice(0, -1) : op.insert;\n if (typeof ins !== 'string' || ins.length > 0) {\n insertText(transaction, this, currPos, ins, op.attributes || {});\n }\n } else if (op.retain !== undefined) {\n formatText(transaction, this, currPos, op.retain, op.attributes || {});\n } else if (op.delete !== undefined) {\n deleteText(transaction, currPos, op.delete);\n }\n }\n });\n } else {\n /** @type {Array<function>} */ (this._pending).push(() => this.applyDelta(delta));\n }\n }\n\n /**\n * Returns the Delta representation of this YText type.\n *\n * @param {Snapshot} [snapshot]\n * @param {Snapshot} [prevSnapshot]\n * @param {function('removed' | 'added', ID):any} [computeYChange]\n * @return {any} The Delta representation of this type.\n *\n * @public\n */\n toDelta (snapshot, prevSnapshot, computeYChange) {\n /**\n * @type{Array<any>}\n */\n const ops = [];\n const currentAttributes = new Map();\n const doc = /** @type {Doc} */ (this.doc);\n let str = '';\n let n = this._start;\n function packStr () {\n if (str.length > 0) {\n // pack str with attributes to ops\n /**\n * @type {Object<string,any>}\n */\n const attributes = {};\n let addAttributes = false;\n currentAttributes.forEach((value, key) => {\n addAttributes = true;\n attributes[key] = value;\n });\n /**\n * @type {Object<string,any>}\n */\n const op = { insert: str };\n if (addAttributes) {\n op.attributes = attributes;\n }\n ops.push(op);\n str = '';\n }\n }\n const computeDelta = () => {\n while (n !== null) {\n if (isVisible(n, snapshot) || (prevSnapshot !== undefined && isVisible(n, prevSnapshot))) {\n switch (n.content.constructor) {\n case ContentString: {\n const cur = currentAttributes.get('ychange');\n if (snapshot !== undefined && !isVisible(n, snapshot)) {\n if (cur === undefined || cur.user !== n.id.client || cur.type !== 'removed') {\n packStr();\n currentAttributes.set('ychange', computeYChange ? computeYChange('removed', n.id) : { type: 'removed' });\n }\n } else if (prevSnapshot !== undefined && !isVisible(n, prevSnapshot)) {\n if (cur === undefined || cur.user !== n.id.client || cur.type !== 'added') {\n packStr();\n currentAttributes.set('ychange', computeYChange ? computeYChange('added', n.id) : { type: 'added' });\n }\n } else if (cur !== undefined) {\n packStr();\n currentAttributes.delete('ychange');\n }\n str += /** @type {ContentString} */ (n.content).str;\n break\n }\n case ContentType:\n case ContentEmbed: {\n packStr();\n /**\n * @type {Object<string,any>}\n */\n const op = {\n insert: n.content.getContent()[0]\n };\n if (currentAttributes.size > 0) {\n const attrs = /** @type {Object<string,any>} */ ({});\n op.attributes = attrs;\n currentAttributes.forEach((value, key) => {\n attrs[key] = value;\n });\n }\n ops.push(op);\n break\n }\n case ContentFormat:\n if (isVisible(n, snapshot)) {\n packStr();\n updateCurrentAttributes(currentAttributes, /** @type {ContentFormat} */ (n.content));\n }\n break\n }\n }\n n = n.right;\n }\n packStr();\n };\n if (snapshot || prevSnapshot) {\n // snapshots are merged again after the transaction, so we need to keep the\n // transaction alive until we are done\n transact(doc, transaction => {\n if (snapshot) {\n splitSnapshotAffectedStructs(transaction, snapshot);\n }\n if (prevSnapshot) {\n splitSnapshotAffectedStructs(transaction, prevSnapshot);\n }\n computeDelta();\n }, 'cleanup');\n } else {\n computeDelta();\n }\n return ops\n }\n\n /**\n * Insert text at a given index.\n *\n * @param {number} index The index at which to start inserting.\n * @param {String} text The text to insert at the specified position.\n * @param {TextAttributes} [attributes] Optionally define some formatting\n * information to apply on the inserted\n * Text.\n * @public\n */\n insert (index, text, attributes) {\n if (text.length <= 0) {\n return\n }\n const y = this.doc;\n if (y !== null) {\n transact(y, transaction => {\n const pos = findPosition(transaction, this, index, !attributes);\n if (!attributes) {\n attributes = {};\n // @ts-ignore\n pos.currentAttributes.forEach((v, k) => { attributes[k] = v; });\n }\n insertText(transaction, this, pos, text, attributes);\n });\n } else {\n /** @type {Array<function>} */ (this._pending).push(() => this.insert(index, text, attributes));\n }\n }\n\n /**\n * Inserts an embed at a index.\n *\n * @param {number} index The index to insert the embed at.\n * @param {Object | AbstractType<any>} embed The Object that represents the embed.\n * @param {TextAttributes} [attributes] Attribute information to apply on the\n * embed\n *\n * @public\n */\n insertEmbed (index, embed, attributes) {\n const y = this.doc;\n if (y !== null) {\n transact(y, transaction => {\n const pos = findPosition(transaction, this, index, !attributes);\n insertText(transaction, this, pos, embed, attributes || {});\n });\n } else {\n /** @type {Array<function>} */ (this._pending).push(() => this.insertEmbed(index, embed, attributes || {}));\n }\n }\n\n /**\n * Deletes text starting from an index.\n *\n * @param {number} index Index at which to start deleting.\n * @param {number} length The number of characters to remove. Defaults to 1.\n *\n * @public\n */\n delete (index, length) {\n if (length === 0) {\n return\n }\n const y = this.doc;\n if (y !== null) {\n transact(y, transaction => {\n deleteText(transaction, findPosition(transaction, this, index, true), length);\n });\n } else {\n /** @type {Array<function>} */ (this._pending).push(() => this.delete(index, length));\n }\n }\n\n /**\n * Assigns properties to a range of text.\n *\n * @param {number} index The position where to start formatting.\n * @param {number} length The amount of characters to assign properties to.\n * @param {TextAttributes} attributes Attribute information to apply on the\n * text.\n *\n * @public\n */\n format (index, length, attributes) {\n if (length === 0) {\n return\n }\n const y = this.doc;\n if (y !== null) {\n transact(y, transaction => {\n const pos = findPosition(transaction, this, index, false);\n if (pos.right === null) {\n return\n }\n formatText(transaction, this, pos, length, attributes);\n });\n } else {\n /** @type {Array<function>} */ (this._pending).push(() => this.format(index, length, attributes));\n }\n }\n\n /**\n * Removes an attribute.\n *\n * @note Xml-Text nodes don't have attributes. You can use this feature to assign properties to complete text-blocks.\n *\n * @param {String} attributeName The attribute name that is to be removed.\n *\n * @public\n */\n removeAttribute (attributeName) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapDelete(transaction, this, attributeName);\n });\n } else {\n /** @type {Array<function>} */ (this._pending).push(() => this.removeAttribute(attributeName));\n }\n }\n\n /**\n * Sets or updates an attribute.\n *\n * @note Xml-Text nodes don't have attributes. You can use this feature to assign properties to complete text-blocks.\n *\n * @param {String} attributeName The attribute name that is to be set.\n * @param {any} attributeValue The attribute value that is to be set.\n *\n * @public\n */\n setAttribute (attributeName, attributeValue) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapSet(transaction, this, attributeName, attributeValue);\n });\n } else {\n /** @type {Array<function>} */ (this._pending).push(() => this.setAttribute(attributeName, attributeValue));\n }\n }\n\n /**\n * Returns an attribute value that belongs to the attribute name.\n *\n * @note Xml-Text nodes don't have attributes. You can use this feature to assign properties to complete text-blocks.\n *\n * @param {String} attributeName The attribute name that identifies the\n * queried value.\n * @return {any} The queried attribute value.\n *\n * @public\n */\n getAttribute (attributeName) {\n return /** @type {any} */ (typeMapGet(this, attributeName))\n }\n\n /**\n * Returns all attribute name/value pairs in a JSON Object.\n *\n * @note Xml-Text nodes don't have attributes. You can use this feature to assign properties to complete text-blocks.\n *\n * @return {Object<string, any>} A JSON Object that describes the attributes.\n *\n * @public\n */\n getAttributes () {\n return typeMapGetAll(this)\n }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n */\n _write (encoder) {\n encoder.writeTypeRef(YTextRefID);\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} _decoder\n * @return {YText}\n *\n * @private\n * @function\n */\nconst readYText = _decoder => new YText();\n\n/**\n * @module YXml\n */\n\n\n/**\n * Define the elements to which a set of CSS queries apply.\n * {@link https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors|CSS_Selectors}\n *\n * @example\n * query = '.classSelector'\n * query = 'nodeSelector'\n * query = '#idSelector'\n *\n * @typedef {string} CSS_Selector\n */\n\n/**\n * Dom filter function.\n *\n * @callback domFilter\n * @param {string} nodeName The nodeName of the element\n * @param {Map} attributes The map of attributes.\n * @return {boolean} Whether to include the Dom node in the YXmlElement.\n */\n\n/**\n * Represents a subset of the nodes of a YXmlElement / YXmlFragment and a\n * position within them.\n *\n * Can be created with {@link YXmlFragment#createTreeWalker}\n *\n * @public\n * @implements {Iterable<YXmlElement|YXmlText|YXmlElement|YXmlHook>}\n */\nclass YXmlTreeWalker {\n /**\n * @param {YXmlFragment | YXmlElement} root\n * @param {function(AbstractType<any>):boolean} [f]\n */\n constructor (root, f = () => true) {\n this._filter = f;\n this._root = root;\n /**\n * @type {Item}\n */\n this._currentNode = /** @type {Item} */ (root._start);\n this._firstCall = true;\n }\n\n [Symbol.iterator] () {\n return this\n }\n\n /**\n * Get the next node.\n *\n * @return {IteratorResult<YXmlElement|YXmlText|YXmlHook>} The next node.\n *\n * @public\n */\n next () {\n /**\n * @type {Item|null}\n */\n let n = this._currentNode;\n let type = n && n.content && /** @type {any} */ (n.content).type;\n if (n !== null && (!this._firstCall || n.deleted || !this._filter(type))) { // if first call, we check if we can use the first item\n do {\n type = /** @type {any} */ (n.content).type;\n if (!n.deleted && (type.constructor === YXmlElement || type.constructor === YXmlFragment) && type._start !== null) {\n // walk down in the tree\n n = type._start;\n } else {\n // walk right or up in the tree\n while (n !== null) {\n if (n.right !== null) {\n n = n.right;\n break\n } else if (n.parent === this._root) {\n n = null;\n } else {\n n = /** @type {AbstractType<any>} */ (n.parent)._item;\n }\n }\n }\n } while (n !== null && (n.deleted || !this._filter(/** @type {ContentType} */ (n.content).type)))\n }\n this._firstCall = false;\n if (n === null) {\n // @ts-ignore\n return { value: undefined, done: true }\n }\n this._currentNode = n;\n return { value: /** @type {any} */ (n.content).type, done: false }\n }\n}\n\n/**\n * Represents a list of {@link YXmlElement}.and {@link YXmlText} types.\n * A YxmlFragment is similar to a {@link YXmlElement}, but it does not have a\n * nodeName and it does not have attributes. Though it can be bound to a DOM\n * element - in this case the attributes and the nodeName are not shared.\n *\n * @public\n * @extends AbstractType<YXmlEvent>\n */\nclass YXmlFragment extends AbstractType {\n constructor () {\n super();\n /**\n * @type {Array<any>|null}\n */\n this._prelimContent = [];\n }\n\n /**\n * @type {YXmlElement|YXmlText|null}\n */\n get firstChild () {\n const first = this._first;\n return first ? first.content.getContent()[0] : null\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item);\n this.insert(0, /** @type {Array<any>} */ (this._prelimContent));\n this._prelimContent = null;\n }\n\n _copy () {\n return new YXmlFragment()\n }\n\n /**\n * Makes a copy of this data type that can be included somewhere else.\n *\n * Note that the content is only readable _after_ it has been included somewhere in the Ydoc.\n *\n * @return {YXmlFragment}\n */\n clone () {\n const el = new YXmlFragment();\n // @ts-ignore\n el.insert(0, this.toArray().map(item => item instanceof AbstractType ? item.clone() : item));\n return el\n }\n\n get length () {\n return this._prelimContent === null ? this._length : this._prelimContent.length\n }\n\n /**\n * Create a subtree of childNodes.\n *\n * @example\n * const walker = elem.createTreeWalker(dom => dom.nodeName === 'div')\n * for (let node in walker) {\n * // `node` is a div node\n * nop(node)\n * }\n *\n * @param {function(AbstractType<any>):boolean} filter Function that is called on each child element and\n * returns a Boolean indicating whether the child\n * is to be included in the subtree.\n * @return {YXmlTreeWalker} A subtree and a position within it.\n *\n * @public\n */\n createTreeWalker (filter) {\n return new YXmlTreeWalker(this, filter)\n }\n\n /**\n * Returns the first YXmlElement that matches the query.\n * Similar to DOM's {@link querySelector}.\n *\n * Query support:\n * - tagname\n * TODO:\n * - id\n * - attribute\n *\n * @param {CSS_Selector} query The query on the children.\n * @return {YXmlElement|YXmlText|YXmlHook|null} The first element that matches the query or null.\n *\n * @public\n */\n querySelector (query) {\n query = query.toUpperCase();\n // @ts-ignore\n const iterator = new YXmlTreeWalker(this, element => element.nodeName && element.nodeName.toUpperCase() === query);\n const next = iterator.next();\n if (next.done) {\n return null\n } else {\n return next.value\n }\n }\n\n /**\n * Returns all YXmlElements that match the query.\n * Similar to Dom's {@link querySelectorAll}.\n *\n * @todo Does not yet support all queries. Currently only query by tagName.\n *\n * @param {CSS_Selector} query The query on the children\n * @return {Array<YXmlElement|YXmlText|YXmlHook|null>} The elements that match this query.\n *\n * @public\n */\n querySelectorAll (query) {\n query = query.toUpperCase();\n // @ts-ignore\n return array.from(new YXmlTreeWalker(this, element => element.nodeName && element.nodeName.toUpperCase() === query))\n }\n\n /**\n * Creates YXmlEvent and calls observers.\n *\n * @param {Transaction} transaction\n * @param {Set<null|string>} parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, parentSubs) {\n callTypeObservers(this, transaction, new YXmlEvent(this, parentSubs, transaction));\n }\n\n /**\n * Get the string representation of all the children of this YXmlFragment.\n *\n * @return {string} The string representation of all children.\n */\n toString () {\n return typeListMap(this, xml => xml.toString()).join('')\n }\n\n /**\n * @return {string}\n */\n toJSON () {\n return this.toString()\n }\n\n /**\n * Creates a Dom Element that mirrors this YXmlElement.\n *\n * @param {Document} [_document=document] The document object (you must define\n * this when calling this method in\n * nodejs)\n * @param {Object<string, any>} [hooks={}] Optional property to customize how hooks\n * are presented in the DOM\n * @param {any} [binding] You should not set this property. This is\n * used if DomBinding wants to create a\n * association to the created DOM type.\n * @return {Node} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}\n *\n * @public\n */\n toDOM (_document = document, hooks = {}, binding) {\n const fragment = _document.createDocumentFragment();\n if (binding !== undefined) {\n binding._createAssociation(fragment, this);\n }\n typeListForEach(this, xmlType => {\n fragment.insertBefore(xmlType.toDOM(_document, hooks, binding), null);\n });\n return fragment\n }\n\n /**\n * Inserts new content at an index.\n *\n * @example\n * // Insert character 'a' at position 0\n * xml.insert(0, [new Y.XmlText('text')])\n *\n * @param {number} index The index to insert content at\n * @param {Array<YXmlElement|YXmlText>} content The array of content\n */\n insert (index, content) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeListInsertGenerics(transaction, this, index, content);\n });\n } else {\n // @ts-ignore _prelimContent is defined because this is not yet integrated\n this._prelimContent.splice(index, 0, ...content);\n }\n }\n\n /**\n * Inserts new content at an index.\n *\n * @example\n * // Insert character 'a' at position 0\n * xml.insert(0, [new Y.XmlText('text')])\n *\n * @param {null|Item|YXmlElement|YXmlText} ref The index to insert content at\n * @param {Array<YXmlElement|YXmlText>} content The array of content\n */\n insertAfter (ref, content) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n const refItem = (ref && ref instanceof AbstractType) ? ref._item : ref;\n typeListInsertGenericsAfter(transaction, this, refItem, content);\n });\n } else {\n const pc = /** @type {Array<any>} */ (this._prelimContent);\n const index = ref === null ? 0 : pc.findIndex(el => el === ref) + 1;\n if (index === 0 && ref !== null) {\n throw error.create('Reference item not found')\n }\n pc.splice(index, 0, ...content);\n }\n }\n\n /**\n * Deletes elements starting from an index.\n *\n * @param {number} index Index at which to start deleting elements\n * @param {number} [length=1] The number of elements to remove. Defaults to 1.\n */\n delete (index, length = 1) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeListDelete(transaction, this, index, length);\n });\n } else {\n // @ts-ignore _prelimContent is defined because this is not yet integrated\n this._prelimContent.splice(index, length);\n }\n }\n\n /**\n * Transforms this YArray to a JavaScript Array.\n *\n * @return {Array<YXmlElement|YXmlText|YXmlHook>}\n */\n toArray () {\n return typeListToArray(this)\n }\n\n /**\n * Appends content to this YArray.\n *\n * @param {Array<YXmlElement|YXmlText>} content Array of content to append.\n */\n push (content) {\n this.insert(this.length, content);\n }\n\n /**\n * Prepends content to this YArray.\n *\n * @param {Array<YXmlElement|YXmlText>} content Array of content to prepend.\n */\n unshift (content) {\n this.insert(0, content);\n }\n\n /**\n * Returns the i-th element from a YArray.\n *\n * @param {number} index The index of the element to return from the YArray\n * @return {YXmlElement|YXmlText}\n */\n get (index) {\n return typeListGet(this, index)\n }\n\n /**\n * Returns a portion of this YXmlFragment into a JavaScript Array selected\n * from start to end (end not included).\n *\n * @param {number} [start]\n * @param {number} [end]\n * @return {Array<YXmlElement|YXmlText>}\n */\n slice (start = 0, end = this.length) {\n return typeListSlice(this, start, end)\n }\n\n /**\n * Executes a provided function on once on every child element.\n *\n * @param {function(YXmlElement|YXmlText,number, typeof self):void} f A function to execute on every element of this YArray.\n */\n forEach (f) {\n typeListForEach(this, f);\n }\n\n /**\n * Transform the properties of this type to binary and write it to an\n * BinaryEncoder.\n *\n * This is called when this Item is sent to a remote peer.\n *\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder The encoder to write data to.\n */\n _write (encoder) {\n encoder.writeTypeRef(YXmlFragmentRefID);\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} _decoder\n * @return {YXmlFragment}\n *\n * @private\n * @function\n */\nconst readYXmlFragment = _decoder => new YXmlFragment();\n\n/**\n * @typedef {Object|number|null|Array<any>|string|Uint8Array|AbstractType<any>} ValueTypes\n */\n\n/**\n * An YXmlElement imitates the behavior of a\n * https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element\n *\n * * An YXmlElement has attributes (key value pairs)\n * * An YXmlElement has childElements that must inherit from YXmlElement\n *\n * @template {{ [key: string]: ValueTypes }} [KV={ [key: string]: string }]\n */\nclass YXmlElement extends YXmlFragment {\n constructor (nodeName = 'UNDEFINED') {\n super();\n this.nodeName = nodeName;\n /**\n * @type {Map<string, any>|null}\n */\n this._prelimAttrs = new Map();\n }\n\n /**\n * @type {YXmlElement|YXmlText|null}\n */\n get nextSibling () {\n const n = this._item ? this._item.next : null;\n return n ? /** @type {YXmlElement|YXmlText} */ (/** @type {ContentType} */ (n.content).type) : null\n }\n\n /**\n * @type {YXmlElement|YXmlText|null}\n */\n get prevSibling () {\n const n = this._item ? this._item.prev : null;\n return n ? /** @type {YXmlElement|YXmlText} */ (/** @type {ContentType} */ (n.content).type) : null\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item)\n ;(/** @type {Map<string, any>} */ (this._prelimAttrs)).forEach((value, key) => {\n this.setAttribute(key, value);\n });\n this._prelimAttrs = null;\n }\n\n /**\n * Creates an Item with the same effect as this Item (without position effect)\n *\n * @return {YXmlElement}\n */\n _copy () {\n return new YXmlElement(this.nodeName)\n }\n\n /**\n * Makes a copy of this data type that can be included somewhere else.\n *\n * Note that the content is only readable _after_ it has been included somewhere in the Ydoc.\n *\n * @return {YXmlElement<KV>}\n */\n clone () {\n /**\n * @type {YXmlElement<KV>}\n */\n const el = new YXmlElement(this.nodeName);\n const attrs = this.getAttributes();\n object.forEach(attrs, (value, key) => {\n if (typeof value === 'string') {\n el.setAttribute(key, value);\n }\n });\n // @ts-ignore\n el.insert(0, this.toArray().map(item => item instanceof AbstractType ? item.clone() : item));\n return el\n }\n\n /**\n * Returns the XML serialization of this YXmlElement.\n * The attributes are ordered by attribute-name, so you can easily use this\n * method to compare YXmlElements\n *\n * @return {string} The string representation of this type.\n *\n * @public\n */\n toString () {\n const attrs = this.getAttributes();\n const stringBuilder = [];\n const keys = [];\n for (const key in attrs) {\n keys.push(key);\n }\n keys.sort();\n const keysLen = keys.length;\n for (let i = 0; i < keysLen; i++) {\n const key = keys[i];\n stringBuilder.push(key + '=\"' + attrs[key] + '\"');\n }\n const nodeName = this.nodeName.toLocaleLowerCase();\n const attrsString = stringBuilder.length > 0 ? ' ' + stringBuilder.join(' ') : '';\n return `<${nodeName}${attrsString}>${super.toString()}</${nodeName}>`\n }\n\n /**\n * Removes an attribute from this YXmlElement.\n *\n * @param {string} attributeName The attribute name that is to be removed.\n *\n * @public\n */\n removeAttribute (attributeName) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapDelete(transaction, this, attributeName);\n });\n } else {\n /** @type {Map<string,any>} */ (this._prelimAttrs).delete(attributeName);\n }\n }\n\n /**\n * Sets or updates an attribute.\n *\n * @template {keyof KV & string} KEY\n *\n * @param {KEY} attributeName The attribute name that is to be set.\n * @param {KV[KEY]} attributeValue The attribute value that is to be set.\n *\n * @public\n */\n setAttribute (attributeName, attributeValue) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapSet(transaction, this, attributeName, attributeValue);\n });\n } else {\n /** @type {Map<string, any>} */ (this._prelimAttrs).set(attributeName, attributeValue);\n }\n }\n\n /**\n * Returns an attribute value that belongs to the attribute name.\n *\n * @template {keyof KV & string} KEY\n *\n * @param {KEY} attributeName The attribute name that identifies the\n * queried value.\n * @return {KV[KEY]|undefined} The queried attribute value.\n *\n * @public\n */\n getAttribute (attributeName) {\n return /** @type {any} */ (typeMapGet(this, attributeName))\n }\n\n /**\n * Returns whether an attribute exists\n *\n * @param {string} attributeName The attribute name to check for existence.\n * @return {boolean} whether the attribute exists.\n *\n * @public\n */\n hasAttribute (attributeName) {\n return /** @type {any} */ (typeMapHas(this, attributeName))\n }\n\n /**\n * Returns all attribute name/value pairs in a JSON Object.\n *\n * @param {Snapshot} [snapshot]\n * @return {{ [Key in Extract<keyof KV,string>]?: KV[Key]}} A JSON Object that describes the attributes.\n *\n * @public\n */\n getAttributes (snapshot) {\n return /** @type {any} */ (snapshot ? typeMapGetAllSnapshot(this, snapshot) : typeMapGetAll(this))\n }\n\n /**\n * Creates a Dom Element that mirrors this YXmlElement.\n *\n * @param {Document} [_document=document] The document object (you must define\n * this when calling this method in\n * nodejs)\n * @param {Object<string, any>} [hooks={}] Optional property to customize how hooks\n * are presented in the DOM\n * @param {any} [binding] You should not set this property. This is\n * used if DomBinding wants to create a\n * association to the created DOM type.\n * @return {Node} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}\n *\n * @public\n */\n toDOM (_document = document, hooks = {}, binding) {\n const dom = _document.createElement(this.nodeName);\n const attrs = this.getAttributes();\n for (const key in attrs) {\n const value = attrs[key];\n if (typeof value === 'string') {\n dom.setAttribute(key, value);\n }\n }\n typeListForEach(this, yxml => {\n dom.appendChild(yxml.toDOM(_document, hooks, binding));\n });\n if (binding !== undefined) {\n binding._createAssociation(dom, this);\n }\n return dom\n }\n\n /**\n * Transform the properties of this type to binary and write it to an\n * BinaryEncoder.\n *\n * This is called when this Item is sent to a remote peer.\n *\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder The encoder to write data to.\n */\n _write (encoder) {\n encoder.writeTypeRef(YXmlElementRefID);\n encoder.writeKey(this.nodeName);\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {YXmlElement}\n *\n * @function\n */\nconst readYXmlElement = decoder => new YXmlElement(decoder.readKey());\n\n/**\n * @extends YEvent<YXmlElement|YXmlText|YXmlFragment>\n * An Event that describes changes on a YXml Element or Yxml Fragment\n */\nclass YXmlEvent extends YEvent {\n /**\n * @param {YXmlElement|YXmlText|YXmlFragment} target The target on which the event is created.\n * @param {Set<string|null>} subs The set of changed attributes. `null` is included if the\n * child list changed.\n * @param {Transaction} transaction The transaction instance with wich the\n * change was created.\n */\n constructor (target, subs, transaction) {\n super(target, transaction);\n /**\n * Whether the children changed.\n * @type {Boolean}\n * @private\n */\n this.childListChanged = false;\n /**\n * Set of all changed attributes.\n * @type {Set<string>}\n */\n this.attributesChanged = new Set();\n subs.forEach((sub) => {\n if (sub === null) {\n this.childListChanged = true;\n } else {\n this.attributesChanged.add(sub);\n }\n });\n }\n}\n\n/**\n * You can manage binding to a custom type with YXmlHook.\n *\n * @extends {YMap<any>}\n */\nclass YXmlHook extends YMap {\n /**\n * @param {string} hookName nodeName of the Dom Node.\n */\n constructor (hookName) {\n super();\n /**\n * @type {string}\n */\n this.hookName = hookName;\n }\n\n /**\n * Creates an Item with the same effect as this Item (without position effect)\n */\n _copy () {\n return new YXmlHook(this.hookName)\n }\n\n /**\n * Makes a copy of this data type that can be included somewhere else.\n *\n * Note that the content is only readable _after_ it has been included somewhere in the Ydoc.\n *\n * @return {YXmlHook}\n */\n clone () {\n const el = new YXmlHook(this.hookName);\n this.forEach((value, key) => {\n el.set(key, value);\n });\n return el\n }\n\n /**\n * Creates a Dom Element that mirrors this YXmlElement.\n *\n * @param {Document} [_document=document] The document object (you must define\n * this when calling this method in\n * nodejs)\n * @param {Object.<string, any>} [hooks] Optional property to customize how hooks\n * are presented in the DOM\n * @param {any} [binding] You should not set this property. This is\n * used if DomBinding wants to create a\n * association to the created DOM type\n * @return {Element} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}\n *\n * @public\n */\n toDOM (_document = document, hooks = {}, binding) {\n const hook = hooks[this.hookName];\n let dom;\n if (hook !== undefined) {\n dom = hook.createDom(this);\n } else {\n dom = document.createElement(this.hookName);\n }\n dom.setAttribute('data-yjs-hook', this.hookName);\n if (binding !== undefined) {\n binding._createAssociation(dom, this);\n }\n return dom\n }\n\n /**\n * Transform the properties of this type to binary and write it to an\n * BinaryEncoder.\n *\n * This is called when this Item is sent to a remote peer.\n *\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder The encoder to write data to.\n */\n _write (encoder) {\n encoder.writeTypeRef(YXmlHookRefID);\n encoder.writeKey(this.hookName);\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {YXmlHook}\n *\n * @private\n * @function\n */\nconst readYXmlHook = decoder =>\n new YXmlHook(decoder.readKey());\n\n/**\n * Represents text in a Dom Element. In the future this type will also handle\n * simple formatting information like bold and italic.\n */\nclass YXmlText extends YText {\n /**\n * @type {YXmlElement|YXmlText|null}\n */\n get nextSibling () {\n const n = this._item ? this._item.next : null;\n return n ? /** @type {YXmlElement|YXmlText} */ (/** @type {ContentType} */ (n.content).type) : null\n }\n\n /**\n * @type {YXmlElement|YXmlText|null}\n */\n get prevSibling () {\n const n = this._item ? this._item.prev : null;\n return n ? /** @type {YXmlElement|YXmlText} */ (/** @type {ContentType} */ (n.content).type) : null\n }\n\n _copy () {\n return new YXmlText()\n }\n\n /**\n * Makes a copy of this data type that can be included somewhere else.\n *\n * Note that the content is only readable _after_ it has been included somewhere in the Ydoc.\n *\n * @return {YXmlText}\n */\n clone () {\n const text = new YXmlText();\n text.applyDelta(this.toDelta());\n return text\n }\n\n /**\n * Creates a Dom Element that mirrors this YXmlText.\n *\n * @param {Document} [_document=document] The document object (you must define\n * this when calling this method in\n * nodejs)\n * @param {Object<string, any>} [hooks] Optional property to customize how hooks\n * are presented in the DOM\n * @param {any} [binding] You should not set this property. This is\n * used if DomBinding wants to create a\n * association to the created DOM type.\n * @return {Text} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}\n *\n * @public\n */\n toDOM (_document = document, hooks, binding) {\n const dom = _document.createTextNode(this.toString());\n if (binding !== undefined) {\n binding._createAssociation(dom, this);\n }\n return dom\n }\n\n toString () {\n // @ts-ignore\n return this.toDelta().map(delta => {\n const nestedNodes = [];\n for (const nodeName in delta.attributes) {\n const attrs = [];\n for (const key in delta.attributes[nodeName]) {\n attrs.push({ key, value: delta.attributes[nodeName][key] });\n }\n // sort attributes to get a unique order\n attrs.sort((a, b) => a.key < b.key ? -1 : 1);\n nestedNodes.push({ nodeName, attrs });\n }\n // sort node order to get a unique order\n nestedNodes.sort((a, b) => a.nodeName < b.nodeName ? -1 : 1);\n // now convert to dom string\n let str = '';\n for (let i = 0; i < nestedNodes.length; i++) {\n const node = nestedNodes[i];\n str += `<${node.nodeName}`;\n for (let j = 0; j < node.attrs.length; j++) {\n const attr = node.attrs[j];\n str += ` ${attr.key}=\"${attr.value}\"`;\n }\n str += '>';\n }\n str += delta.insert;\n for (let i = nestedNodes.length - 1; i >= 0; i--) {\n str += `</${nestedNodes[i].nodeName}>`;\n }\n return str\n }).join('')\n }\n\n /**\n * @return {string}\n */\n toJSON () {\n return this.toString()\n }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n */\n _write (encoder) {\n encoder.writeTypeRef(YXmlTextRefID);\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {YXmlText}\n *\n * @private\n * @function\n */\nconst readYXmlText = decoder => new YXmlText();\n\nclass AbstractStruct {\n /**\n * @param {ID} id\n * @param {number} length\n */\n constructor (id, length) {\n this.id = id;\n this.length = length;\n }\n\n /**\n * @type {boolean}\n */\n get deleted () {\n throw error.methodUnimplemented()\n }\n\n /**\n * Merge this struct with the item to the right.\n * This method is already assuming that `this.id.clock + this.length === this.id.clock`.\n * Also this method does *not* remove right from StructStore!\n * @param {AbstractStruct} right\n * @return {boolean} wether this merged with right\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder The encoder to write data to.\n * @param {number} offset\n * @param {number} encodingRef\n */\n write (encoder, offset, encodingRef) {\n throw error.methodUnimplemented()\n }\n\n /**\n * @param {Transaction} transaction\n * @param {number} offset\n */\n integrate (transaction, offset) {\n throw error.methodUnimplemented()\n }\n}\n\nconst structGCRefNumber = 0;\n\n/**\n * @private\n */\nclass GC extends AbstractStruct {\n get deleted () {\n return true\n }\n\n delete () {}\n\n /**\n * @param {GC} right\n * @return {boolean}\n */\n mergeWith (right) {\n if (this.constructor !== right.constructor) {\n return false\n }\n this.length += right.length;\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {number} offset\n */\n integrate (transaction, offset) {\n if (offset > 0) {\n this.id.clock += offset;\n this.length -= offset;\n }\n addStruct(transaction.doc.store, this);\n }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeInfo(structGCRefNumber);\n encoder.writeLen(this.length - offset);\n }\n\n /**\n * @param {Transaction} transaction\n * @param {StructStore} store\n * @return {null | number}\n */\n getMissing (transaction, store) {\n return null\n }\n}\n\nclass ContentBinary {\n /**\n * @param {Uint8Array} content\n */\n constructor (content) {\n this.content = content;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return 1\n }\n\n /**\n * @return {Array<any>}\n */\n getContent () {\n return [this.content]\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentBinary}\n */\n copy () {\n return new ContentBinary(this.content)\n }\n\n /**\n * @param {number} offset\n * @return {ContentBinary}\n */\n splice (offset) {\n throw error.methodUnimplemented()\n }\n\n /**\n * @param {ContentBinary} right\n * @return {boolean}\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeBuf(this.content);\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 3\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2 } decoder\n * @return {ContentBinary}\n */\nconst readContentBinary = decoder => new ContentBinary(decoder.readBuf());\n\nclass ContentDeleted {\n /**\n * @param {number} len\n */\n constructor (len) {\n this.len = len;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return this.len\n }\n\n /**\n * @return {Array<any>}\n */\n getContent () {\n return []\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return false\n }\n\n /**\n * @return {ContentDeleted}\n */\n copy () {\n return new ContentDeleted(this.len)\n }\n\n /**\n * @param {number} offset\n * @return {ContentDeleted}\n */\n splice (offset) {\n const right = new ContentDeleted(this.len - offset);\n this.len = offset;\n return right\n }\n\n /**\n * @param {ContentDeleted} right\n * @return {boolean}\n */\n mergeWith (right) {\n this.len += right.len;\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {\n addToDeleteSet(transaction.deleteSet, item.id.client, item.id.clock, this.len);\n item.markDeleted();\n }\n\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeLen(this.len - offset);\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 1\n }\n}\n\n/**\n * @private\n *\n * @param {UpdateDecoderV1 | UpdateDecoderV2 } decoder\n * @return {ContentDeleted}\n */\nconst readContentDeleted = decoder => new ContentDeleted(decoder.readLen());\n\n/**\n * @param {string} guid\n * @param {Object<string, any>} opts\n */\nconst createDocFromOpts = (guid, opts) => new Doc({ guid, ...opts, shouldLoad: opts.shouldLoad || opts.autoLoad || false });\n\n/**\n * @private\n */\nclass ContentDoc {\n /**\n * @param {Doc} doc\n */\n constructor (doc) {\n if (doc._item) {\n console.error('This document was already integrated as a sub-document. You should create a second instance instead with the same guid.');\n }\n /**\n * @type {Doc}\n */\n this.doc = doc;\n /**\n * @type {any}\n */\n const opts = {};\n this.opts = opts;\n if (!doc.gc) {\n opts.gc = false;\n }\n if (doc.autoLoad) {\n opts.autoLoad = true;\n }\n if (doc.meta !== null) {\n opts.meta = doc.meta;\n }\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return 1\n }\n\n /**\n * @return {Array<any>}\n */\n getContent () {\n return [this.doc]\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentDoc}\n */\n copy () {\n return new ContentDoc(createDocFromOpts(this.doc.guid, this.opts))\n }\n\n /**\n * @param {number} offset\n * @return {ContentDoc}\n */\n splice (offset) {\n throw error.methodUnimplemented()\n }\n\n /**\n * @param {ContentDoc} right\n * @return {boolean}\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {\n // this needs to be reflected in doc.destroy as well\n this.doc._item = item;\n transaction.subdocsAdded.add(this.doc);\n if (this.doc.shouldLoad) {\n transaction.subdocsLoaded.add(this.doc);\n }\n }\n\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {\n if (transaction.subdocsAdded.has(this.doc)) {\n transaction.subdocsAdded.delete(this.doc);\n } else {\n transaction.subdocsRemoved.add(this.doc);\n }\n }\n\n /**\n * @param {StructStore} store\n */\n gc (store) { }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeString(this.doc.guid);\n encoder.writeAny(this.opts);\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 9\n }\n}\n\n/**\n * @private\n *\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {ContentDoc}\n */\nconst readContentDoc = decoder => new ContentDoc(createDocFromOpts(decoder.readString(), decoder.readAny()));\n\n/**\n * @private\n */\nclass ContentEmbed {\n /**\n * @param {Object} embed\n */\n constructor (embed) {\n this.embed = embed;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return 1\n }\n\n /**\n * @return {Array<any>}\n */\n getContent () {\n return [this.embed]\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentEmbed}\n */\n copy () {\n return new ContentEmbed(this.embed)\n }\n\n /**\n * @param {number} offset\n * @return {ContentEmbed}\n */\n splice (offset) {\n throw error.methodUnimplemented()\n }\n\n /**\n * @param {ContentEmbed} right\n * @return {boolean}\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeJSON(this.embed);\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 5\n }\n}\n\n/**\n * @private\n *\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {ContentEmbed}\n */\nconst readContentEmbed = decoder => new ContentEmbed(decoder.readJSON());\n\n/**\n * @private\n */\nclass ContentFormat {\n /**\n * @param {string} key\n * @param {Object} value\n */\n constructor (key, value) {\n this.key = key;\n this.value = value;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return 1\n }\n\n /**\n * @return {Array<any>}\n */\n getContent () {\n return []\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return false\n }\n\n /**\n * @return {ContentFormat}\n */\n copy () {\n return new ContentFormat(this.key, this.value)\n }\n\n /**\n * @param {number} _offset\n * @return {ContentFormat}\n */\n splice (_offset) {\n throw error.methodUnimplemented()\n }\n\n /**\n * @param {ContentFormat} _right\n * @return {boolean}\n */\n mergeWith (_right) {\n return false\n }\n\n /**\n * @param {Transaction} _transaction\n * @param {Item} item\n */\n integrate (_transaction, item) {\n // @todo searchmarker are currently unsupported for rich text documents\n const p = /** @type {YText} */ (item.parent);\n p._searchMarker = null;\n p._hasFormatting = true;\n }\n\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeKey(this.key);\n encoder.writeJSON(this.value);\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 6\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {ContentFormat}\n */\nconst readContentFormat = decoder => new ContentFormat(decoder.readKey(), decoder.readJSON());\n\n/**\n * @private\n */\nclass ContentJSON {\n /**\n * @param {Array<any>} arr\n */\n constructor (arr) {\n /**\n * @type {Array<any>}\n */\n this.arr = arr;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return this.arr.length\n }\n\n /**\n * @return {Array<any>}\n */\n getContent () {\n return this.arr\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentJSON}\n */\n copy () {\n return new ContentJSON(this.arr)\n }\n\n /**\n * @param {number} offset\n * @return {ContentJSON}\n */\n splice (offset) {\n const right = new ContentJSON(this.arr.slice(offset));\n this.arr = this.arr.slice(0, offset);\n return right\n }\n\n /**\n * @param {ContentJSON} right\n * @return {boolean}\n */\n mergeWith (right) {\n this.arr = this.arr.concat(right.arr);\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n const len = this.arr.length;\n encoder.writeLen(len - offset);\n for (let i = offset; i < len; i++) {\n const c = this.arr[i];\n encoder.writeString(c === undefined ? 'undefined' : JSON.stringify(c));\n }\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 2\n }\n}\n\n/**\n * @private\n *\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {ContentJSON}\n */\nconst readContentJSON = decoder => {\n const len = decoder.readLen();\n const cs = [];\n for (let i = 0; i < len; i++) {\n const c = decoder.readString();\n if (c === 'undefined') {\n cs.push(undefined);\n } else {\n cs.push(JSON.parse(c));\n }\n }\n return new ContentJSON(cs)\n};\n\nclass ContentAny {\n /**\n * @param {Array<any>} arr\n */\n constructor (arr) {\n /**\n * @type {Array<any>}\n */\n this.arr = arr;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return this.arr.length\n }\n\n /**\n * @return {Array<any>}\n */\n getContent () {\n return this.arr\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentAny}\n */\n copy () {\n return new ContentAny(this.arr)\n }\n\n /**\n * @param {number} offset\n * @return {ContentAny}\n */\n splice (offset) {\n const right = new ContentAny(this.arr.slice(offset));\n this.arr = this.arr.slice(0, offset);\n return right\n }\n\n /**\n * @param {ContentAny} right\n * @return {boolean}\n */\n mergeWith (right) {\n this.arr = this.arr.concat(right.arr);\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n const len = this.arr.length;\n encoder.writeLen(len - offset);\n for (let i = offset; i < len; i++) {\n const c = this.arr[i];\n encoder.writeAny(c);\n }\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 8\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {ContentAny}\n */\nconst readContentAny = decoder => {\n const len = decoder.readLen();\n const cs = [];\n for (let i = 0; i < len; i++) {\n cs.push(decoder.readAny());\n }\n return new ContentAny(cs)\n};\n\n/**\n * @private\n */\nclass ContentString {\n /**\n * @param {string} str\n */\n constructor (str) {\n /**\n * @type {string}\n */\n this.str = str;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return this.str.length\n }\n\n /**\n * @return {Array<any>}\n */\n getContent () {\n return this.str.split('')\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentString}\n */\n copy () {\n return new ContentString(this.str)\n }\n\n /**\n * @param {number} offset\n * @return {ContentString}\n */\n splice (offset) {\n const right = new ContentString(this.str.slice(offset));\n this.str = this.str.slice(0, offset);\n\n // Prevent encoding invalid documents because of splitting of surrogate pairs: https://github.com/yjs/yjs/issues/248\n const firstCharCode = this.str.charCodeAt(offset - 1);\n if (firstCharCode >= 0xD800 && firstCharCode <= 0xDBFF) {\n // Last character of the left split is the start of a surrogate utf16/ucs2 pair.\n // We don't support splitting of surrogate pairs because this may lead to invalid documents.\n // Replace the invalid character with a unicode replacement character (� / U+FFFD)\n this.str = this.str.slice(0, offset - 1) + '�';\n // replace right as well\n right.str = '�' + right.str.slice(1);\n }\n return right\n }\n\n /**\n * @param {ContentString} right\n * @return {boolean}\n */\n mergeWith (right) {\n this.str += right.str;\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeString(offset === 0 ? this.str : this.str.slice(offset));\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 4\n }\n}\n\n/**\n * @private\n *\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {ContentString}\n */\nconst readContentString = decoder => new ContentString(decoder.readString());\n\n/**\n * @type {Array<function(UpdateDecoderV1 | UpdateDecoderV2):AbstractType<any>>}\n * @private\n */\nconst typeRefs = [\n readYArray,\n readYMap,\n readYText,\n readYXmlElement,\n readYXmlFragment,\n readYXmlHook,\n readYXmlText\n];\n\nconst YArrayRefID = 0;\nconst YMapRefID = 1;\nconst YTextRefID = 2;\nconst YXmlElementRefID = 3;\nconst YXmlFragmentRefID = 4;\nconst YXmlHookRefID = 5;\nconst YXmlTextRefID = 6;\n\n/**\n * @private\n */\nclass ContentType {\n /**\n * @param {AbstractType<any>} type\n */\n constructor (type) {\n /**\n * @type {AbstractType<any>}\n */\n this.type = type;\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return 1\n }\n\n /**\n * @return {Array<any>}\n */\n getContent () {\n return [this.type]\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentType}\n */\n copy () {\n return new ContentType(this.type._copy())\n }\n\n /**\n * @param {number} offset\n * @return {ContentType}\n */\n splice (offset) {\n throw error.methodUnimplemented()\n }\n\n /**\n * @param {ContentType} right\n * @return {boolean}\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {\n this.type._integrate(transaction.doc, item);\n }\n\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {\n let item = this.type._start;\n while (item !== null) {\n if (!item.deleted) {\n item.delete(transaction);\n } else if (item.id.clock < (transaction.beforeState.get(item.id.client) || 0)) {\n // This will be gc'd later and we want to merge it if possible\n // We try to merge all deleted items after each transaction,\n // but we have no knowledge about that this needs to be merged\n // since it is not in transaction.ds. Hence we add it to transaction._mergeStructs\n transaction._mergeStructs.push(item);\n }\n item = item.right;\n }\n this.type._map.forEach(item => {\n if (!item.deleted) {\n item.delete(transaction);\n } else if (item.id.clock < (transaction.beforeState.get(item.id.client) || 0)) {\n // same as above\n transaction._mergeStructs.push(item);\n }\n });\n transaction.changed.delete(this.type);\n }\n\n /**\n * @param {StructStore} store\n */\n gc (store) {\n let item = this.type._start;\n while (item !== null) {\n item.gc(store, true);\n item = item.right;\n }\n this.type._start = null;\n this.type._map.forEach(/** @param {Item | null} item */ (item) => {\n while (item !== null) {\n item.gc(store, true);\n item = item.left;\n }\n });\n this.type._map = new Map();\n }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n this.type._write(encoder);\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 7\n }\n}\n\n/**\n * @private\n *\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {ContentType}\n */\nconst readContentType = decoder => new ContentType(typeRefs[decoder.readTypeRef()](decoder));\n\n/**\n * @todo This should return several items\n *\n * @param {StructStore} store\n * @param {ID} id\n * @return {{item:Item, diff:number}}\n */\nconst followRedone = (store, id) => {\n /**\n * @type {ID|null}\n */\n let nextID = id;\n let diff = 0;\n let item;\n do {\n if (diff > 0) {\n nextID = createID(nextID.client, nextID.clock + diff);\n }\n item = getItem(store, nextID);\n diff = nextID.clock - item.id.clock;\n nextID = item.redone;\n } while (nextID !== null && item instanceof Item)\n return {\n item, diff\n }\n};\n\n/**\n * Make sure that neither item nor any of its parents is ever deleted.\n *\n * This property does not persist when storing it into a database or when\n * sending it to other peers\n *\n * @param {Item|null} item\n * @param {boolean} keep\n */\nconst keepItem = (item, keep) => {\n while (item !== null && item.keep !== keep) {\n item.keep = keep;\n item = /** @type {AbstractType<any>} */ (item.parent)._item;\n }\n};\n\n/**\n * Split leftItem into two items\n * @param {Transaction} transaction\n * @param {Item} leftItem\n * @param {number} diff\n * @return {Item}\n *\n * @function\n * @private\n */\nconst splitItem = (transaction, leftItem, diff) => {\n // create rightItem\n const { client, clock } = leftItem.id;\n const rightItem = new Item(\n createID(client, clock + diff),\n leftItem,\n createID(client, clock + diff - 1),\n leftItem.right,\n leftItem.rightOrigin,\n leftItem.parent,\n leftItem.parentSub,\n leftItem.content.splice(diff)\n );\n if (leftItem.deleted) {\n rightItem.markDeleted();\n }\n if (leftItem.keep) {\n rightItem.keep = true;\n }\n if (leftItem.redone !== null) {\n rightItem.redone = createID(leftItem.redone.client, leftItem.redone.clock + diff);\n }\n // update left (do not set leftItem.rightOrigin as it will lead to problems when syncing)\n leftItem.right = rightItem;\n // update right\n if (rightItem.right !== null) {\n rightItem.right.left = rightItem;\n }\n // right is more specific.\n transaction._mergeStructs.push(rightItem);\n // update parent._map\n if (rightItem.parentSub !== null && rightItem.right === null) {\n /** @type {AbstractType<any>} */ (rightItem.parent)._map.set(rightItem.parentSub, rightItem);\n }\n leftItem.length = diff;\n return rightItem\n};\n\n/**\n * @param {Array<StackItem>} stack\n * @param {ID} id\n */\nconst isDeletedByUndoStack = (stack, id) => array.some(stack, /** @param {StackItem} s */ s => isDeleted(s.deletions, id));\n\n/**\n * Redoes the effect of this operation.\n *\n * @param {Transaction} transaction The Yjs instance.\n * @param {Item} item\n * @param {Set<Item>} redoitems\n * @param {DeleteSet} itemsToDelete\n * @param {boolean} ignoreRemoteMapChanges\n * @param {import('../utils/UndoManager.js').UndoManager} um\n *\n * @return {Item|null}\n *\n * @private\n */\nconst redoItem = (transaction, item, redoitems, itemsToDelete, ignoreRemoteMapChanges, um) => {\n const doc = transaction.doc;\n const store = doc.store;\n const ownClientID = doc.clientID;\n const redone = item.redone;\n if (redone !== null) {\n return getItemCleanStart(transaction, redone)\n }\n let parentItem = /** @type {AbstractType<any>} */ (item.parent)._item;\n /**\n * @type {Item|null}\n */\n let left = null;\n /**\n * @type {Item|null}\n */\n let right;\n // make sure that parent is redone\n if (parentItem !== null && parentItem.deleted === true) {\n // try to undo parent if it will be undone anyway\n if (parentItem.redone === null && (!redoitems.has(parentItem) || redoItem(transaction, parentItem, redoitems, itemsToDelete, ignoreRemoteMapChanges, um) === null)) {\n return null\n }\n while (parentItem.redone !== null) {\n parentItem = getItemCleanStart(transaction, parentItem.redone);\n }\n }\n const parentType = parentItem === null ? /** @type {AbstractType<any>} */ (item.parent) : /** @type {ContentType} */ (parentItem.content).type;\n\n if (item.parentSub === null) {\n // Is an array item. Insert at the old position\n left = item.left;\n right = item;\n // find next cloned_redo items\n while (left !== null) {\n /**\n * @type {Item|null}\n */\n let leftTrace = left;\n // trace redone until parent matches\n while (leftTrace !== null && /** @type {AbstractType<any>} */ (leftTrace.parent)._item !== parentItem) {\n leftTrace = leftTrace.redone === null ? null : getItemCleanStart(transaction, leftTrace.redone);\n }\n if (leftTrace !== null && /** @type {AbstractType<any>} */ (leftTrace.parent)._item === parentItem) {\n left = leftTrace;\n break\n }\n left = left.left;\n }\n while (right !== null) {\n /**\n * @type {Item|null}\n */\n let rightTrace = right;\n // trace redone until parent matches\n while (rightTrace !== null && /** @type {AbstractType<any>} */ (rightTrace.parent)._item !== parentItem) {\n rightTrace = rightTrace.redone === null ? null : getItemCleanStart(transaction, rightTrace.redone);\n }\n if (rightTrace !== null && /** @type {AbstractType<any>} */ (rightTrace.parent)._item === parentItem) {\n right = rightTrace;\n break\n }\n right = right.right;\n }\n } else {\n right = null;\n if (item.right && !ignoreRemoteMapChanges) {\n left = item;\n // Iterate right while right is in itemsToDelete\n // If it is intended to delete right while item is redone, we can expect that item should replace right.\n while (left !== null && left.right !== null && (left.right.redone || isDeleted(itemsToDelete, left.right.id) || isDeletedByUndoStack(um.undoStack, left.right.id) || isDeletedByUndoStack(um.redoStack, left.right.id))) {\n left = left.right;\n // follow redone\n while (left.redone) left = getItemCleanStart(transaction, left.redone);\n }\n if (left && left.right !== null) {\n // It is not possible to redo this item because it conflicts with a\n // change from another client\n return null\n }\n } else {\n left = parentType._map.get(item.parentSub) || null;\n }\n }\n const nextClock = getState(store, ownClientID);\n const nextId = createID(ownClientID, nextClock);\n const redoneItem = new Item(\n nextId,\n left, left && left.lastId,\n right, right && right.id,\n parentType,\n item.parentSub,\n item.content.copy()\n );\n item.redone = nextId;\n keepItem(redoneItem, true);\n redoneItem.integrate(transaction, 0);\n return redoneItem\n};\n\n/**\n * Abstract class that represents any content.\n */\nclass Item extends AbstractStruct {\n /**\n * @param {ID} id\n * @param {Item | null} left\n * @param {ID | null} origin\n * @param {Item | null} right\n * @param {ID | null} rightOrigin\n * @param {AbstractType<any>|ID|null} parent Is a type if integrated, is null if it is possible to copy parent from left or right, is ID before integration to search for it.\n * @param {string | null} parentSub\n * @param {AbstractContent} content\n */\n constructor (id, left, origin, right, rightOrigin, parent, parentSub, content) {\n super(id, content.getLength());\n /**\n * The item that was originally to the left of this item.\n * @type {ID | null}\n */\n this.origin = origin;\n /**\n * The item that is currently to the left of this item.\n * @type {Item | null}\n */\n this.left = left;\n /**\n * The item that is currently to the right of this item.\n * @type {Item | null}\n */\n this.right = right;\n /**\n * The item that was originally to the right of this item.\n * @type {ID | null}\n */\n this.rightOrigin = rightOrigin;\n /**\n * @type {AbstractType<any>|ID|null}\n */\n this.parent = parent;\n /**\n * If the parent refers to this item with some kind of key (e.g. YMap, the\n * key is specified here. The key is then used to refer to the list in which\n * to insert this item. If `parentSub = null` type._start is the list in\n * which to insert to. Otherwise it is `parent._map`.\n * @type {String | null}\n */\n this.parentSub = parentSub;\n /**\n * If this type's effect is redone this type refers to the type that undid\n * this operation.\n * @type {ID | null}\n */\n this.redone = null;\n /**\n * @type {AbstractContent}\n */\n this.content = content;\n /**\n * bit1: keep\n * bit2: countable\n * bit3: deleted\n * bit4: mark - mark node as fast-search-marker\n * @type {number} byte\n */\n this.info = this.content.isCountable() ? binary.BIT2 : 0;\n }\n\n /**\n * This is used to mark the item as an indexed fast-search marker\n *\n * @type {boolean}\n */\n set marker (isMarked) {\n if (((this.info & binary.BIT4) > 0) !== isMarked) {\n this.info ^= binary.BIT4;\n }\n }\n\n get marker () {\n return (this.info & binary.BIT4) > 0\n }\n\n /**\n * If true, do not garbage collect this Item.\n */\n get keep () {\n return (this.info & binary.BIT1) > 0\n }\n\n set keep (doKeep) {\n if (this.keep !== doKeep) {\n this.info ^= binary.BIT1;\n }\n }\n\n get countable () {\n return (this.info & binary.BIT2) > 0\n }\n\n /**\n * Whether this item was deleted or not.\n * @type {Boolean}\n */\n get deleted () {\n return (this.info & binary.BIT3) > 0\n }\n\n set deleted (doDelete) {\n if (this.deleted !== doDelete) {\n this.info ^= binary.BIT3;\n }\n }\n\n markDeleted () {\n this.info |= binary.BIT3;\n }\n\n /**\n * Return the creator clientID of the missing op or define missing items and return null.\n *\n * @param {Transaction} transaction\n * @param {StructStore} store\n * @return {null | number}\n */\n getMissing (transaction, store) {\n if (this.origin && this.origin.client !== this.id.client && this.origin.clock >= getState(store, this.origin.client)) {\n return this.origin.client\n }\n if (this.rightOrigin && this.rightOrigin.client !== this.id.client && this.rightOrigin.clock >= getState(store, this.rightOrigin.client)) {\n return this.rightOrigin.client\n }\n if (this.parent && this.parent.constructor === ID && this.id.client !== this.parent.client && this.parent.clock >= getState(store, this.parent.client)) {\n return this.parent.client\n }\n\n // We have all missing ids, now find the items\n\n if (this.origin) {\n this.left = getItemCleanEnd(transaction, store, this.origin);\n this.origin = this.left.lastId;\n }\n if (this.rightOrigin) {\n this.right = getItemCleanStart(transaction, this.rightOrigin);\n this.rightOrigin = this.right.id;\n }\n if ((this.left && this.left.constructor === GC) || (this.right && this.right.constructor === GC)) {\n this.parent = null;\n } else if (!this.parent) {\n // only set parent if this shouldn't be garbage collected\n if (this.left && this.left.constructor === Item) {\n this.parent = this.left.parent;\n this.parentSub = this.left.parentSub;\n }\n if (this.right && this.right.constructor === Item) {\n this.parent = this.right.parent;\n this.parentSub = this.right.parentSub;\n }\n } else if (this.parent.constructor === ID) {\n const parentItem = getItem(store, this.parent);\n if (parentItem.constructor === GC) {\n this.parent = null;\n } else {\n this.parent = /** @type {ContentType} */ (parentItem.content).type;\n }\n }\n return null\n }\n\n /**\n * @param {Transaction} transaction\n * @param {number} offset\n */\n integrate (transaction, offset) {\n if (offset > 0) {\n this.id.clock += offset;\n this.left = getItemCleanEnd(transaction, transaction.doc.store, createID(this.id.client, this.id.clock - 1));\n this.origin = this.left.lastId;\n this.content = this.content.splice(offset);\n this.length -= offset;\n }\n\n if (this.parent) {\n if ((!this.left && (!this.right || this.right.left !== null)) || (this.left && this.left.right !== this.right)) {\n /**\n * @type {Item|null}\n */\n let left = this.left;\n\n /**\n * @type {Item|null}\n */\n let o;\n // set o to the first conflicting item\n if (left !== null) {\n o = left.right;\n } else if (this.parentSub !== null) {\n o = /** @type {AbstractType<any>} */ (this.parent)._map.get(this.parentSub) || null;\n while (o !== null && o.left !== null) {\n o = o.left;\n }\n } else {\n o = /** @type {AbstractType<any>} */ (this.parent)._start;\n }\n // TODO: use something like DeleteSet here (a tree implementation would be best)\n // @todo use global set definitions\n /**\n * @type {Set<Item>}\n */\n const conflictingItems = new Set();\n /**\n * @type {Set<Item>}\n */\n const itemsBeforeOrigin = new Set();\n // Let c in conflictingItems, b in itemsBeforeOrigin\n // ***{origin}bbbb{this}{c,b}{c,b}{o}***\n // Note that conflictingItems is a subset of itemsBeforeOrigin\n while (o !== null && o !== this.right) {\n itemsBeforeOrigin.add(o);\n conflictingItems.add(o);\n if (compareIDs(this.origin, o.origin)) {\n // case 1\n if (o.id.client < this.id.client) {\n left = o;\n conflictingItems.clear();\n } else if (compareIDs(this.rightOrigin, o.rightOrigin)) {\n // this and o are conflicting and point to the same integration points. The id decides which item comes first.\n // Since this is to the left of o, we can break here\n break\n } // else, o might be integrated before an item that this conflicts with. If so, we will find it in the next iterations\n } else if (o.origin !== null && itemsBeforeOrigin.has(getItem(transaction.doc.store, o.origin))) { // use getItem instead of getItemCleanEnd because we don't want / need to split items.\n // case 2\n if (!conflictingItems.has(getItem(transaction.doc.store, o.origin))) {\n left = o;\n conflictingItems.clear();\n }\n } else {\n break\n }\n o = o.right;\n }\n this.left = left;\n }\n // reconnect left/right + update parent map/start if necessary\n if (this.left !== null) {\n const right = this.left.right;\n this.right = right;\n this.left.right = this;\n } else {\n let r;\n if (this.parentSub !== null) {\n r = /** @type {AbstractType<any>} */ (this.parent)._map.get(this.parentSub) || null;\n while (r !== null && r.left !== null) {\n r = r.left;\n }\n } else {\n r = /** @type {AbstractType<any>} */ (this.parent)._start\n ;/** @type {AbstractType<any>} */ (this.parent)._start = this;\n }\n this.right = r;\n }\n if (this.right !== null) {\n this.right.left = this;\n } else if (this.parentSub !== null) {\n // set as current parent value if right === null and this is parentSub\n /** @type {AbstractType<any>} */ (this.parent)._map.set(this.parentSub, this);\n if (this.left !== null) {\n // this is the current attribute value of parent. delete right\n this.left.delete(transaction);\n }\n }\n // adjust length of parent\n if (this.parentSub === null && this.countable && !this.deleted) {\n /** @type {AbstractType<any>} */ (this.parent)._length += this.length;\n }\n addStruct(transaction.doc.store, this);\n this.content.integrate(transaction, this);\n // add parent to transaction.changed\n addChangedTypeToTransaction(transaction, /** @type {AbstractType<any>} */ (this.parent), this.parentSub);\n if ((/** @type {AbstractType<any>} */ (this.parent)._item !== null && /** @type {AbstractType<any>} */ (this.parent)._item.deleted) || (this.parentSub !== null && this.right !== null)) {\n // delete if parent is deleted or if this is not the current attribute value of parent\n this.delete(transaction);\n }\n } else {\n // parent is not defined. Integrate GC struct instead\n new GC(this.id, this.length).integrate(transaction, 0);\n }\n }\n\n /**\n * Returns the next non-deleted item\n */\n get next () {\n let n = this.right;\n while (n !== null && n.deleted) {\n n = n.right;\n }\n return n\n }\n\n /**\n * Returns the previous non-deleted item\n */\n get prev () {\n let n = this.left;\n while (n !== null && n.deleted) {\n n = n.left;\n }\n return n\n }\n\n /**\n * Computes the last content address of this Item.\n */\n get lastId () {\n // allocating ids is pretty costly because of the amount of ids created, so we try to reuse whenever possible\n return this.length === 1 ? this.id : createID(this.id.client, this.id.clock + this.length - 1)\n }\n\n /**\n * Try to merge two items\n *\n * @param {Item} right\n * @return {boolean}\n */\n mergeWith (right) {\n if (\n this.constructor === right.constructor &&\n compareIDs(right.origin, this.lastId) &&\n this.right === right &&\n compareIDs(this.rightOrigin, right.rightOrigin) &&\n this.id.client === right.id.client &&\n this.id.clock + this.length === right.id.clock &&\n this.deleted === right.deleted &&\n this.redone === null &&\n right.redone === null &&\n this.content.constructor === right.content.constructor &&\n this.content.mergeWith(right.content)\n ) {\n const searchMarker = /** @type {AbstractType<any>} */ (this.parent)._searchMarker;\n if (searchMarker) {\n searchMarker.forEach(marker => {\n if (marker.p === right) {\n // right is going to be \"forgotten\" so we need to update the marker\n marker.p = this;\n // adjust marker index\n if (!this.deleted && this.countable) {\n marker.index -= this.length;\n }\n }\n });\n }\n if (right.keep) {\n this.keep = true;\n }\n this.right = right.right;\n if (this.right !== null) {\n this.right.left = this;\n }\n this.length += right.length;\n return true\n }\n return false\n }\n\n /**\n * Mark this Item as deleted.\n *\n * @param {Transaction} transaction\n */\n delete (transaction) {\n if (!this.deleted) {\n const parent = /** @type {AbstractType<any>} */ (this.parent);\n // adjust the length of parent\n if (this.countable && this.parentSub === null) {\n parent._length -= this.length;\n }\n this.markDeleted();\n addToDeleteSet(transaction.deleteSet, this.id.client, this.id.clock, this.length);\n addChangedTypeToTransaction(transaction, parent, this.parentSub);\n this.content.delete(transaction);\n }\n }\n\n /**\n * @param {StructStore} store\n * @param {boolean} parentGCd\n */\n gc (store, parentGCd) {\n if (!this.deleted) {\n throw error.unexpectedCase()\n }\n this.content.gc(store);\n if (parentGCd) {\n replaceStruct(store, this, new GC(this.id, this.length));\n } else {\n this.content = new ContentDeleted(this.length);\n }\n }\n\n /**\n * Transform the properties of this type to binary and write it to an\n * BinaryEncoder.\n *\n * This is called when this Item is sent to a remote peer.\n *\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder The encoder to write data to.\n * @param {number} offset\n */\n write (encoder, offset) {\n const origin = offset > 0 ? createID(this.id.client, this.id.clock + offset - 1) : this.origin;\n const rightOrigin = this.rightOrigin;\n const parentSub = this.parentSub;\n const info = (this.content.getRef() & binary.BITS5) |\n (origin === null ? 0 : binary.BIT8) | // origin is defined\n (rightOrigin === null ? 0 : binary.BIT7) | // right origin is defined\n (parentSub === null ? 0 : binary.BIT6); // parentSub is non-null\n encoder.writeInfo(info);\n if (origin !== null) {\n encoder.writeLeftID(origin);\n }\n if (rightOrigin !== null) {\n encoder.writeRightID(rightOrigin);\n }\n if (origin === null && rightOrigin === null) {\n const parent = /** @type {AbstractType<any>} */ (this.parent);\n if (parent._item !== undefined) {\n const parentItem = parent._item;\n if (parentItem === null) {\n // parent type on y._map\n // find the correct key\n const ykey = findRootTypeKey(parent);\n encoder.writeParentInfo(true); // write parentYKey\n encoder.writeString(ykey);\n } else {\n encoder.writeParentInfo(false); // write parent id\n encoder.writeLeftID(parentItem.id);\n }\n } else if (parent.constructor === String) { // this edge case was added by differential updates\n encoder.writeParentInfo(true); // write parentYKey\n encoder.writeString(parent);\n } else if (parent.constructor === ID) {\n encoder.writeParentInfo(false); // write parent id\n encoder.writeLeftID(parent);\n } else {\n error.unexpectedCase();\n }\n if (parentSub !== null) {\n encoder.writeString(parentSub);\n }\n }\n this.content.write(encoder, offset);\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @param {number} info\n */\nconst readItemContent = (decoder, info) => contentRefs[info & binary.BITS5](decoder);\n\n/**\n * A lookup map for reading Item content.\n *\n * @type {Array<function(UpdateDecoderV1 | UpdateDecoderV2):AbstractContent>}\n */\nconst contentRefs = [\n () => { error.unexpectedCase(); }, // GC is not ItemContent\n readContentDeleted, // 1\n readContentJSON, // 2\n readContentBinary, // 3\n readContentString, // 4\n readContentEmbed, // 5\n readContentFormat, // 6\n readContentType, // 7\n readContentAny, // 8\n readContentDoc, // 9\n () => { error.unexpectedCase(); } // 10 - Skip is not ItemContent\n];\n\nconst structSkipRefNumber = 10;\n\n/**\n * @private\n */\nclass Skip extends AbstractStruct {\n get deleted () {\n return true\n }\n\n delete () {}\n\n /**\n * @param {Skip} right\n * @return {boolean}\n */\n mergeWith (right) {\n if (this.constructor !== right.constructor) {\n return false\n }\n this.length += right.length;\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {number} offset\n */\n integrate (transaction, offset) {\n // skip structs cannot be integrated\n error.unexpectedCase();\n }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeInfo(structSkipRefNumber);\n // write as VarUint because Skips can't make use of predictable length-encoding\n encoding.writeVarUint(encoder.restEncoder, this.length - offset);\n }\n\n /**\n * @param {Transaction} transaction\n * @param {StructStore} store\n * @return {null | number}\n */\n getMissing (transaction, store) {\n return null\n }\n}\n\n/** eslint-env browser */\n\n\nconst glo = /** @type {any} */ (typeof globalThis !== 'undefined'\n ? globalThis\n : typeof window !== 'undefined'\n ? window\n // @ts-ignore\n : typeof global !== 'undefined' ? global : {});\n\nconst importIdentifier = '__ $YJS$ __';\n\nif (glo[importIdentifier] === true) {\n /**\n * Dear reader of this message. Please take this seriously.\n *\n * If you see this message, make sure that you only import one version of Yjs. In many cases,\n * your package manager installs two versions of Yjs that are used by different packages within your project.\n * Another reason for this message is that some parts of your project use the commonjs version of Yjs\n * and others use the EcmaScript version of Yjs.\n *\n * This often leads to issues that are hard to debug. We often need to perform constructor checks,\n * e.g. `struct instanceof GC`. If you imported different versions of Yjs, it is impossible for us to\n * do the constructor checks anymore - which might break the CRDT algorithm.\n *\n * https://github.com/yjs/yjs/issues/438\n */\n console.error('Yjs was already imported. This breaks constructor checks and will lead to issues! - https://github.com/yjs/yjs/issues/438');\n}\nglo[importIdentifier] = true;\n\nexport { AbsolutePosition, AbstractConnector, AbstractStruct, AbstractType, YArray as Array, ContentAny, ContentBinary, ContentDeleted, ContentDoc, ContentEmbed, ContentFormat, ContentJSON, ContentString, ContentType, Doc, GC, ID, Item, YMap as Map, PermanentUserData, RelativePosition, Skip, Snapshot, YText as Text, Transaction, UndoManager, UpdateDecoderV1, UpdateDecoderV2, UpdateEncoderV1, UpdateEncoderV2, YXmlElement as XmlElement, YXmlFragment as XmlFragment, YXmlHook as XmlHook, YXmlText as XmlText, YArrayEvent, YEvent, YMapEvent, YTextEvent, YXmlEvent, applyUpdate, applyUpdateV2, cleanupYTextFormatting, compareIDs, compareRelativePositions, convertUpdateFormatV1ToV2, convertUpdateFormatV2ToV1, createAbsolutePositionFromRelativePosition, createDeleteSet, createDeleteSetFromStructStore, createDocFromSnapshot, createID, createRelativePositionFromJSON, createRelativePositionFromTypeIndex, createSnapshot, decodeRelativePosition, decodeSnapshot, decodeSnapshotV2, decodeStateVector, decodeUpdate, decodeUpdateV2, diffUpdate, diffUpdateV2, emptySnapshot, encodeRelativePosition, encodeSnapshot, encodeSnapshotV2, encodeStateAsUpdate, encodeStateAsUpdateV2, encodeStateVector, encodeStateVectorFromUpdate, encodeStateVectorFromUpdateV2, equalDeleteSets, equalSnapshots, findIndexSS, findRootTypeKey, getItem, getState, getTypeChildren, isDeleted, isParentOf, iterateDeletedStructs, logType, logUpdate, logUpdateV2, mergeDeleteSets, mergeUpdates, mergeUpdatesV2, obfuscateUpdate, obfuscateUpdateV2, parseUpdateMeta, parseUpdateMetaV2, readUpdate, readUpdateV2, relativePositionToJSON, snapshot, snapshotContainsUpdate, transact, tryGc, typeListToArraySnapshot, typeMapGetAllSnapshot, typeMapGetSnapshot };\n//# sourceMappingURL=yjs.mjs.map\n","/**\n * @module awareness-protocol\n */\n\nimport * as encoding from 'lib0/encoding'\nimport * as decoding from 'lib0/decoding'\nimport * as time from 'lib0/time'\nimport * as math from 'lib0/math'\nimport { Observable } from 'lib0/observable'\nimport * as f from 'lib0/function'\nimport * as Y from 'yjs' // eslint-disable-line\n\nexport const outdatedTimeout = 30000\n\n/**\n * @typedef {Object} MetaClientState\n * @property {number} MetaClientState.clock\n * @property {number} MetaClientState.lastUpdated unix timestamp\n */\n\n/**\n * The Awareness class implements a simple shared state protocol that can be used for non-persistent data like awareness information\n * (cursor, username, status, ..). Each client can update its own local state and listen to state changes of\n * remote clients. Every client may set a state of a remote peer to `null` to mark the client as offline.\n *\n * Each client is identified by a unique client id (something we borrow from `doc.clientID`). A client can override\n * its own state by propagating a message with an increasing timestamp (`clock`). If such a message is received, it is\n * applied if the known state of that client is older than the new state (`clock < newClock`). If a client thinks that\n * a remote client is offline, it may propagate a message with\n * `{ clock: currentClientClock, state: null, client: remoteClient }`. If such a\n * message is received, and the known clock of that client equals the received clock, it will override the state with `null`.\n *\n * Before a client disconnects, it should propagate a `null` state with an updated clock.\n *\n * Awareness states must be updated every 30 seconds. Otherwise the Awareness instance will delete the client state.\n *\n * @extends {Observable<string>}\n */\nexport class Awareness extends Observable {\n /**\n * @param {Y.Doc} doc\n */\n constructor (doc) {\n super()\n this.doc = doc\n /**\n * @type {number}\n */\n this.clientID = doc.clientID\n /**\n * Maps from client id to client state\n * @type {Map<number, Object<string, any>>}\n */\n this.states = new Map()\n /**\n * @type {Map<number, MetaClientState>}\n */\n this.meta = new Map()\n this._checkInterval = /** @type {any} */ (setInterval(() => {\n const now = time.getUnixTime()\n if (this.getLocalState() !== null && (outdatedTimeout / 2 <= now - /** @type {{lastUpdated:number}} */ (this.meta.get(this.clientID)).lastUpdated)) {\n // renew local clock\n this.setLocalState(this.getLocalState())\n }\n /**\n * @type {Array<number>}\n */\n const remove = []\n this.meta.forEach((meta, clientid) => {\n if (clientid !== this.clientID && outdatedTimeout <= now - meta.lastUpdated && this.states.has(clientid)) {\n remove.push(clientid)\n }\n })\n if (remove.length > 0) {\n removeAwarenessStates(this, remove, 'timeout')\n }\n }, math.floor(outdatedTimeout / 10)))\n doc.on('destroy', () => {\n this.destroy()\n })\n this.setLocalState({})\n }\n\n destroy () {\n this.emit('destroy', [this])\n this.setLocalState(null)\n super.destroy()\n clearInterval(this._checkInterval)\n }\n\n /**\n * @return {Object<string,any>|null}\n */\n getLocalState () {\n return this.states.get(this.clientID) || null\n }\n\n /**\n * @param {Object<string,any>|null} state\n */\n setLocalState (state) {\n const clientID = this.clientID\n const currLocalMeta = this.meta.get(clientID)\n const clock = currLocalMeta === undefined ? 0 : currLocalMeta.clock + 1\n const prevState = this.states.get(clientID)\n if (state === null) {\n this.states.delete(clientID)\n } else {\n this.states.set(clientID, state)\n }\n this.meta.set(clientID, {\n clock,\n lastUpdated: time.getUnixTime()\n })\n const added = []\n const updated = []\n const filteredUpdated = []\n const removed = []\n if (state === null) {\n removed.push(clientID)\n } else if (prevState == null) {\n if (state != null) {\n added.push(clientID)\n }\n } else {\n updated.push(clientID)\n if (!f.equalityDeep(prevState, state)) {\n filteredUpdated.push(clientID)\n }\n }\n if (added.length > 0 || filteredUpdated.length > 0 || removed.length > 0) {\n this.emit('change', [{ added, updated: filteredUpdated, removed }, 'local'])\n }\n this.emit('update', [{ added, updated, removed }, 'local'])\n }\n\n /**\n * @param {string} field\n * @param {any} value\n */\n setLocalStateField (field, value) {\n const state = this.getLocalState()\n if (state !== null) {\n this.setLocalState({\n ...state,\n [field]: value\n })\n }\n }\n\n /**\n * @return {Map<number,Object<string,any>>}\n */\n getStates () {\n return this.states\n }\n}\n\n/**\n * Mark (remote) clients as inactive and remove them from the list of active peers.\n * This change will be propagated to remote clients.\n *\n * @param {Awareness} awareness\n * @param {Array<number>} clients\n * @param {any} origin\n */\nexport const removeAwarenessStates = (awareness, clients, origin) => {\n const removed = []\n for (let i = 0; i < clients.length; i++) {\n const clientID = clients[i]\n if (awareness.states.has(clientID)) {\n awareness.states.delete(clientID)\n if (clientID === awareness.clientID) {\n const curMeta = /** @type {MetaClientState} */ (awareness.meta.get(clientID))\n awareness.meta.set(clientID, {\n clock: curMeta.clock + 1,\n lastUpdated: time.getUnixTime()\n })\n }\n removed.push(clientID)\n }\n }\n if (removed.length > 0) {\n awareness.emit('change', [{ added: [], updated: [], removed }, origin])\n awareness.emit('update', [{ added: [], updated: [], removed }, origin])\n }\n}\n\n/**\n * @param {Awareness} awareness\n * @param {Array<number>} clients\n * @return {Uint8Array}\n */\nexport const encodeAwarenessUpdate = (awareness, clients, states = awareness.states) => {\n const len = clients.length\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, len)\n for (let i = 0; i < len; i++) {\n const clientID = clients[i]\n const state = states.get(clientID) || null\n const clock = /** @type {MetaClientState} */ (awareness.meta.get(clientID)).clock\n encoding.writeVarUint(encoder, clientID)\n encoding.writeVarUint(encoder, clock)\n encoding.writeVarString(encoder, JSON.stringify(state))\n }\n return encoding.toUint8Array(encoder)\n}\n\n/**\n * Modify the content of an awareness update before re-encoding it to an awareness update.\n *\n * This might be useful when you have a central server that wants to ensure that clients\n * cant hijack somebody elses identity.\n *\n * @param {Uint8Array} update\n * @param {function(any):any} modify\n * @return {Uint8Array}\n */\nexport const modifyAwarenessUpdate = (update, modify) => {\n const decoder = decoding.createDecoder(update)\n const encoder = encoding.createEncoder()\n const len = decoding.readVarUint(decoder)\n encoding.writeVarUint(encoder, len)\n for (let i = 0; i < len; i++) {\n const clientID = decoding.readVarUint(decoder)\n const clock = decoding.readVarUint(decoder)\n const state = JSON.parse(decoding.readVarString(decoder))\n const modifiedState = modify(state)\n encoding.writeVarUint(encoder, clientID)\n encoding.writeVarUint(encoder, clock)\n encoding.writeVarString(encoder, JSON.stringify(modifiedState))\n }\n return encoding.toUint8Array(encoder)\n}\n\n/**\n * @param {Awareness} awareness\n * @param {Uint8Array} update\n * @param {any} origin This will be added to the emitted change event\n */\nexport const applyAwarenessUpdate = (awareness, update, origin) => {\n const decoder = decoding.createDecoder(update)\n const timestamp = time.getUnixTime()\n const added = []\n const updated = []\n const filteredUpdated = []\n const removed = []\n const len = decoding.readVarUint(decoder)\n for (let i = 0; i < len; i++) {\n const clientID = decoding.readVarUint(decoder)\n let clock = decoding.readVarUint(decoder)\n const state = JSON.parse(decoding.readVarString(decoder))\n const clientMeta = awareness.meta.get(clientID)\n const prevState = awareness.states.get(clientID)\n const currClock = clientMeta === undefined ? 0 : clientMeta.clock\n if (currClock < clock || (currClock === clock && state === null && awareness.states.has(clientID))) {\n if (state === null) {\n // never let a remote client remove this local state\n if (clientID === awareness.clientID && awareness.getLocalState() != null) {\n // remote client removed the local state. Do not remote state. Broadcast a message indicating\n // that this client still exists by increasing the clock\n clock++\n } else {\n awareness.states.delete(clientID)\n }\n } else {\n awareness.states.set(clientID, state)\n }\n awareness.meta.set(clientID, {\n clock,\n lastUpdated: timestamp\n })\n if (clientMeta === undefined && state !== null) {\n added.push(clientID)\n } else if (clientMeta !== undefined && state === null) {\n removed.push(clientID)\n } else if (state !== null) {\n if (!f.equalityDeep(state, prevState)) {\n filteredUpdated.push(clientID)\n }\n updated.push(clientID)\n }\n }\n }\n if (added.length > 0 || filteredUpdated.length > 0 || removed.length > 0) {\n awareness.emit('change', [{\n added, updated: filteredUpdated, removed\n }, origin])\n }\n if (added.length > 0 || updated.length > 0 || removed.length > 0) {\n awareness.emit('update', [{\n added, updated, removed\n }, origin])\n }\n}\n","/**\n * @module sync-protocol\n */\n\nimport * as encoding from 'lib0/encoding'\nimport * as decoding from 'lib0/decoding'\nimport * as Y from 'yjs'\n\n/**\n * @typedef {Map<number, number>} StateMap\n */\n\n/**\n * Core Yjs defines two message types:\n * • YjsSyncStep1: Includes the State Set of the sending client. When received, the client should reply with YjsSyncStep2.\n * • YjsSyncStep2: Includes all missing structs and the complete delete set. When received, the client is assured that it\n * received all information from the remote client.\n *\n * In a peer-to-peer network, you may want to introduce a SyncDone message type. Both parties should initiate the connection\n * with SyncStep1. When a client received SyncStep2, it should reply with SyncDone. When the local client received both\n * SyncStep2 and SyncDone, it is assured that it is synced to the remote client.\n *\n * In a client-server model, you want to handle this differently: The client should initiate the connection with SyncStep1.\n * When the server receives SyncStep1, it should reply with SyncStep2 immediately followed by SyncStep1. The client replies\n * with SyncStep2 when it receives SyncStep1. Optionally the server may send a SyncDone after it received SyncStep2, so the\n * client knows that the sync is finished. There are two reasons for this more elaborated sync model: 1. This protocol can\n * easily be implemented on top of http and websockets. 2. The server should only reply to requests, and not initiate them.\n * Therefore it is necessary that the client initiates the sync.\n *\n * Construction of a message:\n * [messageType : varUint, message definition..]\n *\n * Note: A message does not include information about the room name. This must to be handled by the upper layer protocol!\n *\n * stringify[messageType] stringifies a message definition (messageType is already read from the bufffer)\n */\n\nexport const messageYjsSyncStep1 = 0\nexport const messageYjsSyncStep2 = 1\nexport const messageYjsUpdate = 2\n\n/**\n * Create a sync step 1 message based on the state of the current shared document.\n *\n * @param {encoding.Encoder} encoder\n * @param {Y.Doc} doc\n */\nexport const writeSyncStep1 = (encoder, doc) => {\n encoding.writeVarUint(encoder, messageYjsSyncStep1)\n const sv = Y.encodeStateVector(doc)\n encoding.writeVarUint8Array(encoder, sv)\n}\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {Y.Doc} doc\n * @param {Uint8Array} [encodedStateVector]\n */\nexport const writeSyncStep2 = (encoder, doc, encodedStateVector) => {\n encoding.writeVarUint(encoder, messageYjsSyncStep2)\n encoding.writeVarUint8Array(encoder, Y.encodeStateAsUpdate(doc, encodedStateVector))\n}\n\n/**\n * Read SyncStep1 message and reply with SyncStep2.\n *\n * @param {decoding.Decoder} decoder The reply to the received message\n * @param {encoding.Encoder} encoder The received message\n * @param {Y.Doc} doc\n */\nexport const readSyncStep1 = (decoder, encoder, doc) =>\n writeSyncStep2(encoder, doc, decoding.readVarUint8Array(decoder))\n\n/**\n * Read and apply Structs and then DeleteStore to a y instance.\n *\n * @param {decoding.Decoder} decoder\n * @param {Y.Doc} doc\n * @param {any} transactionOrigin\n */\nexport const readSyncStep2 = (decoder, doc, transactionOrigin) => {\n try {\n Y.applyUpdate(doc, decoding.readVarUint8Array(decoder), transactionOrigin)\n } catch (error) {\n // This catches errors that are thrown by event handlers\n console.error('Caught error while handling a Yjs update', error)\n }\n}\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {Uint8Array} update\n */\nexport const writeUpdate = (encoder, update) => {\n encoding.writeVarUint(encoder, messageYjsUpdate)\n encoding.writeVarUint8Array(encoder, update)\n}\n\n/**\n * Read and apply Structs and then DeleteStore to a y instance.\n *\n * @param {decoding.Decoder} decoder\n * @param {Y.Doc} doc\n * @param {any} transactionOrigin\n */\nexport const readUpdate = readSyncStep2\n\n/**\n * @param {decoding.Decoder} decoder A message received from another client\n * @param {encoding.Encoder} encoder The reply message. Does not need to be sent if empty.\n * @param {Y.Doc} doc\n * @param {any} transactionOrigin\n */\nexport const readSyncMessage = (decoder, encoder, doc, transactionOrigin) => {\n const messageType = decoding.readVarUint(decoder)\n switch (messageType) {\n case messageYjsSyncStep1:\n readSyncStep1(decoder, encoder, doc)\n break\n case messageYjsSyncStep2:\n readSyncStep2(decoder, doc, transactionOrigin)\n break\n case messageYjsUpdate:\n readUpdate(decoder, doc, transactionOrigin)\n break\n default:\n throw new Error('Unknown message type')\n }\n return messageType\n}\n","import type {\n IncomingHttpHeaders, IncomingMessage, ServerResponse,\n} from 'http'\nimport type { URLSearchParams } from 'url'\nimport type { Awareness } from 'y-protocols/awareness'\nimport type Connection from './Connection.js'\nimport type Document from './Document.js'\nimport type { Hocuspocus } from './Hocuspocus.js'\n\nexport enum MessageType {\n Unknown = -1,\n Sync = 0,\n Awareness = 1,\n Auth = 2,\n QueryAwareness = 3,\n SyncReply = 4, // same as Sync, but won't trigger another 'SyncStep1'\n Stateless = 5,\n BroadcastStateless = 6,\n CLOSE = 7,\n SyncStatus = 8,\n}\n\nexport interface AwarenessUpdate {\n added: Array<any>,\n updated: Array<any>,\n removed: Array<any>,\n}\n\nexport interface ConnectionConfiguration {\n readOnly: boolean\n requiresAuthentication: boolean\n isAuthenticated: boolean\n}\n\nexport interface Extension {\n priority?: number;\n extensionName?: string;\n onConfigure?(data: onConfigurePayload): Promise<any>;\n onListen?(data: onListenPayload): Promise<any>;\n onUpgrade?(data: onUpgradePayload): Promise<any>;\n onConnect?(data: onConnectPayload): Promise<any>;\n connected?(data: connectedPayload): Promise<any>;\n onAuthenticate?(data: onAuthenticatePayload): Promise<any>;\n onCreateDocument?(data: onCreateDocumentPayload): Promise<any>;\n onLoadDocument?(data: onLoadDocumentPayload): Promise<any>;\n afterLoadDocument?(data: afterLoadDocumentPayload): Promise<any>;\n beforeHandleMessage?(data: beforeHandleMessagePayload): Promise<any>;\n beforeBroadcastStateless?(data: beforeBroadcastStatelessPayload): Promise<any>;\n onStateless?(payload: onStatelessPayload): Promise<any>;\n onChange?(data: onChangePayload): Promise<any>;\n onStoreDocument?(data: onStoreDocumentPayload): Promise<any>;\n afterStoreDocument?(data: afterStoreDocumentPayload): Promise<any>;\n onAwarenessUpdate?(data: onAwarenessUpdatePayload): Promise<any>;\n onRequest?(data: onRequestPayload): Promise<any>;\n onDisconnect?(data: onDisconnectPayload): Promise<any>;\n afterUnloadDocument?(data: afterUnloadDocumentPayload): Promise<any>;\n onDestroy?(data: onDestroyPayload): Promise<any>;\n}\n\nexport type HookName =\n 'onConfigure' |\n 'onListen' |\n 'onUpgrade' |\n 'onConnect' |\n 'connected' |\n 'onAuthenticate' |\n 'onCreateDocument' |\n 'onLoadDocument' |\n 'afterLoadDocument' |\n 'beforeHandleMessage' |\n 'beforeBroadcastStateless' |\n 'onStateless' |\n 'onChange' |\n 'onStoreDocument' |\n 'afterStoreDocument' |\n 'onAwarenessUpdate' |\n 'onRequest' |\n 'onDisconnect' |\n 'afterUnloadDocument' |\n 'onDestroy'\n\nexport type HookPayloadByName = {\n onConfigure: onConfigurePayload,\n onListen: onListenPayload,\n onUpgrade: onUpgradePayload,\n onConnect: onConnectPayload,\n connected: connectedPayload,\n onAuthenticate: onAuthenticatePayload,\n onCreateDocument: onCreateDocumentPayload\n onLoadDocument: onLoadDocumentPayload,\n afterLoadDocument: afterLoadDocumentPayload,\n beforeHandleMessage: beforeHandleMessagePayload,\n beforeBroadcastStateless: beforeBroadcastStatelessPayload,\n onStateless: onStatelessPayload,\n onChange: onChangePayload,\n onStoreDocument: onStoreDocumentPayload,\n afterStoreDocument: afterStoreDocumentPayload,\n onAwarenessUpdate: onAwarenessUpdatePayload,\n onRequest: onRequestPayload,\n onDisconnect: onDisconnectPayload,\n afterUnloadDocument: afterUnloadDocumentPayload,\n onDestroy: onDestroyPayload,\n}\n\nexport interface Configuration extends Extension {\n /**\n * A name for the instance, used for logging.\n */\n name: string | null,\n /**\n * A list of hocuspocus extensions.\n */\n extensions: Array<Extension>,\n /**\n * Defines in which interval the server sends a ping, and closes the connection when no pong is sent back.\n */\n timeout: number,\n /**\n * Debounces the call of the `onStoreDocument` hook for the given amount of time in ms.\n * Otherwise every single update would be persisted.\n */\n debounce: number,\n /**\n * Makes sure to call `onStoreDocument` at least in the given amount of time (ms).\n */\n maxDebounce: number\n /**\n * By default, the servers show a start screen. If passed false, the server will start quietly.\n */\n quiet: boolean,\n /**\n * If set to false, respects the debounce time of `onStoreDocument` before unloading a document.\n * Otherwise, the document will be unloaded immediately.\n *\n * This prevents a client from DOSing the server by repeatedly connecting and disconnecting when\n * your onStoreDocument is rate-limited.\n */\n unloadImmediately: boolean,\n\n /**\n * options to pass to the ydoc document\n */\n yDocOptions: {\n gc: boolean, // enable or disable garbage collection (see https://github.com/yjs/yjs/blob/main/INTERNALS.md#deletions)\n gcFilter: () => boolean, // will be called before garbage collecting ; return false to keep it\n },\n\n}\n\nexport interface onStatelessPayload {\n connection: Connection,\n documentName: string,\n document: Document,\n payload: string,\n}\n\n// @todo Change 'connection' to 'connectionConfig' in next major release\n// see https://github.com/ueberdosis/hocuspocus/pull/607#issuecomment-1553559805\nexport interface onAuthenticatePayload {\n context: any,\n documentName: string,\n instance: Hocuspocus,\n requestHeaders: IncomingHttpHeaders,\n requestParameters: URLSearchParams,\n request: IncomingMessage,\n socketId: string,\n token: string,\n connection: ConnectionConfiguration\n}\n\n// @todo Change 'connection' to 'connectionConfig' in next major release\n// see https://github.com/ueberdosis/hocuspocus/pull/607#issuecomment-1553559805\nexport interface onCreateDocumentPayload {\n context: any\n documentName: string\n instance: Hocuspocus\n requestHeaders: IncomingHttpHeaders\n requestParameters: URLSearchParams\n socketId: string\n connection: ConnectionConfiguration\n}\n\n// @todo Change 'connection' to 'connectionConfig' in next major release\n// see https://github.com/ueberdosis/hocuspocus/pull/607#issuecomment-1553559805\nexport interface onConnectPayload {\n context: any,\n documentName: string,\n instance: Hocuspocus,\n request: IncomingMessage,\n requestHeaders: IncomingHttpHeaders,\n requestParameters: URLSearchParams,\n socketId: string,\n connection: ConnectionConfiguration\n}\n\n// @todo Change 'connection' to 'connectionConfig', and 'connectionInstance' to 'connection' in next major release\n// see https://github.com/ueberdosis/hocuspocus/pull/607#issuecomment-1553559805\nexport interface connectedPayload {\n context: any,\n documentName: string,\n instance: Hocuspocus,\n request: IncomingMessage,\n requestHeaders: IncomingHttpHeaders,\n requestParameters: URLSearchParams,\n socketId: string,\n connection: ConnectionConfiguration,\n connectionInstance: Connection\n}\n\n// @todo Change 'connection' to 'connectionConfig' in next major release\n// see https://github.com/ueberdosis/hocuspocus/pull/607#issuecomment-1553559805\nexport interface onLoadDocumentPayload {\n context: any,\n document: Document,\n documentName: string,\n instance: Hocuspocus,\n requestHeaders: IncomingHttpHeaders,\n requestParameters: URLSearchParams,\n socketId: string,\n connection: ConnectionConfiguration\n}\n\n// @todo Change 'connection' to 'connectionConfig' in next major release\n// see https://github.com/ueberdosis/hocuspocus/pull/607#issuecomment-1553559805\nexport interface afterLoadDocumentPayload {\n context: any,\n document: Document,\n documentName: string,\n instance: Hocuspocus,\n requestHeaders: IncomingHttpHeaders,\n requestParameters: URLSearchParams,\n socketId: string,\n connection: ConnectionConfiguration\n}\n\nexport interface onChangePayload {\n clientsCount: number,\n context: any,\n document: Document,\n documentName: string,\n instance: Hocuspocus,\n requestHeaders: IncomingHttpHeaders,\n requestParameters: URLSearchParams,\n update: Uint8Array,\n socketId: string,\n transactionOrigin: any,\n}\n\nexport interface beforeHandleMessagePayload {\n clientsCount: number,\n context: any,\n document: Document,\n documentName: string,\n instance: Hocuspocus,\n requestHeaders: IncomingHttpHeaders,\n requestParameters: URLSearchParams,\n update: Uint8Array,\n socketId: string,\n connection: Connection\n}\n\nexport interface beforeBroadcastStatelessPayload {\n document: Document,\n documentName: string,\n payload: string,\n}\n\nexport interface onStoreDocumentPayload {\n clientsCount: number,\n context: any,\n document: Document,\n documentName: string,\n instance: Hocuspocus,\n requestHeaders: IncomingHttpHeaders,\n requestParameters: URLSearchParams,\n socketId: string,\n transactionOrigin?: any,\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface, @typescript-eslint/no-empty-object-type\nexport interface afterStoreDocumentPayload extends onStoreDocumentPayload {}\n\nexport interface onAwarenessUpdatePayload {\n context: any,\n document: Document,\n documentName: string,\n instance: Hocuspocus,\n requestHeaders: IncomingHttpHeaders,\n requestParameters: URLSearchParams,\n socketId: string,\n added: number[],\n updated: number[],\n removed: number[],\n awareness: Awareness,\n states: StatesArray,\n}\n\nexport type StatesArray = { clientId: number, [key: string | number]: any }[]\n\n// @todo Change 'connection' to 'connectionConfig' in next major release\n// see https://github.com/ueberdosis/hocuspocus/pull/607#issuecomment-1553559805\nexport interface fetchPayload {\n context: any,\n document: Document,\n documentName: string,\n instance: Hocuspocus,\n requestHeaders: IncomingHttpHeaders,\n requestParameters: URLSearchParams,\n socketId: string,\n connection: ConnectionConfiguration\n}\n\nexport interface storePayload extends onStoreDocumentPayload {\n state: Buffer,\n}\n\nexport interface onDisconnectPayload {\n clientsCount: number,\n context: any,\n document: Document,\n documentName: string,\n instance: Hocuspocus,\n requestHeaders: IncomingHttpHeaders,\n requestParameters: URLSearchParams,\n socketId: string,\n}\n\nexport interface onRequestPayload {\n request: IncomingMessage,\n response: ServerResponse,\n instance: Hocuspocus,\n}\n\nexport interface onUpgradePayload {\n request: IncomingMessage,\n socket: any,\n head: any,\n instance: Hocuspocus,\n}\n\nexport interface onListenPayload {\n instance: Hocuspocus,\n configuration: Configuration,\n port: number,\n}\n\nexport interface onDestroyPayload {\n instance: Hocuspocus,\n}\n\nexport interface onConfigurePayload {\n instance: Hocuspocus,\n configuration: Configuration,\n version: string,\n}\n\nexport interface afterUnloadDocumentPayload {\n instance: Hocuspocus;\n documentName: string;\n}\n\nexport interface DirectConnection {\n transact(transaction: (document: Document) => void): Promise<void>,\n disconnect(): void\n}\n","import type {\n Encoder} from 'lib0/encoding'\nimport {\n createEncoder,\n toUint8Array,\n writeVarString,\n writeVarUint,\n writeVarUint8Array,\n} from 'lib0/encoding'\nimport type { Awareness} from 'y-protocols/awareness'\nimport { encodeAwarenessUpdate } from 'y-protocols/awareness'\nimport { writeSyncStep1, writeUpdate } from 'y-protocols/sync'\n\nimport { writeAuthenticated, writePermissionDenied } from '@hocuspocus/common'\nimport type Document from './Document.js'\nimport { MessageType } from './types.js'\n\nexport class OutgoingMessage {\n\n encoder: Encoder\n\n type?: number\n\n category?: string\n\n constructor(documentName: string) {\n this.encoder = createEncoder()\n\n writeVarString(this.encoder, documentName)\n }\n\n createSyncMessage(): OutgoingMessage {\n this.type = MessageType.Sync\n\n writeVarUint(this.encoder, MessageType.Sync)\n\n return this\n }\n\n createSyncReplyMessage(): OutgoingMessage {\n this.type = MessageType.SyncReply\n\n writeVarUint(this.encoder, MessageType.SyncReply)\n\n return this\n }\n\n createAwarenessUpdateMessage(awareness: Awareness, changedClients?: Array<any>): OutgoingMessage {\n this.type = MessageType.Awareness\n this.category = 'Update'\n\n const message = encodeAwarenessUpdate(\n awareness,\n changedClients || Array.from(awareness.getStates().keys()),\n )\n\n writeVarUint(this.encoder, MessageType.Awareness)\n writeVarUint8Array(this.encoder, message)\n\n return this\n }\n\n writeQueryAwareness(): OutgoingMessage {\n this.type = MessageType.QueryAwareness\n this.category = 'Update'\n\n writeVarUint(this.encoder, MessageType.QueryAwareness)\n\n return this\n }\n\n writeAuthenticated(readonly: boolean): OutgoingMessage {\n this.type = MessageType.Auth\n this.category = 'Authenticated'\n\n writeVarUint(this.encoder, MessageType.Auth)\n writeAuthenticated(this.encoder, readonly ? 'readonly' : 'read-write')\n\n return this\n }\n\n writePermissionDenied(reason: string): OutgoingMessage {\n this.type = MessageType.Auth\n this.category = 'PermissionDenied'\n\n writeVarUint(this.encoder, MessageType.Auth)\n writePermissionDenied(this.encoder, reason)\n\n return this\n }\n\n writeFirstSyncStepFor(document: Document): OutgoingMessage {\n this.category = 'SyncStep1'\n\n writeSyncStep1(this.encoder, document)\n\n return this\n }\n\n writeUpdate(update: Uint8Array): OutgoingMessage {\n this.category = 'Update'\n\n writeUpdate(this.encoder, update)\n\n return this\n }\n\n writeStateless(payload: string): OutgoingMessage {\n this.category = 'Stateless'\n\n writeVarUint(this.encoder, MessageType.Stateless)\n writeVarString(this.encoder, payload)\n\n return this\n }\n\n writeBroadcastStateless(payload: string): OutgoingMessage {\n this.category = 'Stateless'\n\n writeVarUint(this.encoder, MessageType.BroadcastStateless)\n writeVarString(this.encoder, payload)\n\n return this\n }\n\n // TODO: should this be write* or create* as method name?\n writeSyncStatus(updateSaved: boolean): OutgoingMessage {\n this.category = 'SyncStatus'\n\n writeVarUint(this.encoder, MessageType.SyncStatus)\n writeVarUint(this.encoder, updateSaved ? 1 : 0)\n\n return this\n }\n\n toUint8Array(): Uint8Array {\n return toUint8Array(this.encoder)\n }\n\n}\n","import * as decoding from 'lib0/decoding'\nimport { readVarString } from 'lib0/decoding'\nimport { applyAwarenessUpdate } from 'y-protocols/awareness'\nimport {\n messageYjsSyncStep1,\n messageYjsSyncStep2,\n messageYjsUpdate,\n readSyncStep1,\n readSyncStep2,\n readUpdate,\n} from 'y-protocols/sync'\nimport * as Y from 'yjs'\nimport type Connection from './Connection.js'\nimport type { Debugger } from './Debugger.js'\nimport type Document from './Document.js'\nimport type { IncomingMessage } from './IncomingMessage.js'\nimport { OutgoingMessage } from './OutgoingMessage.js'\nimport { MessageType } from './types.js'\n\nexport class MessageReceiver {\n\n message: IncomingMessage\n\n logger: Debugger\n\n defaultTransactionOrigin?: string\n\n constructor(message: IncomingMessage, logger: Debugger, defaultTransactionOrigin?: string) {\n this.message = message\n this.logger = logger\n this.defaultTransactionOrigin = defaultTransactionOrigin\n }\n\n public apply(document: Document, connection?: Connection, reply?: (message: Uint8Array) => void) {\n const { message } = this\n const type = message.readVarUint()\n const emptyMessageLength = message.length\n\n switch (type) {\n case MessageType.Sync:\n case MessageType.SyncReply: {\n message.writeVarUint(MessageType.Sync)\n this.readSyncMessage(message, document, connection, reply, type !== MessageType.SyncReply)\n\n if (message.length > emptyMessageLength + 1) {\n if (reply) {\n reply(message.toUint8Array())\n } else if (connection) {\n // TODO: We should log this, shouldn’t we?\n // this.logger.log({\n // direction: 'out',\n // type: MessageType.Awareness,\n // category: 'Update',\n // })\n connection.send(message.toUint8Array())\n }\n }\n\n break\n }\n case MessageType.Awareness: {\n this.logger.log({\n direction: 'in',\n type: MessageType.Awareness,\n category: 'Update',\n })\n\n applyAwarenessUpdate(document.awareness, message.readVarUint8Array(), connection)\n\n break\n }\n case MessageType.QueryAwareness: {\n\n this.applyQueryAwarenessMessage(document, reply)\n\n break\n }\n case MessageType.Stateless: {\n connection?.callbacks.statelessCallback({\n connection,\n documentName: document.name,\n document,\n payload: readVarString(message.decoder),\n })\n\n break\n }\n case MessageType.BroadcastStateless: {\n const msg = message.readVarString()\n document.getConnections().forEach(connection => {\n connection.sendStateless(msg)\n })\n break\n }\n\n case MessageType.CLOSE: {\n connection?.close({\n code: 1000,\n reason: 'provider_initiated',\n })\n break\n }\n\n case MessageType.Auth:\n console.error('Received an authentication message on a connection that is already fully authenticated. Probably your provider has been destroyed + recreated really fast.')\n break\n\n default:\n console.error(`Unable to handle message of type ${type}: no handler defined! Are your provider/server versions aligned?`)\n // Do nothing\n }\n }\n\n readSyncMessage(message: IncomingMessage, document: Document, connection?: Connection, reply?: (message: Uint8Array) => void, requestFirstSync = true) {\n const type = message.readVarUint()\n\n switch (type) {\n case messageYjsSyncStep1: {\n this.logger.log({\n direction: 'in',\n type: MessageType.Sync,\n category: 'SyncStep1',\n })\n\n readSyncStep1(message.decoder, message.encoder, document)\n\n // When the server receives SyncStep1, it should reply with SyncStep2 immediately followed by SyncStep1.\n this.logger.log({\n direction: 'out',\n type: MessageType.Sync,\n category: 'SyncStep2',\n })\n\n if (reply && requestFirstSync) {\n const syncMessage = (new OutgoingMessage(document.name)\n .createSyncReplyMessage()\n .writeFirstSyncStepFor(document))\n\n this.logger.log({\n direction: 'out',\n type: MessageType.Sync,\n category: 'SyncStep1',\n })\n\n reply(syncMessage.toUint8Array())\n } else if (connection) {\n const syncMessage = (new OutgoingMessage(document.name)\n .createSyncMessage()\n .writeFirstSyncStepFor(document))\n\n this.logger.log({\n direction: 'out',\n type: MessageType.Sync,\n category: 'SyncStep1',\n })\n\n connection.send(syncMessage.toUint8Array())\n }\n break\n }\n case messageYjsSyncStep2:\n this.logger.log({\n direction: 'in',\n type: MessageType.Sync,\n category: 'SyncStep2',\n })\n\n if (connection?.readOnly) {\n // We're in read-only mode, so we can't apply the update.\n // Let's use snapshotContainsUpdate to see if the update actually contains changes.\n // If not, we can still ack the update\n const snapshot = Y.snapshot(document)\n const update = decoding.readVarUint8Array(message.decoder)\n if (Y.snapshotContainsUpdate(snapshot, update)) {\n // no new changes in update\n const ackMessage = new OutgoingMessage(document.name)\n .writeSyncStatus(true)\n\n connection.send(ackMessage.toUint8Array())\n } else {\n // new changes in update that we can't apply, because readOnly\n const ackMessage = new OutgoingMessage(document.name)\n .writeSyncStatus(false)\n\n connection.send(ackMessage.toUint8Array())\n }\n break\n }\n\n readSyncStep2(message.decoder, document, connection ?? this.defaultTransactionOrigin)\n\n if (connection) {\n connection.send(new OutgoingMessage(document.name)\n .writeSyncStatus(true).toUint8Array())\n }\n break\n case messageYjsUpdate:\n this.logger.log({\n direction: 'in',\n type: MessageType.Sync,\n category: 'Update',\n })\n\n if (connection?.readOnly) {\n connection.send(new OutgoingMessage(document.name)\n .writeSyncStatus(false).toUint8Array())\n break\n }\n\n readUpdate(message.decoder, document, connection)\n if (connection) {\n connection.send(new OutgoingMessage(document.name)\n .writeSyncStatus(true).toUint8Array())\n }\n break\n default:\n throw new Error(`Received a message with an unknown type: ${type}`)\n }\n\n return type\n }\n\n applyQueryAwarenessMessage(document: Document, reply?: (message: Uint8Array) => void) {\n const message = new OutgoingMessage(document.name)\n .createAwarenessUpdateMessage(document.awareness)\n\n if (reply) {\n reply(message.toUint8Array())\n }\n\n // TODO: We should add support for WebSocket connections, too, right?\n // this.logger.log({\n // direction: 'out',\n // type: MessageType.Sync,\n // category: 'SyncStep1',\n // })\n\n // connection.send(syncMessage.toUint8Array())\n }\n}\n","// import * as time from 'lib0/time'\nimport { MessageType } from './types.js'\n\nexport class Debugger {\n logs: any[] = []\n\n listen = false\n\n output = false\n\n enable() {\n this.flush()\n\n this.listen = true\n }\n\n disable() {\n this.listen = false\n }\n\n verbose() {\n this.output = true\n }\n\n quiet() {\n this.output = false\n }\n\n log(message: any) {\n if (!this.listen) {\n return this\n }\n\n const item = {\n ...message,\n type: MessageType[message.type],\n // time: time.getUnixTime(),\n }\n\n this.logs.push(item)\n\n if (this.output) {\n console.log('[DEBUGGER]', item.direction === 'in' ? 'IN –>' : 'OUT <–', `${item.type}/${item.category}`)\n }\n\n return this\n }\n\n flush() {\n this.logs = []\n\n return this\n }\n\n get() {\n return {\n logs: this.logs,\n }\n }\n}\n","'use strict';\n\nmodule.exports = {\n BINARY_TYPES: ['nodebuffer', 'arraybuffer', 'fragments'],\n EMPTY_BUFFER: Buffer.alloc(0),\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),\n kListener: Symbol('kListener'),\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n NOOP: () => {}\n};\n","'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) return target.slice(0, offset);\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.byteLength === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = Buffer.from(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\ntry {\n const bufferUtil = require('bufferutil');\n\n module.exports = {\n concat,\n mask(source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bufferUtil.mask(source, mask, output, offset, length);\n },\n toArrayBuffer,\n toBuffer,\n unmask(buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bufferUtil.unmask(buffer, mask);\n }\n };\n} catch (e) /* istanbul ignore next */ {\n module.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n };\n}\n","'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n","'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode } = require('./constants');\n\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed if context takeover is disabled\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n * @param {Boolean} [isServer=false] Create the instance in either server or\n * client mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(options, isServer, maxPayload) {\n this._maxPayload = maxPayload | 0;\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._isServer = !!isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) data = data.slice(0, data.length - 4);\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n","'use strict';\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\ntry {\n const isValidUTF8 = require('utf-8-validate');\n\n module.exports = {\n isValidStatusCode,\n isValidUTF8(buf) {\n return buf.length < 150 ? _isValidUTF8(buf) : isValidUTF8(buf);\n },\n tokenChars\n };\n} catch (e) /* istanbul ignore next */ {\n module.exports = {\n isValidStatusCode,\n isValidUTF8: _isValidUTF8,\n tokenChars\n };\n}\n","'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {Object} [options] Options object\n * @param {String} [options.binaryType=nodebuffer] The type for binary data\n * @param {Object} [options.extensions] An object containing the negotiated\n * extensions\n * @param {Boolean} [options.isServer=false] Specifies whether to operate in\n * client or server mode\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n */\n constructor(options = {}) {\n super();\n\n this._binaryType = options.binaryType || BINARY_TYPES[0];\n this._extensions = options.extensions || {};\n this._isServer = !!options.isServer;\n this._maxPayload = options.maxPayload | 0;\n this._skipUTF8Validation = !!options.skipUTF8Validation;\n this[kWebSocket] = undefined;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragments = [];\n\n this._state = GET_INFO;\n this._loop = false;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = buf.slice(n);\n return buf.slice(0, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = buf.slice(n);\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n let err;\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n err = this.getInfo();\n break;\n case GET_PAYLOAD_LENGTH_16:\n err = this.getPayloadLength16();\n break;\n case GET_PAYLOAD_LENGTH_64:\n err = this.getPayloadLength64();\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n err = this.getData(cb);\n break;\n default:\n // `INFLATING`\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n cb(err);\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getInfo() {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV2 and RSV3 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_2_3'\n );\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n if (!this._fragmented) {\n this._loop = false;\n return error(\n RangeError,\n 'invalid opcode 0',\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n this._loop = false;\n return error(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n this._loop = false;\n return error(\n RangeError,\n 'FIN must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_FIN'\n );\n }\n\n if (compressed) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n if (this._payloadLength > 0x7d) {\n this._loop = false;\n return error(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n }\n } else {\n this._loop = false;\n return error(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n this._loop = false;\n return error(\n RangeError,\n 'MASK must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_MASK'\n );\n }\n } else if (this._masked) {\n this._loop = false;\n return error(\n RangeError,\n 'MASK must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_MASK'\n );\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else return this.haveLength();\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getPayloadLength16() {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n return this.haveLength();\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getPayloadLength64() {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n this._loop = false;\n return error(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n );\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n return this.haveLength();\n }\n\n /**\n * Payload length has been read.\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n haveLength() {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n this._loop = false;\n return error(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n\n if (\n this._masked &&\n (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0\n ) {\n unmask(data, this._mask);\n }\n }\n\n if (this._opcode > 0x07) return this.controlMessage(data);\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its length is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n return this.dataMessage();\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n return cb(\n error(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n )\n );\n }\n\n this._fragments.push(buf);\n }\n\n const er = this.dataMessage();\n if (er) return cb(er);\n\n this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @return {(Error|undefined)} A possible error\n * @private\n */\n dataMessage() {\n if (this._fin) {\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else {\n data = fragments;\n }\n\n this.emit('message', data, true);\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n this._loop = false;\n return error(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n }\n\n this.emit('message', buf, false);\n }\n }\n\n this._state = GET_INFO;\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data) {\n if (this._opcode === 0x08) {\n this._loop = false;\n\n if (data.length === 0) {\n this.emit('conclude', 1005, EMPTY_BUFFER);\n this.end();\n } else if (data.length === 1) {\n return error(\n RangeError,\n 'invalid payload length 1',\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n return error(\n RangeError,\n `invalid status code ${code}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CLOSE_CODE'\n );\n }\n\n const buf = data.slice(2);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n return error(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n }\n\n this.emit('conclude', code, buf);\n this.end();\n }\n } else if (this._opcode === 0x09) {\n this.emit('ping', data);\n } else {\n this.emit('pong', data);\n }\n\n this._state = GET_INFO;\n }\n}\n\nmodule.exports = Receiver;\n\n/**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\nfunction error(ErrorCtor, message, prefix, statusCode, errorCode) {\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, error);\n err.code = errorCode;\n err[kStatusCode] = statusCode;\n return err;\n}\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^net|tls$\" }] */\n\n'use strict';\n\nconst net = require('net');\nconst tls = require('tls');\nconst { randomFillSync } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER } = require('./constants');\nconst { isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst kByteLength = Symbol('kByteLength');\nconst maskBuffer = Buffer.alloc(4);\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {(net.Socket|tls.Socket)} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Function} [generateMask] The function used to generate the masking\n * key\n */\n constructor(socket, extensions, generateMask) {\n this._extensions = extensions || {};\n\n if (generateMask) {\n this._generateMask = generateMask;\n this._maskBuffer = Buffer.alloc(4);\n }\n\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._deflating = false;\n this._queue = [];\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {(Buffer|String)} data The data to frame\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {(Buffer|String)[]} The framed data\n * @public\n */\n static frame(data, options) {\n let mask;\n let merge = false;\n let offset = 2;\n let skipMasking = false;\n\n if (options.mask) {\n mask = options.maskBuffer || maskBuffer;\n\n if (options.generateMask) {\n options.generateMask(mask);\n } else {\n randomFillSync(mask, 0, 4);\n }\n\n skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;\n offset = 6;\n }\n\n let dataLength;\n\n if (typeof data === 'string') {\n if (\n (!options.mask || skipMasking) &&\n options[kByteLength] !== undefined\n ) {\n dataLength = options[kByteLength];\n } else {\n data = Buffer.from(data);\n dataLength = data.length;\n }\n } else {\n dataLength = data.length;\n merge = options.mask && options.readOnly && !skipMasking;\n }\n\n let payloadLength = dataLength;\n\n if (dataLength >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (dataLength > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(dataLength, 2);\n } else if (payloadLength === 127) {\n target[2] = target[3] = 0;\n target.writeUIntBE(dataLength, 4, 6);\n }\n\n if (!options.mask) return [target, data];\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (skipMasking) return [target, data];\n\n if (merge) {\n applyMask(data, mask, target, offset, dataLength);\n return [target];\n }\n\n applyMask(data, mask, data, 0, dataLength);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {(String|Buffer)} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || !data.length) {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n\n if (typeof data === 'string') {\n buf.write(data, 2);\n } else {\n buf.set(data, 2);\n }\n }\n\n const options = {\n [kByteLength]: buf.length,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x08,\n readOnly: false,\n rsv1: false\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, buf, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(buf, options), cb);\n }\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x09,\n readOnly,\n rsv1: false\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x0a,\n readOnly,\n rsv1: false\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (\n rsv1 &&\n perMessageDeflate &&\n perMessageDeflate.params[\n perMessageDeflate._isServer\n ? 'server_no_context_takeover'\n : 'client_no_context_takeover'\n ]\n ) {\n rsv1 = byteLength >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n if (perMessageDeflate) {\n const opts = {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, data, this._compress, opts, cb]);\n } else {\n this.dispatch(data, this._compress, opts, cb);\n }\n } else {\n this.sendFrame(\n Sender.frame(data, {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1: false\n }),\n cb\n );\n }\n }\n\n /**\n * Dispatches a message.\n *\n * @param {(Buffer|String)} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += options[kByteLength];\n this._deflating = true;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < this._queue.length; i++) {\n const params = this._queue[i];\n const callback = params[params.length - 1];\n\n if (typeof callback === 'function') callback(err);\n }\n\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n this._deflating = false;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (!this._deflating && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[3][kByteLength];\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[3][kByteLength];\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {Buffer[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n","'use strict';\n\nconst { kForOnEventAttribute, kListener } = require('./constants');\n\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @throws {TypeError} If the `type` argument is not specified\n */\n constructor(type) {\n this[kTarget] = null;\n this[kType] = type;\n }\n\n /**\n * @type {*}\n */\n get target() {\n return this[kTarget];\n }\n\n /**\n * @type {String}\n */\n get type() {\n return this[kType];\n }\n}\n\nObject.defineProperty(Event.prototype, 'target', { enumerable: true });\nObject.defineProperty(Event.prototype, 'type', { enumerable: true });\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {Number} [options.code=0] The status code explaining why the\n * connection was closed\n * @param {String} [options.reason=''] A human-readable string explaining why\n * the connection was closed\n * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n * connection was cleanly closed\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kCode] = options.code === undefined ? 0 : options.code;\n this[kReason] = options.reason === undefined ? '' : options.reason;\n this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n }\n\n /**\n * @type {Number}\n */\n get code() {\n return this[kCode];\n }\n\n /**\n * @type {String}\n */\n get reason() {\n return this[kReason];\n }\n\n /**\n * @type {Boolean}\n */\n get wasClean() {\n return this[kWasClean];\n }\n}\n\nObject.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.error=null] The error that generated this event\n * @param {String} [options.message=''] The error message\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kError] = options.error === undefined ? null : options.error;\n this[kMessage] = options.message === undefined ? '' : options.message;\n }\n\n /**\n * @type {*}\n */\n get error() {\n return this[kError];\n }\n\n /**\n * @type {String}\n */\n get message() {\n return this[kMessage];\n }\n}\n\nObject.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });\nObject.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.data=null] The message content\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kData] = options.data === undefined ? null : options.data;\n }\n\n /**\n * @type {*}\n */\n get data() {\n return this[kData];\n }\n}\n\nObject.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {Function} listener The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, listener, options = {}) {\n let wrapper;\n\n if (type === 'message') {\n wrapper = function onMessage(data, isBinary) {\n const event = new MessageEvent('message', {\n data: isBinary ? data : data.toString()\n });\n\n event[kTarget] = this;\n listener.call(this, event);\n };\n } else if (type === 'close') {\n wrapper = function onClose(code, message) {\n const event = new CloseEvent('close', {\n code,\n reason: message.toString(),\n wasClean: this._closeFrameReceived && this._closeFrameSent\n });\n\n event[kTarget] = this;\n listener.call(this, event);\n };\n } else if (type === 'error') {\n wrapper = function onError(error) {\n const event = new ErrorEvent('error', {\n error,\n message: error.message\n });\n\n event[kTarget] = this;\n listener.call(this, event);\n };\n } else if (type === 'open') {\n wrapper = function onOpen() {\n const event = new Event('open');\n\n event[kTarget] = this;\n listener.call(this, event);\n };\n } else {\n return;\n }\n\n wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n wrapper[kListener] = listener;\n\n if (options.once) {\n this.once(type, wrapper);\n } else {\n this.on(type, wrapper);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {Function} handler The listener to remove\n * @public\n */\n removeEventListener(type, handler) {\n for (const listener of this.listeners(type)) {\n if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n this.removeListener(type, listener);\n break;\n }\n }\n }\n};\n\nmodule.exports = {\n CloseEvent,\n ErrorEvent,\n Event,\n EventTarget,\n MessageEvent\n};\n","'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let code = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes || code === 0x20 || code === 0x09) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Readable$\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { Readable } = require('stream');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n GUID,\n kForOnEventAttribute,\n kListener,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst {\n EventTarget: { addEventListener, removeEventListener }\n} = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst subprotocolRegex = /^[!#$%&'*+\\-.0-9A-Z^_`|a-z~]+$/;\nconst protocolVersions = [8, 13];\nconst closeTimeout = 30 * 1000;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = EMPTY_BUFFER;\n this._closeTimer = null;\n this._extensions = {};\n this._paused = false;\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (protocols === undefined) {\n protocols = [];\n } else if (!Array.isArray(protocols)) {\n if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = [];\n } else {\n protocols = [protocols];\n }\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._isServer = true;\n }\n }\n\n /**\n * This deviates from the WHATWG interface since ws doesn't support the\n * required default \"blob\" type (instead we define a custom \"nodebuffer\"\n * type).\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {Boolean}\n */\n get isPaused() {\n return this._paused;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onclose() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onerror() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onopen() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onmessage() {\n return null;\n }\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {(net.Socket|tls.Socket)} socket The network socket between the\n * server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Object} options Options object\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.maxPayload=0] The maximum allowed message size\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\n setSocket(socket, head, options) {\n const receiver = new Receiver({\n binaryType: this.binaryType,\n extensions: this._extensions,\n isServer: this._isServer,\n maxPayload: options.maxPayload,\n skipUTF8Validation: options.skipUTF8Validation\n });\n\n this._sender = new Sender(socket, this._extensions, options.generateMask);\n this._receiver = receiver;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n socket.setTimeout(0);\n socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {(String|Buffer)} [data] The reason why the connection is\n * closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n return abortHandshake(this, this._req, msg);\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (\n this._closeFrameSent &&\n (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n ) {\n this._socket.end();\n }\n\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n\n if (\n this._closeFrameReceived ||\n this._receiver._writableState.errorEmitted\n ) {\n this._socket.end();\n }\n });\n\n //\n // Specify a timeout for the closing handshake to complete.\n //\n this._closeTimer = setTimeout(\n this._socket.destroy.bind(this._socket),\n closeTimeout\n );\n }\n\n /**\n * Pause the socket.\n *\n * @public\n */\n pause() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = true;\n this._socket.pause();\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Resume the socket.\n *\n * @public\n */\n resume() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = false;\n if (!this._receiver._writableState.needDrain) this._socket.resume();\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n return abortHandshake(this, this._req, msg);\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'isPaused',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n enumerable: true,\n get() {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) return listener[kListener];\n }\n\n return null;\n },\n set(handler) {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) {\n this.removeListener(method, listener);\n break;\n }\n }\n\n if (typeof handler !== 'function') return;\n\n this.addEventListener(method, handler, {\n [kForOnEventAttribute]: true\n });\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {Array} protocols The subprotocols\n * @param {Object} [options] Connection options\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n protocolVersion: protocolVersions[1],\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n createConnection: undefined,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: undefined,\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n websocket._url = address.href;\n } else {\n try {\n parsedUrl = new URL(address);\n } catch (e) {\n throw new SyntaxError(`Invalid URL: ${address}`);\n }\n\n websocket._url = address;\n }\n\n const isSecure = parsedUrl.protocol === 'wss:';\n const isUnixSocket = parsedUrl.protocol === 'ws+unix:';\n let invalidURLMessage;\n\n if (parsedUrl.protocol !== 'ws:' && !isSecure && !isUnixSocket) {\n invalidURLMessage =\n 'The URL\\'s protocol must be one of \"ws:\", \"wss:\", or \"ws+unix:\"';\n } else if (isUnixSocket && !parsedUrl.pathname) {\n invalidURLMessage = \"The URL's pathname is empty\";\n } else if (parsedUrl.hash) {\n invalidURLMessage = 'The URL contains a fragment identifier';\n }\n\n if (invalidURLMessage) {\n const err = new SyntaxError(invalidURLMessage);\n\n if (websocket._redirects === 0) {\n throw err;\n } else {\n emitErrorAndClose(websocket, err);\n return;\n }\n }\n\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const get = isSecure ? https.get : http.get;\n const protocolSet = new Set();\n let perMessageDeflate;\n\n opts.createConnection = isSecure ? tlsConnect : netConnect;\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket',\n ...opts.headers\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate(\n opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},\n false,\n opts.maxPayload\n );\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols.length) {\n for (const protocol of protocols) {\n if (\n typeof protocol !== 'string' ||\n !subprotocolRegex.test(protocol) ||\n protocolSet.has(protocol)\n ) {\n throw new SyntaxError(\n 'An invalid or duplicated subprotocol was specified'\n );\n }\n\n protocolSet.add(protocol);\n }\n\n opts.headers['Sec-WebSocket-Protocol'] = protocols.join(',');\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isUnixSocket) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n if (opts.followRedirects) {\n if (websocket._redirects === 0) {\n websocket._originalHost = parsedUrl.host;\n\n const headers = options && options.headers;\n\n //\n // Shallow copy the user provided options so that headers can be changed\n // without mutating the original object.\n //\n options = { ...options, headers: {} };\n\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n options.headers[key.toLowerCase()] = value;\n }\n }\n } else if (parsedUrl.host !== websocket._originalHost) {\n //\n // Match curl 7.77.0 behavior and drop the following headers. These\n // headers are also dropped when following a redirect to a subdomain.\n //\n delete opts.headers.authorization;\n delete opts.headers.cookie;\n delete opts.headers.host;\n opts.auth = undefined;\n }\n\n //\n // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n // If the `Authorization` header is set, then there is nothing to do as it\n // will take precedence.\n //\n if (opts.auth && !options.headers.authorization) {\n options.headers.authorization =\n 'Basic ' + Buffer.from(opts.auth).toString('base64');\n }\n }\n\n let req = (websocket._req = get(opts));\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req.aborted) return;\n\n req = websocket._req = null;\n emitErrorAndClose(websocket, err);\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n let addr;\n\n try {\n addr = new URL(location, address);\n } catch (e) {\n const err = new SyntaxError(`Invalid URL: ${location}`);\n emitErrorAndClose(websocket, err);\n return;\n }\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the `upgrade`\n // event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n let protError;\n\n if (serverProt !== undefined) {\n if (!protocolSet.size) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (!protocolSet.has(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n } else if (protocolSet.size) {\n protError = 'Server sent no subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n if (secWebSocketExtensions !== undefined) {\n if (!perMessageDeflate) {\n const message =\n 'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n 'was requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n let extensions;\n\n try {\n extensions = parse(secWebSocketExtensions);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n const extensionNames = Object.keys(extensions);\n\n if (\n extensionNames.length !== 1 ||\n extensionNames[0] !== PerMessageDeflate.extensionName\n ) {\n const message = 'Server indicated an extension that was not requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n try {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n\n websocket.setSocket(socket, head, {\n generateMask: opts.generateMask,\n maxPayload: opts.maxPayload,\n skipUTF8Validation: opts.skipUTF8Validation\n });\n });\n}\n\n/**\n * Emit the `'error'` and `'close'` event.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n websocket._readyState = WebSocket.CLOSING;\n websocket.emit('error', err);\n websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n * abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n stream.once('abort', websocket.emitClose.bind(websocket));\n websocket.emit('error', err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n cb(err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {Buffer} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (websocket._socket[kWebSocket] === undefined) return;\n\n websocket._socket.removeListener('data', socketOnData);\n process.nextTick(resume, websocket._socket);\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n const websocket = this[kWebSocket];\n\n if (!websocket.isPaused) websocket._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket._socket[kWebSocket] !== undefined) {\n websocket._socket.removeListener('data', socketOnData);\n\n //\n // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n // https://github.com/websockets/ws/issues/1940.\n //\n process.nextTick(resume, websocket._socket);\n\n websocket.close(err[kStatusCode]);\n }\n\n websocket.emit('error', err);\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {Buffer|ArrayBuffer|Buffer[])} data The message\n * @param {Boolean} isBinary Specifies whether the message is binary or not\n * @private\n */\nfunction receiverOnMessage(data, isBinary) {\n this[kWebSocket].emit('message', data, isBinary);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n websocket.pong(data, !websocket._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n stream.resume();\n}\n\n/**\n * The listener of the `net.Socket` `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('data', socketOnData);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n let chunk;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written and `readable.read()`\n // will return `null`. If instead, the socket is paused, any possible buffered\n // data will be read as a single chunk.\n //\n if (\n !this._readableState.endEmitted &&\n !websocket._closeFrameReceived &&\n !websocket._receiver._writableState.errorEmitted &&\n (chunk = websocket._socket.read()) !== null\n ) {\n websocket._receiver.write(chunk);\n }\n\n websocket._receiver.end();\n\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the `net.Socket` `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the `net.Socket` `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the `net.Socket` `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n","'use strict';\n\nlet FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM, isTTY=true;\nif (typeof process !== 'undefined') {\n\t({ FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM } = process.env || {});\n\tisTTY = process.stdout && process.stdout.isTTY;\n}\n\nconst $ = {\n\tenabled: !NODE_DISABLE_COLORS && NO_COLOR == null && TERM !== 'dumb' && (\n\t\tFORCE_COLOR != null && FORCE_COLOR !== '0' || isTTY\n\t),\n\n\t// modifiers\n\treset: init(0, 0),\n\tbold: init(1, 22),\n\tdim: init(2, 22),\n\titalic: init(3, 23),\n\tunderline: init(4, 24),\n\tinverse: init(7, 27),\n\thidden: init(8, 28),\n\tstrikethrough: init(9, 29),\n\n\t// colors\n\tblack: init(30, 39),\n\tred: init(31, 39),\n\tgreen: init(32, 39),\n\tyellow: init(33, 39),\n\tblue: init(34, 39),\n\tmagenta: init(35, 39),\n\tcyan: init(36, 39),\n\twhite: init(37, 39),\n\tgray: init(90, 39),\n\tgrey: init(90, 39),\n\n\t// background colors\n\tbgBlack: init(40, 49),\n\tbgRed: init(41, 49),\n\tbgGreen: init(42, 49),\n\tbgYellow: init(43, 49),\n\tbgBlue: init(44, 49),\n\tbgMagenta: init(45, 49),\n\tbgCyan: init(46, 49),\n\tbgWhite: init(47, 49)\n};\n\nfunction run(arr, str) {\n\tlet i=0, tmp, beg='', end='';\n\tfor (; i < arr.length; i++) {\n\t\ttmp = arr[i];\n\t\tbeg += tmp.open;\n\t\tend += tmp.close;\n\t\tif (!!~str.indexOf(tmp.close)) {\n\t\t\tstr = str.replace(tmp.rgx, tmp.close + tmp.open);\n\t\t}\n\t}\n\treturn beg + str + end;\n}\n\nfunction chain(has, keys) {\n\tlet ctx = { has, keys };\n\n\tctx.reset = $.reset.bind(ctx);\n\tctx.bold = $.bold.bind(ctx);\n\tctx.dim = $.dim.bind(ctx);\n\tctx.italic = $.italic.bind(ctx);\n\tctx.underline = $.underline.bind(ctx);\n\tctx.inverse = $.inverse.bind(ctx);\n\tctx.hidden = $.hidden.bind(ctx);\n\tctx.strikethrough = $.strikethrough.bind(ctx);\n\n\tctx.black = $.black.bind(ctx);\n\tctx.red = $.red.bind(ctx);\n\tctx.green = $.green.bind(ctx);\n\tctx.yellow = $.yellow.bind(ctx);\n\tctx.blue = $.blue.bind(ctx);\n\tctx.magenta = $.magenta.bind(ctx);\n\tctx.cyan = $.cyan.bind(ctx);\n\tctx.white = $.white.bind(ctx);\n\tctx.gray = $.gray.bind(ctx);\n\tctx.grey = $.grey.bind(ctx);\n\n\tctx.bgBlack = $.bgBlack.bind(ctx);\n\tctx.bgRed = $.bgRed.bind(ctx);\n\tctx.bgGreen = $.bgGreen.bind(ctx);\n\tctx.bgYellow = $.bgYellow.bind(ctx);\n\tctx.bgBlue = $.bgBlue.bind(ctx);\n\tctx.bgMagenta = $.bgMagenta.bind(ctx);\n\tctx.bgCyan = $.bgCyan.bind(ctx);\n\tctx.bgWhite = $.bgWhite.bind(ctx);\n\n\treturn ctx;\n}\n\nfunction init(open, close) {\n\tlet blk = {\n\t\topen: `\\x1b[${open}m`,\n\t\tclose: `\\x1b[${close}m`,\n\t\trgx: new RegExp(`\\\\x1b\\\\[${close}m`, 'g')\n\t};\n\treturn function (txt) {\n\t\tif (this !== void 0 && this.has !== void 0) {\n\t\t\t!!~this.has.indexOf(open) || (this.has.push(open),this.keys.push(blk));\n\t\t\treturn txt === void 0 ? this : $.enabled ? run(this.keys, txt+'') : txt+'';\n\t\t}\n\t\treturn txt === void 0 ? chain([open], [blk]) : $.enabled ? run([blk], txt+'') : txt+'';\n\t};\n}\n\nexport default $;\n","import type { ClusterNode, ClusterOptions, RedisOptions } from 'ioredis'\nimport RedisClient from 'ioredis'\nimport Redlock from 'redlock'\nimport { v4 as uuid } from 'uuid'\nimport type {\n Document,\n Extension,\n afterLoadDocumentPayload,\n afterStoreDocumentPayload,\n onDisconnectPayload,\n onStoreDocumentPayload,\n onAwarenessUpdatePayload,\n onChangePayload,\n onConfigurePayload,\n beforeBroadcastStatelessPayload, Hocuspocus} from '@hocuspocus/server'\nimport {\n IncomingMessage,\n OutgoingMessage,\n MessageReceiver,\n Debugger,\n} from '@hocuspocus/server'\n\nexport type RedisInstance = RedisClient.Cluster | RedisClient.Redis\n\nexport interface Configuration {\n /**\n * Redis port\n */\n port: number,\n /**\n * Redis host\n */\n host: string,\n /**\n * Redis Cluster\n */\n nodes?: ClusterNode[],\n /**\n * Duplicate from an existed Redis instance\n */\n redis?: RedisInstance,\n /**\n * Redis instance creator\n */\n createClient?: () => RedisInstance,\n /**\n * Options passed directly to Redis constructor\n *\n * https://github.com/luin/ioredis/blob/master/API.md#new-redisport-host-options\n */\n options?: ClusterOptions | RedisOptions,\n /**\n * An unique instance name, required to filter messages in Redis.\n * If none is provided an unique id is generated.\n */\n identifier: string,\n /**\n * Namespace for Redis keys, if none is provided 'hocuspocus' is used\n */\n prefix: string,\n /**\n * The maximum time for the Redis lock in ms (in case it can’t be released).\n */\n lockTimeout: number,\n /**\n * A delay before onDisconnect is executed. This allows last minute updates'\n * sync messages to be received by the subscription before it's closed.\n */\n disconnectDelay: number,\n}\n\nexport class Redis implements Extension {\n /**\n * Make sure to give that extension a higher priority, so\n * the `onStoreDocument` hook is able to intercept the chain,\n * before documents are stored to the database.\n */\n priority = 1000\n\n configuration: Configuration = {\n port: 6379,\n host: '127.0.0.1',\n prefix: 'hocuspocus',\n identifier: `host-${uuid()}`,\n lockTimeout: 1000,\n disconnectDelay: 1000,\n }\n\n redisTransactionOrigin = '__hocuspocus__redis__origin__'\n\n pub: RedisInstance\n\n sub: RedisInstance\n\n instance!: Hocuspocus\n\n redlock: Redlock\n\n locks = new Map<string, Redlock.Lock>()\n\n logger: Debugger\n\n messagePrefix: Buffer\n\n public constructor(configuration: Partial<Configuration>) {\n this.configuration = {\n ...this.configuration,\n ...configuration,\n }\n\n // We’ll replace that in the onConfigure hook with the global instance.\n this.logger = new Debugger()\n\n // Create Redis instance\n const {\n port,\n host,\n options,\n nodes,\n redis,\n createClient,\n } = this.configuration\n\n if (typeof createClient === 'function') {\n this.pub = createClient()\n this.sub = createClient()\n } else if (redis) {\n this.pub = redis.duplicate()\n this.sub = redis.duplicate()\n } else if (nodes && nodes.length > 0) {\n this.pub = new RedisClient.Cluster(nodes, options)\n this.sub = new RedisClient.Cluster(nodes, options)\n } else {\n this.pub = new RedisClient(port, host, options)\n this.sub = new RedisClient(port, host, options)\n }\n this.sub.on('messageBuffer', this.handleIncomingMessage)\n\n this.redlock = new Redlock([this.pub], {\n retryCount: 0,\n })\n\n const identifierBuffer = Buffer.from(this.configuration.identifier, 'utf-8')\n this.messagePrefix = Buffer.concat([Buffer.from([identifierBuffer.length]), identifierBuffer])\n }\n\n async onConfigure({ instance }: onConfigurePayload) {\n this.logger = instance.debugger\n this.instance = instance\n }\n\n private getKey(documentName: string) {\n return `${this.configuration.prefix}:${documentName}`\n }\n\n private pubKey(documentName: string) {\n return this.getKey(documentName)\n }\n\n private subKey(documentName: string) {\n return this.getKey(documentName)\n }\n\n private lockKey(documentName: string) {\n return `${this.getKey(documentName)}:lock`\n }\n\n private encodeMessage(message: Uint8Array) {\n return Buffer.concat([this.messagePrefix, Buffer.from(message)])\n }\n\n private decodeMessage(buffer: Buffer) {\n const identifierLength = buffer[0]\n const identifier = buffer.toString('utf-8', 1, identifierLength + 1)\n\n return [identifier, buffer.slice(identifierLength + 1)]\n }\n\n /**\n * Once a document is loaded, subscribe to the channel in Redis.\n */\n public async afterLoadDocument({ documentName, document }: afterLoadDocumentPayload) {\n return new Promise((resolve, reject) => {\n // On document creation the node will connect to pub and sub channels\n // for the document.\n this.sub.subscribe(this.subKey(documentName), async error => {\n if (error) {\n reject(error)\n return\n }\n\n this.publishFirstSyncStep(documentName, document)\n this.requestAwarenessFromOtherInstances(documentName)\n\n resolve(undefined)\n })\n })\n }\n\n /**\n * Publish the first sync step through Redis.\n */\n private async publishFirstSyncStep(documentName: string, document: Document) {\n const syncMessage = new OutgoingMessage(documentName)\n .createSyncMessage()\n .writeFirstSyncStepFor(document)\n\n return this.pub.publishBuffer(this.pubKey(documentName), this.encodeMessage(syncMessage.toUint8Array()))\n }\n\n /**\n * Let’s ask Redis who is connected already.\n */\n private async requestAwarenessFromOtherInstances(documentName: string) {\n const awarenessMessage = new OutgoingMessage(documentName)\n .writeQueryAwareness()\n\n return this.pub.publishBuffer(\n this.pubKey(documentName),\n this.encodeMessage(awarenessMessage.toUint8Array()),\n )\n }\n\n /**\n * Before the document is stored, make sure to set a lock in Redis.\n * That’s meant to avoid conflicts with other instances trying to store the document.\n */\n async onStoreDocument({ documentName }: onStoreDocumentPayload) {\n // Attempt to acquire a lock and read lastReceivedTimestamp from Redis,\n // to avoid conflict with other instances storing the same document.\n\n return new Promise((resolve, reject) => {\n this.redlock.lock(this.lockKey(documentName), this.configuration.lockTimeout, async (error, lock) => {\n if (error || !lock) {\n // Expected behavior: Could not acquire lock, another instance locked it already.\n // No further `onStoreDocument` hooks will be executed.\n console.log('unable to acquire lock')\n reject()\n return\n }\n\n this.locks.set(this.lockKey(documentName), lock)\n\n resolve(undefined)\n })\n })\n }\n\n /**\n * Release the Redis lock, so other instances can store documents.\n */\n async afterStoreDocument({ documentName, socketId }: afterStoreDocumentPayload) {\n this.locks.get(this.lockKey(documentName))?.unlock()\n .catch(() => {\n // Not able to unlock Redis. The lock will expire after ${lockTimeout} ms.\n // console.error(`Not able to unlock Redis. The lock will expire after ${this.configuration.lockTimeout}ms.`)\n })\n .finally(() => {\n this.locks.delete(this.lockKey(documentName))\n })\n\n // if the change was initiated by a directConnection, we need to delay this hook to make sure sync can finish first.\n // for provider connections, this usually happens in the onDisconnect hook\n if (socketId === 'server') {\n await new Promise(resolve => {\n setTimeout(() => resolve(''), this.configuration.disconnectDelay)\n })\n }\n }\n\n /**\n * Handle awareness update messages received directly by this Hocuspocus instance.\n */\n async onAwarenessUpdate({\n documentName, awareness, added, updated, removed,\n }: onAwarenessUpdatePayload) {\n const changedClients = added.concat(updated, removed)\n const message = new OutgoingMessage(documentName)\n .createAwarenessUpdateMessage(awareness, changedClients)\n\n return this.pub.publishBuffer(\n this.pubKey(documentName),\n this.encodeMessage(message.toUint8Array()),\n )\n }\n\n /**\n * Handle incoming messages published on subscribed document channels.\n * Note that this will also include messages from ourselves as it is not possible\n * in Redis to filter these.\n */\n private handleIncomingMessage = async (channel: Buffer, data: Buffer) => {\n const [identifier, messageBuffer] = this.decodeMessage(data)\n\n if (identifier === this.configuration.identifier) {\n return\n }\n\n const message = new IncomingMessage(messageBuffer)\n const documentName = message.readVarString()\n message.writeVarString(documentName)\n\n const document = this.instance.documents.get(documentName)\n\n if (!document) {\n // What does this mean? Why are we subscribed to this document?\n this.logger.log(`Received message for unknown document ${documentName}`)\n return\n }\n\n new MessageReceiver(\n message,\n this.logger,\n this.redisTransactionOrigin,\n ).apply(document, undefined, reply => {\n return this.pub.publishBuffer(\n this.pubKey(document.name),\n this.encodeMessage(reply),\n )\n })\n }\n\n /**\n * if the ydoc changed, we'll need to inform other Hocuspocus servers about it.\n */\n public async onChange(data: onChangePayload): Promise<any> {\n if (data.transactionOrigin !== this.redisTransactionOrigin) {\n return this.publishFirstSyncStep(data.documentName, data.document)\n }\n }\n\n /**\n * Make sure to *not* listen for further changes, when there’s\n * no one connected anymore.\n */\n public onDisconnect = async ({ documentName }: onDisconnectPayload) => {\n const disconnect = () => {\n const document = this.instance.documents.get(documentName)\n\n // Do nothing, when other users are still connected to the document.\n if (!document || document.getConnectionsCount() > 0) {\n return\n }\n\n // Time to end the subscription on the document channel.\n this.sub.unsubscribe(this.subKey(documentName), (error: any) => {\n if (error) {\n console.error(error)\n }\n })\n\n this.instance.unloadDocument(document)\n }\n // Delay the disconnect procedure to allow last minute syncs to happen\n setTimeout(disconnect, this.configuration.disconnectDelay)\n }\n\n async beforeBroadcastStateless(data: beforeBroadcastStatelessPayload) {\n const message = new OutgoingMessage(data.documentName)\n .writeBroadcastStateless(data.payload)\n\n return this.pub.publishBuffer(\n this.pubKey(data.documentName),\n this.encodeMessage(message.toUint8Array()),\n )\n }\n\n /**\n * Kill the Redlock connection immediately.\n */\n async onDestroy() {\n await this.redlock.quit()\n this.pub.disconnect(false)\n this.sub.disconnect(false)\n }\n}\n"],"names":["MAX_SAFE_INTEGER","argsTag","funcTag","genTag","objectProto","hasOwnProperty","objectToString","propertyIsEnumerable","isArray","isArguments","isObject","isArrayLike","isArrayLikeObject","isLength","isFunction","isObjectLike","defaults","global","Symbol","flatten","require$$0","require$$1","require$$2","libModule","utils_1","require$$3","srcModule","debug","debug_1","lodash_1","promise","command","commands","calculateSlot","standard_as_callback_1","require$$4","promiseContainer_1","require$$5","command_1","PromiseContainer","require$$6","old","MaxRetriesPerRequestError_1","redis_errors_1","errors","Buffer","StringDecoder","SubscriptionSet_1","DataHandler_1","AbstractConnector_1","StandaloneConnector_1","net_1","SentinelIterator_1","this","FailoverDetector_1","SentinelConnector_1","require$$7","SentinelConnector","ScanStream_1","pMap","pMapModule","util_1","commander_1","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","ClusterAllFailedError_1","util","ConnectionPool_1","events_1","redis_1","ClusterSubscriber_1","DelayQueue_1","Deque","require$$15","require$$16","require$$17","es5Module","asyncModule","map","any","require$$18","require$$19","require$$20","require$$21","require$$22","require$$23","require$$24","require$$25","require$$26","require$$27","require$$28","require$$29","require$$30","require$$31","require$$32","crypto","Promise","EventEmitter","byteToHex","i","push","toString","slice","unsafeStringify","arr","offset","arguments","length","undefined","toLowerCase","getRandomValues","rnds8","Uint8Array","rng","bind","Error","randomUUID","v4","options","buf","native","rnds","random","math.floor","create","math.max","binary.BITS7","binary.BIT8","math.isNegativeZero","binary.BITS6","binary.BIT7","string.utf8TextEncoder","string.encodeUtf8","math.min","number.isInteger","math.abs","binary.BITS31","array.isArray","error.create","number.MAX_SAFE_INTEGER","string.utf8TextDecoder","encoding.writeVarUint","encoding.writeVarString","map.create","map.setIfUndefined","set.create","array.from","object.length","object.hasProperty","string.fromCamelCase","conditions.undefinedToNull","storage.varStorage","f.isOneOf","map.map","symbol.create","common.BOLD","pair.create","common.UNBOLD","common.BLUE","common.GREEN","common.GREY","common.RED","common.PURPLE","common.ORANGE","common.UNCOLOR","dom.mapToStyleString","env.supportsColor","common.computeNoColorLoggingArgs","array.appendTo","decoding.readVarUint","random.uint32","random.uuidv4","promise.create","decoding.readUint8","decoding.readVarString","decoding.readAny","buffer.copyUint8Array","decoding.readVarUint8Array","decoding.IntDiffOptRleDecoder","decoding.UintOptRleDecoder","decoding.RleDecoder","decoding.StringDecoder","encoding.createEncoder","encoding.toUint8Array","encoding.writeUint8","encoding.writeAny","encoding.writeVarUint8Array","error.unexpectedCase","encoding.IntDiffOptRleEncoder","encoding.UintOptRleEncoder","encoding.RleEncoder","encoding.StringEncoder","encoding.writeUint8Array","binary.BITS5","binary.BIT6","decoding.createDecoder","f.callAll","map.any","logging.print","logging.ORANGE","logging.BOLD","logging.UNBOLD","logging.RED","f.id","array.last","error.methodUnimplemented","iterator.iteratorFilter","iterator.iteratorMap","object.equalFlat","map.copy","object.isEmpty","object.assign","object.forEach","binary.BIT2","binary.BIT4","binary.BIT1","binary.BIT3","time.getUnixTime","f.equalityDeep","Y.encodeStateVector","Y.encodeStateAsUpdate","Y.applyUpdate","snapshot","Y.snapshot","Y.snapshotContainsUpdate","constants","BINARY_TYPES","EMPTY_BUFFER","alloc","GUID","kForOnEventAttribute","kListener","kStatusCode","kWebSocket","NOOP","concat","list","totalLength","target","allocUnsafe","set","_mask","source","mask","output","_unmask","buffer","toArrayBuffer","byteLength","byteOffset","toBuffer","data","readOnly","isBuffer","ArrayBuffer","from","isView","bufferUtil","require","bufferUtilModule","unmask","e","kDone","kRun","Limiter","constructor","concurrency","pending","Infinity","jobs","add","job","shift","limiter","zlib","TRAILER","kPerMessageDeflate","kTotalLength","kCallback","kBuffers","kError","zlibLimiter","PerMessageDeflate","isServer","maxPayload","_maxPayload","_options","_threshold","threshold","_isServer","_deflate","_inflate","params","concurrencyLimit","extensionName","offer","serverNoContextTakeover","server_no_context_takeover","clientNoContextTakeover","client_no_context_takeover","serverMaxWindowBits","server_max_window_bits","clientMaxWindowBits","client_max_window_bits","accept","configurations","normalizeParams","acceptAsServer","acceptAsClient","cleanup","close","callback","offers","opts","accepted","find","response","forEach","Object","keys","key","value","num","Number","isInteger","TypeError","decompress","fin","done","_decompress","err","result","compress","_compress","endpoint","windowBits","Z_DEFAULT_WINDOWBITS","createInflateRaw","zlibInflateOptions","on","inflateOnError","inflateOnData","write","flush","_readableState","endEmitted","reset","createDeflateRaw","zlibDeflateOptions","deflateOnData","Z_SYNC_FLUSH","permessageDeflate","chunk","RangeError","code","removeListener","tokenChars","isValidStatusCode","_isValidUTF8","len","isValidUTF8","validationModule","Writable","GET_INFO","GET_PAYLOAD_LENGTH_16","GET_PAYLOAD_LENGTH_64","GET_MASK","GET_DATA","INFLATING","Receiver","_binaryType","binaryType","_extensions","extensions","_skipUTF8Validation","skipUTF8Validation","_bufferedBytes","_buffers","_compressed","_payloadLength","_fragmented","_masked","_fin","_opcode","_totalPayloadLength","_messageLength","_fragments","_state","_loop","_write","encoding","cb","startLoop","consume","n","dst","getInfo","getPayloadLength16","getPayloadLength64","getMask","getData","error","compressed","haveLength","readUInt16BE","readUInt32BE","Math","pow","controlMessage","dataMessage","perMessageDeflate","er","messageLength","fragments","emit","end","receiver","ErrorCtor","message","prefix","statusCode","errorCode","captureStackTrace","randomFillSync","applyMask","kByteLength","maskBuffer","Sender","socket","generateMask","_generateMask","_maskBuffer","_socket","_firstFragment","_deflating","_queue","frame","merge","skipMasking","dataLength","payloadLength","opcode","rsv1","writeUInt16BE","writeUIntBE","enqueue","dispatch","sendFrame","ping","pong","send","binary","_","destroyed","dequeue","Reflect","apply","cork","uncork","sender","kCode","kData","kMessage","kReason","kTarget","kType","kWasClean","Event","type","defineProperty","prototype","enumerable","CloseEvent","reason","wasClean","ErrorEvent","MessageEvent","EventTarget","addEventListener","listener","wrapper","onMessage","isBinary","event","call","onClose","_closeFrameReceived","_closeFrameSent","onError","onOpen","once","removeEventListener","handler","listeners","eventTarget","dest","name","elem","parse","header","mustUnescape","isEscaping","inQuotes","paramName","start","charCodeAt","SyntaxError","replace","token","format","extension","Array","k","values","v","join","https","http","net","tls","randomBytes","createHash","URL","readyStates","subprotocolRegex","protocolVersions","closeTimeout","WebSocket","address","protocols","_closeCode","_closeMessage","_closeTimer","_paused","_protocol","_readyState","CONNECTING","_receiver","_sender","_bufferedAmount","_redirects","initAsClient","includes","bufferedAmount","_writableState","isPaused","onclose","onerror","onopen","onmessage","protocol","readyState","url","_url","setSocket","head","receiverOnConclude","receiverOnDrain","receiverOnError","receiverOnMessage","receiverOnPing","receiverOnPong","setTimeout","setNoDelay","unshift","socketOnClose","socketOnData","socketOnEnd","socketOnError","OPEN","emitClose","CLOSED","removeAllListeners","msg","abortHandshake","_req","CLOSING","errorEmitted","destroy","pause","sendAfterClose","resume","needDrain","terminate","indexOf","property","method","get","websocket","protocolVersion","followRedirects","maxRedirects","createConnection","socketPath","hostname","timeout","host","path","port","parsedUrl","href","isSecure","isUnixSocket","invalidURLMessage","pathname","hash","emitErrorAndClose","defaultPort","protocolSet","Set","tlsConnect","netConnect","startsWith","headers","Connection","Upgrade","search","handshakeTimeout","test","has","origin","Origin","username","password","auth","parts","split","_originalHost","entries","authorization","cookie","req","aborted","res","location","abort","addr","digest","update","serverProt","protError","size","secWebSocketExtensions","extensionNames","connect","servername","isIP","stream","setHeader","process","nextTick","receiverOnFinish","read","clearTimeout","finished","uuid","Redlock"],"mappings":"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AAO,MAAM,CAAC;AAChB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE;AAC1B,EAAE,OAAO,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,CAAC,CAAC;AACjE,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASK,aAAW,CAAC,KAAK,EAAE;AAC5B;AACA,EAAE,OAAOG,mBAAiB,CAAC,KAAK,CAAC,IAAIP,gBAAc,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;AACzE,KAAK,CAACE,sBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAID,gBAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAIL,SAAO,CAAC,CAAC;AAC3F,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAIO,SAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,aAAW,CAAC,KAAK,EAAE;AAC5B,EAAE,OAAO,KAAK,IAAI,IAAI,IAAIE,UAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAACC,YAAU,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASF,mBAAiB,CAAC,KAAK,EAAE;AAClC,EAAE,OAAOG,cAAY,CAAC,KAAK,CAAC,IAAIJ,aAAW,CAAC,KAAK,CAAC,CAAC;AACnD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,YAAU,CAAC,KAAK,EAAE;AAC3B;AACA;AACA,EAAE,IAAI,GAAG,GAAGJ,UAAQ,CAAC,KAAK,CAAC,GAAGJ,gBAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAC9D,EAAE,OAAO,GAAG,IAAIJ,SAAO,IAAI,GAAG,IAAIC,QAAM,CAAC;AACzC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASU,UAAQ,CAAC,KAAK,EAAE;AACzB,EAAE,OAAO,OAAO,KAAK,IAAI,QAAQ;AACjC,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,IAAIb,kBAAgB,CAAC;AAC9D,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASU,UAAQ,CAAC,KAAK,EAAE;AACzB,EAAE,IAAI,IAAI,GAAG,OAAO,KAAK,CAAC;AAC1B,EAAE,OAAO,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,UAAU,CAAC,CAAC;AAC7D,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASK,cAAY,CAAC,KAAK,EAAE;AAC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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAIO,SAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,aAAW,CAAC,KAAK,EAAE;AAC5B,EAAE,OAAO,KAAK,IAAI,IAAI,IAAIE,UAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAACC,YAAU,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASF,mBAAiB,CAAC,KAAK,EAAE;AAClC,EAAE,OAAOG,cAAY,CAAC,KAAK,CAAC,IAAIJ,aAAW,CAAC,KAAK,CAAC,CAAC;AACnD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,YAAU,CAAC,KAAK,EAAE;AAC3B;AACA;AACA,EAAE,IAAI,GAAG,GAAGJ,UAAQ,CAAC,KAAK,CAAC,GAAGJ,gBAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAC9D,EAAE,OAAO,GAAG,IAAIJ,SAAO,IAAI,GAAG,IAAIC,QAAM,CAAC;AACzC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASU,UAAQ,CAAC,KAAK,EAAE;AACzB,EAAE,OAAO,OAAO,KAAK,IAAI,QAAQ;AACjC,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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AM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;AAChE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;AAChE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;AAChE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;AAChE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;AAChE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;AAChE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;AAChE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;AAChE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;AAChE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;AAChE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;AAChE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;AAChE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;AAChE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;AAChE,EAA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,iBAAA,EAAwB,CAAC;CAC9C,MAAM,YAAY,GAAGC,YAAwB,CAAC;CAC9C,MAAM,QAAQ,GAAGC,aAAyB,CAAC;CAC3C,MAAM,gBAAgB,GAAGC,gBAA8B,CAAC;CACxD,MAAM,aAAa,GAAGC,WAAyB,CAAC;CAChD,MAAM,cAAc,GAAGC,YAAyB,CAAC;CACjD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAe,KAAA,CAAA,OAAA,GAAG,KAAK,CAAC;AACxB,CAAA,SAAS,KAAK,GAAG;AACjB,KAAI,IAAI,EAAE,IAAI,YAAY,KAAK,CAAC,EAAE;AAClC,SAAQ,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AACpJ,SAAQ,OAAO,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;MAC9D;AACL,KAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM0B,YAAU,GAAG,CACjB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAAA;AAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAAA;AAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAAA;AAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAAA;AAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAAA;AAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAAA;AAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAA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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,133,134,135,136,137,138,139,140,141,142,143]}
|