UNPKG

274 kBSource Map (JSON)View Raw
1{"version":3,"file":"firetruss.umd.js","sources":["../src/angularCompatibility.js","../src/utils/LruCache.js","../src/utils/paths.js","../src/Bridge.js","../src/Reference.js","../src/utils/utils.js","../node_modules/performance-now/lib/performance-now.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","// Generated by CoffeeScript 1.12.2\n(function() {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\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