From 7cf13d6afce1f0c421ad669104b10494db32a785 Mon Sep 17 00:00:00 2001 From: Piotr Kaminski Date: Mon, 8 Jun 2026 23:58:02 -0700 Subject: [PATCH] Preserve instrumented Vue accessors when wrapping properties. Typically we'd wrap all properties before Vue instruments a model. However, if the model gets passed into a call while the constructor is still running, and the call happens to add it to previously- instrumented object, then Vue will instrument the model early. We must then be very careful not to overwrite Vue's accessors with our own wrappers or the property will stop being reactive! --- dist/firetruss.es2015.js | 25 ++++++++++++-- dist/firetruss.es2015.js.map | 2 +- dist/firetruss.umd.js | 25 ++++++++++++-- dist/firetruss.umd.js.map | 2 +- dist/firetruss.umd.min.js | 2 +- dist/firetruss.umd.min.js.map | 2 +- package.json | 2 +- src/Modeler.js | 7 ++-- src/Modeler.test.js | 64 +++++++++++++++++++++++++++++++++++ src/Tree.js | 18 ++++++++-- 10 files changed, 134 insertions(+), 15 deletions(-) diff --git a/dist/firetruss.es2015.js b/dist/firetruss.es2015.js index ef197f5..db43cbe 100644 --- a/dist/firetruss.es2015.js +++ b/dist/firetruss.es2015.js @@ -414,6 +414,7 @@ class Bridge { } _receive(event) { + if (this._dead) return; if (this._suspended) { this._inboundMessages = this._inboundMessages.concat(event.data); } else { @@ -2094,8 +2095,12 @@ class Modeler { _wrapProperties(object) { _.forEach(object, (value, key) => { const valueKey = '$_' + key; + const descriptor = Object.getOwnPropertyDescriptor(object, key); + const valueDescriptor = descriptor.get && descriptor.set ? { + get: descriptor.get, set: descriptor.set, configurable: true + } : {value, writable: true}; Object.defineProperties(object, { - [valueKey]: {value, writable: true}, + [valueKey]: valueDescriptor, [key]: { get: () => object[valueKey], set: arg => {object[valueKey] = arg; angularProxy.digest();}, @@ -2217,7 +2222,6 @@ class Modeler { } isLocal(path, value) { - // eslint-disable-next-line no-shadow const mount = this._getMount(path, false, mount => mount.local); if (mount && mount.local) return true; if (this._hasLocalProperties(mount, value)) { @@ -3148,10 +3152,25 @@ class Tree { const object = this._modeler.createObject(path, properties); this._modeler.emitLifecycleHook(object, 'beforeCreate'); - Object.defineProperties(object, properties); + this._defineObjectProperties(object, properties); return object; } + _defineObjectProperties(object, properties) { + const observer = object.__ob__; + Object.defineProperties(object, properties); + if (!observer) return; + + let addedReactiveProperties = false; + for (const name of _.keys(properties)) { + const descriptor = Object.getOwnPropertyDescriptor(object, name); + if (!descriptor.configurable || !descriptor.enumerable) continue; + Vue.util.defineReactive(object, name); + addedReactiveProperties = true; + } + if (addedReactiveProperties) observer.dep.notify(); + } + // To be called on the result of _createObject after it's been inserted into the _vue hierarchy // and Vue has had a chance to initialize it. _fixObject(object) { diff --git a/dist/firetruss.es2015.js.map b/dist/firetruss.es2015.js.map index 02ad11a..e9d5cad 100644 --- a/dist/firetruss.es2015.js.map +++ b/dist/firetruss.es2015.js.map @@ -1 +1 @@ -{"version":3,"file":"firetruss.es2015.js","sources":["../src/angularCompatibility.js","../src/utils/LruCache.js","../src/utils/paths.js","../src/Bridge.js","../src/Reference.js","../src/utils/utils.js","../src/utils/stats.js","../src/Connector.js","../src/utils/promises.js","../src/Dispatcher.js","../src/KeyGenerator.js","../src/MetaTree.js","../src/Modeler.js","../src/Coupler.js","../src/Tree.js","../src/Truss.js"],"sourcesContent":["import _ from 'lodash';\nimport Vue from 'vue';\n\n\nlet vue;\nlet lastDigestRequest = 0, digestInProgress = false;\nconst bareDigest = function() {\n if (vue.digestRequest > lastDigestRequest) return;\n vue.digestRequest = lastDigestRequest + 1;\n};\n\nconst angularProxy = {\n active: typeof window !== 'undefined' && window.angular\n};\n\nif (angularProxy.active) {\n initAngular();\n} else {\n _.forEach(['digest', 'watch', 'defineModule', 'debounceDigest'], method => {\n angularProxy[method] = _.noop;\n });\n}\n\nfunction initAngular() {\n const module = window.angular.module('firetruss', []);\n angularProxy.digest = bareDigest;\n angularProxy.watch = function() {throw new Error('Angular watch proxy not yet initialized');};\n angularProxy.defineModule = function(Truss) {\n module.constant('Truss', Truss);\n };\n angularProxy.debounceDigest = function(wait) {\n if (wait) {\n const debouncedDigest = _.debounce(bareDigest, wait);\n angularProxy.digest = function() {\n if (vue.digestRequest > lastDigestRequest) return;\n if (digestInProgress) bareDigest(); else debouncedDigest();\n };\n } else {\n angularProxy.digest = bareDigest;\n }\n };\n\n module.config(['$provide', function($provide) {\n $provide.decorator('$rootScope', ['$delegate', '$exceptionHandler',\n function($delegate, $exceptionHandler) {\n const rootScope = $delegate;\n angularProxy.watch = rootScope.$watch.bind(rootScope);\n const proto = Object.getPrototypeOf(rootScope);\n const angularDigest = proto.$digest;\n proto.$digest = bareDigest;\n proto.$digest.original = angularDigest;\n vue = new Vue({data: {digestRequest: 0}});\n vue.$watch(() => vue.digestRequest, () => {\n if (vue.digestRequest > lastDigestRequest) {\n // Make sure we execute the digest outside the Vue task queue, because otherwise if the\n // client replaced Promise with angular.$q all Truss.nextTick().then() functions will be\n // executed inside the Angular digest and hence inside the Vue task queue. But\n // Truss.nextTick() is used precisely to avoid that. Note that it's OK to use\n // Vue.nextTick() here because even though it will schedule a flush via Promise.then()\n // it only uses the native Promise, before it could've been monkey-patched by the app.\n Vue.nextTick(() => {\n if (vue.digestRequest <= lastDigestRequest) return;\n digestInProgress = true;\n rootScope.$digest.original.call(rootScope);\n lastDigestRequest = vue.digestRequest = vue.digestRequest + 1;\n });\n } else {\n digestInProgress = false;\n }\n });\n const watcher = _.last(vue._watchers || vue._scope.effects);\n watcher.id = Infinity; // make sure watcher is scheduled last\n patchRenderWatcherGet(Object.getPrototypeOf(watcher));\n return rootScope;\n }\n ]);\n }]);\n}\n\n// This is a kludge that catches errors that get through render watchers and end up killing the\n// entire Vue event loop (e.g., errors raised in transition callbacks). The state of the DOM may\n// not be consistent after such an error is caught, but the global error handler should stop the\n// world anyway. May be related to https://github.com/vuejs/vue/issues/7653.\nfunction patchRenderWatcherGet(prototype) {\n const originalGet = prototype.get;\n prototype.get = function get() {\n try {\n return originalGet.call(this);\n } catch (e) {\n if (this.vm._watcher === this && Vue.config.errorHandler) {\n Vue.config.errorHandler(e, this.vm, 'uncaught render error');\n } else {\n throw e;\n }\n }\n };\n}\n\nexport default angularProxy;\n","import _ from 'lodash';\n\n\nclass LruCacheItem {\n constructor(key, value) {\n this.key = key;\n this.value = value;\n this.touch();\n }\n\n touch() {\n this.timestamp = Date.now();\n }\n}\n\n\nexport default class LruCache {\n constructor(maxSize, pruningSize) {\n this._items = Object.create(null);\n this._size = 0;\n this._maxSize = maxSize;\n this._pruningSize = pruningSize || Math.ceil(maxSize * 0.10);\n }\n\n has(key) {\n return Boolean(this._items[key]);\n }\n\n get(key) {\n const item = this._items[key];\n if (!item) return;\n item.touch();\n return item.value;\n }\n\n set(key, value) {\n const item = this._items[key];\n if (item) {\n item.value = value;\n } else {\n if (this._size >= this._maxSize) this._prune();\n this._items[key] = new LruCacheItem(key, value);\n this._size += 1;\n }\n }\n\n delete(key) {\n const item = this._items[key];\n if (!item) return;\n delete this._items[key];\n this._size -= 1;\n }\n\n _prune() {\n const itemsToPrune =\n _(this._items).toArray().sortBy('timestamp').take(this._pruningSize).value();\n for (const item of itemsToPrune) this.delete(item.key);\n }\n}\n","import LruCache from './LruCache.js';\nimport _ from 'lodash';\n\n\nconst pathSegments = new LruCache(1000);\nconst pathMatchers = {};\nconst maxNumPathMatchers = 1000;\n\n\nexport function escapeKey(key) {\n if (!key) return key;\n // eslint-disable-next-line no-control-regex\n return key.toString().replace(/[\\x00-\\x1f\\\\.$#[\\]\\x7f/]/g, char =>\n '\\\\' + _.padStart(char.charCodeAt(0).toString(16), 2, '0')\n );\n}\n\nexport function unescapeKey(key) {\n if (!key) return key;\n return key.toString().replace(/\\\\[0-9a-f]{2}/gi, code =>\n String.fromCharCode(parseInt(code.slice(1), 16))\n );\n}\n\nexport function escapeKeys(object) {\n // isExtensible check avoids trying to escape references to Firetruss internals.\n if (!(_.isObject(object) && Object.isExtensible(object))) return object;\n let result = object;\n for (const key in object) {\n if (!Object.hasOwn(object, key)) continue;\n const value = object[key];\n const escapedKey = escapeKey(key);\n const escapedValue = escapeKeys(value);\n if (escapedKey !== key || escapedValue !== value) {\n if (result === object) result = _.clone(object);\n result[escapedKey] = escapedValue;\n if (result[key] === value) delete result[key];\n }\n }\n return result;\n}\n\nexport function joinPath() {\n const segments = [];\n for (let segment of arguments) {\n if (!_.isString(segment)) segment = '' + segment;\n if (segment.charAt(0) === '/') segments.splice(0, segments.length);\n segments.push(segment);\n }\n if (segments[0] === '/') segments[0] = '';\n return segments.join('/');\n}\n\nexport function splitPath(path, leaveSegmentsEscaped) {\n const key = (leaveSegmentsEscaped ? 'esc:' : '') + path;\n let segments = pathSegments.get(key);\n if (!segments) {\n segments = path.split('/');\n if (!leaveSegmentsEscaped) segments = _.map(segments, unescapeKey);\n pathSegments.set(key, segments);\n }\n return segments;\n}\n\n\nclass PathMatcher {\n constructor(pattern) {\n this.variables = [];\n const prefixMatch = _.endsWith(pattern, '/$*');\n if (prefixMatch) pattern = pattern.slice(0, -3);\n const pathTemplate = pattern.replace(/\\/\\$[^/]*/g, match => {\n if (match.length > 1) this.variables.push(match.slice(1));\n return '\\u0001';\n });\n Object.freeze(this.variables);\n if (/[.$#[\\]]|\\\\(?![0-9a-f][0-9a-f])/i.test(pathTemplate)) {\n throw new Error('Path pattern has unescaped keys: ' + pattern);\n }\n this._regex = new RegExp(\n // eslint-disable-next-line no-control-regex\n '^' + pathTemplate.replace(/\\u0001/g, '/([^/]+)') + (prefixMatch ? '($|/)' : '$'));\n }\n\n match(path) {\n this._regex.lastIndex = 0;\n const match = this._regex.exec(path);\n if (!match) return;\n const bindings = {};\n for (let i = 0; i < this.variables.length; i++) {\n bindings[this.variables[i]] = unescapeKey(match[i + 1]);\n }\n return bindings;\n }\n\n test(path) {\n return this._regex.test(path);\n }\n\n toString() {\n return this._regex.toString();\n }\n}\n\nexport function makePathMatcher(pattern) {\n let matcher = pathMatchers[pattern];\n if (!matcher) {\n matcher = new PathMatcher(pattern);\n // Minimal pseudo-LRU behavior, since we don't expect to actually fill up the cache.\n if (_.size(pathMatchers) === maxNumPathMatchers) delete pathMatchers[_.keys(pathMatchers)[0]];\n pathMatchers[pattern] = matcher;\n }\n return matcher;\n}\n","import {unescapeKey} from './utils/paths.js';\nimport _ from 'lodash';\n\nconst MIN_WORKER_VERSION = '4.0.0';\n\n\nclass Snapshot {\n constructor({path, value, exists, writeSerial}) {\n this._path = path;\n this._value = value;\n this._exists = value === undefined ? exists || false : value !== null;\n this._writeSerial = writeSerial;\n }\n\n get path() {\n return this._path;\n }\n\n get exists() {\n return this._exists;\n }\n\n get value() {\n if (this._value === undefined) throw new Error('Value omitted from snapshot');\n return this._value;\n }\n\n get key() {\n if (this._key === undefined) this._key = unescapeKey(this._path.replace(/.*\\//, ''));\n return this._key;\n }\n\n get writeSerial() {\n return this._writeSerial;\n }\n}\n\n\nexport default class Bridge {\n constructor(webWorker) {\n this._idCounter = 0;\n this._deferreds = {};\n this._suspended = false;\n this._servers = {};\n this._callbacks = {};\n this._log = _.noop;\n this._inboundMessages = [];\n this._outboundMessages = [];\n this._flushMessageQueue = this._flushMessageQueue.bind(this);\n this._port = webWorker.port || webWorker;\n this._shared = !!webWorker.port;\n this._dead = undefined;\n Object.seal(this);\n this._port.onmessage = this._receive.bind(this);\n }\n\n init(lockName, config) {\n const items = [];\n try {\n const storage = window.localStorage || window.sessionStorage;\n if (!storage) throw new Error('localStorage and sessionStorage not available');\n for (let i = 0; i < storage.length; i++) {\n const key = storage.key(i);\n items.push({key, value: storage.getItem(key)});\n }\n } catch {\n // Some browsers don't like us accessing local storage -- nothing we can do.\n }\n return this._send({msg: 'init', storage: items, config, lockName}).then(response => {\n const workerVersion = response.version.match(/^(\\d+)\\.(\\d+)\\.(\\d+)(-.*)?$/);\n if (workerVersion) {\n const minVersion = MIN_WORKER_VERSION.match(/^(\\d+)\\.(\\d+)\\.(\\d+)(-.*)?$/);\n // Major version must match precisely, minor and patch must be greater than or equal.\n const sufficient = workerVersion[1] === minVersion[1] && (\n workerVersion[2] > minVersion[2] ||\n workerVersion[2] === minVersion[2] && workerVersion[3] >= minVersion[3]\n );\n if (!sufficient) {\n return Promise.reject(new Error(\n `Incompatible Firetruss worker version: ${response.version} ` +\n `(${MIN_WORKER_VERSION} or better required)`\n ));\n }\n }\n if (response.livenessLockName) {\n navigator.locks.request(response.livenessLockName, () => {\n this.crash({error: {\n name: 'Error', message: 'worker terminated', extra: {shared: this._shared}\n }});\n });\n }\n return response;\n });\n }\n\n suspend(suspended) {\n if (suspended === undefined) suspended = true;\n if (this._suspended === suspended) return;\n this._suspended = suspended;\n if (!suspended) {\n this._receiveMessages(this._inboundMessages);\n this._inboundMessages = [];\n if (this._outboundMessages.length) Promise.resolve().then(this._flushMessageQueue);\n }\n }\n\n enableLogging(fn) {\n if (fn) {\n if (fn === true) {\n fn = console.log.bind(console);\n this._send({msg: 'enableFirebaseLogging', value: true});\n }\n this._log = fn;\n } else {\n this._send({msg: 'enableFirebaseLogging', value: false});\n this._log = _.noop;\n }\n }\n\n _send(message) {\n message.id = ++this._idCounter;\n let promise;\n if (this._dead) {\n return Promise.reject(this._dead);\n } else if (message.oneWay) {\n promise = Promise.resolve();\n } else {\n promise = new Promise((resolve, reject) => {\n this._deferreds[message.id] = {resolve, reject};\n });\n const deferred = this._deferreds[message.id];\n deferred.promise = promise;\n deferred.params = message;\n }\n if (!this._outboundMessages.length && !this._suspended) {\n Promise.resolve().then(this._flushMessageQueue);\n }\n this._log('send:', message);\n this._outboundMessages.push(message);\n return promise;\n }\n\n _flushMessageQueue() {\n this._log('flush:', this._outboundMessages.length, 'messages');\n try {\n this._port.postMessage(this._outboundMessages);\n this._outboundMessages = [];\n } catch (e) {\n this._log('flush failed:', e);\n e.extra = {messages: this._outboundMessages};\n throw e;\n }\n }\n\n _receive(event) {\n if (this._suspended) {\n this._inboundMessages = this._inboundMessages.concat(event.data);\n } else {\n this._receiveMessages(event.data);\n }\n }\n\n _receiveMessages(messages) {\n for (const message of messages) {\n this._log('recv:', message);\n const fn = this[message.msg];\n if (!_.isFunction(fn)) throw new Error('Unknown message: ' + message.msg);\n fn.call(this, message);\n }\n }\n\n bindExposedFunction(name) {\n return (function() {\n return this._send({msg: 'call', name, args: Array.prototype.slice.call(arguments)});\n }).bind(this);\n }\n\n resolve(message) {\n const deferred = this._deferreds[message.id];\n if (!deferred) throw new Error('Received resolution to inexistent Firebase call');\n delete this._deferreds[message.id];\n deferred.resolve(message.result);\n }\n\n reject(message) {\n const deferred = this._deferreds[message.id];\n if (!deferred) throw new Error('Received rejection of inexistent Firebase call');\n delete this._deferreds[message.id];\n deferred.reject(errorFromJson(message.error, deferred.params));\n }\n\n crash(message) {\n let details = `Internal worker error: ${message.error.name}: ${message.error.message}`;\n if (message.error.cause) details += ` (caused by ${message.error.cause})`;\n this._dead = new Error(details);\n if (message.error.extra) this._dead.extra = message.error.extra;\n _.forEach(this._deferreds, ({reject}) => {reject(this._dead);});\n this._deferreds = {};\n throw this._dead;\n }\n\n updateLocalStorage({items}) {\n try {\n const storage = window.localStorage || window.sessionStorage;\n for (const item of items) {\n if (item.value === null) {\n storage.removeItem(item.key);\n } else {\n storage.setItem(item.key, item.value);\n }\n }\n } catch {\n // If we're denied access, there's nothing we can do.\n }\n }\n\n trackServer(rootUrl) {\n if (Object.hasOwn(this._servers, rootUrl)) return Promise.resolve();\n const server = this._servers[rootUrl] = {authListeners: []};\n const authCallbackId = this._registerCallback(this._authCallback.bind(this, server));\n this._send({msg: 'onAuth', url: rootUrl, callbackId: authCallbackId});\n }\n\n _authCallback(server, auth) {\n server.auth = auth;\n for (const listener of server.authListeners) listener(auth);\n }\n\n onAuth(rootUrl, callback, context) {\n const listener = callback.bind(context);\n listener.callback = callback;\n listener.context = context;\n this._servers[rootUrl].authListeners.push(listener);\n listener(this.getAuth(rootUrl));\n }\n\n offAuth(rootUrl, callback, context) {\n const authListeners = this._servers[rootUrl].authListeners;\n for (let i = 0; i < authListeners.length; i++) {\n const listener = authListeners[i];\n if (listener.callback === callback && listener.context === context) {\n authListeners.splice(i, 1);\n break;\n }\n }\n }\n\n getAuth(rootUrl) {\n return this._servers[rootUrl].auth;\n }\n\n authWithCustomToken(url, authToken) {\n return this._send({msg: 'authWithCustomToken', url, authToken});\n }\n\n authAnonymously(url) {\n return this._send({msg: 'authAnonymously', url});\n }\n\n unauth(url) {\n return this._send({msg: 'unauth', url});\n }\n\n set(url, value, writeSerial) {return this._send({msg: 'set', url, value, writeSerial});}\n update(url, value, writeSerial) {return this._send({msg: 'update', url, value, writeSerial});}\n\n once(url, writeSerial) {\n return this._send({msg: 'once', url, writeSerial}).then(snapshot => new Snapshot(snapshot));\n }\n\n on(listenerKey, url, spec, eventType, snapshotCallback, cancelCallback, context, options) {\n const handle = {\n listenerKey, eventType, snapshotCallback, cancelCallback, context,\n params: {msg: 'on', listenerKey, url, spec, eventType, options}\n };\n const callback = this._onCallback.bind(this, handle);\n this._registerCallback(callback, handle);\n // Keep multiple IDs to allow the same snapshotCallback to be reused.\n snapshotCallback.__callbackIds = snapshotCallback.__callbackIds || [];\n snapshotCallback.__callbackIds.push(handle.id);\n this._send({\n msg: 'on', listenerKey, url, spec, eventType, callbackId: handle.id, options\n }).catch(error => {\n callback(error);\n });\n }\n\n off(listenerKey, url, spec, eventType, snapshotCallback, context) {\n const idsToDeregister = [];\n let callbackId;\n if (snapshotCallback) {\n callbackId = this._findAndRemoveCallbackId(\n snapshotCallback, handle => _.isMatch(handle, {listenerKey, eventType, context})\n );\n if (!callbackId) return Promise.resolve(); // no-op, never registered or already deregistered\n idsToDeregister.push(callbackId);\n } else {\n for (const id of _.keys(this._callbacks)) {\n const handle = this._callbacks[id];\n if (handle.listenerKey === listenerKey && (!eventType || handle.eventType === eventType)) {\n idsToDeregister.push(id);\n }\n }\n }\n // Nullify callbacks first, then deregister after off() is complete. We don't want any\n // callbacks in flight from the worker to be invoked while the off() is processing, but we don't\n // want them to throw an exception either.\n for (const id of idsToDeregister) this._nullifyCallback(id);\n return this._send({msg: 'off', listenerKey, url, spec, eventType, callbackId}).then(() => {\n for (const id of idsToDeregister) this._deregisterCallback(id);\n });\n }\n\n _onCallback(handle, error, snapshotJson) {\n if (error) {\n this._deregisterCallback(handle.id);\n const e = errorFromJson(error, handle.params);\n if (handle.cancelCallback) {\n handle.cancelCallback.call(handle.context, e);\n } else {\n console.error(e);\n }\n } else {\n handle.snapshotCallback.call(handle.context, new Snapshot(snapshotJson));\n }\n }\n\n transaction(url, oldValue, relativeUpdates, writeSerial) {\n return this._send(\n {msg: 'transaction', url, oldValue, relativeUpdates, writeSerial}\n ).then(result => {\n if (result.snapshots) {\n result.snapshots = _.map(result.snapshots, jsonSnapshot => new Snapshot(jsonSnapshot));\n }\n return result;\n });\n }\n\n onDisconnect(url, method, value) {\n return this._send({msg: 'onDisconnect', url, method, value});\n }\n\n bounceConnection() {\n return this._send({msg: 'bounceConnection'});\n }\n\n callback({id, args}) {\n const handle = this._callbacks[id];\n if (!handle) throw new Error('Unregistered callback: ' + id);\n handle.callback.apply(null, args);\n }\n\n _registerCallback(callback, handle) {\n handle = handle || {};\n handle.callback = callback;\n handle.id = `cb${++this._idCounter}`;\n this._callbacks[handle.id] = handle;\n return handle.id;\n }\n\n _nullifyCallback(id) {\n this._callbacks[id].callback = _.noop;\n }\n\n _deregisterCallback(id) {\n delete this._callbacks[id];\n }\n\n _findAndRemoveCallbackId(callback, predicate) {\n if (!callback.__callbackIds) return;\n let i = 0;\n while (i < callback.__callbackIds.length) {\n const id = callback.__callbackIds[i];\n const handle = this._callbacks[id];\n if (!handle) {\n callback.__callbackIds.splice(i, 1);\n continue;\n }\n if (predicate(handle)) {\n callback.__callbackIds.splice(i, 1);\n return id;\n }\n i += 1;\n }\n }\n}\n\n\nfunction errorFromJson(json, params) {\n if (!json || _.isError(json)) return json;\n const error = new Error(json.message);\n try {\n error.params = params;\n for (const propertyName in json) {\n if (propertyName === 'message' || !Object.hasOwn(json, propertyName)) continue;\n try {\n error[propertyName] = json[propertyName];\n } catch {\n error.extra = error.extra || {};\n error.extra[propertyName] = json[propertyName];\n }\n }\n } catch (e) {\n if (!/object is not extensible/.test(e.message)) throw e;\n }\n return error;\n}\n","import {escapeKey, unescapeKey, makePathMatcher} from './utils/paths.js';\n\nimport _ from 'lodash';\n\n/* eslint-disable no-use-before-define */\n\nconst EMPTY_ANNOTATIONS = {};\nObject.freeze(EMPTY_ANNOTATIONS);\n\n\nexport class Handle {\n constructor(tree, path, annotations) {\n this._tree = tree;\n this._path = path.replace(/^\\/*/, '/').replace(/\\/$/, '') || '/';\n if (annotations) {\n this._annotations = annotations;\n Object.freeze(annotations);\n }\n }\n\n get $ref() {return this;}\n get key() {\n if (!this._key) this._key = unescapeKey(this._path.replace(/.*\\//, ''));\n return this._key;\n }\n\n get path() {return this._path;}\n get _pathPrefix() {return this._path === '/' ? '' : this._path;}\n get parent() {\n return new Reference(this._tree, this._path.replace(/\\/[^/]*$/, ''), this._annotations);\n }\n\n get annotations() {\n return this._annotations || EMPTY_ANNOTATIONS;\n }\n\n child() {\n if (!arguments.length) return this;\n const segments = [];\n for (const key of arguments) {\n if (_.isNil(key)) return;\n segments.push(escapeKey(key));\n }\n return new Reference(\n this._tree, `${this._pathPrefix}/${segments.join('/')}`,\n this._annotations\n );\n }\n\n children() {\n if (!arguments.length) return this;\n const escapedKeys = [];\n for (let i = 0; i < arguments.length; i++) {\n const arg = arguments[i];\n if (_.isArray(arg)) {\n const mapping = {};\n const subPath = this._pathPrefix + (escapedKeys.length ? `/${escapedKeys.join('/')}` : '');\n const rest = _.slice(arguments, i + 1);\n for (const key of arg) {\n const subRef =\n new Reference(this._tree, `${subPath}/${escapeKey(key)}`, this._annotations);\n const subMapping = subRef.children.apply(subRef, rest);\n if (subMapping) mapping[key] = subMapping;\n }\n return mapping;\n }\n if (_.isNil(arg)) return;\n escapedKeys.push(escapeKey(arg));\n }\n return new Reference(\n this._tree, `${this._pathPrefix}/${escapedKeys.join('/')}`, this._annotations);\n }\n\n peek(callback) {\n return this._tree.truss.peek(this, callback);\n }\n\n match(pattern) {\n return makePathMatcher(pattern).match(this.path);\n }\n\n test(pattern) {\n return makePathMatcher(pattern).test(this.path);\n }\n\n isEqual(that) {\n if (!(that instanceof Handle)) return false;\n return this._tree === that._tree && this.toString() === that.toString() &&\n _.isEqual(this._annotations, that._annotations);\n }\n\n belongsTo(truss) {\n return this._tree.truss === truss;\n }\n}\n\n\nexport class Query extends Handle {\n constructor(tree, path, spec, annotations) {\n super(tree, path, annotations);\n this._spec = this._copyAndValidateSpec(spec);\n const queryTerms = _(this._spec)\n .map((value, key) => `${key}=${encodeURIComponent(JSON.stringify(value))}`)\n .sortBy()\n .join('&');\n this._string = `${this._path}?${queryTerms}`;\n Object.freeze(this);\n }\n\n // Vue-bound\n get ready() {\n return this._tree.isQueryReady(this);\n }\n\n get constraints() {\n return this._spec;\n }\n\n annotate(annotations) {\n return new Query(\n this._tree, this._path, this._spec, _.assign({}, this._annotations, annotations));\n }\n\n _copyAndValidateSpec(spec) {\n if (!spec.by) throw new Error('Query needs \"by\" clause: ' + JSON.stringify(spec));\n if (('at' in spec) + ('from' in spec) + ('to' in spec) > 1) {\n throw new Error(\n 'Query must contain at most one of \"at\", \"from\", or \"to\" clauses: ' + JSON.stringify(spec));\n }\n if (('first' in spec) + ('last' in spec) > 1) {\n throw new Error(\n 'Query must contain at most one of \"first\" or \"last\" clauses: ' + JSON.stringify(spec));\n }\n if (!_.some(['at', 'from', 'to', 'first', 'last'], clause => clause in spec)) {\n throw new Error(\n 'Query must contain at least one of \"at\", \"from\", \"to\", \"first\", or \"last\" clauses: ' +\n JSON.stringify(spec));\n }\n spec = _.clone(spec);\n if (spec.by !== '$key' && spec.by !== '$value') {\n if (!(spec.by instanceof Reference)) {\n throw new Error('Query \"by\" value must be a reference: ' + spec.by);\n }\n let childPath = spec.by.toString();\n if (!_.startsWith(childPath, this._path)) {\n throw new Error(\n 'Query \"by\" value must be a descendant of target reference: ' + spec.by);\n }\n childPath = childPath.slice(this._path.length).replace(/^\\/?/, '');\n if (!_.includes(childPath, '/')) {\n throw new Error(\n 'Query \"by\" value must not be a direct child of target reference: ' + spec.by);\n }\n spec.by = childPath.replace(/.*?\\//, '');\n }\n Object.freeze(spec);\n return spec;\n }\n\n\n toString() {return this._string;}\n toJSON() {return `query → ${this.toString()}`;}\n}\n\n\nexport class Reference extends Handle {\n\n constructor(tree, path, annotations) {\n super(tree, path, annotations);\n Object.freeze(this);\n }\n\n get ready() {return this._tree.isReferenceReady(this);} // Vue-bound\n get value() {return this._tree.getObject(this.path);} // Vue-bound\n toString() {return this._path;}\n toJSON() {return `reference → ${this.toString()}`;}\n\n annotate(annotations) {\n return new Reference(this._tree, this._path, _.assign({}, this._annotations, annotations));\n }\n\n query(spec) {\n return new Query(this._tree, this._path, spec, this._annotations);\n }\n\n set(value) {\n this._checkForUndefinedPath();\n return this._tree.update(this, 'set', {[this.path]: value});\n }\n\n update(values) {\n this._checkForUndefinedPath();\n return this._tree.update(this, 'update', values);\n }\n\n override(value) {\n this._checkForUndefinedPath();\n return this._tree.update(this, 'override', {[this.path]: value});\n }\n\n commit(updateFunction) {\n this._checkForUndefinedPath();\n return this._tree.commit(this, updateFunction);\n }\n\n _checkForUndefinedPath() {\n if (this.path === '/undefined') throw new Error('Invalid path for operation: ' + this.path);\n }\n}\n\nexport default Reference;\n","import _ from 'lodash';\n\n\nexport const SERVER_TIMESTAMP = Object.freeze({'.sv': 'timestamp'});\n\nexport function isTrussEqual(a, b) {\n return _.isEqualWith(a, b, isTrussValueEqual);\n}\n\nfunction isTrussValueEqual(a, b) {\n if (a === b || a === undefined || a === null || b === undefined || b === null ||\n a.$truss || b.$truss) return a === b;\n if (a.isEqual) return a.isEqual(b);\n}\n\nexport function copyPrototype(a, b) {\n for (const prop of Object.getOwnPropertyNames(a.prototype)) {\n if (prop === 'constructor') continue;\n Object.defineProperty(b.prototype, prop, Object.getOwnPropertyDescriptor(a.prototype, prop));\n }\n}\n","import {isTrussEqual} from './utils.js';\n\nimport _ from 'lodash';\n\n\nclass StatItem {\n constructor(name) {\n _.assign(this, {name, numRecomputes: 0, numUpdates: 0, computeTime: 0, updateTime: 0});\n }\n\n add(item) {\n this.computeTime += item.computeTime;\n this.updateTime += item.updateTime;\n this.numUpdates += item.numUpdates;\n this.numRecomputes += item.numRecomputes;\n }\n\n get runtime() {\n return this.computeTime + this.updateTime;\n }\n\n get runtimePerRecompute() {\n return this.numRecomputes ? this.computeTime / this.numRecomputes : 0;\n }\n\n get runtimePerUpdate() {\n return this.numUpdates ? this.updateTime / this.numUpdates : 0;\n }\n\n toLogParts(totals) {\n return [\n `${this.name}:`, ` ${(this.runtime / 1000).toFixed(2)}s`,\n `(${(this.runtime / totals.runtime * 100).toFixed(1)}%)`,\n ` ${this.numUpdates} upd /`, `${this.numRecomputes} runs`,\n `(${(this.numUpdates / this.numRecomputes * 100).toFixed(1)}%)`,\n ` ${this.runtimePerRecompute.toFixed(2)}ms / run`,\n ` ${this.runtimePerUpdate.toFixed(2)}ms / upd`\n ];\n }\n}\n\nclass Stats {\n constructor() {\n this._items = {};\n }\n\n for(name) {\n if (!this._items[name]) this._items[name] = new StatItem(name);\n return this._items[name];\n }\n\n get list() {\n return _(this._items).values().sortBy(item => -item.runtime).value();\n }\n\n log(n = 10) {\n let stats = this.list;\n if (!stats.length) return;\n const totals = new StatItem('=== Total');\n _.forEach(stats, stat => {totals.add(stat);});\n stats = _.take(stats, n);\n const above = new StatItem('--- Above');\n _.forEach(stats, stat => {above.add(stat);});\n const lines = _.map(stats, item => item.toLogParts(totals));\n lines.push(above.toLogParts(totals));\n lines.push(totals.toLogParts(totals));\n const widths = _.map(_.range(lines[0].length), i => _(lines).map(line => line[i].length).max());\n _.forEach(lines, line => {\n console.log(_.map(line, (column, i) => _.padStart(column, widths[i])).join(' '));\n });\n }\n\n wrap(getter, className, propName) {\n const item = this.for(`${className}.${propName}`);\n return function() {\n /* eslint-disable no-invalid-this */\n const startTime = performance.now();\n const oldValue = this._computedWatchers && this._computedWatchers[propName].value;\n try {\n const newValue = getter.call(this);\n if (!isTrussEqual(oldValue, newValue)) item.numUpdates += 1;\n return newValue;\n } finally {\n item.computeTime += performance.now() - startTime;\n item.numRecomputes += 1;\n }\n };\n }\n}\n\nexport default new Stats();\n","import {Handle, Query, Reference} from './Reference.js';\nimport angular from './angularCompatibility.js';\nimport stats from './utils/stats.js';\nimport {isTrussEqual} from './utils/utils.js';\n\nimport _ from 'lodash';\nimport Vue from 'vue';\n\n\nexport default class Connector {\n constructor(scope, connections, tree, method, refs) {\n Object.freeze(connections);\n this._scope = scope;\n this._connections = connections;\n this._tree = tree;\n this._method = method;\n\n this._subConnectors = {};\n this._disconnects = {};\n this._angularUnwatches = undefined;\n this._data = {};\n this._vue = new Vue({data: {\n descriptors: {},\n refs: refs || {},\n values: _.mapValues(connections, _.constant(undefined))\n }});\n // allow instance-level overrides of destroy() method\n this.destroy = this.destroy; // eslint-disable-line no-self-assign\n Object.seal(this);\n\n this._linkScopeProperties();\n\n _.forEach(connections, (descriptor, key) => {\n if (_.isFunction(descriptor)) {\n this._bindComputedConnection(key, descriptor);\n } else {\n this._connect(key, descriptor);\n }\n });\n\n if (angular.active && scope && scope.$on && scope.$id) {\n scope.$on('$destroy', () => {this.destroy();});\n }\n }\n\n get ready() {\n return _.every(this._connections, (ignored, key) => {\n const descriptor = this._vue.descriptors[key];\n if (!descriptor) return false;\n if (descriptor instanceof Handle) return descriptor.ready;\n return this._subConnectors[key].ready;\n });\n }\n\n get at() {\n return this._vue.refs;\n }\n\n get data() {\n return this._data;\n }\n\n destroy() {\n this._unlinkScopeProperties();\n _.forEach(this._angularUnwatches, unwatch => {unwatch();});\n _.forEach(this._connections, (descriptor, key) => {this._disconnect(key);});\n this._vue.$destroy();\n }\n\n _linkScopeProperties() {\n const dataProperties = _.mapValues(this._connections, (unused, key) => ({\n configurable: true, enumerable: false, get: () => {\n const descriptor = this._vue.descriptors[key];\n if (descriptor instanceof Reference) return descriptor.value;\n return this._vue.values[key];\n }\n }));\n Object.defineProperties(this._data, dataProperties);\n if (this._scope) {\n for (const key in this._connections) {\n if (key in this._scope) {\n throw new Error(`Property already defined on connection target: ${key}`);\n }\n }\n Object.defineProperties(this._scope, dataProperties);\n if (this._scope.__ob__) this._scope.__ob__.dep.notify();\n }\n }\n\n _unlinkScopeProperties() {\n if (!this._scope) return;\n _.forEach(this._connections, (descriptor, key) => {\n delete this._scope[key];\n });\n }\n\n _bindComputedConnection(key, fn) {\n const connectionStats = stats.for(`connection.at.${key}`);\n const getter = this._computeConnection.bind(this, fn, connectionStats);\n const update = this._updateComputedConnection.bind(this, key, fn, connectionStats);\n const angularWatch = angular.active && !fn.angularWatchSuppressed;\n // Use this._vue.$watch instead of truss.observe here so that we can disable the immediate\n // callback if we'll get one from Angular anyway.\n this._vue.$watch(getter, update, {immediate: !angularWatch});\n if (angularWatch) {\n if (!this._angularUnwatches) this._angularUnwatches = [];\n this._angularUnwatches.push(angular.watch(getter, update, true));\n }\n }\n\n _computeConnection(fn, connectionStats) {\n const startTime = performance.now();\n try {\n return flattenRefs(fn.call(this._scope));\n } finally {\n connectionStats.computeTime += performance.now() - startTime;\n connectionStats.numRecomputes += 1;\n }\n }\n\n _updateComputedConnection(key, value, connectionStats) {\n const newDescriptor = _.isFunction(value) ? value(this._scope) : value;\n const oldDescriptor = this._vue.descriptors[key];\n const descriptorChanged = !isTrussEqual(oldDescriptor, newDescriptor);\n if (!descriptorChanged) return;\n if (connectionStats && descriptorChanged) connectionStats.numUpdates += 1;\n if (!newDescriptor) {\n this._disconnect(key);\n return;\n }\n if (newDescriptor instanceof Handle || !_.has(this._subConnectors, key)) {\n this._disconnect(key);\n this._connect(key, newDescriptor);\n } else {\n this._subConnectors[key]._updateConnections(newDescriptor);\n }\n Vue.set(this._vue.descriptors, key, newDescriptor);\n angular.digest();\n }\n\n _updateConnections(connections) {\n _.forEach(connections, (descriptor, key) => {\n this._updateComputedConnection(key, descriptor);\n });\n _.forEach(this._connections, (descriptor, key) => {\n if (!_.has(connections, key)) this._updateComputedConnection(key);\n });\n this._connections = connections;\n }\n\n _connect(key, descriptor) {\n Vue.set(this._vue.descriptors, key, descriptor);\n angular.digest();\n if (!descriptor) return;\n Vue.set(this._vue.values, key, undefined);\n if (descriptor instanceof Reference) {\n Vue.set(this._vue.refs, key, descriptor);\n this._disconnects[key] = this._tree.connectReference(descriptor, this._method);\n } else if (descriptor instanceof Query) {\n Vue.set(this._vue.refs, key, descriptor);\n const updateFn = this._updateQueryValue.bind(this, key);\n this._disconnects[key] = this._tree.connectQuery(descriptor, updateFn, this._method);\n } else {\n const subScope = {}, subRefs = {};\n Vue.set(this._vue.refs, key, subRefs);\n const subConnector = this._subConnectors[key] =\n new Connector(subScope, descriptor, this._tree, this._method, subRefs);\n // Use a truss.observe here instead of this._vue.$watch so that the \"immediate\" execution\n // actually takes place after we've captured the unwatch function, in case the subConnector\n // is ready immediately.\n const unobserve = this._disconnects[key] = this._tree.truss.observe(\n () => subConnector.ready,\n subReady => {\n if (!subReady) return;\n unobserve();\n delete this._disconnects[key];\n Vue.set(this._vue.values, key, subScope);\n angular.digest();\n }\n );\n }\n }\n\n _disconnect(key) {\n Vue.delete(this._vue.refs, key);\n this._updateRefValue(key, undefined);\n if (_.has(this._subConnectors, key)) {\n this._subConnectors[key].destroy();\n delete this._subConnectors[key];\n }\n if (this._disconnects[key]) this._disconnects[key]();\n delete this._disconnects[key];\n Vue.delete(this._vue.descriptors, key);\n angular.digest();\n }\n\n _updateRefValue(key, value) {\n if (this._vue.values[key] !== value) {\n Vue.set(this._vue.values, key, value);\n angular.digest();\n }\n }\n\n _updateQueryValue(key, childKeys) {\n if (!this._vue.values[key]) {\n Vue.set(this._vue.values, key, {});\n angular.digest();\n }\n const subScope = this._vue.values[key];\n for (const childKey in subScope) {\n if (!Object.hasOwn(subScope, childKey)) continue;\n if (!_.includes(childKeys, childKey)) {\n Vue.delete(subScope, childKey);\n angular.digest();\n }\n }\n const object = this._tree.getObject(this._vue.descriptors[key].path);\n for (const childKey of childKeys) {\n if (Object.hasOwn(subScope, childKey)) continue;\n Vue.set(subScope, childKey, object[childKey]);\n angular.digest();\n }\n }\n\n}\n\nfunction flattenRefs(refs) {\n if (!refs) return;\n if (refs instanceof Handle) return refs.toString();\n return _.mapValues(refs, flattenRefs);\n}\n\n","export function wrapPromiseCallback(callback) {\n return function() {\n try {\n // eslint-disable-next-line no-invalid-this\n return Promise.resolve(callback.apply(this, arguments));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\n\nexport function promiseCancel(promise, cancel) {\n promise = promiseFinally(promise, () => {cancel = null;});\n promise.cancel = () => {\n if (!cancel) return;\n cancel();\n cancel = null;\n };\n propagatePromiseProperty(promise, 'cancel');\n return promise;\n}\n\nfunction propagatePromiseProperty(promise, propertyName) {\n const originalThen = promise.then, originalCatch = promise.catch;\n promise.then = (onResolved, onRejected) => {\n const derivedPromise = originalThen.call(promise, onResolved, onRejected);\n derivedPromise[propertyName] = promise[propertyName];\n propagatePromiseProperty(derivedPromise, propertyName);\n return derivedPromise;\n };\n promise.catch = onRejected => {\n const derivedPromise = originalCatch.call(promise, onRejected);\n derivedPromise[propertyName] = promise[propertyName];\n propagatePromiseProperty(derivedPromise, propertyName);\n return derivedPromise;\n };\n return promise;\n}\n\nexport function promiseFinally(promise, onFinally) {\n if (!onFinally) return promise;\n onFinally = wrapPromiseCallback(onFinally);\n return promise.then(result => {\n return onFinally().then(() => result);\n }, error => {\n return onFinally().then(() => Promise.reject(error));\n });\n}\n","import _ from 'lodash';\nimport Reference from './Reference.js';\nimport {wrapPromiseCallback} from './utils/promises.js';\nimport {joinPath} from './utils/paths.js';\n\n\nconst INTERCEPT_KEYS = [\n 'read', 'write', 'auth', 'set', 'update', 'commit', 'connect', 'peek', 'authenticate',\n 'unathenticate', 'certify', 'all'\n];\n\nconst EMPTY_ARRAY = [];\n\n\nclass SlowHandle {\n constructor(operation, delay, callback) {\n this._operation = operation;\n this._delay = delay;\n this._callback = callback;\n this._fired = false;\n }\n\n initiate() {\n this.cancel();\n this._fired = false;\n const elapsed = Date.now() - this._operation._startTimestamp;\n this._timeoutId = setTimeout(() => {\n this._fired = true;\n this._callback(this._operation);\n }, this._delay - elapsed);\n }\n\n cancel() {\n if (this._fired) this._callback(this._operation);\n if (this._timeoutId) clearTimeout(this._timeoutId);\n }\n}\n\n\nclass Operation {\n constructor(type, method, target, operand) {\n this._type = type;\n this._method = method;\n this._target = target;\n this._operand = operand;\n this._ready = false;\n this._running = false;\n this._ended = false;\n this._tries = 0;\n this._startTimestamp = Date.now();\n this._slowHandles = [];\n }\n\n get type() {return this._type;}\n get method() {return this._method;}\n get target() {return this._target;}\n get targets() {\n if (this._method !== 'update') return [this._target];\n return _.map(this._operand, (value, escapedPathFragment) => {\n return new Reference(\n this._target._tree, joinPath(this._target.path, escapedPathFragment),\n this._target._annotations);\n });\n }\n\n get operand() {return this._operand;}\n get ready() {return this._ready;}\n get running() {return this._running;}\n get ended() {return this._ended;}\n get tries() {return this._tries;}\n get error() {return this._error;}\n\n onSlow(delay, callback) {\n const handle = new SlowHandle(this, delay, callback);\n this._slowHandles.push(handle);\n handle.initiate();\n }\n\n _setRunning(value) {\n this._running = value;\n }\n\n _setEnded(value) {\n this._ended = value;\n }\n\n _markReady(ending) {\n this._ready = true;\n if (!ending) this._tries = 0;\n _.forEach(this._slowHandles, handle => handle.cancel());\n }\n\n _clearReady() {\n // Temporarily set ready to correctly reset previously triggered slow handles.\n this._ready = true;\n this._startTimestamp = Date.now();\n _.forEach(this._slowHandles, handle => handle.initiate());\n this._ready = false;\n }\n\n _incrementTries() {\n this._tries++;\n }\n}\n\n\nexport default class Dispatcher {\n constructor(bridge) {\n this._bridge = bridge;\n this._callbacks = {};\n Object.freeze(this);\n }\n\n intercept(interceptKey, callbacks) {\n if (!_.includes(INTERCEPT_KEYS, interceptKey)) {\n throw new Error('Unknown intercept operation type: ' + interceptKey);\n }\n const badCallbackKeys =\n _.difference(_.keys(callbacks), ['onBefore', 'onAfter', 'onError', 'onFailure']);\n if (badCallbackKeys.length) {\n throw new Error('Unknown intercept callback types: ' + badCallbackKeys.join(', '));\n }\n const wrappedCallbacks = {\n onBefore: this._addCallback('onBefore', interceptKey, callbacks.onBefore),\n onAfter: this._addCallback('onAfter', interceptKey, callbacks.onAfter),\n onError: this._addCallback('onError', interceptKey, callbacks.onError),\n onFailure: this._addCallback('onFailure', interceptKey, callbacks.onFailure)\n };\n return this._removeCallbacks.bind(this, interceptKey, wrappedCallbacks);\n }\n\n _addCallback(stage, interceptKey, callback) {\n if (!callback) return;\n const key = this._getCallbacksKey(stage, interceptKey);\n const wrappedCallback = wrapPromiseCallback(callback);\n (this._callbacks[key] || (this._callbacks[key] = [])).push(wrappedCallback);\n return wrappedCallback;\n }\n\n _removeCallback(stage, interceptKey, wrappedCallback) {\n if (!wrappedCallback) return;\n const key = this._getCallbacksKey(stage, interceptKey);\n if (this._callbacks[key]) _.pull(this._callbacks[key], wrappedCallback);\n }\n\n _removeCallbacks(interceptKey, wrappedCallbacks) {\n _.forEach(wrappedCallbacks, (wrappedCallback, stage) => {\n this._removeCallback(stage, interceptKey, wrappedCallback);\n });\n }\n\n _getCallbacks(stage, operationType, method) {\n return [].concat(\n this._callbacks[this._getCallbacksKey(stage, method)] || EMPTY_ARRAY,\n this._callbacks[this._getCallbacksKey(stage, operationType)] || EMPTY_ARRAY,\n this._callbacks[this._getCallbacksKey(stage, 'all')] || EMPTY_ARRAY\n );\n }\n\n _getCallbacksKey(stage, interceptKey) {\n return `${stage}_${interceptKey}`;\n }\n\n execute(operationType, method, target, operand, executor) {\n executor = wrapPromiseCallback(executor);\n const operation = this.createOperation(operationType, method, target, operand);\n return this.begin(operation).then(() => {\n const executeWithRetries = () => {\n return executor().catch(e => this._retryOrEnd(operation, e).then(executeWithRetries));\n };\n return executeWithRetries();\n }).then(result => this.end(operation).then(() => result));\n }\n\n createOperation(operationType, method, target, operand) {\n return new Operation(operationType, method, target, operand);\n }\n\n begin(operation) {\n return Promise.all(_.map(\n this._getCallbacks('onBefore', operation.type, operation.method),\n onBefore => onBefore(operation)\n )).then(() => {\n if (!operation.ended) operation._setRunning(true);\n }, e => this.end(operation, e));\n }\n\n markReady(operation) {\n operation._markReady();\n }\n\n clearReady(operation) {\n operation._clearReady();\n }\n\n retry(operation, error) {\n operation._incrementTries();\n operation._error = error;\n return Promise.all(_.map(\n this._getCallbacks('onError', operation.type, operation.method),\n onError => onError(operation, error)\n )).then(results => {\n // If the operation ended in the meantime, bail. This will cause the caller to attempt to\n // fail the operation, but since it's already ended the call to end() with an error will be a\n // no-op.\n if (operation.ended) return;\n const retrying = _.some(results);\n if (retrying) delete operation._error;\n return retrying;\n });\n }\n\n _retryOrEnd(operation, error) {\n return this.retry(operation, error).then(result => {\n if (!result) return this.end(operation, error);\n }, e => this.end(operation, e));\n }\n\n end(operation, error) {\n if (operation.ended) return Promise.resolve();\n operation._setRunning(false);\n operation._setEnded(true);\n if (error) {\n operation._error = error;\n } else {\n // In case we're racing with a retry(), wipe out the error.\n delete operation._error;\n }\n return Promise.all(_.map(\n this._getCallbacks('onAfter', operation.type, operation.method),\n onAfter => onAfter(operation)\n )).then(\n () => this._afterEnd(operation),\n e => {\n operation._error = e;\n return this._afterEnd(operation);\n }\n );\n }\n\n _afterEnd(operation) {\n operation._markReady(true);\n if (!operation.error) return Promise.resolve();\n const onFailureCallbacks = this._getCallbacks('onFailure', operation.type, operation.method);\n if (onFailureCallbacks) {\n setTimeout(() => {\n _.forEach(onFailureCallbacks, onFailure => onFailure(operation));\n }, 0);\n }\n return Promise.reject(operation.error);\n }\n}\n\n","const ALPHABET = '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz';\n\nconst getRandomValues = window.crypto && window.crypto.getRandomValues &&\n window.crypto.getRandomValues.bind(window.crypto);\n\nexport default class KeyGenerator {\n constructor() {\n this._lastUniqueKeyTime = 0;\n this._lastRandomValues = [];\n }\n\n generateUniqueKey(now) {\n now = now || Date.now();\n const chars = new Array(20);\n let prefix = now;\n for (let i = 7; i >= 0; i--) {\n chars[i] = ALPHABET.charAt(prefix & 0x3f); // eslint-disable-line no-bitwise\n prefix = Math.floor(prefix / 64);\n }\n if (now === this._lastUniqueKeyTime) {\n let i = 11;\n while (i >= 0 && this._lastRandomValues[i] === 63) {\n this._lastRandomValues[i] = 0;\n i -= 1;\n }\n if (i === -1) {\n throw new Error('Internal assertion failure: ran out of unique IDs for this millisecond');\n }\n this._lastRandomValues[i] += 1;\n } else {\n this._lastUniqueKeyTime = now;\n if (getRandomValues) {\n const array = new Uint8Array(12);\n getRandomValues(array);\n for (let i = 0; i < 12; i++) {\n // eslint-disable-next-line no-bitwise\n this._lastRandomValues[i] = array[i] & (i ? 0x3f : 0x0f);\n }\n } else {\n for (let i = 0; i < 12; i++) {\n // Make sure to leave some space for incrementing in the top nibble.\n this._lastRandomValues[i] = Math.floor(Math.random() * (i ? 64 : 16));\n }\n }\n }\n for (let i = 0; i < 12; i++) {\n chars[i + 8] = ALPHABET[this._lastRandomValues[i]];\n }\n return chars.join('');\n }\n}\n","import angular from './angularCompatibility.js';\nimport Vue from 'vue';\nimport Reference from './Reference.js';\n\n\nexport default class MetaTree {\n constructor(rootUrl, tree, bridge, dispatcher) {\n this._rootUrl = rootUrl;\n this._tree = tree;\n this._dispatcher = dispatcher;\n this._bridge = bridge;\n this._vue = new Vue({data: {$root: {\n connected: undefined, timeOffset: 0, user: undefined, userid: undefined,\n nowAtInterval(intervalMillis) {\n const key = 'now' + intervalMillis;\n if (!Object.hasOwn(this, key)) {\n const update = () => {\n Vue.set(this, key, Date.now() + this.timeOffset);\n angular.digest();\n };\n update();\n setInterval(update, intervalMillis);\n }\n return this[key];\n }\n }}});\n\n this._auth = {serial: 0, initialAuthChangeReceived: false, changePromise: Promise.resolve()};\n\n bridge.onAuth(rootUrl, this._handleAuthChange, this);\n\n this._connectInfoProperty('serverTimeOffset', 'timeOffset');\n this._connectInfoProperty('connected', 'connected');\n Object.freeze(this);\n }\n\n get root() {\n return this._vue.$data.$root;\n }\n\n destroy() {\n this._bridge.offAuth(this._rootUrl, this._handleAuthChange, this);\n this._vue.$destroy();\n }\n\n authenticate(token) {\n this._auth.serial++;\n return this._dispatcher.execute(\n 'auth', 'authenticate', new Reference(this._tree, '/'), token, () => {\n const promise = token ?\n this._bridge.authWithCustomToken(this._rootUrl, token) :\n this._bridge.authAnonymously(this._rootUrl);\n return promise.then(() => this._auth.changePromise);\n }\n );\n }\n\n unauthenticate() {\n // Signal user change to null pre-emptively. This is what the Firebase SDK does as well, since\n // it lets the app tear down user-required connections before the user is actually deauthed,\n // which can prevent spurious permission denied errors.\n this._auth.serial++;\n return this._handleAuthChange(null).then(approved => {\n // Bail if auth change callback initiated another authentication, since it will have already\n // sent the command to the bridge and sending our own now would incorrectly override it.\n if (!approved) return;\n return this._dispatcher.execute(\n 'auth', 'unauthenticate', new Reference(this._tree, '/'), undefined, () => {\n return this._bridge.unauth(this._rootUrl);\n }\n );\n });\n }\n\n _handleAuthChange(user) {\n const supersededChange = !this._auth.initialAuthChangeReceived && this._auth.serial;\n if (user !== undefined) this._auth.initialAuthChangeReceived = true;\n if (supersededChange) return;\n const authSerial = this._auth.serial;\n if (this.root.user === user) return Promise.resolve(false);\n const promise = this._dispatcher.execute(\n 'auth', 'certify', new Reference(this._tree, '/'), user, () => {\n if (this.root.user === user || authSerial !== this._auth.serial) return false;\n if (user) Object.freeze(user);\n this.root.user = user;\n this.root.userid = user && user.uid;\n angular.digest();\n return true;\n }\n );\n this._auth.changePromise = this._auth.changePromise.then(() => promise).catch();\n return promise;\n }\n\n _isAuthChangeStale(user) {\n return this.root.user === user;\n }\n\n _connectInfoProperty(property, attribute) {\n const url = new URL(this._rootUrl);\n url.pathname = encodeURI(`/.info/${property}`);\n this._bridge.on(url.href, url.href, null, 'value', snap => {\n this.root[attribute] = snap.value;\n angular.digest();\n });\n }\n}\n","import {Reference, Handle} from './Reference.js';\nimport angular from './angularCompatibility.js';\nimport stats from './utils/stats.js';\nimport {makePathMatcher, joinPath, splitPath, escapeKey, unescapeKey} from './utils/paths.js';\nimport {isTrussEqual, copyPrototype} from './utils/utils.js';\nimport {promiseFinally} from './utils/promises.js';\n\nimport _ from 'lodash';\n\n// These are defined separately for each object so they're not included in Value below.\nconst RESERVED_VALUE_PROPERTY_NAMES = {__ob__: true};\n\nconst UNSUPPORTED_LIFECYCLE_METHODS = new Set([\n 'beforeMount', 'mounted', 'beforeUpdate', 'updated', 'activated', 'deactivated', 'errorCaptured'\n]);\nconst UNSUPPORTED_LIFECYCLE_HOOKS =\n new Set(_.map(UNSUPPORTED_LIFECYCLE_METHODS, method => `hook:${method}`));\n\nconst LAST_COMPUTED_VALUE = Symbol('last-computed-value');\n\n// Holds properties that we're going to set on a model object that's being created right now as soon\n// as it's been created, but that we'd like to be accessible in the constructor. The object\n// prototype's getters will pick those up until they get overridden in the instance.\nlet creatingObjectProperties;\n\nlet currentPropertyFrozen;\n\n\nexport class BaseValue {\n get $info() {return this.$truss.info;}\n get $store() {return this.$truss.store;} // access indirectly to leave dependency trace\n get $now() {return this.$truss.now;}\n\n $newKey() {return this.$truss.newKey();}\n\n $intercept(actionType, callbacks) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const unintercept = this.$truss.intercept(actionType, callbacks);\n const uninterceptAndRemoveFinalizer = () => {\n unintercept();\n this.$off('hook:destroyed', uninterceptAndRemoveFinalizer);\n };\n this.$on('hook:destroyed', uninterceptAndRemoveFinalizer);\n return uninterceptAndRemoveFinalizer;\n }\n\n $connect(scope, connections) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n if (!connections) {\n connections = scope;\n scope = undefined;\n }\n const connector = this.$truss.connect(scope, wrapConnections(this, connections));\n const originalDestroy = connector.destroy;\n const destroy = () => {\n this.$off('hook:destroyed', destroy);\n return originalDestroy.call(connector);\n };\n this.$on('hook:destroyed', destroy);\n connector.destroy = destroy;\n return connector;\n }\n\n $peek(target, callback) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const promise = promiseFinally(\n this.$truss.peek(target, callback), () => {this.$off('hook:destroyed', promise.cancel);}\n );\n this.$on('hook:destroyed', promise.cancel);\n return promise;\n }\n\n $observe(subjectFn, callbackFn, options) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n let unobserveAndRemoveFinalizer;\n\n const unobserve = this.$truss.observe(() => {\n this.$$touchThis();\n return subjectFn.call(this);\n }, callbackFn.bind(this), {...options, vm: this});\n\n unobserveAndRemoveFinalizer = () => { // eslint-disable-line prefer-const\n unobserve();\n this.$off('hook:destroyed', unobserveAndRemoveFinalizer);\n };\n this.$on('hook:destroyed', unobserveAndRemoveFinalizer);\n return unobserveAndRemoveFinalizer;\n }\n\n $when(expression, options) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const promise = this.$truss.when(() => {\n this.$$touchThis();\n return expression.call(this);\n }, options);\n promiseFinally(promise, () => {this.$off('hook:destroyed', promise.cancel);});\n this.$on('hook:destroyed', promise.cancel);\n return promise;\n }\n}\n\n\nclass Value {\n get $parent() {return creatingObjectProperties.$parent.value;}\n get $path() {return creatingObjectProperties.$path.value;}\n get $truss() {\n Object.defineProperty(this, '$truss', {value: this.$parent.$truss});\n return this.$truss;\n }\n\n get $ref() {\n Object.defineProperty(this, '$ref', {value: new Reference(this.$truss._tree, this.$path)});\n return this.$ref;\n }\n\n get $refs() {return this.$ref;}\n get $key() {\n Object.defineProperty(\n this, '$key', {value: unescapeKey(this.$path.slice(this.$path.lastIndexOf('/') + 1))});\n return this.$key;\n }\n\n get $data() {return this;}\n get $hidden() {return false;} // eslint-disable-line lodash/prefer-constant\n get $empty() {return _.isEmpty(this.$data);}\n get $keys() {return _.keys(this.$data);}\n get $values() {return _.values(this.$data);}\n get $ready() {return this.$ref.ready;}\n get $overridden() {return false;} // eslint-disable-line lodash/prefer-constant\n\n $nextTick() {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const promise = this.$truss.nextTick();\n promiseFinally(promise, () => {this.$off('hook:destroyed', promise.cancel);});\n this.$on('hook:destroyed', promise.cancel);\n return promise;\n }\n\n $freezeComputedProperty() {\n if (!_.isBoolean(currentPropertyFrozen)) {\n throw new Error('Cannot freeze a computed property outside of its getter function');\n }\n currentPropertyFrozen = true;\n }\n\n get $lastComputedValue() {\n if (!_.isBoolean(currentPropertyFrozen)) {\n throw new Error(\n 'Cannot use last computed value of a property outside of its getter function');\n }\n return LAST_COMPUTED_VALUE;\n }\n\n $set(value) {return this.$ref.set(value);}\n $update(values) {return this.$ref.update(values);}\n $override(values) {return this.$ref.override(values);}\n $commit(options, updateFn) {return this.$ref.commit(options, updateFn);}\n\n $$touchThis() {\n /* eslint-disable no-unused-expressions */\n if (this.__ob__) {\n this.__ob__.dep.depend();\n } else if (this.$parent) {\n (Object.hasOwn(this.$parent, '$data') ? this.$parent.$data : this.$parent)[this.$key];\n } else {\n this.$store;\n }\n /* eslint-enable no-unused-expressions */\n }\n\n get $destroyed() { // eslint-disable-line lodash/prefer-constant\n return false;\n }\n\n $on(event, callback) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n if (UNSUPPORTED_LIFECYCLE_HOOKS.has(event)) {\n throw new Error(`Models don't support the \"${event}\" lifecycle event`);\n }\n (this.$$hooks[event] = this.$$hooks[event] || []).push(callback);\n return this;\n }\n\n $once(event, callback) {\n const object = this;\n function cb(...args) {\n object.$off(event, cb);\n callback(...args);\n }\n cb.fn = callback;\n return this.$on(event, cb);\n }\n\n $off(event, callback) {\n if (event) {\n if (callback) {\n if (_.isArray(event)) {\n for (const ev of event) this.$off(ev, callback);\n } else if (this.$$hooks[event]) {\n const callbacks = this.$$hooks[event];\n for (let i = 0; i < callbacks.length; i++) {\n const cb = callbacks[i];\n if (cb === callback || cb.fn === callback) {\n callbacks.splice(i, 1);\n break;\n }\n }\n }\n } else {\n delete this.$$hooks[event];\n }\n } else {\n for (const key of _.keys(this.$$hooks)) delete this.$$hooks[key];\n }\n return this;\n }\n\n $emit(event, ...args) {\n if (_.has(this, '$$hooks')) {\n // Some callbacks remove themselves from the array, so clone it before iterating.\n _.forEach(_.clone(this.$$hooks[event]), callback => {\n if (callback.$once && callback.$once[event]) {\n callback.$once[event] -= 1;\n this.$off(event, callback);\n }\n callback(...args);\n });\n }\n return this;\n }\n\n get $$hooks() {\n Object.defineProperty(this, '$$hooks', {\n value: {}, writable: false, enumerable: false, configurable: false\n });\n return this.$$hooks;\n }\n}\n\ncopyPrototype(BaseValue, Value);\n\n_.forEach(Value.prototype, (prop, name) => {\n Object.defineProperty(\n Value.prototype, name, {value: prop, enumerable: false, configurable: false, writable: false});\n});\n\n\nclass ErrorWrapper {\n constructor(error) {\n this.error = error;\n }\n}\n\n\nclass FrozenWrapper {\n constructor(value) {\n this.value = value;\n }\n}\n\n\nexport default class Modeler {\n constructor(vue, debug) {\n this._vue = vue;\n this._trie = {Class: Value};\n this._debug = debug;\n Object.freeze(this);\n }\n\n init(classes, rootAcceptable) {\n if (_.isPlainObject(classes)) {\n _.forEach(classes, (Class, path) => {\n if (Class.$trussMount) return;\n Class.$$trussMount = Class.$$trussMount || [];\n Class.$$trussMount.push(path);\n });\n classes = _.values(classes);\n _.forEach(classes, Class => {\n if (!Class.$trussMount && Class.$$trussMount) {\n Class.$trussMount = Class.$$trussMount;\n delete Class.$$trussMount;\n }\n });\n }\n classes = _.uniq(classes);\n _.forEach(classes, Class => this._mountClass(Class, rootAcceptable));\n this._decorateTrie(this._trie);\n }\n\n destroy() {/* empty */}\n\n _getMount(path, scaffold, predicate) {\n const segments = splitPath(path, true);\n let node;\n for (const segment of segments) {\n let child = segment ?\n node.children && (node.children[segment] || !scaffold && node.children.$) : this._trie;\n if (!child) {\n if (!scaffold) return;\n node.children = node.children || {};\n child = node.children[segment] = {Class: Value};\n }\n node = child;\n if (predicate && predicate(node)) break;\n }\n return node;\n }\n\n _findMount(predicate, node) {\n if (!node) node = this._trie;\n if (predicate(node)) return node;\n for (const childKey of _.keys(node.children)) {\n const result = this._findMount(predicate, node.children[childKey]);\n if (result) return result;\n }\n }\n\n _decorateTrie(node) {\n _.forEach(node.children, child => {\n this._decorateTrie(child);\n if (child.local || child.localDescendants) node.localDescendants = true;\n });\n }\n\n _augmentClass(Class) {\n let computedProperties;\n let proto = Class.prototype;\n while (proto && proto.constructor !== Object) {\n for (const name of Object.getOwnPropertyNames(proto)) {\n const descriptor = Object.getOwnPropertyDescriptor(proto, name);\n if (name.charAt(0) === '$') {\n if (_.isEqual(descriptor, Object.getOwnPropertyDescriptor(Value.prototype, name))) {\n continue;\n }\n throw new Error(`Property names starting with \"$\" are reserved: ${Class.name}.${name}`);\n }\n if (UNSUPPORTED_LIFECYCLE_METHODS.has(name) && _.isFunction(proto[name])) {\n throw new Error(`Models don't support the \"${name}\" lifecycle method`);\n }\n if (descriptor.get && !(computedProperties && computedProperties[name])) {\n (computedProperties || (computedProperties = {}))[name] = {\n name, fullName: `${proto.constructor.name}.${name}`, get: descriptor.get,\n set: descriptor.set\n };\n }\n }\n proto = Object.getPrototypeOf(proto);\n }\n for (const name of Object.getOwnPropertyNames(Value.prototype)) {\n if (name === 'constructor' || Object.hasOwn(Class.prototype, name)) continue;\n Object.defineProperty(\n Class.prototype, name, Object.getOwnPropertyDescriptor(Value.prototype, name));\n }\n return computedProperties;\n }\n\n _mountClass(Class, rootAcceptable) {\n const computedProperties = this._augmentClass(Class);\n const allVariables = [];\n let mounts = Class.$trussMount;\n if (!mounts) throw new Error(`Class ${Class.name} lacks a $trussMount static property`);\n if (!_.isArray(mounts)) mounts = [mounts];\n _.forEach(mounts, mount => {\n if (_.isString(mount)) mount = {path: mount};\n if (!rootAcceptable && mount.path === '/') {\n throw new Error('Data root already accessed, too late to mount class');\n }\n const matcher = makePathMatcher(mount.path);\n for (const variable of matcher.variables) {\n if (variable === '$' || variable.charAt(1) === '$') {\n throw new Error(`Invalid variable name: ${variable}`);\n }\n if (variable.charAt(0) === '$' && (\n _.has(Value.prototype, variable) || RESERVED_VALUE_PROPERTY_NAMES[variable]\n )) {\n throw new Error(`Variable name conflicts with built-in property or method: ${variable}`);\n }\n allVariables.push(variable);\n }\n const escapedKey = mount.path.match(/\\/([^/]*)$/)[1];\n if (escapedKey.charAt(0) === '$') {\n if (mount.placeholder) {\n throw new Error(\n `Class ${Class.name} mounted at wildcard ${escapedKey} cannot be a placeholder`);\n }\n } else if (!_.has(mount, 'placeholder')) {\n mount.placeholder = {};\n }\n const targetMount = this._getMount(mount.path.replace(/\\$[^/]*/g, '$'), true);\n if (targetMount.matcher && (\n targetMount.escapedKey === escapedKey ||\n targetMount.escapedKey.charAt(0) === '$' && escapedKey.charAt(0) === '$'\n )) {\n throw new Error(\n `Multiple classes mounted at ${mount.path}: ${targetMount.Class.name}, ${Class.name}`);\n }\n _.assign(\n targetMount, {Class, matcher, computedProperties, escapedKey},\n _.pick(mount, 'placeholder', 'local', 'keysUnsafe', 'hidden'));\n });\n _(allVariables).uniq().forEach(variable => {\n Object.defineProperty(Class.prototype, variable, {get() {\n return creatingObjectProperties ?\n creatingObjectProperties[variable] && creatingObjectProperties[variable].value :\n undefined;\n }});\n });\n }\n\n /**\n * Creates a Truss object and sets all its basic properties: path segment variables, user-defined\n * properties, and computed properties. The latter two will be enumerable so that Vue will pick\n * them up and make the reactive.\n */\n createObject(path, properties) {\n const mount = this._getMount(path) || {Class: Value};\n try {\n if (mount.matcher) {\n const match = mount.matcher.match(path);\n for (const variable in match) {\n properties[variable] = {value: match[variable]};\n }\n }\n\n creatingObjectProperties = properties;\n const object = new mount.Class();\n creatingObjectProperties = null;\n\n if (angular.active) this._wrapProperties(object);\n\n if (mount.keysUnsafe) {\n properties.$data = {value: Object.create(null), configurable: true, enumerable: true};\n }\n if (mount.hidden) properties.$hidden = {value: true};\n if (mount.computedProperties) {\n _.forEach(mount.computedProperties, prop => {\n properties[prop.name] = this._buildComputedPropertyDescriptor(object, prop);\n });\n }\n\n return object;\n } catch (e) {\n e.extra = _.assign({mount, properties, className: mount.Class && mount.Class.name}, e.extra);\n throw e;\n }\n }\n\n _wrapProperties(object) {\n _.forEach(object, (value, key) => {\n const valueKey = '$_' + key;\n Object.defineProperties(object, {\n [valueKey]: {value, writable: true},\n [key]: {\n get: () => object[valueKey],\n set: arg => {object[valueKey] = arg; angular.digest();},\n enumerable: true, configurable: true\n }\n });\n });\n }\n\n _buildComputedPropertyDescriptor(object, prop) {\n const propertyStats = stats.for(prop.fullName);\n\n let value, pendingPromise;\n let writeAllowed = false;\n\n const initialize = () => {\n let unwatchNow = false;\n const compute = computeValue.bind(object, prop, propertyStats);\n compute.toString = _.constant(`compute ${prop.fullName}`);\n let unwatch = () => {unwatchNow = true;};\n unwatch = this._vue.$watch(compute, newValue => {\n if (object.$destroyed) {\n unwatch();\n return;\n }\n if (pendingPromise) {\n if (pendingPromise.cancel) pendingPromise.cancel();\n pendingPromise = undefined;\n }\n if (_.isObject(newValue) && _.isFunction(newValue.then)) {\n const promise = newValue.then(finalValue => {\n if (promise === pendingPromise) update(finalValue);\n // No need to angular.digest() here, since if we're running under Angular then we expect\n // promises to be aliased to its $q service, which triggers digest itself.\n }, error => {\n if (promise === pendingPromise && update(new ErrorWrapper(error)) &&\n !error.trussExpectedException) throw error;\n });\n pendingPromise = promise;\n } else if (update(newValue)) {\n angular.digest();\n if (newValue instanceof ErrorWrapper && !newValue.error.trussExpectedException) {\n throw newValue.error;\n }\n }\n }, {immediate: true}); // use immediate:true since watcher will run computeValue anyway\n // Hack to change order of computed property watchers. By flipping their ids to be negative,\n // we ensure that they will settle before all other watchers, and also that children\n // properties will settle before their parents since values are often aggregated upwards.\n const watcher = _.last(this._vue._watchers || this._vue._scope.effects);\n watcher.id = -watcher.id;\n\n function update(newValue) {\n const startTime = performance.now();\n if (newValue instanceof FrozenWrapper) {\n newValue = newValue.value;\n unwatch();\n object.$off('hook:destroyed', unwatch);\n }\n if (newValue === LAST_COMPUTED_VALUE || isTrussEqual(value, newValue)) return;\n // console.log('updating', object.$key, prop.fullName, 'from', value, 'to', newValue);\n writeAllowed = true;\n object[prop.name] = newValue;\n writeAllowed = false;\n // Freeze the computed value so it can't be accidentally modified by a third party. Ideally\n // we'd freeze it before setting it so that Vue wouldn't instrument the object recursively\n // (since it can't change anyway), but we actually need the instrumentation in case a client\n // tries to access an inexistent property off a computed pointer to an unfrozen value (e.g.,\n // a $truss-ified object). When instrumented, Vue will add a dependency on the unfrozen\n // value in case the property is later added. If uninstrumented, the dependency won't be\n // added and we won't be notified. And Vue only instruments extensible objects...\n freeze(newValue);\n propertyStats.numUpdates += 1;\n propertyStats.updateTime += performance.now() - startTime;\n return true;\n }\n\n if (unwatchNow) {\n unwatch();\n } else {\n object.$on('hook:destroyed', unwatch);\n }\n\n object.$off('hook:created', initialize);\n };\n object.$on('hook:created', initialize);\n\n return {\n enumerable: true, configurable: true,\n get() {\n if (!writeAllowed && value instanceof ErrorWrapper) throw value.error;\n return value;\n },\n set(newValue) {\n if (writeAllowed) {\n value = newValue;\n } else if (prop.set) {\n prop.set.call(this, newValue);\n } else {\n throw new Error(`You cannot set a computed property: ${prop.name}`);\n }\n }\n };\n }\n\n destroyObject(object) {\n Object.defineProperty(\n object, '$destroyed', {value: true, enumerable: false, configurable: false});\n }\n\n emitLifecycleHook(object, hook) {\n if (_.isFunction(object[hook])) object[hook]();\n object.$emit(`hook:${hook}`);\n }\n\n isPlaceholder(path) {\n const mount = this._getMount(path);\n return mount && mount.placeholder;\n }\n\n isLocal(path, value) {\n // eslint-disable-next-line no-shadow\n const mount = this._getMount(path, false, mount => mount.local);\n if (mount && mount.local) return true;\n if (this._hasLocalProperties(mount, value)) {\n throw new Error('Write on a mix of local and remote tree paths.');\n }\n return false;\n }\n\n _hasLocalProperties(mount, value) {\n if (!mount) return false;\n if (mount.local) return true;\n if (!mount.localDescendants || !_.isObject(value)) return false;\n for (const key in value) {\n const local =\n this._hasLocalProperties(mount.children[escapeKey(key)] || mount.children.$, value[key]);\n if (local) return true;\n }\n return false;\n }\n\n forEachPlaceholderChild(path, iteratee) {\n const mount = this._getMount(path);\n _.forEach(mount && mount.children, child => {\n if (child.placeholder) iteratee(child);\n });\n }\n\n checkVueObject(object, path, checkedObjects) {\n const top = !checkedObjects;\n if (top) checkedObjects = new Set();\n const objectPropertyValues = new Map();\n const mount = this._findMount(candidate => candidate.Class === object.constructor);\n const targetProperties = _(object)\n .thru(Object.getOwnPropertyNames)\n .reject(key =>\n RESERVED_VALUE_PROPERTY_NAMES[key] || Object.hasOwn(Value.prototype, key) ||\n /^\\$_/.test(key)\n )\n .reject(key => mount && mount.matcher && _.includes(mount.matcher.variables, key))\n .map(key => {\n let value;\n try {\n value = object[key];\n // Ignore builtin object types.\n if (value instanceof RegExp) return;\n } catch {\n // Ignore any values that hold exceptions, or otherwise throw on access -- we won't be\n // able to check them anyway.\n return;\n }\n const descriptor = Object.getOwnPropertyDescriptor(object, key);\n const computed =\n !descriptor.enumerable && descriptor.set && !Object.hasOwn(object, '$_' + key);\n return {key, value, descriptor, computed};\n })\n .compact()\n .value();\n\n for (const {key, value, descriptor, computed} of targetProperties) {\n if (!(_.isArray(object) && (/^\\d+$/.test(key) || key === 'length'))) {\n if ('value' in descriptor || !descriptor.get) {\n throw new Error(\n `Value at ${path}, contained in a Firetruss object, has a rogue property: ${key}`);\n }\n if (object.$truss && descriptor.enumerable) {\n try {\n object[key] = value;\n throw new Error(\n `Firetruss object at ${path} has an enumerable non-Firebase property: ${key}`);\n } catch (e) {\n if (e.trussCode !== 'firebase_overwrite') throw e;\n }\n }\n }\n if (_.isObject(value)) {\n if (!checkedObjects.has(value) && !Object.isSealed(value) &&\n !(_.isFunction(value) || _.isElement(value) || value instanceof Promise)) {\n checkedObjects.add(value);\n this.checkVueObject(value, joinPath(path, escapeKey(key)), checkedObjects);\n }\n if (!computed && !value.$truss) objectPropertyValues.set(value, key);\n }\n }\n\n for (const {key, value, computed} of targetProperties) {\n if (computed && _.isObject(value) && !value.$truss) {\n const otherKey = objectPropertyValues.get(value);\n if (otherKey) {\n throw new Error(\n `Firetruss object at ${path} has properties ${key} ` +\n `and ${otherKey} with an aliased value`);\n }\n }\n }\n }\n}\n\n\nfunction computeValue(prop, propertyStats) {\n /* eslint-disable no-invalid-this */\n if (this.$destroyed) return;\n // Touch this object, since a failed access to a missing property doesn't get captured as a\n // dependency.\n this.$$touchThis();\n\n const oldPropertyFrozen = currentPropertyFrozen;\n currentPropertyFrozen = false;\n const startTime = performance.now();\n let value;\n try {\n try {\n value = prop.get.call(this);\n } catch (e) {\n value = new ErrorWrapper(e);\n } finally {\n propertyStats.computeTime += performance.now() - startTime;\n propertyStats.numRecomputes += 1;\n }\n if (currentPropertyFrozen) value = new FrozenWrapper(value);\n return value;\n } finally {\n currentPropertyFrozen = oldPropertyFrozen;\n }\n /* eslint-enable no-invalid-this */\n}\n\nfunction wrapConnections(object, connections) {\n if (!connections || connections instanceof Handle) return connections;\n if (_.isFunction(connections)) {\n const fn = function() {\n /* eslint-disable no-invalid-this */\n object.$$touchThis();\n return wrapConnections(object, connections.call(this));\n /* eslint-enable no-invalid-this */\n };\n fn.angularWatchSuppressed = true;\n return fn;\n }\n return _.mapValues(connections, descriptor => wrapConnections(object, descriptor));\n}\n\nfunction freeze(object) {\n if (_.isNil(object) || !_.isObject(object) || Object.isFrozen(object) || object.$truss) {\n return object;\n }\n object = Object.freeze(object);\n if (_.isArray(object)) return _.map(object, value => freeze(value));\n return _.mapValues(object, value => freeze(value));\n}\n","import _ from 'lodash';\nimport Vue from 'vue';\nimport angular from './angularCompatibility.js';\nimport {splitPath} from './utils/paths.js';\n\n\nclass QueryHandler {\n constructor(coupler, query) {\n this._coupler = coupler;\n this._query = query;\n this._listeners = [];\n this._keys = [];\n this._coupler._url.pathname = encodeURI(query.path);\n this._url = this._coupler._url.toString();\n this._segments = splitPath(query.path, true);\n this._listening = false;\n this.ready = false;\n }\n\n attach(operation, keysCallback) {\n this._listen();\n this._listeners.push({operation, keysCallback});\n if (this.ready) {\n this._coupler._dispatcher.markReady(operation);\n if (keysCallback) keysCallback(this._keys);\n }\n }\n\n detach(operation) {\n const k = _.findIndex(this._listeners, {operation});\n if (k >= 0) this._listeners.splice(k, 1);\n return this._listeners.length;\n }\n\n _listen() {\n if (this._listening) return;\n this._coupler._bridge.on(\n this._query.toString(), this._url, this._query.constraints, 'value',\n this._handleSnapshot, this._handleError, this, {sync: true});\n this._listening = true;\n }\n\n destroy() {\n this._coupler._bridge.off(\n this._query.toString(), this._url, this._query.constraints, 'value', this._handleSnapshot,\n this);\n this._listening = false;\n this.ready = false;\n angular.digest();\n for (const key of this._keys) {\n this._coupler._decoupleSegments(this._segments.concat(key));\n }\n }\n\n _handleSnapshot(snap) {\n this._coupler._queueSnapshotCallback(() => {\n // Order is important here: first couple any new subpaths so _handleSnapshot will update the\n // tree, then tell the client to update its keys, pulling values from the tree.\n if (!this._listeners.length || !this._listening) return;\n const updatedKeys = this._updateKeysAndApplySnapshot(snap);\n if (!this.ready) {\n this.ready = true;\n angular.digest();\n for (const listener of this._listeners) {\n this._coupler._dispatcher.markReady(listener.operation);\n }\n }\n if (updatedKeys) {\n for (const listener of this._listeners) {\n if (listener.keysCallback) listener.keysCallback(updatedKeys);\n }\n }\n });\n }\n\n _updateKeysAndApplySnapshot(snap) {\n let updatedKeys;\n if (snap.path === this._query.path) {\n updatedKeys = _.keys(snap.value);\n updatedKeys.sort();\n if (_.isEqual(this._keys, updatedKeys)) {\n updatedKeys = null;\n } else {\n for (const key of _.difference(updatedKeys, this._keys)) {\n this._coupler._coupleSegments(this._segments.concat(key));\n }\n for (const key of _.difference(this._keys, updatedKeys)) {\n // Decoupling a segment will prune the tree at that location if there are no other\n // listeners.\n this._coupler._decoupleSegments(this._segments.concat(key));\n }\n this._keys = updatedKeys;\n }\n // The snapshot may be partial, so create synthetic snapshots for subpaths and apply those to\n // update / insert values. (Deleted ones got pruned above.)\n if (snap.exists) {\n const rootValue = snap.value;\n const rootPath = snap.path;\n for (const key of this._keys) {\n snap._path = rootPath + '/' + key;\n snap._key = undefined;\n snap._value = rootValue[key];\n this._coupler._applySnapshot(snap);\n }\n // Restore original properties, just in case.\n snap._path = rootPath;\n snap._key = undefined;\n snap._value = rootValue;\n }\n } else if (snap.path.replace(/\\/[^/]+/, '') === this._query.path) {\n const hasKey = _.includes(this._keys, snap.key);\n if (snap.value) {\n if (!hasKey) {\n this._coupler._coupleSegments(this._segments.concat(snap.key));\n this._keys.push(snap.key);\n this._keys.sort();\n updatedKeys = this._keys;\n }\n } else if (hasKey) {\n this._coupler._decoupleSegments(this._segments.concat(snap.key));\n _.pull(this._keys, snap.key);\n this._keys.sort();\n updatedKeys = this._keys;\n }\n // A snapshot under the query's level is guaranteed to be a full snapshot, so we can apply it\n // directly.\n this._coupler._applySnapshot(snap);\n }\n return updatedKeys;\n }\n\n _handleError(error) {\n if (!this._listeners.length || !this._listening) return;\n this._listening = false;\n this.ready = false;\n for (const key of this._keys) this._coupler._decoupleSegments(this._segments.concat(key));\n this._keys = [];\n angular.digest();\n Promise.all(_.map(this._listeners, listener => {\n this._coupler._dispatcher.clearReady(listener.operation);\n return this._coupler._dispatcher.retry(listener.operation, error).catch(e => {\n listener.operation._disconnect(e);\n return false;\n });\n })).then(results => {\n if (_.some(results)) {\n if (this._listeners.length) this._listen();\n } else {\n for (const listener of this._listeners) listener.operation._disconnect(error);\n }\n });\n }\n}\n\n\nclass Node {\n constructor(coupler, path, parent) {\n this._coupler = coupler;\n this.path = path;\n this.parent = parent;\n this._coupler._url.pathname = encodeURI(path);\n this.url = this._coupler._url.toString();\n this.operations = [];\n this.queryCount = 0;\n this.listening = false;\n this.ready = false;\n this.children = {};\n }\n\n get active() {\n return this.count || this.queryCount;\n }\n\n get count() {\n return this.operations.length;\n }\n\n listen(skip) {\n if (!skip && this.count) {\n if (this.listening) return;\n _.forEach(this.operations, op => {this._coupler._dispatcher.clearReady(op);});\n this._coupler._bridge.on(\n this.url, this.url, null, 'value', this._handleSnapshot, this._handleError, this,\n {sync: true});\n this.listening = true;\n } else {\n _.forEach(this.children, child => {child.listen();});\n }\n }\n\n unlisten(skip) {\n if (!skip && this.listening) {\n this._coupler._bridge.off(this.url, this.url, null, 'value', this._handleSnapshot, this);\n this.listening = false;\n this._forAllDescendants(node => {\n if (node.listening) return false;\n if (node.ready) {\n node.ready = false;\n angular.digest();\n }\n });\n } else {\n _.forEach(this.children, child => {child.unlisten();});\n }\n }\n\n _handleSnapshot(snap) {\n this._coupler._queueSnapshotCallback(() => {\n if (!this.listening || !this._coupler.isTrunkCoupled(snap.path)) return;\n this._coupler._applySnapshot(snap);\n if (!this.ready && snap.path === this.path) {\n this.ready = true;\n angular.digest();\n this.unlisten(true);\n this._forAllDescendants(node => {\n for (const op of node.operations) this._coupler._dispatcher.markReady(op);\n });\n }\n });\n }\n\n _handleError(error) {\n if (!this.count || !this.listening) return;\n this.listening = false;\n this._forAllDescendants(node => {\n if (node.listening) return false;\n if (node.ready) {\n node.ready = false;\n angular.digest();\n }\n for (const op of node.operations) this._coupler._dispatcher.clearReady(op);\n });\n // Immediately prune all data below this node. We don't want to decouple it since the operation\n // may want to retry. We also don't want to look for other coupled paths below (that may not be\n // subject to the permission denied error) since they're not listening and the data would get\n // stale. If this node doesn't retry and gets decoupled we'll automatically start listening on\n // descendants and (try to) refill the subtrees.\n this._coupler._prunePath(this.path);\n return Promise.all(_.map(this.operations, op => {\n return this._coupler._dispatcher.retry(op, error).catch(e => {\n op._disconnect(e);\n return false;\n });\n })).then(results => {\n if (_.some(results)) {\n if (this.count) this.listen();\n } else {\n for (const op of this.operations) op._disconnect(error);\n // Pulling all the operations will automatically get us listening on descendants.\n }\n });\n }\n\n _forAllDescendants(iteratee) {\n if (iteratee(this) === false) return;\n _.forEach(this.children, child => child._forAllDescendants(iteratee));\n }\n\n collectCoupledDescendantPaths(paths) {\n if (!paths) paths = {};\n paths[this.path] = this.active;\n if (!this.active) {\n _.forEach(this.children, child => {child.collectCoupledDescendantPaths(paths);});\n }\n return paths;\n }\n}\n\n\nexport default class Coupler {\n constructor(rootUrl, bridge, dispatcher, applySnapshot, prunePath) {\n this._url = new URL(rootUrl);\n this._bridge = bridge;\n this._dispatcher = dispatcher;\n this._applySnapshot = applySnapshot;\n this._pendingSnapshotCallbacks = [];\n this._throttled = {processPendingSnapshots: this._processPendingSnapshots};\n this._prunePath = prunePath;\n this._vue = new Vue({data: {root: undefined, queryHandlers: {}}});\n // Prevent Vue from instrumenting rendering since there's actually nothing to render, and the\n // warnings cause false positives from Lodash primitives when running tests.\n this._vue._renderProxy = this._vue;\n this._nodeIndex = Object.create(null);\n Object.freeze(this);\n // Set root node after freezing Coupler, otherwise it gets vue-ified too.\n this._vue.$data.root = new Node(this, '/');\n this._nodeIndex['/'] = this._root;\n }\n\n get _root() {\n return this._vue.$data.root;\n }\n\n get _queryHandlers() {\n return this._vue.$data.queryHandlers;\n }\n\n destroy() {\n _.forEach(this._queryHandlers, queryHandler => {queryHandler.destroy();});\n this._root.unlisten();\n this._vue.$destroy();\n }\n\n couple(path, operation) {\n return this._coupleSegments(splitPath(path, true), operation);\n }\n\n _coupleSegments(segments, operation) {\n let node;\n let superseded = !operation;\n let ready = false;\n for (const segment of segments) {\n let child = segment ? node.children && node.children[segment] : this._root;\n if (!child) {\n child = new Node(this, `${node.path === '/' ? '' : node.path}/${segment}`, node);\n Vue.set(node.children, segment, child);\n this._nodeIndex[child.path] = child;\n }\n superseded = superseded || child.listening;\n ready = ready || child.ready;\n node = child;\n }\n if (operation) {\n node.operations.push(operation);\n } else {\n node.queryCount++;\n }\n if (superseded) {\n if (operation && ready) this._dispatcher.markReady(operation);\n } else {\n node.listen(); // node will call unlisten() on descendants when ready\n }\n }\n\n decouple(path, operation) {\n return this._decoupleSegments(splitPath(path, true), operation);\n }\n\n _decoupleSegments(segments, operation) {\n const ancestors = [];\n let node;\n for (const segment of segments) {\n node = segment ? node.children && node.children[segment] : this._root;\n if (!node) break;\n ancestors.push(node);\n }\n if (!node || !(operation ? node.count : node.queryCount)) {\n throw new Error(`Path not coupled: ${segments.join('/') || '/'}`);\n }\n if (operation) {\n _.pull(node.operations, operation);\n } else {\n node.queryCount--;\n }\n if (operation && !node.count) {\n // Ideally, we wouldn't resync the full values here since we probably already have the current\n // value for all children. But making sure that's true is tricky in an async system (what if\n // the node's value changes and the update crosses the 'off' call in transit?) and this\n // situation should be sufficiently rare that the optimization is probably not worth it right\n // now.\n node.listen();\n if (node.listening) node.unlisten();\n }\n if (!node.active) {\n for (let i = ancestors.length - 1; i > 0; i--) {\n node = ancestors[i];\n if (node === this._root || node.active || !_.isEmpty(node.children)) break;\n Vue.delete(ancestors[i - 1].children, segments[i]);\n node.ready = undefined;\n delete this._nodeIndex[node.path];\n }\n const path = segments.join('/') || '/';\n this._prunePath(path, this.findCoupledDescendantPaths(path));\n }\n }\n\n subscribe(query, operation, keysCallback) {\n let queryHandler = this._queryHandlers[query.toString()];\n if (!queryHandler) {\n queryHandler = new QueryHandler(this, query);\n Vue.set(this._queryHandlers, query.toString(), queryHandler);\n }\n queryHandler.attach(operation, keysCallback);\n }\n\n unsubscribe(query, operation) {\n const queryHandler = this._queryHandlers[query.toString()];\n if (queryHandler && !queryHandler.detach(operation)) {\n queryHandler.destroy();\n Vue.delete(this._queryHandlers, query.toString());\n }\n }\n\n // Return whether the node at path or any ancestors are coupled.\n isTrunkCoupled(path) {\n const segments = splitPath(path, true);\n let node;\n for (const segment of segments) {\n node = segment ? node.children && node.children[segment] : this._root;\n if (!node) return false;\n if (node.active) return true;\n }\n return false;\n }\n\n findCoupledDescendantPaths(path) {\n let node;\n for (const segment of splitPath(path, true)) {\n node = segment ? node.children && node.children[segment] : this._root;\n if (node && node.active) return {[path]: node.active};\n if (!node) break;\n }\n return node && node.collectCoupledDescendantPaths();\n }\n\n isSubtreeReady(path) {\n let node, childSegment;\n function extractChildSegment(match) {\n childSegment = match.slice(1);\n return '';\n }\n while (!(node = this._nodeIndex[path])) {\n path = path.replace(/\\/[^/]*$/, extractChildSegment) || '/';\n }\n if (childSegment) void node.children; // state an interest in the closest ancestor's children\n while (node) {\n if (node.ready) return true;\n node = node.parent;\n }\n return false;\n }\n\n isQueryReady(query) {\n const queryHandler = this._queryHandlers[query.toString()];\n return queryHandler && queryHandler.ready;\n }\n\n _queueSnapshotCallback(callback) {\n this._pendingSnapshotCallbacks.push(callback);\n this._throttled.processPendingSnapshots.call(this);\n }\n\n _processPendingSnapshots() {\n for (const callback of this._pendingSnapshotCallbacks) callback();\n // Property is frozen, so we need to splice to empty the array.\n this._pendingSnapshotCallbacks.splice(0, Infinity);\n }\n\n throttleSnapshots(delay) {\n if (delay) {\n this._throttled.processPendingSnapshots =\n _.debounce(_.throttle(this._processPendingSnapshots, delay));\n } else {\n this._throttled.processPendingSnapshots = this._processPendingSnapshots;\n }\n }\n}\n\n","import angular from './angularCompatibility.js';\nimport Coupler from './Coupler.js';\nimport Modeler from './Modeler.js';\nimport Reference from './Reference.js';\nimport {escapeKey, escapeKeys, unescapeKey, joinPath, splitPath} from './utils/paths.js';\nimport {wrapPromiseCallback, promiseFinally} from './utils/promises.js';\nimport {SERVER_TIMESTAMP} from './utils/utils.js';\n\nimport _ from 'lodash';\nimport Vue from 'vue';\n\n\nclass Transaction {\n constructor(ref) {\n this._ref = ref;\n this._outcome = undefined;\n this._values = undefined;\n }\n\n get currentValue() {return this._ref.value;}\n get outcome() {return this._outcome;}\n get values() {return this._values;}\n\n _setOutcome(value) {\n if (this._outcome) throw new Error('Transaction already resolved with ' + this._outcome);\n this._outcome = value;\n }\n\n abort() {\n this._setOutcome('abort');\n }\n\n cancel() {\n this._setOutcome('cancel');\n }\n\n set(value) {\n if (value === undefined) throw new Error('Invalid argument: undefined');\n this._setOutcome('set');\n this._values = {'': value};\n }\n\n update(values) {\n if (values === undefined) throw new Error('Invalid argument: undefined');\n if (_.isEmpty(values)) return this.cancel();\n this._setOutcome('update');\n this._values = values;\n }\n}\n\n\nexport default class Tree {\n constructor(truss, rootUrl, bridge, dispatcher) {\n this._truss = truss;\n this._url = new URL(rootUrl);\n this._bridge = bridge;\n this._dispatcher = dispatcher;\n this._firebasePropertyEditAllowed = false;\n this._writeSerial = 0;\n this._localWrites = {};\n this._localWriteTimestamp = null;\n this._initialized = false;\n this._vue = new Vue({data: {$root: undefined}});\n this._modeler = new Modeler(this._vue, truss.constructor.VERSION === 'dev');\n this._coupler = new Coupler(\n rootUrl, bridge, dispatcher, this._integrateSnapshot.bind(this), this._prune.bind(this));\n Object.seal(this);\n // Call this.init(classes) to complete initialization; we need two phases so that truss can bind\n // the tree into its own accessors prior to defining computed functions, which may try to\n // access the tree root via truss.\n }\n\n get root() {\n if (!this._vue.$data.$root) {\n this._vue.$data.$root = this._createObject('/');\n this._fixObject(this._vue.$data.$root);\n this._completeCreateObject(this._vue.$data.$root);\n angular.digest();\n }\n return this._vue.$data.$root;\n }\n\n get truss() {\n return this._truss;\n }\n\n init(classes) {\n if (this._initialized) {\n throw new Error('Data objects already created, too late to mount classes');\n }\n this._initialized = true;\n this._modeler.init(classes, !this._vue.$data.$root);\n const createdObjects = [];\n this._plantPlaceholders(this.root, '/', undefined, createdObjects);\n for (const object of createdObjects) this._completeCreateObject(object);\n }\n\n destroy() {\n this._coupler.destroy();\n if (this._modeler) this._modeler.destroy();\n this._vue.$destroy();\n }\n\n connectReference(ref, method) {\n this._checkHandle(ref);\n const operation = this._dispatcher.createOperation('read', method, ref);\n let unwatch;\n operation._disconnect = this._disconnectReference.bind(this, ref, operation, unwatch);\n this._dispatcher.begin(operation).then(() => {\n if (operation.running && !operation._disconnected) {\n this._coupler.couple(ref.path, operation);\n operation._coupled = true;\n }\n }).catch(_.noop); // ignore exception, let onFailure handlers deal with it\n return operation._disconnect;\n }\n\n _disconnectReference(ref, operation, unwatch, error) {\n if (operation._disconnected) return;\n operation._disconnected = true;\n if (unwatch) unwatch();\n if (operation._coupled) {\n this._coupler.decouple(ref.path, operation); // will call back to _prune if necessary\n operation._coupled = false;\n }\n this._dispatcher.end(operation, error).catch(_.noop);\n }\n\n isReferenceReady(ref) {\n this._checkHandle(ref);\n return this._coupler.isSubtreeReady(ref.path);\n }\n\n connectQuery(query, keysCallback, method) {\n this._checkHandle(query);\n const operation = this._dispatcher.createOperation('read', method, query);\n operation._disconnect = this._disconnectQuery.bind(this, query, operation);\n this._dispatcher.begin(operation).then(() => {\n if (operation.running && !operation._disconnected) {\n this._coupler.subscribe(query, operation, keysCallback);\n operation._coupled = true;\n }\n }).catch(_.noop); // ignore exception, let onFailure handlers deal with it\n return operation._disconnect;\n }\n\n _disconnectQuery(query, operation, error) {\n if (operation._disconnected) return;\n operation._disconnected = true;\n if (operation._coupled) {\n this._coupler.unsubscribe(query, operation); // will call back to _prune if necessary\n operation._coupled = false;\n }\n this._dispatcher.end(operation, error).catch(_.noop);\n }\n\n isQueryReady(query) {\n return this._coupler.isQueryReady(query);\n }\n\n _checkHandle(handle) {\n if (!handle.belongsTo(this._truss)) {\n throw new Error('Reference belongs to another Truss instance');\n }\n }\n\n throttleRemoteDataUpdates(delay) {\n this._coupler.throttleSnapshots(delay);\n }\n\n update(ref, method, values) {\n values = _.mapValues(values, value => escapeKeys(value));\n const numValues = _.size(values);\n if (!numValues) return Promise.resolve();\n if (method === 'update' || method === 'override') {\n checkUpdateHasOnlyDescendantsWithNoOverlap(ref.path, values);\n }\n if (this._applyLocalWrite(values, method === 'override')) return Promise.resolve();\n const pathPrefix = extractCommonPathPrefix(values);\n relativizePaths(pathPrefix, values);\n if (pathPrefix !== ref.path) ref = new Reference(ref._tree, pathPrefix, ref._annotations);\n this._url.pathname = encodeURI(pathPrefix);\n const url = this._url.toString();\n const writeSerial = this._writeSerial;\n const set = numValues === 1;\n const operand = set ? values[''] : values;\n return this._dispatcher.execute('write', set ? 'set' : 'update', ref, operand, () => {\n const promise = this._bridge[set ? 'set' : 'update'](url, operand, writeSerial);\n return promise.catch(e => {\n if (!e.immediateFailure) return Promise.reject(e);\n return promiseFinally(this._repair(ref, values), () => Promise.reject(e));\n });\n });\n }\n\n commit(ref, updateFunction) {\n let tries = 0, sameValueCount = 0;\n const attemptCounts = {};\n updateFunction = wrapPromiseCallback(updateFunction);\n\n const attemptTransaction = counter => {\n if (tries++ >= 25) {\n const error = new Error('Transaction needed too many retries, giving up');\n try {\n _.assign(error, {attemptCounts, sameValueCount});\n } catch {\n // ignore\n }\n return Promise.reject(error);\n }\n counter = counter || 'initial';\n attemptCounts[counter] = (attemptCounts[counter] || 0) + 1;\n const txn = new Transaction(ref);\n let oldValue;\n // Ensure that Vue's watcher queue gets emptied and computed properties are up to date before\n // running the updateFunction.\n return Vue.nextTick().then(() => {\n const newOldValue = toFirebaseJson(txn.currentValue);\n if (_.isEqual(newOldValue, oldValue)) sameValueCount += 1;\n oldValue = newOldValue;\n return updateFunction(txn);\n }).then(() => {\n if (!_.isEqual(oldValue, toFirebaseJson(txn.currentValue))) {\n return attemptTransaction('changed');\n }\n if (txn.outcome === 'abort') return txn; // early return to save time\n const values = _.mapValues(txn.values, value => escapeKeys(value));\n switch (txn.outcome) {\n case 'cancel':\n break;\n case 'set':\n if (this._applyLocalWrite({[ref.path]: values['']})) return Promise.resolve();\n break;\n case 'update':\n checkUpdateHasOnlyDescendantsWithNoOverlap(ref.path, values);\n if (this._applyLocalWrite(values)) return Promise.resolve();\n relativizePaths(ref.path, values);\n break;\n default:\n throw new Error('Invalid transaction outcome: ' + (txn.outcome || 'none'));\n }\n this._url.pathname = encodeURI(ref.path);\n return this._bridge.transaction(\n this._url.toString(), oldValue, values, this._writeSerial\n ).then(result => {\n _.forEach(result.snapshots, snapshot => this._integrateSnapshot(snapshot));\n return result.committed ? txn : attemptTransaction('stale');\n }, e => {\n if (e.immediateFailure && (txn.outcome === 'set' || txn.outcome === 'update')) {\n return promiseFinally(this._repair(ref, values), () => Promise.reject(e));\n }\n return Promise.reject(e);\n });\n });\n };\n\n return this._truss.peek(ref, () => {\n return this._dispatcher.execute('write', 'commit', ref, undefined, attemptTransaction);\n });\n }\n\n _repair(ref, values) {\n // If a write fails early -- that is, before it gets applied to the Firebase client's local\n // tree -- then we need to repair our own local tree manually since Firebase won't send events\n // to unwind the change. This should be very rare since it's always due to a developer mistake\n // so we don't need to be particularly efficient.\n const basePath = ref.path;\n const paths = _(values).keys().flatMap(key => {\n let path = basePath;\n if (key) path = joinPath(path, key);\n return _.keys(this._coupler.findCoupledDescendantPaths(path));\n }).value();\n return Promise.all(_.map(paths, path => {\n this._url.pathname = encodeURI(path);\n return this._bridge.once(this._url.toString()).then(snap => {\n this._integrateSnapshot(snap);\n });\n }));\n }\n\n _applyLocalWrite(values, override) {\n // TODO: correctly apply local writes that impact queries. Currently, a local write will update\n // any objects currently selected by a query, but won't add or remove results.\n this._writeSerial++;\n this._localWriteTimestamp = this._truss.now;\n const createdObjects = [];\n let numLocal = 0;\n _.forEach(values, (value, path) => {\n const local = this._modeler.isLocal(path, value);\n if (local) numLocal++;\n const coupledDescendantPaths =\n local ? {[path]: true} : this._coupler.findCoupledDescendantPaths(path);\n if (_.isEmpty(coupledDescendantPaths)) return;\n const offset = (path === '/' ? 0 : path.length) + 1;\n for (const descendantPath in coupledDescendantPaths) {\n const subPath = descendantPath.slice(offset);\n let subValue = value;\n if (subPath && value !== null && value !== undefined) {\n for (const segment of splitPath(subPath)) {\n subValue = subValue.$data[segment];\n if (subValue === undefined) break;\n }\n }\n if (_.isNil(subValue)) {\n this._prune(descendantPath);\n } else {\n const key = _.last(splitPath(descendantPath));\n this._plantValue(\n descendantPath, key, subValue,\n this._scaffoldAncestors(descendantPath, false, createdObjects), false, override, local,\n createdObjects\n );\n }\n if (!override && !local) this._localWrites[descendantPath] = this._writeSerial;\n }\n });\n for (const object of createdObjects) this._completeCreateObject(object);\n if (numLocal && numLocal < _.size(values)) {\n throw new Error('Write on a mix of local and remote tree paths.');\n }\n return override || !!numLocal;\n }\n\n /**\n * Creates a Truss object and sets all its basic properties: path segment variables, user-defined\n * properties, and computed properties. The latter two will be enumerable so that Vue will pick\n * them up and make the reactive, so you should call _completeCreateObject once it's done so and\n * before any Firebase properties are added.\n */\n _createObject(path, parent) {\n if (!this._initialized && path !== '/') this.init();\n const properties = {\n // We want Vue to wrap this; we'll make it non-enumerable in _fixObject.\n $parent: {value: parent, configurable: true, enumerable: true},\n $path: {value: path}\n };\n if (path === '/') properties.$truss = {value: this._truss};\n\n const object = this._modeler.createObject(path, properties);\n this._modeler.emitLifecycleHook(object, 'beforeCreate');\n Object.defineProperties(object, properties);\n return object;\n }\n\n // To be called on the result of _createObject after it's been inserted into the _vue hierarchy\n // and Vue has had a chance to initialize it.\n _fixObject(object) {\n for (const name of Object.getOwnPropertyNames(object)) {\n const descriptor = Object.getOwnPropertyDescriptor(object, name);\n if (descriptor.configurable && descriptor.enumerable) {\n descriptor.enumerable = false;\n if (_.startsWith(name, '$')) descriptor.configurable = false;\n Object.defineProperty(object, name, descriptor);\n }\n }\n }\n\n // To be called on the result of _createObject after _fixObject, and after any additional Firebase\n // properties have been set, to run initializers.\n _completeCreateObject(object) {\n this._modeler.emitLifecycleHook(object, 'created');\n }\n\n _destroyObject(object) {\n if (!(object && object.$truss) || object.$destroyed) return;\n this._modeler.emitLifecycleHook(object, 'beforeDestroy');\n this._modeler.destroyObject(object);\n // Normally we'd only destroy enumerable children, which are the Firebase properties. However,\n // clients have the option of creating hidden placeholders, so we need to scan non-enumerable\n // properties as well. To distinguish such placeholders from the myriad other non-enumerable\n // properties (that lead all over tree, e.g. $parent), we check that the property's parent is\n // ourselves before destroying.\n for (const key of Object.getOwnPropertyNames(object.$data)) {\n const child = object.$data[key];\n if (child && child.$parent === object) this._destroyObject(child);\n }\n this._modeler.emitLifecycleHook(object, 'destroyed');\n }\n\n _integrateSnapshot(snap) {\n _.forEach(this._localWrites, (writeSerial, path) => {\n if (snap.writeSerial >= writeSerial) delete this._localWrites[path];\n });\n if (snap.exists) {\n const createdObjects = [];\n const parent = this._scaffoldAncestors(snap.path, true, createdObjects);\n if (parent) {\n this._plantValue(\n snap.path, snap.key, snap.value, parent, true, false, false, createdObjects);\n }\n for (const object of createdObjects) this._completeCreateObject(object);\n } else {\n this._prune(snap.path, null, true);\n }\n }\n\n _scaffoldAncestors(path, remoteWrite, createdObjects) {\n let object;\n const segments = _.dropRight(splitPath(path, true));\n let ancestorPath = '/';\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const key = unescapeKey(segment);\n let child = segment ? object.$data[key] : this.root;\n if (segment) ancestorPath += (ancestorPath === '/' ? '' : '/') + segment;\n if (child) {\n if (remoteWrite && this._localWrites[ancestorPath]) return;\n } else {\n child = this._plantValue(\n ancestorPath, key, {}, object, remoteWrite, false, false, createdObjects);\n if (!child) return;\n }\n object = child;\n }\n return object;\n }\n\n _plantValue(path, key, value, parent, remoteWrite, override, local, createdObjects) {\n if (remoteWrite && _.isNil(value)) {\n throw new Error(`Snapshot includes invalid value at ${path}: ${value}`);\n }\n if (remoteWrite && this._localWrites[path || '/']) return;\n if (_.isEqual(value, SERVER_TIMESTAMP)) value = this._localWriteTimestamp;\n let object = parent.$data[key];\n if (!_.isArray(value) && !(local ? _.isPlainObject(value) : _.isObject(value))) {\n this._destroyObject(object);\n if (!local && _.isNil(value)) {\n this._deleteFirebaseProperty(parent, key);\n } else {\n this._setFirebaseProperty(parent, key, value);\n }\n return;\n }\n let objectCreated = false;\n if (!_.isObject(object)) {\n // Need to pre-set the property, so that if the child object attempts to watch any of its own\n // properties while being created the $$touchThis method has something to add a dependency on\n // as the object's own properties won't be made reactive until *after* it's been created.\n this._setFirebaseProperty(parent, key, null);\n object = this._createObject(path, parent);\n this._setFirebaseProperty(parent, key, object, object.$hidden);\n this._fixObject(object);\n createdObjects.push(object);\n objectCreated = true;\n }\n if (override) {\n Object.defineProperty(object, '$overridden', {get: _.constant(true), configurable: true});\n } else if (object.$overridden) {\n delete object.$overridden;\n }\n // Plant hidden placeholders first, so their computed watchers will have a similar precedence to\n // the parent object, and the parent object's other children will get computed first. This can\n // optimize updates when parts of a complex model are broken out into hidden sub-models, and\n // shouldn't risk being overwritten by actual Firebase data since that will rarely (never?) be\n // hidden.\n if (objectCreated) this._plantPlaceholders(object, path, true, createdObjects);\n _.forEach(value, (item, escapedChildKey) => {\n this._plantValue(\n joinPath(path, escapedChildKey), unescapeKey(escapedChildKey), item, object, remoteWrite,\n override, local, createdObjects\n );\n });\n if (objectCreated) {\n this._plantPlaceholders(object, path, false, createdObjects);\n } else {\n _.forEach(object.$data, (item, childKey) => {\n const escapedChildKey = escapeKey(childKey);\n if (!Object.hasOwn(value, escapedChildKey)) {\n this._prune(joinPath(path, escapedChildKey), null, remoteWrite);\n }\n });\n }\n return object;\n }\n\n _plantPlaceholders(object, path, hidden, createdObjects) {\n this._modeler.forEachPlaceholderChild(path, mount => {\n if (hidden !== undefined && hidden !== !!mount.hidden) return;\n const key = unescapeKey(mount.escapedKey);\n if (!Object.hasOwn(object.$data, key)) {\n this._plantValue(\n joinPath(path, mount.escapedKey), key, mount.placeholder, object, false, false, false,\n createdObjects);\n }\n });\n }\n\n _prune(path, lockedDescendantPaths, remoteWrite) {\n lockedDescendantPaths = lockedDescendantPaths || {};\n const object = this.getObject(path);\n if (object === undefined) return;\n if (remoteWrite && this._avoidLocalWritePaths(path, lockedDescendantPaths)) return;\n if (!(_.isEmpty(lockedDescendantPaths) && this._pruneAncestors(path, object)) &&\n _.isObject(object)) {\n // The target object is a placeholder, and all ancestors are placeholders or otherwise needed\n // as well, so we can't delete it. Instead, dive into its descendants to delete what we can.\n this._pruneDescendants(object, lockedDescendantPaths);\n }\n }\n\n _avoidLocalWritePaths(path, lockedDescendantPaths) {\n for (const localWritePath in this._localWrites) {\n if (!Object.hasOwn(this._localWrites, localWritePath)) continue;\n if (path === localWritePath || localWritePath === '/' ||\n _.startsWith(path, localWritePath + '/')) return true;\n if (path === '/' || _.startsWith(localWritePath, path + '/')) {\n const segments = splitPath(localWritePath, true);\n for (let i = segments.length; i > 0; i--) {\n const subPath = segments.slice(0, i).join('/');\n const active = i === segments.length;\n if (lockedDescendantPaths[subPath] || lockedDescendantPaths[subPath] === active) break;\n lockedDescendantPaths[subPath] = active;\n if (subPath === path) break;\n }\n }\n }\n }\n\n _pruneAncestors(targetPath, targetObject) {\n // Destroy the child (unless it's a placeholder that's still needed) and any ancestors that\n // are no longer needed to keep this child rooted, and have no other reason to exist.\n let deleted = false;\n let object = targetObject;\n // The target object may be a primitive, in which case it won't have $path, $parent and $key\n // properties. In that case, use the target path to figure those out instead. Note that all\n // ancestors of the target object will necessarily not be primitives and will have those\n // properties.\n let targetKey;\n const targetParentPath = targetPath.replace(/\\/[^/]+$/, match => {\n targetKey = unescapeKey(match.slice(1));\n return '';\n });\n while (object !== undefined && object !== this.root) {\n const parent =\n object && object.$parent || object === targetObject && this.getObject(targetParentPath);\n if (!this._modeler.isPlaceholder(object && object.$path || targetPath)) {\n const ghostObjects = deleted ? null : [targetObject];\n if (!this._holdsConcreteData(object, ghostObjects)) {\n deleted = true;\n this._deleteFirebaseProperty(\n parent, object && object.$key || object === targetObject && targetKey);\n }\n }\n object = parent;\n }\n return deleted;\n }\n\n _holdsConcreteData(object, ghostObjects) {\n if (_.isNil(object)) return false;\n if (ghostObjects && _.includes(ghostObjects, object)) return false;\n if (!_.isObject(object) || !object.$truss) return true;\n return _.some(object.$data, value => this._holdsConcreteData(value, ghostObjects));\n }\n\n _pruneDescendants(object, lockedDescendantPaths) {\n if (lockedDescendantPaths[object.$path]) return true;\n if (object.$overridden) delete object.$overridden;\n let coupledDescendantFound = false;\n _.forEach(object.$data, (value, key) => {\n let shouldDelete = true;\n let valueLocked;\n if (lockedDescendantPaths[joinPath(object.$path, escapeKey(key))]) {\n shouldDelete = false;\n valueLocked = true;\n } else if (!_.isNil(value) && value.$truss) {\n const placeholder = this._modeler.isPlaceholder(value.$path);\n if (placeholder || _.has(lockedDescendantPaths, value.$path)) {\n valueLocked = this._pruneDescendants(value, lockedDescendantPaths);\n shouldDelete = !placeholder && !valueLocked;\n }\n }\n if (shouldDelete) this._deleteFirebaseProperty(object, key);\n coupledDescendantFound = coupledDescendantFound || valueLocked;\n });\n return coupledDescendantFound;\n }\n\n getObject(path) {\n const segments = splitPath(path);\n let object;\n for (const segment of segments) {\n object = segment ? object.$data[segment] : this.root;\n if (object === undefined) return;\n }\n return object;\n }\n\n _getFirebasePropertyDescriptor(object, data, key) {\n const descriptor = Object.getOwnPropertyDescriptor(data, key);\n if (descriptor) {\n if (!descriptor.enumerable) {\n const child = data[key];\n if (!child || child.$parent !== object) {\n throw new Error(\n `Key conflict between Firebase and instance or computed properties at ` +\n `${object.$path}: ${key}`);\n }\n }\n if (!descriptor.get || !descriptor.set) {\n throw new Error(`Unbound property at ${object.$path}: ${key}`);\n }\n } else if (key in data) {\n throw new Error(\n `Key conflict between Firebase and inherited property at ${object.$path}: ${key}`);\n }\n return descriptor;\n }\n\n _setFirebaseProperty(object, key, value, hidden) {\n const data = Object.hasOwn(object, '$data') ? object.$data : object;\n let descriptor = this._getFirebasePropertyDescriptor(object, data, key);\n if (descriptor) {\n if (hidden) {\n // Redefine property as hidden after it's been created, since we usually don't know whether\n // it should be hidden until too late. This is a one-way deal -- you can't unhide a\n // property later, but that's fine for our purposes.\n Object.defineProperty(data, key, {\n get: descriptor.get, set: descriptor.set, configurable: true, enumerable: false\n });\n }\n if (data[key] === value) return;\n this._firebasePropertyEditAllowed = true;\n data[key] = value;\n this._firebasePropertyEditAllowed = false;\n } else {\n Vue.set(data, key, value);\n descriptor = Object.getOwnPropertyDescriptor(data, key);\n Object.defineProperty(data, key, {\n get: descriptor.get, set: this._overwriteFirebaseProperty.bind(this, descriptor, key),\n configurable: true, enumerable: !hidden\n });\n }\n angular.digest();\n }\n\n _overwriteFirebaseProperty(descriptor, key, newValue) {\n if (!this._firebasePropertyEditAllowed) {\n const e = new Error(`Firebase data cannot be mutated directly: ${key}`);\n e.trussCode = 'firebase_overwrite';\n throw e;\n }\n descriptor.set.call(this, newValue);\n }\n\n _deleteFirebaseProperty(object, key) {\n const data = Object.hasOwn(object, '$data') ? object.$data : object;\n // Make sure it's actually a Firebase property.\n this._getFirebasePropertyDescriptor(object, data, key);\n this._destroyObject(data[key]);\n Vue.delete(data, key);\n angular.digest();\n }\n\n checkVueObject(object, path) {\n this._modeler.checkVueObject(object, path);\n }\n}\n\n\nexport function checkUpdateHasOnlyDescendantsWithNoOverlap(rootPath, values) {\n // First, check all paths for correctness and absolutize them, since there could be a mix of\n // absolute paths and relative keys.\n _.forEach(_.keys(values), path => {\n if (path.charAt(0) === '/') {\n if (!(path === rootPath || rootPath === '/' ||\n _.startsWith(path, rootPath + '/') && path.length > rootPath.length + 1)) {\n throw new Error(`Update item is not a descendant of target ref: ${path}`);\n }\n } else {\n if (_.includes(path, '/')) {\n throw new Error(`Update item deep path must be absolute, taken from a reference: ${path}`);\n }\n const absolutePath = joinPath(rootPath, escapeKey(path));\n if (Object.hasOwn(values, absolutePath)) {\n throw new Error(`Update items overlap: ${path} and ${absolutePath}`);\n }\n values[absolutePath] = values[path];\n delete values[path];\n }\n });\n // Then check for overlaps;\n const allPaths = _(values).keys().map(path => joinPath(path, '')).sortBy('length').value();\n _.forEach(values, (value, path) => {\n for (const otherPath of allPaths) {\n if (otherPath.length > path.length) break;\n if (path !== otherPath && _.startsWith(path, otherPath)) {\n throw new Error(`Update items overlap: ${otherPath} and ${path}`);\n }\n }\n });\n}\n\nexport function extractCommonPathPrefix(values) {\n let prefixSegments;\n _.forEach(values, (value, path) => {\n const segments = path === '/' ? [''] : splitPath(path, true);\n if (prefixSegments) {\n let firstMismatchIndex = 0;\n const maxIndex = Math.min(prefixSegments.length, segments.length);\n while (firstMismatchIndex < maxIndex &&\n prefixSegments[firstMismatchIndex] === segments[firstMismatchIndex]) {\n firstMismatchIndex++;\n }\n prefixSegments = prefixSegments.slice(0, firstMismatchIndex);\n if (!prefixSegments.length) return false;\n } else {\n prefixSegments = segments;\n }\n });\n return prefixSegments.length === 1 ? '/' : prefixSegments.join('/');\n}\n\nexport function relativizePaths(rootPath, values) {\n const offset = rootPath === '/' ? 1 : rootPath.length + 1;\n _.forEach(_.keys(values), path => {\n values[path.slice(offset)] = values[path];\n delete values[path];\n });\n}\n\nexport function toFirebaseJson(object) {\n if (!_.isObject(object)) return object;\n const result = {};\n const data = object.$data;\n for (const key in data) {\n if (Object.hasOwn(data, key)) result[escapeKey(key)] = toFirebaseJson(data[key]);\n }\n return result;\n}\n\n","import _ from 'lodash';\nimport Vue from 'vue';\nimport angular from './angularCompatibility.js';\nimport Bridge from './Bridge.js';\nimport Connector from './Connector.js';\nimport Dispatcher from './Dispatcher.js';\nimport KeyGenerator from './KeyGenerator.js';\nimport MetaTree from './MetaTree.js';\nimport {Handle} from './Reference.js';\nimport {BaseValue} from './Modeler.js';\nimport Tree from './Tree.js';\nimport stats from './utils/stats.js';\nimport {escapeKey, unescapeKey} from './utils/paths.js';\nimport {wrapPromiseCallback, promiseCancel, promiseFinally} from './utils/promises.js';\nimport {SERVER_TIMESTAMP, copyPrototype} from './utils/utils.js';\n\n\nlet bridge, logging;\nconst workerFunctions = {};\n// This version is filled in by the build, don't reformat the line.\nconst VERSION = 'dev';\n\n\nexport default class Truss {\n\n /**\n * Create a new Truss instance, specific to a given datastore. To avoid confusion there should be\n * exactly one Truss per root datastore URL, so in most code this will be a singleton.\n *\n * @param rootUrl {String} The root URL, https://{project}.firebaseio.com.\n */\n constructor(rootUrl) {\n // TODO: allow rootUrl to be a test database object for testing\n if (!bridge) {\n throw new Error('Truss worker not connected, please call Truss.connectWorker first');\n }\n this._rootUrl = rootUrl.replace(/\\/$/, '');\n this._keyGenerator = new KeyGenerator();\n this._dispatcher = new Dispatcher(bridge);\n this._vue = new Vue();\n\n bridge.trackServer(this._rootUrl);\n this._tree = new Tree(this, this._rootUrl, bridge, this._dispatcher);\n this._metaTree = new MetaTree(this._rootUrl, this._tree, bridge, this._dispatcher);\n\n Object.freeze(this);\n }\n\n get info() {return this._metaTree.root;}\n get store() {return this._tree.root;}\n\n /**\n * Mount a set of classes against the datastore structure. Must be called at most once, and\n * cannot be called once any data has been loaded into the tree.\n * @param classes {Array | Object} A list of the classes to map onto the\n * datastore structure. Each class must have a static $trussMount property that is a\n * (wildcarded) unescaped datastore path, or an options object\n * {path: string, placeholder: object}, or an array of either. If the list is an object then\n * the keys serve as default option-less $trussMount paths for classes that don't define an\n * explicit $trussMount.\n */\n mount(classes) {\n this._tree.init(classes);\n }\n\n destroy() {\n this._vue.$destroy();\n this._tree.destroy();\n this._metaTree.destroy();\n }\n\n get now() {return Date.now() + this.info.timeOffset;}\n newKey() {return this._keyGenerator.generateUniqueKey(this.now);}\n\n authenticate(token) {\n return this._metaTree.authenticate(token);\n }\n\n unauthenticate() {\n return this._metaTree.unauthenticate();\n }\n\n intercept(actionType, callbacks) {\n return this._dispatcher.intercept(actionType, callbacks);\n }\n\n // connections are {key: Query | Object | fn() -> (Query | Object)}\n connect(scope, connections) {\n if (!connections) {\n connections = scope;\n scope = undefined;\n }\n if (connections instanceof Handle || _.isFunction(connections)) connections = {_: connections};\n return new Connector(scope, connections, this._tree, 'connect');\n }\n\n // target is Reference, Query, or connection Object like above\n peek(target, callback) {\n callback = wrapPromiseCallback(callback || _.identity);\n let cleanup, cancel;\n const promise = Promise.resolve().then(() => new Promise((resolve, reject) => {\n const scope = {};\n let callbackPromise;\n\n let connector = new Connector(scope, {result: target}, this._tree, 'peek');\n\n let unintercept = this.intercept('peek', {onFailure: op => {\n function match(descriptor) {\n if (!descriptor) return;\n if (descriptor instanceof Handle) return op.target.isEqual(descriptor);\n return _.some(descriptor, value => match(value));\n }\n if (match(connector.at)) {\n reject(op.error);\n cleanup();\n }\n }});\n\n let unobserve = this.observe(() => connector.ready, ready => {\n if (!ready) return;\n unobserve();\n unobserve = null;\n callbackPromise = promiseFinally(\n callback(scope.result), () => {angular.digest(); callbackPromise = null; cleanup();}\n ).then(result => {resolve(result);}, error => {reject(error);});\n });\n\n cleanup = () => {\n if (unobserve) {unobserve(); unobserve = null;}\n if (unintercept) {unintercept(); unintercept = null;}\n if (connector) {connector.destroy(); connector = null;}\n if (callbackPromise && callbackPromise.cancel) callbackPromise.cancel();\n };\n\n cancel = () => {\n reject(new Error('Canceled'));\n cleanup();\n };\n }));\n return promiseCancel(promise, cancel);\n }\n\n observe(subjectFn, callbackFn, options) {\n const usePreciseDefaults = _.isObject(options && options.precise);\n let numCallbacks = 0;\n let oldValueClone;\n if (usePreciseDefaults) {\n oldValueClone = options.deep ? _.cloneDeep(options.precise) : _.clone(options.precise);\n }\n\n // This needs to be a `let` instead of a `const` to avoid a \"Cannot access before\n // initialization\" error.\n let unwatch;\n // eslint-disable-next-line prefer-const\n unwatch = this._vue.$watch(subjectFn, (newValue, oldValue) => {\n if (options && options.precise) {\n const newValueClone = usePreciseDefaults ?\n (options.deep ?\n _.defaultsDeep({}, newValue, options.precise) :\n _.defaults({}, newValue, options.precise)) :\n (options.deep ? _.cloneDeep(newValue) : _.clone(newValue));\n if (_.isEqual(newValueClone, oldValueClone)) return;\n oldValueClone = newValueClone;\n }\n numCallbacks++;\n if (unwatch || options && options.immediate) {\n callbackFn(newValue, oldValue);\n angular.digest();\n } else {\n // Delay the immediate callback until we've had a chance to return the unwatch function.\n Promise.resolve().then(() => {\n const vm = options && options.vm;\n if (numCallbacks > 1 || (vm && vm.$destroyed)) return;\n callbackFn(newValue, oldValue);\n // No need to digest since under Angular we'll be using $q as Promise.\n });\n }\n }, {immediate: true, deep: options && options.deep});\n\n if (options && options.scope) options.scope.$on('$destroy', unwatch);\n return unwatch;\n }\n\n when(expression, options) {\n let cleanup, timeoutHandle;\n let promise = new Promise((resolve, reject) => {\n let unobserve = this.observe(expression, value => {\n if (!value) return;\n // Wait for computed properties to settle and double-check.\n Vue.nextTick(() => {\n value = expression();\n if (!value) return;\n resolve(value);\n cleanup();\n });\n });\n if (_.has(options, 'timeout')) {\n timeoutHandle = setTimeout(() => {\n timeoutHandle = null;\n reject(new Error(options.timeoutMessage || 'Timeout'));\n cleanup();\n }, options.timeout);\n }\n cleanup = () => {\n if (unobserve) {unobserve(); unobserve = null;}\n if (timeoutHandle) {clearTimeout(timeoutHandle); timeoutHandle = null;}\n reject(new Error('Canceled'));\n };\n });\n promise = promiseCancel(promiseFinally(promise, cleanup), cleanup);\n if (options && options.scope) options.scope.$on('$destroy', () => {promise.cancel();});\n return promise;\n }\n\n nextTick() {\n let cleanup;\n let promise = new Promise((resolve, reject) => {\n Vue.nextTick(resolve);\n cleanup = () => {\n reject(new Error('Canceled'));\n };\n });\n promise = promiseCancel(promise, cleanup);\n return promise;\n }\n\n throttleRemoteDataUpdates(delay) {\n this._tree.throttleRemoteDataUpdates(delay);\n }\n\n checkObjectsForRogueProperties() {\n this._tree.checkVueObject(this._tree.root, '/');\n }\n\n static get computedPropertyStats() {\n return stats;\n }\n\n static async connectWorker(webWorker, config) {\n if (bridge) throw new Error('Worker already connected');\n if (_.isString(webWorker)) {\n const Worker = window.SharedWorker || window.Worker;\n if (!Worker) throw new Error('Browser does not implement Web Workers');\n if (!navigator.locks) throw new Error('Browser does not implement locks');\n webWorker = new Worker(webWorker);\n const random = window.crypto.getRandomValues(new Uint32Array(1))[0];\n webWorker.lockName = `truss_worker_lock_${Date.now()}.${random}`;\n await new Promise((resolve, reject) => {\n navigator.locks.request(webWorker.lockName, () => {\n resolve();\n // eslint-disable-next-line lodash/prefer-noop\n return new Promise(() => {/* release lock only on page exit or crash */});\n }).catch(reject);\n });\n }\n bridge = new Bridge(webWorker);\n if (logging) bridge.enableLogging(logging);\n const {exposedFunctionNames, firebaseSdkVersion} =\n await bridge.init(webWorker.lockName, config);\n Object.defineProperty(Truss, 'FIREBASE_SDK_VERSION', {value: firebaseSdkVersion});\n for (const name of exposedFunctionNames) Truss.preExpose(name);\n }\n\n static get worker() {return workerFunctions;}\n\n static preExpose(functionName) {\n const segments = functionName.split('.');\n let obj = Truss.worker;\n for (const segment of segments.slice(0, -1)) {\n if (!Object.hasOwnProperty.call(obj, segment)) obj[segment] = {};\n obj = obj[segment];\n }\n obj[segments[segments.length - 1]] = bridge.bindExposedFunction(functionName);\n }\n\n static bounceConnection() {return bridge.bounceConnection();}\n static suspend() {return bridge.suspend();}\n static debugPermissionDeniedErrors(simulatedTokenGenerator, maxSimulationDuration, callFilter) {\n return bridge.debugPermissionDeniedErrors(\n simulatedTokenGenerator, maxSimulationDuration, callFilter);\n }\n\n static debounceAngularDigest(wait) {\n angular.debounceDigest(wait);\n }\n\n static escapeKey(key) {return escapeKey(key);}\n static unescapeKey(escapedKey) {return unescapeKey(escapedKey);}\n\n static enableLogging(fn) {\n logging = fn;\n if (bridge) bridge.enableLogging(fn);\n }\n\n // Duplicate static constants on instance for convenience.\n get SERVER_TIMESTAMP() {return Truss.SERVER_TIMESTAMP;}\n get VERSION() {return Truss.VERSION;}\n get FIREBASE_SDK_VERSION() {return Truss.FIREBASE_SDK_VERSION;}\n}\n\nObject.defineProperties(Truss, {\n SERVER_TIMESTAMP: {value: SERVER_TIMESTAMP},\n VERSION: {value: VERSION},\n Model: {value: Object},\n\n ComponentPlugin: {value: {\n install(Vue2, pluginOptions) {\n if (Vue !== Vue2) throw new Error('Multiple versions of Vue detected');\n if (!pluginOptions.truss) {\n throw new Error('Need to pass `truss` instance as an option to use the ComponentPlugin');\n }\n const prototypeExtension = {\n $truss: {value: pluginOptions.truss},\n $destroyed: {get() {return this._isBeingDestroyed || this._isDestroyed;}},\n $$touchThis: {value() {if (this.__ob__) this.__ob__.dep.depend();}}\n };\n const conflictingKeys = _(prototypeExtension).keys()\n .union(_.keys(BaseValue.prototype)).intersection(_.keys(Vue.prototype)).value();\n if (conflictingKeys.length) {\n throw new Error(\n 'Truss extension properties conflict with Vue properties: ' + conflictingKeys.join(', '));\n }\n Object.defineProperties(Vue.prototype, prototypeExtension);\n copyPrototype(BaseValue, Vue);\n }\n }}\n});\n\nangular.defineModule(Truss);\n"],"names":["angular"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"firetruss.es2015.js","sources":["../src/angularCompatibility.js","../src/utils/LruCache.js","../src/utils/paths.js","../src/Bridge.js","../src/Reference.js","../src/utils/utils.js","../src/utils/stats.js","../src/Connector.js","../src/utils/promises.js","../src/Dispatcher.js","../src/KeyGenerator.js","../src/MetaTree.js","../src/Modeler.js","../src/Coupler.js","../src/Tree.js","../src/Truss.js"],"sourcesContent":["import _ from 'lodash';\nimport Vue from 'vue';\n\n\nlet vue;\nlet lastDigestRequest = 0, digestInProgress = false;\nconst bareDigest = function() {\n if (vue.digestRequest > lastDigestRequest) return;\n vue.digestRequest = lastDigestRequest + 1;\n};\n\nconst angularProxy = {\n active: typeof window !== 'undefined' && window.angular\n};\n\nif (angularProxy.active) {\n initAngular();\n} else {\n _.forEach(['digest', 'watch', 'defineModule', 'debounceDigest'], method => {\n angularProxy[method] = _.noop;\n });\n}\n\nfunction initAngular() {\n const module = window.angular.module('firetruss', []);\n angularProxy.digest = bareDigest;\n angularProxy.watch = function() {throw new Error('Angular watch proxy not yet initialized');};\n angularProxy.defineModule = function(Truss) {\n module.constant('Truss', Truss);\n };\n angularProxy.debounceDigest = function(wait) {\n if (wait) {\n const debouncedDigest = _.debounce(bareDigest, wait);\n angularProxy.digest = function() {\n if (vue.digestRequest > lastDigestRequest) return;\n if (digestInProgress) bareDigest(); else debouncedDigest();\n };\n } else {\n angularProxy.digest = bareDigest;\n }\n };\n\n module.config(['$provide', function($provide) {\n $provide.decorator('$rootScope', ['$delegate', '$exceptionHandler',\n function($delegate, $exceptionHandler) {\n const rootScope = $delegate;\n angularProxy.watch = rootScope.$watch.bind(rootScope);\n const proto = Object.getPrototypeOf(rootScope);\n const angularDigest = proto.$digest;\n proto.$digest = bareDigest;\n proto.$digest.original = angularDigest;\n vue = new Vue({data: {digestRequest: 0}});\n vue.$watch(() => vue.digestRequest, () => {\n if (vue.digestRequest > lastDigestRequest) {\n // Make sure we execute the digest outside the Vue task queue, because otherwise if the\n // client replaced Promise with angular.$q all Truss.nextTick().then() functions will be\n // executed inside the Angular digest and hence inside the Vue task queue. But\n // Truss.nextTick() is used precisely to avoid that. Note that it's OK to use\n // Vue.nextTick() here because even though it will schedule a flush via Promise.then()\n // it only uses the native Promise, before it could've been monkey-patched by the app.\n Vue.nextTick(() => {\n if (vue.digestRequest <= lastDigestRequest) return;\n digestInProgress = true;\n rootScope.$digest.original.call(rootScope);\n lastDigestRequest = vue.digestRequest = vue.digestRequest + 1;\n });\n } else {\n digestInProgress = false;\n }\n });\n const watcher = _.last(vue._watchers || vue._scope.effects);\n watcher.id = Infinity; // make sure watcher is scheduled last\n patchRenderWatcherGet(Object.getPrototypeOf(watcher));\n return rootScope;\n }\n ]);\n }]);\n}\n\n// This is a kludge that catches errors that get through render watchers and end up killing the\n// entire Vue event loop (e.g., errors raised in transition callbacks). The state of the DOM may\n// not be consistent after such an error is caught, but the global error handler should stop the\n// world anyway. May be related to https://github.com/vuejs/vue/issues/7653.\nfunction patchRenderWatcherGet(prototype) {\n const originalGet = prototype.get;\n prototype.get = function get() {\n try {\n return originalGet.call(this);\n } catch (e) {\n if (this.vm._watcher === this && Vue.config.errorHandler) {\n Vue.config.errorHandler(e, this.vm, 'uncaught render error');\n } else {\n throw e;\n }\n }\n };\n}\n\nexport default angularProxy;\n","import _ from 'lodash';\n\n\nclass LruCacheItem {\n constructor(key, value) {\n this.key = key;\n this.value = value;\n this.touch();\n }\n\n touch() {\n this.timestamp = Date.now();\n }\n}\n\n\nexport default class LruCache {\n constructor(maxSize, pruningSize) {\n this._items = Object.create(null);\n this._size = 0;\n this._maxSize = maxSize;\n this._pruningSize = pruningSize || Math.ceil(maxSize * 0.10);\n }\n\n has(key) {\n return Boolean(this._items[key]);\n }\n\n get(key) {\n const item = this._items[key];\n if (!item) return;\n item.touch();\n return item.value;\n }\n\n set(key, value) {\n const item = this._items[key];\n if (item) {\n item.value = value;\n } else {\n if (this._size >= this._maxSize) this._prune();\n this._items[key] = new LruCacheItem(key, value);\n this._size += 1;\n }\n }\n\n delete(key) {\n const item = this._items[key];\n if (!item) return;\n delete this._items[key];\n this._size -= 1;\n }\n\n _prune() {\n const itemsToPrune =\n _(this._items).toArray().sortBy('timestamp').take(this._pruningSize).value();\n for (const item of itemsToPrune) this.delete(item.key);\n }\n}\n","import LruCache from './LruCache.js';\nimport _ from 'lodash';\n\n\nconst pathSegments = new LruCache(1000);\nconst pathMatchers = {};\nconst maxNumPathMatchers = 1000;\n\n\nexport function escapeKey(key) {\n if (!key) return key;\n // eslint-disable-next-line no-control-regex\n return key.toString().replace(/[\\x00-\\x1f\\\\.$#[\\]\\x7f/]/g, char =>\n '\\\\' + _.padStart(char.charCodeAt(0).toString(16), 2, '0')\n );\n}\n\nexport function unescapeKey(key) {\n if (!key) return key;\n return key.toString().replace(/\\\\[0-9a-f]{2}/gi, code =>\n String.fromCharCode(parseInt(code.slice(1), 16))\n );\n}\n\nexport function escapeKeys(object) {\n // isExtensible check avoids trying to escape references to Firetruss internals.\n if (!(_.isObject(object) && Object.isExtensible(object))) return object;\n let result = object;\n for (const key in object) {\n if (!Object.hasOwn(object, key)) continue;\n const value = object[key];\n const escapedKey = escapeKey(key);\n const escapedValue = escapeKeys(value);\n if (escapedKey !== key || escapedValue !== value) {\n if (result === object) result = _.clone(object);\n result[escapedKey] = escapedValue;\n if (result[key] === value) delete result[key];\n }\n }\n return result;\n}\n\nexport function joinPath() {\n const segments = [];\n for (let segment of arguments) {\n if (!_.isString(segment)) segment = '' + segment;\n if (segment.charAt(0) === '/') segments.splice(0, segments.length);\n segments.push(segment);\n }\n if (segments[0] === '/') segments[0] = '';\n return segments.join('/');\n}\n\nexport function splitPath(path, leaveSegmentsEscaped) {\n const key = (leaveSegmentsEscaped ? 'esc:' : '') + path;\n let segments = pathSegments.get(key);\n if (!segments) {\n segments = path.split('/');\n if (!leaveSegmentsEscaped) segments = _.map(segments, unescapeKey);\n pathSegments.set(key, segments);\n }\n return segments;\n}\n\n\nclass PathMatcher {\n constructor(pattern) {\n this.variables = [];\n const prefixMatch = _.endsWith(pattern, '/$*');\n if (prefixMatch) pattern = pattern.slice(0, -3);\n const pathTemplate = pattern.replace(/\\/\\$[^/]*/g, match => {\n if (match.length > 1) this.variables.push(match.slice(1));\n return '\\u0001';\n });\n Object.freeze(this.variables);\n if (/[.$#[\\]]|\\\\(?![0-9a-f][0-9a-f])/i.test(pathTemplate)) {\n throw new Error('Path pattern has unescaped keys: ' + pattern);\n }\n this._regex = new RegExp(\n // eslint-disable-next-line no-control-regex\n '^' + pathTemplate.replace(/\\u0001/g, '/([^/]+)') + (prefixMatch ? '($|/)' : '$'));\n }\n\n match(path) {\n this._regex.lastIndex = 0;\n const match = this._regex.exec(path);\n if (!match) return;\n const bindings = {};\n for (let i = 0; i < this.variables.length; i++) {\n bindings[this.variables[i]] = unescapeKey(match[i + 1]);\n }\n return bindings;\n }\n\n test(path) {\n return this._regex.test(path);\n }\n\n toString() {\n return this._regex.toString();\n }\n}\n\nexport function makePathMatcher(pattern) {\n let matcher = pathMatchers[pattern];\n if (!matcher) {\n matcher = new PathMatcher(pattern);\n // Minimal pseudo-LRU behavior, since we don't expect to actually fill up the cache.\n if (_.size(pathMatchers) === maxNumPathMatchers) delete pathMatchers[_.keys(pathMatchers)[0]];\n pathMatchers[pattern] = matcher;\n }\n return matcher;\n}\n","import {unescapeKey} from './utils/paths.js';\nimport _ from 'lodash';\n\nconst MIN_WORKER_VERSION = '4.0.0';\n\n\nclass Snapshot {\n constructor({path, value, exists, writeSerial}) {\n this._path = path;\n this._value = value;\n this._exists = value === undefined ? exists || false : value !== null;\n this._writeSerial = writeSerial;\n }\n\n get path() {\n return this._path;\n }\n\n get exists() {\n return this._exists;\n }\n\n get value() {\n if (this._value === undefined) throw new Error('Value omitted from snapshot');\n return this._value;\n }\n\n get key() {\n if (this._key === undefined) this._key = unescapeKey(this._path.replace(/.*\\//, ''));\n return this._key;\n }\n\n get writeSerial() {\n return this._writeSerial;\n }\n}\n\n\nexport default class Bridge {\n constructor(webWorker) {\n this._idCounter = 0;\n this._deferreds = {};\n this._suspended = false;\n this._servers = {};\n this._callbacks = {};\n this._log = _.noop;\n this._inboundMessages = [];\n this._outboundMessages = [];\n this._flushMessageQueue = this._flushMessageQueue.bind(this);\n this._port = webWorker.port || webWorker;\n this._shared = !!webWorker.port;\n this._dead = undefined;\n Object.seal(this);\n this._port.onmessage = this._receive.bind(this);\n }\n\n init(lockName, config) {\n const items = [];\n try {\n const storage = window.localStorage || window.sessionStorage;\n if (!storage) throw new Error('localStorage and sessionStorage not available');\n for (let i = 0; i < storage.length; i++) {\n const key = storage.key(i);\n items.push({key, value: storage.getItem(key)});\n }\n } catch {\n // Some browsers don't like us accessing local storage -- nothing we can do.\n }\n return this._send({msg: 'init', storage: items, config, lockName}).then(response => {\n const workerVersion = response.version.match(/^(\\d+)\\.(\\d+)\\.(\\d+)(-.*)?$/);\n if (workerVersion) {\n const minVersion = MIN_WORKER_VERSION.match(/^(\\d+)\\.(\\d+)\\.(\\d+)(-.*)?$/);\n // Major version must match precisely, minor and patch must be greater than or equal.\n const sufficient = workerVersion[1] === minVersion[1] && (\n workerVersion[2] > minVersion[2] ||\n workerVersion[2] === minVersion[2] && workerVersion[3] >= minVersion[3]\n );\n if (!sufficient) {\n return Promise.reject(new Error(\n `Incompatible Firetruss worker version: ${response.version} ` +\n `(${MIN_WORKER_VERSION} or better required)`\n ));\n }\n }\n if (response.livenessLockName) {\n navigator.locks.request(response.livenessLockName, () => {\n this.crash({error: {\n name: 'Error', message: 'worker terminated', extra: {shared: this._shared}\n }});\n });\n }\n return response;\n });\n }\n\n suspend(suspended) {\n if (suspended === undefined) suspended = true;\n if (this._suspended === suspended) return;\n this._suspended = suspended;\n if (!suspended) {\n this._receiveMessages(this._inboundMessages);\n this._inboundMessages = [];\n if (this._outboundMessages.length) Promise.resolve().then(this._flushMessageQueue);\n }\n }\n\n enableLogging(fn) {\n if (fn) {\n if (fn === true) {\n fn = console.log.bind(console);\n this._send({msg: 'enableFirebaseLogging', value: true});\n }\n this._log = fn;\n } else {\n this._send({msg: 'enableFirebaseLogging', value: false});\n this._log = _.noop;\n }\n }\n\n _send(message) {\n message.id = ++this._idCounter;\n let promise;\n if (this._dead) {\n return Promise.reject(this._dead);\n } else if (message.oneWay) {\n promise = Promise.resolve();\n } else {\n promise = new Promise((resolve, reject) => {\n this._deferreds[message.id] = {resolve, reject};\n });\n const deferred = this._deferreds[message.id];\n deferred.promise = promise;\n deferred.params = message;\n }\n if (!this._outboundMessages.length && !this._suspended) {\n Promise.resolve().then(this._flushMessageQueue);\n }\n this._log('send:', message);\n this._outboundMessages.push(message);\n return promise;\n }\n\n _flushMessageQueue() {\n this._log('flush:', this._outboundMessages.length, 'messages');\n try {\n this._port.postMessage(this._outboundMessages);\n this._outboundMessages = [];\n } catch (e) {\n this._log('flush failed:', e);\n e.extra = {messages: this._outboundMessages};\n throw e;\n }\n }\n\n _receive(event) {\n if (this._dead) return;\n if (this._suspended) {\n this._inboundMessages = this._inboundMessages.concat(event.data);\n } else {\n this._receiveMessages(event.data);\n }\n }\n\n _receiveMessages(messages) {\n for (const message of messages) {\n this._log('recv:', message);\n const fn = this[message.msg];\n if (!_.isFunction(fn)) throw new Error('Unknown message: ' + message.msg);\n fn.call(this, message);\n }\n }\n\n bindExposedFunction(name) {\n return (function() {\n return this._send({msg: 'call', name, args: Array.prototype.slice.call(arguments)});\n }).bind(this);\n }\n\n resolve(message) {\n const deferred = this._deferreds[message.id];\n if (!deferred) throw new Error('Received resolution to inexistent Firebase call');\n delete this._deferreds[message.id];\n deferred.resolve(message.result);\n }\n\n reject(message) {\n const deferred = this._deferreds[message.id];\n if (!deferred) throw new Error('Received rejection of inexistent Firebase call');\n delete this._deferreds[message.id];\n deferred.reject(errorFromJson(message.error, deferred.params));\n }\n\n crash(message) {\n let details = `Internal worker error: ${message.error.name}: ${message.error.message}`;\n if (message.error.cause) details += ` (caused by ${message.error.cause})`;\n this._dead = new Error(details);\n if (message.error.extra) this._dead.extra = message.error.extra;\n _.forEach(this._deferreds, ({reject}) => {reject(this._dead);});\n this._deferreds = {};\n throw this._dead;\n }\n\n updateLocalStorage({items}) {\n try {\n const storage = window.localStorage || window.sessionStorage;\n for (const item of items) {\n if (item.value === null) {\n storage.removeItem(item.key);\n } else {\n storage.setItem(item.key, item.value);\n }\n }\n } catch {\n // If we're denied access, there's nothing we can do.\n }\n }\n\n trackServer(rootUrl) {\n if (Object.hasOwn(this._servers, rootUrl)) return Promise.resolve();\n const server = this._servers[rootUrl] = {authListeners: []};\n const authCallbackId = this._registerCallback(this._authCallback.bind(this, server));\n this._send({msg: 'onAuth', url: rootUrl, callbackId: authCallbackId});\n }\n\n _authCallback(server, auth) {\n server.auth = auth;\n for (const listener of server.authListeners) listener(auth);\n }\n\n onAuth(rootUrl, callback, context) {\n const listener = callback.bind(context);\n listener.callback = callback;\n listener.context = context;\n this._servers[rootUrl].authListeners.push(listener);\n listener(this.getAuth(rootUrl));\n }\n\n offAuth(rootUrl, callback, context) {\n const authListeners = this._servers[rootUrl].authListeners;\n for (let i = 0; i < authListeners.length; i++) {\n const listener = authListeners[i];\n if (listener.callback === callback && listener.context === context) {\n authListeners.splice(i, 1);\n break;\n }\n }\n }\n\n getAuth(rootUrl) {\n return this._servers[rootUrl].auth;\n }\n\n authWithCustomToken(url, authToken) {\n return this._send({msg: 'authWithCustomToken', url, authToken});\n }\n\n authAnonymously(url) {\n return this._send({msg: 'authAnonymously', url});\n }\n\n unauth(url) {\n return this._send({msg: 'unauth', url});\n }\n\n set(url, value, writeSerial) {return this._send({msg: 'set', url, value, writeSerial});}\n update(url, value, writeSerial) {return this._send({msg: 'update', url, value, writeSerial});}\n\n once(url, writeSerial) {\n return this._send({msg: 'once', url, writeSerial}).then(snapshot => new Snapshot(snapshot));\n }\n\n on(listenerKey, url, spec, eventType, snapshotCallback, cancelCallback, context, options) {\n const handle = {\n listenerKey, eventType, snapshotCallback, cancelCallback, context,\n params: {msg: 'on', listenerKey, url, spec, eventType, options}\n };\n const callback = this._onCallback.bind(this, handle);\n this._registerCallback(callback, handle);\n // Keep multiple IDs to allow the same snapshotCallback to be reused.\n snapshotCallback.__callbackIds = snapshotCallback.__callbackIds || [];\n snapshotCallback.__callbackIds.push(handle.id);\n this._send({\n msg: 'on', listenerKey, url, spec, eventType, callbackId: handle.id, options\n }).catch(error => {\n callback(error);\n });\n }\n\n off(listenerKey, url, spec, eventType, snapshotCallback, context) {\n const idsToDeregister = [];\n let callbackId;\n if (snapshotCallback) {\n callbackId = this._findAndRemoveCallbackId(\n snapshotCallback, handle => _.isMatch(handle, {listenerKey, eventType, context})\n );\n if (!callbackId) return Promise.resolve(); // no-op, never registered or already deregistered\n idsToDeregister.push(callbackId);\n } else {\n for (const id of _.keys(this._callbacks)) {\n const handle = this._callbacks[id];\n if (handle.listenerKey === listenerKey && (!eventType || handle.eventType === eventType)) {\n idsToDeregister.push(id);\n }\n }\n }\n // Nullify callbacks first, then deregister after off() is complete. We don't want any\n // callbacks in flight from the worker to be invoked while the off() is processing, but we don't\n // want them to throw an exception either.\n for (const id of idsToDeregister) this._nullifyCallback(id);\n return this._send({msg: 'off', listenerKey, url, spec, eventType, callbackId}).then(() => {\n for (const id of idsToDeregister) this._deregisterCallback(id);\n });\n }\n\n _onCallback(handle, error, snapshotJson) {\n if (error) {\n this._deregisterCallback(handle.id);\n const e = errorFromJson(error, handle.params);\n if (handle.cancelCallback) {\n handle.cancelCallback.call(handle.context, e);\n } else {\n console.error(e);\n }\n } else {\n handle.snapshotCallback.call(handle.context, new Snapshot(snapshotJson));\n }\n }\n\n transaction(url, oldValue, relativeUpdates, writeSerial) {\n return this._send(\n {msg: 'transaction', url, oldValue, relativeUpdates, writeSerial}\n ).then(result => {\n if (result.snapshots) {\n result.snapshots = _.map(result.snapshots, jsonSnapshot => new Snapshot(jsonSnapshot));\n }\n return result;\n });\n }\n\n onDisconnect(url, method, value) {\n return this._send({msg: 'onDisconnect', url, method, value});\n }\n\n bounceConnection() {\n return this._send({msg: 'bounceConnection'});\n }\n\n callback({id, args}) {\n const handle = this._callbacks[id];\n if (!handle) throw new Error('Unregistered callback: ' + id);\n handle.callback.apply(null, args);\n }\n\n _registerCallback(callback, handle) {\n handle = handle || {};\n handle.callback = callback;\n handle.id = `cb${++this._idCounter}`;\n this._callbacks[handle.id] = handle;\n return handle.id;\n }\n\n _nullifyCallback(id) {\n this._callbacks[id].callback = _.noop;\n }\n\n _deregisterCallback(id) {\n delete this._callbacks[id];\n }\n\n _findAndRemoveCallbackId(callback, predicate) {\n if (!callback.__callbackIds) return;\n let i = 0;\n while (i < callback.__callbackIds.length) {\n const id = callback.__callbackIds[i];\n const handle = this._callbacks[id];\n if (!handle) {\n callback.__callbackIds.splice(i, 1);\n continue;\n }\n if (predicate(handle)) {\n callback.__callbackIds.splice(i, 1);\n return id;\n }\n i += 1;\n }\n }\n}\n\n\nfunction errorFromJson(json, params) {\n if (!json || _.isError(json)) return json;\n const error = new Error(json.message);\n try {\n error.params = params;\n for (const propertyName in json) {\n if (propertyName === 'message' || !Object.hasOwn(json, propertyName)) continue;\n try {\n error[propertyName] = json[propertyName];\n } catch {\n error.extra = error.extra || {};\n error.extra[propertyName] = json[propertyName];\n }\n }\n } catch (e) {\n if (!/object is not extensible/.test(e.message)) throw e;\n }\n return error;\n}\n","import {escapeKey, unescapeKey, makePathMatcher} from './utils/paths.js';\n\nimport _ from 'lodash';\n\n/* eslint-disable no-use-before-define */\n\nconst EMPTY_ANNOTATIONS = {};\nObject.freeze(EMPTY_ANNOTATIONS);\n\n\nexport class Handle {\n constructor(tree, path, annotations) {\n this._tree = tree;\n this._path = path.replace(/^\\/*/, '/').replace(/\\/$/, '') || '/';\n if (annotations) {\n this._annotations = annotations;\n Object.freeze(annotations);\n }\n }\n\n get $ref() {return this;}\n get key() {\n if (!this._key) this._key = unescapeKey(this._path.replace(/.*\\//, ''));\n return this._key;\n }\n\n get path() {return this._path;}\n get _pathPrefix() {return this._path === '/' ? '' : this._path;}\n get parent() {\n return new Reference(this._tree, this._path.replace(/\\/[^/]*$/, ''), this._annotations);\n }\n\n get annotations() {\n return this._annotations || EMPTY_ANNOTATIONS;\n }\n\n child() {\n if (!arguments.length) return this;\n const segments = [];\n for (const key of arguments) {\n if (_.isNil(key)) return;\n segments.push(escapeKey(key));\n }\n return new Reference(\n this._tree, `${this._pathPrefix}/${segments.join('/')}`,\n this._annotations\n );\n }\n\n children() {\n if (!arguments.length) return this;\n const escapedKeys = [];\n for (let i = 0; i < arguments.length; i++) {\n const arg = arguments[i];\n if (_.isArray(arg)) {\n const mapping = {};\n const subPath = this._pathPrefix + (escapedKeys.length ? `/${escapedKeys.join('/')}` : '');\n const rest = _.slice(arguments, i + 1);\n for (const key of arg) {\n const subRef =\n new Reference(this._tree, `${subPath}/${escapeKey(key)}`, this._annotations);\n const subMapping = subRef.children.apply(subRef, rest);\n if (subMapping) mapping[key] = subMapping;\n }\n return mapping;\n }\n if (_.isNil(arg)) return;\n escapedKeys.push(escapeKey(arg));\n }\n return new Reference(\n this._tree, `${this._pathPrefix}/${escapedKeys.join('/')}`, this._annotations);\n }\n\n peek(callback) {\n return this._tree.truss.peek(this, callback);\n }\n\n match(pattern) {\n return makePathMatcher(pattern).match(this.path);\n }\n\n test(pattern) {\n return makePathMatcher(pattern).test(this.path);\n }\n\n isEqual(that) {\n if (!(that instanceof Handle)) return false;\n return this._tree === that._tree && this.toString() === that.toString() &&\n _.isEqual(this._annotations, that._annotations);\n }\n\n belongsTo(truss) {\n return this._tree.truss === truss;\n }\n}\n\n\nexport class Query extends Handle {\n constructor(tree, path, spec, annotations) {\n super(tree, path, annotations);\n this._spec = this._copyAndValidateSpec(spec);\n const queryTerms = _(this._spec)\n .map((value, key) => `${key}=${encodeURIComponent(JSON.stringify(value))}`)\n .sortBy()\n .join('&');\n this._string = `${this._path}?${queryTerms}`;\n Object.freeze(this);\n }\n\n // Vue-bound\n get ready() {\n return this._tree.isQueryReady(this);\n }\n\n get constraints() {\n return this._spec;\n }\n\n annotate(annotations) {\n return new Query(\n this._tree, this._path, this._spec, _.assign({}, this._annotations, annotations));\n }\n\n _copyAndValidateSpec(spec) {\n if (!spec.by) throw new Error('Query needs \"by\" clause: ' + JSON.stringify(spec));\n if (('at' in spec) + ('from' in spec) + ('to' in spec) > 1) {\n throw new Error(\n 'Query must contain at most one of \"at\", \"from\", or \"to\" clauses: ' + JSON.stringify(spec));\n }\n if (('first' in spec) + ('last' in spec) > 1) {\n throw new Error(\n 'Query must contain at most one of \"first\" or \"last\" clauses: ' + JSON.stringify(spec));\n }\n if (!_.some(['at', 'from', 'to', 'first', 'last'], clause => clause in spec)) {\n throw new Error(\n 'Query must contain at least one of \"at\", \"from\", \"to\", \"first\", or \"last\" clauses: ' +\n JSON.stringify(spec));\n }\n spec = _.clone(spec);\n if (spec.by !== '$key' && spec.by !== '$value') {\n if (!(spec.by instanceof Reference)) {\n throw new Error('Query \"by\" value must be a reference: ' + spec.by);\n }\n let childPath = spec.by.toString();\n if (!_.startsWith(childPath, this._path)) {\n throw new Error(\n 'Query \"by\" value must be a descendant of target reference: ' + spec.by);\n }\n childPath = childPath.slice(this._path.length).replace(/^\\/?/, '');\n if (!_.includes(childPath, '/')) {\n throw new Error(\n 'Query \"by\" value must not be a direct child of target reference: ' + spec.by);\n }\n spec.by = childPath.replace(/.*?\\//, '');\n }\n Object.freeze(spec);\n return spec;\n }\n\n\n toString() {return this._string;}\n toJSON() {return `query → ${this.toString()}`;}\n}\n\n\nexport class Reference extends Handle {\n\n constructor(tree, path, annotations) {\n super(tree, path, annotations);\n Object.freeze(this);\n }\n\n get ready() {return this._tree.isReferenceReady(this);} // Vue-bound\n get value() {return this._tree.getObject(this.path);} // Vue-bound\n toString() {return this._path;}\n toJSON() {return `reference → ${this.toString()}`;}\n\n annotate(annotations) {\n return new Reference(this._tree, this._path, _.assign({}, this._annotations, annotations));\n }\n\n query(spec) {\n return new Query(this._tree, this._path, spec, this._annotations);\n }\n\n set(value) {\n this._checkForUndefinedPath();\n return this._tree.update(this, 'set', {[this.path]: value});\n }\n\n update(values) {\n this._checkForUndefinedPath();\n return this._tree.update(this, 'update', values);\n }\n\n override(value) {\n this._checkForUndefinedPath();\n return this._tree.update(this, 'override', {[this.path]: value});\n }\n\n commit(updateFunction) {\n this._checkForUndefinedPath();\n return this._tree.commit(this, updateFunction);\n }\n\n _checkForUndefinedPath() {\n if (this.path === '/undefined') throw new Error('Invalid path for operation: ' + this.path);\n }\n}\n\nexport default Reference;\n","import _ from 'lodash';\n\n\nexport const SERVER_TIMESTAMP = Object.freeze({'.sv': 'timestamp'});\n\nexport function isTrussEqual(a, b) {\n return _.isEqualWith(a, b, isTrussValueEqual);\n}\n\nfunction isTrussValueEqual(a, b) {\n if (a === b || a === undefined || a === null || b === undefined || b === null ||\n a.$truss || b.$truss) return a === b;\n if (a.isEqual) return a.isEqual(b);\n}\n\nexport function copyPrototype(a, b) {\n for (const prop of Object.getOwnPropertyNames(a.prototype)) {\n if (prop === 'constructor') continue;\n Object.defineProperty(b.prototype, prop, Object.getOwnPropertyDescriptor(a.prototype, prop));\n }\n}\n","import {isTrussEqual} from './utils.js';\n\nimport _ from 'lodash';\n\n\nclass StatItem {\n constructor(name) {\n _.assign(this, {name, numRecomputes: 0, numUpdates: 0, computeTime: 0, updateTime: 0});\n }\n\n add(item) {\n this.computeTime += item.computeTime;\n this.updateTime += item.updateTime;\n this.numUpdates += item.numUpdates;\n this.numRecomputes += item.numRecomputes;\n }\n\n get runtime() {\n return this.computeTime + this.updateTime;\n }\n\n get runtimePerRecompute() {\n return this.numRecomputes ? this.computeTime / this.numRecomputes : 0;\n }\n\n get runtimePerUpdate() {\n return this.numUpdates ? this.updateTime / this.numUpdates : 0;\n }\n\n toLogParts(totals) {\n return [\n `${this.name}:`, ` ${(this.runtime / 1000).toFixed(2)}s`,\n `(${(this.runtime / totals.runtime * 100).toFixed(1)}%)`,\n ` ${this.numUpdates} upd /`, `${this.numRecomputes} runs`,\n `(${(this.numUpdates / this.numRecomputes * 100).toFixed(1)}%)`,\n ` ${this.runtimePerRecompute.toFixed(2)}ms / run`,\n ` ${this.runtimePerUpdate.toFixed(2)}ms / upd`\n ];\n }\n}\n\nclass Stats {\n constructor() {\n this._items = {};\n }\n\n for(name) {\n if (!this._items[name]) this._items[name] = new StatItem(name);\n return this._items[name];\n }\n\n get list() {\n return _(this._items).values().sortBy(item => -item.runtime).value();\n }\n\n log(n = 10) {\n let stats = this.list;\n if (!stats.length) return;\n const totals = new StatItem('=== Total');\n _.forEach(stats, stat => {totals.add(stat);});\n stats = _.take(stats, n);\n const above = new StatItem('--- Above');\n _.forEach(stats, stat => {above.add(stat);});\n const lines = _.map(stats, item => item.toLogParts(totals));\n lines.push(above.toLogParts(totals));\n lines.push(totals.toLogParts(totals));\n const widths = _.map(_.range(lines[0].length), i => _(lines).map(line => line[i].length).max());\n _.forEach(lines, line => {\n console.log(_.map(line, (column, i) => _.padStart(column, widths[i])).join(' '));\n });\n }\n\n wrap(getter, className, propName) {\n const item = this.for(`${className}.${propName}`);\n return function() {\n /* eslint-disable no-invalid-this */\n const startTime = performance.now();\n const oldValue = this._computedWatchers && this._computedWatchers[propName].value;\n try {\n const newValue = getter.call(this);\n if (!isTrussEqual(oldValue, newValue)) item.numUpdates += 1;\n return newValue;\n } finally {\n item.computeTime += performance.now() - startTime;\n item.numRecomputes += 1;\n }\n };\n }\n}\n\nexport default new Stats();\n","import {Handle, Query, Reference} from './Reference.js';\nimport angular from './angularCompatibility.js';\nimport stats from './utils/stats.js';\nimport {isTrussEqual} from './utils/utils.js';\n\nimport _ from 'lodash';\nimport Vue from 'vue';\n\n\nexport default class Connector {\n constructor(scope, connections, tree, method, refs) {\n Object.freeze(connections);\n this._scope = scope;\n this._connections = connections;\n this._tree = tree;\n this._method = method;\n\n this._subConnectors = {};\n this._disconnects = {};\n this._angularUnwatches = undefined;\n this._data = {};\n this._vue = new Vue({data: {\n descriptors: {},\n refs: refs || {},\n values: _.mapValues(connections, _.constant(undefined))\n }});\n // allow instance-level overrides of destroy() method\n this.destroy = this.destroy; // eslint-disable-line no-self-assign\n Object.seal(this);\n\n this._linkScopeProperties();\n\n _.forEach(connections, (descriptor, key) => {\n if (_.isFunction(descriptor)) {\n this._bindComputedConnection(key, descriptor);\n } else {\n this._connect(key, descriptor);\n }\n });\n\n if (angular.active && scope && scope.$on && scope.$id) {\n scope.$on('$destroy', () => {this.destroy();});\n }\n }\n\n get ready() {\n return _.every(this._connections, (ignored, key) => {\n const descriptor = this._vue.descriptors[key];\n if (!descriptor) return false;\n if (descriptor instanceof Handle) return descriptor.ready;\n return this._subConnectors[key].ready;\n });\n }\n\n get at() {\n return this._vue.refs;\n }\n\n get data() {\n return this._data;\n }\n\n destroy() {\n this._unlinkScopeProperties();\n _.forEach(this._angularUnwatches, unwatch => {unwatch();});\n _.forEach(this._connections, (descriptor, key) => {this._disconnect(key);});\n this._vue.$destroy();\n }\n\n _linkScopeProperties() {\n const dataProperties = _.mapValues(this._connections, (unused, key) => ({\n configurable: true, enumerable: false, get: () => {\n const descriptor = this._vue.descriptors[key];\n if (descriptor instanceof Reference) return descriptor.value;\n return this._vue.values[key];\n }\n }));\n Object.defineProperties(this._data, dataProperties);\n if (this._scope) {\n for (const key in this._connections) {\n if (key in this._scope) {\n throw new Error(`Property already defined on connection target: ${key}`);\n }\n }\n Object.defineProperties(this._scope, dataProperties);\n if (this._scope.__ob__) this._scope.__ob__.dep.notify();\n }\n }\n\n _unlinkScopeProperties() {\n if (!this._scope) return;\n _.forEach(this._connections, (descriptor, key) => {\n delete this._scope[key];\n });\n }\n\n _bindComputedConnection(key, fn) {\n const connectionStats = stats.for(`connection.at.${key}`);\n const getter = this._computeConnection.bind(this, fn, connectionStats);\n const update = this._updateComputedConnection.bind(this, key, fn, connectionStats);\n const angularWatch = angular.active && !fn.angularWatchSuppressed;\n // Use this._vue.$watch instead of truss.observe here so that we can disable the immediate\n // callback if we'll get one from Angular anyway.\n this._vue.$watch(getter, update, {immediate: !angularWatch});\n if (angularWatch) {\n if (!this._angularUnwatches) this._angularUnwatches = [];\n this._angularUnwatches.push(angular.watch(getter, update, true));\n }\n }\n\n _computeConnection(fn, connectionStats) {\n const startTime = performance.now();\n try {\n return flattenRefs(fn.call(this._scope));\n } finally {\n connectionStats.computeTime += performance.now() - startTime;\n connectionStats.numRecomputes += 1;\n }\n }\n\n _updateComputedConnection(key, value, connectionStats) {\n const newDescriptor = _.isFunction(value) ? value(this._scope) : value;\n const oldDescriptor = this._vue.descriptors[key];\n const descriptorChanged = !isTrussEqual(oldDescriptor, newDescriptor);\n if (!descriptorChanged) return;\n if (connectionStats && descriptorChanged) connectionStats.numUpdates += 1;\n if (!newDescriptor) {\n this._disconnect(key);\n return;\n }\n if (newDescriptor instanceof Handle || !_.has(this._subConnectors, key)) {\n this._disconnect(key);\n this._connect(key, newDescriptor);\n } else {\n this._subConnectors[key]._updateConnections(newDescriptor);\n }\n Vue.set(this._vue.descriptors, key, newDescriptor);\n angular.digest();\n }\n\n _updateConnections(connections) {\n _.forEach(connections, (descriptor, key) => {\n this._updateComputedConnection(key, descriptor);\n });\n _.forEach(this._connections, (descriptor, key) => {\n if (!_.has(connections, key)) this._updateComputedConnection(key);\n });\n this._connections = connections;\n }\n\n _connect(key, descriptor) {\n Vue.set(this._vue.descriptors, key, descriptor);\n angular.digest();\n if (!descriptor) return;\n Vue.set(this._vue.values, key, undefined);\n if (descriptor instanceof Reference) {\n Vue.set(this._vue.refs, key, descriptor);\n this._disconnects[key] = this._tree.connectReference(descriptor, this._method);\n } else if (descriptor instanceof Query) {\n Vue.set(this._vue.refs, key, descriptor);\n const updateFn = this._updateQueryValue.bind(this, key);\n this._disconnects[key] = this._tree.connectQuery(descriptor, updateFn, this._method);\n } else {\n const subScope = {}, subRefs = {};\n Vue.set(this._vue.refs, key, subRefs);\n const subConnector = this._subConnectors[key] =\n new Connector(subScope, descriptor, this._tree, this._method, subRefs);\n // Use a truss.observe here instead of this._vue.$watch so that the \"immediate\" execution\n // actually takes place after we've captured the unwatch function, in case the subConnector\n // is ready immediately.\n const unobserve = this._disconnects[key] = this._tree.truss.observe(\n () => subConnector.ready,\n subReady => {\n if (!subReady) return;\n unobserve();\n delete this._disconnects[key];\n Vue.set(this._vue.values, key, subScope);\n angular.digest();\n }\n );\n }\n }\n\n _disconnect(key) {\n Vue.delete(this._vue.refs, key);\n this._updateRefValue(key, undefined);\n if (_.has(this._subConnectors, key)) {\n this._subConnectors[key].destroy();\n delete this._subConnectors[key];\n }\n if (this._disconnects[key]) this._disconnects[key]();\n delete this._disconnects[key];\n Vue.delete(this._vue.descriptors, key);\n angular.digest();\n }\n\n _updateRefValue(key, value) {\n if (this._vue.values[key] !== value) {\n Vue.set(this._vue.values, key, value);\n angular.digest();\n }\n }\n\n _updateQueryValue(key, childKeys) {\n if (!this._vue.values[key]) {\n Vue.set(this._vue.values, key, {});\n angular.digest();\n }\n const subScope = this._vue.values[key];\n for (const childKey in subScope) {\n if (!Object.hasOwn(subScope, childKey)) continue;\n if (!_.includes(childKeys, childKey)) {\n Vue.delete(subScope, childKey);\n angular.digest();\n }\n }\n const object = this._tree.getObject(this._vue.descriptors[key].path);\n for (const childKey of childKeys) {\n if (Object.hasOwn(subScope, childKey)) continue;\n Vue.set(subScope, childKey, object[childKey]);\n angular.digest();\n }\n }\n\n}\n\nfunction flattenRefs(refs) {\n if (!refs) return;\n if (refs instanceof Handle) return refs.toString();\n return _.mapValues(refs, flattenRefs);\n}\n\n","export function wrapPromiseCallback(callback) {\n return function() {\n try {\n // eslint-disable-next-line no-invalid-this\n return Promise.resolve(callback.apply(this, arguments));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\n\nexport function promiseCancel(promise, cancel) {\n promise = promiseFinally(promise, () => {cancel = null;});\n promise.cancel = () => {\n if (!cancel) return;\n cancel();\n cancel = null;\n };\n propagatePromiseProperty(promise, 'cancel');\n return promise;\n}\n\nfunction propagatePromiseProperty(promise, propertyName) {\n const originalThen = promise.then, originalCatch = promise.catch;\n promise.then = (onResolved, onRejected) => {\n const derivedPromise = originalThen.call(promise, onResolved, onRejected);\n derivedPromise[propertyName] = promise[propertyName];\n propagatePromiseProperty(derivedPromise, propertyName);\n return derivedPromise;\n };\n promise.catch = onRejected => {\n const derivedPromise = originalCatch.call(promise, onRejected);\n derivedPromise[propertyName] = promise[propertyName];\n propagatePromiseProperty(derivedPromise, propertyName);\n return derivedPromise;\n };\n return promise;\n}\n\nexport function promiseFinally(promise, onFinally) {\n if (!onFinally) return promise;\n onFinally = wrapPromiseCallback(onFinally);\n return promise.then(result => {\n return onFinally().then(() => result);\n }, error => {\n return onFinally().then(() => Promise.reject(error));\n });\n}\n","import _ from 'lodash';\nimport Reference from './Reference.js';\nimport {wrapPromiseCallback} from './utils/promises.js';\nimport {joinPath} from './utils/paths.js';\n\n\nconst INTERCEPT_KEYS = [\n 'read', 'write', 'auth', 'set', 'update', 'commit', 'connect', 'peek', 'authenticate',\n 'unathenticate', 'certify', 'all'\n];\n\nconst EMPTY_ARRAY = [];\n\n\nclass SlowHandle {\n constructor(operation, delay, callback) {\n this._operation = operation;\n this._delay = delay;\n this._callback = callback;\n this._fired = false;\n }\n\n initiate() {\n this.cancel();\n this._fired = false;\n const elapsed = Date.now() - this._operation._startTimestamp;\n this._timeoutId = setTimeout(() => {\n this._fired = true;\n this._callback(this._operation);\n }, this._delay - elapsed);\n }\n\n cancel() {\n if (this._fired) this._callback(this._operation);\n if (this._timeoutId) clearTimeout(this._timeoutId);\n }\n}\n\n\nclass Operation {\n constructor(type, method, target, operand) {\n this._type = type;\n this._method = method;\n this._target = target;\n this._operand = operand;\n this._ready = false;\n this._running = false;\n this._ended = false;\n this._tries = 0;\n this._startTimestamp = Date.now();\n this._slowHandles = [];\n }\n\n get type() {return this._type;}\n get method() {return this._method;}\n get target() {return this._target;}\n get targets() {\n if (this._method !== 'update') return [this._target];\n return _.map(this._operand, (value, escapedPathFragment) => {\n return new Reference(\n this._target._tree, joinPath(this._target.path, escapedPathFragment),\n this._target._annotations);\n });\n }\n\n get operand() {return this._operand;}\n get ready() {return this._ready;}\n get running() {return this._running;}\n get ended() {return this._ended;}\n get tries() {return this._tries;}\n get error() {return this._error;}\n\n onSlow(delay, callback) {\n const handle = new SlowHandle(this, delay, callback);\n this._slowHandles.push(handle);\n handle.initiate();\n }\n\n _setRunning(value) {\n this._running = value;\n }\n\n _setEnded(value) {\n this._ended = value;\n }\n\n _markReady(ending) {\n this._ready = true;\n if (!ending) this._tries = 0;\n _.forEach(this._slowHandles, handle => handle.cancel());\n }\n\n _clearReady() {\n // Temporarily set ready to correctly reset previously triggered slow handles.\n this._ready = true;\n this._startTimestamp = Date.now();\n _.forEach(this._slowHandles, handle => handle.initiate());\n this._ready = false;\n }\n\n _incrementTries() {\n this._tries++;\n }\n}\n\n\nexport default class Dispatcher {\n constructor(bridge) {\n this._bridge = bridge;\n this._callbacks = {};\n Object.freeze(this);\n }\n\n intercept(interceptKey, callbacks) {\n if (!_.includes(INTERCEPT_KEYS, interceptKey)) {\n throw new Error('Unknown intercept operation type: ' + interceptKey);\n }\n const badCallbackKeys =\n _.difference(_.keys(callbacks), ['onBefore', 'onAfter', 'onError', 'onFailure']);\n if (badCallbackKeys.length) {\n throw new Error('Unknown intercept callback types: ' + badCallbackKeys.join(', '));\n }\n const wrappedCallbacks = {\n onBefore: this._addCallback('onBefore', interceptKey, callbacks.onBefore),\n onAfter: this._addCallback('onAfter', interceptKey, callbacks.onAfter),\n onError: this._addCallback('onError', interceptKey, callbacks.onError),\n onFailure: this._addCallback('onFailure', interceptKey, callbacks.onFailure)\n };\n return this._removeCallbacks.bind(this, interceptKey, wrappedCallbacks);\n }\n\n _addCallback(stage, interceptKey, callback) {\n if (!callback) return;\n const key = this._getCallbacksKey(stage, interceptKey);\n const wrappedCallback = wrapPromiseCallback(callback);\n (this._callbacks[key] || (this._callbacks[key] = [])).push(wrappedCallback);\n return wrappedCallback;\n }\n\n _removeCallback(stage, interceptKey, wrappedCallback) {\n if (!wrappedCallback) return;\n const key = this._getCallbacksKey(stage, interceptKey);\n if (this._callbacks[key]) _.pull(this._callbacks[key], wrappedCallback);\n }\n\n _removeCallbacks(interceptKey, wrappedCallbacks) {\n _.forEach(wrappedCallbacks, (wrappedCallback, stage) => {\n this._removeCallback(stage, interceptKey, wrappedCallback);\n });\n }\n\n _getCallbacks(stage, operationType, method) {\n return [].concat(\n this._callbacks[this._getCallbacksKey(stage, method)] || EMPTY_ARRAY,\n this._callbacks[this._getCallbacksKey(stage, operationType)] || EMPTY_ARRAY,\n this._callbacks[this._getCallbacksKey(stage, 'all')] || EMPTY_ARRAY\n );\n }\n\n _getCallbacksKey(stage, interceptKey) {\n return `${stage}_${interceptKey}`;\n }\n\n execute(operationType, method, target, operand, executor) {\n executor = wrapPromiseCallback(executor);\n const operation = this.createOperation(operationType, method, target, operand);\n return this.begin(operation).then(() => {\n const executeWithRetries = () => {\n return executor().catch(e => this._retryOrEnd(operation, e).then(executeWithRetries));\n };\n return executeWithRetries();\n }).then(result => this.end(operation).then(() => result));\n }\n\n createOperation(operationType, method, target, operand) {\n return new Operation(operationType, method, target, operand);\n }\n\n begin(operation) {\n return Promise.all(_.map(\n this._getCallbacks('onBefore', operation.type, operation.method),\n onBefore => onBefore(operation)\n )).then(() => {\n if (!operation.ended) operation._setRunning(true);\n }, e => this.end(operation, e));\n }\n\n markReady(operation) {\n operation._markReady();\n }\n\n clearReady(operation) {\n operation._clearReady();\n }\n\n retry(operation, error) {\n operation._incrementTries();\n operation._error = error;\n return Promise.all(_.map(\n this._getCallbacks('onError', operation.type, operation.method),\n onError => onError(operation, error)\n )).then(results => {\n // If the operation ended in the meantime, bail. This will cause the caller to attempt to\n // fail the operation, but since it's already ended the call to end() with an error will be a\n // no-op.\n if (operation.ended) return;\n const retrying = _.some(results);\n if (retrying) delete operation._error;\n return retrying;\n });\n }\n\n _retryOrEnd(operation, error) {\n return this.retry(operation, error).then(result => {\n if (!result) return this.end(operation, error);\n }, e => this.end(operation, e));\n }\n\n end(operation, error) {\n if (operation.ended) return Promise.resolve();\n operation._setRunning(false);\n operation._setEnded(true);\n if (error) {\n operation._error = error;\n } else {\n // In case we're racing with a retry(), wipe out the error.\n delete operation._error;\n }\n return Promise.all(_.map(\n this._getCallbacks('onAfter', operation.type, operation.method),\n onAfter => onAfter(operation)\n )).then(\n () => this._afterEnd(operation),\n e => {\n operation._error = e;\n return this._afterEnd(operation);\n }\n );\n }\n\n _afterEnd(operation) {\n operation._markReady(true);\n if (!operation.error) return Promise.resolve();\n const onFailureCallbacks = this._getCallbacks('onFailure', operation.type, operation.method);\n if (onFailureCallbacks) {\n setTimeout(() => {\n _.forEach(onFailureCallbacks, onFailure => onFailure(operation));\n }, 0);\n }\n return Promise.reject(operation.error);\n }\n}\n\n","const ALPHABET = '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz';\n\nconst getRandomValues = window.crypto && window.crypto.getRandomValues &&\n window.crypto.getRandomValues.bind(window.crypto);\n\nexport default class KeyGenerator {\n constructor() {\n this._lastUniqueKeyTime = 0;\n this._lastRandomValues = [];\n }\n\n generateUniqueKey(now) {\n now = now || Date.now();\n const chars = new Array(20);\n let prefix = now;\n for (let i = 7; i >= 0; i--) {\n chars[i] = ALPHABET.charAt(prefix & 0x3f); // eslint-disable-line no-bitwise\n prefix = Math.floor(prefix / 64);\n }\n if (now === this._lastUniqueKeyTime) {\n let i = 11;\n while (i >= 0 && this._lastRandomValues[i] === 63) {\n this._lastRandomValues[i] = 0;\n i -= 1;\n }\n if (i === -1) {\n throw new Error('Internal assertion failure: ran out of unique IDs for this millisecond');\n }\n this._lastRandomValues[i] += 1;\n } else {\n this._lastUniqueKeyTime = now;\n if (getRandomValues) {\n const array = new Uint8Array(12);\n getRandomValues(array);\n for (let i = 0; i < 12; i++) {\n // eslint-disable-next-line no-bitwise\n this._lastRandomValues[i] = array[i] & (i ? 0x3f : 0x0f);\n }\n } else {\n for (let i = 0; i < 12; i++) {\n // Make sure to leave some space for incrementing in the top nibble.\n this._lastRandomValues[i] = Math.floor(Math.random() * (i ? 64 : 16));\n }\n }\n }\n for (let i = 0; i < 12; i++) {\n chars[i + 8] = ALPHABET[this._lastRandomValues[i]];\n }\n return chars.join('');\n }\n}\n","import angular from './angularCompatibility.js';\nimport Vue from 'vue';\nimport Reference from './Reference.js';\n\n\nexport default class MetaTree {\n constructor(rootUrl, tree, bridge, dispatcher) {\n this._rootUrl = rootUrl;\n this._tree = tree;\n this._dispatcher = dispatcher;\n this._bridge = bridge;\n this._vue = new Vue({data: {$root: {\n connected: undefined, timeOffset: 0, user: undefined, userid: undefined,\n nowAtInterval(intervalMillis) {\n const key = 'now' + intervalMillis;\n if (!Object.hasOwn(this, key)) {\n const update = () => {\n Vue.set(this, key, Date.now() + this.timeOffset);\n angular.digest();\n };\n update();\n setInterval(update, intervalMillis);\n }\n return this[key];\n }\n }}});\n\n this._auth = {serial: 0, initialAuthChangeReceived: false, changePromise: Promise.resolve()};\n\n bridge.onAuth(rootUrl, this._handleAuthChange, this);\n\n this._connectInfoProperty('serverTimeOffset', 'timeOffset');\n this._connectInfoProperty('connected', 'connected');\n Object.freeze(this);\n }\n\n get root() {\n return this._vue.$data.$root;\n }\n\n destroy() {\n this._bridge.offAuth(this._rootUrl, this._handleAuthChange, this);\n this._vue.$destroy();\n }\n\n authenticate(token) {\n this._auth.serial++;\n return this._dispatcher.execute(\n 'auth', 'authenticate', new Reference(this._tree, '/'), token, () => {\n const promise = token ?\n this._bridge.authWithCustomToken(this._rootUrl, token) :\n this._bridge.authAnonymously(this._rootUrl);\n return promise.then(() => this._auth.changePromise);\n }\n );\n }\n\n unauthenticate() {\n // Signal user change to null pre-emptively. This is what the Firebase SDK does as well, since\n // it lets the app tear down user-required connections before the user is actually deauthed,\n // which can prevent spurious permission denied errors.\n this._auth.serial++;\n return this._handleAuthChange(null).then(approved => {\n // Bail if auth change callback initiated another authentication, since it will have already\n // sent the command to the bridge and sending our own now would incorrectly override it.\n if (!approved) return;\n return this._dispatcher.execute(\n 'auth', 'unauthenticate', new Reference(this._tree, '/'), undefined, () => {\n return this._bridge.unauth(this._rootUrl);\n }\n );\n });\n }\n\n _handleAuthChange(user) {\n const supersededChange = !this._auth.initialAuthChangeReceived && this._auth.serial;\n if (user !== undefined) this._auth.initialAuthChangeReceived = true;\n if (supersededChange) return;\n const authSerial = this._auth.serial;\n if (this.root.user === user) return Promise.resolve(false);\n const promise = this._dispatcher.execute(\n 'auth', 'certify', new Reference(this._tree, '/'), user, () => {\n if (this.root.user === user || authSerial !== this._auth.serial) return false;\n if (user) Object.freeze(user);\n this.root.user = user;\n this.root.userid = user && user.uid;\n angular.digest();\n return true;\n }\n );\n this._auth.changePromise = this._auth.changePromise.then(() => promise).catch();\n return promise;\n }\n\n _isAuthChangeStale(user) {\n return this.root.user === user;\n }\n\n _connectInfoProperty(property, attribute) {\n const url = new URL(this._rootUrl);\n url.pathname = encodeURI(`/.info/${property}`);\n this._bridge.on(url.href, url.href, null, 'value', snap => {\n this.root[attribute] = snap.value;\n angular.digest();\n });\n }\n}\n","import {Reference, Handle} from './Reference.js';\nimport angular from './angularCompatibility.js';\nimport stats from './utils/stats.js';\nimport {makePathMatcher, joinPath, splitPath, escapeKey, unescapeKey} from './utils/paths.js';\nimport {isTrussEqual, copyPrototype} from './utils/utils.js';\nimport {promiseFinally} from './utils/promises.js';\n\nimport _ from 'lodash';\n\n// These are defined separately for each object so they're not included in Value below.\nconst RESERVED_VALUE_PROPERTY_NAMES = {__ob__: true};\n\nconst UNSUPPORTED_LIFECYCLE_METHODS = new Set([\n 'beforeMount', 'mounted', 'beforeUpdate', 'updated', 'activated', 'deactivated', 'errorCaptured'\n]);\nconst UNSUPPORTED_LIFECYCLE_HOOKS =\n new Set(_.map(UNSUPPORTED_LIFECYCLE_METHODS, method => `hook:${method}`));\n\nconst LAST_COMPUTED_VALUE = Symbol('last-computed-value');\n\n// Holds properties that we're going to set on a model object that's being created right now as soon\n// as it's been created, but that we'd like to be accessible in the constructor. The object\n// prototype's getters will pick those up until they get overridden in the instance.\nlet creatingObjectProperties;\n\nlet currentPropertyFrozen;\n\n\nexport class BaseValue {\n get $info() {return this.$truss.info;}\n get $store() {return this.$truss.store;} // access indirectly to leave dependency trace\n get $now() {return this.$truss.now;}\n\n $newKey() {return this.$truss.newKey();}\n\n $intercept(actionType, callbacks) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const unintercept = this.$truss.intercept(actionType, callbacks);\n const uninterceptAndRemoveFinalizer = () => {\n unintercept();\n this.$off('hook:destroyed', uninterceptAndRemoveFinalizer);\n };\n this.$on('hook:destroyed', uninterceptAndRemoveFinalizer);\n return uninterceptAndRemoveFinalizer;\n }\n\n $connect(scope, connections) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n if (!connections) {\n connections = scope;\n scope = undefined;\n }\n const connector = this.$truss.connect(scope, wrapConnections(this, connections));\n const originalDestroy = connector.destroy;\n const destroy = () => {\n this.$off('hook:destroyed', destroy);\n return originalDestroy.call(connector);\n };\n this.$on('hook:destroyed', destroy);\n connector.destroy = destroy;\n return connector;\n }\n\n $peek(target, callback) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const promise = promiseFinally(\n this.$truss.peek(target, callback), () => {this.$off('hook:destroyed', promise.cancel);}\n );\n this.$on('hook:destroyed', promise.cancel);\n return promise;\n }\n\n $observe(subjectFn, callbackFn, options) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n let unobserveAndRemoveFinalizer;\n\n const unobserve = this.$truss.observe(() => {\n this.$$touchThis();\n return subjectFn.call(this);\n }, callbackFn.bind(this), {...options, vm: this});\n\n unobserveAndRemoveFinalizer = () => { // eslint-disable-line prefer-const\n unobserve();\n this.$off('hook:destroyed', unobserveAndRemoveFinalizer);\n };\n this.$on('hook:destroyed', unobserveAndRemoveFinalizer);\n return unobserveAndRemoveFinalizer;\n }\n\n $when(expression, options) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const promise = this.$truss.when(() => {\n this.$$touchThis();\n return expression.call(this);\n }, options);\n promiseFinally(promise, () => {this.$off('hook:destroyed', promise.cancel);});\n this.$on('hook:destroyed', promise.cancel);\n return promise;\n }\n}\n\n\nclass Value {\n get $parent() {return creatingObjectProperties.$parent.value;}\n get $path() {return creatingObjectProperties.$path.value;}\n get $truss() {\n Object.defineProperty(this, '$truss', {value: this.$parent.$truss});\n return this.$truss;\n }\n\n get $ref() {\n Object.defineProperty(this, '$ref', {value: new Reference(this.$truss._tree, this.$path)});\n return this.$ref;\n }\n\n get $refs() {return this.$ref;}\n get $key() {\n Object.defineProperty(\n this, '$key', {value: unescapeKey(this.$path.slice(this.$path.lastIndexOf('/') + 1))});\n return this.$key;\n }\n\n get $data() {return this;}\n get $hidden() {return false;} // eslint-disable-line lodash/prefer-constant\n get $empty() {return _.isEmpty(this.$data);}\n get $keys() {return _.keys(this.$data);}\n get $values() {return _.values(this.$data);}\n get $ready() {return this.$ref.ready;}\n get $overridden() {return false;} // eslint-disable-line lodash/prefer-constant\n\n $nextTick() {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const promise = this.$truss.nextTick();\n promiseFinally(promise, () => {this.$off('hook:destroyed', promise.cancel);});\n this.$on('hook:destroyed', promise.cancel);\n return promise;\n }\n\n $freezeComputedProperty() {\n if (!_.isBoolean(currentPropertyFrozen)) {\n throw new Error('Cannot freeze a computed property outside of its getter function');\n }\n currentPropertyFrozen = true;\n }\n\n get $lastComputedValue() {\n if (!_.isBoolean(currentPropertyFrozen)) {\n throw new Error(\n 'Cannot use last computed value of a property outside of its getter function');\n }\n return LAST_COMPUTED_VALUE;\n }\n\n $set(value) {return this.$ref.set(value);}\n $update(values) {return this.$ref.update(values);}\n $override(values) {return this.$ref.override(values);}\n $commit(options, updateFn) {return this.$ref.commit(options, updateFn);}\n\n $$touchThis() {\n /* eslint-disable no-unused-expressions */\n if (this.__ob__) {\n this.__ob__.dep.depend();\n } else if (this.$parent) {\n (Object.hasOwn(this.$parent, '$data') ? this.$parent.$data : this.$parent)[this.$key];\n } else {\n this.$store;\n }\n /* eslint-enable no-unused-expressions */\n }\n\n get $destroyed() { // eslint-disable-line lodash/prefer-constant\n return false;\n }\n\n $on(event, callback) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n if (UNSUPPORTED_LIFECYCLE_HOOKS.has(event)) {\n throw new Error(`Models don't support the \"${event}\" lifecycle event`);\n }\n (this.$$hooks[event] = this.$$hooks[event] || []).push(callback);\n return this;\n }\n\n $once(event, callback) {\n const object = this;\n function cb(...args) {\n object.$off(event, cb);\n callback(...args);\n }\n cb.fn = callback;\n return this.$on(event, cb);\n }\n\n $off(event, callback) {\n if (event) {\n if (callback) {\n if (_.isArray(event)) {\n for (const ev of event) this.$off(ev, callback);\n } else if (this.$$hooks[event]) {\n const callbacks = this.$$hooks[event];\n for (let i = 0; i < callbacks.length; i++) {\n const cb = callbacks[i];\n if (cb === callback || cb.fn === callback) {\n callbacks.splice(i, 1);\n break;\n }\n }\n }\n } else {\n delete this.$$hooks[event];\n }\n } else {\n for (const key of _.keys(this.$$hooks)) delete this.$$hooks[key];\n }\n return this;\n }\n\n $emit(event, ...args) {\n if (_.has(this, '$$hooks')) {\n // Some callbacks remove themselves from the array, so clone it before iterating.\n _.forEach(_.clone(this.$$hooks[event]), callback => {\n if (callback.$once && callback.$once[event]) {\n callback.$once[event] -= 1;\n this.$off(event, callback);\n }\n callback(...args);\n });\n }\n return this;\n }\n\n get $$hooks() {\n Object.defineProperty(this, '$$hooks', {\n value: {}, writable: false, enumerable: false, configurable: false\n });\n return this.$$hooks;\n }\n}\n\ncopyPrototype(BaseValue, Value);\n\n_.forEach(Value.prototype, (prop, name) => {\n Object.defineProperty(\n Value.prototype, name, {value: prop, enumerable: false, configurable: false, writable: false});\n});\n\n\nclass ErrorWrapper {\n constructor(error) {\n this.error = error;\n }\n}\n\n\nclass FrozenWrapper {\n constructor(value) {\n this.value = value;\n }\n}\n\n\nexport default class Modeler {\n constructor(vue, debug) {\n this._vue = vue;\n this._trie = {Class: Value};\n this._debug = debug;\n Object.freeze(this);\n }\n\n init(classes, rootAcceptable) {\n if (_.isPlainObject(classes)) {\n _.forEach(classes, (Class, path) => {\n if (Class.$trussMount) return;\n Class.$$trussMount = Class.$$trussMount || [];\n Class.$$trussMount.push(path);\n });\n classes = _.values(classes);\n _.forEach(classes, Class => {\n if (!Class.$trussMount && Class.$$trussMount) {\n Class.$trussMount = Class.$$trussMount;\n delete Class.$$trussMount;\n }\n });\n }\n classes = _.uniq(classes);\n _.forEach(classes, Class => this._mountClass(Class, rootAcceptable));\n this._decorateTrie(this._trie);\n }\n\n destroy() {/* empty */}\n\n _getMount(path, scaffold, predicate) {\n const segments = splitPath(path, true);\n let node;\n for (const segment of segments) {\n let child = segment ?\n node.children && (node.children[segment] || !scaffold && node.children.$) : this._trie;\n if (!child) {\n if (!scaffold) return;\n node.children = node.children || {};\n child = node.children[segment] = {Class: Value};\n }\n node = child;\n if (predicate && predicate(node)) break;\n }\n return node;\n }\n\n _findMount(predicate, node) {\n if (!node) node = this._trie;\n if (predicate(node)) return node;\n for (const childKey of _.keys(node.children)) {\n const result = this._findMount(predicate, node.children[childKey]);\n if (result) return result;\n }\n }\n\n _decorateTrie(node) {\n _.forEach(node.children, child => {\n this._decorateTrie(child);\n if (child.local || child.localDescendants) node.localDescendants = true;\n });\n }\n\n _augmentClass(Class) {\n let computedProperties;\n let proto = Class.prototype;\n while (proto && proto.constructor !== Object) {\n for (const name of Object.getOwnPropertyNames(proto)) {\n const descriptor = Object.getOwnPropertyDescriptor(proto, name);\n if (name.charAt(0) === '$') {\n if (_.isEqual(descriptor, Object.getOwnPropertyDescriptor(Value.prototype, name))) {\n continue;\n }\n throw new Error(`Property names starting with \"$\" are reserved: ${Class.name}.${name}`);\n }\n if (UNSUPPORTED_LIFECYCLE_METHODS.has(name) && _.isFunction(proto[name])) {\n throw new Error(`Models don't support the \"${name}\" lifecycle method`);\n }\n if (descriptor.get && !(computedProperties && computedProperties[name])) {\n (computedProperties || (computedProperties = {}))[name] = {\n name, fullName: `${proto.constructor.name}.${name}`, get: descriptor.get,\n set: descriptor.set\n };\n }\n }\n proto = Object.getPrototypeOf(proto);\n }\n for (const name of Object.getOwnPropertyNames(Value.prototype)) {\n if (name === 'constructor' || Object.hasOwn(Class.prototype, name)) continue;\n Object.defineProperty(\n Class.prototype, name, Object.getOwnPropertyDescriptor(Value.prototype, name));\n }\n return computedProperties;\n }\n\n _mountClass(Class, rootAcceptable) {\n const computedProperties = this._augmentClass(Class);\n const allVariables = [];\n let mounts = Class.$trussMount;\n if (!mounts) throw new Error(`Class ${Class.name} lacks a $trussMount static property`);\n if (!_.isArray(mounts)) mounts = [mounts];\n _.forEach(mounts, mount => {\n if (_.isString(mount)) mount = {path: mount};\n if (!rootAcceptable && mount.path === '/') {\n throw new Error('Data root already accessed, too late to mount class');\n }\n const matcher = makePathMatcher(mount.path);\n for (const variable of matcher.variables) {\n if (variable === '$' || variable.charAt(1) === '$') {\n throw new Error(`Invalid variable name: ${variable}`);\n }\n if (variable.charAt(0) === '$' && (\n _.has(Value.prototype, variable) || RESERVED_VALUE_PROPERTY_NAMES[variable]\n )) {\n throw new Error(`Variable name conflicts with built-in property or method: ${variable}`);\n }\n allVariables.push(variable);\n }\n const escapedKey = mount.path.match(/\\/([^/]*)$/)[1];\n if (escapedKey.charAt(0) === '$') {\n if (mount.placeholder) {\n throw new Error(\n `Class ${Class.name} mounted at wildcard ${escapedKey} cannot be a placeholder`);\n }\n } else if (!_.has(mount, 'placeholder')) {\n mount.placeholder = {};\n }\n const targetMount = this._getMount(mount.path.replace(/\\$[^/]*/g, '$'), true);\n if (targetMount.matcher && (\n targetMount.escapedKey === escapedKey ||\n targetMount.escapedKey.charAt(0) === '$' && escapedKey.charAt(0) === '$'\n )) {\n throw new Error(\n `Multiple classes mounted at ${mount.path}: ${targetMount.Class.name}, ${Class.name}`);\n }\n _.assign(\n targetMount, {Class, matcher, computedProperties, escapedKey},\n _.pick(mount, 'placeholder', 'local', 'keysUnsafe', 'hidden'));\n });\n _(allVariables).uniq().forEach(variable => {\n Object.defineProperty(Class.prototype, variable, {get() {\n return creatingObjectProperties ?\n creatingObjectProperties[variable] && creatingObjectProperties[variable].value :\n undefined;\n }});\n });\n }\n\n /**\n * Creates a Truss object and sets all its basic properties: path segment variables, user-defined\n * properties, and computed properties. The latter two will be enumerable so that Vue will pick\n * them up and make the reactive.\n */\n createObject(path, properties) {\n const mount = this._getMount(path) || {Class: Value};\n try {\n if (mount.matcher) {\n const match = mount.matcher.match(path);\n for (const variable in match) {\n properties[variable] = {value: match[variable]};\n }\n }\n\n creatingObjectProperties = properties;\n const object = new mount.Class();\n creatingObjectProperties = null;\n\n if (angular.active) this._wrapProperties(object);\n\n if (mount.keysUnsafe) {\n properties.$data = {value: Object.create(null), configurable: true, enumerable: true};\n }\n if (mount.hidden) properties.$hidden = {value: true};\n if (mount.computedProperties) {\n _.forEach(mount.computedProperties, prop => {\n properties[prop.name] = this._buildComputedPropertyDescriptor(object, prop);\n });\n }\n\n return object;\n } catch (e) {\n e.extra = _.assign({mount, properties, className: mount.Class && mount.Class.name}, e.extra);\n throw e;\n }\n }\n\n _wrapProperties(object) {\n _.forEach(object, (value, key) => {\n const valueKey = '$_' + key;\n const descriptor = Object.getOwnPropertyDescriptor(object, key);\n const valueDescriptor = descriptor.get && descriptor.set ? {\n get: descriptor.get, set: descriptor.set, configurable: true\n } : {value, writable: true};\n Object.defineProperties(object, {\n [valueKey]: valueDescriptor,\n [key]: {\n get: () => object[valueKey],\n set: arg => {object[valueKey] = arg; angular.digest();},\n enumerable: true, configurable: true\n }\n });\n });\n }\n\n _buildComputedPropertyDescriptor(object, prop) {\n const propertyStats = stats.for(prop.fullName);\n\n let value, pendingPromise;\n let writeAllowed = false;\n\n const initialize = () => {\n let unwatchNow = false;\n const compute = computeValue.bind(object, prop, propertyStats);\n compute.toString = _.constant(`compute ${prop.fullName}`);\n let unwatch = () => {unwatchNow = true;};\n unwatch = this._vue.$watch(compute, newValue => {\n if (object.$destroyed) {\n unwatch();\n return;\n }\n if (pendingPromise) {\n if (pendingPromise.cancel) pendingPromise.cancel();\n pendingPromise = undefined;\n }\n if (_.isObject(newValue) && _.isFunction(newValue.then)) {\n const promise = newValue.then(finalValue => {\n if (promise === pendingPromise) update(finalValue);\n // No need to angular.digest() here, since if we're running under Angular then we expect\n // promises to be aliased to its $q service, which triggers digest itself.\n }, error => {\n if (promise === pendingPromise && update(new ErrorWrapper(error)) &&\n !error.trussExpectedException) throw error;\n });\n pendingPromise = promise;\n } else if (update(newValue)) {\n angular.digest();\n if (newValue instanceof ErrorWrapper && !newValue.error.trussExpectedException) {\n throw newValue.error;\n }\n }\n }, {immediate: true}); // use immediate:true since watcher will run computeValue anyway\n // Hack to change order of computed property watchers. By flipping their ids to be negative,\n // we ensure that they will settle before all other watchers, and also that children\n // properties will settle before their parents since values are often aggregated upwards.\n const watcher = _.last(this._vue._watchers || this._vue._scope.effects);\n watcher.id = -watcher.id;\n\n function update(newValue) {\n const startTime = performance.now();\n if (newValue instanceof FrozenWrapper) {\n newValue = newValue.value;\n unwatch();\n object.$off('hook:destroyed', unwatch);\n }\n if (newValue === LAST_COMPUTED_VALUE || isTrussEqual(value, newValue)) return;\n // console.log('updating', object.$key, prop.fullName, 'from', value, 'to', newValue);\n writeAllowed = true;\n object[prop.name] = newValue;\n writeAllowed = false;\n // Freeze the computed value so it can't be accidentally modified by a third party. Ideally\n // we'd freeze it before setting it so that Vue wouldn't instrument the object recursively\n // (since it can't change anyway), but we actually need the instrumentation in case a client\n // tries to access an inexistent property off a computed pointer to an unfrozen value (e.g.,\n // a $truss-ified object). When instrumented, Vue will add a dependency on the unfrozen\n // value in case the property is later added. If uninstrumented, the dependency won't be\n // added and we won't be notified. And Vue only instruments extensible objects...\n freeze(newValue);\n propertyStats.numUpdates += 1;\n propertyStats.updateTime += performance.now() - startTime;\n return true;\n }\n\n if (unwatchNow) {\n unwatch();\n } else {\n object.$on('hook:destroyed', unwatch);\n }\n\n object.$off('hook:created', initialize);\n };\n object.$on('hook:created', initialize);\n\n return {\n enumerable: true, configurable: true,\n get() {\n if (!writeAllowed && value instanceof ErrorWrapper) throw value.error;\n return value;\n },\n set(newValue) {\n if (writeAllowed) {\n value = newValue;\n } else if (prop.set) {\n prop.set.call(this, newValue);\n } else {\n throw new Error(`You cannot set a computed property: ${prop.name}`);\n }\n }\n };\n }\n\n destroyObject(object) {\n Object.defineProperty(\n object, '$destroyed', {value: true, enumerable: false, configurable: false});\n }\n\n emitLifecycleHook(object, hook) {\n if (_.isFunction(object[hook])) object[hook]();\n object.$emit(`hook:${hook}`);\n }\n\n isPlaceholder(path) {\n const mount = this._getMount(path);\n return mount && mount.placeholder;\n }\n\n isLocal(path, value) {\n const mount = this._getMount(path, false, mount => mount.local);\n if (mount && mount.local) return true;\n if (this._hasLocalProperties(mount, value)) {\n throw new Error('Write on a mix of local and remote tree paths.');\n }\n return false;\n }\n\n _hasLocalProperties(mount, value) {\n if (!mount) return false;\n if (mount.local) return true;\n if (!mount.localDescendants || !_.isObject(value)) return false;\n for (const key in value) {\n const local =\n this._hasLocalProperties(mount.children[escapeKey(key)] || mount.children.$, value[key]);\n if (local) return true;\n }\n return false;\n }\n\n forEachPlaceholderChild(path, iteratee) {\n const mount = this._getMount(path);\n _.forEach(mount && mount.children, child => {\n if (child.placeholder) iteratee(child);\n });\n }\n\n checkVueObject(object, path, checkedObjects) {\n const top = !checkedObjects;\n if (top) checkedObjects = new Set();\n const objectPropertyValues = new Map();\n const mount = this._findMount(candidate => candidate.Class === object.constructor);\n const targetProperties = _(object)\n .thru(Object.getOwnPropertyNames)\n .reject(key =>\n RESERVED_VALUE_PROPERTY_NAMES[key] || Object.hasOwn(Value.prototype, key) ||\n /^\\$_/.test(key)\n )\n .reject(key => mount && mount.matcher && _.includes(mount.matcher.variables, key))\n .map(key => {\n let value;\n try {\n value = object[key];\n // Ignore builtin object types.\n if (value instanceof RegExp) return;\n } catch {\n // Ignore any values that hold exceptions, or otherwise throw on access -- we won't be\n // able to check them anyway.\n return;\n }\n const descriptor = Object.getOwnPropertyDescriptor(object, key);\n const computed =\n !descriptor.enumerable && descriptor.set && !Object.hasOwn(object, '$_' + key);\n return {key, value, descriptor, computed};\n })\n .compact()\n .value();\n\n for (const {key, value, descriptor, computed} of targetProperties) {\n if (!(_.isArray(object) && (/^\\d+$/.test(key) || key === 'length'))) {\n if ('value' in descriptor || !descriptor.get) {\n throw new Error(\n `Value at ${path}, contained in a Firetruss object, has a rogue property: ${key}`);\n }\n if (object.$truss && descriptor.enumerable) {\n try {\n object[key] = value;\n throw new Error(\n `Firetruss object at ${path} has an enumerable non-Firebase property: ${key}`);\n } catch (e) {\n if (e.trussCode !== 'firebase_overwrite') throw e;\n }\n }\n }\n if (_.isObject(value)) {\n if (!checkedObjects.has(value) && !Object.isSealed(value) &&\n !(_.isFunction(value) || _.isElement(value) || value instanceof Promise)) {\n checkedObjects.add(value);\n this.checkVueObject(value, joinPath(path, escapeKey(key)), checkedObjects);\n }\n if (!computed && !value.$truss) objectPropertyValues.set(value, key);\n }\n }\n\n for (const {key, value, computed} of targetProperties) {\n if (computed && _.isObject(value) && !value.$truss) {\n const otherKey = objectPropertyValues.get(value);\n if (otherKey) {\n throw new Error(\n `Firetruss object at ${path} has properties ${key} ` +\n `and ${otherKey} with an aliased value`);\n }\n }\n }\n }\n}\n\n\nfunction computeValue(prop, propertyStats) {\n /* eslint-disable no-invalid-this */\n if (this.$destroyed) return;\n // Touch this object, since a failed access to a missing property doesn't get captured as a\n // dependency.\n this.$$touchThis();\n\n const oldPropertyFrozen = currentPropertyFrozen;\n currentPropertyFrozen = false;\n const startTime = performance.now();\n let value;\n try {\n try {\n value = prop.get.call(this);\n } catch (e) {\n value = new ErrorWrapper(e);\n } finally {\n propertyStats.computeTime += performance.now() - startTime;\n propertyStats.numRecomputes += 1;\n }\n if (currentPropertyFrozen) value = new FrozenWrapper(value);\n return value;\n } finally {\n currentPropertyFrozen = oldPropertyFrozen;\n }\n /* eslint-enable no-invalid-this */\n}\n\nfunction wrapConnections(object, connections) {\n if (!connections || connections instanceof Handle) return connections;\n if (_.isFunction(connections)) {\n const fn = function() {\n /* eslint-disable no-invalid-this */\n object.$$touchThis();\n return wrapConnections(object, connections.call(this));\n /* eslint-enable no-invalid-this */\n };\n fn.angularWatchSuppressed = true;\n return fn;\n }\n return _.mapValues(connections, descriptor => wrapConnections(object, descriptor));\n}\n\nfunction freeze(object) {\n if (_.isNil(object) || !_.isObject(object) || Object.isFrozen(object) || object.$truss) {\n return object;\n }\n object = Object.freeze(object);\n if (_.isArray(object)) return _.map(object, value => freeze(value));\n return _.mapValues(object, value => freeze(value));\n}\n","import _ from 'lodash';\nimport Vue from 'vue';\nimport angular from './angularCompatibility.js';\nimport {splitPath} from './utils/paths.js';\n\n\nclass QueryHandler {\n constructor(coupler, query) {\n this._coupler = coupler;\n this._query = query;\n this._listeners = [];\n this._keys = [];\n this._coupler._url.pathname = encodeURI(query.path);\n this._url = this._coupler._url.toString();\n this._segments = splitPath(query.path, true);\n this._listening = false;\n this.ready = false;\n }\n\n attach(operation, keysCallback) {\n this._listen();\n this._listeners.push({operation, keysCallback});\n if (this.ready) {\n this._coupler._dispatcher.markReady(operation);\n if (keysCallback) keysCallback(this._keys);\n }\n }\n\n detach(operation) {\n const k = _.findIndex(this._listeners, {operation});\n if (k >= 0) this._listeners.splice(k, 1);\n return this._listeners.length;\n }\n\n _listen() {\n if (this._listening) return;\n this._coupler._bridge.on(\n this._query.toString(), this._url, this._query.constraints, 'value',\n this._handleSnapshot, this._handleError, this, {sync: true});\n this._listening = true;\n }\n\n destroy() {\n this._coupler._bridge.off(\n this._query.toString(), this._url, this._query.constraints, 'value', this._handleSnapshot,\n this);\n this._listening = false;\n this.ready = false;\n angular.digest();\n for (const key of this._keys) {\n this._coupler._decoupleSegments(this._segments.concat(key));\n }\n }\n\n _handleSnapshot(snap) {\n this._coupler._queueSnapshotCallback(() => {\n // Order is important here: first couple any new subpaths so _handleSnapshot will update the\n // tree, then tell the client to update its keys, pulling values from the tree.\n if (!this._listeners.length || !this._listening) return;\n const updatedKeys = this._updateKeysAndApplySnapshot(snap);\n if (!this.ready) {\n this.ready = true;\n angular.digest();\n for (const listener of this._listeners) {\n this._coupler._dispatcher.markReady(listener.operation);\n }\n }\n if (updatedKeys) {\n for (const listener of this._listeners) {\n if (listener.keysCallback) listener.keysCallback(updatedKeys);\n }\n }\n });\n }\n\n _updateKeysAndApplySnapshot(snap) {\n let updatedKeys;\n if (snap.path === this._query.path) {\n updatedKeys = _.keys(snap.value);\n updatedKeys.sort();\n if (_.isEqual(this._keys, updatedKeys)) {\n updatedKeys = null;\n } else {\n for (const key of _.difference(updatedKeys, this._keys)) {\n this._coupler._coupleSegments(this._segments.concat(key));\n }\n for (const key of _.difference(this._keys, updatedKeys)) {\n // Decoupling a segment will prune the tree at that location if there are no other\n // listeners.\n this._coupler._decoupleSegments(this._segments.concat(key));\n }\n this._keys = updatedKeys;\n }\n // The snapshot may be partial, so create synthetic snapshots for subpaths and apply those to\n // update / insert values. (Deleted ones got pruned above.)\n if (snap.exists) {\n const rootValue = snap.value;\n const rootPath = snap.path;\n for (const key of this._keys) {\n snap._path = rootPath + '/' + key;\n snap._key = undefined;\n snap._value = rootValue[key];\n this._coupler._applySnapshot(snap);\n }\n // Restore original properties, just in case.\n snap._path = rootPath;\n snap._key = undefined;\n snap._value = rootValue;\n }\n } else if (snap.path.replace(/\\/[^/]+/, '') === this._query.path) {\n const hasKey = _.includes(this._keys, snap.key);\n if (snap.value) {\n if (!hasKey) {\n this._coupler._coupleSegments(this._segments.concat(snap.key));\n this._keys.push(snap.key);\n this._keys.sort();\n updatedKeys = this._keys;\n }\n } else if (hasKey) {\n this._coupler._decoupleSegments(this._segments.concat(snap.key));\n _.pull(this._keys, snap.key);\n this._keys.sort();\n updatedKeys = this._keys;\n }\n // A snapshot under the query's level is guaranteed to be a full snapshot, so we can apply it\n // directly.\n this._coupler._applySnapshot(snap);\n }\n return updatedKeys;\n }\n\n _handleError(error) {\n if (!this._listeners.length || !this._listening) return;\n this._listening = false;\n this.ready = false;\n for (const key of this._keys) this._coupler._decoupleSegments(this._segments.concat(key));\n this._keys = [];\n angular.digest();\n Promise.all(_.map(this._listeners, listener => {\n this._coupler._dispatcher.clearReady(listener.operation);\n return this._coupler._dispatcher.retry(listener.operation, error).catch(e => {\n listener.operation._disconnect(e);\n return false;\n });\n })).then(results => {\n if (_.some(results)) {\n if (this._listeners.length) this._listen();\n } else {\n for (const listener of this._listeners) listener.operation._disconnect(error);\n }\n });\n }\n}\n\n\nclass Node {\n constructor(coupler, path, parent) {\n this._coupler = coupler;\n this.path = path;\n this.parent = parent;\n this._coupler._url.pathname = encodeURI(path);\n this.url = this._coupler._url.toString();\n this.operations = [];\n this.queryCount = 0;\n this.listening = false;\n this.ready = false;\n this.children = {};\n }\n\n get active() {\n return this.count || this.queryCount;\n }\n\n get count() {\n return this.operations.length;\n }\n\n listen(skip) {\n if (!skip && this.count) {\n if (this.listening) return;\n _.forEach(this.operations, op => {this._coupler._dispatcher.clearReady(op);});\n this._coupler._bridge.on(\n this.url, this.url, null, 'value', this._handleSnapshot, this._handleError, this,\n {sync: true});\n this.listening = true;\n } else {\n _.forEach(this.children, child => {child.listen();});\n }\n }\n\n unlisten(skip) {\n if (!skip && this.listening) {\n this._coupler._bridge.off(this.url, this.url, null, 'value', this._handleSnapshot, this);\n this.listening = false;\n this._forAllDescendants(node => {\n if (node.listening) return false;\n if (node.ready) {\n node.ready = false;\n angular.digest();\n }\n });\n } else {\n _.forEach(this.children, child => {child.unlisten();});\n }\n }\n\n _handleSnapshot(snap) {\n this._coupler._queueSnapshotCallback(() => {\n if (!this.listening || !this._coupler.isTrunkCoupled(snap.path)) return;\n this._coupler._applySnapshot(snap);\n if (!this.ready && snap.path === this.path) {\n this.ready = true;\n angular.digest();\n this.unlisten(true);\n this._forAllDescendants(node => {\n for (const op of node.operations) this._coupler._dispatcher.markReady(op);\n });\n }\n });\n }\n\n _handleError(error) {\n if (!this.count || !this.listening) return;\n this.listening = false;\n this._forAllDescendants(node => {\n if (node.listening) return false;\n if (node.ready) {\n node.ready = false;\n angular.digest();\n }\n for (const op of node.operations) this._coupler._dispatcher.clearReady(op);\n });\n // Immediately prune all data below this node. We don't want to decouple it since the operation\n // may want to retry. We also don't want to look for other coupled paths below (that may not be\n // subject to the permission denied error) since they're not listening and the data would get\n // stale. If this node doesn't retry and gets decoupled we'll automatically start listening on\n // descendants and (try to) refill the subtrees.\n this._coupler._prunePath(this.path);\n return Promise.all(_.map(this.operations, op => {\n return this._coupler._dispatcher.retry(op, error).catch(e => {\n op._disconnect(e);\n return false;\n });\n })).then(results => {\n if (_.some(results)) {\n if (this.count) this.listen();\n } else {\n for (const op of this.operations) op._disconnect(error);\n // Pulling all the operations will automatically get us listening on descendants.\n }\n });\n }\n\n _forAllDescendants(iteratee) {\n if (iteratee(this) === false) return;\n _.forEach(this.children, child => child._forAllDescendants(iteratee));\n }\n\n collectCoupledDescendantPaths(paths) {\n if (!paths) paths = {};\n paths[this.path] = this.active;\n if (!this.active) {\n _.forEach(this.children, child => {child.collectCoupledDescendantPaths(paths);});\n }\n return paths;\n }\n}\n\n\nexport default class Coupler {\n constructor(rootUrl, bridge, dispatcher, applySnapshot, prunePath) {\n this._url = new URL(rootUrl);\n this._bridge = bridge;\n this._dispatcher = dispatcher;\n this._applySnapshot = applySnapshot;\n this._pendingSnapshotCallbacks = [];\n this._throttled = {processPendingSnapshots: this._processPendingSnapshots};\n this._prunePath = prunePath;\n this._vue = new Vue({data: {root: undefined, queryHandlers: {}}});\n // Prevent Vue from instrumenting rendering since there's actually nothing to render, and the\n // warnings cause false positives from Lodash primitives when running tests.\n this._vue._renderProxy = this._vue;\n this._nodeIndex = Object.create(null);\n Object.freeze(this);\n // Set root node after freezing Coupler, otherwise it gets vue-ified too.\n this._vue.$data.root = new Node(this, '/');\n this._nodeIndex['/'] = this._root;\n }\n\n get _root() {\n return this._vue.$data.root;\n }\n\n get _queryHandlers() {\n return this._vue.$data.queryHandlers;\n }\n\n destroy() {\n _.forEach(this._queryHandlers, queryHandler => {queryHandler.destroy();});\n this._root.unlisten();\n this._vue.$destroy();\n }\n\n couple(path, operation) {\n return this._coupleSegments(splitPath(path, true), operation);\n }\n\n _coupleSegments(segments, operation) {\n let node;\n let superseded = !operation;\n let ready = false;\n for (const segment of segments) {\n let child = segment ? node.children && node.children[segment] : this._root;\n if (!child) {\n child = new Node(this, `${node.path === '/' ? '' : node.path}/${segment}`, node);\n Vue.set(node.children, segment, child);\n this._nodeIndex[child.path] = child;\n }\n superseded = superseded || child.listening;\n ready = ready || child.ready;\n node = child;\n }\n if (operation) {\n node.operations.push(operation);\n } else {\n node.queryCount++;\n }\n if (superseded) {\n if (operation && ready) this._dispatcher.markReady(operation);\n } else {\n node.listen(); // node will call unlisten() on descendants when ready\n }\n }\n\n decouple(path, operation) {\n return this._decoupleSegments(splitPath(path, true), operation);\n }\n\n _decoupleSegments(segments, operation) {\n const ancestors = [];\n let node;\n for (const segment of segments) {\n node = segment ? node.children && node.children[segment] : this._root;\n if (!node) break;\n ancestors.push(node);\n }\n if (!node || !(operation ? node.count : node.queryCount)) {\n throw new Error(`Path not coupled: ${segments.join('/') || '/'}`);\n }\n if (operation) {\n _.pull(node.operations, operation);\n } else {\n node.queryCount--;\n }\n if (operation && !node.count) {\n // Ideally, we wouldn't resync the full values here since we probably already have the current\n // value for all children. But making sure that's true is tricky in an async system (what if\n // the node's value changes and the update crosses the 'off' call in transit?) and this\n // situation should be sufficiently rare that the optimization is probably not worth it right\n // now.\n node.listen();\n if (node.listening) node.unlisten();\n }\n if (!node.active) {\n for (let i = ancestors.length - 1; i > 0; i--) {\n node = ancestors[i];\n if (node === this._root || node.active || !_.isEmpty(node.children)) break;\n Vue.delete(ancestors[i - 1].children, segments[i]);\n node.ready = undefined;\n delete this._nodeIndex[node.path];\n }\n const path = segments.join('/') || '/';\n this._prunePath(path, this.findCoupledDescendantPaths(path));\n }\n }\n\n subscribe(query, operation, keysCallback) {\n let queryHandler = this._queryHandlers[query.toString()];\n if (!queryHandler) {\n queryHandler = new QueryHandler(this, query);\n Vue.set(this._queryHandlers, query.toString(), queryHandler);\n }\n queryHandler.attach(operation, keysCallback);\n }\n\n unsubscribe(query, operation) {\n const queryHandler = this._queryHandlers[query.toString()];\n if (queryHandler && !queryHandler.detach(operation)) {\n queryHandler.destroy();\n Vue.delete(this._queryHandlers, query.toString());\n }\n }\n\n // Return whether the node at path or any ancestors are coupled.\n isTrunkCoupled(path) {\n const segments = splitPath(path, true);\n let node;\n for (const segment of segments) {\n node = segment ? node.children && node.children[segment] : this._root;\n if (!node) return false;\n if (node.active) return true;\n }\n return false;\n }\n\n findCoupledDescendantPaths(path) {\n let node;\n for (const segment of splitPath(path, true)) {\n node = segment ? node.children && node.children[segment] : this._root;\n if (node && node.active) return {[path]: node.active};\n if (!node) break;\n }\n return node && node.collectCoupledDescendantPaths();\n }\n\n isSubtreeReady(path) {\n let node, childSegment;\n function extractChildSegment(match) {\n childSegment = match.slice(1);\n return '';\n }\n while (!(node = this._nodeIndex[path])) {\n path = path.replace(/\\/[^/]*$/, extractChildSegment) || '/';\n }\n if (childSegment) void node.children; // state an interest in the closest ancestor's children\n while (node) {\n if (node.ready) return true;\n node = node.parent;\n }\n return false;\n }\n\n isQueryReady(query) {\n const queryHandler = this._queryHandlers[query.toString()];\n return queryHandler && queryHandler.ready;\n }\n\n _queueSnapshotCallback(callback) {\n this._pendingSnapshotCallbacks.push(callback);\n this._throttled.processPendingSnapshots.call(this);\n }\n\n _processPendingSnapshots() {\n for (const callback of this._pendingSnapshotCallbacks) callback();\n // Property is frozen, so we need to splice to empty the array.\n this._pendingSnapshotCallbacks.splice(0, Infinity);\n }\n\n throttleSnapshots(delay) {\n if (delay) {\n this._throttled.processPendingSnapshots =\n _.debounce(_.throttle(this._processPendingSnapshots, delay));\n } else {\n this._throttled.processPendingSnapshots = this._processPendingSnapshots;\n }\n }\n}\n\n","import angular from './angularCompatibility.js';\nimport Coupler from './Coupler.js';\nimport Modeler from './Modeler.js';\nimport Reference from './Reference.js';\nimport {escapeKey, escapeKeys, unescapeKey, joinPath, splitPath} from './utils/paths.js';\nimport {wrapPromiseCallback, promiseFinally} from './utils/promises.js';\nimport {SERVER_TIMESTAMP} from './utils/utils.js';\n\nimport _ from 'lodash';\nimport Vue from 'vue';\n\n\nclass Transaction {\n constructor(ref) {\n this._ref = ref;\n this._outcome = undefined;\n this._values = undefined;\n }\n\n get currentValue() {return this._ref.value;}\n get outcome() {return this._outcome;}\n get values() {return this._values;}\n\n _setOutcome(value) {\n if (this._outcome) throw new Error('Transaction already resolved with ' + this._outcome);\n this._outcome = value;\n }\n\n abort() {\n this._setOutcome('abort');\n }\n\n cancel() {\n this._setOutcome('cancel');\n }\n\n set(value) {\n if (value === undefined) throw new Error('Invalid argument: undefined');\n this._setOutcome('set');\n this._values = {'': value};\n }\n\n update(values) {\n if (values === undefined) throw new Error('Invalid argument: undefined');\n if (_.isEmpty(values)) return this.cancel();\n this._setOutcome('update');\n this._values = values;\n }\n}\n\n\nexport default class Tree {\n constructor(truss, rootUrl, bridge, dispatcher) {\n this._truss = truss;\n this._url = new URL(rootUrl);\n this._bridge = bridge;\n this._dispatcher = dispatcher;\n this._firebasePropertyEditAllowed = false;\n this._writeSerial = 0;\n this._localWrites = {};\n this._localWriteTimestamp = null;\n this._initialized = false;\n this._vue = new Vue({data: {$root: undefined}});\n this._modeler = new Modeler(this._vue, truss.constructor.VERSION === 'dev');\n this._coupler = new Coupler(\n rootUrl, bridge, dispatcher, this._integrateSnapshot.bind(this), this._prune.bind(this));\n Object.seal(this);\n // Call this.init(classes) to complete initialization; we need two phases so that truss can bind\n // the tree into its own accessors prior to defining computed functions, which may try to\n // access the tree root via truss.\n }\n\n get root() {\n if (!this._vue.$data.$root) {\n this._vue.$data.$root = this._createObject('/');\n this._fixObject(this._vue.$data.$root);\n this._completeCreateObject(this._vue.$data.$root);\n angular.digest();\n }\n return this._vue.$data.$root;\n }\n\n get truss() {\n return this._truss;\n }\n\n init(classes) {\n if (this._initialized) {\n throw new Error('Data objects already created, too late to mount classes');\n }\n this._initialized = true;\n this._modeler.init(classes, !this._vue.$data.$root);\n const createdObjects = [];\n this._plantPlaceholders(this.root, '/', undefined, createdObjects);\n for (const object of createdObjects) this._completeCreateObject(object);\n }\n\n destroy() {\n this._coupler.destroy();\n if (this._modeler) this._modeler.destroy();\n this._vue.$destroy();\n }\n\n connectReference(ref, method) {\n this._checkHandle(ref);\n const operation = this._dispatcher.createOperation('read', method, ref);\n let unwatch;\n operation._disconnect = this._disconnectReference.bind(this, ref, operation, unwatch);\n this._dispatcher.begin(operation).then(() => {\n if (operation.running && !operation._disconnected) {\n this._coupler.couple(ref.path, operation);\n operation._coupled = true;\n }\n }).catch(_.noop); // ignore exception, let onFailure handlers deal with it\n return operation._disconnect;\n }\n\n _disconnectReference(ref, operation, unwatch, error) {\n if (operation._disconnected) return;\n operation._disconnected = true;\n if (unwatch) unwatch();\n if (operation._coupled) {\n this._coupler.decouple(ref.path, operation); // will call back to _prune if necessary\n operation._coupled = false;\n }\n this._dispatcher.end(operation, error).catch(_.noop);\n }\n\n isReferenceReady(ref) {\n this._checkHandle(ref);\n return this._coupler.isSubtreeReady(ref.path);\n }\n\n connectQuery(query, keysCallback, method) {\n this._checkHandle(query);\n const operation = this._dispatcher.createOperation('read', method, query);\n operation._disconnect = this._disconnectQuery.bind(this, query, operation);\n this._dispatcher.begin(operation).then(() => {\n if (operation.running && !operation._disconnected) {\n this._coupler.subscribe(query, operation, keysCallback);\n operation._coupled = true;\n }\n }).catch(_.noop); // ignore exception, let onFailure handlers deal with it\n return operation._disconnect;\n }\n\n _disconnectQuery(query, operation, error) {\n if (operation._disconnected) return;\n operation._disconnected = true;\n if (operation._coupled) {\n this._coupler.unsubscribe(query, operation); // will call back to _prune if necessary\n operation._coupled = false;\n }\n this._dispatcher.end(operation, error).catch(_.noop);\n }\n\n isQueryReady(query) {\n return this._coupler.isQueryReady(query);\n }\n\n _checkHandle(handle) {\n if (!handle.belongsTo(this._truss)) {\n throw new Error('Reference belongs to another Truss instance');\n }\n }\n\n throttleRemoteDataUpdates(delay) {\n this._coupler.throttleSnapshots(delay);\n }\n\n update(ref, method, values) {\n values = _.mapValues(values, value => escapeKeys(value));\n const numValues = _.size(values);\n if (!numValues) return Promise.resolve();\n if (method === 'update' || method === 'override') {\n checkUpdateHasOnlyDescendantsWithNoOverlap(ref.path, values);\n }\n if (this._applyLocalWrite(values, method === 'override')) return Promise.resolve();\n const pathPrefix = extractCommonPathPrefix(values);\n relativizePaths(pathPrefix, values);\n if (pathPrefix !== ref.path) ref = new Reference(ref._tree, pathPrefix, ref._annotations);\n this._url.pathname = encodeURI(pathPrefix);\n const url = this._url.toString();\n const writeSerial = this._writeSerial;\n const set = numValues === 1;\n const operand = set ? values[''] : values;\n return this._dispatcher.execute('write', set ? 'set' : 'update', ref, operand, () => {\n const promise = this._bridge[set ? 'set' : 'update'](url, operand, writeSerial);\n return promise.catch(e => {\n if (!e.immediateFailure) return Promise.reject(e);\n return promiseFinally(this._repair(ref, values), () => Promise.reject(e));\n });\n });\n }\n\n commit(ref, updateFunction) {\n let tries = 0, sameValueCount = 0;\n const attemptCounts = {};\n updateFunction = wrapPromiseCallback(updateFunction);\n\n const attemptTransaction = counter => {\n if (tries++ >= 25) {\n const error = new Error('Transaction needed too many retries, giving up');\n try {\n _.assign(error, {attemptCounts, sameValueCount});\n } catch {\n // ignore\n }\n return Promise.reject(error);\n }\n counter = counter || 'initial';\n attemptCounts[counter] = (attemptCounts[counter] || 0) + 1;\n const txn = new Transaction(ref);\n let oldValue;\n // Ensure that Vue's watcher queue gets emptied and computed properties are up to date before\n // running the updateFunction.\n return Vue.nextTick().then(() => {\n const newOldValue = toFirebaseJson(txn.currentValue);\n if (_.isEqual(newOldValue, oldValue)) sameValueCount += 1;\n oldValue = newOldValue;\n return updateFunction(txn);\n }).then(() => {\n if (!_.isEqual(oldValue, toFirebaseJson(txn.currentValue))) {\n return attemptTransaction('changed');\n }\n if (txn.outcome === 'abort') return txn; // early return to save time\n const values = _.mapValues(txn.values, value => escapeKeys(value));\n switch (txn.outcome) {\n case 'cancel':\n break;\n case 'set':\n if (this._applyLocalWrite({[ref.path]: values['']})) return Promise.resolve();\n break;\n case 'update':\n checkUpdateHasOnlyDescendantsWithNoOverlap(ref.path, values);\n if (this._applyLocalWrite(values)) return Promise.resolve();\n relativizePaths(ref.path, values);\n break;\n default:\n throw new Error('Invalid transaction outcome: ' + (txn.outcome || 'none'));\n }\n this._url.pathname = encodeURI(ref.path);\n return this._bridge.transaction(\n this._url.toString(), oldValue, values, this._writeSerial\n ).then(result => {\n _.forEach(result.snapshots, snapshot => this._integrateSnapshot(snapshot));\n return result.committed ? txn : attemptTransaction('stale');\n }, e => {\n if (e.immediateFailure && (txn.outcome === 'set' || txn.outcome === 'update')) {\n return promiseFinally(this._repair(ref, values), () => Promise.reject(e));\n }\n return Promise.reject(e);\n });\n });\n };\n\n return this._truss.peek(ref, () => {\n return this._dispatcher.execute('write', 'commit', ref, undefined, attemptTransaction);\n });\n }\n\n _repair(ref, values) {\n // If a write fails early -- that is, before it gets applied to the Firebase client's local\n // tree -- then we need to repair our own local tree manually since Firebase won't send events\n // to unwind the change. This should be very rare since it's always due to a developer mistake\n // so we don't need to be particularly efficient.\n const basePath = ref.path;\n const paths = _(values).keys().flatMap(key => {\n let path = basePath;\n if (key) path = joinPath(path, key);\n return _.keys(this._coupler.findCoupledDescendantPaths(path));\n }).value();\n return Promise.all(_.map(paths, path => {\n this._url.pathname = encodeURI(path);\n return this._bridge.once(this._url.toString()).then(snap => {\n this._integrateSnapshot(snap);\n });\n }));\n }\n\n _applyLocalWrite(values, override) {\n // TODO: correctly apply local writes that impact queries. Currently, a local write will update\n // any objects currently selected by a query, but won't add or remove results.\n this._writeSerial++;\n this._localWriteTimestamp = this._truss.now;\n const createdObjects = [];\n let numLocal = 0;\n _.forEach(values, (value, path) => {\n const local = this._modeler.isLocal(path, value);\n if (local) numLocal++;\n const coupledDescendantPaths =\n local ? {[path]: true} : this._coupler.findCoupledDescendantPaths(path);\n if (_.isEmpty(coupledDescendantPaths)) return;\n const offset = (path === '/' ? 0 : path.length) + 1;\n for (const descendantPath in coupledDescendantPaths) {\n const subPath = descendantPath.slice(offset);\n let subValue = value;\n if (subPath && value !== null && value !== undefined) {\n for (const segment of splitPath(subPath)) {\n subValue = subValue.$data[segment];\n if (subValue === undefined) break;\n }\n }\n if (_.isNil(subValue)) {\n this._prune(descendantPath);\n } else {\n const key = _.last(splitPath(descendantPath));\n this._plantValue(\n descendantPath, key, subValue,\n this._scaffoldAncestors(descendantPath, false, createdObjects), false, override, local,\n createdObjects\n );\n }\n if (!override && !local) this._localWrites[descendantPath] = this._writeSerial;\n }\n });\n for (const object of createdObjects) this._completeCreateObject(object);\n if (numLocal && numLocal < _.size(values)) {\n throw new Error('Write on a mix of local and remote tree paths.');\n }\n return override || !!numLocal;\n }\n\n /**\n * Creates a Truss object and sets all its basic properties: path segment variables, user-defined\n * properties, and computed properties. The latter two will be enumerable so that Vue will pick\n * them up and make the reactive, so you should call _completeCreateObject once it's done so and\n * before any Firebase properties are added.\n */\n _createObject(path, parent) {\n if (!this._initialized && path !== '/') this.init();\n const properties = {\n // We want Vue to wrap this; we'll make it non-enumerable in _fixObject.\n $parent: {value: parent, configurable: true, enumerable: true},\n $path: {value: path}\n };\n if (path === '/') properties.$truss = {value: this._truss};\n\n const object = this._modeler.createObject(path, properties);\n this._modeler.emitLifecycleHook(object, 'beforeCreate');\n this._defineObjectProperties(object, properties);\n return object;\n }\n\n _defineObjectProperties(object, properties) {\n const observer = object.__ob__;\n Object.defineProperties(object, properties);\n if (!observer) return;\n\n let addedReactiveProperties = false;\n for (const name of _.keys(properties)) {\n const descriptor = Object.getOwnPropertyDescriptor(object, name);\n if (!descriptor.configurable || !descriptor.enumerable) continue;\n Vue.util.defineReactive(object, name);\n addedReactiveProperties = true;\n }\n if (addedReactiveProperties) observer.dep.notify();\n }\n\n // To be called on the result of _createObject after it's been inserted into the _vue hierarchy\n // and Vue has had a chance to initialize it.\n _fixObject(object) {\n for (const name of Object.getOwnPropertyNames(object)) {\n const descriptor = Object.getOwnPropertyDescriptor(object, name);\n if (descriptor.configurable && descriptor.enumerable) {\n descriptor.enumerable = false;\n if (_.startsWith(name, '$')) descriptor.configurable = false;\n Object.defineProperty(object, name, descriptor);\n }\n }\n }\n\n // To be called on the result of _createObject after _fixObject, and after any additional Firebase\n // properties have been set, to run initializers.\n _completeCreateObject(object) {\n this._modeler.emitLifecycleHook(object, 'created');\n }\n\n _destroyObject(object) {\n if (!(object && object.$truss) || object.$destroyed) return;\n this._modeler.emitLifecycleHook(object, 'beforeDestroy');\n this._modeler.destroyObject(object);\n // Normally we'd only destroy enumerable children, which are the Firebase properties. However,\n // clients have the option of creating hidden placeholders, so we need to scan non-enumerable\n // properties as well. To distinguish such placeholders from the myriad other non-enumerable\n // properties (that lead all over tree, e.g. $parent), we check that the property's parent is\n // ourselves before destroying.\n for (const key of Object.getOwnPropertyNames(object.$data)) {\n const child = object.$data[key];\n if (child && child.$parent === object) this._destroyObject(child);\n }\n this._modeler.emitLifecycleHook(object, 'destroyed');\n }\n\n _integrateSnapshot(snap) {\n _.forEach(this._localWrites, (writeSerial, path) => {\n if (snap.writeSerial >= writeSerial) delete this._localWrites[path];\n });\n if (snap.exists) {\n const createdObjects = [];\n const parent = this._scaffoldAncestors(snap.path, true, createdObjects);\n if (parent) {\n this._plantValue(\n snap.path, snap.key, snap.value, parent, true, false, false, createdObjects);\n }\n for (const object of createdObjects) this._completeCreateObject(object);\n } else {\n this._prune(snap.path, null, true);\n }\n }\n\n _scaffoldAncestors(path, remoteWrite, createdObjects) {\n let object;\n const segments = _.dropRight(splitPath(path, true));\n let ancestorPath = '/';\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const key = unescapeKey(segment);\n let child = segment ? object.$data[key] : this.root;\n if (segment) ancestorPath += (ancestorPath === '/' ? '' : '/') + segment;\n if (child) {\n if (remoteWrite && this._localWrites[ancestorPath]) return;\n } else {\n child = this._plantValue(\n ancestorPath, key, {}, object, remoteWrite, false, false, createdObjects);\n if (!child) return;\n }\n object = child;\n }\n return object;\n }\n\n _plantValue(path, key, value, parent, remoteWrite, override, local, createdObjects) {\n if (remoteWrite && _.isNil(value)) {\n throw new Error(`Snapshot includes invalid value at ${path}: ${value}`);\n }\n if (remoteWrite && this._localWrites[path || '/']) return;\n if (_.isEqual(value, SERVER_TIMESTAMP)) value = this._localWriteTimestamp;\n let object = parent.$data[key];\n if (!_.isArray(value) && !(local ? _.isPlainObject(value) : _.isObject(value))) {\n this._destroyObject(object);\n if (!local && _.isNil(value)) {\n this._deleteFirebaseProperty(parent, key);\n } else {\n this._setFirebaseProperty(parent, key, value);\n }\n return;\n }\n let objectCreated = false;\n if (!_.isObject(object)) {\n // Need to pre-set the property, so that if the child object attempts to watch any of its own\n // properties while being created the $$touchThis method has something to add a dependency on\n // as the object's own properties won't be made reactive until *after* it's been created.\n this._setFirebaseProperty(parent, key, null);\n object = this._createObject(path, parent);\n this._setFirebaseProperty(parent, key, object, object.$hidden);\n this._fixObject(object);\n createdObjects.push(object);\n objectCreated = true;\n }\n if (override) {\n Object.defineProperty(object, '$overridden', {get: _.constant(true), configurable: true});\n } else if (object.$overridden) {\n delete object.$overridden;\n }\n // Plant hidden placeholders first, so their computed watchers will have a similar precedence to\n // the parent object, and the parent object's other children will get computed first. This can\n // optimize updates when parts of a complex model are broken out into hidden sub-models, and\n // shouldn't risk being overwritten by actual Firebase data since that will rarely (never?) be\n // hidden.\n if (objectCreated) this._plantPlaceholders(object, path, true, createdObjects);\n _.forEach(value, (item, escapedChildKey) => {\n this._plantValue(\n joinPath(path, escapedChildKey), unescapeKey(escapedChildKey), item, object, remoteWrite,\n override, local, createdObjects\n );\n });\n if (objectCreated) {\n this._plantPlaceholders(object, path, false, createdObjects);\n } else {\n _.forEach(object.$data, (item, childKey) => {\n const escapedChildKey = escapeKey(childKey);\n if (!Object.hasOwn(value, escapedChildKey)) {\n this._prune(joinPath(path, escapedChildKey), null, remoteWrite);\n }\n });\n }\n return object;\n }\n\n _plantPlaceholders(object, path, hidden, createdObjects) {\n this._modeler.forEachPlaceholderChild(path, mount => {\n if (hidden !== undefined && hidden !== !!mount.hidden) return;\n const key = unescapeKey(mount.escapedKey);\n if (!Object.hasOwn(object.$data, key)) {\n this._plantValue(\n joinPath(path, mount.escapedKey), key, mount.placeholder, object, false, false, false,\n createdObjects);\n }\n });\n }\n\n _prune(path, lockedDescendantPaths, remoteWrite) {\n lockedDescendantPaths = lockedDescendantPaths || {};\n const object = this.getObject(path);\n if (object === undefined) return;\n if (remoteWrite && this._avoidLocalWritePaths(path, lockedDescendantPaths)) return;\n if (!(_.isEmpty(lockedDescendantPaths) && this._pruneAncestors(path, object)) &&\n _.isObject(object)) {\n // The target object is a placeholder, and all ancestors are placeholders or otherwise needed\n // as well, so we can't delete it. Instead, dive into its descendants to delete what we can.\n this._pruneDescendants(object, lockedDescendantPaths);\n }\n }\n\n _avoidLocalWritePaths(path, lockedDescendantPaths) {\n for (const localWritePath in this._localWrites) {\n if (!Object.hasOwn(this._localWrites, localWritePath)) continue;\n if (path === localWritePath || localWritePath === '/' ||\n _.startsWith(path, localWritePath + '/')) return true;\n if (path === '/' || _.startsWith(localWritePath, path + '/')) {\n const segments = splitPath(localWritePath, true);\n for (let i = segments.length; i > 0; i--) {\n const subPath = segments.slice(0, i).join('/');\n const active = i === segments.length;\n if (lockedDescendantPaths[subPath] || lockedDescendantPaths[subPath] === active) break;\n lockedDescendantPaths[subPath] = active;\n if (subPath === path) break;\n }\n }\n }\n }\n\n _pruneAncestors(targetPath, targetObject) {\n // Destroy the child (unless it's a placeholder that's still needed) and any ancestors that\n // are no longer needed to keep this child rooted, and have no other reason to exist.\n let deleted = false;\n let object = targetObject;\n // The target object may be a primitive, in which case it won't have $path, $parent and $key\n // properties. In that case, use the target path to figure those out instead. Note that all\n // ancestors of the target object will necessarily not be primitives and will have those\n // properties.\n let targetKey;\n const targetParentPath = targetPath.replace(/\\/[^/]+$/, match => {\n targetKey = unescapeKey(match.slice(1));\n return '';\n });\n while (object !== undefined && object !== this.root) {\n const parent =\n object && object.$parent || object === targetObject && this.getObject(targetParentPath);\n if (!this._modeler.isPlaceholder(object && object.$path || targetPath)) {\n const ghostObjects = deleted ? null : [targetObject];\n if (!this._holdsConcreteData(object, ghostObjects)) {\n deleted = true;\n this._deleteFirebaseProperty(\n parent, object && object.$key || object === targetObject && targetKey);\n }\n }\n object = parent;\n }\n return deleted;\n }\n\n _holdsConcreteData(object, ghostObjects) {\n if (_.isNil(object)) return false;\n if (ghostObjects && _.includes(ghostObjects, object)) return false;\n if (!_.isObject(object) || !object.$truss) return true;\n return _.some(object.$data, value => this._holdsConcreteData(value, ghostObjects));\n }\n\n _pruneDescendants(object, lockedDescendantPaths) {\n if (lockedDescendantPaths[object.$path]) return true;\n if (object.$overridden) delete object.$overridden;\n let coupledDescendantFound = false;\n _.forEach(object.$data, (value, key) => {\n let shouldDelete = true;\n let valueLocked;\n if (lockedDescendantPaths[joinPath(object.$path, escapeKey(key))]) {\n shouldDelete = false;\n valueLocked = true;\n } else if (!_.isNil(value) && value.$truss) {\n const placeholder = this._modeler.isPlaceholder(value.$path);\n if (placeholder || _.has(lockedDescendantPaths, value.$path)) {\n valueLocked = this._pruneDescendants(value, lockedDescendantPaths);\n shouldDelete = !placeholder && !valueLocked;\n }\n }\n if (shouldDelete) this._deleteFirebaseProperty(object, key);\n coupledDescendantFound = coupledDescendantFound || valueLocked;\n });\n return coupledDescendantFound;\n }\n\n getObject(path) {\n const segments = splitPath(path);\n let object;\n for (const segment of segments) {\n object = segment ? object.$data[segment] : this.root;\n if (object === undefined) return;\n }\n return object;\n }\n\n _getFirebasePropertyDescriptor(object, data, key) {\n const descriptor = Object.getOwnPropertyDescriptor(data, key);\n if (descriptor) {\n if (!descriptor.enumerable) {\n const child = data[key];\n if (!child || child.$parent !== object) {\n throw new Error(\n `Key conflict between Firebase and instance or computed properties at ` +\n `${object.$path}: ${key}`);\n }\n }\n if (!descriptor.get || !descriptor.set) {\n throw new Error(`Unbound property at ${object.$path}: ${key}`);\n }\n } else if (key in data) {\n throw new Error(\n `Key conflict between Firebase and inherited property at ${object.$path}: ${key}`);\n }\n return descriptor;\n }\n\n _setFirebaseProperty(object, key, value, hidden) {\n const data = Object.hasOwn(object, '$data') ? object.$data : object;\n let descriptor = this._getFirebasePropertyDescriptor(object, data, key);\n if (descriptor) {\n if (hidden) {\n // Redefine property as hidden after it's been created, since we usually don't know whether\n // it should be hidden until too late. This is a one-way deal -- you can't unhide a\n // property later, but that's fine for our purposes.\n Object.defineProperty(data, key, {\n get: descriptor.get, set: descriptor.set, configurable: true, enumerable: false\n });\n }\n if (data[key] === value) return;\n this._firebasePropertyEditAllowed = true;\n data[key] = value;\n this._firebasePropertyEditAllowed = false;\n } else {\n Vue.set(data, key, value);\n descriptor = Object.getOwnPropertyDescriptor(data, key);\n Object.defineProperty(data, key, {\n get: descriptor.get, set: this._overwriteFirebaseProperty.bind(this, descriptor, key),\n configurable: true, enumerable: !hidden\n });\n }\n angular.digest();\n }\n\n _overwriteFirebaseProperty(descriptor, key, newValue) {\n if (!this._firebasePropertyEditAllowed) {\n const e = new Error(`Firebase data cannot be mutated directly: ${key}`);\n e.trussCode = 'firebase_overwrite';\n throw e;\n }\n descriptor.set.call(this, newValue);\n }\n\n _deleteFirebaseProperty(object, key) {\n const data = Object.hasOwn(object, '$data') ? object.$data : object;\n // Make sure it's actually a Firebase property.\n this._getFirebasePropertyDescriptor(object, data, key);\n this._destroyObject(data[key]);\n Vue.delete(data, key);\n angular.digest();\n }\n\n checkVueObject(object, path) {\n this._modeler.checkVueObject(object, path);\n }\n}\n\n\nexport function checkUpdateHasOnlyDescendantsWithNoOverlap(rootPath, values) {\n // First, check all paths for correctness and absolutize them, since there could be a mix of\n // absolute paths and relative keys.\n _.forEach(_.keys(values), path => {\n if (path.charAt(0) === '/') {\n if (!(path === rootPath || rootPath === '/' ||\n _.startsWith(path, rootPath + '/') && path.length > rootPath.length + 1)) {\n throw new Error(`Update item is not a descendant of target ref: ${path}`);\n }\n } else {\n if (_.includes(path, '/')) {\n throw new Error(`Update item deep path must be absolute, taken from a reference: ${path}`);\n }\n const absolutePath = joinPath(rootPath, escapeKey(path));\n if (Object.hasOwn(values, absolutePath)) {\n throw new Error(`Update items overlap: ${path} and ${absolutePath}`);\n }\n values[absolutePath] = values[path];\n delete values[path];\n }\n });\n // Then check for overlaps;\n const allPaths = _(values).keys().map(path => joinPath(path, '')).sortBy('length').value();\n _.forEach(values, (value, path) => {\n for (const otherPath of allPaths) {\n if (otherPath.length > path.length) break;\n if (path !== otherPath && _.startsWith(path, otherPath)) {\n throw new Error(`Update items overlap: ${otherPath} and ${path}`);\n }\n }\n });\n}\n\nexport function extractCommonPathPrefix(values) {\n let prefixSegments;\n _.forEach(values, (value, path) => {\n const segments = path === '/' ? [''] : splitPath(path, true);\n if (prefixSegments) {\n let firstMismatchIndex = 0;\n const maxIndex = Math.min(prefixSegments.length, segments.length);\n while (firstMismatchIndex < maxIndex &&\n prefixSegments[firstMismatchIndex] === segments[firstMismatchIndex]) {\n firstMismatchIndex++;\n }\n prefixSegments = prefixSegments.slice(0, firstMismatchIndex);\n if (!prefixSegments.length) return false;\n } else {\n prefixSegments = segments;\n }\n });\n return prefixSegments.length === 1 ? '/' : prefixSegments.join('/');\n}\n\nexport function relativizePaths(rootPath, values) {\n const offset = rootPath === '/' ? 1 : rootPath.length + 1;\n _.forEach(_.keys(values), path => {\n values[path.slice(offset)] = values[path];\n delete values[path];\n });\n}\n\nexport function toFirebaseJson(object) {\n if (!_.isObject(object)) return object;\n const result = {};\n const data = object.$data;\n for (const key in data) {\n if (Object.hasOwn(data, key)) result[escapeKey(key)] = toFirebaseJson(data[key]);\n }\n return result;\n}\n","import _ from 'lodash';\nimport Vue from 'vue';\nimport angular from './angularCompatibility.js';\nimport Bridge from './Bridge.js';\nimport Connector from './Connector.js';\nimport Dispatcher from './Dispatcher.js';\nimport KeyGenerator from './KeyGenerator.js';\nimport MetaTree from './MetaTree.js';\nimport {Handle} from './Reference.js';\nimport {BaseValue} from './Modeler.js';\nimport Tree from './Tree.js';\nimport stats from './utils/stats.js';\nimport {escapeKey, unescapeKey} from './utils/paths.js';\nimport {wrapPromiseCallback, promiseCancel, promiseFinally} from './utils/promises.js';\nimport {SERVER_TIMESTAMP, copyPrototype} from './utils/utils.js';\n\n\nlet bridge, logging;\nconst workerFunctions = {};\n// This version is filled in by the build, don't reformat the line.\nconst VERSION = 'dev';\n\n\nexport default class Truss {\n\n /**\n * Create a new Truss instance, specific to a given datastore. To avoid confusion there should be\n * exactly one Truss per root datastore URL, so in most code this will be a singleton.\n *\n * @param rootUrl {String} The root URL, https://{project}.firebaseio.com.\n */\n constructor(rootUrl) {\n // TODO: allow rootUrl to be a test database object for testing\n if (!bridge) {\n throw new Error('Truss worker not connected, please call Truss.connectWorker first');\n }\n this._rootUrl = rootUrl.replace(/\\/$/, '');\n this._keyGenerator = new KeyGenerator();\n this._dispatcher = new Dispatcher(bridge);\n this._vue = new Vue();\n\n bridge.trackServer(this._rootUrl);\n this._tree = new Tree(this, this._rootUrl, bridge, this._dispatcher);\n this._metaTree = new MetaTree(this._rootUrl, this._tree, bridge, this._dispatcher);\n\n Object.freeze(this);\n }\n\n get info() {return this._metaTree.root;}\n get store() {return this._tree.root;}\n\n /**\n * Mount a set of classes against the datastore structure. Must be called at most once, and\n * cannot be called once any data has been loaded into the tree.\n * @param classes {Array | Object} A list of the classes to map onto the\n * datastore structure. Each class must have a static $trussMount property that is a\n * (wildcarded) unescaped datastore path, or an options object\n * {path: string, placeholder: object}, or an array of either. If the list is an object then\n * the keys serve as default option-less $trussMount paths for classes that don't define an\n * explicit $trussMount.\n */\n mount(classes) {\n this._tree.init(classes);\n }\n\n destroy() {\n this._vue.$destroy();\n this._tree.destroy();\n this._metaTree.destroy();\n }\n\n get now() {return Date.now() + this.info.timeOffset;}\n newKey() {return this._keyGenerator.generateUniqueKey(this.now);}\n\n authenticate(token) {\n return this._metaTree.authenticate(token);\n }\n\n unauthenticate() {\n return this._metaTree.unauthenticate();\n }\n\n intercept(actionType, callbacks) {\n return this._dispatcher.intercept(actionType, callbacks);\n }\n\n // connections are {key: Query | Object | fn() -> (Query | Object)}\n connect(scope, connections) {\n if (!connections) {\n connections = scope;\n scope = undefined;\n }\n if (connections instanceof Handle || _.isFunction(connections)) connections = {_: connections};\n return new Connector(scope, connections, this._tree, 'connect');\n }\n\n // target is Reference, Query, or connection Object like above\n peek(target, callback) {\n callback = wrapPromiseCallback(callback || _.identity);\n let cleanup, cancel;\n const promise = Promise.resolve().then(() => new Promise((resolve, reject) => {\n const scope = {};\n let callbackPromise;\n\n let connector = new Connector(scope, {result: target}, this._tree, 'peek');\n\n let unintercept = this.intercept('peek', {onFailure: op => {\n function match(descriptor) {\n if (!descriptor) return;\n if (descriptor instanceof Handle) return op.target.isEqual(descriptor);\n return _.some(descriptor, value => match(value));\n }\n if (match(connector.at)) {\n reject(op.error);\n cleanup();\n }\n }});\n\n let unobserve = this.observe(() => connector.ready, ready => {\n if (!ready) return;\n unobserve();\n unobserve = null;\n callbackPromise = promiseFinally(\n callback(scope.result), () => {angular.digest(); callbackPromise = null; cleanup();}\n ).then(result => {resolve(result);}, error => {reject(error);});\n });\n\n cleanup = () => {\n if (unobserve) {unobserve(); unobserve = null;}\n if (unintercept) {unintercept(); unintercept = null;}\n if (connector) {connector.destroy(); connector = null;}\n if (callbackPromise && callbackPromise.cancel) callbackPromise.cancel();\n };\n\n cancel = () => {\n reject(new Error('Canceled'));\n cleanup();\n };\n }));\n return promiseCancel(promise, cancel);\n }\n\n observe(subjectFn, callbackFn, options) {\n const usePreciseDefaults = _.isObject(options && options.precise);\n let numCallbacks = 0;\n let oldValueClone;\n if (usePreciseDefaults) {\n oldValueClone = options.deep ? _.cloneDeep(options.precise) : _.clone(options.precise);\n }\n\n // This needs to be a `let` instead of a `const` to avoid a \"Cannot access before\n // initialization\" error.\n let unwatch;\n // eslint-disable-next-line prefer-const\n unwatch = this._vue.$watch(subjectFn, (newValue, oldValue) => {\n if (options && options.precise) {\n const newValueClone = usePreciseDefaults ?\n (options.deep ?\n _.defaultsDeep({}, newValue, options.precise) :\n _.defaults({}, newValue, options.precise)) :\n (options.deep ? _.cloneDeep(newValue) : _.clone(newValue));\n if (_.isEqual(newValueClone, oldValueClone)) return;\n oldValueClone = newValueClone;\n }\n numCallbacks++;\n if (unwatch || options && options.immediate) {\n callbackFn(newValue, oldValue);\n angular.digest();\n } else {\n // Delay the immediate callback until we've had a chance to return the unwatch function.\n Promise.resolve().then(() => {\n const vm = options && options.vm;\n if (numCallbacks > 1 || (vm && vm.$destroyed)) return;\n callbackFn(newValue, oldValue);\n // No need to digest since under Angular we'll be using $q as Promise.\n });\n }\n }, {immediate: true, deep: options && options.deep});\n\n if (options && options.scope) options.scope.$on('$destroy', unwatch);\n return unwatch;\n }\n\n when(expression, options) {\n let cleanup, timeoutHandle;\n let promise = new Promise((resolve, reject) => {\n let unobserve = this.observe(expression, value => {\n if (!value) return;\n // Wait for computed properties to settle and double-check.\n Vue.nextTick(() => {\n value = expression();\n if (!value) return;\n resolve(value);\n cleanup();\n });\n });\n if (_.has(options, 'timeout')) {\n timeoutHandle = setTimeout(() => {\n timeoutHandle = null;\n reject(new Error(options.timeoutMessage || 'Timeout'));\n cleanup();\n }, options.timeout);\n }\n cleanup = () => {\n if (unobserve) {unobserve(); unobserve = null;}\n if (timeoutHandle) {clearTimeout(timeoutHandle); timeoutHandle = null;}\n reject(new Error('Canceled'));\n };\n });\n promise = promiseCancel(promiseFinally(promise, cleanup), cleanup);\n if (options && options.scope) options.scope.$on('$destroy', () => {promise.cancel();});\n return promise;\n }\n\n nextTick() {\n let cleanup;\n let promise = new Promise((resolve, reject) => {\n Vue.nextTick(resolve);\n cleanup = () => {\n reject(new Error('Canceled'));\n };\n });\n promise = promiseCancel(promise, cleanup);\n return promise;\n }\n\n throttleRemoteDataUpdates(delay) {\n this._tree.throttleRemoteDataUpdates(delay);\n }\n\n checkObjectsForRogueProperties() {\n this._tree.checkVueObject(this._tree.root, '/');\n }\n\n static get computedPropertyStats() {\n return stats;\n }\n\n static async connectWorker(webWorker, config) {\n if (bridge) throw new Error('Worker already connected');\n if (_.isString(webWorker)) {\n const Worker = window.SharedWorker || window.Worker;\n if (!Worker) throw new Error('Browser does not implement Web Workers');\n if (!navigator.locks) throw new Error('Browser does not implement locks');\n webWorker = new Worker(webWorker);\n const random = window.crypto.getRandomValues(new Uint32Array(1))[0];\n webWorker.lockName = `truss_worker_lock_${Date.now()}.${random}`;\n await new Promise((resolve, reject) => {\n navigator.locks.request(webWorker.lockName, () => {\n resolve();\n // eslint-disable-next-line lodash/prefer-noop\n return new Promise(() => {/* release lock only on page exit or crash */});\n }).catch(reject);\n });\n }\n bridge = new Bridge(webWorker);\n if (logging) bridge.enableLogging(logging);\n const {exposedFunctionNames, firebaseSdkVersion} =\n await bridge.init(webWorker.lockName, config);\n Object.defineProperty(Truss, 'FIREBASE_SDK_VERSION', {value: firebaseSdkVersion});\n for (const name of exposedFunctionNames) Truss.preExpose(name);\n }\n\n static get worker() {return workerFunctions;}\n\n static preExpose(functionName) {\n const segments = functionName.split('.');\n let obj = Truss.worker;\n for (const segment of segments.slice(0, -1)) {\n if (!Object.hasOwnProperty.call(obj, segment)) obj[segment] = {};\n obj = obj[segment];\n }\n obj[segments[segments.length - 1]] = bridge.bindExposedFunction(functionName);\n }\n\n static bounceConnection() {return bridge.bounceConnection();}\n static suspend() {return bridge.suspend();}\n static debugPermissionDeniedErrors(simulatedTokenGenerator, maxSimulationDuration, callFilter) {\n return bridge.debugPermissionDeniedErrors(\n simulatedTokenGenerator, maxSimulationDuration, callFilter);\n }\n\n static debounceAngularDigest(wait) {\n angular.debounceDigest(wait);\n }\n\n static escapeKey(key) {return escapeKey(key);}\n static unescapeKey(escapedKey) {return unescapeKey(escapedKey);}\n\n static enableLogging(fn) {\n logging = fn;\n if (bridge) bridge.enableLogging(fn);\n }\n\n // Duplicate static constants on instance for convenience.\n get SERVER_TIMESTAMP() {return Truss.SERVER_TIMESTAMP;}\n get VERSION() {return Truss.VERSION;}\n get FIREBASE_SDK_VERSION() {return Truss.FIREBASE_SDK_VERSION;}\n}\n\nObject.defineProperties(Truss, {\n SERVER_TIMESTAMP: {value: SERVER_TIMESTAMP},\n VERSION: {value: VERSION},\n Model: {value: Object},\n\n ComponentPlugin: {value: {\n install(Vue2, pluginOptions) {\n if (Vue !== Vue2) throw new Error('Multiple versions of Vue detected');\n if (!pluginOptions.truss) {\n throw new Error('Need to pass `truss` instance as an option to use the ComponentPlugin');\n }\n const prototypeExtension = {\n $truss: {value: pluginOptions.truss},\n $destroyed: {get() {return this._isBeingDestroyed || this._isDestroyed;}},\n $$touchThis: {value() {if (this.__ob__) this.__ob__.dep.depend();}}\n };\n const conflictingKeys = _(prototypeExtension).keys()\n .union(_.keys(BaseValue.prototype)).intersection(_.keys(Vue.prototype)).value();\n if (conflictingKeys.length) {\n throw new Error(\n 'Truss extension properties conflict with Vue properties: ' + conflictingKeys.join(', '));\n }\n Object.defineProperties(Vue.prototype, prototypeExtension);\n copyPrototype(BaseValue, Vue);\n }\n }}\n});\n\nangular.defineModule(Truss);\n"],"names":["angular"],"mappings":"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"} \ No newline at end of file diff --git a/dist/firetruss.umd.js b/dist/firetruss.umd.js index b834b17..4e99eba 100644 --- a/dist/firetruss.umd.js +++ b/dist/firetruss.umd.js @@ -422,6 +422,7 @@ } _receive(event) { + if (this._dead) return; if (this._suspended) { this._inboundMessages = this._inboundMessages.concat(event.data); } else { @@ -2102,8 +2103,12 @@ _wrapProperties(object) { ___default.default.forEach(object, (value, key) => { const valueKey = '$_' + key; + const descriptor = Object.getOwnPropertyDescriptor(object, key); + const valueDescriptor = descriptor.get && descriptor.set ? { + get: descriptor.get, set: descriptor.set, configurable: true + } : {value, writable: true}; Object.defineProperties(object, { - [valueKey]: {value, writable: true}, + [valueKey]: valueDescriptor, [key]: { get: () => object[valueKey], set: arg => {object[valueKey] = arg; angularProxy.digest();}, @@ -2225,7 +2230,6 @@ } isLocal(path, value) { - // eslint-disable-next-line no-shadow const mount = this._getMount(path, false, mount => mount.local); if (mount && mount.local) return true; if (this._hasLocalProperties(mount, value)) { @@ -3156,10 +3160,25 @@ const object = this._modeler.createObject(path, properties); this._modeler.emitLifecycleHook(object, 'beforeCreate'); - Object.defineProperties(object, properties); + this._defineObjectProperties(object, properties); return object; } + _defineObjectProperties(object, properties) { + const observer = object.__ob__; + Object.defineProperties(object, properties); + if (!observer) return; + + let addedReactiveProperties = false; + for (const name of ___default.default.keys(properties)) { + const descriptor = Object.getOwnPropertyDescriptor(object, name); + if (!descriptor.configurable || !descriptor.enumerable) continue; + Vue__default.default.util.defineReactive(object, name); + addedReactiveProperties = true; + } + if (addedReactiveProperties) observer.dep.notify(); + } + // To be called on the result of _createObject after it's been inserted into the _vue hierarchy // and Vue has had a chance to initialize it. _fixObject(object) { diff --git a/dist/firetruss.umd.js.map b/dist/firetruss.umd.js.map index 6fb7da4..55504be 100644 --- a/dist/firetruss.umd.js.map +++ b/dist/firetruss.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"firetruss.umd.js","sources":["../src/angularCompatibility.js","../src/utils/LruCache.js","../src/utils/paths.js","../src/Bridge.js","../src/Reference.js","../src/utils/utils.js","../src/utils/stats.js","../src/Connector.js","../src/utils/promises.js","../src/Dispatcher.js","../src/KeyGenerator.js","../src/MetaTree.js","../src/Modeler.js","../src/Coupler.js","../src/Tree.js","../src/Truss.js"],"sourcesContent":["import _ from 'lodash';\nimport Vue from 'vue';\n\n\nlet vue;\nlet lastDigestRequest = 0, digestInProgress = false;\nconst bareDigest = function() {\n if (vue.digestRequest > lastDigestRequest) return;\n vue.digestRequest = lastDigestRequest + 1;\n};\n\nconst angularProxy = {\n active: typeof window !== 'undefined' && window.angular\n};\n\nif (angularProxy.active) {\n initAngular();\n} else {\n _.forEach(['digest', 'watch', 'defineModule', 'debounceDigest'], method => {\n angularProxy[method] = _.noop;\n });\n}\n\nfunction initAngular() {\n const module = window.angular.module('firetruss', []);\n angularProxy.digest = bareDigest;\n angularProxy.watch = function() {throw new Error('Angular watch proxy not yet initialized');};\n angularProxy.defineModule = function(Truss) {\n module.constant('Truss', Truss);\n };\n angularProxy.debounceDigest = function(wait) {\n if (wait) {\n const debouncedDigest = _.debounce(bareDigest, wait);\n angularProxy.digest = function() {\n if (vue.digestRequest > lastDigestRequest) return;\n if (digestInProgress) bareDigest(); else debouncedDigest();\n };\n } else {\n angularProxy.digest = bareDigest;\n }\n };\n\n module.config(['$provide', function($provide) {\n $provide.decorator('$rootScope', ['$delegate', '$exceptionHandler',\n function($delegate, $exceptionHandler) {\n const rootScope = $delegate;\n angularProxy.watch = rootScope.$watch.bind(rootScope);\n const proto = Object.getPrototypeOf(rootScope);\n const angularDigest = proto.$digest;\n proto.$digest = bareDigest;\n proto.$digest.original = angularDigest;\n vue = new Vue({data: {digestRequest: 0}});\n vue.$watch(() => vue.digestRequest, () => {\n if (vue.digestRequest > lastDigestRequest) {\n // Make sure we execute the digest outside the Vue task queue, because otherwise if the\n // client replaced Promise with angular.$q all Truss.nextTick().then() functions will be\n // executed inside the Angular digest and hence inside the Vue task queue. But\n // Truss.nextTick() is used precisely to avoid that. Note that it's OK to use\n // Vue.nextTick() here because even though it will schedule a flush via Promise.then()\n // it only uses the native Promise, before it could've been monkey-patched by the app.\n Vue.nextTick(() => {\n if (vue.digestRequest <= lastDigestRequest) return;\n digestInProgress = true;\n rootScope.$digest.original.call(rootScope);\n lastDigestRequest = vue.digestRequest = vue.digestRequest + 1;\n });\n } else {\n digestInProgress = false;\n }\n });\n const watcher = _.last(vue._watchers || vue._scope.effects);\n watcher.id = Infinity; // make sure watcher is scheduled last\n patchRenderWatcherGet(Object.getPrototypeOf(watcher));\n return rootScope;\n }\n ]);\n }]);\n}\n\n// This is a kludge that catches errors that get through render watchers and end up killing the\n// entire Vue event loop (e.g., errors raised in transition callbacks). The state of the DOM may\n// not be consistent after such an error is caught, but the global error handler should stop the\n// world anyway. May be related to https://github.com/vuejs/vue/issues/7653.\nfunction patchRenderWatcherGet(prototype) {\n const originalGet = prototype.get;\n prototype.get = function get() {\n try {\n return originalGet.call(this);\n } catch (e) {\n if (this.vm._watcher === this && Vue.config.errorHandler) {\n Vue.config.errorHandler(e, this.vm, 'uncaught render error');\n } else {\n throw e;\n }\n }\n };\n}\n\nexport default angularProxy;\n","import _ from 'lodash';\n\n\nclass LruCacheItem {\n constructor(key, value) {\n this.key = key;\n this.value = value;\n this.touch();\n }\n\n touch() {\n this.timestamp = Date.now();\n }\n}\n\n\nexport default class LruCache {\n constructor(maxSize, pruningSize) {\n this._items = Object.create(null);\n this._size = 0;\n this._maxSize = maxSize;\n this._pruningSize = pruningSize || Math.ceil(maxSize * 0.10);\n }\n\n has(key) {\n return Boolean(this._items[key]);\n }\n\n get(key) {\n const item = this._items[key];\n if (!item) return;\n item.touch();\n return item.value;\n }\n\n set(key, value) {\n const item = this._items[key];\n if (item) {\n item.value = value;\n } else {\n if (this._size >= this._maxSize) this._prune();\n this._items[key] = new LruCacheItem(key, value);\n this._size += 1;\n }\n }\n\n delete(key) {\n const item = this._items[key];\n if (!item) return;\n delete this._items[key];\n this._size -= 1;\n }\n\n _prune() {\n const itemsToPrune =\n _(this._items).toArray().sortBy('timestamp').take(this._pruningSize).value();\n for (const item of itemsToPrune) this.delete(item.key);\n }\n}\n","import LruCache from './LruCache.js';\nimport _ from 'lodash';\n\n\nconst pathSegments = new LruCache(1000);\nconst pathMatchers = {};\nconst maxNumPathMatchers = 1000;\n\n\nexport function escapeKey(key) {\n if (!key) return key;\n // eslint-disable-next-line no-control-regex\n return key.toString().replace(/[\\x00-\\x1f\\\\.$#[\\]\\x7f/]/g, char =>\n '\\\\' + _.padStart(char.charCodeAt(0).toString(16), 2, '0')\n );\n}\n\nexport function unescapeKey(key) {\n if (!key) return key;\n return key.toString().replace(/\\\\[0-9a-f]{2}/gi, code =>\n String.fromCharCode(parseInt(code.slice(1), 16))\n );\n}\n\nexport function escapeKeys(object) {\n // isExtensible check avoids trying to escape references to Firetruss internals.\n if (!(_.isObject(object) && Object.isExtensible(object))) return object;\n let result = object;\n for (const key in object) {\n if (!Object.hasOwn(object, key)) continue;\n const value = object[key];\n const escapedKey = escapeKey(key);\n const escapedValue = escapeKeys(value);\n if (escapedKey !== key || escapedValue !== value) {\n if (result === object) result = _.clone(object);\n result[escapedKey] = escapedValue;\n if (result[key] === value) delete result[key];\n }\n }\n return result;\n}\n\nexport function joinPath() {\n const segments = [];\n for (let segment of arguments) {\n if (!_.isString(segment)) segment = '' + segment;\n if (segment.charAt(0) === '/') segments.splice(0, segments.length);\n segments.push(segment);\n }\n if (segments[0] === '/') segments[0] = '';\n return segments.join('/');\n}\n\nexport function splitPath(path, leaveSegmentsEscaped) {\n const key = (leaveSegmentsEscaped ? 'esc:' : '') + path;\n let segments = pathSegments.get(key);\n if (!segments) {\n segments = path.split('/');\n if (!leaveSegmentsEscaped) segments = _.map(segments, unescapeKey);\n pathSegments.set(key, segments);\n }\n return segments;\n}\n\n\nclass PathMatcher {\n constructor(pattern) {\n this.variables = [];\n const prefixMatch = _.endsWith(pattern, '/$*');\n if (prefixMatch) pattern = pattern.slice(0, -3);\n const pathTemplate = pattern.replace(/\\/\\$[^/]*/g, match => {\n if (match.length > 1) this.variables.push(match.slice(1));\n return '\\u0001';\n });\n Object.freeze(this.variables);\n if (/[.$#[\\]]|\\\\(?![0-9a-f][0-9a-f])/i.test(pathTemplate)) {\n throw new Error('Path pattern has unescaped keys: ' + pattern);\n }\n this._regex = new RegExp(\n // eslint-disable-next-line no-control-regex\n '^' + pathTemplate.replace(/\\u0001/g, '/([^/]+)') + (prefixMatch ? '($|/)' : '$'));\n }\n\n match(path) {\n this._regex.lastIndex = 0;\n const match = this._regex.exec(path);\n if (!match) return;\n const bindings = {};\n for (let i = 0; i < this.variables.length; i++) {\n bindings[this.variables[i]] = unescapeKey(match[i + 1]);\n }\n return bindings;\n }\n\n test(path) {\n return this._regex.test(path);\n }\n\n toString() {\n return this._regex.toString();\n }\n}\n\nexport function makePathMatcher(pattern) {\n let matcher = pathMatchers[pattern];\n if (!matcher) {\n matcher = new PathMatcher(pattern);\n // Minimal pseudo-LRU behavior, since we don't expect to actually fill up the cache.\n if (_.size(pathMatchers) === maxNumPathMatchers) delete pathMatchers[_.keys(pathMatchers)[0]];\n pathMatchers[pattern] = matcher;\n }\n return matcher;\n}\n","import {unescapeKey} from './utils/paths.js';\nimport _ from 'lodash';\n\nconst MIN_WORKER_VERSION = '4.0.0';\n\n\nclass Snapshot {\n constructor({path, value, exists, writeSerial}) {\n this._path = path;\n this._value = value;\n this._exists = value === undefined ? exists || false : value !== null;\n this._writeSerial = writeSerial;\n }\n\n get path() {\n return this._path;\n }\n\n get exists() {\n return this._exists;\n }\n\n get value() {\n if (this._value === undefined) throw new Error('Value omitted from snapshot');\n return this._value;\n }\n\n get key() {\n if (this._key === undefined) this._key = unescapeKey(this._path.replace(/.*\\//, ''));\n return this._key;\n }\n\n get writeSerial() {\n return this._writeSerial;\n }\n}\n\n\nexport default class Bridge {\n constructor(webWorker) {\n this._idCounter = 0;\n this._deferreds = {};\n this._suspended = false;\n this._servers = {};\n this._callbacks = {};\n this._log = _.noop;\n this._inboundMessages = [];\n this._outboundMessages = [];\n this._flushMessageQueue = this._flushMessageQueue.bind(this);\n this._port = webWorker.port || webWorker;\n this._shared = !!webWorker.port;\n this._dead = undefined;\n Object.seal(this);\n this._port.onmessage = this._receive.bind(this);\n }\n\n init(lockName, config) {\n const items = [];\n try {\n const storage = window.localStorage || window.sessionStorage;\n if (!storage) throw new Error('localStorage and sessionStorage not available');\n for (let i = 0; i < storage.length; i++) {\n const key = storage.key(i);\n items.push({key, value: storage.getItem(key)});\n }\n } catch {\n // Some browsers don't like us accessing local storage -- nothing we can do.\n }\n return this._send({msg: 'init', storage: items, config, lockName}).then(response => {\n const workerVersion = response.version.match(/^(\\d+)\\.(\\d+)\\.(\\d+)(-.*)?$/);\n if (workerVersion) {\n const minVersion = MIN_WORKER_VERSION.match(/^(\\d+)\\.(\\d+)\\.(\\d+)(-.*)?$/);\n // Major version must match precisely, minor and patch must be greater than or equal.\n const sufficient = workerVersion[1] === minVersion[1] && (\n workerVersion[2] > minVersion[2] ||\n workerVersion[2] === minVersion[2] && workerVersion[3] >= minVersion[3]\n );\n if (!sufficient) {\n return Promise.reject(new Error(\n `Incompatible Firetruss worker version: ${response.version} ` +\n `(${MIN_WORKER_VERSION} or better required)`\n ));\n }\n }\n if (response.livenessLockName) {\n navigator.locks.request(response.livenessLockName, () => {\n this.crash({error: {\n name: 'Error', message: 'worker terminated', extra: {shared: this._shared}\n }});\n });\n }\n return response;\n });\n }\n\n suspend(suspended) {\n if (suspended === undefined) suspended = true;\n if (this._suspended === suspended) return;\n this._suspended = suspended;\n if (!suspended) {\n this._receiveMessages(this._inboundMessages);\n this._inboundMessages = [];\n if (this._outboundMessages.length) Promise.resolve().then(this._flushMessageQueue);\n }\n }\n\n enableLogging(fn) {\n if (fn) {\n if (fn === true) {\n fn = console.log.bind(console);\n this._send({msg: 'enableFirebaseLogging', value: true});\n }\n this._log = fn;\n } else {\n this._send({msg: 'enableFirebaseLogging', value: false});\n this._log = _.noop;\n }\n }\n\n _send(message) {\n message.id = ++this._idCounter;\n let promise;\n if (this._dead) {\n return Promise.reject(this._dead);\n } else if (message.oneWay) {\n promise = Promise.resolve();\n } else {\n promise = new Promise((resolve, reject) => {\n this._deferreds[message.id] = {resolve, reject};\n });\n const deferred = this._deferreds[message.id];\n deferred.promise = promise;\n deferred.params = message;\n }\n if (!this._outboundMessages.length && !this._suspended) {\n Promise.resolve().then(this._flushMessageQueue);\n }\n this._log('send:', message);\n this._outboundMessages.push(message);\n return promise;\n }\n\n _flushMessageQueue() {\n this._log('flush:', this._outboundMessages.length, 'messages');\n try {\n this._port.postMessage(this._outboundMessages);\n this._outboundMessages = [];\n } catch (e) {\n this._log('flush failed:', e);\n e.extra = {messages: this._outboundMessages};\n throw e;\n }\n }\n\n _receive(event) {\n if (this._suspended) {\n this._inboundMessages = this._inboundMessages.concat(event.data);\n } else {\n this._receiveMessages(event.data);\n }\n }\n\n _receiveMessages(messages) {\n for (const message of messages) {\n this._log('recv:', message);\n const fn = this[message.msg];\n if (!_.isFunction(fn)) throw new Error('Unknown message: ' + message.msg);\n fn.call(this, message);\n }\n }\n\n bindExposedFunction(name) {\n return (function() {\n return this._send({msg: 'call', name, args: Array.prototype.slice.call(arguments)});\n }).bind(this);\n }\n\n resolve(message) {\n const deferred = this._deferreds[message.id];\n if (!deferred) throw new Error('Received resolution to inexistent Firebase call');\n delete this._deferreds[message.id];\n deferred.resolve(message.result);\n }\n\n reject(message) {\n const deferred = this._deferreds[message.id];\n if (!deferred) throw new Error('Received rejection of inexistent Firebase call');\n delete this._deferreds[message.id];\n deferred.reject(errorFromJson(message.error, deferred.params));\n }\n\n crash(message) {\n let details = `Internal worker error: ${message.error.name}: ${message.error.message}`;\n if (message.error.cause) details += ` (caused by ${message.error.cause})`;\n this._dead = new Error(details);\n if (message.error.extra) this._dead.extra = message.error.extra;\n _.forEach(this._deferreds, ({reject}) => {reject(this._dead);});\n this._deferreds = {};\n throw this._dead;\n }\n\n updateLocalStorage({items}) {\n try {\n const storage = window.localStorage || window.sessionStorage;\n for (const item of items) {\n if (item.value === null) {\n storage.removeItem(item.key);\n } else {\n storage.setItem(item.key, item.value);\n }\n }\n } catch {\n // If we're denied access, there's nothing we can do.\n }\n }\n\n trackServer(rootUrl) {\n if (Object.hasOwn(this._servers, rootUrl)) return Promise.resolve();\n const server = this._servers[rootUrl] = {authListeners: []};\n const authCallbackId = this._registerCallback(this._authCallback.bind(this, server));\n this._send({msg: 'onAuth', url: rootUrl, callbackId: authCallbackId});\n }\n\n _authCallback(server, auth) {\n server.auth = auth;\n for (const listener of server.authListeners) listener(auth);\n }\n\n onAuth(rootUrl, callback, context) {\n const listener = callback.bind(context);\n listener.callback = callback;\n listener.context = context;\n this._servers[rootUrl].authListeners.push(listener);\n listener(this.getAuth(rootUrl));\n }\n\n offAuth(rootUrl, callback, context) {\n const authListeners = this._servers[rootUrl].authListeners;\n for (let i = 0; i < authListeners.length; i++) {\n const listener = authListeners[i];\n if (listener.callback === callback && listener.context === context) {\n authListeners.splice(i, 1);\n break;\n }\n }\n }\n\n getAuth(rootUrl) {\n return this._servers[rootUrl].auth;\n }\n\n authWithCustomToken(url, authToken) {\n return this._send({msg: 'authWithCustomToken', url, authToken});\n }\n\n authAnonymously(url) {\n return this._send({msg: 'authAnonymously', url});\n }\n\n unauth(url) {\n return this._send({msg: 'unauth', url});\n }\n\n set(url, value, writeSerial) {return this._send({msg: 'set', url, value, writeSerial});}\n update(url, value, writeSerial) {return this._send({msg: 'update', url, value, writeSerial});}\n\n once(url, writeSerial) {\n return this._send({msg: 'once', url, writeSerial}).then(snapshot => new Snapshot(snapshot));\n }\n\n on(listenerKey, url, spec, eventType, snapshotCallback, cancelCallback, context, options) {\n const handle = {\n listenerKey, eventType, snapshotCallback, cancelCallback, context,\n params: {msg: 'on', listenerKey, url, spec, eventType, options}\n };\n const callback = this._onCallback.bind(this, handle);\n this._registerCallback(callback, handle);\n // Keep multiple IDs to allow the same snapshotCallback to be reused.\n snapshotCallback.__callbackIds = snapshotCallback.__callbackIds || [];\n snapshotCallback.__callbackIds.push(handle.id);\n this._send({\n msg: 'on', listenerKey, url, spec, eventType, callbackId: handle.id, options\n }).catch(error => {\n callback(error);\n });\n }\n\n off(listenerKey, url, spec, eventType, snapshotCallback, context) {\n const idsToDeregister = [];\n let callbackId;\n if (snapshotCallback) {\n callbackId = this._findAndRemoveCallbackId(\n snapshotCallback, handle => _.isMatch(handle, {listenerKey, eventType, context})\n );\n if (!callbackId) return Promise.resolve(); // no-op, never registered or already deregistered\n idsToDeregister.push(callbackId);\n } else {\n for (const id of _.keys(this._callbacks)) {\n const handle = this._callbacks[id];\n if (handle.listenerKey === listenerKey && (!eventType || handle.eventType === eventType)) {\n idsToDeregister.push(id);\n }\n }\n }\n // Nullify callbacks first, then deregister after off() is complete. We don't want any\n // callbacks in flight from the worker to be invoked while the off() is processing, but we don't\n // want them to throw an exception either.\n for (const id of idsToDeregister) this._nullifyCallback(id);\n return this._send({msg: 'off', listenerKey, url, spec, eventType, callbackId}).then(() => {\n for (const id of idsToDeregister) this._deregisterCallback(id);\n });\n }\n\n _onCallback(handle, error, snapshotJson) {\n if (error) {\n this._deregisterCallback(handle.id);\n const e = errorFromJson(error, handle.params);\n if (handle.cancelCallback) {\n handle.cancelCallback.call(handle.context, e);\n } else {\n console.error(e);\n }\n } else {\n handle.snapshotCallback.call(handle.context, new Snapshot(snapshotJson));\n }\n }\n\n transaction(url, oldValue, relativeUpdates, writeSerial) {\n return this._send(\n {msg: 'transaction', url, oldValue, relativeUpdates, writeSerial}\n ).then(result => {\n if (result.snapshots) {\n result.snapshots = _.map(result.snapshots, jsonSnapshot => new Snapshot(jsonSnapshot));\n }\n return result;\n });\n }\n\n onDisconnect(url, method, value) {\n return this._send({msg: 'onDisconnect', url, method, value});\n }\n\n bounceConnection() {\n return this._send({msg: 'bounceConnection'});\n }\n\n callback({id, args}) {\n const handle = this._callbacks[id];\n if (!handle) throw new Error('Unregistered callback: ' + id);\n handle.callback.apply(null, args);\n }\n\n _registerCallback(callback, handle) {\n handle = handle || {};\n handle.callback = callback;\n handle.id = `cb${++this._idCounter}`;\n this._callbacks[handle.id] = handle;\n return handle.id;\n }\n\n _nullifyCallback(id) {\n this._callbacks[id].callback = _.noop;\n }\n\n _deregisterCallback(id) {\n delete this._callbacks[id];\n }\n\n _findAndRemoveCallbackId(callback, predicate) {\n if (!callback.__callbackIds) return;\n let i = 0;\n while (i < callback.__callbackIds.length) {\n const id = callback.__callbackIds[i];\n const handle = this._callbacks[id];\n if (!handle) {\n callback.__callbackIds.splice(i, 1);\n continue;\n }\n if (predicate(handle)) {\n callback.__callbackIds.splice(i, 1);\n return id;\n }\n i += 1;\n }\n }\n}\n\n\nfunction errorFromJson(json, params) {\n if (!json || _.isError(json)) return json;\n const error = new Error(json.message);\n try {\n error.params = params;\n for (const propertyName in json) {\n if (propertyName === 'message' || !Object.hasOwn(json, propertyName)) continue;\n try {\n error[propertyName] = json[propertyName];\n } catch {\n error.extra = error.extra || {};\n error.extra[propertyName] = json[propertyName];\n }\n }\n } catch (e) {\n if (!/object is not extensible/.test(e.message)) throw e;\n }\n return error;\n}\n","import {escapeKey, unescapeKey, makePathMatcher} from './utils/paths.js';\n\nimport _ from 'lodash';\n\n/* eslint-disable no-use-before-define */\n\nconst EMPTY_ANNOTATIONS = {};\nObject.freeze(EMPTY_ANNOTATIONS);\n\n\nexport class Handle {\n constructor(tree, path, annotations) {\n this._tree = tree;\n this._path = path.replace(/^\\/*/, '/').replace(/\\/$/, '') || '/';\n if (annotations) {\n this._annotations = annotations;\n Object.freeze(annotations);\n }\n }\n\n get $ref() {return this;}\n get key() {\n if (!this._key) this._key = unescapeKey(this._path.replace(/.*\\//, ''));\n return this._key;\n }\n\n get path() {return this._path;}\n get _pathPrefix() {return this._path === '/' ? '' : this._path;}\n get parent() {\n return new Reference(this._tree, this._path.replace(/\\/[^/]*$/, ''), this._annotations);\n }\n\n get annotations() {\n return this._annotations || EMPTY_ANNOTATIONS;\n }\n\n child() {\n if (!arguments.length) return this;\n const segments = [];\n for (const key of arguments) {\n if (_.isNil(key)) return;\n segments.push(escapeKey(key));\n }\n return new Reference(\n this._tree, `${this._pathPrefix}/${segments.join('/')}`,\n this._annotations\n );\n }\n\n children() {\n if (!arguments.length) return this;\n const escapedKeys = [];\n for (let i = 0; i < arguments.length; i++) {\n const arg = arguments[i];\n if (_.isArray(arg)) {\n const mapping = {};\n const subPath = this._pathPrefix + (escapedKeys.length ? `/${escapedKeys.join('/')}` : '');\n const rest = _.slice(arguments, i + 1);\n for (const key of arg) {\n const subRef =\n new Reference(this._tree, `${subPath}/${escapeKey(key)}`, this._annotations);\n const subMapping = subRef.children.apply(subRef, rest);\n if (subMapping) mapping[key] = subMapping;\n }\n return mapping;\n }\n if (_.isNil(arg)) return;\n escapedKeys.push(escapeKey(arg));\n }\n return new Reference(\n this._tree, `${this._pathPrefix}/${escapedKeys.join('/')}`, this._annotations);\n }\n\n peek(callback) {\n return this._tree.truss.peek(this, callback);\n }\n\n match(pattern) {\n return makePathMatcher(pattern).match(this.path);\n }\n\n test(pattern) {\n return makePathMatcher(pattern).test(this.path);\n }\n\n isEqual(that) {\n if (!(that instanceof Handle)) return false;\n return this._tree === that._tree && this.toString() === that.toString() &&\n _.isEqual(this._annotations, that._annotations);\n }\n\n belongsTo(truss) {\n return this._tree.truss === truss;\n }\n}\n\n\nexport class Query extends Handle {\n constructor(tree, path, spec, annotations) {\n super(tree, path, annotations);\n this._spec = this._copyAndValidateSpec(spec);\n const queryTerms = _(this._spec)\n .map((value, key) => `${key}=${encodeURIComponent(JSON.stringify(value))}`)\n .sortBy()\n .join('&');\n this._string = `${this._path}?${queryTerms}`;\n Object.freeze(this);\n }\n\n // Vue-bound\n get ready() {\n return this._tree.isQueryReady(this);\n }\n\n get constraints() {\n return this._spec;\n }\n\n annotate(annotations) {\n return new Query(\n this._tree, this._path, this._spec, _.assign({}, this._annotations, annotations));\n }\n\n _copyAndValidateSpec(spec) {\n if (!spec.by) throw new Error('Query needs \"by\" clause: ' + JSON.stringify(spec));\n if (('at' in spec) + ('from' in spec) + ('to' in spec) > 1) {\n throw new Error(\n 'Query must contain at most one of \"at\", \"from\", or \"to\" clauses: ' + JSON.stringify(spec));\n }\n if (('first' in spec) + ('last' in spec) > 1) {\n throw new Error(\n 'Query must contain at most one of \"first\" or \"last\" clauses: ' + JSON.stringify(spec));\n }\n if (!_.some(['at', 'from', 'to', 'first', 'last'], clause => clause in spec)) {\n throw new Error(\n 'Query must contain at least one of \"at\", \"from\", \"to\", \"first\", or \"last\" clauses: ' +\n JSON.stringify(spec));\n }\n spec = _.clone(spec);\n if (spec.by !== '$key' && spec.by !== '$value') {\n if (!(spec.by instanceof Reference)) {\n throw new Error('Query \"by\" value must be a reference: ' + spec.by);\n }\n let childPath = spec.by.toString();\n if (!_.startsWith(childPath, this._path)) {\n throw new Error(\n 'Query \"by\" value must be a descendant of target reference: ' + spec.by);\n }\n childPath = childPath.slice(this._path.length).replace(/^\\/?/, '');\n if (!_.includes(childPath, '/')) {\n throw new Error(\n 'Query \"by\" value must not be a direct child of target reference: ' + spec.by);\n }\n spec.by = childPath.replace(/.*?\\//, '');\n }\n Object.freeze(spec);\n return spec;\n }\n\n\n toString() {return this._string;}\n toJSON() {return `query → ${this.toString()}`;}\n}\n\n\nexport class Reference extends Handle {\n\n constructor(tree, path, annotations) {\n super(tree, path, annotations);\n Object.freeze(this);\n }\n\n get ready() {return this._tree.isReferenceReady(this);} // Vue-bound\n get value() {return this._tree.getObject(this.path);} // Vue-bound\n toString() {return this._path;}\n toJSON() {return `reference → ${this.toString()}`;}\n\n annotate(annotations) {\n return new Reference(this._tree, this._path, _.assign({}, this._annotations, annotations));\n }\n\n query(spec) {\n return new Query(this._tree, this._path, spec, this._annotations);\n }\n\n set(value) {\n this._checkForUndefinedPath();\n return this._tree.update(this, 'set', {[this.path]: value});\n }\n\n update(values) {\n this._checkForUndefinedPath();\n return this._tree.update(this, 'update', values);\n }\n\n override(value) {\n this._checkForUndefinedPath();\n return this._tree.update(this, 'override', {[this.path]: value});\n }\n\n commit(updateFunction) {\n this._checkForUndefinedPath();\n return this._tree.commit(this, updateFunction);\n }\n\n _checkForUndefinedPath() {\n if (this.path === '/undefined') throw new Error('Invalid path for operation: ' + this.path);\n }\n}\n\nexport default Reference;\n","import _ from 'lodash';\n\n\nexport const SERVER_TIMESTAMP = Object.freeze({'.sv': 'timestamp'});\n\nexport function isTrussEqual(a, b) {\n return _.isEqualWith(a, b, isTrussValueEqual);\n}\n\nfunction isTrussValueEqual(a, b) {\n if (a === b || a === undefined || a === null || b === undefined || b === null ||\n a.$truss || b.$truss) return a === b;\n if (a.isEqual) return a.isEqual(b);\n}\n\nexport function copyPrototype(a, b) {\n for (const prop of Object.getOwnPropertyNames(a.prototype)) {\n if (prop === 'constructor') continue;\n Object.defineProperty(b.prototype, prop, Object.getOwnPropertyDescriptor(a.prototype, prop));\n }\n}\n","import {isTrussEqual} from './utils.js';\n\nimport _ from 'lodash';\n\n\nclass StatItem {\n constructor(name) {\n _.assign(this, {name, numRecomputes: 0, numUpdates: 0, computeTime: 0, updateTime: 0});\n }\n\n add(item) {\n this.computeTime += item.computeTime;\n this.updateTime += item.updateTime;\n this.numUpdates += item.numUpdates;\n this.numRecomputes += item.numRecomputes;\n }\n\n get runtime() {\n return this.computeTime + this.updateTime;\n }\n\n get runtimePerRecompute() {\n return this.numRecomputes ? this.computeTime / this.numRecomputes : 0;\n }\n\n get runtimePerUpdate() {\n return this.numUpdates ? this.updateTime / this.numUpdates : 0;\n }\n\n toLogParts(totals) {\n return [\n `${this.name}:`, ` ${(this.runtime / 1000).toFixed(2)}s`,\n `(${(this.runtime / totals.runtime * 100).toFixed(1)}%)`,\n ` ${this.numUpdates} upd /`, `${this.numRecomputes} runs`,\n `(${(this.numUpdates / this.numRecomputes * 100).toFixed(1)}%)`,\n ` ${this.runtimePerRecompute.toFixed(2)}ms / run`,\n ` ${this.runtimePerUpdate.toFixed(2)}ms / upd`\n ];\n }\n}\n\nclass Stats {\n constructor() {\n this._items = {};\n }\n\n for(name) {\n if (!this._items[name]) this._items[name] = new StatItem(name);\n return this._items[name];\n }\n\n get list() {\n return _(this._items).values().sortBy(item => -item.runtime).value();\n }\n\n log(n = 10) {\n let stats = this.list;\n if (!stats.length) return;\n const totals = new StatItem('=== Total');\n _.forEach(stats, stat => {totals.add(stat);});\n stats = _.take(stats, n);\n const above = new StatItem('--- Above');\n _.forEach(stats, stat => {above.add(stat);});\n const lines = _.map(stats, item => item.toLogParts(totals));\n lines.push(above.toLogParts(totals));\n lines.push(totals.toLogParts(totals));\n const widths = _.map(_.range(lines[0].length), i => _(lines).map(line => line[i].length).max());\n _.forEach(lines, line => {\n console.log(_.map(line, (column, i) => _.padStart(column, widths[i])).join(' '));\n });\n }\n\n wrap(getter, className, propName) {\n const item = this.for(`${className}.${propName}`);\n return function() {\n /* eslint-disable no-invalid-this */\n const startTime = performance.now();\n const oldValue = this._computedWatchers && this._computedWatchers[propName].value;\n try {\n const newValue = getter.call(this);\n if (!isTrussEqual(oldValue, newValue)) item.numUpdates += 1;\n return newValue;\n } finally {\n item.computeTime += performance.now() - startTime;\n item.numRecomputes += 1;\n }\n };\n }\n}\n\nexport default new Stats();\n","import {Handle, Query, Reference} from './Reference.js';\nimport angular from './angularCompatibility.js';\nimport stats from './utils/stats.js';\nimport {isTrussEqual} from './utils/utils.js';\n\nimport _ from 'lodash';\nimport Vue from 'vue';\n\n\nexport default class Connector {\n constructor(scope, connections, tree, method, refs) {\n Object.freeze(connections);\n this._scope = scope;\n this._connections = connections;\n this._tree = tree;\n this._method = method;\n\n this._subConnectors = {};\n this._disconnects = {};\n this._angularUnwatches = undefined;\n this._data = {};\n this._vue = new Vue({data: {\n descriptors: {},\n refs: refs || {},\n values: _.mapValues(connections, _.constant(undefined))\n }});\n // allow instance-level overrides of destroy() method\n this.destroy = this.destroy; // eslint-disable-line no-self-assign\n Object.seal(this);\n\n this._linkScopeProperties();\n\n _.forEach(connections, (descriptor, key) => {\n if (_.isFunction(descriptor)) {\n this._bindComputedConnection(key, descriptor);\n } else {\n this._connect(key, descriptor);\n }\n });\n\n if (angular.active && scope && scope.$on && scope.$id) {\n scope.$on('$destroy', () => {this.destroy();});\n }\n }\n\n get ready() {\n return _.every(this._connections, (ignored, key) => {\n const descriptor = this._vue.descriptors[key];\n if (!descriptor) return false;\n if (descriptor instanceof Handle) return descriptor.ready;\n return this._subConnectors[key].ready;\n });\n }\n\n get at() {\n return this._vue.refs;\n }\n\n get data() {\n return this._data;\n }\n\n destroy() {\n this._unlinkScopeProperties();\n _.forEach(this._angularUnwatches, unwatch => {unwatch();});\n _.forEach(this._connections, (descriptor, key) => {this._disconnect(key);});\n this._vue.$destroy();\n }\n\n _linkScopeProperties() {\n const dataProperties = _.mapValues(this._connections, (unused, key) => ({\n configurable: true, enumerable: false, get: () => {\n const descriptor = this._vue.descriptors[key];\n if (descriptor instanceof Reference) return descriptor.value;\n return this._vue.values[key];\n }\n }));\n Object.defineProperties(this._data, dataProperties);\n if (this._scope) {\n for (const key in this._connections) {\n if (key in this._scope) {\n throw new Error(`Property already defined on connection target: ${key}`);\n }\n }\n Object.defineProperties(this._scope, dataProperties);\n if (this._scope.__ob__) this._scope.__ob__.dep.notify();\n }\n }\n\n _unlinkScopeProperties() {\n if (!this._scope) return;\n _.forEach(this._connections, (descriptor, key) => {\n delete this._scope[key];\n });\n }\n\n _bindComputedConnection(key, fn) {\n const connectionStats = stats.for(`connection.at.${key}`);\n const getter = this._computeConnection.bind(this, fn, connectionStats);\n const update = this._updateComputedConnection.bind(this, key, fn, connectionStats);\n const angularWatch = angular.active && !fn.angularWatchSuppressed;\n // Use this._vue.$watch instead of truss.observe here so that we can disable the immediate\n // callback if we'll get one from Angular anyway.\n this._vue.$watch(getter, update, {immediate: !angularWatch});\n if (angularWatch) {\n if (!this._angularUnwatches) this._angularUnwatches = [];\n this._angularUnwatches.push(angular.watch(getter, update, true));\n }\n }\n\n _computeConnection(fn, connectionStats) {\n const startTime = performance.now();\n try {\n return flattenRefs(fn.call(this._scope));\n } finally {\n connectionStats.computeTime += performance.now() - startTime;\n connectionStats.numRecomputes += 1;\n }\n }\n\n _updateComputedConnection(key, value, connectionStats) {\n const newDescriptor = _.isFunction(value) ? value(this._scope) : value;\n const oldDescriptor = this._vue.descriptors[key];\n const descriptorChanged = !isTrussEqual(oldDescriptor, newDescriptor);\n if (!descriptorChanged) return;\n if (connectionStats && descriptorChanged) connectionStats.numUpdates += 1;\n if (!newDescriptor) {\n this._disconnect(key);\n return;\n }\n if (newDescriptor instanceof Handle || !_.has(this._subConnectors, key)) {\n this._disconnect(key);\n this._connect(key, newDescriptor);\n } else {\n this._subConnectors[key]._updateConnections(newDescriptor);\n }\n Vue.set(this._vue.descriptors, key, newDescriptor);\n angular.digest();\n }\n\n _updateConnections(connections) {\n _.forEach(connections, (descriptor, key) => {\n this._updateComputedConnection(key, descriptor);\n });\n _.forEach(this._connections, (descriptor, key) => {\n if (!_.has(connections, key)) this._updateComputedConnection(key);\n });\n this._connections = connections;\n }\n\n _connect(key, descriptor) {\n Vue.set(this._vue.descriptors, key, descriptor);\n angular.digest();\n if (!descriptor) return;\n Vue.set(this._vue.values, key, undefined);\n if (descriptor instanceof Reference) {\n Vue.set(this._vue.refs, key, descriptor);\n this._disconnects[key] = this._tree.connectReference(descriptor, this._method);\n } else if (descriptor instanceof Query) {\n Vue.set(this._vue.refs, key, descriptor);\n const updateFn = this._updateQueryValue.bind(this, key);\n this._disconnects[key] = this._tree.connectQuery(descriptor, updateFn, this._method);\n } else {\n const subScope = {}, subRefs = {};\n Vue.set(this._vue.refs, key, subRefs);\n const subConnector = this._subConnectors[key] =\n new Connector(subScope, descriptor, this._tree, this._method, subRefs);\n // Use a truss.observe here instead of this._vue.$watch so that the \"immediate\" execution\n // actually takes place after we've captured the unwatch function, in case the subConnector\n // is ready immediately.\n const unobserve = this._disconnects[key] = this._tree.truss.observe(\n () => subConnector.ready,\n subReady => {\n if (!subReady) return;\n unobserve();\n delete this._disconnects[key];\n Vue.set(this._vue.values, key, subScope);\n angular.digest();\n }\n );\n }\n }\n\n _disconnect(key) {\n Vue.delete(this._vue.refs, key);\n this._updateRefValue(key, undefined);\n if (_.has(this._subConnectors, key)) {\n this._subConnectors[key].destroy();\n delete this._subConnectors[key];\n }\n if (this._disconnects[key]) this._disconnects[key]();\n delete this._disconnects[key];\n Vue.delete(this._vue.descriptors, key);\n angular.digest();\n }\n\n _updateRefValue(key, value) {\n if (this._vue.values[key] !== value) {\n Vue.set(this._vue.values, key, value);\n angular.digest();\n }\n }\n\n _updateQueryValue(key, childKeys) {\n if (!this._vue.values[key]) {\n Vue.set(this._vue.values, key, {});\n angular.digest();\n }\n const subScope = this._vue.values[key];\n for (const childKey in subScope) {\n if (!Object.hasOwn(subScope, childKey)) continue;\n if (!_.includes(childKeys, childKey)) {\n Vue.delete(subScope, childKey);\n angular.digest();\n }\n }\n const object = this._tree.getObject(this._vue.descriptors[key].path);\n for (const childKey of childKeys) {\n if (Object.hasOwn(subScope, childKey)) continue;\n Vue.set(subScope, childKey, object[childKey]);\n angular.digest();\n }\n }\n\n}\n\nfunction flattenRefs(refs) {\n if (!refs) return;\n if (refs instanceof Handle) return refs.toString();\n return _.mapValues(refs, flattenRefs);\n}\n\n","export function wrapPromiseCallback(callback) {\n return function() {\n try {\n // eslint-disable-next-line no-invalid-this\n return Promise.resolve(callback.apply(this, arguments));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\n\nexport function promiseCancel(promise, cancel) {\n promise = promiseFinally(promise, () => {cancel = null;});\n promise.cancel = () => {\n if (!cancel) return;\n cancel();\n cancel = null;\n };\n propagatePromiseProperty(promise, 'cancel');\n return promise;\n}\n\nfunction propagatePromiseProperty(promise, propertyName) {\n const originalThen = promise.then, originalCatch = promise.catch;\n promise.then = (onResolved, onRejected) => {\n const derivedPromise = originalThen.call(promise, onResolved, onRejected);\n derivedPromise[propertyName] = promise[propertyName];\n propagatePromiseProperty(derivedPromise, propertyName);\n return derivedPromise;\n };\n promise.catch = onRejected => {\n const derivedPromise = originalCatch.call(promise, onRejected);\n derivedPromise[propertyName] = promise[propertyName];\n propagatePromiseProperty(derivedPromise, propertyName);\n return derivedPromise;\n };\n return promise;\n}\n\nexport function promiseFinally(promise, onFinally) {\n if (!onFinally) return promise;\n onFinally = wrapPromiseCallback(onFinally);\n return promise.then(result => {\n return onFinally().then(() => result);\n }, error => {\n return onFinally().then(() => Promise.reject(error));\n });\n}\n","import _ from 'lodash';\nimport Reference from './Reference.js';\nimport {wrapPromiseCallback} from './utils/promises.js';\nimport {joinPath} from './utils/paths.js';\n\n\nconst INTERCEPT_KEYS = [\n 'read', 'write', 'auth', 'set', 'update', 'commit', 'connect', 'peek', 'authenticate',\n 'unathenticate', 'certify', 'all'\n];\n\nconst EMPTY_ARRAY = [];\n\n\nclass SlowHandle {\n constructor(operation, delay, callback) {\n this._operation = operation;\n this._delay = delay;\n this._callback = callback;\n this._fired = false;\n }\n\n initiate() {\n this.cancel();\n this._fired = false;\n const elapsed = Date.now() - this._operation._startTimestamp;\n this._timeoutId = setTimeout(() => {\n this._fired = true;\n this._callback(this._operation);\n }, this._delay - elapsed);\n }\n\n cancel() {\n if (this._fired) this._callback(this._operation);\n if (this._timeoutId) clearTimeout(this._timeoutId);\n }\n}\n\n\nclass Operation {\n constructor(type, method, target, operand) {\n this._type = type;\n this._method = method;\n this._target = target;\n this._operand = operand;\n this._ready = false;\n this._running = false;\n this._ended = false;\n this._tries = 0;\n this._startTimestamp = Date.now();\n this._slowHandles = [];\n }\n\n get type() {return this._type;}\n get method() {return this._method;}\n get target() {return this._target;}\n get targets() {\n if (this._method !== 'update') return [this._target];\n return _.map(this._operand, (value, escapedPathFragment) => {\n return new Reference(\n this._target._tree, joinPath(this._target.path, escapedPathFragment),\n this._target._annotations);\n });\n }\n\n get operand() {return this._operand;}\n get ready() {return this._ready;}\n get running() {return this._running;}\n get ended() {return this._ended;}\n get tries() {return this._tries;}\n get error() {return this._error;}\n\n onSlow(delay, callback) {\n const handle = new SlowHandle(this, delay, callback);\n this._slowHandles.push(handle);\n handle.initiate();\n }\n\n _setRunning(value) {\n this._running = value;\n }\n\n _setEnded(value) {\n this._ended = value;\n }\n\n _markReady(ending) {\n this._ready = true;\n if (!ending) this._tries = 0;\n _.forEach(this._slowHandles, handle => handle.cancel());\n }\n\n _clearReady() {\n // Temporarily set ready to correctly reset previously triggered slow handles.\n this._ready = true;\n this._startTimestamp = Date.now();\n _.forEach(this._slowHandles, handle => handle.initiate());\n this._ready = false;\n }\n\n _incrementTries() {\n this._tries++;\n }\n}\n\n\nexport default class Dispatcher {\n constructor(bridge) {\n this._bridge = bridge;\n this._callbacks = {};\n Object.freeze(this);\n }\n\n intercept(interceptKey, callbacks) {\n if (!_.includes(INTERCEPT_KEYS, interceptKey)) {\n throw new Error('Unknown intercept operation type: ' + interceptKey);\n }\n const badCallbackKeys =\n _.difference(_.keys(callbacks), ['onBefore', 'onAfter', 'onError', 'onFailure']);\n if (badCallbackKeys.length) {\n throw new Error('Unknown intercept callback types: ' + badCallbackKeys.join(', '));\n }\n const wrappedCallbacks = {\n onBefore: this._addCallback('onBefore', interceptKey, callbacks.onBefore),\n onAfter: this._addCallback('onAfter', interceptKey, callbacks.onAfter),\n onError: this._addCallback('onError', interceptKey, callbacks.onError),\n onFailure: this._addCallback('onFailure', interceptKey, callbacks.onFailure)\n };\n return this._removeCallbacks.bind(this, interceptKey, wrappedCallbacks);\n }\n\n _addCallback(stage, interceptKey, callback) {\n if (!callback) return;\n const key = this._getCallbacksKey(stage, interceptKey);\n const wrappedCallback = wrapPromiseCallback(callback);\n (this._callbacks[key] || (this._callbacks[key] = [])).push(wrappedCallback);\n return wrappedCallback;\n }\n\n _removeCallback(stage, interceptKey, wrappedCallback) {\n if (!wrappedCallback) return;\n const key = this._getCallbacksKey(stage, interceptKey);\n if (this._callbacks[key]) _.pull(this._callbacks[key], wrappedCallback);\n }\n\n _removeCallbacks(interceptKey, wrappedCallbacks) {\n _.forEach(wrappedCallbacks, (wrappedCallback, stage) => {\n this._removeCallback(stage, interceptKey, wrappedCallback);\n });\n }\n\n _getCallbacks(stage, operationType, method) {\n return [].concat(\n this._callbacks[this._getCallbacksKey(stage, method)] || EMPTY_ARRAY,\n this._callbacks[this._getCallbacksKey(stage, operationType)] || EMPTY_ARRAY,\n this._callbacks[this._getCallbacksKey(stage, 'all')] || EMPTY_ARRAY\n );\n }\n\n _getCallbacksKey(stage, interceptKey) {\n return `${stage}_${interceptKey}`;\n }\n\n execute(operationType, method, target, operand, executor) {\n executor = wrapPromiseCallback(executor);\n const operation = this.createOperation(operationType, method, target, operand);\n return this.begin(operation).then(() => {\n const executeWithRetries = () => {\n return executor().catch(e => this._retryOrEnd(operation, e).then(executeWithRetries));\n };\n return executeWithRetries();\n }).then(result => this.end(operation).then(() => result));\n }\n\n createOperation(operationType, method, target, operand) {\n return new Operation(operationType, method, target, operand);\n }\n\n begin(operation) {\n return Promise.all(_.map(\n this._getCallbacks('onBefore', operation.type, operation.method),\n onBefore => onBefore(operation)\n )).then(() => {\n if (!operation.ended) operation._setRunning(true);\n }, e => this.end(operation, e));\n }\n\n markReady(operation) {\n operation._markReady();\n }\n\n clearReady(operation) {\n operation._clearReady();\n }\n\n retry(operation, error) {\n operation._incrementTries();\n operation._error = error;\n return Promise.all(_.map(\n this._getCallbacks('onError', operation.type, operation.method),\n onError => onError(operation, error)\n )).then(results => {\n // If the operation ended in the meantime, bail. This will cause the caller to attempt to\n // fail the operation, but since it's already ended the call to end() with an error will be a\n // no-op.\n if (operation.ended) return;\n const retrying = _.some(results);\n if (retrying) delete operation._error;\n return retrying;\n });\n }\n\n _retryOrEnd(operation, error) {\n return this.retry(operation, error).then(result => {\n if (!result) return this.end(operation, error);\n }, e => this.end(operation, e));\n }\n\n end(operation, error) {\n if (operation.ended) return Promise.resolve();\n operation._setRunning(false);\n operation._setEnded(true);\n if (error) {\n operation._error = error;\n } else {\n // In case we're racing with a retry(), wipe out the error.\n delete operation._error;\n }\n return Promise.all(_.map(\n this._getCallbacks('onAfter', operation.type, operation.method),\n onAfter => onAfter(operation)\n )).then(\n () => this._afterEnd(operation),\n e => {\n operation._error = e;\n return this._afterEnd(operation);\n }\n );\n }\n\n _afterEnd(operation) {\n operation._markReady(true);\n if (!operation.error) return Promise.resolve();\n const onFailureCallbacks = this._getCallbacks('onFailure', operation.type, operation.method);\n if (onFailureCallbacks) {\n setTimeout(() => {\n _.forEach(onFailureCallbacks, onFailure => onFailure(operation));\n }, 0);\n }\n return Promise.reject(operation.error);\n }\n}\n\n","const ALPHABET = '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz';\n\nconst getRandomValues = window.crypto && window.crypto.getRandomValues &&\n window.crypto.getRandomValues.bind(window.crypto);\n\nexport default class KeyGenerator {\n constructor() {\n this._lastUniqueKeyTime = 0;\n this._lastRandomValues = [];\n }\n\n generateUniqueKey(now) {\n now = now || Date.now();\n const chars = new Array(20);\n let prefix = now;\n for (let i = 7; i >= 0; i--) {\n chars[i] = ALPHABET.charAt(prefix & 0x3f); // eslint-disable-line no-bitwise\n prefix = Math.floor(prefix / 64);\n }\n if (now === this._lastUniqueKeyTime) {\n let i = 11;\n while (i >= 0 && this._lastRandomValues[i] === 63) {\n this._lastRandomValues[i] = 0;\n i -= 1;\n }\n if (i === -1) {\n throw new Error('Internal assertion failure: ran out of unique IDs for this millisecond');\n }\n this._lastRandomValues[i] += 1;\n } else {\n this._lastUniqueKeyTime = now;\n if (getRandomValues) {\n const array = new Uint8Array(12);\n getRandomValues(array);\n for (let i = 0; i < 12; i++) {\n // eslint-disable-next-line no-bitwise\n this._lastRandomValues[i] = array[i] & (i ? 0x3f : 0x0f);\n }\n } else {\n for (let i = 0; i < 12; i++) {\n // Make sure to leave some space for incrementing in the top nibble.\n this._lastRandomValues[i] = Math.floor(Math.random() * (i ? 64 : 16));\n }\n }\n }\n for (let i = 0; i < 12; i++) {\n chars[i + 8] = ALPHABET[this._lastRandomValues[i]];\n }\n return chars.join('');\n }\n}\n","import angular from './angularCompatibility.js';\nimport Vue from 'vue';\nimport Reference from './Reference.js';\n\n\nexport default class MetaTree {\n constructor(rootUrl, tree, bridge, dispatcher) {\n this._rootUrl = rootUrl;\n this._tree = tree;\n this._dispatcher = dispatcher;\n this._bridge = bridge;\n this._vue = new Vue({data: {$root: {\n connected: undefined, timeOffset: 0, user: undefined, userid: undefined,\n nowAtInterval(intervalMillis) {\n const key = 'now' + intervalMillis;\n if (!Object.hasOwn(this, key)) {\n const update = () => {\n Vue.set(this, key, Date.now() + this.timeOffset);\n angular.digest();\n };\n update();\n setInterval(update, intervalMillis);\n }\n return this[key];\n }\n }}});\n\n this._auth = {serial: 0, initialAuthChangeReceived: false, changePromise: Promise.resolve()};\n\n bridge.onAuth(rootUrl, this._handleAuthChange, this);\n\n this._connectInfoProperty('serverTimeOffset', 'timeOffset');\n this._connectInfoProperty('connected', 'connected');\n Object.freeze(this);\n }\n\n get root() {\n return this._vue.$data.$root;\n }\n\n destroy() {\n this._bridge.offAuth(this._rootUrl, this._handleAuthChange, this);\n this._vue.$destroy();\n }\n\n authenticate(token) {\n this._auth.serial++;\n return this._dispatcher.execute(\n 'auth', 'authenticate', new Reference(this._tree, '/'), token, () => {\n const promise = token ?\n this._bridge.authWithCustomToken(this._rootUrl, token) :\n this._bridge.authAnonymously(this._rootUrl);\n return promise.then(() => this._auth.changePromise);\n }\n );\n }\n\n unauthenticate() {\n // Signal user change to null pre-emptively. This is what the Firebase SDK does as well, since\n // it lets the app tear down user-required connections before the user is actually deauthed,\n // which can prevent spurious permission denied errors.\n this._auth.serial++;\n return this._handleAuthChange(null).then(approved => {\n // Bail if auth change callback initiated another authentication, since it will have already\n // sent the command to the bridge and sending our own now would incorrectly override it.\n if (!approved) return;\n return this._dispatcher.execute(\n 'auth', 'unauthenticate', new Reference(this._tree, '/'), undefined, () => {\n return this._bridge.unauth(this._rootUrl);\n }\n );\n });\n }\n\n _handleAuthChange(user) {\n const supersededChange = !this._auth.initialAuthChangeReceived && this._auth.serial;\n if (user !== undefined) this._auth.initialAuthChangeReceived = true;\n if (supersededChange) return;\n const authSerial = this._auth.serial;\n if (this.root.user === user) return Promise.resolve(false);\n const promise = this._dispatcher.execute(\n 'auth', 'certify', new Reference(this._tree, '/'), user, () => {\n if (this.root.user === user || authSerial !== this._auth.serial) return false;\n if (user) Object.freeze(user);\n this.root.user = user;\n this.root.userid = user && user.uid;\n angular.digest();\n return true;\n }\n );\n this._auth.changePromise = this._auth.changePromise.then(() => promise).catch();\n return promise;\n }\n\n _isAuthChangeStale(user) {\n return this.root.user === user;\n }\n\n _connectInfoProperty(property, attribute) {\n const url = new URL(this._rootUrl);\n url.pathname = encodeURI(`/.info/${property}`);\n this._bridge.on(url.href, url.href, null, 'value', snap => {\n this.root[attribute] = snap.value;\n angular.digest();\n });\n }\n}\n","import {Reference, Handle} from './Reference.js';\nimport angular from './angularCompatibility.js';\nimport stats from './utils/stats.js';\nimport {makePathMatcher, joinPath, splitPath, escapeKey, unescapeKey} from './utils/paths.js';\nimport {isTrussEqual, copyPrototype} from './utils/utils.js';\nimport {promiseFinally} from './utils/promises.js';\n\nimport _ from 'lodash';\n\n// These are defined separately for each object so they're not included in Value below.\nconst RESERVED_VALUE_PROPERTY_NAMES = {__ob__: true};\n\nconst UNSUPPORTED_LIFECYCLE_METHODS = new Set([\n 'beforeMount', 'mounted', 'beforeUpdate', 'updated', 'activated', 'deactivated', 'errorCaptured'\n]);\nconst UNSUPPORTED_LIFECYCLE_HOOKS =\n new Set(_.map(UNSUPPORTED_LIFECYCLE_METHODS, method => `hook:${method}`));\n\nconst LAST_COMPUTED_VALUE = Symbol('last-computed-value');\n\n// Holds properties that we're going to set on a model object that's being created right now as soon\n// as it's been created, but that we'd like to be accessible in the constructor. The object\n// prototype's getters will pick those up until they get overridden in the instance.\nlet creatingObjectProperties;\n\nlet currentPropertyFrozen;\n\n\nexport class BaseValue {\n get $info() {return this.$truss.info;}\n get $store() {return this.$truss.store;} // access indirectly to leave dependency trace\n get $now() {return this.$truss.now;}\n\n $newKey() {return this.$truss.newKey();}\n\n $intercept(actionType, callbacks) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const unintercept = this.$truss.intercept(actionType, callbacks);\n const uninterceptAndRemoveFinalizer = () => {\n unintercept();\n this.$off('hook:destroyed', uninterceptAndRemoveFinalizer);\n };\n this.$on('hook:destroyed', uninterceptAndRemoveFinalizer);\n return uninterceptAndRemoveFinalizer;\n }\n\n $connect(scope, connections) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n if (!connections) {\n connections = scope;\n scope = undefined;\n }\n const connector = this.$truss.connect(scope, wrapConnections(this, connections));\n const originalDestroy = connector.destroy;\n const destroy = () => {\n this.$off('hook:destroyed', destroy);\n return originalDestroy.call(connector);\n };\n this.$on('hook:destroyed', destroy);\n connector.destroy = destroy;\n return connector;\n }\n\n $peek(target, callback) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const promise = promiseFinally(\n this.$truss.peek(target, callback), () => {this.$off('hook:destroyed', promise.cancel);}\n );\n this.$on('hook:destroyed', promise.cancel);\n return promise;\n }\n\n $observe(subjectFn, callbackFn, options) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n let unobserveAndRemoveFinalizer;\n\n const unobserve = this.$truss.observe(() => {\n this.$$touchThis();\n return subjectFn.call(this);\n }, callbackFn.bind(this), {...options, vm: this});\n\n unobserveAndRemoveFinalizer = () => { // eslint-disable-line prefer-const\n unobserve();\n this.$off('hook:destroyed', unobserveAndRemoveFinalizer);\n };\n this.$on('hook:destroyed', unobserveAndRemoveFinalizer);\n return unobserveAndRemoveFinalizer;\n }\n\n $when(expression, options) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const promise = this.$truss.when(() => {\n this.$$touchThis();\n return expression.call(this);\n }, options);\n promiseFinally(promise, () => {this.$off('hook:destroyed', promise.cancel);});\n this.$on('hook:destroyed', promise.cancel);\n return promise;\n }\n}\n\n\nclass Value {\n get $parent() {return creatingObjectProperties.$parent.value;}\n get $path() {return creatingObjectProperties.$path.value;}\n get $truss() {\n Object.defineProperty(this, '$truss', {value: this.$parent.$truss});\n return this.$truss;\n }\n\n get $ref() {\n Object.defineProperty(this, '$ref', {value: new Reference(this.$truss._tree, this.$path)});\n return this.$ref;\n }\n\n get $refs() {return this.$ref;}\n get $key() {\n Object.defineProperty(\n this, '$key', {value: unescapeKey(this.$path.slice(this.$path.lastIndexOf('/') + 1))});\n return this.$key;\n }\n\n get $data() {return this;}\n get $hidden() {return false;} // eslint-disable-line lodash/prefer-constant\n get $empty() {return _.isEmpty(this.$data);}\n get $keys() {return _.keys(this.$data);}\n get $values() {return _.values(this.$data);}\n get $ready() {return this.$ref.ready;}\n get $overridden() {return false;} // eslint-disable-line lodash/prefer-constant\n\n $nextTick() {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const promise = this.$truss.nextTick();\n promiseFinally(promise, () => {this.$off('hook:destroyed', promise.cancel);});\n this.$on('hook:destroyed', promise.cancel);\n return promise;\n }\n\n $freezeComputedProperty() {\n if (!_.isBoolean(currentPropertyFrozen)) {\n throw new Error('Cannot freeze a computed property outside of its getter function');\n }\n currentPropertyFrozen = true;\n }\n\n get $lastComputedValue() {\n if (!_.isBoolean(currentPropertyFrozen)) {\n throw new Error(\n 'Cannot use last computed value of a property outside of its getter function');\n }\n return LAST_COMPUTED_VALUE;\n }\n\n $set(value) {return this.$ref.set(value);}\n $update(values) {return this.$ref.update(values);}\n $override(values) {return this.$ref.override(values);}\n $commit(options, updateFn) {return this.$ref.commit(options, updateFn);}\n\n $$touchThis() {\n /* eslint-disable no-unused-expressions */\n if (this.__ob__) {\n this.__ob__.dep.depend();\n } else if (this.$parent) {\n (Object.hasOwn(this.$parent, '$data') ? this.$parent.$data : this.$parent)[this.$key];\n } else {\n this.$store;\n }\n /* eslint-enable no-unused-expressions */\n }\n\n get $destroyed() { // eslint-disable-line lodash/prefer-constant\n return false;\n }\n\n $on(event, callback) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n if (UNSUPPORTED_LIFECYCLE_HOOKS.has(event)) {\n throw new Error(`Models don't support the \"${event}\" lifecycle event`);\n }\n (this.$$hooks[event] = this.$$hooks[event] || []).push(callback);\n return this;\n }\n\n $once(event, callback) {\n const object = this;\n function cb(...args) {\n object.$off(event, cb);\n callback(...args);\n }\n cb.fn = callback;\n return this.$on(event, cb);\n }\n\n $off(event, callback) {\n if (event) {\n if (callback) {\n if (_.isArray(event)) {\n for (const ev of event) this.$off(ev, callback);\n } else if (this.$$hooks[event]) {\n const callbacks = this.$$hooks[event];\n for (let i = 0; i < callbacks.length; i++) {\n const cb = callbacks[i];\n if (cb === callback || cb.fn === callback) {\n callbacks.splice(i, 1);\n break;\n }\n }\n }\n } else {\n delete this.$$hooks[event];\n }\n } else {\n for (const key of _.keys(this.$$hooks)) delete this.$$hooks[key];\n }\n return this;\n }\n\n $emit(event, ...args) {\n if (_.has(this, '$$hooks')) {\n // Some callbacks remove themselves from the array, so clone it before iterating.\n _.forEach(_.clone(this.$$hooks[event]), callback => {\n if (callback.$once && callback.$once[event]) {\n callback.$once[event] -= 1;\n this.$off(event, callback);\n }\n callback(...args);\n });\n }\n return this;\n }\n\n get $$hooks() {\n Object.defineProperty(this, '$$hooks', {\n value: {}, writable: false, enumerable: false, configurable: false\n });\n return this.$$hooks;\n }\n}\n\ncopyPrototype(BaseValue, Value);\n\n_.forEach(Value.prototype, (prop, name) => {\n Object.defineProperty(\n Value.prototype, name, {value: prop, enumerable: false, configurable: false, writable: false});\n});\n\n\nclass ErrorWrapper {\n constructor(error) {\n this.error = error;\n }\n}\n\n\nclass FrozenWrapper {\n constructor(value) {\n this.value = value;\n }\n}\n\n\nexport default class Modeler {\n constructor(vue, debug) {\n this._vue = vue;\n this._trie = {Class: Value};\n this._debug = debug;\n Object.freeze(this);\n }\n\n init(classes, rootAcceptable) {\n if (_.isPlainObject(classes)) {\n _.forEach(classes, (Class, path) => {\n if (Class.$trussMount) return;\n Class.$$trussMount = Class.$$trussMount || [];\n Class.$$trussMount.push(path);\n });\n classes = _.values(classes);\n _.forEach(classes, Class => {\n if (!Class.$trussMount && Class.$$trussMount) {\n Class.$trussMount = Class.$$trussMount;\n delete Class.$$trussMount;\n }\n });\n }\n classes = _.uniq(classes);\n _.forEach(classes, Class => this._mountClass(Class, rootAcceptable));\n this._decorateTrie(this._trie);\n }\n\n destroy() {/* empty */}\n\n _getMount(path, scaffold, predicate) {\n const segments = splitPath(path, true);\n let node;\n for (const segment of segments) {\n let child = segment ?\n node.children && (node.children[segment] || !scaffold && node.children.$) : this._trie;\n if (!child) {\n if (!scaffold) return;\n node.children = node.children || {};\n child = node.children[segment] = {Class: Value};\n }\n node = child;\n if (predicate && predicate(node)) break;\n }\n return node;\n }\n\n _findMount(predicate, node) {\n if (!node) node = this._trie;\n if (predicate(node)) return node;\n for (const childKey of _.keys(node.children)) {\n const result = this._findMount(predicate, node.children[childKey]);\n if (result) return result;\n }\n }\n\n _decorateTrie(node) {\n _.forEach(node.children, child => {\n this._decorateTrie(child);\n if (child.local || child.localDescendants) node.localDescendants = true;\n });\n }\n\n _augmentClass(Class) {\n let computedProperties;\n let proto = Class.prototype;\n while (proto && proto.constructor !== Object) {\n for (const name of Object.getOwnPropertyNames(proto)) {\n const descriptor = Object.getOwnPropertyDescriptor(proto, name);\n if (name.charAt(0) === '$') {\n if (_.isEqual(descriptor, Object.getOwnPropertyDescriptor(Value.prototype, name))) {\n continue;\n }\n throw new Error(`Property names starting with \"$\" are reserved: ${Class.name}.${name}`);\n }\n if (UNSUPPORTED_LIFECYCLE_METHODS.has(name) && _.isFunction(proto[name])) {\n throw new Error(`Models don't support the \"${name}\" lifecycle method`);\n }\n if (descriptor.get && !(computedProperties && computedProperties[name])) {\n (computedProperties || (computedProperties = {}))[name] = {\n name, fullName: `${proto.constructor.name}.${name}`, get: descriptor.get,\n set: descriptor.set\n };\n }\n }\n proto = Object.getPrototypeOf(proto);\n }\n for (const name of Object.getOwnPropertyNames(Value.prototype)) {\n if (name === 'constructor' || Object.hasOwn(Class.prototype, name)) continue;\n Object.defineProperty(\n Class.prototype, name, Object.getOwnPropertyDescriptor(Value.prototype, name));\n }\n return computedProperties;\n }\n\n _mountClass(Class, rootAcceptable) {\n const computedProperties = this._augmentClass(Class);\n const allVariables = [];\n let mounts = Class.$trussMount;\n if (!mounts) throw new Error(`Class ${Class.name} lacks a $trussMount static property`);\n if (!_.isArray(mounts)) mounts = [mounts];\n _.forEach(mounts, mount => {\n if (_.isString(mount)) mount = {path: mount};\n if (!rootAcceptable && mount.path === '/') {\n throw new Error('Data root already accessed, too late to mount class');\n }\n const matcher = makePathMatcher(mount.path);\n for (const variable of matcher.variables) {\n if (variable === '$' || variable.charAt(1) === '$') {\n throw new Error(`Invalid variable name: ${variable}`);\n }\n if (variable.charAt(0) === '$' && (\n _.has(Value.prototype, variable) || RESERVED_VALUE_PROPERTY_NAMES[variable]\n )) {\n throw new Error(`Variable name conflicts with built-in property or method: ${variable}`);\n }\n allVariables.push(variable);\n }\n const escapedKey = mount.path.match(/\\/([^/]*)$/)[1];\n if (escapedKey.charAt(0) === '$') {\n if (mount.placeholder) {\n throw new Error(\n `Class ${Class.name} mounted at wildcard ${escapedKey} cannot be a placeholder`);\n }\n } else if (!_.has(mount, 'placeholder')) {\n mount.placeholder = {};\n }\n const targetMount = this._getMount(mount.path.replace(/\\$[^/]*/g, '$'), true);\n if (targetMount.matcher && (\n targetMount.escapedKey === escapedKey ||\n targetMount.escapedKey.charAt(0) === '$' && escapedKey.charAt(0) === '$'\n )) {\n throw new Error(\n `Multiple classes mounted at ${mount.path}: ${targetMount.Class.name}, ${Class.name}`);\n }\n _.assign(\n targetMount, {Class, matcher, computedProperties, escapedKey},\n _.pick(mount, 'placeholder', 'local', 'keysUnsafe', 'hidden'));\n });\n _(allVariables).uniq().forEach(variable => {\n Object.defineProperty(Class.prototype, variable, {get() {\n return creatingObjectProperties ?\n creatingObjectProperties[variable] && creatingObjectProperties[variable].value :\n undefined;\n }});\n });\n }\n\n /**\n * Creates a Truss object and sets all its basic properties: path segment variables, user-defined\n * properties, and computed properties. The latter two will be enumerable so that Vue will pick\n * them up and make the reactive.\n */\n createObject(path, properties) {\n const mount = this._getMount(path) || {Class: Value};\n try {\n if (mount.matcher) {\n const match = mount.matcher.match(path);\n for (const variable in match) {\n properties[variable] = {value: match[variable]};\n }\n }\n\n creatingObjectProperties = properties;\n const object = new mount.Class();\n creatingObjectProperties = null;\n\n if (angular.active) this._wrapProperties(object);\n\n if (mount.keysUnsafe) {\n properties.$data = {value: Object.create(null), configurable: true, enumerable: true};\n }\n if (mount.hidden) properties.$hidden = {value: true};\n if (mount.computedProperties) {\n _.forEach(mount.computedProperties, prop => {\n properties[prop.name] = this._buildComputedPropertyDescriptor(object, prop);\n });\n }\n\n return object;\n } catch (e) {\n e.extra = _.assign({mount, properties, className: mount.Class && mount.Class.name}, e.extra);\n throw e;\n }\n }\n\n _wrapProperties(object) {\n _.forEach(object, (value, key) => {\n const valueKey = '$_' + key;\n Object.defineProperties(object, {\n [valueKey]: {value, writable: true},\n [key]: {\n get: () => object[valueKey],\n set: arg => {object[valueKey] = arg; angular.digest();},\n enumerable: true, configurable: true\n }\n });\n });\n }\n\n _buildComputedPropertyDescriptor(object, prop) {\n const propertyStats = stats.for(prop.fullName);\n\n let value, pendingPromise;\n let writeAllowed = false;\n\n const initialize = () => {\n let unwatchNow = false;\n const compute = computeValue.bind(object, prop, propertyStats);\n compute.toString = _.constant(`compute ${prop.fullName}`);\n let unwatch = () => {unwatchNow = true;};\n unwatch = this._vue.$watch(compute, newValue => {\n if (object.$destroyed) {\n unwatch();\n return;\n }\n if (pendingPromise) {\n if (pendingPromise.cancel) pendingPromise.cancel();\n pendingPromise = undefined;\n }\n if (_.isObject(newValue) && _.isFunction(newValue.then)) {\n const promise = newValue.then(finalValue => {\n if (promise === pendingPromise) update(finalValue);\n // No need to angular.digest() here, since if we're running under Angular then we expect\n // promises to be aliased to its $q service, which triggers digest itself.\n }, error => {\n if (promise === pendingPromise && update(new ErrorWrapper(error)) &&\n !error.trussExpectedException) throw error;\n });\n pendingPromise = promise;\n } else if (update(newValue)) {\n angular.digest();\n if (newValue instanceof ErrorWrapper && !newValue.error.trussExpectedException) {\n throw newValue.error;\n }\n }\n }, {immediate: true}); // use immediate:true since watcher will run computeValue anyway\n // Hack to change order of computed property watchers. By flipping their ids to be negative,\n // we ensure that they will settle before all other watchers, and also that children\n // properties will settle before their parents since values are often aggregated upwards.\n const watcher = _.last(this._vue._watchers || this._vue._scope.effects);\n watcher.id = -watcher.id;\n\n function update(newValue) {\n const startTime = performance.now();\n if (newValue instanceof FrozenWrapper) {\n newValue = newValue.value;\n unwatch();\n object.$off('hook:destroyed', unwatch);\n }\n if (newValue === LAST_COMPUTED_VALUE || isTrussEqual(value, newValue)) return;\n // console.log('updating', object.$key, prop.fullName, 'from', value, 'to', newValue);\n writeAllowed = true;\n object[prop.name] = newValue;\n writeAllowed = false;\n // Freeze the computed value so it can't be accidentally modified by a third party. Ideally\n // we'd freeze it before setting it so that Vue wouldn't instrument the object recursively\n // (since it can't change anyway), but we actually need the instrumentation in case a client\n // tries to access an inexistent property off a computed pointer to an unfrozen value (e.g.,\n // a $truss-ified object). When instrumented, Vue will add a dependency on the unfrozen\n // value in case the property is later added. If uninstrumented, the dependency won't be\n // added and we won't be notified. And Vue only instruments extensible objects...\n freeze(newValue);\n propertyStats.numUpdates += 1;\n propertyStats.updateTime += performance.now() - startTime;\n return true;\n }\n\n if (unwatchNow) {\n unwatch();\n } else {\n object.$on('hook:destroyed', unwatch);\n }\n\n object.$off('hook:created', initialize);\n };\n object.$on('hook:created', initialize);\n\n return {\n enumerable: true, configurable: true,\n get() {\n if (!writeAllowed && value instanceof ErrorWrapper) throw value.error;\n return value;\n },\n set(newValue) {\n if (writeAllowed) {\n value = newValue;\n } else if (prop.set) {\n prop.set.call(this, newValue);\n } else {\n throw new Error(`You cannot set a computed property: ${prop.name}`);\n }\n }\n };\n }\n\n destroyObject(object) {\n Object.defineProperty(\n object, '$destroyed', {value: true, enumerable: false, configurable: false});\n }\n\n emitLifecycleHook(object, hook) {\n if (_.isFunction(object[hook])) object[hook]();\n object.$emit(`hook:${hook}`);\n }\n\n isPlaceholder(path) {\n const mount = this._getMount(path);\n return mount && mount.placeholder;\n }\n\n isLocal(path, value) {\n // eslint-disable-next-line no-shadow\n const mount = this._getMount(path, false, mount => mount.local);\n if (mount && mount.local) return true;\n if (this._hasLocalProperties(mount, value)) {\n throw new Error('Write on a mix of local and remote tree paths.');\n }\n return false;\n }\n\n _hasLocalProperties(mount, value) {\n if (!mount) return false;\n if (mount.local) return true;\n if (!mount.localDescendants || !_.isObject(value)) return false;\n for (const key in value) {\n const local =\n this._hasLocalProperties(mount.children[escapeKey(key)] || mount.children.$, value[key]);\n if (local) return true;\n }\n return false;\n }\n\n forEachPlaceholderChild(path, iteratee) {\n const mount = this._getMount(path);\n _.forEach(mount && mount.children, child => {\n if (child.placeholder) iteratee(child);\n });\n }\n\n checkVueObject(object, path, checkedObjects) {\n const top = !checkedObjects;\n if (top) checkedObjects = new Set();\n const objectPropertyValues = new Map();\n const mount = this._findMount(candidate => candidate.Class === object.constructor);\n const targetProperties = _(object)\n .thru(Object.getOwnPropertyNames)\n .reject(key =>\n RESERVED_VALUE_PROPERTY_NAMES[key] || Object.hasOwn(Value.prototype, key) ||\n /^\\$_/.test(key)\n )\n .reject(key => mount && mount.matcher && _.includes(mount.matcher.variables, key))\n .map(key => {\n let value;\n try {\n value = object[key];\n // Ignore builtin object types.\n if (value instanceof RegExp) return;\n } catch {\n // Ignore any values that hold exceptions, or otherwise throw on access -- we won't be\n // able to check them anyway.\n return;\n }\n const descriptor = Object.getOwnPropertyDescriptor(object, key);\n const computed =\n !descriptor.enumerable && descriptor.set && !Object.hasOwn(object, '$_' + key);\n return {key, value, descriptor, computed};\n })\n .compact()\n .value();\n\n for (const {key, value, descriptor, computed} of targetProperties) {\n if (!(_.isArray(object) && (/^\\d+$/.test(key) || key === 'length'))) {\n if ('value' in descriptor || !descriptor.get) {\n throw new Error(\n `Value at ${path}, contained in a Firetruss object, has a rogue property: ${key}`);\n }\n if (object.$truss && descriptor.enumerable) {\n try {\n object[key] = value;\n throw new Error(\n `Firetruss object at ${path} has an enumerable non-Firebase property: ${key}`);\n } catch (e) {\n if (e.trussCode !== 'firebase_overwrite') throw e;\n }\n }\n }\n if (_.isObject(value)) {\n if (!checkedObjects.has(value) && !Object.isSealed(value) &&\n !(_.isFunction(value) || _.isElement(value) || value instanceof Promise)) {\n checkedObjects.add(value);\n this.checkVueObject(value, joinPath(path, escapeKey(key)), checkedObjects);\n }\n if (!computed && !value.$truss) objectPropertyValues.set(value, key);\n }\n }\n\n for (const {key, value, computed} of targetProperties) {\n if (computed && _.isObject(value) && !value.$truss) {\n const otherKey = objectPropertyValues.get(value);\n if (otherKey) {\n throw new Error(\n `Firetruss object at ${path} has properties ${key} ` +\n `and ${otherKey} with an aliased value`);\n }\n }\n }\n }\n}\n\n\nfunction computeValue(prop, propertyStats) {\n /* eslint-disable no-invalid-this */\n if (this.$destroyed) return;\n // Touch this object, since a failed access to a missing property doesn't get captured as a\n // dependency.\n this.$$touchThis();\n\n const oldPropertyFrozen = currentPropertyFrozen;\n currentPropertyFrozen = false;\n const startTime = performance.now();\n let value;\n try {\n try {\n value = prop.get.call(this);\n } catch (e) {\n value = new ErrorWrapper(e);\n } finally {\n propertyStats.computeTime += performance.now() - startTime;\n propertyStats.numRecomputes += 1;\n }\n if (currentPropertyFrozen) value = new FrozenWrapper(value);\n return value;\n } finally {\n currentPropertyFrozen = oldPropertyFrozen;\n }\n /* eslint-enable no-invalid-this */\n}\n\nfunction wrapConnections(object, connections) {\n if (!connections || connections instanceof Handle) return connections;\n if (_.isFunction(connections)) {\n const fn = function() {\n /* eslint-disable no-invalid-this */\n object.$$touchThis();\n return wrapConnections(object, connections.call(this));\n /* eslint-enable no-invalid-this */\n };\n fn.angularWatchSuppressed = true;\n return fn;\n }\n return _.mapValues(connections, descriptor => wrapConnections(object, descriptor));\n}\n\nfunction freeze(object) {\n if (_.isNil(object) || !_.isObject(object) || Object.isFrozen(object) || object.$truss) {\n return object;\n }\n object = Object.freeze(object);\n if (_.isArray(object)) return _.map(object, value => freeze(value));\n return _.mapValues(object, value => freeze(value));\n}\n","import _ from 'lodash';\nimport Vue from 'vue';\nimport angular from './angularCompatibility.js';\nimport {splitPath} from './utils/paths.js';\n\n\nclass QueryHandler {\n constructor(coupler, query) {\n this._coupler = coupler;\n this._query = query;\n this._listeners = [];\n this._keys = [];\n this._coupler._url.pathname = encodeURI(query.path);\n this._url = this._coupler._url.toString();\n this._segments = splitPath(query.path, true);\n this._listening = false;\n this.ready = false;\n }\n\n attach(operation, keysCallback) {\n this._listen();\n this._listeners.push({operation, keysCallback});\n if (this.ready) {\n this._coupler._dispatcher.markReady(operation);\n if (keysCallback) keysCallback(this._keys);\n }\n }\n\n detach(operation) {\n const k = _.findIndex(this._listeners, {operation});\n if (k >= 0) this._listeners.splice(k, 1);\n return this._listeners.length;\n }\n\n _listen() {\n if (this._listening) return;\n this._coupler._bridge.on(\n this._query.toString(), this._url, this._query.constraints, 'value',\n this._handleSnapshot, this._handleError, this, {sync: true});\n this._listening = true;\n }\n\n destroy() {\n this._coupler._bridge.off(\n this._query.toString(), this._url, this._query.constraints, 'value', this._handleSnapshot,\n this);\n this._listening = false;\n this.ready = false;\n angular.digest();\n for (const key of this._keys) {\n this._coupler._decoupleSegments(this._segments.concat(key));\n }\n }\n\n _handleSnapshot(snap) {\n this._coupler._queueSnapshotCallback(() => {\n // Order is important here: first couple any new subpaths so _handleSnapshot will update the\n // tree, then tell the client to update its keys, pulling values from the tree.\n if (!this._listeners.length || !this._listening) return;\n const updatedKeys = this._updateKeysAndApplySnapshot(snap);\n if (!this.ready) {\n this.ready = true;\n angular.digest();\n for (const listener of this._listeners) {\n this._coupler._dispatcher.markReady(listener.operation);\n }\n }\n if (updatedKeys) {\n for (const listener of this._listeners) {\n if (listener.keysCallback) listener.keysCallback(updatedKeys);\n }\n }\n });\n }\n\n _updateKeysAndApplySnapshot(snap) {\n let updatedKeys;\n if (snap.path === this._query.path) {\n updatedKeys = _.keys(snap.value);\n updatedKeys.sort();\n if (_.isEqual(this._keys, updatedKeys)) {\n updatedKeys = null;\n } else {\n for (const key of _.difference(updatedKeys, this._keys)) {\n this._coupler._coupleSegments(this._segments.concat(key));\n }\n for (const key of _.difference(this._keys, updatedKeys)) {\n // Decoupling a segment will prune the tree at that location if there are no other\n // listeners.\n this._coupler._decoupleSegments(this._segments.concat(key));\n }\n this._keys = updatedKeys;\n }\n // The snapshot may be partial, so create synthetic snapshots for subpaths and apply those to\n // update / insert values. (Deleted ones got pruned above.)\n if (snap.exists) {\n const rootValue = snap.value;\n const rootPath = snap.path;\n for (const key of this._keys) {\n snap._path = rootPath + '/' + key;\n snap._key = undefined;\n snap._value = rootValue[key];\n this._coupler._applySnapshot(snap);\n }\n // Restore original properties, just in case.\n snap._path = rootPath;\n snap._key = undefined;\n snap._value = rootValue;\n }\n } else if (snap.path.replace(/\\/[^/]+/, '') === this._query.path) {\n const hasKey = _.includes(this._keys, snap.key);\n if (snap.value) {\n if (!hasKey) {\n this._coupler._coupleSegments(this._segments.concat(snap.key));\n this._keys.push(snap.key);\n this._keys.sort();\n updatedKeys = this._keys;\n }\n } else if (hasKey) {\n this._coupler._decoupleSegments(this._segments.concat(snap.key));\n _.pull(this._keys, snap.key);\n this._keys.sort();\n updatedKeys = this._keys;\n }\n // A snapshot under the query's level is guaranteed to be a full snapshot, so we can apply it\n // directly.\n this._coupler._applySnapshot(snap);\n }\n return updatedKeys;\n }\n\n _handleError(error) {\n if (!this._listeners.length || !this._listening) return;\n this._listening = false;\n this.ready = false;\n for (const key of this._keys) this._coupler._decoupleSegments(this._segments.concat(key));\n this._keys = [];\n angular.digest();\n Promise.all(_.map(this._listeners, listener => {\n this._coupler._dispatcher.clearReady(listener.operation);\n return this._coupler._dispatcher.retry(listener.operation, error).catch(e => {\n listener.operation._disconnect(e);\n return false;\n });\n })).then(results => {\n if (_.some(results)) {\n if (this._listeners.length) this._listen();\n } else {\n for (const listener of this._listeners) listener.operation._disconnect(error);\n }\n });\n }\n}\n\n\nclass Node {\n constructor(coupler, path, parent) {\n this._coupler = coupler;\n this.path = path;\n this.parent = parent;\n this._coupler._url.pathname = encodeURI(path);\n this.url = this._coupler._url.toString();\n this.operations = [];\n this.queryCount = 0;\n this.listening = false;\n this.ready = false;\n this.children = {};\n }\n\n get active() {\n return this.count || this.queryCount;\n }\n\n get count() {\n return this.operations.length;\n }\n\n listen(skip) {\n if (!skip && this.count) {\n if (this.listening) return;\n _.forEach(this.operations, op => {this._coupler._dispatcher.clearReady(op);});\n this._coupler._bridge.on(\n this.url, this.url, null, 'value', this._handleSnapshot, this._handleError, this,\n {sync: true});\n this.listening = true;\n } else {\n _.forEach(this.children, child => {child.listen();});\n }\n }\n\n unlisten(skip) {\n if (!skip && this.listening) {\n this._coupler._bridge.off(this.url, this.url, null, 'value', this._handleSnapshot, this);\n this.listening = false;\n this._forAllDescendants(node => {\n if (node.listening) return false;\n if (node.ready) {\n node.ready = false;\n angular.digest();\n }\n });\n } else {\n _.forEach(this.children, child => {child.unlisten();});\n }\n }\n\n _handleSnapshot(snap) {\n this._coupler._queueSnapshotCallback(() => {\n if (!this.listening || !this._coupler.isTrunkCoupled(snap.path)) return;\n this._coupler._applySnapshot(snap);\n if (!this.ready && snap.path === this.path) {\n this.ready = true;\n angular.digest();\n this.unlisten(true);\n this._forAllDescendants(node => {\n for (const op of node.operations) this._coupler._dispatcher.markReady(op);\n });\n }\n });\n }\n\n _handleError(error) {\n if (!this.count || !this.listening) return;\n this.listening = false;\n this._forAllDescendants(node => {\n if (node.listening) return false;\n if (node.ready) {\n node.ready = false;\n angular.digest();\n }\n for (const op of node.operations) this._coupler._dispatcher.clearReady(op);\n });\n // Immediately prune all data below this node. We don't want to decouple it since the operation\n // may want to retry. We also don't want to look for other coupled paths below (that may not be\n // subject to the permission denied error) since they're not listening and the data would get\n // stale. If this node doesn't retry and gets decoupled we'll automatically start listening on\n // descendants and (try to) refill the subtrees.\n this._coupler._prunePath(this.path);\n return Promise.all(_.map(this.operations, op => {\n return this._coupler._dispatcher.retry(op, error).catch(e => {\n op._disconnect(e);\n return false;\n });\n })).then(results => {\n if (_.some(results)) {\n if (this.count) this.listen();\n } else {\n for (const op of this.operations) op._disconnect(error);\n // Pulling all the operations will automatically get us listening on descendants.\n }\n });\n }\n\n _forAllDescendants(iteratee) {\n if (iteratee(this) === false) return;\n _.forEach(this.children, child => child._forAllDescendants(iteratee));\n }\n\n collectCoupledDescendantPaths(paths) {\n if (!paths) paths = {};\n paths[this.path] = this.active;\n if (!this.active) {\n _.forEach(this.children, child => {child.collectCoupledDescendantPaths(paths);});\n }\n return paths;\n }\n}\n\n\nexport default class Coupler {\n constructor(rootUrl, bridge, dispatcher, applySnapshot, prunePath) {\n this._url = new URL(rootUrl);\n this._bridge = bridge;\n this._dispatcher = dispatcher;\n this._applySnapshot = applySnapshot;\n this._pendingSnapshotCallbacks = [];\n this._throttled = {processPendingSnapshots: this._processPendingSnapshots};\n this._prunePath = prunePath;\n this._vue = new Vue({data: {root: undefined, queryHandlers: {}}});\n // Prevent Vue from instrumenting rendering since there's actually nothing to render, and the\n // warnings cause false positives from Lodash primitives when running tests.\n this._vue._renderProxy = this._vue;\n this._nodeIndex = Object.create(null);\n Object.freeze(this);\n // Set root node after freezing Coupler, otherwise it gets vue-ified too.\n this._vue.$data.root = new Node(this, '/');\n this._nodeIndex['/'] = this._root;\n }\n\n get _root() {\n return this._vue.$data.root;\n }\n\n get _queryHandlers() {\n return this._vue.$data.queryHandlers;\n }\n\n destroy() {\n _.forEach(this._queryHandlers, queryHandler => {queryHandler.destroy();});\n this._root.unlisten();\n this._vue.$destroy();\n }\n\n couple(path, operation) {\n return this._coupleSegments(splitPath(path, true), operation);\n }\n\n _coupleSegments(segments, operation) {\n let node;\n let superseded = !operation;\n let ready = false;\n for (const segment of segments) {\n let child = segment ? node.children && node.children[segment] : this._root;\n if (!child) {\n child = new Node(this, `${node.path === '/' ? '' : node.path}/${segment}`, node);\n Vue.set(node.children, segment, child);\n this._nodeIndex[child.path] = child;\n }\n superseded = superseded || child.listening;\n ready = ready || child.ready;\n node = child;\n }\n if (operation) {\n node.operations.push(operation);\n } else {\n node.queryCount++;\n }\n if (superseded) {\n if (operation && ready) this._dispatcher.markReady(operation);\n } else {\n node.listen(); // node will call unlisten() on descendants when ready\n }\n }\n\n decouple(path, operation) {\n return this._decoupleSegments(splitPath(path, true), operation);\n }\n\n _decoupleSegments(segments, operation) {\n const ancestors = [];\n let node;\n for (const segment of segments) {\n node = segment ? node.children && node.children[segment] : this._root;\n if (!node) break;\n ancestors.push(node);\n }\n if (!node || !(operation ? node.count : node.queryCount)) {\n throw new Error(`Path not coupled: ${segments.join('/') || '/'}`);\n }\n if (operation) {\n _.pull(node.operations, operation);\n } else {\n node.queryCount--;\n }\n if (operation && !node.count) {\n // Ideally, we wouldn't resync the full values here since we probably already have the current\n // value for all children. But making sure that's true is tricky in an async system (what if\n // the node's value changes and the update crosses the 'off' call in transit?) and this\n // situation should be sufficiently rare that the optimization is probably not worth it right\n // now.\n node.listen();\n if (node.listening) node.unlisten();\n }\n if (!node.active) {\n for (let i = ancestors.length - 1; i > 0; i--) {\n node = ancestors[i];\n if (node === this._root || node.active || !_.isEmpty(node.children)) break;\n Vue.delete(ancestors[i - 1].children, segments[i]);\n node.ready = undefined;\n delete this._nodeIndex[node.path];\n }\n const path = segments.join('/') || '/';\n this._prunePath(path, this.findCoupledDescendantPaths(path));\n }\n }\n\n subscribe(query, operation, keysCallback) {\n let queryHandler = this._queryHandlers[query.toString()];\n if (!queryHandler) {\n queryHandler = new QueryHandler(this, query);\n Vue.set(this._queryHandlers, query.toString(), queryHandler);\n }\n queryHandler.attach(operation, keysCallback);\n }\n\n unsubscribe(query, operation) {\n const queryHandler = this._queryHandlers[query.toString()];\n if (queryHandler && !queryHandler.detach(operation)) {\n queryHandler.destroy();\n Vue.delete(this._queryHandlers, query.toString());\n }\n }\n\n // Return whether the node at path or any ancestors are coupled.\n isTrunkCoupled(path) {\n const segments = splitPath(path, true);\n let node;\n for (const segment of segments) {\n node = segment ? node.children && node.children[segment] : this._root;\n if (!node) return false;\n if (node.active) return true;\n }\n return false;\n }\n\n findCoupledDescendantPaths(path) {\n let node;\n for (const segment of splitPath(path, true)) {\n node = segment ? node.children && node.children[segment] : this._root;\n if (node && node.active) return {[path]: node.active};\n if (!node) break;\n }\n return node && node.collectCoupledDescendantPaths();\n }\n\n isSubtreeReady(path) {\n let node, childSegment;\n function extractChildSegment(match) {\n childSegment = match.slice(1);\n return '';\n }\n while (!(node = this._nodeIndex[path])) {\n path = path.replace(/\\/[^/]*$/, extractChildSegment) || '/';\n }\n if (childSegment) void node.children; // state an interest in the closest ancestor's children\n while (node) {\n if (node.ready) return true;\n node = node.parent;\n }\n return false;\n }\n\n isQueryReady(query) {\n const queryHandler = this._queryHandlers[query.toString()];\n return queryHandler && queryHandler.ready;\n }\n\n _queueSnapshotCallback(callback) {\n this._pendingSnapshotCallbacks.push(callback);\n this._throttled.processPendingSnapshots.call(this);\n }\n\n _processPendingSnapshots() {\n for (const callback of this._pendingSnapshotCallbacks) callback();\n // Property is frozen, so we need to splice to empty the array.\n this._pendingSnapshotCallbacks.splice(0, Infinity);\n }\n\n throttleSnapshots(delay) {\n if (delay) {\n this._throttled.processPendingSnapshots =\n _.debounce(_.throttle(this._processPendingSnapshots, delay));\n } else {\n this._throttled.processPendingSnapshots = this._processPendingSnapshots;\n }\n }\n}\n\n","import angular from './angularCompatibility.js';\nimport Coupler from './Coupler.js';\nimport Modeler from './Modeler.js';\nimport Reference from './Reference.js';\nimport {escapeKey, escapeKeys, unescapeKey, joinPath, splitPath} from './utils/paths.js';\nimport {wrapPromiseCallback, promiseFinally} from './utils/promises.js';\nimport {SERVER_TIMESTAMP} from './utils/utils.js';\n\nimport _ from 'lodash';\nimport Vue from 'vue';\n\n\nclass Transaction {\n constructor(ref) {\n this._ref = ref;\n this._outcome = undefined;\n this._values = undefined;\n }\n\n get currentValue() {return this._ref.value;}\n get outcome() {return this._outcome;}\n get values() {return this._values;}\n\n _setOutcome(value) {\n if (this._outcome) throw new Error('Transaction already resolved with ' + this._outcome);\n this._outcome = value;\n }\n\n abort() {\n this._setOutcome('abort');\n }\n\n cancel() {\n this._setOutcome('cancel');\n }\n\n set(value) {\n if (value === undefined) throw new Error('Invalid argument: undefined');\n this._setOutcome('set');\n this._values = {'': value};\n }\n\n update(values) {\n if (values === undefined) throw new Error('Invalid argument: undefined');\n if (_.isEmpty(values)) return this.cancel();\n this._setOutcome('update');\n this._values = values;\n }\n}\n\n\nexport default class Tree {\n constructor(truss, rootUrl, bridge, dispatcher) {\n this._truss = truss;\n this._url = new URL(rootUrl);\n this._bridge = bridge;\n this._dispatcher = dispatcher;\n this._firebasePropertyEditAllowed = false;\n this._writeSerial = 0;\n this._localWrites = {};\n this._localWriteTimestamp = null;\n this._initialized = false;\n this._vue = new Vue({data: {$root: undefined}});\n this._modeler = new Modeler(this._vue, truss.constructor.VERSION === 'dev');\n this._coupler = new Coupler(\n rootUrl, bridge, dispatcher, this._integrateSnapshot.bind(this), this._prune.bind(this));\n Object.seal(this);\n // Call this.init(classes) to complete initialization; we need two phases so that truss can bind\n // the tree into its own accessors prior to defining computed functions, which may try to\n // access the tree root via truss.\n }\n\n get root() {\n if (!this._vue.$data.$root) {\n this._vue.$data.$root = this._createObject('/');\n this._fixObject(this._vue.$data.$root);\n this._completeCreateObject(this._vue.$data.$root);\n angular.digest();\n }\n return this._vue.$data.$root;\n }\n\n get truss() {\n return this._truss;\n }\n\n init(classes) {\n if (this._initialized) {\n throw new Error('Data objects already created, too late to mount classes');\n }\n this._initialized = true;\n this._modeler.init(classes, !this._vue.$data.$root);\n const createdObjects = [];\n this._plantPlaceholders(this.root, '/', undefined, createdObjects);\n for (const object of createdObjects) this._completeCreateObject(object);\n }\n\n destroy() {\n this._coupler.destroy();\n if (this._modeler) this._modeler.destroy();\n this._vue.$destroy();\n }\n\n connectReference(ref, method) {\n this._checkHandle(ref);\n const operation = this._dispatcher.createOperation('read', method, ref);\n let unwatch;\n operation._disconnect = this._disconnectReference.bind(this, ref, operation, unwatch);\n this._dispatcher.begin(operation).then(() => {\n if (operation.running && !operation._disconnected) {\n this._coupler.couple(ref.path, operation);\n operation._coupled = true;\n }\n }).catch(_.noop); // ignore exception, let onFailure handlers deal with it\n return operation._disconnect;\n }\n\n _disconnectReference(ref, operation, unwatch, error) {\n if (operation._disconnected) return;\n operation._disconnected = true;\n if (unwatch) unwatch();\n if (operation._coupled) {\n this._coupler.decouple(ref.path, operation); // will call back to _prune if necessary\n operation._coupled = false;\n }\n this._dispatcher.end(operation, error).catch(_.noop);\n }\n\n isReferenceReady(ref) {\n this._checkHandle(ref);\n return this._coupler.isSubtreeReady(ref.path);\n }\n\n connectQuery(query, keysCallback, method) {\n this._checkHandle(query);\n const operation = this._dispatcher.createOperation('read', method, query);\n operation._disconnect = this._disconnectQuery.bind(this, query, operation);\n this._dispatcher.begin(operation).then(() => {\n if (operation.running && !operation._disconnected) {\n this._coupler.subscribe(query, operation, keysCallback);\n operation._coupled = true;\n }\n }).catch(_.noop); // ignore exception, let onFailure handlers deal with it\n return operation._disconnect;\n }\n\n _disconnectQuery(query, operation, error) {\n if (operation._disconnected) return;\n operation._disconnected = true;\n if (operation._coupled) {\n this._coupler.unsubscribe(query, operation); // will call back to _prune if necessary\n operation._coupled = false;\n }\n this._dispatcher.end(operation, error).catch(_.noop);\n }\n\n isQueryReady(query) {\n return this._coupler.isQueryReady(query);\n }\n\n _checkHandle(handle) {\n if (!handle.belongsTo(this._truss)) {\n throw new Error('Reference belongs to another Truss instance');\n }\n }\n\n throttleRemoteDataUpdates(delay) {\n this._coupler.throttleSnapshots(delay);\n }\n\n update(ref, method, values) {\n values = _.mapValues(values, value => escapeKeys(value));\n const numValues = _.size(values);\n if (!numValues) return Promise.resolve();\n if (method === 'update' || method === 'override') {\n checkUpdateHasOnlyDescendantsWithNoOverlap(ref.path, values);\n }\n if (this._applyLocalWrite(values, method === 'override')) return Promise.resolve();\n const pathPrefix = extractCommonPathPrefix(values);\n relativizePaths(pathPrefix, values);\n if (pathPrefix !== ref.path) ref = new Reference(ref._tree, pathPrefix, ref._annotations);\n this._url.pathname = encodeURI(pathPrefix);\n const url = this._url.toString();\n const writeSerial = this._writeSerial;\n const set = numValues === 1;\n const operand = set ? values[''] : values;\n return this._dispatcher.execute('write', set ? 'set' : 'update', ref, operand, () => {\n const promise = this._bridge[set ? 'set' : 'update'](url, operand, writeSerial);\n return promise.catch(e => {\n if (!e.immediateFailure) return Promise.reject(e);\n return promiseFinally(this._repair(ref, values), () => Promise.reject(e));\n });\n });\n }\n\n commit(ref, updateFunction) {\n let tries = 0, sameValueCount = 0;\n const attemptCounts = {};\n updateFunction = wrapPromiseCallback(updateFunction);\n\n const attemptTransaction = counter => {\n if (tries++ >= 25) {\n const error = new Error('Transaction needed too many retries, giving up');\n try {\n _.assign(error, {attemptCounts, sameValueCount});\n } catch {\n // ignore\n }\n return Promise.reject(error);\n }\n counter = counter || 'initial';\n attemptCounts[counter] = (attemptCounts[counter] || 0) + 1;\n const txn = new Transaction(ref);\n let oldValue;\n // Ensure that Vue's watcher queue gets emptied and computed properties are up to date before\n // running the updateFunction.\n return Vue.nextTick().then(() => {\n const newOldValue = toFirebaseJson(txn.currentValue);\n if (_.isEqual(newOldValue, oldValue)) sameValueCount += 1;\n oldValue = newOldValue;\n return updateFunction(txn);\n }).then(() => {\n if (!_.isEqual(oldValue, toFirebaseJson(txn.currentValue))) {\n return attemptTransaction('changed');\n }\n if (txn.outcome === 'abort') return txn; // early return to save time\n const values = _.mapValues(txn.values, value => escapeKeys(value));\n switch (txn.outcome) {\n case 'cancel':\n break;\n case 'set':\n if (this._applyLocalWrite({[ref.path]: values['']})) return Promise.resolve();\n break;\n case 'update':\n checkUpdateHasOnlyDescendantsWithNoOverlap(ref.path, values);\n if (this._applyLocalWrite(values)) return Promise.resolve();\n relativizePaths(ref.path, values);\n break;\n default:\n throw new Error('Invalid transaction outcome: ' + (txn.outcome || 'none'));\n }\n this._url.pathname = encodeURI(ref.path);\n return this._bridge.transaction(\n this._url.toString(), oldValue, values, this._writeSerial\n ).then(result => {\n _.forEach(result.snapshots, snapshot => this._integrateSnapshot(snapshot));\n return result.committed ? txn : attemptTransaction('stale');\n }, e => {\n if (e.immediateFailure && (txn.outcome === 'set' || txn.outcome === 'update')) {\n return promiseFinally(this._repair(ref, values), () => Promise.reject(e));\n }\n return Promise.reject(e);\n });\n });\n };\n\n return this._truss.peek(ref, () => {\n return this._dispatcher.execute('write', 'commit', ref, undefined, attemptTransaction);\n });\n }\n\n _repair(ref, values) {\n // If a write fails early -- that is, before it gets applied to the Firebase client's local\n // tree -- then we need to repair our own local tree manually since Firebase won't send events\n // to unwind the change. This should be very rare since it's always due to a developer mistake\n // so we don't need to be particularly efficient.\n const basePath = ref.path;\n const paths = _(values).keys().flatMap(key => {\n let path = basePath;\n if (key) path = joinPath(path, key);\n return _.keys(this._coupler.findCoupledDescendantPaths(path));\n }).value();\n return Promise.all(_.map(paths, path => {\n this._url.pathname = encodeURI(path);\n return this._bridge.once(this._url.toString()).then(snap => {\n this._integrateSnapshot(snap);\n });\n }));\n }\n\n _applyLocalWrite(values, override) {\n // TODO: correctly apply local writes that impact queries. Currently, a local write will update\n // any objects currently selected by a query, but won't add or remove results.\n this._writeSerial++;\n this._localWriteTimestamp = this._truss.now;\n const createdObjects = [];\n let numLocal = 0;\n _.forEach(values, (value, path) => {\n const local = this._modeler.isLocal(path, value);\n if (local) numLocal++;\n const coupledDescendantPaths =\n local ? {[path]: true} : this._coupler.findCoupledDescendantPaths(path);\n if (_.isEmpty(coupledDescendantPaths)) return;\n const offset = (path === '/' ? 0 : path.length) + 1;\n for (const descendantPath in coupledDescendantPaths) {\n const subPath = descendantPath.slice(offset);\n let subValue = value;\n if (subPath && value !== null && value !== undefined) {\n for (const segment of splitPath(subPath)) {\n subValue = subValue.$data[segment];\n if (subValue === undefined) break;\n }\n }\n if (_.isNil(subValue)) {\n this._prune(descendantPath);\n } else {\n const key = _.last(splitPath(descendantPath));\n this._plantValue(\n descendantPath, key, subValue,\n this._scaffoldAncestors(descendantPath, false, createdObjects), false, override, local,\n createdObjects\n );\n }\n if (!override && !local) this._localWrites[descendantPath] = this._writeSerial;\n }\n });\n for (const object of createdObjects) this._completeCreateObject(object);\n if (numLocal && numLocal < _.size(values)) {\n throw new Error('Write on a mix of local and remote tree paths.');\n }\n return override || !!numLocal;\n }\n\n /**\n * Creates a Truss object and sets all its basic properties: path segment variables, user-defined\n * properties, and computed properties. The latter two will be enumerable so that Vue will pick\n * them up and make the reactive, so you should call _completeCreateObject once it's done so and\n * before any Firebase properties are added.\n */\n _createObject(path, parent) {\n if (!this._initialized && path !== '/') this.init();\n const properties = {\n // We want Vue to wrap this; we'll make it non-enumerable in _fixObject.\n $parent: {value: parent, configurable: true, enumerable: true},\n $path: {value: path}\n };\n if (path === '/') properties.$truss = {value: this._truss};\n\n const object = this._modeler.createObject(path, properties);\n this._modeler.emitLifecycleHook(object, 'beforeCreate');\n Object.defineProperties(object, properties);\n return object;\n }\n\n // To be called on the result of _createObject after it's been inserted into the _vue hierarchy\n // and Vue has had a chance to initialize it.\n _fixObject(object) {\n for (const name of Object.getOwnPropertyNames(object)) {\n const descriptor = Object.getOwnPropertyDescriptor(object, name);\n if (descriptor.configurable && descriptor.enumerable) {\n descriptor.enumerable = false;\n if (_.startsWith(name, '$')) descriptor.configurable = false;\n Object.defineProperty(object, name, descriptor);\n }\n }\n }\n\n // To be called on the result of _createObject after _fixObject, and after any additional Firebase\n // properties have been set, to run initializers.\n _completeCreateObject(object) {\n this._modeler.emitLifecycleHook(object, 'created');\n }\n\n _destroyObject(object) {\n if (!(object && object.$truss) || object.$destroyed) return;\n this._modeler.emitLifecycleHook(object, 'beforeDestroy');\n this._modeler.destroyObject(object);\n // Normally we'd only destroy enumerable children, which are the Firebase properties. However,\n // clients have the option of creating hidden placeholders, so we need to scan non-enumerable\n // properties as well. To distinguish such placeholders from the myriad other non-enumerable\n // properties (that lead all over tree, e.g. $parent), we check that the property's parent is\n // ourselves before destroying.\n for (const key of Object.getOwnPropertyNames(object.$data)) {\n const child = object.$data[key];\n if (child && child.$parent === object) this._destroyObject(child);\n }\n this._modeler.emitLifecycleHook(object, 'destroyed');\n }\n\n _integrateSnapshot(snap) {\n _.forEach(this._localWrites, (writeSerial, path) => {\n if (snap.writeSerial >= writeSerial) delete this._localWrites[path];\n });\n if (snap.exists) {\n const createdObjects = [];\n const parent = this._scaffoldAncestors(snap.path, true, createdObjects);\n if (parent) {\n this._plantValue(\n snap.path, snap.key, snap.value, parent, true, false, false, createdObjects);\n }\n for (const object of createdObjects) this._completeCreateObject(object);\n } else {\n this._prune(snap.path, null, true);\n }\n }\n\n _scaffoldAncestors(path, remoteWrite, createdObjects) {\n let object;\n const segments = _.dropRight(splitPath(path, true));\n let ancestorPath = '/';\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const key = unescapeKey(segment);\n let child = segment ? object.$data[key] : this.root;\n if (segment) ancestorPath += (ancestorPath === '/' ? '' : '/') + segment;\n if (child) {\n if (remoteWrite && this._localWrites[ancestorPath]) return;\n } else {\n child = this._plantValue(\n ancestorPath, key, {}, object, remoteWrite, false, false, createdObjects);\n if (!child) return;\n }\n object = child;\n }\n return object;\n }\n\n _plantValue(path, key, value, parent, remoteWrite, override, local, createdObjects) {\n if (remoteWrite && _.isNil(value)) {\n throw new Error(`Snapshot includes invalid value at ${path}: ${value}`);\n }\n if (remoteWrite && this._localWrites[path || '/']) return;\n if (_.isEqual(value, SERVER_TIMESTAMP)) value = this._localWriteTimestamp;\n let object = parent.$data[key];\n if (!_.isArray(value) && !(local ? _.isPlainObject(value) : _.isObject(value))) {\n this._destroyObject(object);\n if (!local && _.isNil(value)) {\n this._deleteFirebaseProperty(parent, key);\n } else {\n this._setFirebaseProperty(parent, key, value);\n }\n return;\n }\n let objectCreated = false;\n if (!_.isObject(object)) {\n // Need to pre-set the property, so that if the child object attempts to watch any of its own\n // properties while being created the $$touchThis method has something to add a dependency on\n // as the object's own properties won't be made reactive until *after* it's been created.\n this._setFirebaseProperty(parent, key, null);\n object = this._createObject(path, parent);\n this._setFirebaseProperty(parent, key, object, object.$hidden);\n this._fixObject(object);\n createdObjects.push(object);\n objectCreated = true;\n }\n if (override) {\n Object.defineProperty(object, '$overridden', {get: _.constant(true), configurable: true});\n } else if (object.$overridden) {\n delete object.$overridden;\n }\n // Plant hidden placeholders first, so their computed watchers will have a similar precedence to\n // the parent object, and the parent object's other children will get computed first. This can\n // optimize updates when parts of a complex model are broken out into hidden sub-models, and\n // shouldn't risk being overwritten by actual Firebase data since that will rarely (never?) be\n // hidden.\n if (objectCreated) this._plantPlaceholders(object, path, true, createdObjects);\n _.forEach(value, (item, escapedChildKey) => {\n this._plantValue(\n joinPath(path, escapedChildKey), unescapeKey(escapedChildKey), item, object, remoteWrite,\n override, local, createdObjects\n );\n });\n if (objectCreated) {\n this._plantPlaceholders(object, path, false, createdObjects);\n } else {\n _.forEach(object.$data, (item, childKey) => {\n const escapedChildKey = escapeKey(childKey);\n if (!Object.hasOwn(value, escapedChildKey)) {\n this._prune(joinPath(path, escapedChildKey), null, remoteWrite);\n }\n });\n }\n return object;\n }\n\n _plantPlaceholders(object, path, hidden, createdObjects) {\n this._modeler.forEachPlaceholderChild(path, mount => {\n if (hidden !== undefined && hidden !== !!mount.hidden) return;\n const key = unescapeKey(mount.escapedKey);\n if (!Object.hasOwn(object.$data, key)) {\n this._plantValue(\n joinPath(path, mount.escapedKey), key, mount.placeholder, object, false, false, false,\n createdObjects);\n }\n });\n }\n\n _prune(path, lockedDescendantPaths, remoteWrite) {\n lockedDescendantPaths = lockedDescendantPaths || {};\n const object = this.getObject(path);\n if (object === undefined) return;\n if (remoteWrite && this._avoidLocalWritePaths(path, lockedDescendantPaths)) return;\n if (!(_.isEmpty(lockedDescendantPaths) && this._pruneAncestors(path, object)) &&\n _.isObject(object)) {\n // The target object is a placeholder, and all ancestors are placeholders or otherwise needed\n // as well, so we can't delete it. Instead, dive into its descendants to delete what we can.\n this._pruneDescendants(object, lockedDescendantPaths);\n }\n }\n\n _avoidLocalWritePaths(path, lockedDescendantPaths) {\n for (const localWritePath in this._localWrites) {\n if (!Object.hasOwn(this._localWrites, localWritePath)) continue;\n if (path === localWritePath || localWritePath === '/' ||\n _.startsWith(path, localWritePath + '/')) return true;\n if (path === '/' || _.startsWith(localWritePath, path + '/')) {\n const segments = splitPath(localWritePath, true);\n for (let i = segments.length; i > 0; i--) {\n const subPath = segments.slice(0, i).join('/');\n const active = i === segments.length;\n if (lockedDescendantPaths[subPath] || lockedDescendantPaths[subPath] === active) break;\n lockedDescendantPaths[subPath] = active;\n if (subPath === path) break;\n }\n }\n }\n }\n\n _pruneAncestors(targetPath, targetObject) {\n // Destroy the child (unless it's a placeholder that's still needed) and any ancestors that\n // are no longer needed to keep this child rooted, and have no other reason to exist.\n let deleted = false;\n let object = targetObject;\n // The target object may be a primitive, in which case it won't have $path, $parent and $key\n // properties. In that case, use the target path to figure those out instead. Note that all\n // ancestors of the target object will necessarily not be primitives and will have those\n // properties.\n let targetKey;\n const targetParentPath = targetPath.replace(/\\/[^/]+$/, match => {\n targetKey = unescapeKey(match.slice(1));\n return '';\n });\n while (object !== undefined && object !== this.root) {\n const parent =\n object && object.$parent || object === targetObject && this.getObject(targetParentPath);\n if (!this._modeler.isPlaceholder(object && object.$path || targetPath)) {\n const ghostObjects = deleted ? null : [targetObject];\n if (!this._holdsConcreteData(object, ghostObjects)) {\n deleted = true;\n this._deleteFirebaseProperty(\n parent, object && object.$key || object === targetObject && targetKey);\n }\n }\n object = parent;\n }\n return deleted;\n }\n\n _holdsConcreteData(object, ghostObjects) {\n if (_.isNil(object)) return false;\n if (ghostObjects && _.includes(ghostObjects, object)) return false;\n if (!_.isObject(object) || !object.$truss) return true;\n return _.some(object.$data, value => this._holdsConcreteData(value, ghostObjects));\n }\n\n _pruneDescendants(object, lockedDescendantPaths) {\n if (lockedDescendantPaths[object.$path]) return true;\n if (object.$overridden) delete object.$overridden;\n let coupledDescendantFound = false;\n _.forEach(object.$data, (value, key) => {\n let shouldDelete = true;\n let valueLocked;\n if (lockedDescendantPaths[joinPath(object.$path, escapeKey(key))]) {\n shouldDelete = false;\n valueLocked = true;\n } else if (!_.isNil(value) && value.$truss) {\n const placeholder = this._modeler.isPlaceholder(value.$path);\n if (placeholder || _.has(lockedDescendantPaths, value.$path)) {\n valueLocked = this._pruneDescendants(value, lockedDescendantPaths);\n shouldDelete = !placeholder && !valueLocked;\n }\n }\n if (shouldDelete) this._deleteFirebaseProperty(object, key);\n coupledDescendantFound = coupledDescendantFound || valueLocked;\n });\n return coupledDescendantFound;\n }\n\n getObject(path) {\n const segments = splitPath(path);\n let object;\n for (const segment of segments) {\n object = segment ? object.$data[segment] : this.root;\n if (object === undefined) return;\n }\n return object;\n }\n\n _getFirebasePropertyDescriptor(object, data, key) {\n const descriptor = Object.getOwnPropertyDescriptor(data, key);\n if (descriptor) {\n if (!descriptor.enumerable) {\n const child = data[key];\n if (!child || child.$parent !== object) {\n throw new Error(\n `Key conflict between Firebase and instance or computed properties at ` +\n `${object.$path}: ${key}`);\n }\n }\n if (!descriptor.get || !descriptor.set) {\n throw new Error(`Unbound property at ${object.$path}: ${key}`);\n }\n } else if (key in data) {\n throw new Error(\n `Key conflict between Firebase and inherited property at ${object.$path}: ${key}`);\n }\n return descriptor;\n }\n\n _setFirebaseProperty(object, key, value, hidden) {\n const data = Object.hasOwn(object, '$data') ? object.$data : object;\n let descriptor = this._getFirebasePropertyDescriptor(object, data, key);\n if (descriptor) {\n if (hidden) {\n // Redefine property as hidden after it's been created, since we usually don't know whether\n // it should be hidden until too late. This is a one-way deal -- you can't unhide a\n // property later, but that's fine for our purposes.\n Object.defineProperty(data, key, {\n get: descriptor.get, set: descriptor.set, configurable: true, enumerable: false\n });\n }\n if (data[key] === value) return;\n this._firebasePropertyEditAllowed = true;\n data[key] = value;\n this._firebasePropertyEditAllowed = false;\n } else {\n Vue.set(data, key, value);\n descriptor = Object.getOwnPropertyDescriptor(data, key);\n Object.defineProperty(data, key, {\n get: descriptor.get, set: this._overwriteFirebaseProperty.bind(this, descriptor, key),\n configurable: true, enumerable: !hidden\n });\n }\n angular.digest();\n }\n\n _overwriteFirebaseProperty(descriptor, key, newValue) {\n if (!this._firebasePropertyEditAllowed) {\n const e = new Error(`Firebase data cannot be mutated directly: ${key}`);\n e.trussCode = 'firebase_overwrite';\n throw e;\n }\n descriptor.set.call(this, newValue);\n }\n\n _deleteFirebaseProperty(object, key) {\n const data = Object.hasOwn(object, '$data') ? object.$data : object;\n // Make sure it's actually a Firebase property.\n this._getFirebasePropertyDescriptor(object, data, key);\n this._destroyObject(data[key]);\n Vue.delete(data, key);\n angular.digest();\n }\n\n checkVueObject(object, path) {\n this._modeler.checkVueObject(object, path);\n }\n}\n\n\nexport function checkUpdateHasOnlyDescendantsWithNoOverlap(rootPath, values) {\n // First, check all paths for correctness and absolutize them, since there could be a mix of\n // absolute paths and relative keys.\n _.forEach(_.keys(values), path => {\n if (path.charAt(0) === '/') {\n if (!(path === rootPath || rootPath === '/' ||\n _.startsWith(path, rootPath + '/') && path.length > rootPath.length + 1)) {\n throw new Error(`Update item is not a descendant of target ref: ${path}`);\n }\n } else {\n if (_.includes(path, '/')) {\n throw new Error(`Update item deep path must be absolute, taken from a reference: ${path}`);\n }\n const absolutePath = joinPath(rootPath, escapeKey(path));\n if (Object.hasOwn(values, absolutePath)) {\n throw new Error(`Update items overlap: ${path} and ${absolutePath}`);\n }\n values[absolutePath] = values[path];\n delete values[path];\n }\n });\n // Then check for overlaps;\n const allPaths = _(values).keys().map(path => joinPath(path, '')).sortBy('length').value();\n _.forEach(values, (value, path) => {\n for (const otherPath of allPaths) {\n if (otherPath.length > path.length) break;\n if (path !== otherPath && _.startsWith(path, otherPath)) {\n throw new Error(`Update items overlap: ${otherPath} and ${path}`);\n }\n }\n });\n}\n\nexport function extractCommonPathPrefix(values) {\n let prefixSegments;\n _.forEach(values, (value, path) => {\n const segments = path === '/' ? [''] : splitPath(path, true);\n if (prefixSegments) {\n let firstMismatchIndex = 0;\n const maxIndex = Math.min(prefixSegments.length, segments.length);\n while (firstMismatchIndex < maxIndex &&\n prefixSegments[firstMismatchIndex] === segments[firstMismatchIndex]) {\n firstMismatchIndex++;\n }\n prefixSegments = prefixSegments.slice(0, firstMismatchIndex);\n if (!prefixSegments.length) return false;\n } else {\n prefixSegments = segments;\n }\n });\n return prefixSegments.length === 1 ? '/' : prefixSegments.join('/');\n}\n\nexport function relativizePaths(rootPath, values) {\n const offset = rootPath === '/' ? 1 : rootPath.length + 1;\n _.forEach(_.keys(values), path => {\n values[path.slice(offset)] = values[path];\n delete values[path];\n });\n}\n\nexport function toFirebaseJson(object) {\n if (!_.isObject(object)) return object;\n const result = {};\n const data = object.$data;\n for (const key in data) {\n if (Object.hasOwn(data, key)) result[escapeKey(key)] = toFirebaseJson(data[key]);\n }\n return result;\n}\n\n","import _ from 'lodash';\nimport Vue from 'vue';\nimport angular from './angularCompatibility.js';\nimport Bridge from './Bridge.js';\nimport Connector from './Connector.js';\nimport Dispatcher from './Dispatcher.js';\nimport KeyGenerator from './KeyGenerator.js';\nimport MetaTree from './MetaTree.js';\nimport {Handle} from './Reference.js';\nimport {BaseValue} from './Modeler.js';\nimport Tree from './Tree.js';\nimport stats from './utils/stats.js';\nimport {escapeKey, unescapeKey} from './utils/paths.js';\nimport {wrapPromiseCallback, promiseCancel, promiseFinally} from './utils/promises.js';\nimport {SERVER_TIMESTAMP, copyPrototype} from './utils/utils.js';\n\n\nlet bridge, logging;\nconst workerFunctions = {};\n// This version is filled in by the build, don't reformat the line.\nconst VERSION = 'dev';\n\n\nexport default class Truss {\n\n /**\n * Create a new Truss instance, specific to a given datastore. To avoid confusion there should be\n * exactly one Truss per root datastore URL, so in most code this will be a singleton.\n *\n * @param rootUrl {String} The root URL, https://{project}.firebaseio.com.\n */\n constructor(rootUrl) {\n // TODO: allow rootUrl to be a test database object for testing\n if (!bridge) {\n throw new Error('Truss worker not connected, please call Truss.connectWorker first');\n }\n this._rootUrl = rootUrl.replace(/\\/$/, '');\n this._keyGenerator = new KeyGenerator();\n this._dispatcher = new Dispatcher(bridge);\n this._vue = new Vue();\n\n bridge.trackServer(this._rootUrl);\n this._tree = new Tree(this, this._rootUrl, bridge, this._dispatcher);\n this._metaTree = new MetaTree(this._rootUrl, this._tree, bridge, this._dispatcher);\n\n Object.freeze(this);\n }\n\n get info() {return this._metaTree.root;}\n get store() {return this._tree.root;}\n\n /**\n * Mount a set of classes against the datastore structure. Must be called at most once, and\n * cannot be called once any data has been loaded into the tree.\n * @param classes {Array | Object} A list of the classes to map onto the\n * datastore structure. Each class must have a static $trussMount property that is a\n * (wildcarded) unescaped datastore path, or an options object\n * {path: string, placeholder: object}, or an array of either. If the list is an object then\n * the keys serve as default option-less $trussMount paths for classes that don't define an\n * explicit $trussMount.\n */\n mount(classes) {\n this._tree.init(classes);\n }\n\n destroy() {\n this._vue.$destroy();\n this._tree.destroy();\n this._metaTree.destroy();\n }\n\n get now() {return Date.now() + this.info.timeOffset;}\n newKey() {return this._keyGenerator.generateUniqueKey(this.now);}\n\n authenticate(token) {\n return this._metaTree.authenticate(token);\n }\n\n unauthenticate() {\n return this._metaTree.unauthenticate();\n }\n\n intercept(actionType, callbacks) {\n return this._dispatcher.intercept(actionType, callbacks);\n }\n\n // connections are {key: Query | Object | fn() -> (Query | Object)}\n connect(scope, connections) {\n if (!connections) {\n connections = scope;\n scope = undefined;\n }\n if (connections instanceof Handle || _.isFunction(connections)) connections = {_: connections};\n return new Connector(scope, connections, this._tree, 'connect');\n }\n\n // target is Reference, Query, or connection Object like above\n peek(target, callback) {\n callback = wrapPromiseCallback(callback || _.identity);\n let cleanup, cancel;\n const promise = Promise.resolve().then(() => new Promise((resolve, reject) => {\n const scope = {};\n let callbackPromise;\n\n let connector = new Connector(scope, {result: target}, this._tree, 'peek');\n\n let unintercept = this.intercept('peek', {onFailure: op => {\n function match(descriptor) {\n if (!descriptor) return;\n if (descriptor instanceof Handle) return op.target.isEqual(descriptor);\n return _.some(descriptor, value => match(value));\n }\n if (match(connector.at)) {\n reject(op.error);\n cleanup();\n }\n }});\n\n let unobserve = this.observe(() => connector.ready, ready => {\n if (!ready) return;\n unobserve();\n unobserve = null;\n callbackPromise = promiseFinally(\n callback(scope.result), () => {angular.digest(); callbackPromise = null; cleanup();}\n ).then(result => {resolve(result);}, error => {reject(error);});\n });\n\n cleanup = () => {\n if (unobserve) {unobserve(); unobserve = null;}\n if (unintercept) {unintercept(); unintercept = null;}\n if (connector) {connector.destroy(); connector = null;}\n if (callbackPromise && callbackPromise.cancel) callbackPromise.cancel();\n };\n\n cancel = () => {\n reject(new Error('Canceled'));\n cleanup();\n };\n }));\n return promiseCancel(promise, cancel);\n }\n\n observe(subjectFn, callbackFn, options) {\n const usePreciseDefaults = _.isObject(options && options.precise);\n let numCallbacks = 0;\n let oldValueClone;\n if (usePreciseDefaults) {\n oldValueClone = options.deep ? _.cloneDeep(options.precise) : _.clone(options.precise);\n }\n\n // This needs to be a `let` instead of a `const` to avoid a \"Cannot access before\n // initialization\" error.\n let unwatch;\n // eslint-disable-next-line prefer-const\n unwatch = this._vue.$watch(subjectFn, (newValue, oldValue) => {\n if (options && options.precise) {\n const newValueClone = usePreciseDefaults ?\n (options.deep ?\n _.defaultsDeep({}, newValue, options.precise) :\n _.defaults({}, newValue, options.precise)) :\n (options.deep ? _.cloneDeep(newValue) : _.clone(newValue));\n if (_.isEqual(newValueClone, oldValueClone)) return;\n oldValueClone = newValueClone;\n }\n numCallbacks++;\n if (unwatch || options && options.immediate) {\n callbackFn(newValue, oldValue);\n angular.digest();\n } else {\n // Delay the immediate callback until we've had a chance to return the unwatch function.\n Promise.resolve().then(() => {\n const vm = options && options.vm;\n if (numCallbacks > 1 || (vm && vm.$destroyed)) return;\n callbackFn(newValue, oldValue);\n // No need to digest since under Angular we'll be using $q as Promise.\n });\n }\n }, {immediate: true, deep: options && options.deep});\n\n if (options && options.scope) options.scope.$on('$destroy', unwatch);\n return unwatch;\n }\n\n when(expression, options) {\n let cleanup, timeoutHandle;\n let promise = new Promise((resolve, reject) => {\n let unobserve = this.observe(expression, value => {\n if (!value) return;\n // Wait for computed properties to settle and double-check.\n Vue.nextTick(() => {\n value = expression();\n if (!value) return;\n resolve(value);\n cleanup();\n });\n });\n if (_.has(options, 'timeout')) {\n timeoutHandle = setTimeout(() => {\n timeoutHandle = null;\n reject(new Error(options.timeoutMessage || 'Timeout'));\n cleanup();\n }, options.timeout);\n }\n cleanup = () => {\n if (unobserve) {unobserve(); unobserve = null;}\n if (timeoutHandle) {clearTimeout(timeoutHandle); timeoutHandle = null;}\n reject(new Error('Canceled'));\n };\n });\n promise = promiseCancel(promiseFinally(promise, cleanup), cleanup);\n if (options && options.scope) options.scope.$on('$destroy', () => {promise.cancel();});\n return promise;\n }\n\n nextTick() {\n let cleanup;\n let promise = new Promise((resolve, reject) => {\n Vue.nextTick(resolve);\n cleanup = () => {\n reject(new Error('Canceled'));\n };\n });\n promise = promiseCancel(promise, cleanup);\n return promise;\n }\n\n throttleRemoteDataUpdates(delay) {\n this._tree.throttleRemoteDataUpdates(delay);\n }\n\n checkObjectsForRogueProperties() {\n this._tree.checkVueObject(this._tree.root, '/');\n }\n\n static get computedPropertyStats() {\n return stats;\n }\n\n static async connectWorker(webWorker, config) {\n if (bridge) throw new Error('Worker already connected');\n if (_.isString(webWorker)) {\n const Worker = window.SharedWorker || window.Worker;\n if (!Worker) throw new Error('Browser does not implement Web Workers');\n if (!navigator.locks) throw new Error('Browser does not implement locks');\n webWorker = new Worker(webWorker);\n const random = window.crypto.getRandomValues(new Uint32Array(1))[0];\n webWorker.lockName = `truss_worker_lock_${Date.now()}.${random}`;\n await new Promise((resolve, reject) => {\n navigator.locks.request(webWorker.lockName, () => {\n resolve();\n // eslint-disable-next-line lodash/prefer-noop\n return new Promise(() => {/* release lock only on page exit or crash */});\n }).catch(reject);\n });\n }\n bridge = new Bridge(webWorker);\n if (logging) bridge.enableLogging(logging);\n const {exposedFunctionNames, firebaseSdkVersion} =\n await bridge.init(webWorker.lockName, config);\n Object.defineProperty(Truss, 'FIREBASE_SDK_VERSION', {value: firebaseSdkVersion});\n for (const name of exposedFunctionNames) Truss.preExpose(name);\n }\n\n static get worker() {return workerFunctions;}\n\n static preExpose(functionName) {\n const segments = functionName.split('.');\n let obj = Truss.worker;\n for (const segment of segments.slice(0, -1)) {\n if (!Object.hasOwnProperty.call(obj, segment)) obj[segment] = {};\n obj = obj[segment];\n }\n obj[segments[segments.length - 1]] = bridge.bindExposedFunction(functionName);\n }\n\n static bounceConnection() {return bridge.bounceConnection();}\n static suspend() {return bridge.suspend();}\n static debugPermissionDeniedErrors(simulatedTokenGenerator, maxSimulationDuration, callFilter) {\n return bridge.debugPermissionDeniedErrors(\n simulatedTokenGenerator, maxSimulationDuration, callFilter);\n }\n\n static debounceAngularDigest(wait) {\n angular.debounceDigest(wait);\n }\n\n static escapeKey(key) {return escapeKey(key);}\n static unescapeKey(escapedKey) {return unescapeKey(escapedKey);}\n\n static enableLogging(fn) {\n logging = fn;\n if (bridge) bridge.enableLogging(fn);\n }\n\n // Duplicate static constants on instance for convenience.\n get SERVER_TIMESTAMP() {return Truss.SERVER_TIMESTAMP;}\n get VERSION() {return Truss.VERSION;}\n get FIREBASE_SDK_VERSION() {return Truss.FIREBASE_SDK_VERSION;}\n}\n\nObject.defineProperties(Truss, {\n SERVER_TIMESTAMP: {value: SERVER_TIMESTAMP},\n VERSION: {value: VERSION},\n Model: {value: Object},\n\n ComponentPlugin: {value: {\n install(Vue2, pluginOptions) {\n if (Vue !== Vue2) throw new Error('Multiple versions of Vue detected');\n if (!pluginOptions.truss) {\n throw new Error('Need to pass `truss` instance as an option to use the ComponentPlugin');\n }\n const prototypeExtension = {\n $truss: {value: pluginOptions.truss},\n $destroyed: {get() {return this._isBeingDestroyed || this._isDestroyed;}},\n $$touchThis: {value() {if (this.__ob__) this.__ob__.dep.depend();}}\n };\n const conflictingKeys = _(prototypeExtension).keys()\n .union(_.keys(BaseValue.prototype)).intersection(_.keys(Vue.prototype)).value();\n if (conflictingKeys.length) {\n throw new Error(\n 'Truss extension properties conflict with Vue properties: ' + conflictingKeys.join(', '));\n }\n Object.defineProperties(Vue.prototype, prototypeExtension);\n copyPrototype(BaseValue, Vue);\n }\n }}\n});\n\nangular.defineModule(Truss);\n"],"names":["_","Vue","angular"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"firetruss.umd.js","sources":["../src/angularCompatibility.js","../src/utils/LruCache.js","../src/utils/paths.js","../src/Bridge.js","../src/Reference.js","../src/utils/utils.js","../src/utils/stats.js","../src/Connector.js","../src/utils/promises.js","../src/Dispatcher.js","../src/KeyGenerator.js","../src/MetaTree.js","../src/Modeler.js","../src/Coupler.js","../src/Tree.js","../src/Truss.js"],"sourcesContent":["import _ from 'lodash';\nimport Vue from 'vue';\n\n\nlet vue;\nlet lastDigestRequest = 0, digestInProgress = false;\nconst bareDigest = function() {\n if (vue.digestRequest > lastDigestRequest) return;\n vue.digestRequest = lastDigestRequest + 1;\n};\n\nconst angularProxy = {\n active: typeof window !== 'undefined' && window.angular\n};\n\nif (angularProxy.active) {\n initAngular();\n} else {\n _.forEach(['digest', 'watch', 'defineModule', 'debounceDigest'], method => {\n angularProxy[method] = _.noop;\n });\n}\n\nfunction initAngular() {\n const module = window.angular.module('firetruss', []);\n angularProxy.digest = bareDigest;\n angularProxy.watch = function() {throw new Error('Angular watch proxy not yet initialized');};\n angularProxy.defineModule = function(Truss) {\n module.constant('Truss', Truss);\n };\n angularProxy.debounceDigest = function(wait) {\n if (wait) {\n const debouncedDigest = _.debounce(bareDigest, wait);\n angularProxy.digest = function() {\n if (vue.digestRequest > lastDigestRequest) return;\n if (digestInProgress) bareDigest(); else debouncedDigest();\n };\n } else {\n angularProxy.digest = bareDigest;\n }\n };\n\n module.config(['$provide', function($provide) {\n $provide.decorator('$rootScope', ['$delegate', '$exceptionHandler',\n function($delegate, $exceptionHandler) {\n const rootScope = $delegate;\n angularProxy.watch = rootScope.$watch.bind(rootScope);\n const proto = Object.getPrototypeOf(rootScope);\n const angularDigest = proto.$digest;\n proto.$digest = bareDigest;\n proto.$digest.original = angularDigest;\n vue = new Vue({data: {digestRequest: 0}});\n vue.$watch(() => vue.digestRequest, () => {\n if (vue.digestRequest > lastDigestRequest) {\n // Make sure we execute the digest outside the Vue task queue, because otherwise if the\n // client replaced Promise with angular.$q all Truss.nextTick().then() functions will be\n // executed inside the Angular digest and hence inside the Vue task queue. But\n // Truss.nextTick() is used precisely to avoid that. Note that it's OK to use\n // Vue.nextTick() here because even though it will schedule a flush via Promise.then()\n // it only uses the native Promise, before it could've been monkey-patched by the app.\n Vue.nextTick(() => {\n if (vue.digestRequest <= lastDigestRequest) return;\n digestInProgress = true;\n rootScope.$digest.original.call(rootScope);\n lastDigestRequest = vue.digestRequest = vue.digestRequest + 1;\n });\n } else {\n digestInProgress = false;\n }\n });\n const watcher = _.last(vue._watchers || vue._scope.effects);\n watcher.id = Infinity; // make sure watcher is scheduled last\n patchRenderWatcherGet(Object.getPrototypeOf(watcher));\n return rootScope;\n }\n ]);\n }]);\n}\n\n// This is a kludge that catches errors that get through render watchers and end up killing the\n// entire Vue event loop (e.g., errors raised in transition callbacks). The state of the DOM may\n// not be consistent after such an error is caught, but the global error handler should stop the\n// world anyway. May be related to https://github.com/vuejs/vue/issues/7653.\nfunction patchRenderWatcherGet(prototype) {\n const originalGet = prototype.get;\n prototype.get = function get() {\n try {\n return originalGet.call(this);\n } catch (e) {\n if (this.vm._watcher === this && Vue.config.errorHandler) {\n Vue.config.errorHandler(e, this.vm, 'uncaught render error');\n } else {\n throw e;\n }\n }\n };\n}\n\nexport default angularProxy;\n","import _ from 'lodash';\n\n\nclass LruCacheItem {\n constructor(key, value) {\n this.key = key;\n this.value = value;\n this.touch();\n }\n\n touch() {\n this.timestamp = Date.now();\n }\n}\n\n\nexport default class LruCache {\n constructor(maxSize, pruningSize) {\n this._items = Object.create(null);\n this._size = 0;\n this._maxSize = maxSize;\n this._pruningSize = pruningSize || Math.ceil(maxSize * 0.10);\n }\n\n has(key) {\n return Boolean(this._items[key]);\n }\n\n get(key) {\n const item = this._items[key];\n if (!item) return;\n item.touch();\n return item.value;\n }\n\n set(key, value) {\n const item = this._items[key];\n if (item) {\n item.value = value;\n } else {\n if (this._size >= this._maxSize) this._prune();\n this._items[key] = new LruCacheItem(key, value);\n this._size += 1;\n }\n }\n\n delete(key) {\n const item = this._items[key];\n if (!item) return;\n delete this._items[key];\n this._size -= 1;\n }\n\n _prune() {\n const itemsToPrune =\n _(this._items).toArray().sortBy('timestamp').take(this._pruningSize).value();\n for (const item of itemsToPrune) this.delete(item.key);\n }\n}\n","import LruCache from './LruCache.js';\nimport _ from 'lodash';\n\n\nconst pathSegments = new LruCache(1000);\nconst pathMatchers = {};\nconst maxNumPathMatchers = 1000;\n\n\nexport function escapeKey(key) {\n if (!key) return key;\n // eslint-disable-next-line no-control-regex\n return key.toString().replace(/[\\x00-\\x1f\\\\.$#[\\]\\x7f/]/g, char =>\n '\\\\' + _.padStart(char.charCodeAt(0).toString(16), 2, '0')\n );\n}\n\nexport function unescapeKey(key) {\n if (!key) return key;\n return key.toString().replace(/\\\\[0-9a-f]{2}/gi, code =>\n String.fromCharCode(parseInt(code.slice(1), 16))\n );\n}\n\nexport function escapeKeys(object) {\n // isExtensible check avoids trying to escape references to Firetruss internals.\n if (!(_.isObject(object) && Object.isExtensible(object))) return object;\n let result = object;\n for (const key in object) {\n if (!Object.hasOwn(object, key)) continue;\n const value = object[key];\n const escapedKey = escapeKey(key);\n const escapedValue = escapeKeys(value);\n if (escapedKey !== key || escapedValue !== value) {\n if (result === object) result = _.clone(object);\n result[escapedKey] = escapedValue;\n if (result[key] === value) delete result[key];\n }\n }\n return result;\n}\n\nexport function joinPath() {\n const segments = [];\n for (let segment of arguments) {\n if (!_.isString(segment)) segment = '' + segment;\n if (segment.charAt(0) === '/') segments.splice(0, segments.length);\n segments.push(segment);\n }\n if (segments[0] === '/') segments[0] = '';\n return segments.join('/');\n}\n\nexport function splitPath(path, leaveSegmentsEscaped) {\n const key = (leaveSegmentsEscaped ? 'esc:' : '') + path;\n let segments = pathSegments.get(key);\n if (!segments) {\n segments = path.split('/');\n if (!leaveSegmentsEscaped) segments = _.map(segments, unescapeKey);\n pathSegments.set(key, segments);\n }\n return segments;\n}\n\n\nclass PathMatcher {\n constructor(pattern) {\n this.variables = [];\n const prefixMatch = _.endsWith(pattern, '/$*');\n if (prefixMatch) pattern = pattern.slice(0, -3);\n const pathTemplate = pattern.replace(/\\/\\$[^/]*/g, match => {\n if (match.length > 1) this.variables.push(match.slice(1));\n return '\\u0001';\n });\n Object.freeze(this.variables);\n if (/[.$#[\\]]|\\\\(?![0-9a-f][0-9a-f])/i.test(pathTemplate)) {\n throw new Error('Path pattern has unescaped keys: ' + pattern);\n }\n this._regex = new RegExp(\n // eslint-disable-next-line no-control-regex\n '^' + pathTemplate.replace(/\\u0001/g, '/([^/]+)') + (prefixMatch ? '($|/)' : '$'));\n }\n\n match(path) {\n this._regex.lastIndex = 0;\n const match = this._regex.exec(path);\n if (!match) return;\n const bindings = {};\n for (let i = 0; i < this.variables.length; i++) {\n bindings[this.variables[i]] = unescapeKey(match[i + 1]);\n }\n return bindings;\n }\n\n test(path) {\n return this._regex.test(path);\n }\n\n toString() {\n return this._regex.toString();\n }\n}\n\nexport function makePathMatcher(pattern) {\n let matcher = pathMatchers[pattern];\n if (!matcher) {\n matcher = new PathMatcher(pattern);\n // Minimal pseudo-LRU behavior, since we don't expect to actually fill up the cache.\n if (_.size(pathMatchers) === maxNumPathMatchers) delete pathMatchers[_.keys(pathMatchers)[0]];\n pathMatchers[pattern] = matcher;\n }\n return matcher;\n}\n","import {unescapeKey} from './utils/paths.js';\nimport _ from 'lodash';\n\nconst MIN_WORKER_VERSION = '4.0.0';\n\n\nclass Snapshot {\n constructor({path, value, exists, writeSerial}) {\n this._path = path;\n this._value = value;\n this._exists = value === undefined ? exists || false : value !== null;\n this._writeSerial = writeSerial;\n }\n\n get path() {\n return this._path;\n }\n\n get exists() {\n return this._exists;\n }\n\n get value() {\n if (this._value === undefined) throw new Error('Value omitted from snapshot');\n return this._value;\n }\n\n get key() {\n if (this._key === undefined) this._key = unescapeKey(this._path.replace(/.*\\//, ''));\n return this._key;\n }\n\n get writeSerial() {\n return this._writeSerial;\n }\n}\n\n\nexport default class Bridge {\n constructor(webWorker) {\n this._idCounter = 0;\n this._deferreds = {};\n this._suspended = false;\n this._servers = {};\n this._callbacks = {};\n this._log = _.noop;\n this._inboundMessages = [];\n this._outboundMessages = [];\n this._flushMessageQueue = this._flushMessageQueue.bind(this);\n this._port = webWorker.port || webWorker;\n this._shared = !!webWorker.port;\n this._dead = undefined;\n Object.seal(this);\n this._port.onmessage = this._receive.bind(this);\n }\n\n init(lockName, config) {\n const items = [];\n try {\n const storage = window.localStorage || window.sessionStorage;\n if (!storage) throw new Error('localStorage and sessionStorage not available');\n for (let i = 0; i < storage.length; i++) {\n const key = storage.key(i);\n items.push({key, value: storage.getItem(key)});\n }\n } catch {\n // Some browsers don't like us accessing local storage -- nothing we can do.\n }\n return this._send({msg: 'init', storage: items, config, lockName}).then(response => {\n const workerVersion = response.version.match(/^(\\d+)\\.(\\d+)\\.(\\d+)(-.*)?$/);\n if (workerVersion) {\n const minVersion = MIN_WORKER_VERSION.match(/^(\\d+)\\.(\\d+)\\.(\\d+)(-.*)?$/);\n // Major version must match precisely, minor and patch must be greater than or equal.\n const sufficient = workerVersion[1] === minVersion[1] && (\n workerVersion[2] > minVersion[2] ||\n workerVersion[2] === minVersion[2] && workerVersion[3] >= minVersion[3]\n );\n if (!sufficient) {\n return Promise.reject(new Error(\n `Incompatible Firetruss worker version: ${response.version} ` +\n `(${MIN_WORKER_VERSION} or better required)`\n ));\n }\n }\n if (response.livenessLockName) {\n navigator.locks.request(response.livenessLockName, () => {\n this.crash({error: {\n name: 'Error', message: 'worker terminated', extra: {shared: this._shared}\n }});\n });\n }\n return response;\n });\n }\n\n suspend(suspended) {\n if (suspended === undefined) suspended = true;\n if (this._suspended === suspended) return;\n this._suspended = suspended;\n if (!suspended) {\n this._receiveMessages(this._inboundMessages);\n this._inboundMessages = [];\n if (this._outboundMessages.length) Promise.resolve().then(this._flushMessageQueue);\n }\n }\n\n enableLogging(fn) {\n if (fn) {\n if (fn === true) {\n fn = console.log.bind(console);\n this._send({msg: 'enableFirebaseLogging', value: true});\n }\n this._log = fn;\n } else {\n this._send({msg: 'enableFirebaseLogging', value: false});\n this._log = _.noop;\n }\n }\n\n _send(message) {\n message.id = ++this._idCounter;\n let promise;\n if (this._dead) {\n return Promise.reject(this._dead);\n } else if (message.oneWay) {\n promise = Promise.resolve();\n } else {\n promise = new Promise((resolve, reject) => {\n this._deferreds[message.id] = {resolve, reject};\n });\n const deferred = this._deferreds[message.id];\n deferred.promise = promise;\n deferred.params = message;\n }\n if (!this._outboundMessages.length && !this._suspended) {\n Promise.resolve().then(this._flushMessageQueue);\n }\n this._log('send:', message);\n this._outboundMessages.push(message);\n return promise;\n }\n\n _flushMessageQueue() {\n this._log('flush:', this._outboundMessages.length, 'messages');\n try {\n this._port.postMessage(this._outboundMessages);\n this._outboundMessages = [];\n } catch (e) {\n this._log('flush failed:', e);\n e.extra = {messages: this._outboundMessages};\n throw e;\n }\n }\n\n _receive(event) {\n if (this._dead) return;\n if (this._suspended) {\n this._inboundMessages = this._inboundMessages.concat(event.data);\n } else {\n this._receiveMessages(event.data);\n }\n }\n\n _receiveMessages(messages) {\n for (const message of messages) {\n this._log('recv:', message);\n const fn = this[message.msg];\n if (!_.isFunction(fn)) throw new Error('Unknown message: ' + message.msg);\n fn.call(this, message);\n }\n }\n\n bindExposedFunction(name) {\n return (function() {\n return this._send({msg: 'call', name, args: Array.prototype.slice.call(arguments)});\n }).bind(this);\n }\n\n resolve(message) {\n const deferred = this._deferreds[message.id];\n if (!deferred) throw new Error('Received resolution to inexistent Firebase call');\n delete this._deferreds[message.id];\n deferred.resolve(message.result);\n }\n\n reject(message) {\n const deferred = this._deferreds[message.id];\n if (!deferred) throw new Error('Received rejection of inexistent Firebase call');\n delete this._deferreds[message.id];\n deferred.reject(errorFromJson(message.error, deferred.params));\n }\n\n crash(message) {\n let details = `Internal worker error: ${message.error.name}: ${message.error.message}`;\n if (message.error.cause) details += ` (caused by ${message.error.cause})`;\n this._dead = new Error(details);\n if (message.error.extra) this._dead.extra = message.error.extra;\n _.forEach(this._deferreds, ({reject}) => {reject(this._dead);});\n this._deferreds = {};\n throw this._dead;\n }\n\n updateLocalStorage({items}) {\n try {\n const storage = window.localStorage || window.sessionStorage;\n for (const item of items) {\n if (item.value === null) {\n storage.removeItem(item.key);\n } else {\n storage.setItem(item.key, item.value);\n }\n }\n } catch {\n // If we're denied access, there's nothing we can do.\n }\n }\n\n trackServer(rootUrl) {\n if (Object.hasOwn(this._servers, rootUrl)) return Promise.resolve();\n const server = this._servers[rootUrl] = {authListeners: []};\n const authCallbackId = this._registerCallback(this._authCallback.bind(this, server));\n this._send({msg: 'onAuth', url: rootUrl, callbackId: authCallbackId});\n }\n\n _authCallback(server, auth) {\n server.auth = auth;\n for (const listener of server.authListeners) listener(auth);\n }\n\n onAuth(rootUrl, callback, context) {\n const listener = callback.bind(context);\n listener.callback = callback;\n listener.context = context;\n this._servers[rootUrl].authListeners.push(listener);\n listener(this.getAuth(rootUrl));\n }\n\n offAuth(rootUrl, callback, context) {\n const authListeners = this._servers[rootUrl].authListeners;\n for (let i = 0; i < authListeners.length; i++) {\n const listener = authListeners[i];\n if (listener.callback === callback && listener.context === context) {\n authListeners.splice(i, 1);\n break;\n }\n }\n }\n\n getAuth(rootUrl) {\n return this._servers[rootUrl].auth;\n }\n\n authWithCustomToken(url, authToken) {\n return this._send({msg: 'authWithCustomToken', url, authToken});\n }\n\n authAnonymously(url) {\n return this._send({msg: 'authAnonymously', url});\n }\n\n unauth(url) {\n return this._send({msg: 'unauth', url});\n }\n\n set(url, value, writeSerial) {return this._send({msg: 'set', url, value, writeSerial});}\n update(url, value, writeSerial) {return this._send({msg: 'update', url, value, writeSerial});}\n\n once(url, writeSerial) {\n return this._send({msg: 'once', url, writeSerial}).then(snapshot => new Snapshot(snapshot));\n }\n\n on(listenerKey, url, spec, eventType, snapshotCallback, cancelCallback, context, options) {\n const handle = {\n listenerKey, eventType, snapshotCallback, cancelCallback, context,\n params: {msg: 'on', listenerKey, url, spec, eventType, options}\n };\n const callback = this._onCallback.bind(this, handle);\n this._registerCallback(callback, handle);\n // Keep multiple IDs to allow the same snapshotCallback to be reused.\n snapshotCallback.__callbackIds = snapshotCallback.__callbackIds || [];\n snapshotCallback.__callbackIds.push(handle.id);\n this._send({\n msg: 'on', listenerKey, url, spec, eventType, callbackId: handle.id, options\n }).catch(error => {\n callback(error);\n });\n }\n\n off(listenerKey, url, spec, eventType, snapshotCallback, context) {\n const idsToDeregister = [];\n let callbackId;\n if (snapshotCallback) {\n callbackId = this._findAndRemoveCallbackId(\n snapshotCallback, handle => _.isMatch(handle, {listenerKey, eventType, context})\n );\n if (!callbackId) return Promise.resolve(); // no-op, never registered or already deregistered\n idsToDeregister.push(callbackId);\n } else {\n for (const id of _.keys(this._callbacks)) {\n const handle = this._callbacks[id];\n if (handle.listenerKey === listenerKey && (!eventType || handle.eventType === eventType)) {\n idsToDeregister.push(id);\n }\n }\n }\n // Nullify callbacks first, then deregister after off() is complete. We don't want any\n // callbacks in flight from the worker to be invoked while the off() is processing, but we don't\n // want them to throw an exception either.\n for (const id of idsToDeregister) this._nullifyCallback(id);\n return this._send({msg: 'off', listenerKey, url, spec, eventType, callbackId}).then(() => {\n for (const id of idsToDeregister) this._deregisterCallback(id);\n });\n }\n\n _onCallback(handle, error, snapshotJson) {\n if (error) {\n this._deregisterCallback(handle.id);\n const e = errorFromJson(error, handle.params);\n if (handle.cancelCallback) {\n handle.cancelCallback.call(handle.context, e);\n } else {\n console.error(e);\n }\n } else {\n handle.snapshotCallback.call(handle.context, new Snapshot(snapshotJson));\n }\n }\n\n transaction(url, oldValue, relativeUpdates, writeSerial) {\n return this._send(\n {msg: 'transaction', url, oldValue, relativeUpdates, writeSerial}\n ).then(result => {\n if (result.snapshots) {\n result.snapshots = _.map(result.snapshots, jsonSnapshot => new Snapshot(jsonSnapshot));\n }\n return result;\n });\n }\n\n onDisconnect(url, method, value) {\n return this._send({msg: 'onDisconnect', url, method, value});\n }\n\n bounceConnection() {\n return this._send({msg: 'bounceConnection'});\n }\n\n callback({id, args}) {\n const handle = this._callbacks[id];\n if (!handle) throw new Error('Unregistered callback: ' + id);\n handle.callback.apply(null, args);\n }\n\n _registerCallback(callback, handle) {\n handle = handle || {};\n handle.callback = callback;\n handle.id = `cb${++this._idCounter}`;\n this._callbacks[handle.id] = handle;\n return handle.id;\n }\n\n _nullifyCallback(id) {\n this._callbacks[id].callback = _.noop;\n }\n\n _deregisterCallback(id) {\n delete this._callbacks[id];\n }\n\n _findAndRemoveCallbackId(callback, predicate) {\n if (!callback.__callbackIds) return;\n let i = 0;\n while (i < callback.__callbackIds.length) {\n const id = callback.__callbackIds[i];\n const handle = this._callbacks[id];\n if (!handle) {\n callback.__callbackIds.splice(i, 1);\n continue;\n }\n if (predicate(handle)) {\n callback.__callbackIds.splice(i, 1);\n return id;\n }\n i += 1;\n }\n }\n}\n\n\nfunction errorFromJson(json, params) {\n if (!json || _.isError(json)) return json;\n const error = new Error(json.message);\n try {\n error.params = params;\n for (const propertyName in json) {\n if (propertyName === 'message' || !Object.hasOwn(json, propertyName)) continue;\n try {\n error[propertyName] = json[propertyName];\n } catch {\n error.extra = error.extra || {};\n error.extra[propertyName] = json[propertyName];\n }\n }\n } catch (e) {\n if (!/object is not extensible/.test(e.message)) throw e;\n }\n return error;\n}\n","import {escapeKey, unescapeKey, makePathMatcher} from './utils/paths.js';\n\nimport _ from 'lodash';\n\n/* eslint-disable no-use-before-define */\n\nconst EMPTY_ANNOTATIONS = {};\nObject.freeze(EMPTY_ANNOTATIONS);\n\n\nexport class Handle {\n constructor(tree, path, annotations) {\n this._tree = tree;\n this._path = path.replace(/^\\/*/, '/').replace(/\\/$/, '') || '/';\n if (annotations) {\n this._annotations = annotations;\n Object.freeze(annotations);\n }\n }\n\n get $ref() {return this;}\n get key() {\n if (!this._key) this._key = unescapeKey(this._path.replace(/.*\\//, ''));\n return this._key;\n }\n\n get path() {return this._path;}\n get _pathPrefix() {return this._path === '/' ? '' : this._path;}\n get parent() {\n return new Reference(this._tree, this._path.replace(/\\/[^/]*$/, ''), this._annotations);\n }\n\n get annotations() {\n return this._annotations || EMPTY_ANNOTATIONS;\n }\n\n child() {\n if (!arguments.length) return this;\n const segments = [];\n for (const key of arguments) {\n if (_.isNil(key)) return;\n segments.push(escapeKey(key));\n }\n return new Reference(\n this._tree, `${this._pathPrefix}/${segments.join('/')}`,\n this._annotations\n );\n }\n\n children() {\n if (!arguments.length) return this;\n const escapedKeys = [];\n for (let i = 0; i < arguments.length; i++) {\n const arg = arguments[i];\n if (_.isArray(arg)) {\n const mapping = {};\n const subPath = this._pathPrefix + (escapedKeys.length ? `/${escapedKeys.join('/')}` : '');\n const rest = _.slice(arguments, i + 1);\n for (const key of arg) {\n const subRef =\n new Reference(this._tree, `${subPath}/${escapeKey(key)}`, this._annotations);\n const subMapping = subRef.children.apply(subRef, rest);\n if (subMapping) mapping[key] = subMapping;\n }\n return mapping;\n }\n if (_.isNil(arg)) return;\n escapedKeys.push(escapeKey(arg));\n }\n return new Reference(\n this._tree, `${this._pathPrefix}/${escapedKeys.join('/')}`, this._annotations);\n }\n\n peek(callback) {\n return this._tree.truss.peek(this, callback);\n }\n\n match(pattern) {\n return makePathMatcher(pattern).match(this.path);\n }\n\n test(pattern) {\n return makePathMatcher(pattern).test(this.path);\n }\n\n isEqual(that) {\n if (!(that instanceof Handle)) return false;\n return this._tree === that._tree && this.toString() === that.toString() &&\n _.isEqual(this._annotations, that._annotations);\n }\n\n belongsTo(truss) {\n return this._tree.truss === truss;\n }\n}\n\n\nexport class Query extends Handle {\n constructor(tree, path, spec, annotations) {\n super(tree, path, annotations);\n this._spec = this._copyAndValidateSpec(spec);\n const queryTerms = _(this._spec)\n .map((value, key) => `${key}=${encodeURIComponent(JSON.stringify(value))}`)\n .sortBy()\n .join('&');\n this._string = `${this._path}?${queryTerms}`;\n Object.freeze(this);\n }\n\n // Vue-bound\n get ready() {\n return this._tree.isQueryReady(this);\n }\n\n get constraints() {\n return this._spec;\n }\n\n annotate(annotations) {\n return new Query(\n this._tree, this._path, this._spec, _.assign({}, this._annotations, annotations));\n }\n\n _copyAndValidateSpec(spec) {\n if (!spec.by) throw new Error('Query needs \"by\" clause: ' + JSON.stringify(spec));\n if (('at' in spec) + ('from' in spec) + ('to' in spec) > 1) {\n throw new Error(\n 'Query must contain at most one of \"at\", \"from\", or \"to\" clauses: ' + JSON.stringify(spec));\n }\n if (('first' in spec) + ('last' in spec) > 1) {\n throw new Error(\n 'Query must contain at most one of \"first\" or \"last\" clauses: ' + JSON.stringify(spec));\n }\n if (!_.some(['at', 'from', 'to', 'first', 'last'], clause => clause in spec)) {\n throw new Error(\n 'Query must contain at least one of \"at\", \"from\", \"to\", \"first\", or \"last\" clauses: ' +\n JSON.stringify(spec));\n }\n spec = _.clone(spec);\n if (spec.by !== '$key' && spec.by !== '$value') {\n if (!(spec.by instanceof Reference)) {\n throw new Error('Query \"by\" value must be a reference: ' + spec.by);\n }\n let childPath = spec.by.toString();\n if (!_.startsWith(childPath, this._path)) {\n throw new Error(\n 'Query \"by\" value must be a descendant of target reference: ' + spec.by);\n }\n childPath = childPath.slice(this._path.length).replace(/^\\/?/, '');\n if (!_.includes(childPath, '/')) {\n throw new Error(\n 'Query \"by\" value must not be a direct child of target reference: ' + spec.by);\n }\n spec.by = childPath.replace(/.*?\\//, '');\n }\n Object.freeze(spec);\n return spec;\n }\n\n\n toString() {return this._string;}\n toJSON() {return `query → ${this.toString()}`;}\n}\n\n\nexport class Reference extends Handle {\n\n constructor(tree, path, annotations) {\n super(tree, path, annotations);\n Object.freeze(this);\n }\n\n get ready() {return this._tree.isReferenceReady(this);} // Vue-bound\n get value() {return this._tree.getObject(this.path);} // Vue-bound\n toString() {return this._path;}\n toJSON() {return `reference → ${this.toString()}`;}\n\n annotate(annotations) {\n return new Reference(this._tree, this._path, _.assign({}, this._annotations, annotations));\n }\n\n query(spec) {\n return new Query(this._tree, this._path, spec, this._annotations);\n }\n\n set(value) {\n this._checkForUndefinedPath();\n return this._tree.update(this, 'set', {[this.path]: value});\n }\n\n update(values) {\n this._checkForUndefinedPath();\n return this._tree.update(this, 'update', values);\n }\n\n override(value) {\n this._checkForUndefinedPath();\n return this._tree.update(this, 'override', {[this.path]: value});\n }\n\n commit(updateFunction) {\n this._checkForUndefinedPath();\n return this._tree.commit(this, updateFunction);\n }\n\n _checkForUndefinedPath() {\n if (this.path === '/undefined') throw new Error('Invalid path for operation: ' + this.path);\n }\n}\n\nexport default Reference;\n","import _ from 'lodash';\n\n\nexport const SERVER_TIMESTAMP = Object.freeze({'.sv': 'timestamp'});\n\nexport function isTrussEqual(a, b) {\n return _.isEqualWith(a, b, isTrussValueEqual);\n}\n\nfunction isTrussValueEqual(a, b) {\n if (a === b || a === undefined || a === null || b === undefined || b === null ||\n a.$truss || b.$truss) return a === b;\n if (a.isEqual) return a.isEqual(b);\n}\n\nexport function copyPrototype(a, b) {\n for (const prop of Object.getOwnPropertyNames(a.prototype)) {\n if (prop === 'constructor') continue;\n Object.defineProperty(b.prototype, prop, Object.getOwnPropertyDescriptor(a.prototype, prop));\n }\n}\n","import {isTrussEqual} from './utils.js';\n\nimport _ from 'lodash';\n\n\nclass StatItem {\n constructor(name) {\n _.assign(this, {name, numRecomputes: 0, numUpdates: 0, computeTime: 0, updateTime: 0});\n }\n\n add(item) {\n this.computeTime += item.computeTime;\n this.updateTime += item.updateTime;\n this.numUpdates += item.numUpdates;\n this.numRecomputes += item.numRecomputes;\n }\n\n get runtime() {\n return this.computeTime + this.updateTime;\n }\n\n get runtimePerRecompute() {\n return this.numRecomputes ? this.computeTime / this.numRecomputes : 0;\n }\n\n get runtimePerUpdate() {\n return this.numUpdates ? this.updateTime / this.numUpdates : 0;\n }\n\n toLogParts(totals) {\n return [\n `${this.name}:`, ` ${(this.runtime / 1000).toFixed(2)}s`,\n `(${(this.runtime / totals.runtime * 100).toFixed(1)}%)`,\n ` ${this.numUpdates} upd /`, `${this.numRecomputes} runs`,\n `(${(this.numUpdates / this.numRecomputes * 100).toFixed(1)}%)`,\n ` ${this.runtimePerRecompute.toFixed(2)}ms / run`,\n ` ${this.runtimePerUpdate.toFixed(2)}ms / upd`\n ];\n }\n}\n\nclass Stats {\n constructor() {\n this._items = {};\n }\n\n for(name) {\n if (!this._items[name]) this._items[name] = new StatItem(name);\n return this._items[name];\n }\n\n get list() {\n return _(this._items).values().sortBy(item => -item.runtime).value();\n }\n\n log(n = 10) {\n let stats = this.list;\n if (!stats.length) return;\n const totals = new StatItem('=== Total');\n _.forEach(stats, stat => {totals.add(stat);});\n stats = _.take(stats, n);\n const above = new StatItem('--- Above');\n _.forEach(stats, stat => {above.add(stat);});\n const lines = _.map(stats, item => item.toLogParts(totals));\n lines.push(above.toLogParts(totals));\n lines.push(totals.toLogParts(totals));\n const widths = _.map(_.range(lines[0].length), i => _(lines).map(line => line[i].length).max());\n _.forEach(lines, line => {\n console.log(_.map(line, (column, i) => _.padStart(column, widths[i])).join(' '));\n });\n }\n\n wrap(getter, className, propName) {\n const item = this.for(`${className}.${propName}`);\n return function() {\n /* eslint-disable no-invalid-this */\n const startTime = performance.now();\n const oldValue = this._computedWatchers && this._computedWatchers[propName].value;\n try {\n const newValue = getter.call(this);\n if (!isTrussEqual(oldValue, newValue)) item.numUpdates += 1;\n return newValue;\n } finally {\n item.computeTime += performance.now() - startTime;\n item.numRecomputes += 1;\n }\n };\n }\n}\n\nexport default new Stats();\n","import {Handle, Query, Reference} from './Reference.js';\nimport angular from './angularCompatibility.js';\nimport stats from './utils/stats.js';\nimport {isTrussEqual} from './utils/utils.js';\n\nimport _ from 'lodash';\nimport Vue from 'vue';\n\n\nexport default class Connector {\n constructor(scope, connections, tree, method, refs) {\n Object.freeze(connections);\n this._scope = scope;\n this._connections = connections;\n this._tree = tree;\n this._method = method;\n\n this._subConnectors = {};\n this._disconnects = {};\n this._angularUnwatches = undefined;\n this._data = {};\n this._vue = new Vue({data: {\n descriptors: {},\n refs: refs || {},\n values: _.mapValues(connections, _.constant(undefined))\n }});\n // allow instance-level overrides of destroy() method\n this.destroy = this.destroy; // eslint-disable-line no-self-assign\n Object.seal(this);\n\n this._linkScopeProperties();\n\n _.forEach(connections, (descriptor, key) => {\n if (_.isFunction(descriptor)) {\n this._bindComputedConnection(key, descriptor);\n } else {\n this._connect(key, descriptor);\n }\n });\n\n if (angular.active && scope && scope.$on && scope.$id) {\n scope.$on('$destroy', () => {this.destroy();});\n }\n }\n\n get ready() {\n return _.every(this._connections, (ignored, key) => {\n const descriptor = this._vue.descriptors[key];\n if (!descriptor) return false;\n if (descriptor instanceof Handle) return descriptor.ready;\n return this._subConnectors[key].ready;\n });\n }\n\n get at() {\n return this._vue.refs;\n }\n\n get data() {\n return this._data;\n }\n\n destroy() {\n this._unlinkScopeProperties();\n _.forEach(this._angularUnwatches, unwatch => {unwatch();});\n _.forEach(this._connections, (descriptor, key) => {this._disconnect(key);});\n this._vue.$destroy();\n }\n\n _linkScopeProperties() {\n const dataProperties = _.mapValues(this._connections, (unused, key) => ({\n configurable: true, enumerable: false, get: () => {\n const descriptor = this._vue.descriptors[key];\n if (descriptor instanceof Reference) return descriptor.value;\n return this._vue.values[key];\n }\n }));\n Object.defineProperties(this._data, dataProperties);\n if (this._scope) {\n for (const key in this._connections) {\n if (key in this._scope) {\n throw new Error(`Property already defined on connection target: ${key}`);\n }\n }\n Object.defineProperties(this._scope, dataProperties);\n if (this._scope.__ob__) this._scope.__ob__.dep.notify();\n }\n }\n\n _unlinkScopeProperties() {\n if (!this._scope) return;\n _.forEach(this._connections, (descriptor, key) => {\n delete this._scope[key];\n });\n }\n\n _bindComputedConnection(key, fn) {\n const connectionStats = stats.for(`connection.at.${key}`);\n const getter = this._computeConnection.bind(this, fn, connectionStats);\n const update = this._updateComputedConnection.bind(this, key, fn, connectionStats);\n const angularWatch = angular.active && !fn.angularWatchSuppressed;\n // Use this._vue.$watch instead of truss.observe here so that we can disable the immediate\n // callback if we'll get one from Angular anyway.\n this._vue.$watch(getter, update, {immediate: !angularWatch});\n if (angularWatch) {\n if (!this._angularUnwatches) this._angularUnwatches = [];\n this._angularUnwatches.push(angular.watch(getter, update, true));\n }\n }\n\n _computeConnection(fn, connectionStats) {\n const startTime = performance.now();\n try {\n return flattenRefs(fn.call(this._scope));\n } finally {\n connectionStats.computeTime += performance.now() - startTime;\n connectionStats.numRecomputes += 1;\n }\n }\n\n _updateComputedConnection(key, value, connectionStats) {\n const newDescriptor = _.isFunction(value) ? value(this._scope) : value;\n const oldDescriptor = this._vue.descriptors[key];\n const descriptorChanged = !isTrussEqual(oldDescriptor, newDescriptor);\n if (!descriptorChanged) return;\n if (connectionStats && descriptorChanged) connectionStats.numUpdates += 1;\n if (!newDescriptor) {\n this._disconnect(key);\n return;\n }\n if (newDescriptor instanceof Handle || !_.has(this._subConnectors, key)) {\n this._disconnect(key);\n this._connect(key, newDescriptor);\n } else {\n this._subConnectors[key]._updateConnections(newDescriptor);\n }\n Vue.set(this._vue.descriptors, key, newDescriptor);\n angular.digest();\n }\n\n _updateConnections(connections) {\n _.forEach(connections, (descriptor, key) => {\n this._updateComputedConnection(key, descriptor);\n });\n _.forEach(this._connections, (descriptor, key) => {\n if (!_.has(connections, key)) this._updateComputedConnection(key);\n });\n this._connections = connections;\n }\n\n _connect(key, descriptor) {\n Vue.set(this._vue.descriptors, key, descriptor);\n angular.digest();\n if (!descriptor) return;\n Vue.set(this._vue.values, key, undefined);\n if (descriptor instanceof Reference) {\n Vue.set(this._vue.refs, key, descriptor);\n this._disconnects[key] = this._tree.connectReference(descriptor, this._method);\n } else if (descriptor instanceof Query) {\n Vue.set(this._vue.refs, key, descriptor);\n const updateFn = this._updateQueryValue.bind(this, key);\n this._disconnects[key] = this._tree.connectQuery(descriptor, updateFn, this._method);\n } else {\n const subScope = {}, subRefs = {};\n Vue.set(this._vue.refs, key, subRefs);\n const subConnector = this._subConnectors[key] =\n new Connector(subScope, descriptor, this._tree, this._method, subRefs);\n // Use a truss.observe here instead of this._vue.$watch so that the \"immediate\" execution\n // actually takes place after we've captured the unwatch function, in case the subConnector\n // is ready immediately.\n const unobserve = this._disconnects[key] = this._tree.truss.observe(\n () => subConnector.ready,\n subReady => {\n if (!subReady) return;\n unobserve();\n delete this._disconnects[key];\n Vue.set(this._vue.values, key, subScope);\n angular.digest();\n }\n );\n }\n }\n\n _disconnect(key) {\n Vue.delete(this._vue.refs, key);\n this._updateRefValue(key, undefined);\n if (_.has(this._subConnectors, key)) {\n this._subConnectors[key].destroy();\n delete this._subConnectors[key];\n }\n if (this._disconnects[key]) this._disconnects[key]();\n delete this._disconnects[key];\n Vue.delete(this._vue.descriptors, key);\n angular.digest();\n }\n\n _updateRefValue(key, value) {\n if (this._vue.values[key] !== value) {\n Vue.set(this._vue.values, key, value);\n angular.digest();\n }\n }\n\n _updateQueryValue(key, childKeys) {\n if (!this._vue.values[key]) {\n Vue.set(this._vue.values, key, {});\n angular.digest();\n }\n const subScope = this._vue.values[key];\n for (const childKey in subScope) {\n if (!Object.hasOwn(subScope, childKey)) continue;\n if (!_.includes(childKeys, childKey)) {\n Vue.delete(subScope, childKey);\n angular.digest();\n }\n }\n const object = this._tree.getObject(this._vue.descriptors[key].path);\n for (const childKey of childKeys) {\n if (Object.hasOwn(subScope, childKey)) continue;\n Vue.set(subScope, childKey, object[childKey]);\n angular.digest();\n }\n }\n\n}\n\nfunction flattenRefs(refs) {\n if (!refs) return;\n if (refs instanceof Handle) return refs.toString();\n return _.mapValues(refs, flattenRefs);\n}\n\n","export function wrapPromiseCallback(callback) {\n return function() {\n try {\n // eslint-disable-next-line no-invalid-this\n return Promise.resolve(callback.apply(this, arguments));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\n\nexport function promiseCancel(promise, cancel) {\n promise = promiseFinally(promise, () => {cancel = null;});\n promise.cancel = () => {\n if (!cancel) return;\n cancel();\n cancel = null;\n };\n propagatePromiseProperty(promise, 'cancel');\n return promise;\n}\n\nfunction propagatePromiseProperty(promise, propertyName) {\n const originalThen = promise.then, originalCatch = promise.catch;\n promise.then = (onResolved, onRejected) => {\n const derivedPromise = originalThen.call(promise, onResolved, onRejected);\n derivedPromise[propertyName] = promise[propertyName];\n propagatePromiseProperty(derivedPromise, propertyName);\n return derivedPromise;\n };\n promise.catch = onRejected => {\n const derivedPromise = originalCatch.call(promise, onRejected);\n derivedPromise[propertyName] = promise[propertyName];\n propagatePromiseProperty(derivedPromise, propertyName);\n return derivedPromise;\n };\n return promise;\n}\n\nexport function promiseFinally(promise, onFinally) {\n if (!onFinally) return promise;\n onFinally = wrapPromiseCallback(onFinally);\n return promise.then(result => {\n return onFinally().then(() => result);\n }, error => {\n return onFinally().then(() => Promise.reject(error));\n });\n}\n","import _ from 'lodash';\nimport Reference from './Reference.js';\nimport {wrapPromiseCallback} from './utils/promises.js';\nimport {joinPath} from './utils/paths.js';\n\n\nconst INTERCEPT_KEYS = [\n 'read', 'write', 'auth', 'set', 'update', 'commit', 'connect', 'peek', 'authenticate',\n 'unathenticate', 'certify', 'all'\n];\n\nconst EMPTY_ARRAY = [];\n\n\nclass SlowHandle {\n constructor(operation, delay, callback) {\n this._operation = operation;\n this._delay = delay;\n this._callback = callback;\n this._fired = false;\n }\n\n initiate() {\n this.cancel();\n this._fired = false;\n const elapsed = Date.now() - this._operation._startTimestamp;\n this._timeoutId = setTimeout(() => {\n this._fired = true;\n this._callback(this._operation);\n }, this._delay - elapsed);\n }\n\n cancel() {\n if (this._fired) this._callback(this._operation);\n if (this._timeoutId) clearTimeout(this._timeoutId);\n }\n}\n\n\nclass Operation {\n constructor(type, method, target, operand) {\n this._type = type;\n this._method = method;\n this._target = target;\n this._operand = operand;\n this._ready = false;\n this._running = false;\n this._ended = false;\n this._tries = 0;\n this._startTimestamp = Date.now();\n this._slowHandles = [];\n }\n\n get type() {return this._type;}\n get method() {return this._method;}\n get target() {return this._target;}\n get targets() {\n if (this._method !== 'update') return [this._target];\n return _.map(this._operand, (value, escapedPathFragment) => {\n return new Reference(\n this._target._tree, joinPath(this._target.path, escapedPathFragment),\n this._target._annotations);\n });\n }\n\n get operand() {return this._operand;}\n get ready() {return this._ready;}\n get running() {return this._running;}\n get ended() {return this._ended;}\n get tries() {return this._tries;}\n get error() {return this._error;}\n\n onSlow(delay, callback) {\n const handle = new SlowHandle(this, delay, callback);\n this._slowHandles.push(handle);\n handle.initiate();\n }\n\n _setRunning(value) {\n this._running = value;\n }\n\n _setEnded(value) {\n this._ended = value;\n }\n\n _markReady(ending) {\n this._ready = true;\n if (!ending) this._tries = 0;\n _.forEach(this._slowHandles, handle => handle.cancel());\n }\n\n _clearReady() {\n // Temporarily set ready to correctly reset previously triggered slow handles.\n this._ready = true;\n this._startTimestamp = Date.now();\n _.forEach(this._slowHandles, handle => handle.initiate());\n this._ready = false;\n }\n\n _incrementTries() {\n this._tries++;\n }\n}\n\n\nexport default class Dispatcher {\n constructor(bridge) {\n this._bridge = bridge;\n this._callbacks = {};\n Object.freeze(this);\n }\n\n intercept(interceptKey, callbacks) {\n if (!_.includes(INTERCEPT_KEYS, interceptKey)) {\n throw new Error('Unknown intercept operation type: ' + interceptKey);\n }\n const badCallbackKeys =\n _.difference(_.keys(callbacks), ['onBefore', 'onAfter', 'onError', 'onFailure']);\n if (badCallbackKeys.length) {\n throw new Error('Unknown intercept callback types: ' + badCallbackKeys.join(', '));\n }\n const wrappedCallbacks = {\n onBefore: this._addCallback('onBefore', interceptKey, callbacks.onBefore),\n onAfter: this._addCallback('onAfter', interceptKey, callbacks.onAfter),\n onError: this._addCallback('onError', interceptKey, callbacks.onError),\n onFailure: this._addCallback('onFailure', interceptKey, callbacks.onFailure)\n };\n return this._removeCallbacks.bind(this, interceptKey, wrappedCallbacks);\n }\n\n _addCallback(stage, interceptKey, callback) {\n if (!callback) return;\n const key = this._getCallbacksKey(stage, interceptKey);\n const wrappedCallback = wrapPromiseCallback(callback);\n (this._callbacks[key] || (this._callbacks[key] = [])).push(wrappedCallback);\n return wrappedCallback;\n }\n\n _removeCallback(stage, interceptKey, wrappedCallback) {\n if (!wrappedCallback) return;\n const key = this._getCallbacksKey(stage, interceptKey);\n if (this._callbacks[key]) _.pull(this._callbacks[key], wrappedCallback);\n }\n\n _removeCallbacks(interceptKey, wrappedCallbacks) {\n _.forEach(wrappedCallbacks, (wrappedCallback, stage) => {\n this._removeCallback(stage, interceptKey, wrappedCallback);\n });\n }\n\n _getCallbacks(stage, operationType, method) {\n return [].concat(\n this._callbacks[this._getCallbacksKey(stage, method)] || EMPTY_ARRAY,\n this._callbacks[this._getCallbacksKey(stage, operationType)] || EMPTY_ARRAY,\n this._callbacks[this._getCallbacksKey(stage, 'all')] || EMPTY_ARRAY\n );\n }\n\n _getCallbacksKey(stage, interceptKey) {\n return `${stage}_${interceptKey}`;\n }\n\n execute(operationType, method, target, operand, executor) {\n executor = wrapPromiseCallback(executor);\n const operation = this.createOperation(operationType, method, target, operand);\n return this.begin(operation).then(() => {\n const executeWithRetries = () => {\n return executor().catch(e => this._retryOrEnd(operation, e).then(executeWithRetries));\n };\n return executeWithRetries();\n }).then(result => this.end(operation).then(() => result));\n }\n\n createOperation(operationType, method, target, operand) {\n return new Operation(operationType, method, target, operand);\n }\n\n begin(operation) {\n return Promise.all(_.map(\n this._getCallbacks('onBefore', operation.type, operation.method),\n onBefore => onBefore(operation)\n )).then(() => {\n if (!operation.ended) operation._setRunning(true);\n }, e => this.end(operation, e));\n }\n\n markReady(operation) {\n operation._markReady();\n }\n\n clearReady(operation) {\n operation._clearReady();\n }\n\n retry(operation, error) {\n operation._incrementTries();\n operation._error = error;\n return Promise.all(_.map(\n this._getCallbacks('onError', operation.type, operation.method),\n onError => onError(operation, error)\n )).then(results => {\n // If the operation ended in the meantime, bail. This will cause the caller to attempt to\n // fail the operation, but since it's already ended the call to end() with an error will be a\n // no-op.\n if (operation.ended) return;\n const retrying = _.some(results);\n if (retrying) delete operation._error;\n return retrying;\n });\n }\n\n _retryOrEnd(operation, error) {\n return this.retry(operation, error).then(result => {\n if (!result) return this.end(operation, error);\n }, e => this.end(operation, e));\n }\n\n end(operation, error) {\n if (operation.ended) return Promise.resolve();\n operation._setRunning(false);\n operation._setEnded(true);\n if (error) {\n operation._error = error;\n } else {\n // In case we're racing with a retry(), wipe out the error.\n delete operation._error;\n }\n return Promise.all(_.map(\n this._getCallbacks('onAfter', operation.type, operation.method),\n onAfter => onAfter(operation)\n )).then(\n () => this._afterEnd(operation),\n e => {\n operation._error = e;\n return this._afterEnd(operation);\n }\n );\n }\n\n _afterEnd(operation) {\n operation._markReady(true);\n if (!operation.error) return Promise.resolve();\n const onFailureCallbacks = this._getCallbacks('onFailure', operation.type, operation.method);\n if (onFailureCallbacks) {\n setTimeout(() => {\n _.forEach(onFailureCallbacks, onFailure => onFailure(operation));\n }, 0);\n }\n return Promise.reject(operation.error);\n }\n}\n\n","const ALPHABET = '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz';\n\nconst getRandomValues = window.crypto && window.crypto.getRandomValues &&\n window.crypto.getRandomValues.bind(window.crypto);\n\nexport default class KeyGenerator {\n constructor() {\n this._lastUniqueKeyTime = 0;\n this._lastRandomValues = [];\n }\n\n generateUniqueKey(now) {\n now = now || Date.now();\n const chars = new Array(20);\n let prefix = now;\n for (let i = 7; i >= 0; i--) {\n chars[i] = ALPHABET.charAt(prefix & 0x3f); // eslint-disable-line no-bitwise\n prefix = Math.floor(prefix / 64);\n }\n if (now === this._lastUniqueKeyTime) {\n let i = 11;\n while (i >= 0 && this._lastRandomValues[i] === 63) {\n this._lastRandomValues[i] = 0;\n i -= 1;\n }\n if (i === -1) {\n throw new Error('Internal assertion failure: ran out of unique IDs for this millisecond');\n }\n this._lastRandomValues[i] += 1;\n } else {\n this._lastUniqueKeyTime = now;\n if (getRandomValues) {\n const array = new Uint8Array(12);\n getRandomValues(array);\n for (let i = 0; i < 12; i++) {\n // eslint-disable-next-line no-bitwise\n this._lastRandomValues[i] = array[i] & (i ? 0x3f : 0x0f);\n }\n } else {\n for (let i = 0; i < 12; i++) {\n // Make sure to leave some space for incrementing in the top nibble.\n this._lastRandomValues[i] = Math.floor(Math.random() * (i ? 64 : 16));\n }\n }\n }\n for (let i = 0; i < 12; i++) {\n chars[i + 8] = ALPHABET[this._lastRandomValues[i]];\n }\n return chars.join('');\n }\n}\n","import angular from './angularCompatibility.js';\nimport Vue from 'vue';\nimport Reference from './Reference.js';\n\n\nexport default class MetaTree {\n constructor(rootUrl, tree, bridge, dispatcher) {\n this._rootUrl = rootUrl;\n this._tree = tree;\n this._dispatcher = dispatcher;\n this._bridge = bridge;\n this._vue = new Vue({data: {$root: {\n connected: undefined, timeOffset: 0, user: undefined, userid: undefined,\n nowAtInterval(intervalMillis) {\n const key = 'now' + intervalMillis;\n if (!Object.hasOwn(this, key)) {\n const update = () => {\n Vue.set(this, key, Date.now() + this.timeOffset);\n angular.digest();\n };\n update();\n setInterval(update, intervalMillis);\n }\n return this[key];\n }\n }}});\n\n this._auth = {serial: 0, initialAuthChangeReceived: false, changePromise: Promise.resolve()};\n\n bridge.onAuth(rootUrl, this._handleAuthChange, this);\n\n this._connectInfoProperty('serverTimeOffset', 'timeOffset');\n this._connectInfoProperty('connected', 'connected');\n Object.freeze(this);\n }\n\n get root() {\n return this._vue.$data.$root;\n }\n\n destroy() {\n this._bridge.offAuth(this._rootUrl, this._handleAuthChange, this);\n this._vue.$destroy();\n }\n\n authenticate(token) {\n this._auth.serial++;\n return this._dispatcher.execute(\n 'auth', 'authenticate', new Reference(this._tree, '/'), token, () => {\n const promise = token ?\n this._bridge.authWithCustomToken(this._rootUrl, token) :\n this._bridge.authAnonymously(this._rootUrl);\n return promise.then(() => this._auth.changePromise);\n }\n );\n }\n\n unauthenticate() {\n // Signal user change to null pre-emptively. This is what the Firebase SDK does as well, since\n // it lets the app tear down user-required connections before the user is actually deauthed,\n // which can prevent spurious permission denied errors.\n this._auth.serial++;\n return this._handleAuthChange(null).then(approved => {\n // Bail if auth change callback initiated another authentication, since it will have already\n // sent the command to the bridge and sending our own now would incorrectly override it.\n if (!approved) return;\n return this._dispatcher.execute(\n 'auth', 'unauthenticate', new Reference(this._tree, '/'), undefined, () => {\n return this._bridge.unauth(this._rootUrl);\n }\n );\n });\n }\n\n _handleAuthChange(user) {\n const supersededChange = !this._auth.initialAuthChangeReceived && this._auth.serial;\n if (user !== undefined) this._auth.initialAuthChangeReceived = true;\n if (supersededChange) return;\n const authSerial = this._auth.serial;\n if (this.root.user === user) return Promise.resolve(false);\n const promise = this._dispatcher.execute(\n 'auth', 'certify', new Reference(this._tree, '/'), user, () => {\n if (this.root.user === user || authSerial !== this._auth.serial) return false;\n if (user) Object.freeze(user);\n this.root.user = user;\n this.root.userid = user && user.uid;\n angular.digest();\n return true;\n }\n );\n this._auth.changePromise = this._auth.changePromise.then(() => promise).catch();\n return promise;\n }\n\n _isAuthChangeStale(user) {\n return this.root.user === user;\n }\n\n _connectInfoProperty(property, attribute) {\n const url = new URL(this._rootUrl);\n url.pathname = encodeURI(`/.info/${property}`);\n this._bridge.on(url.href, url.href, null, 'value', snap => {\n this.root[attribute] = snap.value;\n angular.digest();\n });\n }\n}\n","import {Reference, Handle} from './Reference.js';\nimport angular from './angularCompatibility.js';\nimport stats from './utils/stats.js';\nimport {makePathMatcher, joinPath, splitPath, escapeKey, unescapeKey} from './utils/paths.js';\nimport {isTrussEqual, copyPrototype} from './utils/utils.js';\nimport {promiseFinally} from './utils/promises.js';\n\nimport _ from 'lodash';\n\n// These are defined separately for each object so they're not included in Value below.\nconst RESERVED_VALUE_PROPERTY_NAMES = {__ob__: true};\n\nconst UNSUPPORTED_LIFECYCLE_METHODS = new Set([\n 'beforeMount', 'mounted', 'beforeUpdate', 'updated', 'activated', 'deactivated', 'errorCaptured'\n]);\nconst UNSUPPORTED_LIFECYCLE_HOOKS =\n new Set(_.map(UNSUPPORTED_LIFECYCLE_METHODS, method => `hook:${method}`));\n\nconst LAST_COMPUTED_VALUE = Symbol('last-computed-value');\n\n// Holds properties that we're going to set on a model object that's being created right now as soon\n// as it's been created, but that we'd like to be accessible in the constructor. The object\n// prototype's getters will pick those up until they get overridden in the instance.\nlet creatingObjectProperties;\n\nlet currentPropertyFrozen;\n\n\nexport class BaseValue {\n get $info() {return this.$truss.info;}\n get $store() {return this.$truss.store;} // access indirectly to leave dependency trace\n get $now() {return this.$truss.now;}\n\n $newKey() {return this.$truss.newKey();}\n\n $intercept(actionType, callbacks) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const unintercept = this.$truss.intercept(actionType, callbacks);\n const uninterceptAndRemoveFinalizer = () => {\n unintercept();\n this.$off('hook:destroyed', uninterceptAndRemoveFinalizer);\n };\n this.$on('hook:destroyed', uninterceptAndRemoveFinalizer);\n return uninterceptAndRemoveFinalizer;\n }\n\n $connect(scope, connections) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n if (!connections) {\n connections = scope;\n scope = undefined;\n }\n const connector = this.$truss.connect(scope, wrapConnections(this, connections));\n const originalDestroy = connector.destroy;\n const destroy = () => {\n this.$off('hook:destroyed', destroy);\n return originalDestroy.call(connector);\n };\n this.$on('hook:destroyed', destroy);\n connector.destroy = destroy;\n return connector;\n }\n\n $peek(target, callback) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const promise = promiseFinally(\n this.$truss.peek(target, callback), () => {this.$off('hook:destroyed', promise.cancel);}\n );\n this.$on('hook:destroyed', promise.cancel);\n return promise;\n }\n\n $observe(subjectFn, callbackFn, options) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n let unobserveAndRemoveFinalizer;\n\n const unobserve = this.$truss.observe(() => {\n this.$$touchThis();\n return subjectFn.call(this);\n }, callbackFn.bind(this), {...options, vm: this});\n\n unobserveAndRemoveFinalizer = () => { // eslint-disable-line prefer-const\n unobserve();\n this.$off('hook:destroyed', unobserveAndRemoveFinalizer);\n };\n this.$on('hook:destroyed', unobserveAndRemoveFinalizer);\n return unobserveAndRemoveFinalizer;\n }\n\n $when(expression, options) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const promise = this.$truss.when(() => {\n this.$$touchThis();\n return expression.call(this);\n }, options);\n promiseFinally(promise, () => {this.$off('hook:destroyed', promise.cancel);});\n this.$on('hook:destroyed', promise.cancel);\n return promise;\n }\n}\n\n\nclass Value {\n get $parent() {return creatingObjectProperties.$parent.value;}\n get $path() {return creatingObjectProperties.$path.value;}\n get $truss() {\n Object.defineProperty(this, '$truss', {value: this.$parent.$truss});\n return this.$truss;\n }\n\n get $ref() {\n Object.defineProperty(this, '$ref', {value: new Reference(this.$truss._tree, this.$path)});\n return this.$ref;\n }\n\n get $refs() {return this.$ref;}\n get $key() {\n Object.defineProperty(\n this, '$key', {value: unescapeKey(this.$path.slice(this.$path.lastIndexOf('/') + 1))});\n return this.$key;\n }\n\n get $data() {return this;}\n get $hidden() {return false;} // eslint-disable-line lodash/prefer-constant\n get $empty() {return _.isEmpty(this.$data);}\n get $keys() {return _.keys(this.$data);}\n get $values() {return _.values(this.$data);}\n get $ready() {return this.$ref.ready;}\n get $overridden() {return false;} // eslint-disable-line lodash/prefer-constant\n\n $nextTick() {\n if (this.$destroyed) throw new Error('Object already destroyed');\n const promise = this.$truss.nextTick();\n promiseFinally(promise, () => {this.$off('hook:destroyed', promise.cancel);});\n this.$on('hook:destroyed', promise.cancel);\n return promise;\n }\n\n $freezeComputedProperty() {\n if (!_.isBoolean(currentPropertyFrozen)) {\n throw new Error('Cannot freeze a computed property outside of its getter function');\n }\n currentPropertyFrozen = true;\n }\n\n get $lastComputedValue() {\n if (!_.isBoolean(currentPropertyFrozen)) {\n throw new Error(\n 'Cannot use last computed value of a property outside of its getter function');\n }\n return LAST_COMPUTED_VALUE;\n }\n\n $set(value) {return this.$ref.set(value);}\n $update(values) {return this.$ref.update(values);}\n $override(values) {return this.$ref.override(values);}\n $commit(options, updateFn) {return this.$ref.commit(options, updateFn);}\n\n $$touchThis() {\n /* eslint-disable no-unused-expressions */\n if (this.__ob__) {\n this.__ob__.dep.depend();\n } else if (this.$parent) {\n (Object.hasOwn(this.$parent, '$data') ? this.$parent.$data : this.$parent)[this.$key];\n } else {\n this.$store;\n }\n /* eslint-enable no-unused-expressions */\n }\n\n get $destroyed() { // eslint-disable-line lodash/prefer-constant\n return false;\n }\n\n $on(event, callback) {\n if (this.$destroyed) throw new Error('Object already destroyed');\n if (UNSUPPORTED_LIFECYCLE_HOOKS.has(event)) {\n throw new Error(`Models don't support the \"${event}\" lifecycle event`);\n }\n (this.$$hooks[event] = this.$$hooks[event] || []).push(callback);\n return this;\n }\n\n $once(event, callback) {\n const object = this;\n function cb(...args) {\n object.$off(event, cb);\n callback(...args);\n }\n cb.fn = callback;\n return this.$on(event, cb);\n }\n\n $off(event, callback) {\n if (event) {\n if (callback) {\n if (_.isArray(event)) {\n for (const ev of event) this.$off(ev, callback);\n } else if (this.$$hooks[event]) {\n const callbacks = this.$$hooks[event];\n for (let i = 0; i < callbacks.length; i++) {\n const cb = callbacks[i];\n if (cb === callback || cb.fn === callback) {\n callbacks.splice(i, 1);\n break;\n }\n }\n }\n } else {\n delete this.$$hooks[event];\n }\n } else {\n for (const key of _.keys(this.$$hooks)) delete this.$$hooks[key];\n }\n return this;\n }\n\n $emit(event, ...args) {\n if (_.has(this, '$$hooks')) {\n // Some callbacks remove themselves from the array, so clone it before iterating.\n _.forEach(_.clone(this.$$hooks[event]), callback => {\n if (callback.$once && callback.$once[event]) {\n callback.$once[event] -= 1;\n this.$off(event, callback);\n }\n callback(...args);\n });\n }\n return this;\n }\n\n get $$hooks() {\n Object.defineProperty(this, '$$hooks', {\n value: {}, writable: false, enumerable: false, configurable: false\n });\n return this.$$hooks;\n }\n}\n\ncopyPrototype(BaseValue, Value);\n\n_.forEach(Value.prototype, (prop, name) => {\n Object.defineProperty(\n Value.prototype, name, {value: prop, enumerable: false, configurable: false, writable: false});\n});\n\n\nclass ErrorWrapper {\n constructor(error) {\n this.error = error;\n }\n}\n\n\nclass FrozenWrapper {\n constructor(value) {\n this.value = value;\n }\n}\n\n\nexport default class Modeler {\n constructor(vue, debug) {\n this._vue = vue;\n this._trie = {Class: Value};\n this._debug = debug;\n Object.freeze(this);\n }\n\n init(classes, rootAcceptable) {\n if (_.isPlainObject(classes)) {\n _.forEach(classes, (Class, path) => {\n if (Class.$trussMount) return;\n Class.$$trussMount = Class.$$trussMount || [];\n Class.$$trussMount.push(path);\n });\n classes = _.values(classes);\n _.forEach(classes, Class => {\n if (!Class.$trussMount && Class.$$trussMount) {\n Class.$trussMount = Class.$$trussMount;\n delete Class.$$trussMount;\n }\n });\n }\n classes = _.uniq(classes);\n _.forEach(classes, Class => this._mountClass(Class, rootAcceptable));\n this._decorateTrie(this._trie);\n }\n\n destroy() {/* empty */}\n\n _getMount(path, scaffold, predicate) {\n const segments = splitPath(path, true);\n let node;\n for (const segment of segments) {\n let child = segment ?\n node.children && (node.children[segment] || !scaffold && node.children.$) : this._trie;\n if (!child) {\n if (!scaffold) return;\n node.children = node.children || {};\n child = node.children[segment] = {Class: Value};\n }\n node = child;\n if (predicate && predicate(node)) break;\n }\n return node;\n }\n\n _findMount(predicate, node) {\n if (!node) node = this._trie;\n if (predicate(node)) return node;\n for (const childKey of _.keys(node.children)) {\n const result = this._findMount(predicate, node.children[childKey]);\n if (result) return result;\n }\n }\n\n _decorateTrie(node) {\n _.forEach(node.children, child => {\n this._decorateTrie(child);\n if (child.local || child.localDescendants) node.localDescendants = true;\n });\n }\n\n _augmentClass(Class) {\n let computedProperties;\n let proto = Class.prototype;\n while (proto && proto.constructor !== Object) {\n for (const name of Object.getOwnPropertyNames(proto)) {\n const descriptor = Object.getOwnPropertyDescriptor(proto, name);\n if (name.charAt(0) === '$') {\n if (_.isEqual(descriptor, Object.getOwnPropertyDescriptor(Value.prototype, name))) {\n continue;\n }\n throw new Error(`Property names starting with \"$\" are reserved: ${Class.name}.${name}`);\n }\n if (UNSUPPORTED_LIFECYCLE_METHODS.has(name) && _.isFunction(proto[name])) {\n throw new Error(`Models don't support the \"${name}\" lifecycle method`);\n }\n if (descriptor.get && !(computedProperties && computedProperties[name])) {\n (computedProperties || (computedProperties = {}))[name] = {\n name, fullName: `${proto.constructor.name}.${name}`, get: descriptor.get,\n set: descriptor.set\n };\n }\n }\n proto = Object.getPrototypeOf(proto);\n }\n for (const name of Object.getOwnPropertyNames(Value.prototype)) {\n if (name === 'constructor' || Object.hasOwn(Class.prototype, name)) continue;\n Object.defineProperty(\n Class.prototype, name, Object.getOwnPropertyDescriptor(Value.prototype, name));\n }\n return computedProperties;\n }\n\n _mountClass(Class, rootAcceptable) {\n const computedProperties = this._augmentClass(Class);\n const allVariables = [];\n let mounts = Class.$trussMount;\n if (!mounts) throw new Error(`Class ${Class.name} lacks a $trussMount static property`);\n if (!_.isArray(mounts)) mounts = [mounts];\n _.forEach(mounts, mount => {\n if (_.isString(mount)) mount = {path: mount};\n if (!rootAcceptable && mount.path === '/') {\n throw new Error('Data root already accessed, too late to mount class');\n }\n const matcher = makePathMatcher(mount.path);\n for (const variable of matcher.variables) {\n if (variable === '$' || variable.charAt(1) === '$') {\n throw new Error(`Invalid variable name: ${variable}`);\n }\n if (variable.charAt(0) === '$' && (\n _.has(Value.prototype, variable) || RESERVED_VALUE_PROPERTY_NAMES[variable]\n )) {\n throw new Error(`Variable name conflicts with built-in property or method: ${variable}`);\n }\n allVariables.push(variable);\n }\n const escapedKey = mount.path.match(/\\/([^/]*)$/)[1];\n if (escapedKey.charAt(0) === '$') {\n if (mount.placeholder) {\n throw new Error(\n `Class ${Class.name} mounted at wildcard ${escapedKey} cannot be a placeholder`);\n }\n } else if (!_.has(mount, 'placeholder')) {\n mount.placeholder = {};\n }\n const targetMount = this._getMount(mount.path.replace(/\\$[^/]*/g, '$'), true);\n if (targetMount.matcher && (\n targetMount.escapedKey === escapedKey ||\n targetMount.escapedKey.charAt(0) === '$' && escapedKey.charAt(0) === '$'\n )) {\n throw new Error(\n `Multiple classes mounted at ${mount.path}: ${targetMount.Class.name}, ${Class.name}`);\n }\n _.assign(\n targetMount, {Class, matcher, computedProperties, escapedKey},\n _.pick(mount, 'placeholder', 'local', 'keysUnsafe', 'hidden'));\n });\n _(allVariables).uniq().forEach(variable => {\n Object.defineProperty(Class.prototype, variable, {get() {\n return creatingObjectProperties ?\n creatingObjectProperties[variable] && creatingObjectProperties[variable].value :\n undefined;\n }});\n });\n }\n\n /**\n * Creates a Truss object and sets all its basic properties: path segment variables, user-defined\n * properties, and computed properties. The latter two will be enumerable so that Vue will pick\n * them up and make the reactive.\n */\n createObject(path, properties) {\n const mount = this._getMount(path) || {Class: Value};\n try {\n if (mount.matcher) {\n const match = mount.matcher.match(path);\n for (const variable in match) {\n properties[variable] = {value: match[variable]};\n }\n }\n\n creatingObjectProperties = properties;\n const object = new mount.Class();\n creatingObjectProperties = null;\n\n if (angular.active) this._wrapProperties(object);\n\n if (mount.keysUnsafe) {\n properties.$data = {value: Object.create(null), configurable: true, enumerable: true};\n }\n if (mount.hidden) properties.$hidden = {value: true};\n if (mount.computedProperties) {\n _.forEach(mount.computedProperties, prop => {\n properties[prop.name] = this._buildComputedPropertyDescriptor(object, prop);\n });\n }\n\n return object;\n } catch (e) {\n e.extra = _.assign({mount, properties, className: mount.Class && mount.Class.name}, e.extra);\n throw e;\n }\n }\n\n _wrapProperties(object) {\n _.forEach(object, (value, key) => {\n const valueKey = '$_' + key;\n const descriptor = Object.getOwnPropertyDescriptor(object, key);\n const valueDescriptor = descriptor.get && descriptor.set ? {\n get: descriptor.get, set: descriptor.set, configurable: true\n } : {value, writable: true};\n Object.defineProperties(object, {\n [valueKey]: valueDescriptor,\n [key]: {\n get: () => object[valueKey],\n set: arg => {object[valueKey] = arg; angular.digest();},\n enumerable: true, configurable: true\n }\n });\n });\n }\n\n _buildComputedPropertyDescriptor(object, prop) {\n const propertyStats = stats.for(prop.fullName);\n\n let value, pendingPromise;\n let writeAllowed = false;\n\n const initialize = () => {\n let unwatchNow = false;\n const compute = computeValue.bind(object, prop, propertyStats);\n compute.toString = _.constant(`compute ${prop.fullName}`);\n let unwatch = () => {unwatchNow = true;};\n unwatch = this._vue.$watch(compute, newValue => {\n if (object.$destroyed) {\n unwatch();\n return;\n }\n if (pendingPromise) {\n if (pendingPromise.cancel) pendingPromise.cancel();\n pendingPromise = undefined;\n }\n if (_.isObject(newValue) && _.isFunction(newValue.then)) {\n const promise = newValue.then(finalValue => {\n if (promise === pendingPromise) update(finalValue);\n // No need to angular.digest() here, since if we're running under Angular then we expect\n // promises to be aliased to its $q service, which triggers digest itself.\n }, error => {\n if (promise === pendingPromise && update(new ErrorWrapper(error)) &&\n !error.trussExpectedException) throw error;\n });\n pendingPromise = promise;\n } else if (update(newValue)) {\n angular.digest();\n if (newValue instanceof ErrorWrapper && !newValue.error.trussExpectedException) {\n throw newValue.error;\n }\n }\n }, {immediate: true}); // use immediate:true since watcher will run computeValue anyway\n // Hack to change order of computed property watchers. By flipping their ids to be negative,\n // we ensure that they will settle before all other watchers, and also that children\n // properties will settle before their parents since values are often aggregated upwards.\n const watcher = _.last(this._vue._watchers || this._vue._scope.effects);\n watcher.id = -watcher.id;\n\n function update(newValue) {\n const startTime = performance.now();\n if (newValue instanceof FrozenWrapper) {\n newValue = newValue.value;\n unwatch();\n object.$off('hook:destroyed', unwatch);\n }\n if (newValue === LAST_COMPUTED_VALUE || isTrussEqual(value, newValue)) return;\n // console.log('updating', object.$key, prop.fullName, 'from', value, 'to', newValue);\n writeAllowed = true;\n object[prop.name] = newValue;\n writeAllowed = false;\n // Freeze the computed value so it can't be accidentally modified by a third party. Ideally\n // we'd freeze it before setting it so that Vue wouldn't instrument the object recursively\n // (since it can't change anyway), but we actually need the instrumentation in case a client\n // tries to access an inexistent property off a computed pointer to an unfrozen value (e.g.,\n // a $truss-ified object). When instrumented, Vue will add a dependency on the unfrozen\n // value in case the property is later added. If uninstrumented, the dependency won't be\n // added and we won't be notified. And Vue only instruments extensible objects...\n freeze(newValue);\n propertyStats.numUpdates += 1;\n propertyStats.updateTime += performance.now() - startTime;\n return true;\n }\n\n if (unwatchNow) {\n unwatch();\n } else {\n object.$on('hook:destroyed', unwatch);\n }\n\n object.$off('hook:created', initialize);\n };\n object.$on('hook:created', initialize);\n\n return {\n enumerable: true, configurable: true,\n get() {\n if (!writeAllowed && value instanceof ErrorWrapper) throw value.error;\n return value;\n },\n set(newValue) {\n if (writeAllowed) {\n value = newValue;\n } else if (prop.set) {\n prop.set.call(this, newValue);\n } else {\n throw new Error(`You cannot set a computed property: ${prop.name}`);\n }\n }\n };\n }\n\n destroyObject(object) {\n Object.defineProperty(\n object, '$destroyed', {value: true, enumerable: false, configurable: false});\n }\n\n emitLifecycleHook(object, hook) {\n if (_.isFunction(object[hook])) object[hook]();\n object.$emit(`hook:${hook}`);\n }\n\n isPlaceholder(path) {\n const mount = this._getMount(path);\n return mount && mount.placeholder;\n }\n\n isLocal(path, value) {\n const mount = this._getMount(path, false, mount => mount.local);\n if (mount && mount.local) return true;\n if (this._hasLocalProperties(mount, value)) {\n throw new Error('Write on a mix of local and remote tree paths.');\n }\n return false;\n }\n\n _hasLocalProperties(mount, value) {\n if (!mount) return false;\n if (mount.local) return true;\n if (!mount.localDescendants || !_.isObject(value)) return false;\n for (const key in value) {\n const local =\n this._hasLocalProperties(mount.children[escapeKey(key)] || mount.children.$, value[key]);\n if (local) return true;\n }\n return false;\n }\n\n forEachPlaceholderChild(path, iteratee) {\n const mount = this._getMount(path);\n _.forEach(mount && mount.children, child => {\n if (child.placeholder) iteratee(child);\n });\n }\n\n checkVueObject(object, path, checkedObjects) {\n const top = !checkedObjects;\n if (top) checkedObjects = new Set();\n const objectPropertyValues = new Map();\n const mount = this._findMount(candidate => candidate.Class === object.constructor);\n const targetProperties = _(object)\n .thru(Object.getOwnPropertyNames)\n .reject(key =>\n RESERVED_VALUE_PROPERTY_NAMES[key] || Object.hasOwn(Value.prototype, key) ||\n /^\\$_/.test(key)\n )\n .reject(key => mount && mount.matcher && _.includes(mount.matcher.variables, key))\n .map(key => {\n let value;\n try {\n value = object[key];\n // Ignore builtin object types.\n if (value instanceof RegExp) return;\n } catch {\n // Ignore any values that hold exceptions, or otherwise throw on access -- we won't be\n // able to check them anyway.\n return;\n }\n const descriptor = Object.getOwnPropertyDescriptor(object, key);\n const computed =\n !descriptor.enumerable && descriptor.set && !Object.hasOwn(object, '$_' + key);\n return {key, value, descriptor, computed};\n })\n .compact()\n .value();\n\n for (const {key, value, descriptor, computed} of targetProperties) {\n if (!(_.isArray(object) && (/^\\d+$/.test(key) || key === 'length'))) {\n if ('value' in descriptor || !descriptor.get) {\n throw new Error(\n `Value at ${path}, contained in a Firetruss object, has a rogue property: ${key}`);\n }\n if (object.$truss && descriptor.enumerable) {\n try {\n object[key] = value;\n throw new Error(\n `Firetruss object at ${path} has an enumerable non-Firebase property: ${key}`);\n } catch (e) {\n if (e.trussCode !== 'firebase_overwrite') throw e;\n }\n }\n }\n if (_.isObject(value)) {\n if (!checkedObjects.has(value) && !Object.isSealed(value) &&\n !(_.isFunction(value) || _.isElement(value) || value instanceof Promise)) {\n checkedObjects.add(value);\n this.checkVueObject(value, joinPath(path, escapeKey(key)), checkedObjects);\n }\n if (!computed && !value.$truss) objectPropertyValues.set(value, key);\n }\n }\n\n for (const {key, value, computed} of targetProperties) {\n if (computed && _.isObject(value) && !value.$truss) {\n const otherKey = objectPropertyValues.get(value);\n if (otherKey) {\n throw new Error(\n `Firetruss object at ${path} has properties ${key} ` +\n `and ${otherKey} with an aliased value`);\n }\n }\n }\n }\n}\n\n\nfunction computeValue(prop, propertyStats) {\n /* eslint-disable no-invalid-this */\n if (this.$destroyed) return;\n // Touch this object, since a failed access to a missing property doesn't get captured as a\n // dependency.\n this.$$touchThis();\n\n const oldPropertyFrozen = currentPropertyFrozen;\n currentPropertyFrozen = false;\n const startTime = performance.now();\n let value;\n try {\n try {\n value = prop.get.call(this);\n } catch (e) {\n value = new ErrorWrapper(e);\n } finally {\n propertyStats.computeTime += performance.now() - startTime;\n propertyStats.numRecomputes += 1;\n }\n if (currentPropertyFrozen) value = new FrozenWrapper(value);\n return value;\n } finally {\n currentPropertyFrozen = oldPropertyFrozen;\n }\n /* eslint-enable no-invalid-this */\n}\n\nfunction wrapConnections(object, connections) {\n if (!connections || connections instanceof Handle) return connections;\n if (_.isFunction(connections)) {\n const fn = function() {\n /* eslint-disable no-invalid-this */\n object.$$touchThis();\n return wrapConnections(object, connections.call(this));\n /* eslint-enable no-invalid-this */\n };\n fn.angularWatchSuppressed = true;\n return fn;\n }\n return _.mapValues(connections, descriptor => wrapConnections(object, descriptor));\n}\n\nfunction freeze(object) {\n if (_.isNil(object) || !_.isObject(object) || Object.isFrozen(object) || object.$truss) {\n return object;\n }\n object = Object.freeze(object);\n if (_.isArray(object)) return _.map(object, value => freeze(value));\n return _.mapValues(object, value => freeze(value));\n}\n","import _ from 'lodash';\nimport Vue from 'vue';\nimport angular from './angularCompatibility.js';\nimport {splitPath} from './utils/paths.js';\n\n\nclass QueryHandler {\n constructor(coupler, query) {\n this._coupler = coupler;\n this._query = query;\n this._listeners = [];\n this._keys = [];\n this._coupler._url.pathname = encodeURI(query.path);\n this._url = this._coupler._url.toString();\n this._segments = splitPath(query.path, true);\n this._listening = false;\n this.ready = false;\n }\n\n attach(operation, keysCallback) {\n this._listen();\n this._listeners.push({operation, keysCallback});\n if (this.ready) {\n this._coupler._dispatcher.markReady(operation);\n if (keysCallback) keysCallback(this._keys);\n }\n }\n\n detach(operation) {\n const k = _.findIndex(this._listeners, {operation});\n if (k >= 0) this._listeners.splice(k, 1);\n return this._listeners.length;\n }\n\n _listen() {\n if (this._listening) return;\n this._coupler._bridge.on(\n this._query.toString(), this._url, this._query.constraints, 'value',\n this._handleSnapshot, this._handleError, this, {sync: true});\n this._listening = true;\n }\n\n destroy() {\n this._coupler._bridge.off(\n this._query.toString(), this._url, this._query.constraints, 'value', this._handleSnapshot,\n this);\n this._listening = false;\n this.ready = false;\n angular.digest();\n for (const key of this._keys) {\n this._coupler._decoupleSegments(this._segments.concat(key));\n }\n }\n\n _handleSnapshot(snap) {\n this._coupler._queueSnapshotCallback(() => {\n // Order is important here: first couple any new subpaths so _handleSnapshot will update the\n // tree, then tell the client to update its keys, pulling values from the tree.\n if (!this._listeners.length || !this._listening) return;\n const updatedKeys = this._updateKeysAndApplySnapshot(snap);\n if (!this.ready) {\n this.ready = true;\n angular.digest();\n for (const listener of this._listeners) {\n this._coupler._dispatcher.markReady(listener.operation);\n }\n }\n if (updatedKeys) {\n for (const listener of this._listeners) {\n if (listener.keysCallback) listener.keysCallback(updatedKeys);\n }\n }\n });\n }\n\n _updateKeysAndApplySnapshot(snap) {\n let updatedKeys;\n if (snap.path === this._query.path) {\n updatedKeys = _.keys(snap.value);\n updatedKeys.sort();\n if (_.isEqual(this._keys, updatedKeys)) {\n updatedKeys = null;\n } else {\n for (const key of _.difference(updatedKeys, this._keys)) {\n this._coupler._coupleSegments(this._segments.concat(key));\n }\n for (const key of _.difference(this._keys, updatedKeys)) {\n // Decoupling a segment will prune the tree at that location if there are no other\n // listeners.\n this._coupler._decoupleSegments(this._segments.concat(key));\n }\n this._keys = updatedKeys;\n }\n // The snapshot may be partial, so create synthetic snapshots for subpaths and apply those to\n // update / insert values. (Deleted ones got pruned above.)\n if (snap.exists) {\n const rootValue = snap.value;\n const rootPath = snap.path;\n for (const key of this._keys) {\n snap._path = rootPath + '/' + key;\n snap._key = undefined;\n snap._value = rootValue[key];\n this._coupler._applySnapshot(snap);\n }\n // Restore original properties, just in case.\n snap._path = rootPath;\n snap._key = undefined;\n snap._value = rootValue;\n }\n } else if (snap.path.replace(/\\/[^/]+/, '') === this._query.path) {\n const hasKey = _.includes(this._keys, snap.key);\n if (snap.value) {\n if (!hasKey) {\n this._coupler._coupleSegments(this._segments.concat(snap.key));\n this._keys.push(snap.key);\n this._keys.sort();\n updatedKeys = this._keys;\n }\n } else if (hasKey) {\n this._coupler._decoupleSegments(this._segments.concat(snap.key));\n _.pull(this._keys, snap.key);\n this._keys.sort();\n updatedKeys = this._keys;\n }\n // A snapshot under the query's level is guaranteed to be a full snapshot, so we can apply it\n // directly.\n this._coupler._applySnapshot(snap);\n }\n return updatedKeys;\n }\n\n _handleError(error) {\n if (!this._listeners.length || !this._listening) return;\n this._listening = false;\n this.ready = false;\n for (const key of this._keys) this._coupler._decoupleSegments(this._segments.concat(key));\n this._keys = [];\n angular.digest();\n Promise.all(_.map(this._listeners, listener => {\n this._coupler._dispatcher.clearReady(listener.operation);\n return this._coupler._dispatcher.retry(listener.operation, error).catch(e => {\n listener.operation._disconnect(e);\n return false;\n });\n })).then(results => {\n if (_.some(results)) {\n if (this._listeners.length) this._listen();\n } else {\n for (const listener of this._listeners) listener.operation._disconnect(error);\n }\n });\n }\n}\n\n\nclass Node {\n constructor(coupler, path, parent) {\n this._coupler = coupler;\n this.path = path;\n this.parent = parent;\n this._coupler._url.pathname = encodeURI(path);\n this.url = this._coupler._url.toString();\n this.operations = [];\n this.queryCount = 0;\n this.listening = false;\n this.ready = false;\n this.children = {};\n }\n\n get active() {\n return this.count || this.queryCount;\n }\n\n get count() {\n return this.operations.length;\n }\n\n listen(skip) {\n if (!skip && this.count) {\n if (this.listening) return;\n _.forEach(this.operations, op => {this._coupler._dispatcher.clearReady(op);});\n this._coupler._bridge.on(\n this.url, this.url, null, 'value', this._handleSnapshot, this._handleError, this,\n {sync: true});\n this.listening = true;\n } else {\n _.forEach(this.children, child => {child.listen();});\n }\n }\n\n unlisten(skip) {\n if (!skip && this.listening) {\n this._coupler._bridge.off(this.url, this.url, null, 'value', this._handleSnapshot, this);\n this.listening = false;\n this._forAllDescendants(node => {\n if (node.listening) return false;\n if (node.ready) {\n node.ready = false;\n angular.digest();\n }\n });\n } else {\n _.forEach(this.children, child => {child.unlisten();});\n }\n }\n\n _handleSnapshot(snap) {\n this._coupler._queueSnapshotCallback(() => {\n if (!this.listening || !this._coupler.isTrunkCoupled(snap.path)) return;\n this._coupler._applySnapshot(snap);\n if (!this.ready && snap.path === this.path) {\n this.ready = true;\n angular.digest();\n this.unlisten(true);\n this._forAllDescendants(node => {\n for (const op of node.operations) this._coupler._dispatcher.markReady(op);\n });\n }\n });\n }\n\n _handleError(error) {\n if (!this.count || !this.listening) return;\n this.listening = false;\n this._forAllDescendants(node => {\n if (node.listening) return false;\n if (node.ready) {\n node.ready = false;\n angular.digest();\n }\n for (const op of node.operations) this._coupler._dispatcher.clearReady(op);\n });\n // Immediately prune all data below this node. We don't want to decouple it since the operation\n // may want to retry. We also don't want to look for other coupled paths below (that may not be\n // subject to the permission denied error) since they're not listening and the data would get\n // stale. If this node doesn't retry and gets decoupled we'll automatically start listening on\n // descendants and (try to) refill the subtrees.\n this._coupler._prunePath(this.path);\n return Promise.all(_.map(this.operations, op => {\n return this._coupler._dispatcher.retry(op, error).catch(e => {\n op._disconnect(e);\n return false;\n });\n })).then(results => {\n if (_.some(results)) {\n if (this.count) this.listen();\n } else {\n for (const op of this.operations) op._disconnect(error);\n // Pulling all the operations will automatically get us listening on descendants.\n }\n });\n }\n\n _forAllDescendants(iteratee) {\n if (iteratee(this) === false) return;\n _.forEach(this.children, child => child._forAllDescendants(iteratee));\n }\n\n collectCoupledDescendantPaths(paths) {\n if (!paths) paths = {};\n paths[this.path] = this.active;\n if (!this.active) {\n _.forEach(this.children, child => {child.collectCoupledDescendantPaths(paths);});\n }\n return paths;\n }\n}\n\n\nexport default class Coupler {\n constructor(rootUrl, bridge, dispatcher, applySnapshot, prunePath) {\n this._url = new URL(rootUrl);\n this._bridge = bridge;\n this._dispatcher = dispatcher;\n this._applySnapshot = applySnapshot;\n this._pendingSnapshotCallbacks = [];\n this._throttled = {processPendingSnapshots: this._processPendingSnapshots};\n this._prunePath = prunePath;\n this._vue = new Vue({data: {root: undefined, queryHandlers: {}}});\n // Prevent Vue from instrumenting rendering since there's actually nothing to render, and the\n // warnings cause false positives from Lodash primitives when running tests.\n this._vue._renderProxy = this._vue;\n this._nodeIndex = Object.create(null);\n Object.freeze(this);\n // Set root node after freezing Coupler, otherwise it gets vue-ified too.\n this._vue.$data.root = new Node(this, '/');\n this._nodeIndex['/'] = this._root;\n }\n\n get _root() {\n return this._vue.$data.root;\n }\n\n get _queryHandlers() {\n return this._vue.$data.queryHandlers;\n }\n\n destroy() {\n _.forEach(this._queryHandlers, queryHandler => {queryHandler.destroy();});\n this._root.unlisten();\n this._vue.$destroy();\n }\n\n couple(path, operation) {\n return this._coupleSegments(splitPath(path, true), operation);\n }\n\n _coupleSegments(segments, operation) {\n let node;\n let superseded = !operation;\n let ready = false;\n for (const segment of segments) {\n let child = segment ? node.children && node.children[segment] : this._root;\n if (!child) {\n child = new Node(this, `${node.path === '/' ? '' : node.path}/${segment}`, node);\n Vue.set(node.children, segment, child);\n this._nodeIndex[child.path] = child;\n }\n superseded = superseded || child.listening;\n ready = ready || child.ready;\n node = child;\n }\n if (operation) {\n node.operations.push(operation);\n } else {\n node.queryCount++;\n }\n if (superseded) {\n if (operation && ready) this._dispatcher.markReady(operation);\n } else {\n node.listen(); // node will call unlisten() on descendants when ready\n }\n }\n\n decouple(path, operation) {\n return this._decoupleSegments(splitPath(path, true), operation);\n }\n\n _decoupleSegments(segments, operation) {\n const ancestors = [];\n let node;\n for (const segment of segments) {\n node = segment ? node.children && node.children[segment] : this._root;\n if (!node) break;\n ancestors.push(node);\n }\n if (!node || !(operation ? node.count : node.queryCount)) {\n throw new Error(`Path not coupled: ${segments.join('/') || '/'}`);\n }\n if (operation) {\n _.pull(node.operations, operation);\n } else {\n node.queryCount--;\n }\n if (operation && !node.count) {\n // Ideally, we wouldn't resync the full values here since we probably already have the current\n // value for all children. But making sure that's true is tricky in an async system (what if\n // the node's value changes and the update crosses the 'off' call in transit?) and this\n // situation should be sufficiently rare that the optimization is probably not worth it right\n // now.\n node.listen();\n if (node.listening) node.unlisten();\n }\n if (!node.active) {\n for (let i = ancestors.length - 1; i > 0; i--) {\n node = ancestors[i];\n if (node === this._root || node.active || !_.isEmpty(node.children)) break;\n Vue.delete(ancestors[i - 1].children, segments[i]);\n node.ready = undefined;\n delete this._nodeIndex[node.path];\n }\n const path = segments.join('/') || '/';\n this._prunePath(path, this.findCoupledDescendantPaths(path));\n }\n }\n\n subscribe(query, operation, keysCallback) {\n let queryHandler = this._queryHandlers[query.toString()];\n if (!queryHandler) {\n queryHandler = new QueryHandler(this, query);\n Vue.set(this._queryHandlers, query.toString(), queryHandler);\n }\n queryHandler.attach(operation, keysCallback);\n }\n\n unsubscribe(query, operation) {\n const queryHandler = this._queryHandlers[query.toString()];\n if (queryHandler && !queryHandler.detach(operation)) {\n queryHandler.destroy();\n Vue.delete(this._queryHandlers, query.toString());\n }\n }\n\n // Return whether the node at path or any ancestors are coupled.\n isTrunkCoupled(path) {\n const segments = splitPath(path, true);\n let node;\n for (const segment of segments) {\n node = segment ? node.children && node.children[segment] : this._root;\n if (!node) return false;\n if (node.active) return true;\n }\n return false;\n }\n\n findCoupledDescendantPaths(path) {\n let node;\n for (const segment of splitPath(path, true)) {\n node = segment ? node.children && node.children[segment] : this._root;\n if (node && node.active) return {[path]: node.active};\n if (!node) break;\n }\n return node && node.collectCoupledDescendantPaths();\n }\n\n isSubtreeReady(path) {\n let node, childSegment;\n function extractChildSegment(match) {\n childSegment = match.slice(1);\n return '';\n }\n while (!(node = this._nodeIndex[path])) {\n path = path.replace(/\\/[^/]*$/, extractChildSegment) || '/';\n }\n if (childSegment) void node.children; // state an interest in the closest ancestor's children\n while (node) {\n if (node.ready) return true;\n node = node.parent;\n }\n return false;\n }\n\n isQueryReady(query) {\n const queryHandler = this._queryHandlers[query.toString()];\n return queryHandler && queryHandler.ready;\n }\n\n _queueSnapshotCallback(callback) {\n this._pendingSnapshotCallbacks.push(callback);\n this._throttled.processPendingSnapshots.call(this);\n }\n\n _processPendingSnapshots() {\n for (const callback of this._pendingSnapshotCallbacks) callback();\n // Property is frozen, so we need to splice to empty the array.\n this._pendingSnapshotCallbacks.splice(0, Infinity);\n }\n\n throttleSnapshots(delay) {\n if (delay) {\n this._throttled.processPendingSnapshots =\n _.debounce(_.throttle(this._processPendingSnapshots, delay));\n } else {\n this._throttled.processPendingSnapshots = this._processPendingSnapshots;\n }\n }\n}\n\n","import angular from './angularCompatibility.js';\nimport Coupler from './Coupler.js';\nimport Modeler from './Modeler.js';\nimport Reference from './Reference.js';\nimport {escapeKey, escapeKeys, unescapeKey, joinPath, splitPath} from './utils/paths.js';\nimport {wrapPromiseCallback, promiseFinally} from './utils/promises.js';\nimport {SERVER_TIMESTAMP} from './utils/utils.js';\n\nimport _ from 'lodash';\nimport Vue from 'vue';\n\n\nclass Transaction {\n constructor(ref) {\n this._ref = ref;\n this._outcome = undefined;\n this._values = undefined;\n }\n\n get currentValue() {return this._ref.value;}\n get outcome() {return this._outcome;}\n get values() {return this._values;}\n\n _setOutcome(value) {\n if (this._outcome) throw new Error('Transaction already resolved with ' + this._outcome);\n this._outcome = value;\n }\n\n abort() {\n this._setOutcome('abort');\n }\n\n cancel() {\n this._setOutcome('cancel');\n }\n\n set(value) {\n if (value === undefined) throw new Error('Invalid argument: undefined');\n this._setOutcome('set');\n this._values = {'': value};\n }\n\n update(values) {\n if (values === undefined) throw new Error('Invalid argument: undefined');\n if (_.isEmpty(values)) return this.cancel();\n this._setOutcome('update');\n this._values = values;\n }\n}\n\n\nexport default class Tree {\n constructor(truss, rootUrl, bridge, dispatcher) {\n this._truss = truss;\n this._url = new URL(rootUrl);\n this._bridge = bridge;\n this._dispatcher = dispatcher;\n this._firebasePropertyEditAllowed = false;\n this._writeSerial = 0;\n this._localWrites = {};\n this._localWriteTimestamp = null;\n this._initialized = false;\n this._vue = new Vue({data: {$root: undefined}});\n this._modeler = new Modeler(this._vue, truss.constructor.VERSION === 'dev');\n this._coupler = new Coupler(\n rootUrl, bridge, dispatcher, this._integrateSnapshot.bind(this), this._prune.bind(this));\n Object.seal(this);\n // Call this.init(classes) to complete initialization; we need two phases so that truss can bind\n // the tree into its own accessors prior to defining computed functions, which may try to\n // access the tree root via truss.\n }\n\n get root() {\n if (!this._vue.$data.$root) {\n this._vue.$data.$root = this._createObject('/');\n this._fixObject(this._vue.$data.$root);\n this._completeCreateObject(this._vue.$data.$root);\n angular.digest();\n }\n return this._vue.$data.$root;\n }\n\n get truss() {\n return this._truss;\n }\n\n init(classes) {\n if (this._initialized) {\n throw new Error('Data objects already created, too late to mount classes');\n }\n this._initialized = true;\n this._modeler.init(classes, !this._vue.$data.$root);\n const createdObjects = [];\n this._plantPlaceholders(this.root, '/', undefined, createdObjects);\n for (const object of createdObjects) this._completeCreateObject(object);\n }\n\n destroy() {\n this._coupler.destroy();\n if (this._modeler) this._modeler.destroy();\n this._vue.$destroy();\n }\n\n connectReference(ref, method) {\n this._checkHandle(ref);\n const operation = this._dispatcher.createOperation('read', method, ref);\n let unwatch;\n operation._disconnect = this._disconnectReference.bind(this, ref, operation, unwatch);\n this._dispatcher.begin(operation).then(() => {\n if (operation.running && !operation._disconnected) {\n this._coupler.couple(ref.path, operation);\n operation._coupled = true;\n }\n }).catch(_.noop); // ignore exception, let onFailure handlers deal with it\n return operation._disconnect;\n }\n\n _disconnectReference(ref, operation, unwatch, error) {\n if (operation._disconnected) return;\n operation._disconnected = true;\n if (unwatch) unwatch();\n if (operation._coupled) {\n this._coupler.decouple(ref.path, operation); // will call back to _prune if necessary\n operation._coupled = false;\n }\n this._dispatcher.end(operation, error).catch(_.noop);\n }\n\n isReferenceReady(ref) {\n this._checkHandle(ref);\n return this._coupler.isSubtreeReady(ref.path);\n }\n\n connectQuery(query, keysCallback, method) {\n this._checkHandle(query);\n const operation = this._dispatcher.createOperation('read', method, query);\n operation._disconnect = this._disconnectQuery.bind(this, query, operation);\n this._dispatcher.begin(operation).then(() => {\n if (operation.running && !operation._disconnected) {\n this._coupler.subscribe(query, operation, keysCallback);\n operation._coupled = true;\n }\n }).catch(_.noop); // ignore exception, let onFailure handlers deal with it\n return operation._disconnect;\n }\n\n _disconnectQuery(query, operation, error) {\n if (operation._disconnected) return;\n operation._disconnected = true;\n if (operation._coupled) {\n this._coupler.unsubscribe(query, operation); // will call back to _prune if necessary\n operation._coupled = false;\n }\n this._dispatcher.end(operation, error).catch(_.noop);\n }\n\n isQueryReady(query) {\n return this._coupler.isQueryReady(query);\n }\n\n _checkHandle(handle) {\n if (!handle.belongsTo(this._truss)) {\n throw new Error('Reference belongs to another Truss instance');\n }\n }\n\n throttleRemoteDataUpdates(delay) {\n this._coupler.throttleSnapshots(delay);\n }\n\n update(ref, method, values) {\n values = _.mapValues(values, value => escapeKeys(value));\n const numValues = _.size(values);\n if (!numValues) return Promise.resolve();\n if (method === 'update' || method === 'override') {\n checkUpdateHasOnlyDescendantsWithNoOverlap(ref.path, values);\n }\n if (this._applyLocalWrite(values, method === 'override')) return Promise.resolve();\n const pathPrefix = extractCommonPathPrefix(values);\n relativizePaths(pathPrefix, values);\n if (pathPrefix !== ref.path) ref = new Reference(ref._tree, pathPrefix, ref._annotations);\n this._url.pathname = encodeURI(pathPrefix);\n const url = this._url.toString();\n const writeSerial = this._writeSerial;\n const set = numValues === 1;\n const operand = set ? values[''] : values;\n return this._dispatcher.execute('write', set ? 'set' : 'update', ref, operand, () => {\n const promise = this._bridge[set ? 'set' : 'update'](url, operand, writeSerial);\n return promise.catch(e => {\n if (!e.immediateFailure) return Promise.reject(e);\n return promiseFinally(this._repair(ref, values), () => Promise.reject(e));\n });\n });\n }\n\n commit(ref, updateFunction) {\n let tries = 0, sameValueCount = 0;\n const attemptCounts = {};\n updateFunction = wrapPromiseCallback(updateFunction);\n\n const attemptTransaction = counter => {\n if (tries++ >= 25) {\n const error = new Error('Transaction needed too many retries, giving up');\n try {\n _.assign(error, {attemptCounts, sameValueCount});\n } catch {\n // ignore\n }\n return Promise.reject(error);\n }\n counter = counter || 'initial';\n attemptCounts[counter] = (attemptCounts[counter] || 0) + 1;\n const txn = new Transaction(ref);\n let oldValue;\n // Ensure that Vue's watcher queue gets emptied and computed properties are up to date before\n // running the updateFunction.\n return Vue.nextTick().then(() => {\n const newOldValue = toFirebaseJson(txn.currentValue);\n if (_.isEqual(newOldValue, oldValue)) sameValueCount += 1;\n oldValue = newOldValue;\n return updateFunction(txn);\n }).then(() => {\n if (!_.isEqual(oldValue, toFirebaseJson(txn.currentValue))) {\n return attemptTransaction('changed');\n }\n if (txn.outcome === 'abort') return txn; // early return to save time\n const values = _.mapValues(txn.values, value => escapeKeys(value));\n switch (txn.outcome) {\n case 'cancel':\n break;\n case 'set':\n if (this._applyLocalWrite({[ref.path]: values['']})) return Promise.resolve();\n break;\n case 'update':\n checkUpdateHasOnlyDescendantsWithNoOverlap(ref.path, values);\n if (this._applyLocalWrite(values)) return Promise.resolve();\n relativizePaths(ref.path, values);\n break;\n default:\n throw new Error('Invalid transaction outcome: ' + (txn.outcome || 'none'));\n }\n this._url.pathname = encodeURI(ref.path);\n return this._bridge.transaction(\n this._url.toString(), oldValue, values, this._writeSerial\n ).then(result => {\n _.forEach(result.snapshots, snapshot => this._integrateSnapshot(snapshot));\n return result.committed ? txn : attemptTransaction('stale');\n }, e => {\n if (e.immediateFailure && (txn.outcome === 'set' || txn.outcome === 'update')) {\n return promiseFinally(this._repair(ref, values), () => Promise.reject(e));\n }\n return Promise.reject(e);\n });\n });\n };\n\n return this._truss.peek(ref, () => {\n return this._dispatcher.execute('write', 'commit', ref, undefined, attemptTransaction);\n });\n }\n\n _repair(ref, values) {\n // If a write fails early -- that is, before it gets applied to the Firebase client's local\n // tree -- then we need to repair our own local tree manually since Firebase won't send events\n // to unwind the change. This should be very rare since it's always due to a developer mistake\n // so we don't need to be particularly efficient.\n const basePath = ref.path;\n const paths = _(values).keys().flatMap(key => {\n let path = basePath;\n if (key) path = joinPath(path, key);\n return _.keys(this._coupler.findCoupledDescendantPaths(path));\n }).value();\n return Promise.all(_.map(paths, path => {\n this._url.pathname = encodeURI(path);\n return this._bridge.once(this._url.toString()).then(snap => {\n this._integrateSnapshot(snap);\n });\n }));\n }\n\n _applyLocalWrite(values, override) {\n // TODO: correctly apply local writes that impact queries. Currently, a local write will update\n // any objects currently selected by a query, but won't add or remove results.\n this._writeSerial++;\n this._localWriteTimestamp = this._truss.now;\n const createdObjects = [];\n let numLocal = 0;\n _.forEach(values, (value, path) => {\n const local = this._modeler.isLocal(path, value);\n if (local) numLocal++;\n const coupledDescendantPaths =\n local ? {[path]: true} : this._coupler.findCoupledDescendantPaths(path);\n if (_.isEmpty(coupledDescendantPaths)) return;\n const offset = (path === '/' ? 0 : path.length) + 1;\n for (const descendantPath in coupledDescendantPaths) {\n const subPath = descendantPath.slice(offset);\n let subValue = value;\n if (subPath && value !== null && value !== undefined) {\n for (const segment of splitPath(subPath)) {\n subValue = subValue.$data[segment];\n if (subValue === undefined) break;\n }\n }\n if (_.isNil(subValue)) {\n this._prune(descendantPath);\n } else {\n const key = _.last(splitPath(descendantPath));\n this._plantValue(\n descendantPath, key, subValue,\n this._scaffoldAncestors(descendantPath, false, createdObjects), false, override, local,\n createdObjects\n );\n }\n if (!override && !local) this._localWrites[descendantPath] = this._writeSerial;\n }\n });\n for (const object of createdObjects) this._completeCreateObject(object);\n if (numLocal && numLocal < _.size(values)) {\n throw new Error('Write on a mix of local and remote tree paths.');\n }\n return override || !!numLocal;\n }\n\n /**\n * Creates a Truss object and sets all its basic properties: path segment variables, user-defined\n * properties, and computed properties. The latter two will be enumerable so that Vue will pick\n * them up and make the reactive, so you should call _completeCreateObject once it's done so and\n * before any Firebase properties are added.\n */\n _createObject(path, parent) {\n if (!this._initialized && path !== '/') this.init();\n const properties = {\n // We want Vue to wrap this; we'll make it non-enumerable in _fixObject.\n $parent: {value: parent, configurable: true, enumerable: true},\n $path: {value: path}\n };\n if (path === '/') properties.$truss = {value: this._truss};\n\n const object = this._modeler.createObject(path, properties);\n this._modeler.emitLifecycleHook(object, 'beforeCreate');\n this._defineObjectProperties(object, properties);\n return object;\n }\n\n _defineObjectProperties(object, properties) {\n const observer = object.__ob__;\n Object.defineProperties(object, properties);\n if (!observer) return;\n\n let addedReactiveProperties = false;\n for (const name of _.keys(properties)) {\n const descriptor = Object.getOwnPropertyDescriptor(object, name);\n if (!descriptor.configurable || !descriptor.enumerable) continue;\n Vue.util.defineReactive(object, name);\n addedReactiveProperties = true;\n }\n if (addedReactiveProperties) observer.dep.notify();\n }\n\n // To be called on the result of _createObject after it's been inserted into the _vue hierarchy\n // and Vue has had a chance to initialize it.\n _fixObject(object) {\n for (const name of Object.getOwnPropertyNames(object)) {\n const descriptor = Object.getOwnPropertyDescriptor(object, name);\n if (descriptor.configurable && descriptor.enumerable) {\n descriptor.enumerable = false;\n if (_.startsWith(name, '$')) descriptor.configurable = false;\n Object.defineProperty(object, name, descriptor);\n }\n }\n }\n\n // To be called on the result of _createObject after _fixObject, and after any additional Firebase\n // properties have been set, to run initializers.\n _completeCreateObject(object) {\n this._modeler.emitLifecycleHook(object, 'created');\n }\n\n _destroyObject(object) {\n if (!(object && object.$truss) || object.$destroyed) return;\n this._modeler.emitLifecycleHook(object, 'beforeDestroy');\n this._modeler.destroyObject(object);\n // Normally we'd only destroy enumerable children, which are the Firebase properties. However,\n // clients have the option of creating hidden placeholders, so we need to scan non-enumerable\n // properties as well. To distinguish such placeholders from the myriad other non-enumerable\n // properties (that lead all over tree, e.g. $parent), we check that the property's parent is\n // ourselves before destroying.\n for (const key of Object.getOwnPropertyNames(object.$data)) {\n const child = object.$data[key];\n if (child && child.$parent === object) this._destroyObject(child);\n }\n this._modeler.emitLifecycleHook(object, 'destroyed');\n }\n\n _integrateSnapshot(snap) {\n _.forEach(this._localWrites, (writeSerial, path) => {\n if (snap.writeSerial >= writeSerial) delete this._localWrites[path];\n });\n if (snap.exists) {\n const createdObjects = [];\n const parent = this._scaffoldAncestors(snap.path, true, createdObjects);\n if (parent) {\n this._plantValue(\n snap.path, snap.key, snap.value, parent, true, false, false, createdObjects);\n }\n for (const object of createdObjects) this._completeCreateObject(object);\n } else {\n this._prune(snap.path, null, true);\n }\n }\n\n _scaffoldAncestors(path, remoteWrite, createdObjects) {\n let object;\n const segments = _.dropRight(splitPath(path, true));\n let ancestorPath = '/';\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const key = unescapeKey(segment);\n let child = segment ? object.$data[key] : this.root;\n if (segment) ancestorPath += (ancestorPath === '/' ? '' : '/') + segment;\n if (child) {\n if (remoteWrite && this._localWrites[ancestorPath]) return;\n } else {\n child = this._plantValue(\n ancestorPath, key, {}, object, remoteWrite, false, false, createdObjects);\n if (!child) return;\n }\n object = child;\n }\n return object;\n }\n\n _plantValue(path, key, value, parent, remoteWrite, override, local, createdObjects) {\n if (remoteWrite && _.isNil(value)) {\n throw new Error(`Snapshot includes invalid value at ${path}: ${value}`);\n }\n if (remoteWrite && this._localWrites[path || '/']) return;\n if (_.isEqual(value, SERVER_TIMESTAMP)) value = this._localWriteTimestamp;\n let object = parent.$data[key];\n if (!_.isArray(value) && !(local ? _.isPlainObject(value) : _.isObject(value))) {\n this._destroyObject(object);\n if (!local && _.isNil(value)) {\n this._deleteFirebaseProperty(parent, key);\n } else {\n this._setFirebaseProperty(parent, key, value);\n }\n return;\n }\n let objectCreated = false;\n if (!_.isObject(object)) {\n // Need to pre-set the property, so that if the child object attempts to watch any of its own\n // properties while being created the $$touchThis method has something to add a dependency on\n // as the object's own properties won't be made reactive until *after* it's been created.\n this._setFirebaseProperty(parent, key, null);\n object = this._createObject(path, parent);\n this._setFirebaseProperty(parent, key, object, object.$hidden);\n this._fixObject(object);\n createdObjects.push(object);\n objectCreated = true;\n }\n if (override) {\n Object.defineProperty(object, '$overridden', {get: _.constant(true), configurable: true});\n } else if (object.$overridden) {\n delete object.$overridden;\n }\n // Plant hidden placeholders first, so their computed watchers will have a similar precedence to\n // the parent object, and the parent object's other children will get computed first. This can\n // optimize updates when parts of a complex model are broken out into hidden sub-models, and\n // shouldn't risk being overwritten by actual Firebase data since that will rarely (never?) be\n // hidden.\n if (objectCreated) this._plantPlaceholders(object, path, true, createdObjects);\n _.forEach(value, (item, escapedChildKey) => {\n this._plantValue(\n joinPath(path, escapedChildKey), unescapeKey(escapedChildKey), item, object, remoteWrite,\n override, local, createdObjects\n );\n });\n if (objectCreated) {\n this._plantPlaceholders(object, path, false, createdObjects);\n } else {\n _.forEach(object.$data, (item, childKey) => {\n const escapedChildKey = escapeKey(childKey);\n if (!Object.hasOwn(value, escapedChildKey)) {\n this._prune(joinPath(path, escapedChildKey), null, remoteWrite);\n }\n });\n }\n return object;\n }\n\n _plantPlaceholders(object, path, hidden, createdObjects) {\n this._modeler.forEachPlaceholderChild(path, mount => {\n if (hidden !== undefined && hidden !== !!mount.hidden) return;\n const key = unescapeKey(mount.escapedKey);\n if (!Object.hasOwn(object.$data, key)) {\n this._plantValue(\n joinPath(path, mount.escapedKey), key, mount.placeholder, object, false, false, false,\n createdObjects);\n }\n });\n }\n\n _prune(path, lockedDescendantPaths, remoteWrite) {\n lockedDescendantPaths = lockedDescendantPaths || {};\n const object = this.getObject(path);\n if (object === undefined) return;\n if (remoteWrite && this._avoidLocalWritePaths(path, lockedDescendantPaths)) return;\n if (!(_.isEmpty(lockedDescendantPaths) && this._pruneAncestors(path, object)) &&\n _.isObject(object)) {\n // The target object is a placeholder, and all ancestors are placeholders or otherwise needed\n // as well, so we can't delete it. Instead, dive into its descendants to delete what we can.\n this._pruneDescendants(object, lockedDescendantPaths);\n }\n }\n\n _avoidLocalWritePaths(path, lockedDescendantPaths) {\n for (const localWritePath in this._localWrites) {\n if (!Object.hasOwn(this._localWrites, localWritePath)) continue;\n if (path === localWritePath || localWritePath === '/' ||\n _.startsWith(path, localWritePath + '/')) return true;\n if (path === '/' || _.startsWith(localWritePath, path + '/')) {\n const segments = splitPath(localWritePath, true);\n for (let i = segments.length; i > 0; i--) {\n const subPath = segments.slice(0, i).join('/');\n const active = i === segments.length;\n if (lockedDescendantPaths[subPath] || lockedDescendantPaths[subPath] === active) break;\n lockedDescendantPaths[subPath] = active;\n if (subPath === path) break;\n }\n }\n }\n }\n\n _pruneAncestors(targetPath, targetObject) {\n // Destroy the child (unless it's a placeholder that's still needed) and any ancestors that\n // are no longer needed to keep this child rooted, and have no other reason to exist.\n let deleted = false;\n let object = targetObject;\n // The target object may be a primitive, in which case it won't have $path, $parent and $key\n // properties. In that case, use the target path to figure those out instead. Note that all\n // ancestors of the target object will necessarily not be primitives and will have those\n // properties.\n let targetKey;\n const targetParentPath = targetPath.replace(/\\/[^/]+$/, match => {\n targetKey = unescapeKey(match.slice(1));\n return '';\n });\n while (object !== undefined && object !== this.root) {\n const parent =\n object && object.$parent || object === targetObject && this.getObject(targetParentPath);\n if (!this._modeler.isPlaceholder(object && object.$path || targetPath)) {\n const ghostObjects = deleted ? null : [targetObject];\n if (!this._holdsConcreteData(object, ghostObjects)) {\n deleted = true;\n this._deleteFirebaseProperty(\n parent, object && object.$key || object === targetObject && targetKey);\n }\n }\n object = parent;\n }\n return deleted;\n }\n\n _holdsConcreteData(object, ghostObjects) {\n if (_.isNil(object)) return false;\n if (ghostObjects && _.includes(ghostObjects, object)) return false;\n if (!_.isObject(object) || !object.$truss) return true;\n return _.some(object.$data, value => this._holdsConcreteData(value, ghostObjects));\n }\n\n _pruneDescendants(object, lockedDescendantPaths) {\n if (lockedDescendantPaths[object.$path]) return true;\n if (object.$overridden) delete object.$overridden;\n let coupledDescendantFound = false;\n _.forEach(object.$data, (value, key) => {\n let shouldDelete = true;\n let valueLocked;\n if (lockedDescendantPaths[joinPath(object.$path, escapeKey(key))]) {\n shouldDelete = false;\n valueLocked = true;\n } else if (!_.isNil(value) && value.$truss) {\n const placeholder = this._modeler.isPlaceholder(value.$path);\n if (placeholder || _.has(lockedDescendantPaths, value.$path)) {\n valueLocked = this._pruneDescendants(value, lockedDescendantPaths);\n shouldDelete = !placeholder && !valueLocked;\n }\n }\n if (shouldDelete) this._deleteFirebaseProperty(object, key);\n coupledDescendantFound = coupledDescendantFound || valueLocked;\n });\n return coupledDescendantFound;\n }\n\n getObject(path) {\n const segments = splitPath(path);\n let object;\n for (const segment of segments) {\n object = segment ? object.$data[segment] : this.root;\n if (object === undefined) return;\n }\n return object;\n }\n\n _getFirebasePropertyDescriptor(object, data, key) {\n const descriptor = Object.getOwnPropertyDescriptor(data, key);\n if (descriptor) {\n if (!descriptor.enumerable) {\n const child = data[key];\n if (!child || child.$parent !== object) {\n throw new Error(\n `Key conflict between Firebase and instance or computed properties at ` +\n `${object.$path}: ${key}`);\n }\n }\n if (!descriptor.get || !descriptor.set) {\n throw new Error(`Unbound property at ${object.$path}: ${key}`);\n }\n } else if (key in data) {\n throw new Error(\n `Key conflict between Firebase and inherited property at ${object.$path}: ${key}`);\n }\n return descriptor;\n }\n\n _setFirebaseProperty(object, key, value, hidden) {\n const data = Object.hasOwn(object, '$data') ? object.$data : object;\n let descriptor = this._getFirebasePropertyDescriptor(object, data, key);\n if (descriptor) {\n if (hidden) {\n // Redefine property as hidden after it's been created, since we usually don't know whether\n // it should be hidden until too late. This is a one-way deal -- you can't unhide a\n // property later, but that's fine for our purposes.\n Object.defineProperty(data, key, {\n get: descriptor.get, set: descriptor.set, configurable: true, enumerable: false\n });\n }\n if (data[key] === value) return;\n this._firebasePropertyEditAllowed = true;\n data[key] = value;\n this._firebasePropertyEditAllowed = false;\n } else {\n Vue.set(data, key, value);\n descriptor = Object.getOwnPropertyDescriptor(data, key);\n Object.defineProperty(data, key, {\n get: descriptor.get, set: this._overwriteFirebaseProperty.bind(this, descriptor, key),\n configurable: true, enumerable: !hidden\n });\n }\n angular.digest();\n }\n\n _overwriteFirebaseProperty(descriptor, key, newValue) {\n if (!this._firebasePropertyEditAllowed) {\n const e = new Error(`Firebase data cannot be mutated directly: ${key}`);\n e.trussCode = 'firebase_overwrite';\n throw e;\n }\n descriptor.set.call(this, newValue);\n }\n\n _deleteFirebaseProperty(object, key) {\n const data = Object.hasOwn(object, '$data') ? object.$data : object;\n // Make sure it's actually a Firebase property.\n this._getFirebasePropertyDescriptor(object, data, key);\n this._destroyObject(data[key]);\n Vue.delete(data, key);\n angular.digest();\n }\n\n checkVueObject(object, path) {\n this._modeler.checkVueObject(object, path);\n }\n}\n\n\nexport function checkUpdateHasOnlyDescendantsWithNoOverlap(rootPath, values) {\n // First, check all paths for correctness and absolutize them, since there could be a mix of\n // absolute paths and relative keys.\n _.forEach(_.keys(values), path => {\n if (path.charAt(0) === '/') {\n if (!(path === rootPath || rootPath === '/' ||\n _.startsWith(path, rootPath + '/') && path.length > rootPath.length + 1)) {\n throw new Error(`Update item is not a descendant of target ref: ${path}`);\n }\n } else {\n if (_.includes(path, '/')) {\n throw new Error(`Update item deep path must be absolute, taken from a reference: ${path}`);\n }\n const absolutePath = joinPath(rootPath, escapeKey(path));\n if (Object.hasOwn(values, absolutePath)) {\n throw new Error(`Update items overlap: ${path} and ${absolutePath}`);\n }\n values[absolutePath] = values[path];\n delete values[path];\n }\n });\n // Then check for overlaps;\n const allPaths = _(values).keys().map(path => joinPath(path, '')).sortBy('length').value();\n _.forEach(values, (value, path) => {\n for (const otherPath of allPaths) {\n if (otherPath.length > path.length) break;\n if (path !== otherPath && _.startsWith(path, otherPath)) {\n throw new Error(`Update items overlap: ${otherPath} and ${path}`);\n }\n }\n });\n}\n\nexport function extractCommonPathPrefix(values) {\n let prefixSegments;\n _.forEach(values, (value, path) => {\n const segments = path === '/' ? [''] : splitPath(path, true);\n if (prefixSegments) {\n let firstMismatchIndex = 0;\n const maxIndex = Math.min(prefixSegments.length, segments.length);\n while (firstMismatchIndex < maxIndex &&\n prefixSegments[firstMismatchIndex] === segments[firstMismatchIndex]) {\n firstMismatchIndex++;\n }\n prefixSegments = prefixSegments.slice(0, firstMismatchIndex);\n if (!prefixSegments.length) return false;\n } else {\n prefixSegments = segments;\n }\n });\n return prefixSegments.length === 1 ? '/' : prefixSegments.join('/');\n}\n\nexport function relativizePaths(rootPath, values) {\n const offset = rootPath === '/' ? 1 : rootPath.length + 1;\n _.forEach(_.keys(values), path => {\n values[path.slice(offset)] = values[path];\n delete values[path];\n });\n}\n\nexport function toFirebaseJson(object) {\n if (!_.isObject(object)) return object;\n const result = {};\n const data = object.$data;\n for (const key in data) {\n if (Object.hasOwn(data, key)) result[escapeKey(key)] = toFirebaseJson(data[key]);\n }\n return result;\n}\n","import _ from 'lodash';\nimport Vue from 'vue';\nimport angular from './angularCompatibility.js';\nimport Bridge from './Bridge.js';\nimport Connector from './Connector.js';\nimport Dispatcher from './Dispatcher.js';\nimport KeyGenerator from './KeyGenerator.js';\nimport MetaTree from './MetaTree.js';\nimport {Handle} from './Reference.js';\nimport {BaseValue} from './Modeler.js';\nimport Tree from './Tree.js';\nimport stats from './utils/stats.js';\nimport {escapeKey, unescapeKey} from './utils/paths.js';\nimport {wrapPromiseCallback, promiseCancel, promiseFinally} from './utils/promises.js';\nimport {SERVER_TIMESTAMP, copyPrototype} from './utils/utils.js';\n\n\nlet bridge, logging;\nconst workerFunctions = {};\n// This version is filled in by the build, don't reformat the line.\nconst VERSION = 'dev';\n\n\nexport default class Truss {\n\n /**\n * Create a new Truss instance, specific to a given datastore. To avoid confusion there should be\n * exactly one Truss per root datastore URL, so in most code this will be a singleton.\n *\n * @param rootUrl {String} The root URL, https://{project}.firebaseio.com.\n */\n constructor(rootUrl) {\n // TODO: allow rootUrl to be a test database object for testing\n if (!bridge) {\n throw new Error('Truss worker not connected, please call Truss.connectWorker first');\n }\n this._rootUrl = rootUrl.replace(/\\/$/, '');\n this._keyGenerator = new KeyGenerator();\n this._dispatcher = new Dispatcher(bridge);\n this._vue = new Vue();\n\n bridge.trackServer(this._rootUrl);\n this._tree = new Tree(this, this._rootUrl, bridge, this._dispatcher);\n this._metaTree = new MetaTree(this._rootUrl, this._tree, bridge, this._dispatcher);\n\n Object.freeze(this);\n }\n\n get info() {return this._metaTree.root;}\n get store() {return this._tree.root;}\n\n /**\n * Mount a set of classes against the datastore structure. Must be called at most once, and\n * cannot be called once any data has been loaded into the tree.\n * @param classes {Array | Object} A list of the classes to map onto the\n * datastore structure. Each class must have a static $trussMount property that is a\n * (wildcarded) unescaped datastore path, or an options object\n * {path: string, placeholder: object}, or an array of either. If the list is an object then\n * the keys serve as default option-less $trussMount paths for classes that don't define an\n * explicit $trussMount.\n */\n mount(classes) {\n this._tree.init(classes);\n }\n\n destroy() {\n this._vue.$destroy();\n this._tree.destroy();\n this._metaTree.destroy();\n }\n\n get now() {return Date.now() + this.info.timeOffset;}\n newKey() {return this._keyGenerator.generateUniqueKey(this.now);}\n\n authenticate(token) {\n return this._metaTree.authenticate(token);\n }\n\n unauthenticate() {\n return this._metaTree.unauthenticate();\n }\n\n intercept(actionType, callbacks) {\n return this._dispatcher.intercept(actionType, callbacks);\n }\n\n // connections are {key: Query | Object | fn() -> (Query | Object)}\n connect(scope, connections) {\n if (!connections) {\n connections = scope;\n scope = undefined;\n }\n if (connections instanceof Handle || _.isFunction(connections)) connections = {_: connections};\n return new Connector(scope, connections, this._tree, 'connect');\n }\n\n // target is Reference, Query, or connection Object like above\n peek(target, callback) {\n callback = wrapPromiseCallback(callback || _.identity);\n let cleanup, cancel;\n const promise = Promise.resolve().then(() => new Promise((resolve, reject) => {\n const scope = {};\n let callbackPromise;\n\n let connector = new Connector(scope, {result: target}, this._tree, 'peek');\n\n let unintercept = this.intercept('peek', {onFailure: op => {\n function match(descriptor) {\n if (!descriptor) return;\n if (descriptor instanceof Handle) return op.target.isEqual(descriptor);\n return _.some(descriptor, value => match(value));\n }\n if (match(connector.at)) {\n reject(op.error);\n cleanup();\n }\n }});\n\n let unobserve = this.observe(() => connector.ready, ready => {\n if (!ready) return;\n unobserve();\n unobserve = null;\n callbackPromise = promiseFinally(\n callback(scope.result), () => {angular.digest(); callbackPromise = null; cleanup();}\n ).then(result => {resolve(result);}, error => {reject(error);});\n });\n\n cleanup = () => {\n if (unobserve) {unobserve(); unobserve = null;}\n if (unintercept) {unintercept(); unintercept = null;}\n if (connector) {connector.destroy(); connector = null;}\n if (callbackPromise && callbackPromise.cancel) callbackPromise.cancel();\n };\n\n cancel = () => {\n reject(new Error('Canceled'));\n cleanup();\n };\n }));\n return promiseCancel(promise, cancel);\n }\n\n observe(subjectFn, callbackFn, options) {\n const usePreciseDefaults = _.isObject(options && options.precise);\n let numCallbacks = 0;\n let oldValueClone;\n if (usePreciseDefaults) {\n oldValueClone = options.deep ? _.cloneDeep(options.precise) : _.clone(options.precise);\n }\n\n // This needs to be a `let` instead of a `const` to avoid a \"Cannot access before\n // initialization\" error.\n let unwatch;\n // eslint-disable-next-line prefer-const\n unwatch = this._vue.$watch(subjectFn, (newValue, oldValue) => {\n if (options && options.precise) {\n const newValueClone = usePreciseDefaults ?\n (options.deep ?\n _.defaultsDeep({}, newValue, options.precise) :\n _.defaults({}, newValue, options.precise)) :\n (options.deep ? _.cloneDeep(newValue) : _.clone(newValue));\n if (_.isEqual(newValueClone, oldValueClone)) return;\n oldValueClone = newValueClone;\n }\n numCallbacks++;\n if (unwatch || options && options.immediate) {\n callbackFn(newValue, oldValue);\n angular.digest();\n } else {\n // Delay the immediate callback until we've had a chance to return the unwatch function.\n Promise.resolve().then(() => {\n const vm = options && options.vm;\n if (numCallbacks > 1 || (vm && vm.$destroyed)) return;\n callbackFn(newValue, oldValue);\n // No need to digest since under Angular we'll be using $q as Promise.\n });\n }\n }, {immediate: true, deep: options && options.deep});\n\n if (options && options.scope) options.scope.$on('$destroy', unwatch);\n return unwatch;\n }\n\n when(expression, options) {\n let cleanup, timeoutHandle;\n let promise = new Promise((resolve, reject) => {\n let unobserve = this.observe(expression, value => {\n if (!value) return;\n // Wait for computed properties to settle and double-check.\n Vue.nextTick(() => {\n value = expression();\n if (!value) return;\n resolve(value);\n cleanup();\n });\n });\n if (_.has(options, 'timeout')) {\n timeoutHandle = setTimeout(() => {\n timeoutHandle = null;\n reject(new Error(options.timeoutMessage || 'Timeout'));\n cleanup();\n }, options.timeout);\n }\n cleanup = () => {\n if (unobserve) {unobserve(); unobserve = null;}\n if (timeoutHandle) {clearTimeout(timeoutHandle); timeoutHandle = null;}\n reject(new Error('Canceled'));\n };\n });\n promise = promiseCancel(promiseFinally(promise, cleanup), cleanup);\n if (options && options.scope) options.scope.$on('$destroy', () => {promise.cancel();});\n return promise;\n }\n\n nextTick() {\n let cleanup;\n let promise = new Promise((resolve, reject) => {\n Vue.nextTick(resolve);\n cleanup = () => {\n reject(new Error('Canceled'));\n };\n });\n promise = promiseCancel(promise, cleanup);\n return promise;\n }\n\n throttleRemoteDataUpdates(delay) {\n this._tree.throttleRemoteDataUpdates(delay);\n }\n\n checkObjectsForRogueProperties() {\n this._tree.checkVueObject(this._tree.root, '/');\n }\n\n static get computedPropertyStats() {\n return stats;\n }\n\n static async connectWorker(webWorker, config) {\n if (bridge) throw new Error('Worker already connected');\n if (_.isString(webWorker)) {\n const Worker = window.SharedWorker || window.Worker;\n if (!Worker) throw new Error('Browser does not implement Web Workers');\n if (!navigator.locks) throw new Error('Browser does not implement locks');\n webWorker = new Worker(webWorker);\n const random = window.crypto.getRandomValues(new Uint32Array(1))[0];\n webWorker.lockName = `truss_worker_lock_${Date.now()}.${random}`;\n await new Promise((resolve, reject) => {\n navigator.locks.request(webWorker.lockName, () => {\n resolve();\n // eslint-disable-next-line lodash/prefer-noop\n return new Promise(() => {/* release lock only on page exit or crash */});\n }).catch(reject);\n });\n }\n bridge = new Bridge(webWorker);\n if (logging) bridge.enableLogging(logging);\n const {exposedFunctionNames, firebaseSdkVersion} =\n await bridge.init(webWorker.lockName, config);\n Object.defineProperty(Truss, 'FIREBASE_SDK_VERSION', {value: firebaseSdkVersion});\n for (const name of exposedFunctionNames) Truss.preExpose(name);\n }\n\n static get worker() {return workerFunctions;}\n\n static preExpose(functionName) {\n const segments = functionName.split('.');\n let obj = Truss.worker;\n for (const segment of segments.slice(0, -1)) {\n if (!Object.hasOwnProperty.call(obj, segment)) obj[segment] = {};\n obj = obj[segment];\n }\n obj[segments[segments.length - 1]] = bridge.bindExposedFunction(functionName);\n }\n\n static bounceConnection() {return bridge.bounceConnection();}\n static suspend() {return bridge.suspend();}\n static debugPermissionDeniedErrors(simulatedTokenGenerator, maxSimulationDuration, callFilter) {\n return bridge.debugPermissionDeniedErrors(\n simulatedTokenGenerator, maxSimulationDuration, callFilter);\n }\n\n static debounceAngularDigest(wait) {\n angular.debounceDigest(wait);\n }\n\n static escapeKey(key) {return escapeKey(key);}\n static unescapeKey(escapedKey) {return unescapeKey(escapedKey);}\n\n static enableLogging(fn) {\n logging = fn;\n if (bridge) bridge.enableLogging(fn);\n }\n\n // Duplicate static constants on instance for convenience.\n get SERVER_TIMESTAMP() {return Truss.SERVER_TIMESTAMP;}\n get VERSION() {return Truss.VERSION;}\n get FIREBASE_SDK_VERSION() {return Truss.FIREBASE_SDK_VERSION;}\n}\n\nObject.defineProperties(Truss, {\n SERVER_TIMESTAMP: {value: SERVER_TIMESTAMP},\n VERSION: {value: VERSION},\n Model: {value: Object},\n\n ComponentPlugin: {value: {\n install(Vue2, pluginOptions) {\n if (Vue !== Vue2) throw new Error('Multiple versions of Vue detected');\n if (!pluginOptions.truss) {\n throw new Error('Need to pass `truss` instance as an option to use the ComponentPlugin');\n }\n const prototypeExtension = {\n $truss: {value: pluginOptions.truss},\n $destroyed: {get() {return this._isBeingDestroyed || this._isDestroyed;}},\n $$touchThis: {value() {if (this.__ob__) this.__ob__.dep.depend();}}\n };\n const conflictingKeys = _(prototypeExtension).keys()\n .union(_.keys(BaseValue.prototype)).intersection(_.keys(Vue.prototype)).value();\n if (conflictingKeys.length) {\n throw new Error(\n 'Truss extension properties conflict with Vue properties: ' + conflictingKeys.join(', '));\n }\n Object.defineProperties(Vue.prototype, prototypeExtension);\n copyPrototype(BaseValue, Vue);\n }\n }}\n});\n\nangular.defineModule(Truss);\n"],"names":["_","Vue","angular"],"mappings":"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"} \ No newline at end of file diff --git a/dist/firetruss.umd.min.js b/dist/firetruss.umd.min.js index f8983d1..e717802 100644 --- a/dist/firetruss.umd.min.js +++ b/dist/firetruss.umd.min.js @@ -1,2 +1,2 @@ -((e,t)=>{"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("lodash"),require("vue")):"function"==typeof define&&define.amd?define(["lodash","vue"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).Truss=t(e._,e.Vue)})(this,function(U,I){function e(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=e(U),u=e(I);function i(){a.digestRequest>n||(a.digestRequest=n+1)}let a,n=0,o=!1,c={active:"undefined"!=typeof window&&window.angular};if(c.active){let t=window.angular.module("firetruss",[]);c.digest=i,c.watch=function(){throw new Error("Angular watch proxy not yet initialized")},c.defineModule=function(e){t.constant("Truss",e)},c.debounceDigest=function(t){if(t){let e=_.default.debounce(i,t);c.digest=function(){a.digestRequest>n||(o?i:e)()}}else c.digest=i},t.config(["$provide",function(e){e.decorator("$rootScope",["$delegate","$exceptionHandler",function(t,e){let r=t;c.watch=r.$watch.bind(r);var t=Object.getPrototypeOf(r),s=t.$digest,t=(t.$digest=i,t.$digest.original=s,(a=new u.default({data:{digestRequest:0}})).$watch(()=>a.digestRequest,()=>{a.digestRequest>n?u.default.nextTick(()=>{a.digestRequest<=n||(o=!0,r.$digest.original.call(r),n=a.digestRequest=a.digestRequest+1)}):o=!1}),_.default.last(a._watchers||a._scope.effects));t.id=1/0;{let e=(s=Object.getPrototypeOf(t)).get;s.get=function(){try{return e.call(this)}catch(e){if(this.vm._watcher!==this||!u.default.config.errorHandler)throw e;u.default.config.errorHandler(e,this.vm,"uncaught render error")}}}return r}])}])}else _.default.forEach(["digest","watch","defineModule","debounceDigest"],e=>{c[e]=_.default.noop});class q{constructor(e,t){this.key=e,this.value=t,this.touch()}touch(){this.timestamp=Date.now()}}let F=new class{constructor(e,t){this._items=Object.create(null),this._size=0,this._maxSize=e,this._pruningSize=t||Math.ceil(.1*e)}has(e){return Boolean(this._items[e])}get(e){e=this._items[e];if(e)return e.touch(),e.value}set(e,t){var r=this._items[e];r?r.value=t:(this._size>=this._maxSize&&this._prune(),this._items[e]=new q(e,t),this._size+=1)}delete(e){this._items[e]&&(delete this._items[e],--this._size)}_prune(){var e;for(e of _.default(this._items).toArray().sortBy("timestamp").take(this._pruningSize).value())this.delete(e.key)}}(1e3),r={};function p(e){return e&&e.toString().replace(/[\x00-\x1f\\.$#[\]\x7f/]/g,e=>"\\"+_.default.padStart(e.charCodeAt(0).toString(16),2,"0"))}function d(e){return e&&e.toString().replace(/\\[0-9a-f]{2}/gi,e=>String.fromCharCode(parseInt(e.slice(1),16)))}function f(e){if(!_.default.isObject(e)||!Object.isExtensible(e))return e;let t=e;for(var r in e){var s,i,a;Object.hasOwn(e,r)&&(s=e[r],i=p(r),a=f(s),i===r&&a===s||((t=t===e?_.default.clone(e):t)[i]=a,t[r]===s&&delete t[r]))}return t}function m(){var e,t=[];for(e of arguments)"/"===(e=_.default.isString(e)?e:""+e).charAt(0)&&t.splice(0,t.length),t.push(e);return"/"===t[0]&&(t[0]=""),t.join("/")}function g(e,t){var r=(t?"esc:":"")+e;let s=F.get(r);return s||(s=e.split("/"),t||(s=_.default.map(s,d)),F.set(r,s)),s}class V{constructor(e){this.variables=[];var t=_.default.endsWith(e,"/$*"),r=(e=t?e.slice(0,-3):e).replace(/\/\$[^/]*/g,e=>(1{var t=e.version.match(/^(\d+)\.(\d+)\.(\d+)(-.*)?$/);if(t){var r=W.match(/^(\d+)\.(\d+)\.(\d+)(-.*)?$/);if(!(t[1]===r[1]&&(t[2]>r[2]||t[2]===r[2]&&t[3]>=r[3])))return Promise.reject(new Error(`Incompatible Firetruss worker version: ${e.version} `+`(${W} or better required)`))}return e.livenessLockName&&navigator.locks.request(e.livenessLockName,()=>{this.crash({error:{name:"Error",message:"worker terminated",extra:{shared:this._shared}}})}),e})}suspend(e){this._suspended===(e=void 0===e?!0:e)||(this._suspended=e)||(this._receiveMessages(this._inboundMessages),this._inboundMessages=[],this._outboundMessages.length&&Promise.resolve().then(this._flushMessageQueue))}enableLogging(e){e?(!0===e&&(e=console.log.bind(console),this._send({msg:"enableFirebaseLogging",value:!0})),this._log=e):(this._send({msg:"enableFirebaseLogging",value:!1}),this._log=_.default.noop)}_send(r){r.id=++this._idCounter;let e;var t;return this._dead?Promise.reject(this._dead):(r.oneWay?e=Promise.resolve():(e=new Promise((e,t)=>{this._deferreds[r.id]={resolve:e,reject:t}}),(t=this._deferreds[r.id]).promise=e,t.params=r),this._outboundMessages.length||this._suspended||Promise.resolve().then(this._flushMessageQueue),this._log("send:",r),this._outboundMessages.push(r),e)}_flushMessageQueue(){this._log("flush:",this._outboundMessages.length,"messages");try{this._port.postMessage(this._outboundMessages),this._outboundMessages=[]}catch(e){throw this._log("flush failed:",e),e.extra={messages:this._outboundMessages},e}}_receive(e){this._suspended?this._inboundMessages=this._inboundMessages.concat(e.data):this._receiveMessages(e.data)}_receiveMessages(e){for(var t of e){this._log("recv:",t);var r=this[t.msg];if(!_.default.isFunction(r))throw new Error("Unknown message: "+t.msg);r.call(this,t)}}bindExposedFunction(e){return function(){return this._send({msg:"call",name:e,args:Array.prototype.slice.call(arguments)})}.bind(this)}resolve(e){var t=this._deferreds[e.id];if(!t)throw new Error("Received resolution to inexistent Firebase call");delete this._deferreds[e.id],t.resolve(e.result)}reject(e){var t=this._deferreds[e.id];if(!t)throw new Error("Received rejection of inexistent Firebase call");delete this._deferreds[e.id],t.reject(L(e.error,t.params))}crash(e){let t=`Internal worker error: ${e.error.name}: `+e.error.message;throw e.error.cause&&(t+=` (caused by ${e.error.cause})`),this._dead=new Error(t),e.error.extra&&(this._dead.extra=e.error.extra),_.default.forEach(this._deferreds,({reject:e})=>{e(this._dead)}),this._deferreds={},this._dead}updateLocalStorage({items:e}){try{var t,r=window.localStorage||window.sessionStorage;for(t of e)null===t.value?r.removeItem(t.key):r.setItem(t.key,t.value)}catch{}}trackServer(e){if(Object.hasOwn(this._servers,e))return Promise.resolve();var t=this._servers[e]={authListeners:[]},t=this._registerCallback(this._authCallback.bind(this,t));this._send({msg:"onAuth",url:e,callbackId:t})}_authCallback(e,t){e.auth=t;for(var r of e.authListeners)r(t)}onAuth(e,t,r){var s=t.bind(r);s.callback=t,s.context=r,this._servers[e].authListeners.push(s),s(this.getAuth(e))}offAuth(e,t,r){var s=this._servers[e].authListeners;for(let e=0;enew h(e))}on(e,t,r,s,i,a,n,o){a={listenerKey:e,eventType:s,snapshotCallback:i,cancelCallback:a,context:n,params:{msg:"on",listenerKey:e,url:t,spec:r,eventType:s,options:o}};let h=this._onCallback.bind(this,a);this._registerCallback(h,a),i.__callbackIds=i.__callbackIds||[],i.__callbackIds.push(a.id),this._send({msg:"on",listenerKey:e,url:t,spec:r,eventType:s,callbackId:a.id,options:o}).catch(e=>{h(e)})}off(t,e,r,s,i,a){let n=[],o;if(i){if(!(o=this._findAndRemoveCallbackId(i,e=>_.default.isMatch(e,{listenerKey:t,eventType:s,context:a}))))return Promise.resolve();n.push(o)}else for(var h of _.default.keys(this._callbacks)){var l=this._callbacks[h];l.listenerKey!==t||s&&l.eventType!==s||n.push(h)}for(var u of n)this._nullifyCallback(u);return this._send({msg:"off",listenerKey:t,url:e,spec:r,eventType:s,callbackId:o}).then(()=>{for(var e of n)this._deregisterCallback(e)})}_onCallback(e,t,r){t?(this._deregisterCallback(e.id),t=L(t,e.params),e.cancelCallback?e.cancelCallback.call(e.context,t):console.error(t)):e.snapshotCallback.call(e.context,new h(r))}transaction(e,t,r,s){return this._send({msg:"transaction",url:e,oldValue:t,relativeUpdates:r,writeSerial:s}).then(e=>(e.snapshots&&(e.snapshots=_.default.map(e.snapshots,e=>new h(e))),e))}onDisconnect(e,t,r){return this._send({msg:"onDisconnect",url:e,method:t,value:r})}bounceConnection(){return this._send({msg:"bounceConnection"})}callback({id:e,args:t}){var r=this._callbacks[e];if(!r)throw new Error("Unregistered callback: "+e);r.callback.apply(null,t)}_registerCallback(e,t){return(t=t||{}).callback=e,t.id="cb"+ ++this._idCounter,(this._callbacks[t.id]=t).id}_nullifyCallback(e){this._callbacks[e].callback=_.default.noop}_deregisterCallback(e){delete this._callbacks[e]}_findAndRemoveCallbackId(t,r){if(t.__callbackIds){let e=0;for(;et+"="+encodeURIComponent(JSON.stringify(e))).sortBy().join("&");this._string=this._path+"?"+e,Object.freeze(this)}get ready(){return this._tree.isQueryReady(this)}get constraints(){return this._spec}annotate(e){return new t(this._tree,this._path,this._spec,_.default.assign({},this._annotations,e))}_copyAndValidateSpec(t){if(!t.by)throw new Error('Query needs "by" clause: '+JSON.stringify(t));if(1<("at"in t)+("from"in t)+("to"in t))throw new Error('Query must contain at most one of "at", "from", or "to" clauses: '+JSON.stringify(t));if(1<("first"in t)+("last"in t))throw new Error('Query must contain at most one of "first" or "last" clauses: '+JSON.stringify(t));if(!_.default.some(["at","from","to","first","last"],e=>e in t))throw new Error('Query must contain at least one of "at", "from", "to", "first", or "last" clauses: '+JSON.stringify(t));if("$key"!==(t=_.default.clone(t)).by&&"$value"!==t.by){if(!(t.by instanceof b))throw new Error('Query "by" value must be a reference: '+t.by);let e=t.by.toString();if(!_.default.startsWith(e,this._path))throw new Error('Query "by" value must be a descendant of target reference: '+t.by);if(e=e.slice(this._path.length).replace(/^\/?/,""),!_.default.includes(e,"/"))throw new Error('Query "by" value must not be a direct child of target reference: '+t.by);t.by=e.replace(/.*?\//,"")}return Object.freeze(t),t}toString(){return this._string}toJSON(){return"query → "+this.toString()}}class b extends y{constructor(e,t,r){super(e,t,r),Object.freeze(this)}get ready(){return this._tree.isReferenceReady(this)}get value(){return this._tree.getObject(this.path)}toString(){return this._path}toJSON(){return"reference → "+this.toString()}annotate(e){return new b(this._tree,this._path,_.default.assign({},this._annotations,e))}query(e){return new t(this._tree,this._path,e,this._annotations)}set(e){return this._checkForUndefinedPath(),this._tree.update(this,"set",{[this.path]:e})}update(e){return this._checkForUndefinedPath(),this._tree.update(this,"update",e)}override(e){return this._checkForUndefinedPath(),this._tree.update(this,"override",{[this.path]:e})}commit(e){return this._checkForUndefinedPath(),this._tree.commit(this,e)}_checkForUndefinedPath(){if("/undefined"===this.path)throw new Error("Invalid path for operation: "+this.path)}}let K=Object.freeze({".sv":"timestamp"});function v(e,t){return _.default.isEqualWith(e,t,H)}function H(e,t){return e===t||null==e||null==t||e.$truss||t.$truss?e===t:e.isEqual?e.isEqual(t):void 0}function Q(e,t){for(var r of Object.getOwnPropertyNames(e.prototype))"constructor"!==r&&Object.defineProperty(t.prototype,r,Object.getOwnPropertyDescriptor(e.prototype,r))}class w{constructor(e){_.default.assign(this,{name:e,numRecomputes:0,numUpdates:0,computeTime:0,updateTime:0})}add(e){this.computeTime+=e.computeTime,this.updateTime+=e.updateTime,this.numUpdates+=e.numUpdates,this.numRecomputes+=e.numRecomputes}get runtime(){return this.computeTime+this.updateTime}get runtimePerRecompute(){return this.numRecomputes?this.computeTime/this.numRecomputes:0}get runtimePerUpdate(){return this.numUpdates?this.updateTime/this.numUpdates:0}toLogParts(e){return[this.name+":",` ${(this.runtime/1e3).toFixed(2)}s`,`(${(this.runtime/e.runtime*100).toFixed(1)}%)`,` ${this.numUpdates} upd /`,this.numRecomputes+" runs",`(${(this.numUpdates/this.numRecomputes*100).toFixed(1)}%)`,` ${this.runtimePerRecompute.toFixed(2)}ms / run`,` ${this.runtimePerUpdate.toFixed(2)}ms / upd`]}}var $=new class{constructor(){this._items={}}for(e){return this._items[e]||(this._items[e]=new w(e)),this._items[e]}get list(){return _.default(this._items).values().sortBy(e=>-e.runtime).value()}log(i=10){var a=this.list;if(a.length){let t=new w("=== Total"),r=(_.default.forEach(a,e=>{t.add(e)}),a=_.default.take(a,i),new w("--- Above")),e=(_.default.forEach(a,e=>{r.add(e)}),_.default.map(a,e=>e.toLogParts(t))),s=(e.push(r.toLogParts(t)),e.push(t.toLogParts(t)),_.default.map(_.default.range(e[0].length),t=>_.default(e).map(e=>e[t].length).max()));_.default.forEach(e,e=>{console.log(_.default.map(e,(e,t)=>_.default.padStart(e,s[t])).join(" "))})}}wrap(s,e,i){let a=this.for(e+"."+i);return function(){var e=performance.now(),t=this._computedWatchers&&this._computedWatchers[i].value;try{var r=s.call(this);return v(t,r)||(a.numUpdates+=1),r}finally{a.computeTime+=performance.now()-e,a.numRecomputes+=1}}}};class k{constructor(e,t,r,s,i){Object.freeze(t),this._scope=e,this._connections=t,this._tree=r,this._method=s,this._subConnectors={},this._disconnects={},this._angularUnwatches=void 0,this._data={},this._vue=new u.default({data:{descriptors:{},refs:i||{},values:_.default.mapValues(t,_.default.constant(void 0))}}),this.destroy=this.destroy,Object.seal(this),this._linkScopeProperties(),_.default.forEach(t,(e,t)=>{_.default.isFunction(e)?this._bindComputedConnection(t,e):this._connect(t,e)}),c.active&&e&&e.$on&&e.$id&&e.$on("$destroy",()=>{this.destroy()})}get ready(){return _.default.every(this._connections,(e,t)=>{var r=this._vue.descriptors[t];return!!r&&(r instanceof y?r:this._subConnectors[t]).ready})}get at(){return this._vue.refs}get data(){return this._data}destroy(){this._unlinkScopeProperties(),_.default.forEach(this._angularUnwatches,e=>{e()}),_.default.forEach(this._connections,(e,t)=>{this._disconnect(t)}),this._vue.$destroy()}_linkScopeProperties(){var e=_.default.mapValues(this._connections,(e,t)=>({configurable:!0,enumerable:!1,get:()=>{var e=this._vue.descriptors[t];return e instanceof b?e.value:this._vue.values[t]}}));if(Object.defineProperties(this._data,e),this._scope){for(var t in this._connections)if(t in this._scope)throw new Error("Property already defined on connection target: "+t);Object.defineProperties(this._scope,e),this._scope.__ob__&&this._scope.__ob__.dep.notify()}}_unlinkScopeProperties(){this._scope&&_.default.forEach(this._connections,(e,t)=>{delete this._scope[t]})}_bindComputedConnection(e,t){var r=$.for("connection.at."+e),s=this._computeConnection.bind(this,t,r),e=this._updateComputedConnection.bind(this,e,t,r),r=c.active&&!t.angularWatchSuppressed;this._vue.$watch(s,e,{immediate:!r}),r&&(this._angularUnwatches||(this._angularUnwatches=[]),this._angularUnwatches.push(c.watch(s,e,!0)))}_computeConnection(e,t){var r=performance.now();try{return B(e.call(this._scope))}finally{t.computeTime+=performance.now()-r,t.numRecomputes+=1}}_updateComputedConnection(e,t,r){var t=_.default.isFunction(t)?t(this._scope):t,s=!v(this._vue.descriptors[e],t);s&&(r&&s&&(r.numUpdates+=1),t?(t instanceof y||!_.default.has(this._subConnectors,e)?(this._disconnect(e),this._connect(e,t)):this._subConnectors[e]._updateConnections(t),u.default.set(this._vue.descriptors,e,t),c.digest()):this._disconnect(e))}_updateConnections(r){_.default.forEach(r,(e,t)=>{this._updateComputedConnection(t,e)}),_.default.forEach(this._connections,(e,t)=>{_.default.has(r,t)||this._updateComputedConnection(t)}),this._connections=r}_connect(i,a){if(u.default.set(this._vue.descriptors,i,a),c.digest(),a)if(u.default.set(this._vue.values,i,void 0),a instanceof b)u.default.set(this._vue.refs,i,a),this._disconnects[i]=this._tree.connectReference(a,this._method);else if(a instanceof t){u.default.set(this._vue.refs,i,a);var e=this._updateQueryValue.bind(this,i);this._disconnects[i]=this._tree.connectQuery(a,e,this._method)}else{let t={},e={},r=(u.default.set(this._vue.refs,i,e),this._subConnectors[i]=new k(t,a,this._tree,this._method,e)),s=this._disconnects[i]=this._tree.truss.observe(()=>r.ready,e=>{e&&(s(),delete this._disconnects[i],u.default.set(this._vue.values,i,t),c.digest())})}}_disconnect(e){u.default.delete(this._vue.refs,e),this._updateRefValue(e,void 0),_.default.has(this._subConnectors,e)&&(this._subConnectors[e].destroy(),delete this._subConnectors[e]),this._disconnects[e]&&this._disconnects[e](),delete this._disconnects[e],u.default.delete(this._vue.descriptors,e),c.digest()}_updateRefValue(e,t){this._vue.values[e]!==t&&(u.default.set(this._vue.values,e,t),c.digest())}_updateQueryValue(e,t){this._vue.values[e]||(u.default.set(this._vue.values,e,{}),c.digest());var r,s=this._vue.values[e];for(r in s)!Object.hasOwn(s,r)||_.default.includes(t,r)||(u.default.delete(s,r),c.digest());var i,a=this._tree.getObject(this._vue.descriptors[e].path);for(i of t)Object.hasOwn(s,i)||(u.default.set(s,i,a[i]),c.digest())}}function B(e){if(e)return e instanceof y?e.toString():_.default.mapValues(e,B)}function O(e){return function(){try{return Promise.resolve(e.apply(this,arguments))}catch(e){return Promise.reject(e)}}}function E(e,t){return(e=P(e,()=>{t=null})).cancel=()=>{t&&(t(),t=null)},function s(i,a){let n=i.then,r=i.catch;i.then=(e,t)=>{let r=n.call(i,e,t);return r[a]=i[a],s(r,a),r};i.catch=e=>{let t=r.call(i,e);return t[a]=i[a],s(t,a),t};return i}(e,"cancel"),e}function P(e,t){return t?(t=O(t),e.then(e=>t().then(()=>e),e=>t().then(()=>Promise.reject(e)))):e}let J=["read","write","auth","set","update","commit","connect","peek","authenticate","unathenticate","certify","all"],s=[];class G{constructor(e,t,r){this._operation=e,this._delay=t,this._callback=r,this._fired=!1}initiate(){this.cancel(),this._fired=!1;var e=Date.now()-this._operation._startTimestamp;this._timeoutId=setTimeout(()=>{this._fired=!0,this._callback(this._operation)},this._delay-e)}cancel(){this._fired&&this._callback(this._operation),this._timeoutId&&clearTimeout(this._timeoutId)}}class Y{constructor(e,t,r,s){this._type=e,this._method=t,this._target=r,this._operand=s,this._ready=!1,this._running=!1,this._ended=!1,this._tries=0,this._startTimestamp=Date.now(),this._slowHandles=[]}get type(){return this._type}get method(){return this._method}get target(){return this._target}get targets(){return"update"!==this._method?[this._target]:_.default.map(this._operand,(e,t)=>new b(this._target._tree,m(this._target.path,t),this._target._annotations))}get operand(){return this._operand}get ready(){return this._ready}get running(){return this._running}get ended(){return this._ended}get tries(){return this._tries}get error(){return this._error}onSlow(e,t){e=new G(this,e,t);this._slowHandles.push(e),e.initiate()}_setRunning(e){this._running=e}_setEnded(e){this._ended=e}_markReady(e){this._ready=!0,e||(this._tries=0),_.default.forEach(this._slowHandles,e=>e.cancel())}_clearReady(){this._ready=!0,this._startTimestamp=Date.now(),_.default.forEach(this._slowHandles,e=>e.initiate()),this._ready=!1}_incrementTries(){this._tries++}}class X{constructor(e){this._bridge=e,this._callbacks={},Object.freeze(this)}intercept(e,t){if(!_.default.includes(J,e))throw new Error("Unknown intercept operation type: "+e);var r=_.default.difference(_.default.keys(t),["onBefore","onAfter","onError","onFailure"]);if(r.length)throw new Error("Unknown intercept callback types: "+r.join(", "));r={onBefore:this._addCallback("onBefore",e,t.onBefore),onAfter:this._addCallback("onAfter",e,t.onAfter),onError:this._addCallback("onError",e,t.onError),onFailure:this._addCallback("onFailure",e,t.onFailure)};return this._removeCallbacks.bind(this,e,r)}_addCallback(e,t,r){if(r)return e=this._getCallbacksKey(e,t),t=O(r),(this._callbacks[e]||(this._callbacks[e]=[])).push(t),t}_removeCallback(e,t,r){r&&(e=this._getCallbacksKey(e,t),this._callbacks[e])&&_.default.pull(this._callbacks[e],r)}_removeCallbacks(r,e){_.default.forEach(e,(e,t)=>{this._removeCallback(t,r,e)})}_getCallbacks(e,t,r){return[].concat(this._callbacks[this._getCallbacksKey(e,r)]||s,this._callbacks[this._getCallbacksKey(e,t)]||s,this._callbacks[this._getCallbacksKey(e,"all")]||s)}_getCallbacksKey(e,t){return e+"_"+t}execute(e,t,r,s,i){i=O(i);let a=this.createOperation(e,t,r,s);return this.begin(a).then(()=>{let t=()=>i().catch(e=>this._retryOrEnd(a,e).then(t));return t()}).then(e=>this.end(a).then(()=>e))}createOperation(e,t,r,s){return new Y(e,t,r,s)}begin(t){return Promise.all(_.default.map(this._getCallbacks("onBefore",t.type,t.method),e=>e(t))).then(()=>{t.ended||t._setRunning(!0)},e=>this.end(t,e))}markReady(e){e._markReady()}clearReady(e){e._clearReady()}retry(t,r){return t._incrementTries(),t._error=r,Promise.all(_.default.map(this._getCallbacks("onError",t.type,t.method),e=>e(t,r))).then(e=>{if(!t.ended)return(e=_.default.some(e))&&delete t._error,e})}_retryOrEnd(t,r){return this.retry(t,r).then(e=>{if(!e)return this.end(t,r)},e=>this.end(t,e))}end(t,e){return t.ended?Promise.resolve():(t._setRunning(!1),t._setEnded(!0),e?t._error=e:delete t._error,Promise.all(_.default.map(this._getCallbacks("onAfter",t.type,t.method),e=>e(t))).then(()=>this._afterEnd(t),e=>(t._error=e,this._afterEnd(t))))}_afterEnd(t){if(t._markReady(!0),!t.error)return Promise.resolve();let e=this._getCallbacks("onFailure",t.type,t.method);return e&&setTimeout(()=>{_.default.forEach(e,e=>e(t))},0),Promise.reject(t.error)}}let Z="-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz",ee=window.crypto&&window.crypto.getRandomValues&&window.crypto.getRandomValues.bind(window.crypto);class te{constructor(){this._lastUniqueKeyTime=0,this._lastRandomValues=[]}generateUniqueKey(e){e=e||Date.now();var t=new Array(20);let r=e;for(let e=7;0<=e;e--)t[e]=Z.charAt(63&r),r=Math.floor(r/64);if(e===this._lastUniqueKeyTime){let e=11;for(;0<=e&&63===this._lastRandomValues[e];)this._lastRandomValues[e]=0,--e;if(-1===e)throw new Error("Internal assertion failure: ran out of unique IDs for this millisecond");this._lastRandomValues[e]+=1}else if(this._lastUniqueKeyTime=e,ee){var s=new Uint8Array(12);ee(s);for(let e=0;e<12;e++)this._lastRandomValues[e]=s[e]&(e?63:15)}else for(let e=0;e<12;e++)this._lastRandomValues[e]=Math.floor(Math.random()*(e?64:16));for(let e=0;e<12;e++)t[e+8]=Z[this._lastRandomValues[e]];return t.join("")}}class re{constructor(e,t,r,s){this._rootUrl=e,this._tree=t,this._dispatcher=s,this._bridge=r,this._vue=new u.default({data:{$root:{connected:void 0,timeOffset:0,user:void 0,userid:void 0,nowAtInterval(e){let t="now"+e;var r;return Object.hasOwn(this,t)||((r=()=>{u.default.set(this,t,Date.now()+this.timeOffset),c.digest()})(),setInterval(r,e)),this[t]}}}}),this._auth={serial:0,initialAuthChangeReceived:!1,changePromise:Promise.resolve()},r.onAuth(e,this._handleAuthChange,this),this._connectInfoProperty("serverTimeOffset","timeOffset"),this._connectInfoProperty("connected","connected"),Object.freeze(this)}get root(){return this._vue.$data.$root}destroy(){this._bridge.offAuth(this._rootUrl,this._handleAuthChange,this),this._vue.$destroy()}authenticate(e){return this._auth.serial++,this._dispatcher.execute("auth","authenticate",new b(this._tree,"/"),e,()=>(e?this._bridge.authWithCustomToken(this._rootUrl,e):this._bridge.authAnonymously(this._rootUrl)).then(()=>this._auth.changePromise))}unauthenticate(){return this._auth.serial++,this._handleAuthChange(null).then(e=>{if(e)return this._dispatcher.execute("auth","unauthenticate",new b(this._tree,"/"),void 0,()=>this._bridge.unauth(this._rootUrl))})}_handleAuthChange(r){var e=!this._auth.initialAuthChangeReceived&&this._auth.serial;if(void 0!==r&&(this._auth.initialAuthChangeReceived=!0),!e){let e=this._auth.serial;if(this.root.user===r)return Promise.resolve(!1);let t=this._dispatcher.execute("auth","certify",new b(this._tree,"/"),r,()=>this.root.user!==r&&e===this._auth.serial&&(r&&Object.freeze(r),this.root.user=r,this.root.userid=r&&r.uid,c.digest(),!0));return this._auth.changePromise=this._auth.changePromise.then(()=>t).catch(),t}}_isAuthChangeStale(e){return this.root.user===e}_connectInfoProperty(e,t){var r=new URL(this._rootUrl);r.pathname=encodeURI("/.info/"+e),this._bridge.on(r.href,r.href,null,"value",e=>{this.root[t]=e.value,c.digest()})}}let se={__ob__:!0},ie=new Set(["beforeMount","mounted","beforeUpdate","updated","activated","deactivated","errorCaptured"]),ae=new Set(_.default.map(ie,e=>"hook:"+e)),ne=Symbol("last-computed-value"),j,C;class S{get $info(){return this.$truss.info}get $store(){return this.$truss.store}get $now(){return this.$truss.now}$newKey(){return this.$truss.newKey()}$intercept(e,t){if(this.$destroyed)throw new Error("Object already destroyed");let r=this.$truss.intercept(e,t),s=()=>{r(),this.$off("hook:destroyed",s)};return this.$on("hook:destroyed",s),s}$connect(e,t){if(this.$destroyed)throw new Error("Object already destroyed");t||(t=e,e=void 0);let r=this.$truss.connect(e,function t(r,s){if(!s||s instanceof y)return s;if(_.default.isFunction(s)){let e=function(){return r.$$touchThis(),t(r,s.call(this))};return e.angularWatchSuppressed=!0,e}return _.default.mapValues(s,e=>t(r,e))}(this,t)),s=r.destroy,i=()=>(this.$off("hook:destroyed",i),s.call(r));return this.$on("hook:destroyed",i),r.destroy=i,r}$peek(e,t){if(this.$destroyed)throw new Error("Object already destroyed");let r=P(this.$truss.peek(e,t),()=>{this.$off("hook:destroyed",r.cancel)});return this.$on("hook:destroyed",r.cancel),r}$observe(e,t,r){if(this.$destroyed)throw new Error("Object already destroyed");let s,i=this.$truss.observe(()=>(this.$$touchThis(),e.call(this)),t.bind(this),{...r,vm:this});return s=()=>{i(),this.$off("hook:destroyed",s)},this.$on("hook:destroyed",s),s}$when(e,t){if(this.$destroyed)throw new Error("Object already destroyed");let r=this.$truss.when(()=>(this.$$touchThis(),e.call(this)),t);return P(r,()=>{this.$off("hook:destroyed",r.cancel)}),this.$on("hook:destroyed",r.cancel),r}}class R{get $parent(){return j.$parent.value}get $path(){return j.$path.value}get $truss(){return Object.defineProperty(this,"$truss",{value:this.$parent.$truss}),this.$truss}get $ref(){return Object.defineProperty(this,"$ref",{value:new b(this.$truss._tree,this.$path)}),this.$ref}get $refs(){return this.$ref}get $key(){return Object.defineProperty(this,"$key",{value:d(this.$path.slice(this.$path.lastIndexOf("/")+1))}),this.$key}get $data(){return this}get $hidden(){return!1}get $empty(){return _.default.isEmpty(this.$data)}get $keys(){return _.default.keys(this.$data)}get $values(){return _.default.values(this.$data)}get $ready(){return this.$ref.ready}get $overridden(){return!1}$nextTick(){if(this.$destroyed)throw new Error("Object already destroyed");let e=this.$truss.nextTick();return P(e,()=>{this.$off("hook:destroyed",e.cancel)}),this.$on("hook:destroyed",e.cancel),e}$freezeComputedProperty(){if(!_.default.isBoolean(C))throw new Error("Cannot freeze a computed property outside of its getter function");C=!0}get $lastComputedValue(){if(_.default.isBoolean(C))return ne;throw new Error("Cannot use last computed value of a property outside of its getter function")}$set(e){return this.$ref.set(e)}$update(e){return this.$ref.update(e)}$override(e){return this.$ref.override(e)}$commit(e,t){return this.$ref.commit(e,t)}$$touchThis(){this.__ob__?this.__ob__.dep.depend():this.$parent?(Object.hasOwn(this.$parent,"$data")?this.$parent.$data:this.$parent)[this.$key]:this.$store}get $destroyed(){return!1}$on(e,t){if(this.$destroyed)throw new Error("Object already destroyed");if(ae.has(e))throw new Error(`Models don't support the "${e}" lifecycle event`);return(this.$$hooks[e]=this.$$hooks[e]||[]).push(t),this}$once(t,r){let s=this;function i(...e){s.$off(t,i),r(...e)}return i.fn=r,this.$on(t,i)}$off(e,t){if(e)if(t){if(_.default.isArray(e))for(var r of e)this.$off(r,t);else if(this.$$hooks[e]){var s=this.$$hooks[e];for(let e=0;e{e.$once&&e.$once[t]&&(--e.$once[t],this.$off(t,e)),e(...r)}),this}get $$hooks(){return Object.defineProperty(this,"$$hooks",{value:{},writable:!1,enumerable:!1,configurable:!1}),this.$$hooks}}Q(S,R),_.default.forEach(R.prototype,(e,t)=>{Object.defineProperty(R.prototype,t,{value:e,enumerable:!1,configurable:!1,writable:!1})});class x{constructor(e){this.error=e}}class oe{constructor(e){this.value=e}}class he{constructor(e,t){this._vue=e,this._trie={Class:R},this._debug=t,Object.freeze(this)}init(e,t){_.default.isPlainObject(e)&&(_.default.forEach(e,(e,t)=>{e.$trussMount||(e.$$trussMount=e.$$trussMount||[],e.$$trussMount.push(t))}),e=_.default.values(e),_.default.forEach(e,e=>{!e.$trussMount&&e.$$trussMount&&(e.$trussMount=e.$$trussMount,delete e.$$trussMount)})),e=_.default.uniq(e),_.default.forEach(e,e=>this._mountClass(e,t)),this._decorateTrie(this._trie)}destroy(){}_getMount(e,t,r){var s;let i;for(s of g(e,!0)){let e=s?i.children&&(i.children[s]||!t&&i.children.$):this._trie;if(!e){if(!t)return;i.children=i.children||{},e=i.children[s]={Class:R}}if(i=e,r&&r(i))break}return i}_findMount(e,t){if(e(t=t||this._trie))return t;for(var r of _.default.keys(t.children)){r=this._findMount(e,t.children[r]);if(r)return r}}_decorateTrie(t){_.default.forEach(t.children,e=>{this._decorateTrie(e),(e.local||e.localDescendants)&&(t.localDescendants=!0)})}_augmentClass(e){let t,r=e.prototype;for(;r&&r.constructor!==Object;){for(var s of Object.getOwnPropertyNames(r)){var i=Object.getOwnPropertyDescriptor(r,s);if("$"===s.charAt(0)){if(_.default.isEqual(i,Object.getOwnPropertyDescriptor(R.prototype,s)))continue;throw new Error(`Property names starting with "$" are reserved: ${e.name}.`+s)}if(ie.has(s)&&_.default.isFunction(r[s]))throw new Error(`Models don't support the "${s}" lifecycle method`);!i.get||t&&t[s]||((t=t||{})[s]={name:s,fullName:r.constructor.name+"."+s,get:i.get,set:i.set})}r=Object.getPrototypeOf(r)}for(var a of Object.getOwnPropertyNames(R.prototype))"constructor"===a||Object.hasOwn(e.prototype,a)||Object.defineProperty(e.prototype,a,Object.getOwnPropertyDescriptor(R.prototype,a));return t}_mountClass(a,n){let o=this._augmentClass(a),h=[],e=a.$trussMount;if(!e)throw new Error(`Class ${a.name} lacks a $trussMount static property`);_.default.isArray(e)||(e=[e]),_.default.forEach(e,e=>{if(_.default.isString(e)&&(e={path:e}),!n&&"/"===e.path)throw new Error("Data root already accessed, too late to mount class");var t,r=l(e.path);for(t of r.variables){if("$"===t||"$"===t.charAt(1))throw new Error("Invalid variable name: "+t);if("$"===t.charAt(0)&&(_.default.has(R.prototype,t)||se[t]))throw new Error("Variable name conflicts with built-in property or method: "+t);h.push(t)}var s=e.path.match(/\/([^/]*)$/)[1];if("$"===s.charAt(0)){if(e.placeholder)throw new Error(`Class ${a.name} mounted at wildcard ${s} cannot be a placeholder`)}else _.default.has(e,"placeholder")||(e.placeholder={});var i=this._getMount(e.path.replace(/\$[^/]*/g,"$"),!0);if(i.matcher&&(i.escapedKey===s||"$"===i.escapedKey.charAt(0)&&"$"===s.charAt(0)))throw new Error(`Multiple classes mounted at ${e.path}: ${i.Class.name}, `+a.name);_.default.assign(i,{Class:a,matcher:r,computedProperties:o,escapedKey:s},_.default.pick(e,"placeholder","local","keysUnsafe","hidden"))}),_.default(h).uniq().forEach(e=>{Object.defineProperty(a.prototype,e,{get(){return j?j[e]&&j[e].value:void 0}})})}createObject(e,r){var s=this._getMount(e)||{Class:R};try{if(s.matcher){var i,a=s.matcher.match(e);for(i in a)r[i]={value:a[i]}}j=r;let t=new s.Class;return j=null,c.active&&this._wrapProperties(t),s.keysUnsafe&&(r.$data={value:Object.create(null),configurable:!0,enumerable:!0}),s.hidden&&(r.$hidden={value:!0}),s.computedProperties&&_.default.forEach(s.computedProperties,e=>{r[e.name]=this._buildComputedPropertyDescriptor(t,e)}),t}catch(e){throw e.extra=_.default.assign({mount:s,properties:r,className:s.Class&&s.Class.name},e.extra),e}}_wrapProperties(s){_.default.forEach(s,(e,t)=>{let r="$_"+t;Object.defineProperties(s,{[r]:{value:e,writable:!0},[t]:{get:()=>s[r],set:e=>{s[r]=e,c.digest()},enumerable:!0,configurable:!0}})})}_buildComputedPropertyDescriptor(i,a){let n=$.for(a.fullName),o,h,l=!1,u=()=>{let e=!1;var t=function(e,r){if(!this.$destroyed){this.$$touchThis();var s=C,i=(C=!1,performance.now());let t;try{try{t=e.get.call(this)}catch(e){t=new x(e)}finally{r.computeTime+=performance.now()-i,r.numRecomputes+=1}return t=C?new oe(t):t}finally{C=s}}}.bind(i,a,n);t.toString=_.default.constant("compute "+a.fullName);let r=()=>{e=!0};r=this._vue.$watch(t,e=>{if(i.$destroyed)r();else if(h&&(h.cancel&&h.cancel(),h=void 0),_.default.isObject(e)&&_.default.isFunction(e.then)){let t=e.then(e=>{t===h&&s(e)},e=>{if(t===h&&s(new x(e))&&!e.trussExpectedException)throw e});h=t}else if(s(e)&&(c.digest(),e instanceof x)&&!e.error.trussExpectedException)throw e.error},{immediate:!0});t=_.default.last(this._vue._watchers||this._vue._scope.effects);function s(e){var t=performance.now();return e instanceof oe&&(e=e.value,r(),i.$off("hook:destroyed",r)),e!==ne&&!v(o,e)&&(l=!0,i[a.name]=e,l=!1,function t(e){if(_.default.isNil(e)||!_.default.isObject(e)||Object.isFrozen(e)||e.$truss)return e;e=Object.freeze(e);if(_.default.isArray(e))return _.default.map(e,e=>t(e));return _.default.mapValues(e,e=>t(e))}(e),n.numUpdates+=1,n.updateTime+=performance.now()-t,1)}t.id=-t.id,e?r():i.$on("hook:destroyed",r),i.$off("hook:created",u)};return i.$on("hook:created",u),{enumerable:!0,configurable:!0,get(){if(!l&&o instanceof x)throw o.error;return o},set(e){if(l)o=e;else{if(!a.set)throw new Error("You cannot set a computed property: "+a.name);a.set.call(this,e)}}}}destroyObject(e){Object.defineProperty(e,"$destroyed",{value:!0,enumerable:!1,configurable:!1})}emitLifecycleHook(e,t){_.default.isFunction(e[t])&&e[t](),e.$emit("hook:"+t)}isPlaceholder(e){e=this._getMount(e);return e&&e.placeholder}isLocal(e,t){e=this._getMount(e,!1,e=>e.local);if(e&&e.local)return!0;if(this._hasLocalProperties(e,t))throw new Error("Write on a mix of local and remote tree paths.");return!1}_hasLocalProperties(e,t){if(e){if(e.local)return!0;if(e.localDescendants&&_.default.isObject(t))for(var r in t)if(this._hasLocalProperties(e.children[p(r)]||e.children.$,t[r]))return!0}return!1}forEachPlaceholderChild(e,t){e=this._getMount(e);_.default.forEach(e&&e.children,e=>{e.placeholder&&t(e)})}checkVueObject(i,e,t){t||(t=new Set);var r=new Map;let s=this._findMount(e=>e.Class===i.constructor);var a,n,o,h,l,u,c,d=_.default(i).thru(Object.getOwnPropertyNames).reject(e=>se[e]||Object.hasOwn(R.prototype,e)||/^\$_/.test(e)).reject(e=>s&&s.matcher&&_.default.includes(s.matcher.variables,e)).map(e=>{let t;try{if((t=i[e])instanceof RegExp)return}catch{return}var r=Object.getOwnPropertyDescriptor(i,e),s=!r.enumerable&&r.set&&!Object.hasOwn(i,"$_"+e);return{key:e,value:t,descriptor:r,computed:s}}).compact().value();for({key:a,value:n,descriptor:o,computed:h}of d){if(!_.default.isArray(i)||!/^\d+$/.test(a)&&"length"!==a){if("value"in o||!o.get)throw new Error(`Value at ${e}, contained in a Firetruss object, has a rogue property: `+a);if(i.$truss&&o.enumerable)try{throw i[a]=n,new Error(`Firetruss object at ${e} has an enumerable non-Firebase property: `+a)}catch(e){if("firebase_overwrite"!==e.trussCode)throw e}}_.default.isObject(n)&&(t.has(n)||Object.isSealed(n)||_.default.isFunction(n)||_.default.isElement(n)||n instanceof Promise||(t.add(n),this.checkVueObject(n,m(e,p(a)),t)),h||n.$truss||r.set(n,a))}for({key:l,value:u,computed:c}of d)if(c&&_.default.isObject(u)&&!u.$truss){var f=r.get(u);if(f)throw new Error(`Firetruss object at ${e} has properties ${l} `+`and ${f} with an aliased value`)}}}class le{constructor(e,t){this._coupler=e,this._query=t,this._listeners=[],this._keys=[],this._coupler._url.pathname=encodeURI(t.path),this._url=this._coupler._url.toString(),this._segments=g(t.path,!0),this._listening=!1,this.ready=!1}attach(e,t){this._listen(),this._listeners.push({operation:e,keysCallback:t}),this.ready&&(this._coupler._dispatcher.markReady(e),t)&&t(this._keys)}detach(e){e=_.default.findIndex(this._listeners,{operation:e});return 0<=e&&this._listeners.splice(e,1),this._listeners.length}_listen(){this._listening||(this._coupler._bridge.on(this._query.toString(),this._url,this._query.constraints,"value",this._handleSnapshot,this._handleError,this,{sync:!0}),this._listening=!0)}destroy(){this._coupler._bridge.off(this._query.toString(),this._url,this._query.constraints,"value",this._handleSnapshot,this),this._listening=!1,this.ready=!1,c.digest();for(var e of this._keys)this._coupler._decoupleSegments(this._segments.concat(e))}_handleSnapshot(s){this._coupler._queueSnapshotCallback(()=>{if(this._listeners.length&&this._listening){var e=this._updateKeysAndApplySnapshot(s);if(!this.ready){this.ready=!0,c.digest();for(var t of this._listeners)this._coupler._dispatcher.markReady(t.operation)}if(e)for(var r of this._listeners)r.keysCallback&&r.keysCallback(e)}})}_updateKeysAndApplySnapshot(e){let t;if(e.path===this._query.path){if((t=_.default.keys(e.value)).sort(),_.default.isEqual(this._keys,t))t=null;else{for(var r of _.default.difference(t,this._keys))this._coupler._coupleSegments(this._segments.concat(r));for(var s of _.default.difference(this._keys,t))this._coupler._decoupleSegments(this._segments.concat(s));this._keys=t}if(e.exists){var i,a=e.value,n=e.path;for(i of this._keys)e._path=n+"/"+i,e._key=void 0,e._value=a[i],this._coupler._applySnapshot(e);e._path=n,e._key=void 0,e._value=a}}else{var o;e.path.replace(/\/[^/]+/,"")===this._query.path&&(o=_.default.includes(this._keys,e.key),e.value?o||(this._coupler._coupleSegments(this._segments.concat(e.key)),this._keys.push(e.key),this._keys.sort(),t=this._keys):o&&(this._coupler._decoupleSegments(this._segments.concat(e.key)),_.default.pull(this._keys,e.key),this._keys.sort(),t=this._keys),this._coupler._applySnapshot(e))}return t}_handleError(r){if(this._listeners.length&&this._listening){this._listening=!1,this.ready=!1;for(var e of this._keys)this._coupler._decoupleSegments(this._segments.concat(e));this._keys=[],c.digest(),Promise.all(_.default.map(this._listeners,t=>(this._coupler._dispatcher.clearReady(t.operation),this._coupler._dispatcher.retry(t.operation,r).catch(e=>(t.operation._disconnect(e),!1))))).then(e=>{if(_.default.some(e))this._listeners.length&&this._listen();else for(var t of this._listeners)t.operation._disconnect(r)})}}}class ue{constructor(e,t,r){this._coupler=e,this.path=t,this.parent=r,this._coupler._url.pathname=encodeURI(t),this.url=this._coupler._url.toString(),this.operations=[],this.queryCount=0,this.listening=!1,this.ready=!1,this.children={}}get active(){return this.count||this.queryCount}get count(){return this.operations.length}listen(e){!e&&this.count?this.listening||(_.default.forEach(this.operations,e=>{this._coupler._dispatcher.clearReady(e)}),this._coupler._bridge.on(this.url,this.url,null,"value",this._handleSnapshot,this._handleError,this,{sync:!0}),this.listening=!0):_.default.forEach(this.children,e=>{e.listen()})}unlisten(e){!e&&this.listening?(this._coupler._bridge.off(this.url,this.url,null,"value",this._handleSnapshot,this),this.listening=!1,this._forAllDescendants(e=>{if(e.listening)return!1;e.ready&&(e.ready=!1,c.digest())})):_.default.forEach(this.children,e=>{e.unlisten()})}_handleSnapshot(e){this._coupler._queueSnapshotCallback(()=>{this.listening&&this._coupler.isTrunkCoupled(e.path)&&(this._coupler._applySnapshot(e),this.ready||e.path!==this.path||(this.ready=!0,c.digest(),this.unlisten(!0),this._forAllDescendants(e=>{for(var t of e.operations)this._coupler._dispatcher.markReady(t)})))})}_handleError(r){if(this.count&&this.listening)return this.listening=!1,this._forAllDescendants(e=>{if(e.listening)return!1;e.ready&&(e.ready=!1,c.digest());for(var t of e.operations)this._coupler._dispatcher.clearReady(t)}),this._coupler._prunePath(this.path),Promise.all(_.default.map(this.operations,t=>this._coupler._dispatcher.retry(t,r).catch(e=>(t._disconnect(e),!1)))).then(e=>{if(_.default.some(e))this.count&&this.listen();else for(var t of this.operations)t._disconnect(r)})}_forAllDescendants(t){!1!==t(this)&&_.default.forEach(this.children,e=>e._forAllDescendants(t))}collectCoupledDescendantPaths(t){return(t=t||{})[this.path]=this.active,this.active||_.default.forEach(this.children,e=>{e.collectCoupledDescendantPaths(t)}),t}}class ce{constructor(e,t,r,s,i){this._url=new URL(e),this._bridge=t,this._dispatcher=r,this._applySnapshot=s,this._pendingSnapshotCallbacks=[],this._throttled={processPendingSnapshots:this._processPendingSnapshots},this._prunePath=i,this._vue=new u.default({data:{root:void 0,queryHandlers:{}}}),this._vue._renderProxy=this._vue,this._nodeIndex=Object.create(null),Object.freeze(this),this._vue.$data.root=new ue(this,"/"),this._nodeIndex["/"]=this._root}get _root(){return this._vue.$data.root}get _queryHandlers(){return this._vue.$data.queryHandlers}destroy(){_.default.forEach(this._queryHandlers,e=>{e.destroy()}),this._root.unlisten(),this._vue.$destroy()}couple(e,t){return this._coupleSegments(g(e,!0),t)}_coupleSegments(e,t){let r,s=!t,i=!1;for(var a of e){let e=a?r.children&&r.children[a]:this._root;e||(e=new ue(this,`${"/"===r.path?"":r.path}/`+a,r),u.default.set(r.children,a,e),this._nodeIndex[e.path]=e),s=s||e.listening,i=i||e.ready,r=e}t?r.operations.push(t):r.queryCount++,s?t&&i&&this._dispatcher.markReady(t):r.listen()}decouple(e,t){return this._decoupleSegments(g(e,!0),t)}_decoupleSegments(t,e){var r,s=[];let i;for(r of t){if(!(i=r?i.children&&i.children[r]:this._root))break;s.push(i)}if(!i||!(e?i.count:i.queryCount))throw new Error("Path not coupled: "+(t.join("/")||"/"));if(e?_.default.pull(i.operations,e):i.queryCount--,e&&!i.count&&(i.listen(),i.listening)&&i.unlisten(),!i.active){for(let e=s.length-1;0{r.running&&!r._disconnected&&(this._coupler.couple(e.path,r),r._coupled=!0)}).catch(_.default.noop),r._disconnect}_disconnectReference(e,t,r,s){t._disconnected||(t._disconnected=!0,r&&r(),t._coupled&&(this._coupler.decouple(e.path,t),t._coupled=!1),this._dispatcher.end(t,s).catch(_.default.noop))}isReferenceReady(e){return this._checkHandle(e),this._coupler.isSubtreeReady(e.path)}connectQuery(e,t,r){this._checkHandle(e);let s=this._dispatcher.createOperation("read",r,e);return s._disconnect=this._disconnectQuery.bind(this,e,s),this._dispatcher.begin(s).then(()=>{s.running&&!s._disconnected&&(this._coupler.subscribe(e,s,t),s._coupled=!0)}).catch(_.default.noop),s._disconnect}_disconnectQuery(e,t,r){t._disconnected||(t._disconnected=!0,t._coupled&&(this._coupler.unsubscribe(e,t),t._coupled=!1),this._dispatcher.end(t,r).catch(_.default.noop))}isQueryReady(e){return this._coupler.isQueryReady(e)}_checkHandle(e){if(!e.belongsTo(this._truss))throw new Error("Reference belongs to another Truss instance")}throttleRemoteDataUpdates(e){this._coupler.throttleSnapshots(e)}update(t,e,r){r=_.default.mapValues(r,e=>f(e));var s=_.default.size(r);if(!s)return Promise.resolve();if("update"!==e&&"override"!==e||_e(t.path,r),this._applyLocalWrite(r,"override"===e))return Promise.resolve();e=(e=>{let i;return _.default.forEach(e,(e,t)=>{var r="/"===t?[""]:g(t,!0);if(i){let e=0;for(var s=Math.min(i.length,r.length);ethis._bridge[n?"set":"update"](i,o,a).catch(e=>e.immediateFailure?P(this._repair(t,r),()=>Promise.reject(e)):Promise.reject(e)))}commit(i,a){let n=0,o=0,h={},l=(a=O(a),e=>{if(25<=n++){var t=new Error("Transaction needed too many retries, giving up");try{_.default.assign(t,{attemptCounts:h,sameValueCount:o})}catch{}return Promise.reject(t)}e=e||"initial",h[e]=(h[e]||0)+1;let r=new de(i),s;return u.default.nextTick().then(()=>{var e=T(r.currentValue);return _.default.isEqual(e,s)&&(o+=1),s=e,a(r)}).then(()=>{if(!_.default.isEqual(s,T(r.currentValue)))return l("changed");if("abort"===r.outcome)return r;let t=_.default.mapValues(r.values,e=>f(e));switch(r.outcome){case"cancel":break;case"set":if(this._applyLocalWrite({[i.path]:t[""]}))return Promise.resolve();break;case"update":if(_e(i.path,t),this._applyLocalWrite(t))return Promise.resolve();pe(i.path,t);break;default:throw new Error("Invalid transaction outcome: "+(r.outcome||"none"))}return this._url.pathname=encodeURI(i.path),this._bridge.transaction(this._url.toString(),s,t,this._writeSerial).then(e=>(_.default.forEach(e.snapshots,e=>this._integrateSnapshot(e)),e.committed?r:l("stale")),e=>!e.immediateFailure||"set"!==r.outcome&&"update"!==r.outcome?Promise.reject(e):P(this._repair(i,t),()=>Promise.reject(e)))})});return this._truss.peek(i,()=>this._dispatcher.execute("write","commit",i,void 0,l))}_repair(e,t){let r=e.path;e=_.default(t).keys().flatMap(e=>{let t=r;return e&&(t=m(t,e)),_.default.keys(this._coupler.findCoupledDescendantPaths(t))}).value();return Promise.all(_.default.map(e,e=>(this._url.pathname=encodeURI(e),this._bridge.once(this._url.toString()).then(e=>{this._integrateSnapshot(e)}))))}_applyLocalWrite(e,h){this._writeSerial++,this._localWriteTimestamp=this._truss.now;let l=[],u=0;_.default.forEach(e,(t,e)=>{var r=this._modeler.isLocal(e,t),s=(r&&u++,r?{[e]:!0}:this._coupler.findCoupledDescendantPaths(e));if(!_.default.isEmpty(s)){var i,a=("/"===e?0:e.length)+1;for(i in s){var n=i.slice(a);let e=t;if(n&&null!=t)for(var o of g(n))if(void 0===(e=e.$data[o]))break;_.default.isNil(e)?this._prune(i):(n=_.default.last(g(i)),this._plantValue(i,n,e,this._scaffoldAncestors(i,!1,l),!1,h,r,l)),h||r||(this._localWrites[i]=this._writeSerial)}}});for(var t of l)this._completeCreateObject(t);if(u&&u<_.default.size(e))throw new Error("Write on a mix of local and remote tree paths.");return h||!!u}_createObject(e,t){this._initialized||"/"===e||this.init();t={$parent:{value:t,configurable:!0,enumerable:!0},$path:{value:e}},"/"===e&&(t.$truss={value:this._truss}),e=this._modeler.createObject(e,t);return this._modeler.emitLifecycleHook(e,"beforeCreate"),Object.defineProperties(e,t),e}_fixObject(e){for(var t of Object.getOwnPropertyNames(e)){var r=Object.getOwnPropertyDescriptor(e,t);r.configurable&&r.enumerable&&(r.enumerable=!1,_.default.startsWith(t,"$")&&(r.configurable=!1),Object.defineProperty(e,t,r))}}_completeCreateObject(e){this._modeler.emitLifecycleHook(e,"created")}_destroyObject(e){if(e&&e.$truss&&!e.$destroyed){this._modeler.emitLifecycleHook(e,"beforeDestroy"),this._modeler.destroyObject(e);for(var t of Object.getOwnPropertyNames(e.$data)){t=e.$data[t];t&&t.$parent===e&&this._destroyObject(t)}this._modeler.emitLifecycleHook(e,"destroyed")}}_integrateSnapshot(r){if(_.default.forEach(this._localWrites,(e,t)=>{r.writeSerial>=e&&delete this._localWrites[t]}),r.exists){var e,t=[],s=this._scaffoldAncestors(r.path,!0,t);s&&this._plantValue(r.path,r.key,r.value,s,!0,!1,!1,t);for(e of t)this._completeCreateObject(e)}else this._prune(r.path,null,!0)}_scaffoldAncestors(e,r,s){let i;var a=_.default.dropRight(g(e,!0));let n="/";for(let t=0;t{this._plantValue(m(s,t),d(t),e,r,n,o,h,l)}),e?this._plantPlaceholders(r,s,!1,l):_.default.forEach(r.$data,(e,t)=>{t=p(t);Object.hasOwn(i,t)||this._prune(m(s,t),null,n)}),r}this._destroyObject(r),!h&&_.default.isNil(i)?this._deleteFirebaseProperty(a,t):this._setFirebaseProperty(a,t,i)}}_plantPlaceholders(r,s,i,a){this._modeler.forEachPlaceholderChild(s,e=>{var t;void 0!==i&&i!==!!e.hidden||(t=d(e.escapedKey),Object.hasOwn(r.$data,t))||this._plantValue(m(s,e.escapedKey),t,e.placeholder,r,!1,!1,!1,a)})}_prune(e,t,r){t=t||{};var s=this.getObject(e);void 0===s||r&&this._avoidLocalWritePaths(e,t)||_.default.isEmpty(t)&&this._pruneAncestors(e,s)||!_.default.isObject(s)||this._pruneDescendants(s,t)}_avoidLocalWritePaths(t,r){for(var e in this._localWrites)if(Object.hasOwn(this._localWrites,e)){if(t===e||"/"===e||_.default.startsWith(t,e+"/"))return!0;if("/"===t||_.default.startsWith(e,t+"/")){var s=g(e,!0);for(let e=s.length;0(i=d(e.slice(1)),""));void 0!==s&&s!==this.root;){var n,o=s&&s.$parent||s===t&&this.getObject(a);this._modeler.isPlaceholder(s&&s.$path||e)||(n=r?null:[t],this._holdsConcreteData(s,n))||(r=!0,this._deleteFirebaseProperty(o,s&&s.$key||s===t&&i)),s=o}return r}_holdsConcreteData(e,t){return!(_.default.isNil(e)||t&&_.default.includes(t,e))&&(!_.default.isObject(e)||!e.$truss||_.default.some(e.$data,e=>this._holdsConcreteData(e,t)))}_pruneDescendants(a,n){if(n[a.$path])return!0;a.$overridden&&delete a.$overridden;let o=!1;return _.default.forEach(a.$data,(e,t)=>{let r=!0,s;var i;n[m(a.$path,p(t))]?(r=!1,s=!0):!_.default.isNil(e)&&e.$truss&&((i=this._modeler.isPlaceholder(e.$path))||_.default.has(n,e.$path))&&(s=this._pruneDescendants(e,n),r=!i&&!s),r&&this._deleteFirebaseProperty(a,t),o=o||s}),o}getObject(e){var t;let r;for(t of g(e))if(void 0===(r=t?r.$data[t]:this.root))return;return r}_getFirebasePropertyDescriptor(e,t,r){var s=Object.getOwnPropertyDescriptor(t,r);if(s){if(!s.enumerable){var i=t[r];if(!i||i.$parent!==e)throw new Error("Key conflict between Firebase and instance or computed properties at "+e.$path+": "+r)}if(!s.get||!s.set)throw new Error(`Unbound property at ${e.$path}: `+r)}else if(r in t)throw new Error(`Key conflict between Firebase and inherited property at ${e.$path}: `+r);return s}_setFirebaseProperty(e,t,r,s){var i=Object.hasOwn(e,"$data")?e.$data:e,e=this._getFirebasePropertyDescriptor(e,i,t);if(e){if(s&&Object.defineProperty(i,t,{get:e.get,set:e.set,configurable:!0,enumerable:!1}),i[t]===r)return;this._firebasePropertyEditAllowed=!0,i[t]=r,this._firebasePropertyEditAllowed=!1}else u.default.set(i,t,r),e=Object.getOwnPropertyDescriptor(i,t),Object.defineProperty(i,t,{get:e.get,set:this._overwriteFirebaseProperty.bind(this,e,t),configurable:!0,enumerable:!s});c.digest()}_overwriteFirebaseProperty(e,t,r){if(!this._firebasePropertyEditAllowed)throw(t=new Error("Firebase data cannot be mutated directly: "+t)).trussCode="firebase_overwrite",t;e.set.call(this,r)}_deleteFirebaseProperty(e,t){var r=Object.hasOwn(e,"$data")?e.$data:e;this._getFirebasePropertyDescriptor(e,r,t),this._destroyObject(r[t]),u.default.delete(r,t),c.digest()}checkVueObject(e,t){this._modeler.checkVueObject(e,t)}}function _e(r,s){_.default.forEach(_.default.keys(s),e=>{if("/"===e.charAt(0)){if(!(e===r||"/"===r||_.default.startsWith(e,r+"/")&&e.length>r.length+1))throw new Error("Update item is not a descendant of target ref: "+e)}else{if(_.default.includes(e,"/"))throw new Error("Update item deep path must be absolute, taken from a reference: "+e);var t=m(r,p(e));if(Object.hasOwn(s,t))throw new Error(`Update items overlap: ${e} and `+t);s[t]=s[e],delete s[e]}});let i=_.default(s).keys().map(e=>m(e,"")).sortBy("length").value();_.default.forEach(s,(e,t)=>{for(var r of i){if(r.length>t.length)break;if(t!==r&&_.default.startsWith(t,r))throw new Error(`Update items overlap: ${r} and `+t)}})}function pe(e,t){let r="/"===e?1:e.length+1;_.default.forEach(_.default.keys(t),e=>{t[e.slice(r)]=t[e],delete t[e]})}function T(e){if(!_.default.isObject(e))return e;var t,r={},s=e.$data;for(t in s)Object.hasOwn(s,t)&&(r[p(t)]=T(s[t]));return r}let A,M,me={};class D{constructor(e){if(!A)throw new Error("Truss worker not connected, please call Truss.connectWorker first");this._rootUrl=e.replace(/\/$/,""),this._keyGenerator=new te,this._dispatcher=new X(A),this._vue=new u.default,A.trackServer(this._rootUrl),this._tree=new fe(this,this._rootUrl,A,this._dispatcher),this._metaTree=new re(this._rootUrl,this._tree,A,this._dispatcher),Object.freeze(this)}get info(){return this._metaTree.root}get store(){return this._tree.root}mount(e){this._tree.init(e)}destroy(){this._vue.$destroy(),this._tree.destroy(),this._metaTree.destroy()}get now(){return Date.now()+this.info.timeOffset}newKey(){return this._keyGenerator.generateUniqueKey(this.now)}authenticate(e){return this._metaTree.authenticate(e)}unauthenticate(){return this._metaTree.unauthenticate()}intercept(e,t){return this._dispatcher.intercept(e,t)}connect(e,t){return t||(t=e,e=void 0),(t instanceof y||_.default.isFunction(t))&&(t={_:t}),new k(e,t,this._tree,"connect")}peek(o,h){h=O(h||_.default.identity);let l,u;return E(Promise.resolve().then(()=>new Promise((t,s)=>{let r={},i,e=new k(r,{result:o},this._tree,"peek"),a=this.intercept("peek",{onFailure:r=>{!function t(e){if(e)return e instanceof y?r.target.isEqual(e):_.default.some(e,e=>t(e))}(e.at)||(s(r.error),l())}}),n=this.observe(()=>e.ready,e=>{e&&(n(),n=null,i=P(h(r.result),()=>{c.digest(),i=null,l()}).then(e=>{t(e)},e=>{s(e)}))});l=()=>{n&&(n(),n=null),a&&(a(),a=null),e&&(e.destroy(),e=null),i&&i.cancel&&i.cancel()},u=()=>{s(new Error("Canceled")),l()}})),u)}observe(e,s,i){let a=_.default.isObject(i&&i.precise),n=0,o;a&&(o=i.deep?_.default.cloneDeep(i.precise):_.default.clone(i.precise));let h;return h=this._vue.$watch(e,(t,r)=>{if(i&&i.precise){var e=a?i.deep?_.default.defaultsDeep({},t,i.precise):_.default.defaults({},t,i.precise):i.deep?_.default.cloneDeep(t):_.default.clone(t);if(_.default.isEqual(e,o))return;o=e}n++,h||i&&i.immediate?(s(t,r),c.digest()):Promise.resolve().then(()=>{var e=i&&i.vm;1{let r=this.observe(s,e=>{e&&u.default.nextTick(()=>{(e=s())&&(t(e),a())})});_.default.has(i,"timeout")&&(n=setTimeout(()=>{n=null,e(new Error(i.timeoutMessage||"Timeout")),a()},i.timeout)),a=()=>{r&&(r(),r=null),n&&(clearTimeout(n),n=null),e(new Error("Canceled"))}});return e=E(P(e,a),a),i&&i.scope&&i.scope.$on("$destroy",()=>{e.cancel()}),e}nextTick(){let r;return E(new Promise((e,t)=>{u.default.nextTick(e),r=()=>{t(new Error("Canceled"))}}),r)}throttleRemoteDataUpdates(e){this._tree.throttleRemoteDataUpdates(e)}checkObjectsForRogueProperties(){this._tree.checkVueObject(this._tree.root,"/")}static get computedPropertyStats(){return $}static async connectWorker(r,e){if(A)throw new Error("Worker already connected");if(_.default.isString(r)){var t=window.SharedWorker||window.Worker;if(!t)throw new Error("Browser does not implement Web Workers");if(!navigator.locks)throw new Error("Browser does not implement locks");r=new t(r);t=window.crypto.getRandomValues(new Uint32Array(1))[0];r.lockName=`truss_worker_lock_${Date.now()}.`+t,await new Promise((e,t)=>{navigator.locks.request(r.lockName,()=>(e(),new Promise(()=>{}))).catch(t)})}A=new N(r),M&&A.enableLogging(M);var s,{exposedFunctionNames:t,firebaseSdkVersion:e}=await A.init(r.lockName,e);Object.defineProperty(D,"FIREBASE_SDK_VERSION",{value:e});for(s of t)D.preExpose(s)}static get worker(){return me}static preExpose(e){var t,r=e.split(".");let s=D.worker;for(t of r.slice(0,-1))Object.hasOwnProperty.call(s,t)||(s[t]={}),s=s[t];s[r[r.length-1]]=A.bindExposedFunction(e)}static bounceConnection(){return A.bounceConnection()}static suspend(){return A.suspend()}static debugPermissionDeniedErrors(e,t,r){return A.debugPermissionDeniedErrors(e,t,r)}static debounceAngularDigest(e){c.debounceDigest(e)}static escapeKey(e){return p(e)}static unescapeKey(e){return d(e)}static enableLogging(e){M=e,A&&A.enableLogging(e)}get SERVER_TIMESTAMP(){return D.SERVER_TIMESTAMP}get VERSION(){return D.VERSION}get FIREBASE_SDK_VERSION(){return D.FIREBASE_SDK_VERSION}}return Object.defineProperties(D,{SERVER_TIMESTAMP:{value:K},VERSION:{value:"dev"},Model:{value:Object},ComponentPlugin:{value:{install(e,t){if(u.default!==e)throw new Error("Multiple versions of Vue detected");if(!t.truss)throw new Error("Need to pass `truss` instance as an option to use the ComponentPlugin");e={$truss:{value:t.truss},$destroyed:{get(){return this._isBeingDestroyed||this._isDestroyed}},$$touchThis:{value(){this.__ob__&&this.__ob__.dep.depend()}}},t=_.default(e).keys().union(_.default.keys(S.prototype)).intersection(_.default.keys(u.default.prototype)).value();if(t.length)throw new Error("Truss extension properties conflict with Vue properties: "+t.join(", "));Object.defineProperties(u.default.prototype,e),Q(S,u.default)}}}}),c.defineModule(D),D}); +((e,t)=>{"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("lodash"),require("vue")):"function"==typeof define&&define.amd?define(["lodash","vue"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).Truss=t(e._,e.Vue)})(this,function(U,I){function e(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var _=e(U),u=e(I);function i(){a.digestRequest>n||(a.digestRequest=n+1)}let a,n=0,o=!1,c={active:"undefined"!=typeof window&&window.angular};if(c.active){let t=window.angular.module("firetruss",[]);c.digest=i,c.watch=function(){throw new Error("Angular watch proxy not yet initialized")},c.defineModule=function(e){t.constant("Truss",e)},c.debounceDigest=function(t){if(t){let e=_.default.debounce(i,t);c.digest=function(){a.digestRequest>n||(o?i:e)()}}else c.digest=i},t.config(["$provide",function(e){e.decorator("$rootScope",["$delegate","$exceptionHandler",function(t,e){let r=t;c.watch=r.$watch.bind(r);var t=Object.getPrototypeOf(r),s=t.$digest,t=(t.$digest=i,t.$digest.original=s,(a=new u.default({data:{digestRequest:0}})).$watch(()=>a.digestRequest,()=>{a.digestRequest>n?u.default.nextTick(()=>{a.digestRequest<=n||(o=!0,r.$digest.original.call(r),n=a.digestRequest=a.digestRequest+1)}):o=!1}),_.default.last(a._watchers||a._scope.effects));t.id=1/0;{let e=(s=Object.getPrototypeOf(t)).get;s.get=function(){try{return e.call(this)}catch(e){if(this.vm._watcher!==this||!u.default.config.errorHandler)throw e;u.default.config.errorHandler(e,this.vm,"uncaught render error")}}}return r}])}])}else _.default.forEach(["digest","watch","defineModule","debounceDigest"],e=>{c[e]=_.default.noop});class q{constructor(e,t){this.key=e,this.value=t,this.touch()}touch(){this.timestamp=Date.now()}}let F=new class{constructor(e,t){this._items=Object.create(null),this._size=0,this._maxSize=e,this._pruningSize=t||Math.ceil(.1*e)}has(e){return Boolean(this._items[e])}get(e){e=this._items[e];if(e)return e.touch(),e.value}set(e,t){var r=this._items[e];r?r.value=t:(this._size>=this._maxSize&&this._prune(),this._items[e]=new q(e,t),this._size+=1)}delete(e){this._items[e]&&(delete this._items[e],--this._size)}_prune(){var e;for(e of _.default(this._items).toArray().sortBy("timestamp").take(this._pruningSize).value())this.delete(e.key)}}(1e3),r={};function p(e){return e&&e.toString().replace(/[\x00-\x1f\\.$#[\]\x7f/]/g,e=>"\\"+_.default.padStart(e.charCodeAt(0).toString(16),2,"0"))}function d(e){return e&&e.toString().replace(/\\[0-9a-f]{2}/gi,e=>String.fromCharCode(parseInt(e.slice(1),16)))}function f(e){if(!_.default.isObject(e)||!Object.isExtensible(e))return e;let t=e;for(var r in e){var s,i,a;Object.hasOwn(e,r)&&(s=e[r],i=p(r),a=f(s),i===r&&a===s||((t=t===e?_.default.clone(e):t)[i]=a,t[r]===s&&delete t[r]))}return t}function g(){var e,t=[];for(e of arguments)"/"===(e=_.default.isString(e)?e:""+e).charAt(0)&&t.splice(0,t.length),t.push(e);return"/"===t[0]&&(t[0]=""),t.join("/")}function m(e,t){var r=(t?"esc:":"")+e;let s=F.get(r);return s||(s=e.split("/"),t||(s=_.default.map(s,d)),F.set(r,s)),s}class V{constructor(e){this.variables=[];var t=_.default.endsWith(e,"/$*"),r=(e=t?e.slice(0,-3):e).replace(/\/\$[^/]*/g,e=>(1{var t=e.version.match(/^(\d+)\.(\d+)\.(\d+)(-.*)?$/);if(t){var r=W.match(/^(\d+)\.(\d+)\.(\d+)(-.*)?$/);if(!(t[1]===r[1]&&(t[2]>r[2]||t[2]===r[2]&&t[3]>=r[3])))return Promise.reject(new Error(`Incompatible Firetruss worker version: ${e.version} `+`(${W} or better required)`))}return e.livenessLockName&&navigator.locks.request(e.livenessLockName,()=>{this.crash({error:{name:"Error",message:"worker terminated",extra:{shared:this._shared}}})}),e})}suspend(e){this._suspended===(e=void 0===e?!0:e)||(this._suspended=e)||(this._receiveMessages(this._inboundMessages),this._inboundMessages=[],this._outboundMessages.length&&Promise.resolve().then(this._flushMessageQueue))}enableLogging(e){e?(!0===e&&(e=console.log.bind(console),this._send({msg:"enableFirebaseLogging",value:!0})),this._log=e):(this._send({msg:"enableFirebaseLogging",value:!1}),this._log=_.default.noop)}_send(r){r.id=++this._idCounter;let e;var t;return this._dead?Promise.reject(this._dead):(r.oneWay?e=Promise.resolve():(e=new Promise((e,t)=>{this._deferreds[r.id]={resolve:e,reject:t}}),(t=this._deferreds[r.id]).promise=e,t.params=r),this._outboundMessages.length||this._suspended||Promise.resolve().then(this._flushMessageQueue),this._log("send:",r),this._outboundMessages.push(r),e)}_flushMessageQueue(){this._log("flush:",this._outboundMessages.length,"messages");try{this._port.postMessage(this._outboundMessages),this._outboundMessages=[]}catch(e){throw this._log("flush failed:",e),e.extra={messages:this._outboundMessages},e}}_receive(e){this._dead||(this._suspended?this._inboundMessages=this._inboundMessages.concat(e.data):this._receiveMessages(e.data))}_receiveMessages(e){for(var t of e){this._log("recv:",t);var r=this[t.msg];if(!_.default.isFunction(r))throw new Error("Unknown message: "+t.msg);r.call(this,t)}}bindExposedFunction(e){return function(){return this._send({msg:"call",name:e,args:Array.prototype.slice.call(arguments)})}.bind(this)}resolve(e){var t=this._deferreds[e.id];if(!t)throw new Error("Received resolution to inexistent Firebase call");delete this._deferreds[e.id],t.resolve(e.result)}reject(e){var t=this._deferreds[e.id];if(!t)throw new Error("Received rejection of inexistent Firebase call");delete this._deferreds[e.id],t.reject(L(e.error,t.params))}crash(e){let t=`Internal worker error: ${e.error.name}: `+e.error.message;throw e.error.cause&&(t+=` (caused by ${e.error.cause})`),this._dead=new Error(t),e.error.extra&&(this._dead.extra=e.error.extra),_.default.forEach(this._deferreds,({reject:e})=>{e(this._dead)}),this._deferreds={},this._dead}updateLocalStorage({items:e}){try{var t,r=window.localStorage||window.sessionStorage;for(t of e)null===t.value?r.removeItem(t.key):r.setItem(t.key,t.value)}catch{}}trackServer(e){if(Object.hasOwn(this._servers,e))return Promise.resolve();var t=this._servers[e]={authListeners:[]},t=this._registerCallback(this._authCallback.bind(this,t));this._send({msg:"onAuth",url:e,callbackId:t})}_authCallback(e,t){e.auth=t;for(var r of e.authListeners)r(t)}onAuth(e,t,r){var s=t.bind(r);s.callback=t,s.context=r,this._servers[e].authListeners.push(s),s(this.getAuth(e))}offAuth(e,t,r){var s=this._servers[e].authListeners;for(let e=0;enew h(e))}on(e,t,r,s,i,a,n,o){a={listenerKey:e,eventType:s,snapshotCallback:i,cancelCallback:a,context:n,params:{msg:"on",listenerKey:e,url:t,spec:r,eventType:s,options:o}};let h=this._onCallback.bind(this,a);this._registerCallback(h,a),i.__callbackIds=i.__callbackIds||[],i.__callbackIds.push(a.id),this._send({msg:"on",listenerKey:e,url:t,spec:r,eventType:s,callbackId:a.id,options:o}).catch(e=>{h(e)})}off(t,e,r,s,i,a){let n=[],o;if(i){if(!(o=this._findAndRemoveCallbackId(i,e=>_.default.isMatch(e,{listenerKey:t,eventType:s,context:a}))))return Promise.resolve();n.push(o)}else for(var h of _.default.keys(this._callbacks)){var l=this._callbacks[h];l.listenerKey!==t||s&&l.eventType!==s||n.push(h)}for(var u of n)this._nullifyCallback(u);return this._send({msg:"off",listenerKey:t,url:e,spec:r,eventType:s,callbackId:o}).then(()=>{for(var e of n)this._deregisterCallback(e)})}_onCallback(e,t,r){t?(this._deregisterCallback(e.id),t=L(t,e.params),e.cancelCallback?e.cancelCallback.call(e.context,t):console.error(t)):e.snapshotCallback.call(e.context,new h(r))}transaction(e,t,r,s){return this._send({msg:"transaction",url:e,oldValue:t,relativeUpdates:r,writeSerial:s}).then(e=>(e.snapshots&&(e.snapshots=_.default.map(e.snapshots,e=>new h(e))),e))}onDisconnect(e,t,r){return this._send({msg:"onDisconnect",url:e,method:t,value:r})}bounceConnection(){return this._send({msg:"bounceConnection"})}callback({id:e,args:t}){var r=this._callbacks[e];if(!r)throw new Error("Unregistered callback: "+e);r.callback.apply(null,t)}_registerCallback(e,t){return(t=t||{}).callback=e,t.id="cb"+ ++this._idCounter,(this._callbacks[t.id]=t).id}_nullifyCallback(e){this._callbacks[e].callback=_.default.noop}_deregisterCallback(e){delete this._callbacks[e]}_findAndRemoveCallbackId(t,r){if(t.__callbackIds){let e=0;for(;et+"="+encodeURIComponent(JSON.stringify(e))).sortBy().join("&");this._string=this._path+"?"+e,Object.freeze(this)}get ready(){return this._tree.isQueryReady(this)}get constraints(){return this._spec}annotate(e){return new t(this._tree,this._path,this._spec,_.default.assign({},this._annotations,e))}_copyAndValidateSpec(t){if(!t.by)throw new Error('Query needs "by" clause: '+JSON.stringify(t));if(1<("at"in t)+("from"in t)+("to"in t))throw new Error('Query must contain at most one of "at", "from", or "to" clauses: '+JSON.stringify(t));if(1<("first"in t)+("last"in t))throw new Error('Query must contain at most one of "first" or "last" clauses: '+JSON.stringify(t));if(!_.default.some(["at","from","to","first","last"],e=>e in t))throw new Error('Query must contain at least one of "at", "from", "to", "first", or "last" clauses: '+JSON.stringify(t));if("$key"!==(t=_.default.clone(t)).by&&"$value"!==t.by){if(!(t.by instanceof b))throw new Error('Query "by" value must be a reference: '+t.by);let e=t.by.toString();if(!_.default.startsWith(e,this._path))throw new Error('Query "by" value must be a descendant of target reference: '+t.by);if(e=e.slice(this._path.length).replace(/^\/?/,""),!_.default.includes(e,"/"))throw new Error('Query "by" value must not be a direct child of target reference: '+t.by);t.by=e.replace(/.*?\//,"")}return Object.freeze(t),t}toString(){return this._string}toJSON(){return"query → "+this.toString()}}class b extends y{constructor(e,t,r){super(e,t,r),Object.freeze(this)}get ready(){return this._tree.isReferenceReady(this)}get value(){return this._tree.getObject(this.path)}toString(){return this._path}toJSON(){return"reference → "+this.toString()}annotate(e){return new b(this._tree,this._path,_.default.assign({},this._annotations,e))}query(e){return new t(this._tree,this._path,e,this._annotations)}set(e){return this._checkForUndefinedPath(),this._tree.update(this,"set",{[this.path]:e})}update(e){return this._checkForUndefinedPath(),this._tree.update(this,"update",e)}override(e){return this._checkForUndefinedPath(),this._tree.update(this,"override",{[this.path]:e})}commit(e){return this._checkForUndefinedPath(),this._tree.commit(this,e)}_checkForUndefinedPath(){if("/undefined"===this.path)throw new Error("Invalid path for operation: "+this.path)}}let K=Object.freeze({".sv":"timestamp"});function v(e,t){return _.default.isEqualWith(e,t,H)}function H(e,t){return e===t||null==e||null==t||e.$truss||t.$truss?e===t:e.isEqual?e.isEqual(t):void 0}function Q(e,t){for(var r of Object.getOwnPropertyNames(e.prototype))"constructor"!==r&&Object.defineProperty(t.prototype,r,Object.getOwnPropertyDescriptor(e.prototype,r))}class w{constructor(e){_.default.assign(this,{name:e,numRecomputes:0,numUpdates:0,computeTime:0,updateTime:0})}add(e){this.computeTime+=e.computeTime,this.updateTime+=e.updateTime,this.numUpdates+=e.numUpdates,this.numRecomputes+=e.numRecomputes}get runtime(){return this.computeTime+this.updateTime}get runtimePerRecompute(){return this.numRecomputes?this.computeTime/this.numRecomputes:0}get runtimePerUpdate(){return this.numUpdates?this.updateTime/this.numUpdates:0}toLogParts(e){return[this.name+":",` ${(this.runtime/1e3).toFixed(2)}s`,`(${(this.runtime/e.runtime*100).toFixed(1)}%)`,` ${this.numUpdates} upd /`,this.numRecomputes+" runs",`(${(this.numUpdates/this.numRecomputes*100).toFixed(1)}%)`,` ${this.runtimePerRecompute.toFixed(2)}ms / run`,` ${this.runtimePerUpdate.toFixed(2)}ms / upd`]}}var $=new class{constructor(){this._items={}}for(e){return this._items[e]||(this._items[e]=new w(e)),this._items[e]}get list(){return _.default(this._items).values().sortBy(e=>-e.runtime).value()}log(i=10){var a=this.list;if(a.length){let t=new w("=== Total"),r=(_.default.forEach(a,e=>{t.add(e)}),a=_.default.take(a,i),new w("--- Above")),e=(_.default.forEach(a,e=>{r.add(e)}),_.default.map(a,e=>e.toLogParts(t))),s=(e.push(r.toLogParts(t)),e.push(t.toLogParts(t)),_.default.map(_.default.range(e[0].length),t=>_.default(e).map(e=>e[t].length).max()));_.default.forEach(e,e=>{console.log(_.default.map(e,(e,t)=>_.default.padStart(e,s[t])).join(" "))})}}wrap(s,e,i){let a=this.for(e+"."+i);return function(){var e=performance.now(),t=this._computedWatchers&&this._computedWatchers[i].value;try{var r=s.call(this);return v(t,r)||(a.numUpdates+=1),r}finally{a.computeTime+=performance.now()-e,a.numRecomputes+=1}}}};class k{constructor(e,t,r,s,i){Object.freeze(t),this._scope=e,this._connections=t,this._tree=r,this._method=s,this._subConnectors={},this._disconnects={},this._angularUnwatches=void 0,this._data={},this._vue=new u.default({data:{descriptors:{},refs:i||{},values:_.default.mapValues(t,_.default.constant(void 0))}}),this.destroy=this.destroy,Object.seal(this),this._linkScopeProperties(),_.default.forEach(t,(e,t)=>{_.default.isFunction(e)?this._bindComputedConnection(t,e):this._connect(t,e)}),c.active&&e&&e.$on&&e.$id&&e.$on("$destroy",()=>{this.destroy()})}get ready(){return _.default.every(this._connections,(e,t)=>{var r=this._vue.descriptors[t];return!!r&&(r instanceof y?r:this._subConnectors[t]).ready})}get at(){return this._vue.refs}get data(){return this._data}destroy(){this._unlinkScopeProperties(),_.default.forEach(this._angularUnwatches,e=>{e()}),_.default.forEach(this._connections,(e,t)=>{this._disconnect(t)}),this._vue.$destroy()}_linkScopeProperties(){var e=_.default.mapValues(this._connections,(e,t)=>({configurable:!0,enumerable:!1,get:()=>{var e=this._vue.descriptors[t];return e instanceof b?e.value:this._vue.values[t]}}));if(Object.defineProperties(this._data,e),this._scope){for(var t in this._connections)if(t in this._scope)throw new Error("Property already defined on connection target: "+t);Object.defineProperties(this._scope,e),this._scope.__ob__&&this._scope.__ob__.dep.notify()}}_unlinkScopeProperties(){this._scope&&_.default.forEach(this._connections,(e,t)=>{delete this._scope[t]})}_bindComputedConnection(e,t){var r=$.for("connection.at."+e),s=this._computeConnection.bind(this,t,r),e=this._updateComputedConnection.bind(this,e,t,r),r=c.active&&!t.angularWatchSuppressed;this._vue.$watch(s,e,{immediate:!r}),r&&(this._angularUnwatches||(this._angularUnwatches=[]),this._angularUnwatches.push(c.watch(s,e,!0)))}_computeConnection(e,t){var r=performance.now();try{return B(e.call(this._scope))}finally{t.computeTime+=performance.now()-r,t.numRecomputes+=1}}_updateComputedConnection(e,t,r){var t=_.default.isFunction(t)?t(this._scope):t,s=!v(this._vue.descriptors[e],t);s&&(r&&s&&(r.numUpdates+=1),t?(t instanceof y||!_.default.has(this._subConnectors,e)?(this._disconnect(e),this._connect(e,t)):this._subConnectors[e]._updateConnections(t),u.default.set(this._vue.descriptors,e,t),c.digest()):this._disconnect(e))}_updateConnections(r){_.default.forEach(r,(e,t)=>{this._updateComputedConnection(t,e)}),_.default.forEach(this._connections,(e,t)=>{_.default.has(r,t)||this._updateComputedConnection(t)}),this._connections=r}_connect(i,a){if(u.default.set(this._vue.descriptors,i,a),c.digest(),a)if(u.default.set(this._vue.values,i,void 0),a instanceof b)u.default.set(this._vue.refs,i,a),this._disconnects[i]=this._tree.connectReference(a,this._method);else if(a instanceof t){u.default.set(this._vue.refs,i,a);var e=this._updateQueryValue.bind(this,i);this._disconnects[i]=this._tree.connectQuery(a,e,this._method)}else{let t={},e={},r=(u.default.set(this._vue.refs,i,e),this._subConnectors[i]=new k(t,a,this._tree,this._method,e)),s=this._disconnects[i]=this._tree.truss.observe(()=>r.ready,e=>{e&&(s(),delete this._disconnects[i],u.default.set(this._vue.values,i,t),c.digest())})}}_disconnect(e){u.default.delete(this._vue.refs,e),this._updateRefValue(e,void 0),_.default.has(this._subConnectors,e)&&(this._subConnectors[e].destroy(),delete this._subConnectors[e]),this._disconnects[e]&&this._disconnects[e](),delete this._disconnects[e],u.default.delete(this._vue.descriptors,e),c.digest()}_updateRefValue(e,t){this._vue.values[e]!==t&&(u.default.set(this._vue.values,e,t),c.digest())}_updateQueryValue(e,t){this._vue.values[e]||(u.default.set(this._vue.values,e,{}),c.digest());var r,s=this._vue.values[e];for(r in s)!Object.hasOwn(s,r)||_.default.includes(t,r)||(u.default.delete(s,r),c.digest());var i,a=this._tree.getObject(this._vue.descriptors[e].path);for(i of t)Object.hasOwn(s,i)||(u.default.set(s,i,a[i]),c.digest())}}function B(e){if(e)return e instanceof y?e.toString():_.default.mapValues(e,B)}function O(e){return function(){try{return Promise.resolve(e.apply(this,arguments))}catch(e){return Promise.reject(e)}}}function E(e,t){return(e=P(e,()=>{t=null})).cancel=()=>{t&&(t(),t=null)},function s(i,a){let n=i.then,r=i.catch;i.then=(e,t)=>{let r=n.call(i,e,t);return r[a]=i[a],s(r,a),r};i.catch=e=>{let t=r.call(i,e);return t[a]=i[a],s(t,a),t};return i}(e,"cancel"),e}function P(e,t){return t?(t=O(t),e.then(e=>t().then(()=>e),e=>t().then(()=>Promise.reject(e)))):e}let J=["read","write","auth","set","update","commit","connect","peek","authenticate","unathenticate","certify","all"],s=[];class G{constructor(e,t,r){this._operation=e,this._delay=t,this._callback=r,this._fired=!1}initiate(){this.cancel(),this._fired=!1;var e=Date.now()-this._operation._startTimestamp;this._timeoutId=setTimeout(()=>{this._fired=!0,this._callback(this._operation)},this._delay-e)}cancel(){this._fired&&this._callback(this._operation),this._timeoutId&&clearTimeout(this._timeoutId)}}class Y{constructor(e,t,r,s){this._type=e,this._method=t,this._target=r,this._operand=s,this._ready=!1,this._running=!1,this._ended=!1,this._tries=0,this._startTimestamp=Date.now(),this._slowHandles=[]}get type(){return this._type}get method(){return this._method}get target(){return this._target}get targets(){return"update"!==this._method?[this._target]:_.default.map(this._operand,(e,t)=>new b(this._target._tree,g(this._target.path,t),this._target._annotations))}get operand(){return this._operand}get ready(){return this._ready}get running(){return this._running}get ended(){return this._ended}get tries(){return this._tries}get error(){return this._error}onSlow(e,t){e=new G(this,e,t);this._slowHandles.push(e),e.initiate()}_setRunning(e){this._running=e}_setEnded(e){this._ended=e}_markReady(e){this._ready=!0,e||(this._tries=0),_.default.forEach(this._slowHandles,e=>e.cancel())}_clearReady(){this._ready=!0,this._startTimestamp=Date.now(),_.default.forEach(this._slowHandles,e=>e.initiate()),this._ready=!1}_incrementTries(){this._tries++}}class X{constructor(e){this._bridge=e,this._callbacks={},Object.freeze(this)}intercept(e,t){if(!_.default.includes(J,e))throw new Error("Unknown intercept operation type: "+e);var r=_.default.difference(_.default.keys(t),["onBefore","onAfter","onError","onFailure"]);if(r.length)throw new Error("Unknown intercept callback types: "+r.join(", "));r={onBefore:this._addCallback("onBefore",e,t.onBefore),onAfter:this._addCallback("onAfter",e,t.onAfter),onError:this._addCallback("onError",e,t.onError),onFailure:this._addCallback("onFailure",e,t.onFailure)};return this._removeCallbacks.bind(this,e,r)}_addCallback(e,t,r){if(r)return e=this._getCallbacksKey(e,t),t=O(r),(this._callbacks[e]||(this._callbacks[e]=[])).push(t),t}_removeCallback(e,t,r){r&&(e=this._getCallbacksKey(e,t),this._callbacks[e])&&_.default.pull(this._callbacks[e],r)}_removeCallbacks(r,e){_.default.forEach(e,(e,t)=>{this._removeCallback(t,r,e)})}_getCallbacks(e,t,r){return[].concat(this._callbacks[this._getCallbacksKey(e,r)]||s,this._callbacks[this._getCallbacksKey(e,t)]||s,this._callbacks[this._getCallbacksKey(e,"all")]||s)}_getCallbacksKey(e,t){return e+"_"+t}execute(e,t,r,s,i){i=O(i);let a=this.createOperation(e,t,r,s);return this.begin(a).then(()=>{let t=()=>i().catch(e=>this._retryOrEnd(a,e).then(t));return t()}).then(e=>this.end(a).then(()=>e))}createOperation(e,t,r,s){return new Y(e,t,r,s)}begin(t){return Promise.all(_.default.map(this._getCallbacks("onBefore",t.type,t.method),e=>e(t))).then(()=>{t.ended||t._setRunning(!0)},e=>this.end(t,e))}markReady(e){e._markReady()}clearReady(e){e._clearReady()}retry(t,r){return t._incrementTries(),t._error=r,Promise.all(_.default.map(this._getCallbacks("onError",t.type,t.method),e=>e(t,r))).then(e=>{if(!t.ended)return(e=_.default.some(e))&&delete t._error,e})}_retryOrEnd(t,r){return this.retry(t,r).then(e=>{if(!e)return this.end(t,r)},e=>this.end(t,e))}end(t,e){return t.ended?Promise.resolve():(t._setRunning(!1),t._setEnded(!0),e?t._error=e:delete t._error,Promise.all(_.default.map(this._getCallbacks("onAfter",t.type,t.method),e=>e(t))).then(()=>this._afterEnd(t),e=>(t._error=e,this._afterEnd(t))))}_afterEnd(t){if(t._markReady(!0),!t.error)return Promise.resolve();let e=this._getCallbacks("onFailure",t.type,t.method);return e&&setTimeout(()=>{_.default.forEach(e,e=>e(t))},0),Promise.reject(t.error)}}let Z="-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz",ee=window.crypto&&window.crypto.getRandomValues&&window.crypto.getRandomValues.bind(window.crypto);class te{constructor(){this._lastUniqueKeyTime=0,this._lastRandomValues=[]}generateUniqueKey(e){e=e||Date.now();var t=new Array(20);let r=e;for(let e=7;0<=e;e--)t[e]=Z.charAt(63&r),r=Math.floor(r/64);if(e===this._lastUniqueKeyTime){let e=11;for(;0<=e&&63===this._lastRandomValues[e];)this._lastRandomValues[e]=0,--e;if(-1===e)throw new Error("Internal assertion failure: ran out of unique IDs for this millisecond");this._lastRandomValues[e]+=1}else if(this._lastUniqueKeyTime=e,ee){var s=new Uint8Array(12);ee(s);for(let e=0;e<12;e++)this._lastRandomValues[e]=s[e]&(e?63:15)}else for(let e=0;e<12;e++)this._lastRandomValues[e]=Math.floor(Math.random()*(e?64:16));for(let e=0;e<12;e++)t[e+8]=Z[this._lastRandomValues[e]];return t.join("")}}class re{constructor(e,t,r,s){this._rootUrl=e,this._tree=t,this._dispatcher=s,this._bridge=r,this._vue=new u.default({data:{$root:{connected:void 0,timeOffset:0,user:void 0,userid:void 0,nowAtInterval(e){let t="now"+e;var r;return Object.hasOwn(this,t)||((r=()=>{u.default.set(this,t,Date.now()+this.timeOffset),c.digest()})(),setInterval(r,e)),this[t]}}}}),this._auth={serial:0,initialAuthChangeReceived:!1,changePromise:Promise.resolve()},r.onAuth(e,this._handleAuthChange,this),this._connectInfoProperty("serverTimeOffset","timeOffset"),this._connectInfoProperty("connected","connected"),Object.freeze(this)}get root(){return this._vue.$data.$root}destroy(){this._bridge.offAuth(this._rootUrl,this._handleAuthChange,this),this._vue.$destroy()}authenticate(e){return this._auth.serial++,this._dispatcher.execute("auth","authenticate",new b(this._tree,"/"),e,()=>(e?this._bridge.authWithCustomToken(this._rootUrl,e):this._bridge.authAnonymously(this._rootUrl)).then(()=>this._auth.changePromise))}unauthenticate(){return this._auth.serial++,this._handleAuthChange(null).then(e=>{if(e)return this._dispatcher.execute("auth","unauthenticate",new b(this._tree,"/"),void 0,()=>this._bridge.unauth(this._rootUrl))})}_handleAuthChange(r){var e=!this._auth.initialAuthChangeReceived&&this._auth.serial;if(void 0!==r&&(this._auth.initialAuthChangeReceived=!0),!e){let e=this._auth.serial;if(this.root.user===r)return Promise.resolve(!1);let t=this._dispatcher.execute("auth","certify",new b(this._tree,"/"),r,()=>this.root.user!==r&&e===this._auth.serial&&(r&&Object.freeze(r),this.root.user=r,this.root.userid=r&&r.uid,c.digest(),!0));return this._auth.changePromise=this._auth.changePromise.then(()=>t).catch(),t}}_isAuthChangeStale(e){return this.root.user===e}_connectInfoProperty(e,t){var r=new URL(this._rootUrl);r.pathname=encodeURI("/.info/"+e),this._bridge.on(r.href,r.href,null,"value",e=>{this.root[t]=e.value,c.digest()})}}let se={__ob__:!0},ie=new Set(["beforeMount","mounted","beforeUpdate","updated","activated","deactivated","errorCaptured"]),ae=new Set(_.default.map(ie,e=>"hook:"+e)),ne=Symbol("last-computed-value"),j,C;class S{get $info(){return this.$truss.info}get $store(){return this.$truss.store}get $now(){return this.$truss.now}$newKey(){return this.$truss.newKey()}$intercept(e,t){if(this.$destroyed)throw new Error("Object already destroyed");let r=this.$truss.intercept(e,t),s=()=>{r(),this.$off("hook:destroyed",s)};return this.$on("hook:destroyed",s),s}$connect(e,t){if(this.$destroyed)throw new Error("Object already destroyed");t||(t=e,e=void 0);let r=this.$truss.connect(e,function t(r,s){if(!s||s instanceof y)return s;if(_.default.isFunction(s)){let e=function(){return r.$$touchThis(),t(r,s.call(this))};return e.angularWatchSuppressed=!0,e}return _.default.mapValues(s,e=>t(r,e))}(this,t)),s=r.destroy,i=()=>(this.$off("hook:destroyed",i),s.call(r));return this.$on("hook:destroyed",i),r.destroy=i,r}$peek(e,t){if(this.$destroyed)throw new Error("Object already destroyed");let r=P(this.$truss.peek(e,t),()=>{this.$off("hook:destroyed",r.cancel)});return this.$on("hook:destroyed",r.cancel),r}$observe(e,t,r){if(this.$destroyed)throw new Error("Object already destroyed");let s,i=this.$truss.observe(()=>(this.$$touchThis(),e.call(this)),t.bind(this),{...r,vm:this});return s=()=>{i(),this.$off("hook:destroyed",s)},this.$on("hook:destroyed",s),s}$when(e,t){if(this.$destroyed)throw new Error("Object already destroyed");let r=this.$truss.when(()=>(this.$$touchThis(),e.call(this)),t);return P(r,()=>{this.$off("hook:destroyed",r.cancel)}),this.$on("hook:destroyed",r.cancel),r}}class R{get $parent(){return j.$parent.value}get $path(){return j.$path.value}get $truss(){return Object.defineProperty(this,"$truss",{value:this.$parent.$truss}),this.$truss}get $ref(){return Object.defineProperty(this,"$ref",{value:new b(this.$truss._tree,this.$path)}),this.$ref}get $refs(){return this.$ref}get $key(){return Object.defineProperty(this,"$key",{value:d(this.$path.slice(this.$path.lastIndexOf("/")+1))}),this.$key}get $data(){return this}get $hidden(){return!1}get $empty(){return _.default.isEmpty(this.$data)}get $keys(){return _.default.keys(this.$data)}get $values(){return _.default.values(this.$data)}get $ready(){return this.$ref.ready}get $overridden(){return!1}$nextTick(){if(this.$destroyed)throw new Error("Object already destroyed");let e=this.$truss.nextTick();return P(e,()=>{this.$off("hook:destroyed",e.cancel)}),this.$on("hook:destroyed",e.cancel),e}$freezeComputedProperty(){if(!_.default.isBoolean(C))throw new Error("Cannot freeze a computed property outside of its getter function");C=!0}get $lastComputedValue(){if(_.default.isBoolean(C))return ne;throw new Error("Cannot use last computed value of a property outside of its getter function")}$set(e){return this.$ref.set(e)}$update(e){return this.$ref.update(e)}$override(e){return this.$ref.override(e)}$commit(e,t){return this.$ref.commit(e,t)}$$touchThis(){this.__ob__?this.__ob__.dep.depend():this.$parent?(Object.hasOwn(this.$parent,"$data")?this.$parent.$data:this.$parent)[this.$key]:this.$store}get $destroyed(){return!1}$on(e,t){if(this.$destroyed)throw new Error("Object already destroyed");if(ae.has(e))throw new Error(`Models don't support the "${e}" lifecycle event`);return(this.$$hooks[e]=this.$$hooks[e]||[]).push(t),this}$once(t,r){let s=this;function i(...e){s.$off(t,i),r(...e)}return i.fn=r,this.$on(t,i)}$off(e,t){if(e)if(t){if(_.default.isArray(e))for(var r of e)this.$off(r,t);else if(this.$$hooks[e]){var s=this.$$hooks[e];for(let e=0;e{e.$once&&e.$once[t]&&(--e.$once[t],this.$off(t,e)),e(...r)}),this}get $$hooks(){return Object.defineProperty(this,"$$hooks",{value:{},writable:!1,enumerable:!1,configurable:!1}),this.$$hooks}}Q(S,R),_.default.forEach(R.prototype,(e,t)=>{Object.defineProperty(R.prototype,t,{value:e,enumerable:!1,configurable:!1,writable:!1})});class x{constructor(e){this.error=e}}class oe{constructor(e){this.value=e}}class he{constructor(e,t){this._vue=e,this._trie={Class:R},this._debug=t,Object.freeze(this)}init(e,t){_.default.isPlainObject(e)&&(_.default.forEach(e,(e,t)=>{e.$trussMount||(e.$$trussMount=e.$$trussMount||[],e.$$trussMount.push(t))}),e=_.default.values(e),_.default.forEach(e,e=>{!e.$trussMount&&e.$$trussMount&&(e.$trussMount=e.$$trussMount,delete e.$$trussMount)})),e=_.default.uniq(e),_.default.forEach(e,e=>this._mountClass(e,t)),this._decorateTrie(this._trie)}destroy(){}_getMount(e,t,r){var s;let i;for(s of m(e,!0)){let e=s?i.children&&(i.children[s]||!t&&i.children.$):this._trie;if(!e){if(!t)return;i.children=i.children||{},e=i.children[s]={Class:R}}if(i=e,r&&r(i))break}return i}_findMount(e,t){if(e(t=t||this._trie))return t;for(var r of _.default.keys(t.children)){r=this._findMount(e,t.children[r]);if(r)return r}}_decorateTrie(t){_.default.forEach(t.children,e=>{this._decorateTrie(e),(e.local||e.localDescendants)&&(t.localDescendants=!0)})}_augmentClass(e){let t,r=e.prototype;for(;r&&r.constructor!==Object;){for(var s of Object.getOwnPropertyNames(r)){var i=Object.getOwnPropertyDescriptor(r,s);if("$"===s.charAt(0)){if(_.default.isEqual(i,Object.getOwnPropertyDescriptor(R.prototype,s)))continue;throw new Error(`Property names starting with "$" are reserved: ${e.name}.`+s)}if(ie.has(s)&&_.default.isFunction(r[s]))throw new Error(`Models don't support the "${s}" lifecycle method`);!i.get||t&&t[s]||((t=t||{})[s]={name:s,fullName:r.constructor.name+"."+s,get:i.get,set:i.set})}r=Object.getPrototypeOf(r)}for(var a of Object.getOwnPropertyNames(R.prototype))"constructor"===a||Object.hasOwn(e.prototype,a)||Object.defineProperty(e.prototype,a,Object.getOwnPropertyDescriptor(R.prototype,a));return t}_mountClass(a,n){let o=this._augmentClass(a),h=[],e=a.$trussMount;if(!e)throw new Error(`Class ${a.name} lacks a $trussMount static property`);_.default.isArray(e)||(e=[e]),_.default.forEach(e,e=>{if(_.default.isString(e)&&(e={path:e}),!n&&"/"===e.path)throw new Error("Data root already accessed, too late to mount class");var t,r=l(e.path);for(t of r.variables){if("$"===t||"$"===t.charAt(1))throw new Error("Invalid variable name: "+t);if("$"===t.charAt(0)&&(_.default.has(R.prototype,t)||se[t]))throw new Error("Variable name conflicts with built-in property or method: "+t);h.push(t)}var s=e.path.match(/\/([^/]*)$/)[1];if("$"===s.charAt(0)){if(e.placeholder)throw new Error(`Class ${a.name} mounted at wildcard ${s} cannot be a placeholder`)}else _.default.has(e,"placeholder")||(e.placeholder={});var i=this._getMount(e.path.replace(/\$[^/]*/g,"$"),!0);if(i.matcher&&(i.escapedKey===s||"$"===i.escapedKey.charAt(0)&&"$"===s.charAt(0)))throw new Error(`Multiple classes mounted at ${e.path}: ${i.Class.name}, `+a.name);_.default.assign(i,{Class:a,matcher:r,computedProperties:o,escapedKey:s},_.default.pick(e,"placeholder","local","keysUnsafe","hidden"))}),_.default(h).uniq().forEach(e=>{Object.defineProperty(a.prototype,e,{get(){return j?j[e]&&j[e].value:void 0}})})}createObject(e,r){var s=this._getMount(e)||{Class:R};try{if(s.matcher){var i,a=s.matcher.match(e);for(i in a)r[i]={value:a[i]}}j=r;let t=new s.Class;return j=null,c.active&&this._wrapProperties(t),s.keysUnsafe&&(r.$data={value:Object.create(null),configurable:!0,enumerable:!0}),s.hidden&&(r.$hidden={value:!0}),s.computedProperties&&_.default.forEach(s.computedProperties,e=>{r[e.name]=this._buildComputedPropertyDescriptor(t,e)}),t}catch(e){throw e.extra=_.default.assign({mount:s,properties:r,className:s.Class&&s.Class.name},e.extra),e}}_wrapProperties(i){_.default.forEach(i,(e,t)=>{let r="$_"+t;var s=Object.getOwnPropertyDescriptor(i,t),s=s.get&&s.set?{get:s.get,set:s.set,configurable:!0}:{value:e,writable:!0};Object.defineProperties(i,{[r]:s,[t]:{get:()=>i[r],set:e=>{i[r]=e,c.digest()},enumerable:!0,configurable:!0}})})}_buildComputedPropertyDescriptor(i,a){let n=$.for(a.fullName),o,h,l=!1,u=()=>{let e=!1;var t=function(e,r){if(!this.$destroyed){this.$$touchThis();var s=C,i=(C=!1,performance.now());let t;try{try{t=e.get.call(this)}catch(e){t=new x(e)}finally{r.computeTime+=performance.now()-i,r.numRecomputes+=1}return t=C?new oe(t):t}finally{C=s}}}.bind(i,a,n);t.toString=_.default.constant("compute "+a.fullName);let r=()=>{e=!0};r=this._vue.$watch(t,e=>{if(i.$destroyed)r();else if(h&&(h.cancel&&h.cancel(),h=void 0),_.default.isObject(e)&&_.default.isFunction(e.then)){let t=e.then(e=>{t===h&&s(e)},e=>{if(t===h&&s(new x(e))&&!e.trussExpectedException)throw e});h=t}else if(s(e)&&(c.digest(),e instanceof x)&&!e.error.trussExpectedException)throw e.error},{immediate:!0});t=_.default.last(this._vue._watchers||this._vue._scope.effects);function s(e){var t=performance.now();return e instanceof oe&&(e=e.value,r(),i.$off("hook:destroyed",r)),e!==ne&&!v(o,e)&&(l=!0,i[a.name]=e,l=!1,function t(e){if(_.default.isNil(e)||!_.default.isObject(e)||Object.isFrozen(e)||e.$truss)return e;e=Object.freeze(e);if(_.default.isArray(e))return _.default.map(e,e=>t(e));return _.default.mapValues(e,e=>t(e))}(e),n.numUpdates+=1,n.updateTime+=performance.now()-t,1)}t.id=-t.id,e?r():i.$on("hook:destroyed",r),i.$off("hook:created",u)};return i.$on("hook:created",u),{enumerable:!0,configurable:!0,get(){if(!l&&o instanceof x)throw o.error;return o},set(e){if(l)o=e;else{if(!a.set)throw new Error("You cannot set a computed property: "+a.name);a.set.call(this,e)}}}}destroyObject(e){Object.defineProperty(e,"$destroyed",{value:!0,enumerable:!1,configurable:!1})}emitLifecycleHook(e,t){_.default.isFunction(e[t])&&e[t](),e.$emit("hook:"+t)}isPlaceholder(e){e=this._getMount(e);return e&&e.placeholder}isLocal(e,t){e=this._getMount(e,!1,e=>e.local);if(e&&e.local)return!0;if(this._hasLocalProperties(e,t))throw new Error("Write on a mix of local and remote tree paths.");return!1}_hasLocalProperties(e,t){if(e){if(e.local)return!0;if(e.localDescendants&&_.default.isObject(t))for(var r in t)if(this._hasLocalProperties(e.children[p(r)]||e.children.$,t[r]))return!0}return!1}forEachPlaceholderChild(e,t){e=this._getMount(e);_.default.forEach(e&&e.children,e=>{e.placeholder&&t(e)})}checkVueObject(i,e,t){t||(t=new Set);var r=new Map;let s=this._findMount(e=>e.Class===i.constructor);var a,n,o,h,l,u,c,d=_.default(i).thru(Object.getOwnPropertyNames).reject(e=>se[e]||Object.hasOwn(R.prototype,e)||/^\$_/.test(e)).reject(e=>s&&s.matcher&&_.default.includes(s.matcher.variables,e)).map(e=>{let t;try{if((t=i[e])instanceof RegExp)return}catch{return}var r=Object.getOwnPropertyDescriptor(i,e),s=!r.enumerable&&r.set&&!Object.hasOwn(i,"$_"+e);return{key:e,value:t,descriptor:r,computed:s}}).compact().value();for({key:a,value:n,descriptor:o,computed:h}of d){if(!_.default.isArray(i)||!/^\d+$/.test(a)&&"length"!==a){if("value"in o||!o.get)throw new Error(`Value at ${e}, contained in a Firetruss object, has a rogue property: `+a);if(i.$truss&&o.enumerable)try{throw i[a]=n,new Error(`Firetruss object at ${e} has an enumerable non-Firebase property: `+a)}catch(e){if("firebase_overwrite"!==e.trussCode)throw e}}_.default.isObject(n)&&(t.has(n)||Object.isSealed(n)||_.default.isFunction(n)||_.default.isElement(n)||n instanceof Promise||(t.add(n),this.checkVueObject(n,g(e,p(a)),t)),h||n.$truss||r.set(n,a))}for({key:l,value:u,computed:c}of d)if(c&&_.default.isObject(u)&&!u.$truss){var f=r.get(u);if(f)throw new Error(`Firetruss object at ${e} has properties ${l} `+`and ${f} with an aliased value`)}}}class le{constructor(e,t){this._coupler=e,this._query=t,this._listeners=[],this._keys=[],this._coupler._url.pathname=encodeURI(t.path),this._url=this._coupler._url.toString(),this._segments=m(t.path,!0),this._listening=!1,this.ready=!1}attach(e,t){this._listen(),this._listeners.push({operation:e,keysCallback:t}),this.ready&&(this._coupler._dispatcher.markReady(e),t)&&t(this._keys)}detach(e){e=_.default.findIndex(this._listeners,{operation:e});return 0<=e&&this._listeners.splice(e,1),this._listeners.length}_listen(){this._listening||(this._coupler._bridge.on(this._query.toString(),this._url,this._query.constraints,"value",this._handleSnapshot,this._handleError,this,{sync:!0}),this._listening=!0)}destroy(){this._coupler._bridge.off(this._query.toString(),this._url,this._query.constraints,"value",this._handleSnapshot,this),this._listening=!1,this.ready=!1,c.digest();for(var e of this._keys)this._coupler._decoupleSegments(this._segments.concat(e))}_handleSnapshot(s){this._coupler._queueSnapshotCallback(()=>{if(this._listeners.length&&this._listening){var e=this._updateKeysAndApplySnapshot(s);if(!this.ready){this.ready=!0,c.digest();for(var t of this._listeners)this._coupler._dispatcher.markReady(t.operation)}if(e)for(var r of this._listeners)r.keysCallback&&r.keysCallback(e)}})}_updateKeysAndApplySnapshot(e){let t;if(e.path===this._query.path){if((t=_.default.keys(e.value)).sort(),_.default.isEqual(this._keys,t))t=null;else{for(var r of _.default.difference(t,this._keys))this._coupler._coupleSegments(this._segments.concat(r));for(var s of _.default.difference(this._keys,t))this._coupler._decoupleSegments(this._segments.concat(s));this._keys=t}if(e.exists){var i,a=e.value,n=e.path;for(i of this._keys)e._path=n+"/"+i,e._key=void 0,e._value=a[i],this._coupler._applySnapshot(e);e._path=n,e._key=void 0,e._value=a}}else{var o;e.path.replace(/\/[^/]+/,"")===this._query.path&&(o=_.default.includes(this._keys,e.key),e.value?o||(this._coupler._coupleSegments(this._segments.concat(e.key)),this._keys.push(e.key),this._keys.sort(),t=this._keys):o&&(this._coupler._decoupleSegments(this._segments.concat(e.key)),_.default.pull(this._keys,e.key),this._keys.sort(),t=this._keys),this._coupler._applySnapshot(e))}return t}_handleError(r){if(this._listeners.length&&this._listening){this._listening=!1,this.ready=!1;for(var e of this._keys)this._coupler._decoupleSegments(this._segments.concat(e));this._keys=[],c.digest(),Promise.all(_.default.map(this._listeners,t=>(this._coupler._dispatcher.clearReady(t.operation),this._coupler._dispatcher.retry(t.operation,r).catch(e=>(t.operation._disconnect(e),!1))))).then(e=>{if(_.default.some(e))this._listeners.length&&this._listen();else for(var t of this._listeners)t.operation._disconnect(r)})}}}class ue{constructor(e,t,r){this._coupler=e,this.path=t,this.parent=r,this._coupler._url.pathname=encodeURI(t),this.url=this._coupler._url.toString(),this.operations=[],this.queryCount=0,this.listening=!1,this.ready=!1,this.children={}}get active(){return this.count||this.queryCount}get count(){return this.operations.length}listen(e){!e&&this.count?this.listening||(_.default.forEach(this.operations,e=>{this._coupler._dispatcher.clearReady(e)}),this._coupler._bridge.on(this.url,this.url,null,"value",this._handleSnapshot,this._handleError,this,{sync:!0}),this.listening=!0):_.default.forEach(this.children,e=>{e.listen()})}unlisten(e){!e&&this.listening?(this._coupler._bridge.off(this.url,this.url,null,"value",this._handleSnapshot,this),this.listening=!1,this._forAllDescendants(e=>{if(e.listening)return!1;e.ready&&(e.ready=!1,c.digest())})):_.default.forEach(this.children,e=>{e.unlisten()})}_handleSnapshot(e){this._coupler._queueSnapshotCallback(()=>{this.listening&&this._coupler.isTrunkCoupled(e.path)&&(this._coupler._applySnapshot(e),this.ready||e.path!==this.path||(this.ready=!0,c.digest(),this.unlisten(!0),this._forAllDescendants(e=>{for(var t of e.operations)this._coupler._dispatcher.markReady(t)})))})}_handleError(r){if(this.count&&this.listening)return this.listening=!1,this._forAllDescendants(e=>{if(e.listening)return!1;e.ready&&(e.ready=!1,c.digest());for(var t of e.operations)this._coupler._dispatcher.clearReady(t)}),this._coupler._prunePath(this.path),Promise.all(_.default.map(this.operations,t=>this._coupler._dispatcher.retry(t,r).catch(e=>(t._disconnect(e),!1)))).then(e=>{if(_.default.some(e))this.count&&this.listen();else for(var t of this.operations)t._disconnect(r)})}_forAllDescendants(t){!1!==t(this)&&_.default.forEach(this.children,e=>e._forAllDescendants(t))}collectCoupledDescendantPaths(t){return(t=t||{})[this.path]=this.active,this.active||_.default.forEach(this.children,e=>{e.collectCoupledDescendantPaths(t)}),t}}class ce{constructor(e,t,r,s,i){this._url=new URL(e),this._bridge=t,this._dispatcher=r,this._applySnapshot=s,this._pendingSnapshotCallbacks=[],this._throttled={processPendingSnapshots:this._processPendingSnapshots},this._prunePath=i,this._vue=new u.default({data:{root:void 0,queryHandlers:{}}}),this._vue._renderProxy=this._vue,this._nodeIndex=Object.create(null),Object.freeze(this),this._vue.$data.root=new ue(this,"/"),this._nodeIndex["/"]=this._root}get _root(){return this._vue.$data.root}get _queryHandlers(){return this._vue.$data.queryHandlers}destroy(){_.default.forEach(this._queryHandlers,e=>{e.destroy()}),this._root.unlisten(),this._vue.$destroy()}couple(e,t){return this._coupleSegments(m(e,!0),t)}_coupleSegments(e,t){let r,s=!t,i=!1;for(var a of e){let e=a?r.children&&r.children[a]:this._root;e||(e=new ue(this,`${"/"===r.path?"":r.path}/`+a,r),u.default.set(r.children,a,e),this._nodeIndex[e.path]=e),s=s||e.listening,i=i||e.ready,r=e}t?r.operations.push(t):r.queryCount++,s?t&&i&&this._dispatcher.markReady(t):r.listen()}decouple(e,t){return this._decoupleSegments(m(e,!0),t)}_decoupleSegments(t,e){var r,s=[];let i;for(r of t){if(!(i=r?i.children&&i.children[r]:this._root))break;s.push(i)}if(!i||!(e?i.count:i.queryCount))throw new Error("Path not coupled: "+(t.join("/")||"/"));if(e?_.default.pull(i.operations,e):i.queryCount--,e&&!i.count&&(i.listen(),i.listening)&&i.unlisten(),!i.active){for(let e=s.length-1;0{r.running&&!r._disconnected&&(this._coupler.couple(e.path,r),r._coupled=!0)}).catch(_.default.noop),r._disconnect}_disconnectReference(e,t,r,s){t._disconnected||(t._disconnected=!0,r&&r(),t._coupled&&(this._coupler.decouple(e.path,t),t._coupled=!1),this._dispatcher.end(t,s).catch(_.default.noop))}isReferenceReady(e){return this._checkHandle(e),this._coupler.isSubtreeReady(e.path)}connectQuery(e,t,r){this._checkHandle(e);let s=this._dispatcher.createOperation("read",r,e);return s._disconnect=this._disconnectQuery.bind(this,e,s),this._dispatcher.begin(s).then(()=>{s.running&&!s._disconnected&&(this._coupler.subscribe(e,s,t),s._coupled=!0)}).catch(_.default.noop),s._disconnect}_disconnectQuery(e,t,r){t._disconnected||(t._disconnected=!0,t._coupled&&(this._coupler.unsubscribe(e,t),t._coupled=!1),this._dispatcher.end(t,r).catch(_.default.noop))}isQueryReady(e){return this._coupler.isQueryReady(e)}_checkHandle(e){if(!e.belongsTo(this._truss))throw new Error("Reference belongs to another Truss instance")}throttleRemoteDataUpdates(e){this._coupler.throttleSnapshots(e)}update(t,e,r){r=_.default.mapValues(r,e=>f(e));var s=_.default.size(r);if(!s)return Promise.resolve();if("update"!==e&&"override"!==e||_e(t.path,r),this._applyLocalWrite(r,"override"===e))return Promise.resolve();e=(e=>{let i;return _.default.forEach(e,(e,t)=>{var r="/"===t?[""]:m(t,!0);if(i){let e=0;for(var s=Math.min(i.length,r.length);ethis._bridge[n?"set":"update"](i,o,a).catch(e=>e.immediateFailure?P(this._repair(t,r),()=>Promise.reject(e)):Promise.reject(e)))}commit(i,a){let n=0,o=0,h={},l=(a=O(a),e=>{if(25<=n++){var t=new Error("Transaction needed too many retries, giving up");try{_.default.assign(t,{attemptCounts:h,sameValueCount:o})}catch{}return Promise.reject(t)}e=e||"initial",h[e]=(h[e]||0)+1;let r=new de(i),s;return u.default.nextTick().then(()=>{var e=T(r.currentValue);return _.default.isEqual(e,s)&&(o+=1),s=e,a(r)}).then(()=>{if(!_.default.isEqual(s,T(r.currentValue)))return l("changed");if("abort"===r.outcome)return r;let t=_.default.mapValues(r.values,e=>f(e));switch(r.outcome){case"cancel":break;case"set":if(this._applyLocalWrite({[i.path]:t[""]}))return Promise.resolve();break;case"update":if(_e(i.path,t),this._applyLocalWrite(t))return Promise.resolve();pe(i.path,t);break;default:throw new Error("Invalid transaction outcome: "+(r.outcome||"none"))}return this._url.pathname=encodeURI(i.path),this._bridge.transaction(this._url.toString(),s,t,this._writeSerial).then(e=>(_.default.forEach(e.snapshots,e=>this._integrateSnapshot(e)),e.committed?r:l("stale")),e=>!e.immediateFailure||"set"!==r.outcome&&"update"!==r.outcome?Promise.reject(e):P(this._repair(i,t),()=>Promise.reject(e)))})});return this._truss.peek(i,()=>this._dispatcher.execute("write","commit",i,void 0,l))}_repair(e,t){let r=e.path;e=_.default(t).keys().flatMap(e=>{let t=r;return e&&(t=g(t,e)),_.default.keys(this._coupler.findCoupledDescendantPaths(t))}).value();return Promise.all(_.default.map(e,e=>(this._url.pathname=encodeURI(e),this._bridge.once(this._url.toString()).then(e=>{this._integrateSnapshot(e)}))))}_applyLocalWrite(e,h){this._writeSerial++,this._localWriteTimestamp=this._truss.now;let l=[],u=0;_.default.forEach(e,(t,e)=>{var r=this._modeler.isLocal(e,t),s=(r&&u++,r?{[e]:!0}:this._coupler.findCoupledDescendantPaths(e));if(!_.default.isEmpty(s)){var i,a=("/"===e?0:e.length)+1;for(i in s){var n=i.slice(a);let e=t;if(n&&null!=t)for(var o of m(n))if(void 0===(e=e.$data[o]))break;_.default.isNil(e)?this._prune(i):(n=_.default.last(m(i)),this._plantValue(i,n,e,this._scaffoldAncestors(i,!1,l),!1,h,r,l)),h||r||(this._localWrites[i]=this._writeSerial)}}});for(var t of l)this._completeCreateObject(t);if(u&&u<_.default.size(e))throw new Error("Write on a mix of local and remote tree paths.");return h||!!u}_createObject(e,t){this._initialized||"/"===e||this.init();t={$parent:{value:t,configurable:!0,enumerable:!0},$path:{value:e}},"/"===e&&(t.$truss={value:this._truss}),e=this._modeler.createObject(e,t);return this._modeler.emitLifecycleHook(e,"beforeCreate"),this._defineObjectProperties(e,t),e}_defineObjectProperties(t,r){var s=t.__ob__;if(Object.defineProperties(t,r),s){let e=!1;for(var i of _.default.keys(r)){var a=Object.getOwnPropertyDescriptor(t,i);a.configurable&&a.enumerable&&(u.default.util.defineReactive(t,i),e=!0)}e&&s.dep.notify()}}_fixObject(e){for(var t of Object.getOwnPropertyNames(e)){var r=Object.getOwnPropertyDescriptor(e,t);r.configurable&&r.enumerable&&(r.enumerable=!1,_.default.startsWith(t,"$")&&(r.configurable=!1),Object.defineProperty(e,t,r))}}_completeCreateObject(e){this._modeler.emitLifecycleHook(e,"created")}_destroyObject(e){if(e&&e.$truss&&!e.$destroyed){this._modeler.emitLifecycleHook(e,"beforeDestroy"),this._modeler.destroyObject(e);for(var t of Object.getOwnPropertyNames(e.$data)){t=e.$data[t];t&&t.$parent===e&&this._destroyObject(t)}this._modeler.emitLifecycleHook(e,"destroyed")}}_integrateSnapshot(r){if(_.default.forEach(this._localWrites,(e,t)=>{r.writeSerial>=e&&delete this._localWrites[t]}),r.exists){var e,t=[],s=this._scaffoldAncestors(r.path,!0,t);s&&this._plantValue(r.path,r.key,r.value,s,!0,!1,!1,t);for(e of t)this._completeCreateObject(e)}else this._prune(r.path,null,!0)}_scaffoldAncestors(e,r,s){let i;var a=_.default.dropRight(m(e,!0));let n="/";for(let t=0;t{this._plantValue(g(s,t),d(t),e,r,n,o,h,l)}),e?this._plantPlaceholders(r,s,!1,l):_.default.forEach(r.$data,(e,t)=>{t=p(t);Object.hasOwn(i,t)||this._prune(g(s,t),null,n)}),r}this._destroyObject(r),!h&&_.default.isNil(i)?this._deleteFirebaseProperty(a,t):this._setFirebaseProperty(a,t,i)}}_plantPlaceholders(r,s,i,a){this._modeler.forEachPlaceholderChild(s,e=>{var t;void 0!==i&&i!==!!e.hidden||(t=d(e.escapedKey),Object.hasOwn(r.$data,t))||this._plantValue(g(s,e.escapedKey),t,e.placeholder,r,!1,!1,!1,a)})}_prune(e,t,r){t=t||{};var s=this.getObject(e);void 0===s||r&&this._avoidLocalWritePaths(e,t)||_.default.isEmpty(t)&&this._pruneAncestors(e,s)||!_.default.isObject(s)||this._pruneDescendants(s,t)}_avoidLocalWritePaths(t,r){for(var e in this._localWrites)if(Object.hasOwn(this._localWrites,e)){if(t===e||"/"===e||_.default.startsWith(t,e+"/"))return!0;if("/"===t||_.default.startsWith(e,t+"/")){var s=m(e,!0);for(let e=s.length;0(i=d(e.slice(1)),""));void 0!==s&&s!==this.root;){var n,o=s&&s.$parent||s===t&&this.getObject(a);this._modeler.isPlaceholder(s&&s.$path||e)||(n=r?null:[t],this._holdsConcreteData(s,n))||(r=!0,this._deleteFirebaseProperty(o,s&&s.$key||s===t&&i)),s=o}return r}_holdsConcreteData(e,t){return!(_.default.isNil(e)||t&&_.default.includes(t,e))&&(!_.default.isObject(e)||!e.$truss||_.default.some(e.$data,e=>this._holdsConcreteData(e,t)))}_pruneDescendants(a,n){if(n[a.$path])return!0;a.$overridden&&delete a.$overridden;let o=!1;return _.default.forEach(a.$data,(e,t)=>{let r=!0,s;var i;n[g(a.$path,p(t))]?(r=!1,s=!0):!_.default.isNil(e)&&e.$truss&&((i=this._modeler.isPlaceholder(e.$path))||_.default.has(n,e.$path))&&(s=this._pruneDescendants(e,n),r=!i&&!s),r&&this._deleteFirebaseProperty(a,t),o=o||s}),o}getObject(e){var t;let r;for(t of m(e))if(void 0===(r=t?r.$data[t]:this.root))return;return r}_getFirebasePropertyDescriptor(e,t,r){var s=Object.getOwnPropertyDescriptor(t,r);if(s){if(!s.enumerable){var i=t[r];if(!i||i.$parent!==e)throw new Error("Key conflict between Firebase and instance or computed properties at "+e.$path+": "+r)}if(!s.get||!s.set)throw new Error(`Unbound property at ${e.$path}: `+r)}else if(r in t)throw new Error(`Key conflict between Firebase and inherited property at ${e.$path}: `+r);return s}_setFirebaseProperty(e,t,r,s){var i=Object.hasOwn(e,"$data")?e.$data:e,e=this._getFirebasePropertyDescriptor(e,i,t);if(e){if(s&&Object.defineProperty(i,t,{get:e.get,set:e.set,configurable:!0,enumerable:!1}),i[t]===r)return;this._firebasePropertyEditAllowed=!0,i[t]=r,this._firebasePropertyEditAllowed=!1}else u.default.set(i,t,r),e=Object.getOwnPropertyDescriptor(i,t),Object.defineProperty(i,t,{get:e.get,set:this._overwriteFirebaseProperty.bind(this,e,t),configurable:!0,enumerable:!s});c.digest()}_overwriteFirebaseProperty(e,t,r){if(!this._firebasePropertyEditAllowed)throw(t=new Error("Firebase data cannot be mutated directly: "+t)).trussCode="firebase_overwrite",t;e.set.call(this,r)}_deleteFirebaseProperty(e,t){var r=Object.hasOwn(e,"$data")?e.$data:e;this._getFirebasePropertyDescriptor(e,r,t),this._destroyObject(r[t]),u.default.delete(r,t),c.digest()}checkVueObject(e,t){this._modeler.checkVueObject(e,t)}}function _e(r,s){_.default.forEach(_.default.keys(s),e=>{if("/"===e.charAt(0)){if(!(e===r||"/"===r||_.default.startsWith(e,r+"/")&&e.length>r.length+1))throw new Error("Update item is not a descendant of target ref: "+e)}else{if(_.default.includes(e,"/"))throw new Error("Update item deep path must be absolute, taken from a reference: "+e);var t=g(r,p(e));if(Object.hasOwn(s,t))throw new Error(`Update items overlap: ${e} and `+t);s[t]=s[e],delete s[e]}});let i=_.default(s).keys().map(e=>g(e,"")).sortBy("length").value();_.default.forEach(s,(e,t)=>{for(var r of i){if(r.length>t.length)break;if(t!==r&&_.default.startsWith(t,r))throw new Error(`Update items overlap: ${r} and `+t)}})}function pe(e,t){let r="/"===e?1:e.length+1;_.default.forEach(_.default.keys(t),e=>{t[e.slice(r)]=t[e],delete t[e]})}function T(e){if(!_.default.isObject(e))return e;var t,r={},s=e.$data;for(t in s)Object.hasOwn(s,t)&&(r[p(t)]=T(s[t]));return r}let A,D,ge={};class M{constructor(e){if(!A)throw new Error("Truss worker not connected, please call Truss.connectWorker first");this._rootUrl=e.replace(/\/$/,""),this._keyGenerator=new te,this._dispatcher=new X(A),this._vue=new u.default,A.trackServer(this._rootUrl),this._tree=new fe(this,this._rootUrl,A,this._dispatcher),this._metaTree=new re(this._rootUrl,this._tree,A,this._dispatcher),Object.freeze(this)}get info(){return this._metaTree.root}get store(){return this._tree.root}mount(e){this._tree.init(e)}destroy(){this._vue.$destroy(),this._tree.destroy(),this._metaTree.destroy()}get now(){return Date.now()+this.info.timeOffset}newKey(){return this._keyGenerator.generateUniqueKey(this.now)}authenticate(e){return this._metaTree.authenticate(e)}unauthenticate(){return this._metaTree.unauthenticate()}intercept(e,t){return this._dispatcher.intercept(e,t)}connect(e,t){return t||(t=e,e=void 0),(t instanceof y||_.default.isFunction(t))&&(t={_:t}),new k(e,t,this._tree,"connect")}peek(o,h){h=O(h||_.default.identity);let l,u;return E(Promise.resolve().then(()=>new Promise((t,s)=>{let r={},i,e=new k(r,{result:o},this._tree,"peek"),a=this.intercept("peek",{onFailure:r=>{!function t(e){if(e)return e instanceof y?r.target.isEqual(e):_.default.some(e,e=>t(e))}(e.at)||(s(r.error),l())}}),n=this.observe(()=>e.ready,e=>{e&&(n(),n=null,i=P(h(r.result),()=>{c.digest(),i=null,l()}).then(e=>{t(e)},e=>{s(e)}))});l=()=>{n&&(n(),n=null),a&&(a(),a=null),e&&(e.destroy(),e=null),i&&i.cancel&&i.cancel()},u=()=>{s(new Error("Canceled")),l()}})),u)}observe(e,s,i){let a=_.default.isObject(i&&i.precise),n=0,o;a&&(o=i.deep?_.default.cloneDeep(i.precise):_.default.clone(i.precise));let h;return h=this._vue.$watch(e,(t,r)=>{if(i&&i.precise){var e=a?i.deep?_.default.defaultsDeep({},t,i.precise):_.default.defaults({},t,i.precise):i.deep?_.default.cloneDeep(t):_.default.clone(t);if(_.default.isEqual(e,o))return;o=e}n++,h||i&&i.immediate?(s(t,r),c.digest()):Promise.resolve().then(()=>{var e=i&&i.vm;1{let r=this.observe(s,e=>{e&&u.default.nextTick(()=>{(e=s())&&(t(e),a())})});_.default.has(i,"timeout")&&(n=setTimeout(()=>{n=null,e(new Error(i.timeoutMessage||"Timeout")),a()},i.timeout)),a=()=>{r&&(r(),r=null),n&&(clearTimeout(n),n=null),e(new Error("Canceled"))}});return e=E(P(e,a),a),i&&i.scope&&i.scope.$on("$destroy",()=>{e.cancel()}),e}nextTick(){let r;return E(new Promise((e,t)=>{u.default.nextTick(e),r=()=>{t(new Error("Canceled"))}}),r)}throttleRemoteDataUpdates(e){this._tree.throttleRemoteDataUpdates(e)}checkObjectsForRogueProperties(){this._tree.checkVueObject(this._tree.root,"/")}static get computedPropertyStats(){return $}static async connectWorker(r,e){if(A)throw new Error("Worker already connected");if(_.default.isString(r)){var t=window.SharedWorker||window.Worker;if(!t)throw new Error("Browser does not implement Web Workers");if(!navigator.locks)throw new Error("Browser does not implement locks");r=new t(r);t=window.crypto.getRandomValues(new Uint32Array(1))[0];r.lockName=`truss_worker_lock_${Date.now()}.`+t,await new Promise((e,t)=>{navigator.locks.request(r.lockName,()=>(e(),new Promise(()=>{}))).catch(t)})}A=new N(r),D&&A.enableLogging(D);var s,{exposedFunctionNames:t,firebaseSdkVersion:e}=await A.init(r.lockName,e);Object.defineProperty(M,"FIREBASE_SDK_VERSION",{value:e});for(s of t)M.preExpose(s)}static get worker(){return ge}static preExpose(e){var t,r=e.split(".");let s=M.worker;for(t of r.slice(0,-1))Object.hasOwnProperty.call(s,t)||(s[t]={}),s=s[t];s[r[r.length-1]]=A.bindExposedFunction(e)}static bounceConnection(){return A.bounceConnection()}static suspend(){return A.suspend()}static debugPermissionDeniedErrors(e,t,r){return A.debugPermissionDeniedErrors(e,t,r)}static debounceAngularDigest(e){c.debounceDigest(e)}static escapeKey(e){return p(e)}static unescapeKey(e){return d(e)}static enableLogging(e){D=e,A&&A.enableLogging(e)}get SERVER_TIMESTAMP(){return M.SERVER_TIMESTAMP}get VERSION(){return M.VERSION}get FIREBASE_SDK_VERSION(){return M.FIREBASE_SDK_VERSION}}return Object.defineProperties(M,{SERVER_TIMESTAMP:{value:K},VERSION:{value:"dev"},Model:{value:Object},ComponentPlugin:{value:{install(e,t){if(u.default!==e)throw new Error("Multiple versions of Vue detected");if(!t.truss)throw new Error("Need to pass `truss` instance as an option to use the ComponentPlugin");e={$truss:{value:t.truss},$destroyed:{get(){return this._isBeingDestroyed||this._isDestroyed}},$$touchThis:{value(){this.__ob__&&this.__ob__.dep.depend()}}},t=_.default(e).keys().union(_.default.keys(S.prototype)).intersection(_.default.keys(u.default.prototype)).value();if(t.length)throw new Error("Truss extension properties conflict with Vue properties: "+t.join(", "));Object.defineProperties(u.default.prototype,e),Q(S,u.default)}}}}),c.defineModule(M),M}); //# sourceMappingURL=firetruss.umd.min.js.map \ No newline at end of file diff --git a/dist/firetruss.umd.min.js.map b/dist/firetruss.umd.min.js.map index a08d45f..08b5ad2 100644 --- a/dist/firetruss.umd.min.js.map +++ b/dist/firetruss.umd.min.js.map @@ -1 +1 @@ -{"version":3,"file":"firetruss.umd.min.js","sources":["../src/angularCompatibility.js","../src/utils/LruCache.js","../src/utils/paths.js","../src/Bridge.js","../src/Reference.js","../src/utils/utils.js","../src/utils/stats.js","../src/Connector.js","../src/utils/promises.js","../src/Dispatcher.js","../src/KeyGenerator.js","../src/MetaTree.js","../src/Modeler.js","../src/Coupler.js","../src/Tree.js","../src/Truss.js"],"names":["bareDigest","vue","digestRequest","lastDigestRequest","let","digestInProgress","angularProxy","active","window","angular","initAngular","module","digest","watch","Error","defineModule","Truss","constant","debounceDigest","wait","debouncedDigest","_","debounce","config","$provide","decorator","$delegate","$exceptionHandler","rootScope","$watch","bind","proto","Object","getPrototypeOf","angularDigest","$digest","watcher","original","Vue","data","nextTick","call","last","_watchers","_scope","effects","id","Infinity","patchRenderWatcherGet","originalGet","prototype","get","this","e","vm","_watcher","errorHandler","forEach","method","noop","LruCacheItem","constructor","key","value","touch","timestamp","Date","now","pathSegments","maxSize","pruningSize","_items","create","_size","_maxSize","_pruningSize","Math","ceil","has","Boolean","item","set","_prune","delete","toArray","sortBy","take","pathMatchers","escapeKey","toString","replace","char","padStart","charCodeAt","unescapeKey","code","String","fromCharCode","parseInt","slice","escapeKeys","object","isObject","isExtensible","result","escapedKey","escapedValue","hasOwn","clone","joinPath","segment","segments","arguments","isString","charAt","splice","length","push","join","splitPath","path","leaveSegmentsEscaped","split","map","PathMatcher","pattern","variables","prefixMatch","endsWith","pathTemplate","match","freeze","test","_regex","RegExp","lastIndex","exec","bindings","i","makePathMatcher","matcher","size","keys","MIN_WORKER_VERSION","Snapshot","exists","writeSerial","_path","_value","_exists","undefined","_writeSerial","_key","Bridge","webWorker","_idCounter","_deferreds","_suspended","_servers","_callbacks","_log","_inboundMessages","_outboundMessages","_flushMessageQueue","_port","port","_shared","_dead","seal","onmessage","_receive","init","lockName","items","storage","localStorage","sessionStorage","getItem","_send","msg","then","response","workerVersion","version","minVersion","Promise","reject","livenessLockName","navigator","locks","request","crash","error","name","message","extra","shared","suspend","suspended","_receiveMessages","resolve","enableLogging","fn","console","log","promise","deferred","oneWay","params","postMessage","messages","event","concat","isFunction","bindExposedFunction","args","Array","errorFromJson","details","cause","updateLocalStorage","removeItem","setItem","trackServer","rootUrl","server","authListeners","authCallbackId","_registerCallback","_authCallback","url","callbackId","auth","listener","onAuth","callback","context","getAuth","offAuth","authWithCustomToken","authToken","authAnonymously","unauth","update","once","snapshot","on","listenerKey","spec","eventType","snapshotCallback","cancelCallback","options","handle","_onCallback","__callbackIds","catch","off","idsToDeregister","_findAndRemoveCallbackId","isMatch","_nullifyCallback","_deregisterCallback","snapshotJson","transaction","oldValue","relativeUpdates","snapshots","jsonSnapshot","onDisconnect","bounceConnection","apply","predicate","json","isError","propertyName","EMPTY_ANNOTATIONS","Handle","tree","annotations","_tree","_annotations","$ref","_pathPrefix","parent","Reference","child","isNil","children","escapedKeys","arg","isArray","mapping","subPath","rest","subRef","subMapping","peek","truss","isEqual","that","belongsTo","Query","super","_spec","_copyAndValidateSpec","queryTerms","encodeURIComponent","JSON","stringify","_string","ready","isQueryReady","constraints","annotate","assign","by","some","clause","childPath","startsWith","includes","toJSON","isReferenceReady","getObject","query","_checkForUndefinedPath","values","override","commit","updateFunction","SERVER_TIMESTAMP",".sv","isTrussEqual","a","b","isEqualWith","isTrussValueEqual","$truss","copyPrototype","prop","getOwnPropertyNames","defineProperty","getOwnPropertyDescriptor","StatItem","numRecomputes","numUpdates","computeTime","updateTime","add","runtime","runtimePerRecompute","runtimePerUpdate","toLogParts","totals","toFixed","stats","for","list","n","above","stat","lines","widths","range","line","max","column","wrap","getter","className","propName","startTime","performance","_computedWatchers","newValue","Connector","scope","connections","refs","_connections","_method","_subConnectors","_disconnects","_angularUnwatches","_data","_vue","descriptors","mapValues","destroy","_linkScopeProperties","descriptor","_bindComputedConnection","_connect","$on","$id","every","ignored","at","_unlinkScopeProperties","unwatch","_disconnect","$destroy","dataProperties","unused","configurable","enumerable","defineProperties","__ob__","dep","notify","connectionStats","_computeConnection","_updateComputedConnection","angularWatch","angularWatchSuppressed","immediate","flattenRefs","newDescriptor","descriptorChanged","_updateConnections","connectReference","updateFn","_updateQueryValue","connectQuery","subScope","subRefs","subConnector","unobserve","observe","subReady","_updateRefValue","childKeys","childKey","wrapPromiseCallback","promiseCancel","cancel","promiseFinally","propagatePromiseProperty","originalThen","originalCatch","onResolved","onRejected","derivedPromise","onFinally","INTERCEPT_KEYS","EMPTY_ARRAY","SlowHandle","operation","delay","_operation","_delay","_callback","_fired","initiate","elapsed","_startTimestamp","_timeoutId","setTimeout","clearTimeout","Operation","type","target","operand","_type","_target","_operand","_ready","_running","_ended","_tries","_slowHandles","targets","escapedPathFragment","running","ended","tries","_error","onSlow","_setRunning","_setEnded","_markReady","ending","_clearReady","_incrementTries","Dispatcher","bridge","_bridge","intercept","interceptKey","callbacks","badCallbackKeys","difference","wrappedCallbacks","onBefore","_addCallback","onAfter","onError","onFailure","_removeCallbacks","stage","_getCallbacksKey","wrappedCallback","_removeCallback","pull","_getCallbacks","operationType","execute","executor","createOperation","begin","executeWithRetries","_retryOrEnd","end","all","markReady","clearReady","retry","results","retrying","_afterEnd","onFailureCallbacks","ALPHABET","getRandomValues","crypto","KeyGenerator","_lastUniqueKeyTime","_lastRandomValues","generateUniqueKey","chars","prefix","floor","array","Uint8Array","random","MetaTree","dispatcher","_rootUrl","_dispatcher","$root","connected","timeOffset","user","userid","nowAtInterval","intervalMillis","setInterval","_auth","serial","initialAuthChangeReceived","changePromise","_handleAuthChange","_connectInfoProperty","root","$data","authenticate","token","unauthenticate","approved","supersededChange","authSerial","uid","_isAuthChangeStale","property","attribute","URL","pathname","encodeURI","href","snap","RESERVED_VALUE_PROPERTY_NAMES","UNSUPPORTED_LIFECYCLE_METHODS","Set","UNSUPPORTED_LIFECYCLE_HOOKS","LAST_COMPUTED_VALUE","Symbol","creatingObjectProperties","currentPropertyFrozen","BaseValue","$info","info","$store","store","$now","$newKey","newKey","$intercept","actionType","$destroyed","unintercept","uninterceptAndRemoveFinalizer","$off","$connect","connector","connect","wrapConnections","$$touchThis","originalDestroy","$peek","$observe","subjectFn","callbackFn","unobserveAndRemoveFinalizer","$when","expression","when","Value","$parent","$path","$refs","$key","lastIndexOf","$hidden","$empty","isEmpty","$keys","$values","$ready","$overridden","$nextTick","$freezeComputedProperty","isBoolean","$lastComputedValue","$set","$update","$override","$commit","depend","$$hooks","$once","cb","ev","$emit","writable","ErrorWrapper","FrozenWrapper","Modeler","debug","_trie","Class","_debug","classes","rootAcceptable","isPlainObject","$trussMount","$$trussMount","uniq","_mountClass","_decorateTrie","_getMount","scaffold","node","$","_findMount","local","localDescendants","_augmentClass","computedProperties","fullName","allVariables","mounts","mount","variable","placeholder","targetMount","pick","createObject","properties","_wrapProperties","keysUnsafe","hidden","_buildComputedPropertyDescriptor","valueKey","propertyStats","pendingPromise","writeAllowed","initialize","unwatchNow","compute","oldPropertyFrozen","finalValue","trussExpectedException","isFrozen","destroyObject","emitLifecycleHook","hook","isPlaceholder","isLocal","_hasLocalProperties","forEachPlaceholderChild","iteratee","checkVueObject","checkedObjects","objectPropertyValues","Map","candidate","computed","targetProperties","thru","compact","trussCode","isSealed","isElement","otherKey","QueryHandler","coupler","_coupler","_query","_listeners","_keys","_url","_segments","_listening","attach","keysCallback","_listen","detach","k","findIndex","_handleSnapshot","_handleError","sync","_decoupleSegments","_queueSnapshotCallback","updatedKeys","_updateKeysAndApplySnapshot","sort","_coupleSegments","rootValue","rootPath","_applySnapshot","hasKey","Node","operations","queryCount","listening","count","listen","skip","op","unlisten","_forAllDescendants","isTrunkCoupled","_prunePath","collectCoupledDescendantPaths","paths","Coupler","applySnapshot","prunePath","_pendingSnapshotCallbacks","_throttled","processPendingSnapshots","_processPendingSnapshots","queryHandlers","_renderProxy","_nodeIndex","_root","_queryHandlers","queryHandler","couple","superseded","decouple","ancestors","findCoupledDescendantPaths","subscribe","unsubscribe","isSubtreeReady","childSegment","extractChildSegment","throttleSnapshots","throttle","Transaction","ref","_ref","_outcome","_values","currentValue","outcome","_setOutcome","abort","","Tree","_truss","_firebasePropertyEditAllowed","_localWrites","_localWriteTimestamp","_initialized","_modeler","VERSION","_integrateSnapshot","_createObject","_fixObject","_completeCreateObject","createdObjects","_plantPlaceholders","_checkHandle","_disconnectReference","_disconnected","_coupled","_disconnectQuery","throttleRemoteDataUpdates","numValues","checkUpdateHasOnlyDescendantsWithNoOverlap","_applyLocalWrite","pathPrefix","prefixSegments","firstMismatchIndex","maxIndex","min","relativizePaths","immediateFailure","_repair","sameValueCount","attemptCounts","attemptTransaction","counter","txn","newOldValue","toFirebaseJson","committed","basePath","flatMap","numLocal","coupledDescendantPaths","descendantPath","offset","subValue","_plantValue","_scaffoldAncestors","_destroyObject","remoteWrite","dropRight","ancestorPath","objectCreated","_setFirebaseProperty","escapedChildKey","_deleteFirebaseProperty","lockedDescendantPaths","_avoidLocalWritePaths","_pruneAncestors","_pruneDescendants","localWritePath","targetPath","targetObject","deleted","targetKey","targetParentPath","ghostObjects","_holdsConcreteData","coupledDescendantFound","shouldDelete","valueLocked","_getFirebasePropertyDescriptor","_overwriteFirebaseProperty","absolutePath","allPaths","otherPath","logging","workerFunctions","_keyGenerator","_metaTree","identity","cleanup","callbackPromise","usePreciseDefaults","precise","numCallbacks","oldValueClone","deep","cloneDeep","newValueClone","defaultsDeep","defaults","timeoutHandle","timeoutMessage","timeout","checkObjectsForRogueProperties","computedPropertyStats","connectWorker","Worker","SharedWorker","Uint32Array","await","exposedFunctionNames","firebaseSdkVersion","preExpose","worker","functionName","obj","hasOwnProperty","debugPermissionDeniedErrors","simulatedTokenGenerator","maxSimulationDuration","callFilter","debounceAngularDigest","FIREBASE_SDK_VERSION","Model","ComponentPlugin","install","Vue2","pluginOptions","prototypeExtension","_isBeingDestroyed","_isDestroyed","conflictingKeys","union","intersection"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"firetruss.umd.min.js","sources":["../src/angularCompatibility.js","../src/utils/LruCache.js","../src/utils/paths.js","../src/Bridge.js","../src/Reference.js","../src/utils/utils.js","../src/utils/stats.js","../src/Connector.js","../src/utils/promises.js","../src/Dispatcher.js","../src/KeyGenerator.js","../src/MetaTree.js","../src/Modeler.js","../src/Coupler.js","../src/Tree.js","../src/Truss.js"],"names":["bareDigest","vue","digestRequest","lastDigestRequest","let","digestInProgress","angularProxy","active","window","angular","initAngular","module","digest","watch","Error","defineModule","Truss","constant","debounceDigest","wait","debouncedDigest","_","debounce","config","$provide","decorator","$delegate","$exceptionHandler","rootScope","$watch","bind","proto","Object","getPrototypeOf","angularDigest","$digest","watcher","original","Vue","data","nextTick","call","last","_watchers","_scope","effects","id","Infinity","patchRenderWatcherGet","originalGet","prototype","get","this","e","vm","_watcher","errorHandler","forEach","method","noop","LruCacheItem","constructor","key","value","touch","timestamp","Date","now","pathSegments","maxSize","pruningSize","_items","create","_size","_maxSize","_pruningSize","Math","ceil","has","Boolean","item","set","_prune","delete","toArray","sortBy","take","pathMatchers","escapeKey","toString","replace","char","padStart","charCodeAt","unescapeKey","code","String","fromCharCode","parseInt","slice","escapeKeys","object","isObject","isExtensible","result","escapedKey","escapedValue","hasOwn","clone","joinPath","segment","segments","arguments","isString","charAt","splice","length","push","join","splitPath","path","leaveSegmentsEscaped","split","map","PathMatcher","pattern","variables","prefixMatch","endsWith","pathTemplate","match","freeze","test","_regex","RegExp","lastIndex","exec","bindings","i","makePathMatcher","matcher","size","keys","MIN_WORKER_VERSION","Snapshot","exists","writeSerial","_path","_value","_exists","undefined","_writeSerial","_key","Bridge","webWorker","_idCounter","_deferreds","_suspended","_servers","_callbacks","_log","_inboundMessages","_outboundMessages","_flushMessageQueue","_port","port","_shared","_dead","seal","onmessage","_receive","init","lockName","items","storage","localStorage","sessionStorage","getItem","_send","msg","then","response","workerVersion","version","minVersion","Promise","reject","livenessLockName","navigator","locks","request","crash","error","name","message","extra","shared","suspend","suspended","_receiveMessages","resolve","enableLogging","fn","console","log","promise","deferred","oneWay","params","postMessage","messages","event","concat","isFunction","bindExposedFunction","args","Array","errorFromJson","details","cause","updateLocalStorage","removeItem","setItem","trackServer","rootUrl","server","authListeners","authCallbackId","_registerCallback","_authCallback","url","callbackId","auth","listener","onAuth","callback","context","getAuth","offAuth","authWithCustomToken","authToken","authAnonymously","unauth","update","once","snapshot","on","listenerKey","spec","eventType","snapshotCallback","cancelCallback","options","handle","_onCallback","__callbackIds","catch","off","idsToDeregister","_findAndRemoveCallbackId","isMatch","_nullifyCallback","_deregisterCallback","snapshotJson","transaction","oldValue","relativeUpdates","snapshots","jsonSnapshot","onDisconnect","bounceConnection","apply","predicate","json","isError","propertyName","EMPTY_ANNOTATIONS","Handle","tree","annotations","_tree","_annotations","$ref","_pathPrefix","parent","Reference","child","isNil","children","escapedKeys","arg","isArray","mapping","subPath","rest","subRef","subMapping","peek","truss","isEqual","that","belongsTo","Query","super","_spec","_copyAndValidateSpec","queryTerms","encodeURIComponent","JSON","stringify","_string","ready","isQueryReady","constraints","annotate","assign","by","some","clause","childPath","startsWith","includes","toJSON","isReferenceReady","getObject","query","_checkForUndefinedPath","values","override","commit","updateFunction","SERVER_TIMESTAMP",".sv","isTrussEqual","a","b","isEqualWith","isTrussValueEqual","$truss","copyPrototype","prop","getOwnPropertyNames","defineProperty","getOwnPropertyDescriptor","StatItem","numRecomputes","numUpdates","computeTime","updateTime","add","runtime","runtimePerRecompute","runtimePerUpdate","toLogParts","totals","toFixed","stats","for","list","n","above","stat","lines","widths","range","line","max","column","wrap","getter","className","propName","startTime","performance","_computedWatchers","newValue","Connector","scope","connections","refs","_connections","_method","_subConnectors","_disconnects","_angularUnwatches","_data","_vue","descriptors","mapValues","destroy","_linkScopeProperties","descriptor","_bindComputedConnection","_connect","$on","$id","every","ignored","at","_unlinkScopeProperties","unwatch","_disconnect","$destroy","dataProperties","unused","configurable","enumerable","defineProperties","__ob__","dep","notify","connectionStats","_computeConnection","_updateComputedConnection","angularWatch","angularWatchSuppressed","immediate","flattenRefs","newDescriptor","descriptorChanged","_updateConnections","connectReference","updateFn","_updateQueryValue","connectQuery","subScope","subRefs","subConnector","unobserve","observe","subReady","_updateRefValue","childKeys","childKey","wrapPromiseCallback","promiseCancel","cancel","promiseFinally","propagatePromiseProperty","originalThen","originalCatch","onResolved","onRejected","derivedPromise","onFinally","INTERCEPT_KEYS","EMPTY_ARRAY","SlowHandle","operation","delay","_operation","_delay","_callback","_fired","initiate","elapsed","_startTimestamp","_timeoutId","setTimeout","clearTimeout","Operation","type","target","operand","_type","_target","_operand","_ready","_running","_ended","_tries","_slowHandles","targets","escapedPathFragment","running","ended","tries","_error","onSlow","_setRunning","_setEnded","_markReady","ending","_clearReady","_incrementTries","Dispatcher","bridge","_bridge","intercept","interceptKey","callbacks","badCallbackKeys","difference","wrappedCallbacks","onBefore","_addCallback","onAfter","onError","onFailure","_removeCallbacks","stage","_getCallbacksKey","wrappedCallback","_removeCallback","pull","_getCallbacks","operationType","execute","executor","createOperation","begin","executeWithRetries","_retryOrEnd","end","all","markReady","clearReady","retry","results","retrying","_afterEnd","onFailureCallbacks","ALPHABET","getRandomValues","crypto","KeyGenerator","_lastUniqueKeyTime","_lastRandomValues","generateUniqueKey","chars","prefix","floor","array","Uint8Array","random","MetaTree","dispatcher","_rootUrl","_dispatcher","$root","connected","timeOffset","user","userid","nowAtInterval","intervalMillis","setInterval","_auth","serial","initialAuthChangeReceived","changePromise","_handleAuthChange","_connectInfoProperty","root","$data","authenticate","token","unauthenticate","approved","supersededChange","authSerial","uid","_isAuthChangeStale","property","attribute","URL","pathname","encodeURI","href","snap","RESERVED_VALUE_PROPERTY_NAMES","UNSUPPORTED_LIFECYCLE_METHODS","Set","UNSUPPORTED_LIFECYCLE_HOOKS","LAST_COMPUTED_VALUE","Symbol","creatingObjectProperties","currentPropertyFrozen","BaseValue","$info","info","$store","store","$now","$newKey","newKey","$intercept","actionType","$destroyed","unintercept","uninterceptAndRemoveFinalizer","$off","$connect","connector","connect","wrapConnections","$$touchThis","originalDestroy","$peek","$observe","subjectFn","callbackFn","unobserveAndRemoveFinalizer","$when","expression","when","Value","$parent","$path","$refs","$key","lastIndexOf","$hidden","$empty","isEmpty","$keys","$values","$ready","$overridden","$nextTick","$freezeComputedProperty","isBoolean","$lastComputedValue","$set","$update","$override","$commit","depend","$$hooks","$once","cb","ev","$emit","writable","ErrorWrapper","FrozenWrapper","Modeler","debug","_trie","Class","_debug","classes","rootAcceptable","isPlainObject","$trussMount","$$trussMount","uniq","_mountClass","_decorateTrie","_getMount","scaffold","node","$","_findMount","local","localDescendants","_augmentClass","computedProperties","fullName","allVariables","mounts","mount","variable","placeholder","targetMount","pick","createObject","properties","_wrapProperties","keysUnsafe","hidden","_buildComputedPropertyDescriptor","valueKey","valueDescriptor","propertyStats","pendingPromise","writeAllowed","initialize","unwatchNow","compute","oldPropertyFrozen","finalValue","trussExpectedException","isFrozen","destroyObject","emitLifecycleHook","hook","isPlaceholder","isLocal","_hasLocalProperties","forEachPlaceholderChild","iteratee","checkVueObject","checkedObjects","objectPropertyValues","Map","candidate","computed","targetProperties","thru","compact","trussCode","isSealed","isElement","otherKey","QueryHandler","coupler","_coupler","_query","_listeners","_keys","_url","_segments","_listening","attach","keysCallback","_listen","detach","k","findIndex","_handleSnapshot","_handleError","sync","_decoupleSegments","_queueSnapshotCallback","updatedKeys","_updateKeysAndApplySnapshot","sort","_coupleSegments","rootValue","rootPath","_applySnapshot","hasKey","Node","operations","queryCount","listening","count","listen","skip","op","unlisten","_forAllDescendants","isTrunkCoupled","_prunePath","collectCoupledDescendantPaths","paths","Coupler","applySnapshot","prunePath","_pendingSnapshotCallbacks","_throttled","processPendingSnapshots","_processPendingSnapshots","queryHandlers","_renderProxy","_nodeIndex","_root","_queryHandlers","queryHandler","couple","superseded","decouple","ancestors","findCoupledDescendantPaths","subscribe","unsubscribe","isSubtreeReady","childSegment","extractChildSegment","throttleSnapshots","throttle","Transaction","ref","_ref","_outcome","_values","currentValue","outcome","_setOutcome","abort","","Tree","_truss","_firebasePropertyEditAllowed","_localWrites","_localWriteTimestamp","_initialized","_modeler","VERSION","_integrateSnapshot","_createObject","_fixObject","_completeCreateObject","createdObjects","_plantPlaceholders","_checkHandle","_disconnectReference","_disconnected","_coupled","_disconnectQuery","throttleRemoteDataUpdates","numValues","checkUpdateHasOnlyDescendantsWithNoOverlap","_applyLocalWrite","pathPrefix","prefixSegments","firstMismatchIndex","maxIndex","min","relativizePaths","immediateFailure","_repair","sameValueCount","attemptCounts","attemptTransaction","counter","txn","newOldValue","toFirebaseJson","committed","basePath","flatMap","numLocal","coupledDescendantPaths","descendantPath","offset","subValue","_plantValue","_scaffoldAncestors","_defineObjectProperties","observer","addedReactiveProperties","util","defineReactive","_destroyObject","remoteWrite","dropRight","ancestorPath","objectCreated","_setFirebaseProperty","escapedChildKey","_deleteFirebaseProperty","lockedDescendantPaths","_avoidLocalWritePaths","_pruneAncestors","_pruneDescendants","localWritePath","targetPath","targetObject","deleted","targetKey","targetParentPath","ghostObjects","_holdsConcreteData","coupledDescendantFound","shouldDelete","valueLocked","_getFirebasePropertyDescriptor","_overwriteFirebaseProperty","absolutePath","allPaths","otherPath","logging","workerFunctions","_keyGenerator","_metaTree","identity","cleanup","callbackPromise","usePreciseDefaults","precise","numCallbacks","oldValueClone","deep","cloneDeep","newValueClone","defaultsDeep","defaults","timeoutHandle","timeoutMessage","timeout","checkObjectsForRogueProperties","computedPropertyStats","connectWorker","Worker","SharedWorker","Uint32Array","await","exposedFunctionNames","firebaseSdkVersion","preExpose","worker","functionName","obj","hasOwnProperty","debugPermissionDeniedErrors","simulatedTokenGenerator","maxSimulationDuration","callFilter","debounceAngularDigest","FIREBASE_SDK_VERSION","Model","ComponentPlugin","install","Vue2","pluginOptions","prototypeExtension","_isBeingDestroyed","_isDestroyed","conflictingKeys","union","intersection"],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 9d8eb17..ac3bb69 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "firetruss", - "version": "7.8.4", + "version": "7.8.5", "description": "Advanced data sync layer for Firebase and Vue.js", "scripts": { "update": "yarn up -R '*' && yarn dedupe --strategy highest", diff --git a/src/Modeler.js b/src/Modeler.js index 1a76606..b66d19d 100644 --- a/src/Modeler.js +++ b/src/Modeler.js @@ -448,8 +448,12 @@ export default class Modeler { _wrapProperties(object) { _.forEach(object, (value, key) => { const valueKey = '$_' + key; + const descriptor = Object.getOwnPropertyDescriptor(object, key); + const valueDescriptor = descriptor.get && descriptor.set ? { + get: descriptor.get, set: descriptor.set, configurable: true + } : {value, writable: true}; Object.defineProperties(object, { - [valueKey]: {value, writable: true}, + [valueKey]: valueDescriptor, [key]: { get: () => object[valueKey], set: arg => {object[valueKey] = arg; angular.digest();}, @@ -571,7 +575,6 @@ export default class Modeler { } isLocal(path, value) { - // eslint-disable-next-line no-shadow const mount = this._getMount(path, false, mount => mount.local); if (mount && mount.local) return true; if (this._hasLocalProperties(mount, value)) { diff --git a/src/Modeler.test.js b/src/Modeler.test.js index bf2ab69..7091c2d 100644 --- a/src/Modeler.test.js +++ b/src/Modeler.test.js @@ -58,6 +58,21 @@ class SubrootFoo { static get $trussMount() {return '/sub/foo';} } +let earlyObserver; + +class EarlyObservedRoot { + static get $trussMount() {return '/';} + + constructor() { + earlyObserver = new Vue({data: {scope: this}}); + Vue.set(this, 'source', undefined); + } + + get derived() { + return this.source; + } +} + test.beforeEach(t => { t.context = { rootUrl: 'https://example.firebaseio.com', @@ -72,6 +87,10 @@ test.beforeEach(t => { test.afterEach(t => { t.context.tree.destroy(); + if (earlyObserver) { + earlyObserver.$destroy(); + earlyObserver = null; + } }); test('initialize placeholders', t => { @@ -110,3 +129,48 @@ test('computing non-primitive values', t => { tree.checkVueObject(tree.root, '/'); }); }); + +test('wrapping observed properties preserves missing child dependencies', t => { + const tree = t.context.tree; + const context = {}; + const navigation = {context}; + const vue = new Vue({data: {navigation}}); + + tree._modeler._wrapProperties(navigation); + t.true(Object.hasOwn(navigation, '$_context')); + + let review; + const unwatch = vue.$watch(() => navigation.context.review, value => { + review = value; + }, {immediate: true}); + t.is(review, undefined); + + Vue.set(context, 'review', {ready: true}); + return Vue.nextTick().then(() => { + t.deepEqual(review, {ready: true}); + unwatch(); + vue.$destroy(); + }); +}); + +test('computed properties added after observation remain reactive', t => { + const tree = new Tree( + t.context.truss, t.context.rootUrl, t.context.bridge, t.context.dispatcher); + tree.init([EarlyObservedRoot]); + const root = tree.root; + + let observed; + const unwatch = tree._vue.$watch(() => { + root.$$touchThis(); + return root.derived && root.derived.child; + }, value => { + observed = value; + }, {immediate: true}); + + Vue.set(root, 'source', {child: 1}); + return Vue.nextTick().then(() => { + t.is(observed, 1); + unwatch(); + tree.destroy(); + }); +}); diff --git a/src/Tree.js b/src/Tree.js index 7ae6706..908e5f9 100644 --- a/src/Tree.js +++ b/src/Tree.js @@ -338,10 +338,25 @@ export default class Tree { const object = this._modeler.createObject(path, properties); this._modeler.emitLifecycleHook(object, 'beforeCreate'); - Object.defineProperties(object, properties); + this._defineObjectProperties(object, properties); return object; } + _defineObjectProperties(object, properties) { + const observer = object.__ob__; + Object.defineProperties(object, properties); + if (!observer) return; + + let addedReactiveProperties = false; + for (const key of _.keys(properties)) { + const descriptor = Object.getOwnPropertyDescriptor(object, key); + if (!descriptor.configurable || !descriptor.enumerable) continue; + Vue.util.defineReactive(object, key); + addedReactiveProperties = true; + } + if (addedReactiveProperties) observer.dep.notify(); + } + // To be called on the result of _createObject after it's been inserted into the _vue hierarchy // and Vue has had a chance to initialize it. _fixObject(object) { @@ -728,4 +743,3 @@ export function toFirebaseJson(object) { } return result; } -