firetruss-worker 2.6.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"worker.es2015.js","sources":["../src/worker.js"],"sourcesContent":["/* globals firebase */\n\nconst fireworkers = [];\nconst apps = {};\n// This version is filled in by the build, don't reformat the line.\nconst VERSION = '2.6.1';\n\n\nclass LocalStorage {\n constructor() {\n this._items = [];\n this._pendingItems = [];\n this._initialized = false;\n this._flushPending = this.flushPending.bind(this);\n }\n\n init(items) {\n if (!this._initialized) {\n this._items = items;\n this._initialized = true;\n }\n }\n\n _update(item) {\n if (!this._pendingItems.length) Promise.resolve().then(this._flushPending);\n this._pendingItems.push(item);\n }\n\n flushPending() {\n if (!this._pendingItems.length) return;\n if (!fireworkers.length) {\n setTimeout(this._flushPending, 200);\n return;\n }\n fireworkers[0]._send({msg: 'updateLocalStorage', items: this._pendingItems});\n this._pendingItems = [];\n }\n\n get length() {return this._items.length;}\n\n key(n) {\n return this._items[n].key;\n }\n\n getItem(key) {\n for (const item of this._items) {\n if (item.key === key) return item.value;\n }\n return null;\n }\n\n setItem(key, value) {\n let targetItem;\n for (const item of this._items) {\n if (item.key === key) {\n targetItem = item;\n item.value = value;\n break;\n }\n }\n if (!targetItem) {\n targetItem = {key, value};\n this._items.push(targetItem);\n }\n this._update(targetItem);\n }\n\n removeItem(key) {\n for (let i = 0; i < this._items.length; i++) {\n if (this._items[i].key === key) {\n this._items.splice(i, 1);\n this._update({key, value: null});\n break;\n }\n }\n }\n\n clear() {\n for (const item in this._items) {\n this._update({key: item.key, value: null});\n }\n this._items = [];\n }\n}\n\nself.localStorage = new LocalStorage();\n\n\nclass Branch {\n constructor() {\n this._root = null;\n }\n\n set(value) {\n this._root = value;\n }\n\n diff(value, pathPrefix) {\n const updates = {};\n const segments = pathPrefix === '/' ? [''] : pathPrefix.split('/');\n if (this._diffRecursively(this._root, value, segments, updates)) {\n this._root = value;\n updates[pathPrefix] = value;\n }\n return updates;\n }\n\n _diffRecursively(oldValue, newValue, segments, updates) {\n if (oldValue === undefined) oldValue = null;\n if (newValue === undefined) newValue = null;\n if (oldValue === null) return newValue !== null;\n if (oldValue instanceof Object && newValue instanceof Object) {\n let replace = true;\n const keysToReplace = [];\n for (const childKey in newValue) {\n if (!newValue.hasOwnProperty(childKey)) continue;\n const replaceChild = this._diffRecursively(\n oldValue[childKey], newValue[childKey], segments.concat(childKey), updates);\n if (replaceChild) {\n keysToReplace.push(childKey);\n } else {\n replace = false;\n }\n }\n if (replace) return true;\n for (const childKey in oldValue) {\n if (!oldValue.hasOwnProperty(childKey) || newValue.hasOwnProperty(childKey)) continue;\n updates[segments.concat(childKey).join('/')] = null;\n delete oldValue[childKey];\n }\n for (const childKey of keysToReplace) {\n updates[segments.concat(childKey).join('/')] = newValue[childKey];\n oldValue[childKey] = newValue[childKey];\n }\n } else {\n return newValue !== oldValue;\n }\n }\n}\n\n\nexport default class Fireworker {\n constructor(port) {\n this._port = port;\n this._lastWriteSerial = 0;\n this._app = undefined;\n this._cachedAuth = undefined;\n this._cachedDatabase = undefined;\n this._lastJsonUser = undefined;\n this._configError = Fireworker._staticConfigError;\n this._callbacks = {};\n this._messages = [];\n this._flushMessageQueue = this._flushMessageQueue.bind(this);\n port.onmessage = this._receive.bind(this);\n }\n\n get _auth() {\n if (this._cachedAuth) return this._cachedAuth;\n if (!this._app) throw new Error('Must provide Firebase configuration data first');\n return this._cachedAuth = this._app.auth();\n }\n\n get _database() {\n if (this._cachedDatabase) return this._cachedDatabase;\n if (!this._app) throw new Error('Must provide Firebase configuration data first');\n if (Fireworker._databaseWrapperCallback) {\n this._cachedDatabase = Fireworker._databaseWrapperCallback(this._app.database());\n } else {\n this._cachedDatabase = this._app.database();\n }\n return this._cachedDatabase;\n }\n\n init({storage, config}) {\n if (storage) self.localStorage.init(storage);\n if (config) {\n try {\n this._app = apps[config.databaseURL];\n if (!this._app) {\n this._app = apps[config.databaseURL] = firebase.initializeApp(config, config.databaseURL);\n // If the API key looks invalid then assume that we're running against Cinderbase rather\n // than Firebase and override the configuration appropriately.\n if (config.apiKey && config.apiKey.length < 20) {\n this._app.database().INTERNAL.forceWebSockets();\n this._app.auth().useEmulator(config.databaseURL, {disableWarnings: true});\n }\n }\n this._app.database();\n this._app.auth();\n this._configError = Fireworker._staticConfigError;\n } catch (e) {\n this._configError = e;\n throw e;\n }\n } else if (this._configError) {\n throw this._configError;\n }\n return {\n exposedFunctionNames: Object.keys(Fireworker._exposed),\n version: VERSION,\n firebaseSdkVersion: firebase.SDK_VERSION\n };\n }\n\n destroy() {\n for (const key in this._callbacks) {\n const callback = this._callbacks[key];\n if (callback.cancel) callback.cancel();\n }\n this._callbacks = {};\n this._port.onmessage = null;\n this._messages = [];\n const k = fireworkers.indexOf(this);\n if (k >= 0) fireworkers[k] = null;\n }\n\n enableFirebaseLogging({value}) {\n firebase.database.enableLogging(value);\n }\n\n ping() {\n // Noop, placeholder for legacy Firetruss clients.\n }\n\n bounceConnection() {\n this._database.goOffline();\n this._database.goOnline();\n }\n\n _receive(event) {\n Fireworker._firstMessageReceived = true;\n for (const message of event.data) this._receiveMessage(message);\n }\n\n _receiveMessage(message) {\n let promise;\n try {\n const fn = this[message.msg];\n if (typeof fn !== 'function') throw new Error('Unknown message: ' + message.msg);\n if (message.writeSerial) {\n this._lastWriteSerial = Math.max(this._lastWriteSerial, message.writeSerial);\n }\n promise = Promise.resolve(fn.call(this, message));\n } catch (e) {\n e.immediateFailure = true;\n promise = Promise.reject(e);\n }\n if (!message.oneWay) {\n promise.then(result => {\n this._send({msg: 'resolve', id: message.id, result});\n }, error => {\n this._send({msg: 'reject', id: message.id, error: errorToJson(error)});\n });\n }\n }\n\n _send(message) {\n if (!this._messages.length) Promise.resolve().then(this._flushMessageQueue);\n this._messages.push(message);\n }\n\n _flushMessageQueue() {\n this._port.postMessage(this._messages);\n this._messages = [];\n }\n\n call({name, args}) {\n try {\n return Promise.resolve(Fireworker._exposed[name].apply(null, args));\n } catch (e) {\n return Promise.reject(e);\n }\n }\n\n authWithCustomToken({url, authToken}) {\n return this._auth.signInWithCustomToken(authToken)\n .then(result => userToJson(result.user));\n }\n\n authAnonymously({url}) {\n return this._auth.signInAnonymously()\n .then(result => userToJson(result.user));\n }\n\n unauth({url}) {\n return this._auth.signOut().catch(e => {\n // We can ignore the error if the user is signed out anyway, but make sure to notify all\n // authCallbacks otherwise we end up in a bogus state!\n if (this._auth.currentUser === null) {\n for (const callbackId in this._callbacks) {\n if (!this._callbacks.hasOwnProperty(callbackId)) continue;\n const callback = this._callbacks[callbackId];\n if (callback.auth) callback(null);\n }\n } else {\n return Promise.reject(e);\n }\n });\n }\n\n onAuth({url, callbackId}) {\n const authCallback = this._callbacks[callbackId] = this._onAuthCallback.bind(this, callbackId);\n authCallback.auth = true;\n authCallback.cancel = this._auth.onIdTokenChanged(authCallback);\n }\n\n _onAuthCallback(callbackId, user) {\n userToJson(user).then(jsonUser => {\n if (areEqualValues(this._lastJsonUser, jsonUser)) return;\n this._lastJsonUser = jsonUser;\n this._send({msg: 'callback', id: callbackId, args: [jsonUser]});\n });\n }\n\n set({url, value}) {\n return this._createRef(url).set(value);\n }\n\n update({url, value}) {\n return this._createRef(url).update(value);\n }\n\n once({url}) {\n return this._createRef(url).once('value').then(snapshot => this._snapshotToJson(snapshot));\n }\n\n on({listenerKey, url, spec, eventType, callbackId, options}) {\n options = options || {};\n if (options.sync) options.branch = new Branch();\n options.cancel = this.off.bind(this, {listenerKey, url, spec, eventType, callbackId});\n const snapshotCallback = this._callbacks[callbackId] =\n this._onSnapshotCallback.bind(this, callbackId, options);\n snapshotCallback.listenerKey = listenerKey;\n snapshotCallback.eventType = eventType;\n snapshotCallback.cancel = options.cancel;\n const cancelCallback = this._onCancelCallback.bind(this, callbackId);\n this._createRef(url, spec).on(eventType, snapshotCallback, cancelCallback);\n }\n\n off({listenerKey, url, spec, eventType, callbackId}) {\n let snapshotCallback;\n if (callbackId) {\n // Callback IDs will not be reused across on() calls, so it's safe to just delete it.\n snapshotCallback = this._callbacks[callbackId];\n delete this._callbacks[callbackId];\n } else {\n for (const key of Object.keys(this._callbacks)) {\n if (!this._callbacks.hasOwnProperty(key)) continue;\n const callback = this._callbacks[key];\n if (callback.listenerKey === listenerKey &&\n (!eventType || callback.eventType === eventType)) {\n delete this._callbacks[key];\n }\n }\n }\n this._createRef(url, spec).off(eventType, snapshotCallback);\n }\n\n _onSnapshotCallback(callbackId, options, snapshot) {\n if (options.sync && options.rest) {\n const path = decodeURIComponent(\n snapshot.ref.toString().replace(/.*?:\\/\\/[^/]*/, '').replace(/\\/$/, ''));\n let value;\n try {\n value = normalizeFirebaseValue(snapshot.val());\n } catch (e) {\n options.cancel();\n this._onCancelCallback(callbackId, e);\n return;\n }\n const updates = options.branch.diff(value, path);\n for (const childPath in updates) {\n if (!updates.hasOwnProperty(childPath)) continue;\n this._send({\n msg: 'callback', id: callbackId,\n args: [null, {\n path: childPath, value: updates[childPath], writeSerial: this._lastWriteSerial\n }]\n });\n }\n } else {\n try {\n const snapshotJson = this._snapshotToJson(snapshot);\n if (options.sync) options.branch.set(snapshotJson.value);\n this._send({msg: 'callback', id: callbackId, args: [null, snapshotJson]});\n options.rest = true;\n } catch (e) {\n options.cancel();\n this._onCancelCallback(callbackId, e);\n }\n }\n }\n\n _onCancelCallback(callbackId, error) {\n delete this._callbacks[callbackId];\n this._send({msg: 'callback', id: callbackId, args: [errorToJson(error)]});\n }\n\n transaction({url, oldValue, relativeUpdates}) {\n const transactionPath = decodeURIComponent(url.replace(/.*?:\\/\\/[^/]*/, '').replace(/\\/$/, ''));\n const ref = this._createRef(url);\n const branch = new Branch();\n let stale, committedValue;\n\n return ref.transaction(value => {\n committedValue = undefined;\n value = normalizeFirebaseValue(value);\n stale = !areEqualNormalFirebaseValues(value, oldValue);\n if (stale) value = oldValue;\n if (relativeUpdates) {\n for (const relativePath in relativeUpdates) {\n if (!relativeUpdates.hasOwnProperty(relativePath)) continue;\n if (relativePath) {\n const segments = relativePath.split('/');\n if (value === undefined || value === null) value = {};\n let object = value;\n for (let i = 0; i < segments.length - 1; i++) {\n const key = segments[i];\n let child = object[key];\n if (child === undefined || child === null) child = object[key] = {};\n object = child;\n }\n object[segments[segments.length - 1]] = relativeUpdates[relativePath];\n } else {\n value = relativeUpdates[relativePath];\n }\n }\n }\n branch.set(value);\n if (!stale) {\n committedValue = value;\n return value;\n }\n }).then(result => {\n const snapshots = [];\n const updates = branch.diff(normalizeFirebaseValue(result.snapshot.val()), transactionPath);\n for (const path in updates) {\n if (!updates.hasOwnProperty(path)) continue;\n snapshots.push({\n path, value: updates[path], writeSerial: result.writeSerial || this._lastWriteSerial\n });\n }\n return {committed: !stale, snapshots};\n }, error => {\n if (error.message === 'set' || error.message === 'disconnect') {\n return ref.once('value').then(snapshot => {\n return {committed: false, snapshots: [snapshot], writeSerial: this._lastWriteSerial};\n });\n }\n error.committedValue = committedValue;\n return Promise.reject(error);\n });\n }\n\n _snapshotToJson(snapshot) {\n const path =\n decodeURIComponent(snapshot.ref.toString().replace(/.*?:\\/\\/[^/]*/, '').replace(/\\/$/, ''));\n return {\n path, value: normalizeFirebaseValue(snapshot.val()), writeSerial: this._lastWriteSerial\n };\n }\n\n onDisconnect({url, method, value}) {\n const onDisconnect = this._createRef(url).onDisconnect();\n return onDisconnect[method](value);\n }\n\n _createRef(url, spec) {\n if (!this._app) throw new Error('Must provide Firebase configuration data first');\n try {\n let ref = this._database.refFromURL(url);\n if (spec) {\n switch (spec.by) {\n case '$key': ref = ref.orderByKey(); break;\n case '$value': ref = ref.orderByValue(); break;\n default: ref = ref.orderByChild(spec.by); break;\n }\n if (spec.at !== undefined) ref = ref.equalTo(spec.at);\n else if (spec.from !== undefined) ref = ref.startAt(spec.from);\n else if (spec.to !== undefined) ref = ref.endAt(spec.to);\n if (spec.first !== undefined) ref = ref.limitToFirst(spec.first);\n else if (spec.last !== undefined) ref = ref.limitToLast(spec.last);\n }\n return ref;\n } catch (e) {\n e.extra = {url, spec};\n throw e;\n }\n }\n\n static expose(fn, name) {\n name = name || fn.name;\n if (!name) {\n Fireworker._signalStaticConfigError(\n new Error(`Cannot expose a function with no name: ${fn}`));\n }\n if (Fireworker._exposed.hasOwnProperty(name)) {\n Fireworker._signalStaticConfigError(new Error(`Function ${name}() already exposed`));\n }\n if (Fireworker._firstMessageReceived) {\n Fireworker._signalStaticConfigError(new Error('Too late to expose function, worker in use'));\n }\n Fireworker._exposed[name] = fn;\n }\n\n static setDatabaseWrapperCallback(fn) {\n if (Fireworker._databaseWrapperCallback) {\n Fireworker._signalStaticConfigError(new Error('Database wrapper callback already set'));\n }\n if (Fireworker._firstMessageReceived) {\n Fireworker._signalStaticConfigError(\n new Error('Too late to set database wrapper callback, worker in use'));\n }\n Fireworker._databaseWrapperCallback = fn;\n }\n\n static _signalStaticConfigError(error) {\n if (!Fireworker._staticConfigError) Fireworker._staticConfigError = error;\n for (const fireworker of fireworkers) {\n if (fireworker && !fireworker._configError) fireworker._configError = error;\n }\n throw error;\n }\n}\n\nFireworker._exposed = {};\nFireworker._firstMessageReceived = false;\nFireworker._databaseWrapperCallback = undefined;\nFireworker._staticConfigError = undefined;\n\nfunction errorToJson(error) {\n const json = {name: error.name, message: error.message};\n const propertyNames = Object.getOwnPropertyNames(error);\n for (const propertyName of propertyNames) {\n json[propertyName] = error[propertyName];\n }\n return json;\n}\n\nfunction normalizeFirebaseValue(value) {\n if (Array.isArray(value)) {\n const normalValue = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n if (item === undefined || item === null) continue;\n normalValue[i] = normalizeFirebaseValue(item);\n }\n return normalValue;\n }\n if (value instanceof Object) {\n for (const key in value) {\n if (value.hasOwnProperty(key)) value[key] = normalizeFirebaseValue(value[key]);\n }\n }\n return value;\n}\n\nfunction userToJson(user) {\n if (!user) return Promise.resolve(user);\n const json = user.toJSON();\n delete json.stsTokenManager;\n return user.getIdTokenResult().then(result => {\n delete result.claims.exp;\n delete result.claims.iat;\n json.claims = result.claims;\n return json;\n });\n}\n\n\nfunction areEqualNormalFirebaseValues(a, b) {\n if (a === b) return true;\n if ((a === null || a === undefined) && (b === null || b === undefined)) return true;\n if (a === null || b === null) return false;\n if (!(typeof a === 'object' && typeof b === 'object')) return false;\n for (const key in a) {\n if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) return false;\n if (!areEqualNormalFirebaseValues(a[key], b[key])) return false;\n }\n for (const key in b) {\n if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) return false;\n }\n return true;\n}\n\nfunction areEqualValues(a, b) {\n if (a === b) return true;\n if (a === null && b === null || a === undefined && b === undefined) return true;\n if (a === null || b === null || a === undefined || b === undefined) return false;\n if (!(typeof a === 'object' && typeof b === 'object')) return false;\n for (const key in a) {\n if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) return false;\n if (!areEqualValues(a[key], b[key])) return false;\n }\n for (const key in b) {\n if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) return false;\n }\n if (Array.isArray(a) || Array.isArray(b)) {\n if (!Array.isArray(a) || !Array.isArray(b)) return false;\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (!areEqualValues(a[i], b[i])) return false;\n }\n }\n return true;\n}\n\nfunction acceptConnections() {\n if (typeof onconnect !== 'undefined') {\n self.onconnect = function(event) {\n fireworkers.push(new Fireworker(event.ports[0]));\n };\n } else {\n fireworkers.push(new Fireworker(self));\n }\n self.localStorage.flushPending();\n}\n\nself.window = self;\nacceptConnections();\n"],"names":["const","let","childKey","this","e","key"],"mappings":"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"}
1
+ {"version":3,"file":"worker.es2015.js","sources":["../src/worker.js"],"sourcesContent":["/* globals firebase */\n\nconst fireworkers = [];\nconst apps = {};\n// This version is filled in by the build, don't reformat the line.\nconst VERSION = '3.0.0';\n\n\nclass LocalStorage {\n constructor() {\n this._items = [];\n this._pendingItems = [];\n this._initialized = false;\n this._flushPending = this.flushPending.bind(this);\n }\n\n init(items) {\n if (!this._initialized) {\n this._items = items;\n this._initialized = true;\n }\n }\n\n _update(item) {\n if (!this._pendingItems.length) Promise.resolve().then(this._flushPending);\n this._pendingItems.push(item);\n }\n\n flushPending() {\n if (!this._pendingItems.length) return;\n if (!fireworkers.length) {\n setTimeout(this._flushPending, 200);\n return;\n }\n fireworkers[0]._send({msg: 'updateLocalStorage', items: this._pendingItems});\n this._pendingItems = [];\n }\n\n get length() {return this._items.length;}\n\n key(n) {\n return this._items[n].key;\n }\n\n getItem(key) {\n for (const item of this._items) {\n if (item.key === key) return item.value;\n }\n return null;\n }\n\n setItem(key, value) {\n let targetItem;\n for (const item of this._items) {\n if (item.key === key) {\n targetItem = item;\n item.value = value;\n break;\n }\n }\n if (!targetItem) {\n targetItem = {key, value};\n this._items.push(targetItem);\n }\n this._update(targetItem);\n }\n\n removeItem(key) {\n for (let i = 0; i < this._items.length; i++) {\n if (this._items[i].key === key) {\n this._items.splice(i, 1);\n this._update({key, value: null});\n break;\n }\n }\n }\n\n clear() {\n for (const item in this._items) {\n this._update({key: item.key, value: null});\n }\n this._items = [];\n }\n}\n\nself.localStorage = new LocalStorage();\n\n\nclass Branch {\n constructor() {\n this._root = null;\n }\n\n set(value) {\n this._root = value;\n }\n\n diff(value, pathPrefix) {\n const updates = {};\n const segments = pathPrefix === '/' ? [''] : pathPrefix.split('/');\n if (this._diffRecursively(this._root, value, segments, updates)) {\n this._root = value;\n updates[pathPrefix] = value;\n }\n return updates;\n }\n\n _diffRecursively(oldValue, newValue, segments, updates) {\n if (oldValue === undefined) oldValue = null;\n if (newValue === undefined) newValue = null;\n if (oldValue === null) return newValue !== null;\n if (oldValue instanceof Object && newValue instanceof Object) {\n let replace = true;\n const keysToReplace = [];\n for (const childKey in newValue) {\n if (!newValue.hasOwnProperty(childKey)) continue;\n const replaceChild = this._diffRecursively(\n oldValue[childKey], newValue[childKey], segments.concat(childKey), updates);\n if (replaceChild) {\n keysToReplace.push(childKey);\n } else {\n replace = false;\n }\n }\n if (replace) return true;\n for (const childKey in oldValue) {\n if (!oldValue.hasOwnProperty(childKey) || newValue.hasOwnProperty(childKey)) continue;\n updates[segments.concat(childKey).join('/')] = null;\n delete oldValue[childKey];\n }\n for (const childKey of keysToReplace) {\n updates[segments.concat(childKey).join('/')] = newValue[childKey];\n oldValue[childKey] = newValue[childKey];\n }\n } else {\n return newValue !== oldValue;\n }\n }\n}\n\n\nexport default class Fireworker {\n constructor(port) {\n this._port = port;\n this._lastWriteSerial = 0;\n this._app = undefined;\n this._cachedAuth = undefined;\n this._cachedDatabase = undefined;\n this._lastJsonUser = undefined;\n this._configError = Fireworker._staticConfigError;\n this._callbacks = {};\n this._messages = [];\n this._flushMessageQueue = this._flushMessageQueue.bind(this);\n port.onmessage = this._receive.bind(this);\n }\n\n get _auth() {\n if (this._cachedAuth) return this._cachedAuth;\n if (!this._app) throw new Error('Must provide Firebase configuration data first');\n return this._cachedAuth = this._app.auth();\n }\n\n get _database() {\n if (this._cachedDatabase) return this._cachedDatabase;\n if (!this._app) throw new Error('Must provide Firebase configuration data first');\n if (Fireworker._databaseWrapperCallback) {\n this._cachedDatabase = Fireworker._databaseWrapperCallback(this._app.database());\n } else {\n this._cachedDatabase = this._app.database();\n }\n return this._cachedDatabase;\n }\n\n init({storage, config}) {\n if (storage) self.localStorage.init(storage);\n if (config) {\n try {\n this._app = apps[config.databaseURL];\n if (!this._app) {\n this._app = apps[config.databaseURL] = firebase.initializeApp(config, config.databaseURL);\n // If the API key looks invalid then assume that we're running against Cinderbase rather\n // than Firebase and override the configuration appropriately.\n if (config.apiKey && config.apiKey.length < 20) {\n this._app.database().INTERNAL.forceWebSockets();\n this._app.auth().useEmulator(config.databaseURL, {disableWarnings: true});\n }\n }\n this._app.database();\n this._app.auth();\n this._configError = Fireworker._staticConfigError;\n } catch (e) {\n this._configError = e;\n throw e;\n }\n } else if (this._configError) {\n throw this._configError;\n }\n return {\n exposedFunctionNames: Object.keys(Fireworker._exposed),\n version: VERSION,\n firebaseSdkVersion: firebase.SDK_VERSION\n };\n }\n\n destroy() {\n for (const key in this._callbacks) {\n const callback = this._callbacks[key];\n if (callback.cancel) callback.cancel();\n }\n this._callbacks = {};\n this._port.onmessage = null;\n this._messages = [];\n const k = fireworkers.indexOf(this);\n if (k >= 0) fireworkers[k] = null;\n }\n\n enableFirebaseLogging({value}) {\n firebase.database.enableLogging(value);\n }\n\n ping() {\n // Noop, placeholder for legacy Firetruss clients.\n }\n\n bounceConnection() {\n this._database.goOffline();\n this._database.goOnline();\n }\n\n _receive(event) {\n Fireworker._firstMessageReceived = true;\n for (const message of event.data) this._receiveMessage(message);\n }\n\n _receiveMessage(message) {\n let promise;\n try {\n const fn = this[message.msg];\n if (typeof fn !== 'function') throw new Error('Unknown message: ' + message.msg);\n if (message.writeSerial) {\n this._lastWriteSerial = Math.max(this._lastWriteSerial, message.writeSerial);\n }\n promise = Promise.resolve(fn.call(this, message));\n } catch (e) {\n e.immediateFailure = true;\n promise = Promise.reject(e);\n }\n if (!message.oneWay) {\n promise.then(result => {\n this._send({msg: 'resolve', id: message.id, result});\n }, error => {\n this._send({msg: 'reject', id: message.id, error: errorToJson(error)});\n });\n }\n }\n\n _send(message) {\n if (!this._messages.length) Promise.resolve().then(this._flushMessageQueue);\n this._messages.push(message);\n }\n\n _flushMessageQueue() {\n this._port.postMessage(this._messages);\n this._messages = [];\n }\n\n call({name, args}) {\n try {\n return Promise.resolve(Fireworker._exposed[name].apply(null, args));\n } catch (e) {\n return Promise.reject(e);\n }\n }\n\n authWithCustomToken({url, authToken}) {\n return this._auth.signInWithCustomToken(authToken)\n .then(result => userToJson(result.user));\n }\n\n authAnonymously({url}) {\n return this._auth.signInAnonymously()\n .then(result => userToJson(result.user));\n }\n\n unauth({url}) {\n return this._auth.signOut().catch(e => {\n // We can ignore the error if the user is signed out anyway, but make sure to notify all\n // authCallbacks otherwise we end up in a bogus state!\n if (this._auth.currentUser === null) {\n for (const callbackId in this._callbacks) {\n if (!this._callbacks.hasOwnProperty(callbackId)) continue;\n const callback = this._callbacks[callbackId];\n if (callback.auth) callback(null);\n }\n } else {\n return Promise.reject(e);\n }\n });\n }\n\n onAuth({url, callbackId}) {\n const authCallback = this._callbacks[callbackId] = this._onAuthCallback.bind(this, callbackId);\n authCallback.auth = true;\n authCallback.cancel = this._auth.onIdTokenChanged(authCallback);\n }\n\n _onAuthCallback(callbackId, user) {\n userToJson(user).then(jsonUser => {\n if (areEqualValues(this._lastJsonUser, jsonUser)) return;\n this._lastJsonUser = jsonUser;\n this._send({msg: 'callback', id: callbackId, args: [jsonUser]});\n });\n }\n\n set({url, value}) {\n return this._createRef(url).set(value);\n }\n\n update({url, value}) {\n return this._createRef(url).update(value);\n }\n\n once({url}) {\n return this._createRef(url).once('value').then(snapshot => this._snapshotToJson(snapshot));\n }\n\n on({listenerKey, url, spec, eventType, callbackId, options}) {\n options = options || {};\n if (options.sync) options.branch = new Branch();\n options.cancel = this.off.bind(this, {listenerKey, url, spec, eventType, callbackId});\n const snapshotCallback = this._callbacks[callbackId] =\n this._onSnapshotCallback.bind(this, callbackId, options);\n snapshotCallback.listenerKey = listenerKey;\n snapshotCallback.eventType = eventType;\n snapshotCallback.cancel = options.cancel;\n const cancelCallback = this._onCancelCallback.bind(this, callbackId);\n this._createRef(url, spec).on(eventType, snapshotCallback, cancelCallback);\n }\n\n off({listenerKey, url, spec, eventType, callbackId}) {\n let snapshotCallback;\n if (callbackId) {\n // Callback IDs will not be reused across on() calls, so it's safe to just delete it.\n snapshotCallback = this._callbacks[callbackId];\n delete this._callbacks[callbackId];\n } else {\n for (const key of Object.keys(this._callbacks)) {\n if (!this._callbacks.hasOwnProperty(key)) continue;\n const callback = this._callbacks[key];\n if (callback.listenerKey === listenerKey &&\n (!eventType || callback.eventType === eventType)) {\n delete this._callbacks[key];\n }\n }\n }\n this._createRef(url, spec).off(eventType, snapshotCallback);\n }\n\n _onSnapshotCallback(callbackId, options, snapshot) {\n if (options.sync && options.rest) {\n const path = decodeURIComponent(\n snapshot.ref.toString().replace(/.*?:\\/\\/[^/]*/, '').replace(/\\/$/, ''));\n let value;\n try {\n value = normalizeFirebaseValue(snapshot.val());\n } catch (e) {\n options.cancel();\n this._onCancelCallback(callbackId, e);\n return;\n }\n const updates = options.branch.diff(value, path);\n for (const childPath in updates) {\n if (!updates.hasOwnProperty(childPath)) continue;\n this._send({\n msg: 'callback', id: callbackId,\n args: [null, {\n path: childPath, value: updates[childPath], writeSerial: this._lastWriteSerial\n }]\n });\n }\n } else {\n try {\n const snapshotJson = this._snapshotToJson(snapshot);\n if (options.sync) options.branch.set(snapshotJson.value);\n this._send({msg: 'callback', id: callbackId, args: [null, snapshotJson]});\n options.rest = true;\n } catch (e) {\n options.cancel();\n this._onCancelCallback(callbackId, e);\n }\n }\n }\n\n _onCancelCallback(callbackId, error) {\n delete this._callbacks[callbackId];\n this._send({msg: 'callback', id: callbackId, args: [errorToJson(error)]});\n }\n\n transaction({url, oldValue, relativeUpdates}) {\n const transactionPath = decodeURIComponent(url.replace(/.*?:\\/\\/[^/]*/, '').replace(/\\/$/, ''));\n const ref = this._createRef(url);\n const branch = new Branch();\n let stale, committedValue;\n\n return ref.transaction(value => {\n committedValue = undefined;\n value = normalizeFirebaseValue(value);\n stale = !areEqualNormalFirebaseValues(value, oldValue);\n if (stale) value = oldValue;\n if (relativeUpdates) {\n for (const relativePath in relativeUpdates) {\n if (!relativeUpdates.hasOwnProperty(relativePath)) continue;\n if (relativePath) {\n const segments = relativePath.split('/');\n if (value === undefined || value === null) value = {};\n let object = value;\n for (let i = 0; i < segments.length - 1; i++) {\n const key = segments[i];\n let child = object[key];\n if (child === undefined || child === null) child = object[key] = {};\n object = child;\n }\n object[segments[segments.length - 1]] = relativeUpdates[relativePath];\n } else {\n value = relativeUpdates[relativePath];\n }\n }\n }\n branch.set(value);\n if (!stale) {\n committedValue = value;\n return value;\n }\n }).then(result => {\n const snapshots = [];\n const updates = branch.diff(normalizeFirebaseValue(result.snapshot.val()), transactionPath);\n for (const path in updates) {\n if (!updates.hasOwnProperty(path)) continue;\n snapshots.push({\n path, value: updates[path], writeSerial: result.writeSerial || this._lastWriteSerial\n });\n }\n return {committed: !stale, snapshots};\n }, error => {\n if (error.message === 'set' || error.message === 'disconnect') {\n return ref.once('value').then(snapshot => {\n return {committed: false, snapshots: [snapshot], writeSerial: this._lastWriteSerial};\n });\n }\n error.committedValue = committedValue;\n return Promise.reject(error);\n });\n }\n\n _snapshotToJson(snapshot) {\n const path =\n decodeURIComponent(snapshot.ref.toString().replace(/.*?:\\/\\/[^/]*/, '').replace(/\\/$/, ''));\n return {\n path, value: normalizeFirebaseValue(snapshot.val()), writeSerial: this._lastWriteSerial\n };\n }\n\n onDisconnect({url, method, value}) {\n const onDisconnect = this._createRef(url).onDisconnect();\n return onDisconnect[method](value);\n }\n\n _createRef(url, spec) {\n if (!this._app) throw new Error('Must provide Firebase configuration data first');\n try {\n let ref = this._database.refFromURL(url);\n if (spec) {\n switch (spec.by) {\n case '$key': ref = ref.orderByKey(); break;\n case '$value': ref = ref.orderByValue(); break;\n default: ref = ref.orderByChild(spec.by); break;\n }\n if (spec.at !== undefined) ref = ref.equalTo(spec.at);\n else if (spec.from !== undefined) ref = ref.startAt(spec.from);\n else if (spec.to !== undefined) ref = ref.endAt(spec.to);\n if (spec.first !== undefined) ref = ref.limitToFirst(spec.first);\n else if (spec.last !== undefined) ref = ref.limitToLast(spec.last);\n }\n return ref;\n } catch (e) {\n e.extra = {url, spec};\n throw e;\n }\n }\n\n static expose(fn, name) {\n name = name || fn.name;\n if (!name) {\n Fireworker._signalStaticConfigError(\n new Error(`Cannot expose a function with no name: ${fn}`));\n }\n if (Fireworker._exposed.hasOwnProperty(name)) {\n Fireworker._signalStaticConfigError(new Error(`Function ${name}() already exposed`));\n }\n if (Fireworker._firstMessageReceived) {\n Fireworker._signalStaticConfigError(new Error('Too late to expose function, worker in use'));\n }\n Fireworker._exposed[name] = fn;\n }\n\n static setDatabaseWrapperCallback(fn) {\n if (Fireworker._databaseWrapperCallback) {\n Fireworker._signalStaticConfigError(new Error('Database wrapper callback already set'));\n }\n if (Fireworker._firstMessageReceived) {\n Fireworker._signalStaticConfigError(\n new Error('Too late to set database wrapper callback, worker in use'));\n }\n Fireworker._databaseWrapperCallback = fn;\n }\n\n static _signalStaticConfigError(error) {\n if (!Fireworker._staticConfigError) Fireworker._staticConfigError = error;\n for (const fireworker of fireworkers) {\n if (fireworker && !fireworker._configError) fireworker._configError = error;\n }\n throw error;\n }\n}\n\nFireworker._exposed = {};\nFireworker._firstMessageReceived = false;\nFireworker._databaseWrapperCallback = undefined;\nFireworker._staticConfigError = undefined;\n\nfunction errorToJson(error) {\n const json = {name: error.name, message: error.message};\n const propertyNames = Object.getOwnPropertyNames(error);\n for (const propertyName of propertyNames) {\n json[propertyName] = error[propertyName];\n }\n return json;\n}\n\nfunction normalizeFirebaseValue(value) {\n if (Array.isArray(value)) {\n const normalValue = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n if (item === undefined || item === null) continue;\n normalValue[i] = normalizeFirebaseValue(item);\n }\n return normalValue;\n }\n if (value instanceof Object) {\n for (const key in value) {\n if (value.hasOwnProperty(key)) value[key] = normalizeFirebaseValue(value[key]);\n }\n }\n return value;\n}\n\nfunction userToJson(user) {\n if (!user) return Promise.resolve(user);\n const json = user.toJSON();\n delete json.stsTokenManager;\n return user.getIdTokenResult().then(result => {\n delete result.claims.exp;\n delete result.claims.iat;\n json.claims = result.claims;\n return json;\n });\n}\n\n\nfunction areEqualNormalFirebaseValues(a, b) {\n if (a === b) return true;\n if ((a === null || a === undefined) && (b === null || b === undefined)) return true;\n if (a === null || b === null) return false;\n if (!(typeof a === 'object' && typeof b === 'object')) return false;\n for (const key in a) {\n if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) return false;\n if (!areEqualNormalFirebaseValues(a[key], b[key])) return false;\n }\n for (const key in b) {\n if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) return false;\n }\n return true;\n}\n\nfunction areEqualValues(a, b) {\n if (a === b) return true;\n if (a === null && b === null || a === undefined && b === undefined) return true;\n if (a === null || b === null || a === undefined || b === undefined) return false;\n if (!(typeof a === 'object' && typeof b === 'object')) return false;\n for (const key in a) {\n if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) return false;\n if (!areEqualValues(a[key], b[key])) return false;\n }\n for (const key in b) {\n if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) return false;\n }\n if (Array.isArray(a) || Array.isArray(b)) {\n if (!Array.isArray(a) || !Array.isArray(b)) return false;\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (!areEqualValues(a[i], b[i])) return false;\n }\n }\n return true;\n}\n\nfunction acceptConnections() {\n if (typeof onconnect !== 'undefined') {\n self.onconnect = function(event) {\n fireworkers.push(new Fireworker(event.ports[0]));\n };\n } else {\n fireworkers.push(new Fireworker(self));\n }\n self.localStorage.flushPending();\n}\n\nself.window = self;\nacceptConnections();\n"],"names":[],"mappings":"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"}