UNPKG

271 kBSource Map (JSON)View Raw
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, function(char) {\n return '\\\\' + _.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, function(code) {\n return 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.hasOwnProperty(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 = '2.3.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 Object.seal(this);\n this._port.onmessage = this._receive.bind(this);\n window.addEventListener('unload', () => {this._send({msg: 'destroy'});});\n }\n\n init(webWorker, 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 (e) {\n // Some browsers don't like us accessing local storage -- nothing we can do.\n }\n return this._send({msg: 'init', storage: items, config}).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 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 (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 promise.sent = new Promise(resolve => {\n deferred.resolveSent = resolve;\n });\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 try {\n this._port.postMessage(this._outboundMessages);\n this._outboundMessages = [];\n } catch (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 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 (e) {\n // If we're denied access, there's nothing we can do.\n }\n }\n\n trackServer(rootUrl) {\n if (this._servers.hasOwnProperty(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 error.params = params;\n for (const propertyName in json) {\n if (propertyName === 'message' || !json.hasOwnProperty(propertyName)) continue;\n try {\n error[propertyName] = json[propertyName];\n } catch (e) {\n error.extra = error.extra || {};\n error.extra[propertyName] = json[propertyName];\n }\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 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() {\n return this._string;\n }\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\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';\nimport performanceNow from 'performance-now';\n\n\nclass StatItem {\n constructor(name) {\n _.assign(this, {name, numRecomputes: 0, numUpdates: 0, runtime: 0});\n }\n\n add(item) {\n this.runtime += item.runtime;\n this.numUpdates += item.numUpdates;\n this.numRecomputes += item.numRecomputes;\n }\n\n get runtimePerRecompute() {\n return this.numRecomputes ? this.runtime / this.numRecomputes : 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 ];\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 = performanceNow();\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.runtime += performanceNow() - 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 performanceNow from 'performance-now';\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 = performanceNow();\n try {\n return flattenRefs(fn.call(this._scope));\n } finally {\n connectionStats.runtime += performanceNow() - 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 (!subScope.hasOwnProperty(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 (subScope.hasOwnProperty(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 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 this._ready = false;\n this._startTimestamp = Date.now();\n _.forEach(this._slowHandles, handle => handle.initiate());\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 (!this.hasOwnProperty(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};\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 if (token) return this._bridge.authWithCustomToken(this._rootUrl, token);\n return this._bridge.authAnonymously(this._rootUrl);\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 return this._dispatcher.execute('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\n _isAuthChangeStale(user) {\n return this.root.user === user;\n }\n\n _connectInfoProperty(property, attribute) {\n const propertyUrl = `${this._rootUrl}/.info/${property}`;\n this._bridge.on(propertyUrl, propertyUrl, 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';\nimport performanceNow from 'performance-now';\n\n// These are defined separately for each object so they're not included in Value below.\nconst RESERVED_VALUE_PROPERTY_NAMES = {$$$trussCheck: true, __ob__: true};\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 $meta() {return this.$truss.meta;}\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 _.pull(this.$$finalizers, uninterceptAndRemoveFinalizer);\n };\n this.$$finalizers.push(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 _.pull(this.$$finalizers, destroy);\n return originalDestroy.call(connector);\n };\n this.$$finalizers.push(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), () => {_.pull(this.$$finalizers, promise.cancel);}\n );\n this.$$finalizers.push(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);\n\n unobserveAndRemoveFinalizer = () => { // eslint-disable-line prefer-const\n unobserve();\n _.pull(this.$$finalizers, unobserveAndRemoveFinalizer);\n };\n this.$$finalizers.push(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, () => {_.pull(this.$$finalizers, promise.cancel);});\n this.$$finalizers.push(promise.cancel);\n return promise;\n }\n\n get $$finalizers() {\n Object.defineProperty(this, '$$finalizers', {\n value: [], writable: false, enumerable: false, configurable: false});\n return this.$$finalizers;\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 get $ref() {\n Object.defineProperty(this, '$ref', {value: new Reference(this.$truss._tree, this.$path)});\n return this.$ref;\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 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, () => {_.pull(this.$$finalizers, promise.cancel);});\n this.$$finalizers.push(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 $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 (this.$parent.hasOwnProperty('$data') ? this.$parent.$data : this.$parent)[this.$key];\n } else {\n this.$store;\n }\n /* eslint-enable no-unused-expressions */\n }\n\n get $$initializers() {\n Object.defineProperty(this, '$$initializers', {\n value: [], writable: false, enumerable: false, configurable: true});\n return this.$$initializers;\n }\n\n get $destroyed() { // eslint-disable-line lodash/prefer-constant\n return false;\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(debug) {\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() { // eslint-disable-line no-empty-function\n }\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 (name === '$finalize') continue;\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 (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' || Class.prototype.hasOwnProperty(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 object.$$initializers.push(vue => {\n let unwatchNow = false;\n const compute = computeValue.bind(object, prop, propertyStats);\n if (this._debug) compute.toString = () => {return prop.fullName;};\n let unwatch = () => {unwatchNow = true;};\n unwatch = 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(vue._watchers || vue._scope.effects);\n watcher.id = -watcher.id;\n\n function update(newValue) {\n if (newValue instanceof FrozenWrapper) {\n newValue = newValue.value;\n unwatch();\n _.pull(object.$$finalizers, unwatch);\n }\n if (isTrussEqual(value, newValue)) return;\n // console.log('updating', object.$key, prop.fullName, 'from', value, 'to', newValue);\n propertyStats.numUpdates += 1;\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 return true;\n }\n\n if (unwatchNow) {\n unwatch();\n } else {\n object.$$finalizers.push(unwatch);\n }\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 if (_.has(object, '$$finalizers')) {\n // Some finalizers remove themselves from the array, so clone it before iterating.\n for (const fn of _.clone(object.$$finalizers)) fn();\n }\n if (_.isFunction(object.$finalize)) object.$finalize();\n Object.defineProperty(\n object, '$destroyed', {value: true, enumerable: false, configurable: false});\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 = [];\n try {\n for (const key of Object.getOwnPropertyNames(object)) {\n if (RESERVED_VALUE_PROPERTY_NAMES[key] || Value.prototype.hasOwnProperty(key) ||\n /^\\$_/.test(key)) continue;\n // eslint-disable-next-line no-shadow\n const mount = this._findMount(mount => mount.Class === object.constructor);\n if (mount && mount.matcher && _.includes(mount.matcher.variables, key)) continue;\n let value;\n try {\n value = object[key];\n } catch (e) {\n // Ignore any values that hold exceptions, or otherwise throw on access -- we won't be\n // able to check them anyway.\n continue;\n }\n if (!(_.isArray(object) && (/\\d+/.test(key) || key === 'length'))) {\n const descriptor = Object.getOwnPropertyDescriptor(object, key);\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) && !value.$$$trussCheck && Object.isExtensible(value) &&\n !(_.isFunction(value) || value instanceof Promise)) {\n value.$$$trussCheck = true;\n checkedObjects.push(value);\n this.checkVueObject(value, joinPath(path, escapeKey(key)), checkedObjects);\n }\n }\n } finally {\n if (top) {\n for (const item of checkedObjects) delete item.$$$trussCheck;\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 = performanceNow();\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.runtime += performanceNow() - 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 return _.mapValues(connections, descriptor => {\n if (descriptor instanceof Handle) return descriptor;\n if (_.isFunction(descriptor)) {\n const fn = function() {\n /* eslint-disable no-invalid-this */\n object.$$touchThis();\n return wrapConnections(object, descriptor.call(this));\n /* eslint-enable no-invalid-this */\n };\n fn.angularWatchSuppressed = true;\n return fn;\n }\n return wrapConnections(object, descriptor);\n });\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._url = this._coupler._rootUrl + query.path;\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 is 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 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.url = this._coupler._rootUrl + path;\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 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._rootUrl = 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._rootUrl = 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._modeler = new Modeler(truss.constructor.VERSION === 'dev');\n this._coupler = new Coupler(\n rootUrl, bridge, dispatcher, this._integrateSnapshot.bind(this), this._prune.bind(this));\n this._vue = new Vue({data: {$root: undefined}});\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 const url = this._rootUrl + pathPrefix;\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;\n updateFunction = wrapPromiseCallback(updateFunction);\n\n const attemptTransaction = () => {\n if (tries++ >= 25) {\n return Promise.reject(new Error('Transaction needed too many retries, giving up'));\n }\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 oldValue = toFirebaseJson(txn.currentValue);\n return updateFunction(txn);\n }).then(() => {\n if (!_.isEqual(oldValue, toFirebaseJson(txn.currentValue))) return attemptTransaction();\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 return this._bridge.transaction(\n this._rootUrl + ref.path, oldValue, values, this._writeSerial\n ).then(result => {\n _.forEach(result.snapshots, snapshot => this._integrateSnapshot(snapshot));\n return result.committed ? txn : attemptTransaction();\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 return this._bridge.once(this._rootUrl + path).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 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 initialiers.\n _completeCreateObject(object) {\n if (object.hasOwnProperty('$$initializers')) {\n for (const fn of object.$$initializers) fn(this._vue);\n delete object.$$initializers;\n }\n }\n\n _destroyObject(object) {\n if (!(object && object.$truss) || object.$destroyed) return;\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 }\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 (!value.hasOwnProperty(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.$data.hasOwnProperty(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 (!this._localWrites.hasOwnProperty(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.hasOwnProperty('$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.hasOwnProperty('$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 (values.hasOwnProperty(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 (data.hasOwnProperty(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 = '4.2.2';\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 meta() {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<Function> | Object<Function>} 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.meta.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) 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 const 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) {\n // Delay the immediate callback until we've had a chance to return the unwatch function.\n Promise.resolve().then(() => {\n if (numCallbacks > 1) return;\n callbackFn(newValue, oldValue);\n // No need to digest since under Angular we'll be using $q as Promise.\n });\n } else {\n callbackFn(newValue, oldValue);\n angular.digest();\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 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 webWorker = new Worker(webWorker);\n }\n bridge = new Bridge(webWorker);\n if (logging) bridge.enableLogging(logging);\n return bridge.init(webWorker, config).then(\n ({exposedFunctionNames, firebaseSdkVersion}) => {\n Object.defineProperty(Truss, 'FIREBASE_SDK_VERSION', {value: firebaseSdkVersion});\n for (const name of exposedFunctionNames) {\n Truss.worker[name] = bridge.bindExposedFunction(name);\n }\n }\n );\n }\n\n static get worker() {return workerFunctions;}\n static preExpose(functionName) {\n Truss.worker[functionName] = 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\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 Vue.mixin({\n destroyed() {\n if (_.has(this, '$$finalizers')) {\n // Some finalizers remove themselves from the array, so clone it before iterating.\n for (const fn of _.clone(this.$$finalizers)) fn();\n }\n }\n });\n }\n }}\n});\n\nangular.defineModule(Truss);\n\n"],"names":["let","const","this","id","prototypeAccessors","arguments","super","prototypeAccessors$1","angular","childKey","i","name","e","listener","key"],"mappings":"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"}
\No newline at end of file