firetruss-worker 2.1.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bower.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "firetruss-worker",
3
- "version": "2.1.0",
3
+ "version": "2.4.0",
4
4
  "homepage": "https://github.com/pkaminski/firetruss-worker",
5
5
  "authors": [
6
6
  "Piotr Kaminski"
@@ -3,7 +3,7 @@
3
3
  var fireworkers = [];
4
4
  var apps = {};
5
5
  // This version is filled in by the build, don't reformat the line.
6
- var VERSION = '2.1.0';
6
+ var VERSION = '2.4.0';
7
7
 
8
8
 
9
9
  var LocalStorage = function LocalStorage() {
@@ -148,6 +148,9 @@ Branch.prototype._diffRecursively = function _diffRecursively (oldValue, newValu
148
148
  var Fireworker = function Fireworker(port) {
149
149
  this._port = port;
150
150
  this._lastWriteSerial = 0;
151
+ this._app = undefined;
152
+ this._cachedAuth = undefined;
153
+ this._cachedDatabase = undefined;
151
154
  this._lastJsonUser = undefined;
152
155
  this._configError = undefined;
153
156
  this._callbacks = {};
@@ -156,6 +159,24 @@ var Fireworker = function Fireworker(port) {
156
159
  port.onmessage = this._receive.bind(this);
157
160
  };
158
161
 
162
+ var prototypeAccessors$1 = { _auth: { configurable: true },_database: { configurable: true } };
163
+
164
+ prototypeAccessors$1._auth.get = function () {
165
+ if (this._cachedAuth) { return this._cachedAuth; }
166
+ if (!this._app) { throw new Error('Must provide Firebase configuration data first'); }
167
+ return this._cachedAuth = this._app.auth();
168
+ };
169
+
170
+ prototypeAccessors$1._database.get = function () {
171
+ if (this._cachedDatabase) { return this._cachedDatabase; }
172
+ if (!this._app) { throw new Error('Must provide Firebase configuration data first'); }
173
+ this._cachedDatabase = this._app.database();
174
+ if (Fireworker._databaseWrapperCallback) {
175
+ this._cachedDatabase = Fireworker._databaseWrapperCallback(this._cachedDatabase);
176
+ }
177
+ return this._cachedDatabase;
178
+ };
179
+
159
180
  Fireworker.prototype.init = function init (ref) {
160
181
  var storage = ref.storage;
161
182
  var config = ref.config;
@@ -196,14 +217,19 @@ Fireworker.prototype.destroy = function destroy () {
196
217
  if (k >= 0) { fireworkers[k] = null; }
197
218
  };
198
219
 
220
+ Fireworker.prototype.enableFirebaseLogging = function enableFirebaseLogging (ref) {
221
+ var value = ref.value;
222
+
223
+ firebase.database.enableLogging(value);
224
+ };
225
+
199
226
  Fireworker.prototype.ping = function ping () {
200
227
  // Noop, placeholder for legacy Firetruss clients.
201
228
  };
202
229
 
203
230
  Fireworker.prototype.bounceConnection = function bounceConnection () {
204
- if (!this._app) { throw new Error('Must provide Firebase configuration data first'); }
205
- this._app.database().goOffline();
206
- this._app.database().goOnline();
231
+ this._database.goOffline();
232
+ this._database.goOnline();
207
233
  };
208
234
 
209
235
  Fireworker.prototype._receive = function _receive (event) {
@@ -264,7 +290,14 @@ Fireworker.prototype.authWithCustomToken = function authWithCustomToken (ref) {
264
290
  var url = ref.url;
265
291
  var authToken = ref.authToken;
266
292
 
267
- return this._app.auth().signInWithCustomToken(authToken)
293
+ return this._auth.signInWithCustomToken(authToken)
294
+ .then(function (result) { return userToJson(result.user); });
295
+ };
296
+
297
+ Fireworker.prototype.authAnonymously = function authAnonymously (ref) {
298
+ var url = ref.url;
299
+
300
+ return this._auth.signInAnonymously()
268
301
  .then(function (result) { return userToJson(result.user); });
269
302
  };
270
303
 
@@ -272,10 +305,10 @@ Fireworker.prototype.unauth = function unauth (ref) {
272
305
  var this$1 = this;
273
306
  var url = ref.url;
274
307
 
275
- return this._app.auth().signOut().catch(function (e) {
308
+ return this._auth.signOut().catch(function (e) {
276
309
  // We can ignore the error if the user is signed out anyway, but make sure to notify all
277
310
  // authCallbacks otherwise we end up in a bogus state!
278
- if (this$1._app.auth().currentUser === null) {
311
+ if (this$1._auth.currentUser === null) {
279
312
  for (var callbackId in this$1._callbacks) {
280
313
  if (!this$1._callbacks.hasOwnProperty(callbackId)) { continue; }
281
314
  var callback = this$1._callbacks[callbackId];
@@ -293,7 +326,7 @@ Fireworker.prototype.onAuth = function onAuth (ref) {
293
326
 
294
327
  var authCallback = this._callbacks[callbackId] = this._onAuthCallback.bind(this, callbackId);
295
328
  authCallback.auth = true;
296
- authCallback.cancel = this._app.auth().onIdTokenChanged(authCallback);
329
+ authCallback.cancel = this._auth.onIdTokenChanged(authCallback);
297
330
  };
298
331
 
299
332
  Fireworker.prototype._onAuthCallback = function _onAuthCallback (callbackId, user) {
@@ -495,7 +528,7 @@ Fireworker.prototype.onDisconnect = function onDisconnect (ref) {
495
528
  Fireworker.prototype._createRef = function _createRef (url, spec) {
496
529
  if (!this._app) { throw new Error('Must provide Firebase configuration data first'); }
497
530
  try {
498
- var ref = this._app.database().refFromURL(url);
531
+ var ref = this._database.refFromURL(url);
499
532
  if (spec) {
500
533
  switch (spec.by) {
501
534
  case '$key': ref = ref.orderByKey(); break;
@@ -527,8 +560,21 @@ Fireworker.expose = function expose (fn, name) {
527
560
  Fireworker._exposed[name] = fn;
528
561
  };
529
562
 
563
+ Fireworker.setDatabaseWrapperCallback = function setDatabaseWrapperCallback (fn) {
564
+ if (Fireworker._databaseWrapperCallback) {
565
+ throw new Error("Database wrapper callback already set");
566
+ }
567
+ if (Fireworker._firstMessageReceived) {
568
+ throw new Error('Too late to set database wrapper callback, worker in use');
569
+ }
570
+ Fireworker._databaseWrapperCallback = fn;
571
+ };
572
+
573
+ Object.defineProperties( Fireworker.prototype, prototypeAccessors$1 );
574
+
530
575
  Fireworker._exposed = {};
531
576
  Fireworker._firstMessageReceived = false;
577
+ Fireworker._databaseWrapperCallback = undefined;
532
578
 
533
579
  function errorToJson(error) {
534
580
  var json = {name: error.name, message: error.message};
@@ -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.1.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._lastJsonUser = undefined;\n this._configError = undefined;\n this._callbacks = {};\n this._messages = [];\n this._flushMessageQueue = this._flushMessageQueue.bind(this);\n port.onmessage = this._receive.bind(this);\n }\n\n init({storage, config}) {\n if (storage) self.localStorage.init(storage);\n if (config) {\n try {\n if (!apps[config.databaseURL]) {\n apps[config.databaseURL] = firebase.initializeApp(config, config.databaseURL);\n }\n this._app = apps[config.databaseURL];\n this._app.database();\n this._app.auth();\n this._configError = undefined;\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 ping() {\n // Noop, placeholder for legacy Firetruss clients.\n }\n\n bounceConnection() {\n if (!this._app) throw new Error('Must provide Firebase configuration data first');\n this._app.database().goOffline();\n this._app.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._app.auth().signInWithCustomToken(authToken)\n .then(result => userToJson(result.user));\n }\n\n unauth({url}) {\n return this._app.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._app.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._app.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._app.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) ref = ref.equalTo(spec.at);\n else if (spec.from) ref = ref.startAt(spec.from);\n else if (spec.to) ref = ref.endAt(spec.to);\n if (spec.first) ref = ref.limitToFirst(spec.first);\n else if (spec.last) 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) throw new Error('Cannot expose a function with no name: ' + fn);\n if (Fireworker._exposed.hasOwnProperty(name)) {\n throw new Error(`Function ${name}() already exposed`);\n }\n if (Fireworker._firstMessageReceived) {\n throw new Error('Too late to expose function, worker in use');\n }\n Fireworker._exposed[name] = fn;\n }\n}\n\nFireworker._exposed = {};\nFireworker._firstMessageReceived = false;\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 = '2.4.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 = undefined;\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 this._cachedDatabase = this._app.database();\n if (Fireworker._databaseWrapperCallback) {\n this._cachedDatabase = Fireworker._databaseWrapperCallback(this._cachedDatabase);\n }\n return this._cachedDatabase;\n }\n\n init({storage, config}) {\n if (storage) self.localStorage.init(storage);\n if (config) {\n try {\n if (!apps[config.databaseURL]) {\n apps[config.databaseURL] = firebase.initializeApp(config, config.databaseURL);\n }\n this._app = apps[config.databaseURL];\n this._app.database();\n this._app.auth();\n this._configError = undefined;\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) ref = ref.equalTo(spec.at);\n else if (spec.from) ref = ref.startAt(spec.from);\n else if (spec.to) ref = ref.endAt(spec.to);\n if (spec.first) ref = ref.limitToFirst(spec.first);\n else if (spec.last) 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) throw new Error('Cannot expose a function with no name: ' + fn);\n if (Fireworker._exposed.hasOwnProperty(name)) {\n throw new Error(`Function ${name}() already exposed`);\n }\n if (Fireworker._firstMessageReceived) {\n throw 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 throw new Error(`Database wrapper callback already set`);\n }\n if (Fireworker._firstMessageReceived) {\n throw new Error('Too late to set database wrapper callback, worker in use');\n }\n Fireworker._databaseWrapperCallback = fn;\n }\n}\n\nFireworker._exposed = {};\nFireworker._firstMessageReceived = false;\nFireworker._databaseWrapperCallback = 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":"AAAA;AACA;AACAA,IAAM,WAAW,GAAG,EAAE,CAAC;AACvBA,IAAM,IAAI,GAAG,EAAE,CAAC;AAChB;AACAA,IAAM,OAAO,GAAG,OAAO,CAAC;AACxB;AACA;AACA,IAAM,YAAY,GAChB,qBAAW,GAAG;AAChB,EAAI,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACrB,EAAI,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AAC5B,EAAI,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC9B,EAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpD;;4DAAC;AACH;uBACE,sBAAK,KAAK,EAAE;AACd,EAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC5B,IAAM,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AAC1B,IAAM,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC/B,GAAK;AACH,EAAC;AACH;uBACE,4BAAQ,IAAI,EAAE;AAChB,EAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,IAAE,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAC;AAC/E,EAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChC,EAAC;AACH;uBACE,wCAAe;AACjB,EAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,IAAE,SAAO;AAC3C,EAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AAC7B,IAAM,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AAC1C,IAAM,OAAO;AACb,GAAK;AACL,EAAI,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;AACjF,EAAI,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AAC1B,EAAC;AACH;AACE,mBAAI,yBAAS,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAC;AAC3C;uBACE,oBAAI,CAAC,EAAE;AACT,EAAI,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC5B,EAAC;AACH;uBACE,4BAAQ,GAAG,EAAE;AACf,EAAI,uBAAmB,IAAI,CAAC,+BAAM,EAAE;AACpC,IADSA,IAAM;;MACT,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,IAAE,OAAO,IAAI,CAAC,KAAK,GAAC;AAC9C,GAAK;AACL,EAAI,OAAO,IAAI,CAAC;AACd,EAAC;AACH;uBACE,4BAAQ,GAAG,EAAE,KAAK,EAAE;AACtB,EAAIC,IAAI,UAAU,CAAC;AACnB,EAAI,uBAAmB,IAAI,CAAC,+BAAM,EAAE;AACpC,IADSD,IAAM;;MACT,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE;AAC5B,MAAQ,UAAU,GAAG,IAAI,CAAC;AAC1B,MAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,MAAQ,MAAM;AACd,KAAO;AACP,GAAK;AACL,EAAI,IAAI,CAAC,UAAU,EAAE;AACrB,IAAM,UAAU,GAAG,MAAC,GAAG,SAAE,KAAK,CAAC,CAAC;AAChC,IAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACnC,GAAK;AACL,EAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC3B,EAAC;AACH;uBACE,kCAAW,GAAG,EAAE;AAClB,EAAI,KAAKC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACjD,IAAM,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE;AACtC,MAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,MAAQ,IAAI,CAAC,OAAO,CAAC,MAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACzC,MAAQ,MAAM;AACd,KAAO;AACP,GAAK;AACH,EAAC;AACH;uBACE,0BAAQ;AACV,EAAI,KAAKD,IAAM,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACpC,IAAM,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACjD,GAAK;AACL,EAAI,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACnB;;sEACD;AACD;AACA,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;AACvC;AACA;AACA,IAAM,MAAM,GACV,eAAW,GAAG;AAChB,EAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACpB,EAAC;AACH;iBACE,oBAAI,KAAK,EAAE;AACb,EAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,EAAC;AACH;iBACE,sBAAK,KAAK,EAAE,UAAU,EAAE;AAC1B,EAAIA,IAAM,OAAO,GAAG,EAAE,CAAC;AACvB,EAAIA,IAAM,QAAQ,GAAG,UAAU,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACvE,EAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE;AACrE,IAAM,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACzB,IAAM,OAAO,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;AAClC,GAAK;AACL,EAAI,OAAO,OAAO,CAAC;AACjB,EAAC;AACH;iBACE,8CAAiB,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE;AAC1D,EAAI,IAAI,QAAQ,KAAK,SAAS,IAAE,QAAQ,GAAG,IAAI,GAAC;AAChD,EAAI,IAAI,QAAQ,KAAK,SAAS,IAAE,QAAQ,GAAG,IAAI,GAAC;AAChD,EAAI,IAAI,QAAQ,KAAK,IAAI,IAAE,OAAO,QAAQ,KAAK,IAAI,GAAC;AACpD,EAAI,IAAI,QAAQ,YAAY,MAAM,IAAI,QAAQ,YAAY,MAAM,EAAE;AAClE,IAAMC,IAAI,OAAO,GAAG,IAAI,CAAC;AACzB,IAAMD,IAAM,aAAa,GAAG,EAAE,CAAC;AAC/B,IAAM,KAAKA,IAAM,QAAQ,IAAI,QAAQ,EAAE;AACvC,MAAQ,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAE,WAAS;AACzD,MAAQA,IAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB;AAClD,QAAU,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;AACtF,MAAQ,IAAI,YAAY,EAAE;AAC1B,QAAU,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvC,OAAS,MAAM;AACf,QAAU,OAAO,GAAG,KAAK,CAAC;AAC1B,OAAS;AACT,KAAO;AACP,IAAM,IAAI,OAAO,IAAE,OAAO,IAAI,GAAC;AAC/B,IAAM,KAAKA,IAAME,UAAQ,IAAI,QAAQ,EAAE;AACvC,MAAQ,IAAI,CAAC,QAAQ,CAAC,cAAc,CAACA,UAAQ,CAAC,IAAI,QAAQ,CAAC,cAAc,CAACA,UAAQ,CAAC,IAAE,WAAS;AAC9F,MAAQ,OAAO,CAAC,QAAQ,CAAC,MAAM,CAACA,UAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AAC5D,MAAQ,OAAO,QAAQ,CAACA,UAAQ,CAAC,CAAC;AAClC,KAAO;AACP,IAAM,uBAAuB,sCAAa,EAAE;AAC5C,MADWF,IAAME;;QACT,OAAO,CAAC,QAAQ,CAAC,MAAM,CAACA,UAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAACA,UAAQ,CAAC,CAAC;AAC1E,MAAQ,QAAQ,CAACA,UAAQ,CAAC,GAAG,QAAQ,CAACA,UAAQ,CAAC,CAAC;AAChD,KAAO;AACP,GAAK,MAAM;AACX,IAAM,OAAO,QAAQ,KAAK,QAAQ,CAAC;AACnC,GAAK;AACH,EACD;AACD;AACA;IACqB,UAAU,GAC7B,mBAAW,CAAC,IAAI,EAAE;AACpB,EAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,EAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;AAC9B,EAAI,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;AAC1B,EAAI,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;AACjC,EAAI,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;AACrC,EAAI,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;AACnC,EAAI,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;AAClC,EAAI,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACzB,EAAI,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACxB,EAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjE,EAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5C;;+FAAC;AACH;AACE,qBAAI,wBAAQ;AACd,EAAI,IAAI,IAAI,CAAC,WAAW,IAAE,OAAO,IAAI,CAAC,WAAW,GAAC;AAClD,EAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,GAAC;AACtF,EAAI,OAAO,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC7C,EAAC;AACH;AACE,qBAAI,4BAAY;AAClB,EAAI,IAAI,IAAI,CAAC,eAAe,IAAE,OAAO,IAAI,CAAC,eAAe,GAAC;AAC1D,EAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,GAAC;AACtF,EAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAChD,EAAI,IAAI,UAAU,CAAC,wBAAwB,EAAE;AAC7C,IAAM,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,wBAAwB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACvF,GAAK;AACL,EAAI,OAAO,IAAI,CAAC,eAAe,CAAC;AAC9B,EAAC;AACH;qBACE,yBAAsB,EAAE;8BAAT;;AAAU;AAC3B,EAAI,IAAI,OAAO,IAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,GAAC;AACjD,EAAI,IAAI,MAAM,EAAE;AAChB,IAAM,IAAI;AACV,MAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;AACvC,QAAU,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;AACxF,OAAS;AACT,MAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAC7C,MAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC7B,MAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACzB,MAAQ,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;AACtC,KAAO,CAAC,OAAO,CAAC,EAAE;AAClB,MAAQ,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAC9B,MAAQ,MAAM,CAAC,CAAC;AAChB,KAAO;AACP,GAAK,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE;AAClC,IAAM,MAAM,IAAI,CAAC,YAAY,CAAC;AAC9B,GAAK;AACL,EAAI,OAAO;AACX,IAAM,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AAC5D,IAAM,OAAO,EAAE,OAAO;AACtB,IAAM,kBAAkB,EAAE,QAAQ,CAAC,WAAW;AAC9C,GAAK,CAAC;AACJ,EAAC;AACH;qBACE,8BAAU;AACZ,EAAI,KAAKF,IAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE;AACvC,IAAMA,IAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC5C,IAAM,IAAI,QAAQ,CAAC,MAAM,IAAE,QAAQ,CAAC,MAAM,EAAE,GAAC;AAC7C,GAAK;AACL,EAAI,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACzB,EAAI,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;AAChC,EAAI,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACxB,EAAIA,IAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACxC,EAAI,IAAI,CAAC,IAAI,CAAC,IAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,GAAC;AACpC,EAAC;AACH;qBACE,2DAA6B,EAAE;;AAAC;AAClC,EAAI,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACzC,EAAC;AACH;qBACE,wBAAO;AACT;AACE,EAAC;AACH;qBACE,gDAAmB;AACrB,EAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;AAC/B,EAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAC5B,EAAC;AACH;qBACE,8BAAS,KAAK,EAAE;AAClB,EAAI,UAAU,CAAC,qBAAqB,GAAG,IAAI,CAAC;AAC5C,EAAI,uBAAsB,KAAK,CAAC,6BAAI;MAA3BA,IAAM;;MAAuB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;KAAC;AAClE,EAAC;AACH;qBACE,4CAAgB,OAAO,EAAE;;AAAC;AAC5B,EAAIC,IAAI,OAAO,CAAC;AAChB,EAAI,IAAI;AACR,IAAMD,IAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACnC,IAAM,IAAI,OAAO,EAAE,KAAK,UAAU,IAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,GAAC;AACvF,IAAM,IAAI,OAAO,CAAC,WAAW,EAAE;AAC/B,MAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;AACrF,KAAO;AACP,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AACxD,GAAK,CAAC,OAAO,CAAC,EAAE;AAChB,IAAM,CAAC,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAChC,IAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClC,GAAK;AACL,EAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACzB,IAAM,OAAO,CAAC,IAAI,WAAC,QAAU;AAC7B,MAAQG,MAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,UAAE,MAAM,CAAC,CAAC,CAAC;AAC7D,KAAO,YAAE,OAAS;AAClB,MAAQA,MAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/E,KAAO,CAAC,CAAC;AACT,GAAK;AACH,EAAC;AACH;qBACE,wBAAM,OAAO,EAAE;AACjB,EAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,IAAE,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAC;AAChF,EAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC/B,EAAC;AACH;qBACE,oDAAqB;AACvB,EAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3C,EAAI,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACtB,EAAC;AACH;qBACE,yBAAiB,EAAE;wBAAP;;AAAQ;AACtB,EAAI,IAAI;AACR,IAAM,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1E,GAAK,CAAC,OAAO,CAAC,EAAE;AAChB,IAAM,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/B,GAAK;AACH,EAAC;AACH;qBACE,uDAAoC,EAAE;sBAAZ;;AAAa;AACzC,EAAI,OAAO,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,SAAS,CAAC;AACtD,KAAO,IAAI,WAAC,iBAAU,UAAU,CAAC,MAAM,CAAC,IAAI,IAAC,CAAC,CAAC;AAC7C,EAAC;AACH;qBACE,+CAAqB,EAAE;;AAAC;AAC1B,EAAI,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;AACzC,KAAO,IAAI,WAAC,iBAAU,UAAU,CAAC,MAAM,CAAC,IAAI,IAAC,CAAC,CAAC;AAC7C,EAAC;AACH;qBACE,6BAAY,EAAE;sBAAN;;AAAO;AACjB,EAAI,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,WAAC,GAAK;AAC3C;AACA;AACA,IAAM,IAAIA,MAAI,CAAC,KAAK,CAAC,WAAW,KAAK,IAAI,EAAE;AAC3C,MAAQ,KAAKH,IAAM,UAAU,IAAIG,MAAI,CAAC,UAAU,EAAE;AAClD,QAAU,IAAI,CAACA,MAAI,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,IAAE,WAAS;AACpE,QAAUH,IAAM,QAAQ,GAAGG,MAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACvD,QAAU,IAAI,QAAQ,CAAC,IAAI,IAAE,QAAQ,CAAC,IAAI,CAAC,GAAC;AAC5C,OAAS;AACT,KAAO,MAAM;AACb,MAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACjC,KAAO;AACP,GAAK,CAAC,CAAC;AACL,EAAC;AACH;qBACE,6BAAwB,EAAE;sBAAb;;AAAc;AAC7B,EAAIH,IAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AACnG,EAAI,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC;AAC7B,EAAI,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;AAClE,EAAC;AACH;qBACE,4CAAgB,UAAU,EAAE,IAAI,EAAE;;AAAC;AACrC,EAAI,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,WAAC,UAAY;AACtC,IAAM,IAAI,cAAc,CAACG,MAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAE,SAAO;AAC/D,IAAMA,MAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;AACpC,IAAMA,MAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACtE,GAAK,CAAC,CAAC;AACL,EAAC;AACH;qBACE,uBAAgB,EAAE;sBAAR;;AAAS;AACrB,EAAI,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACzC,EAAC;AACH;qBACE,6BAAmB,EAAE;sBAAR;;AAAS;AACxB,EAAI,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5C,EAAC;AACH;qBACE,yBAAU,EAAE;sBAAN;;AAAO;AACf,EAAI,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,WAAC,mBAAYA,MAAI,CAAC,eAAe,CAAC,QAAQ,IAAC,CAAC,CAAC;AAC7F,EAAC;AACH;qBACE,qBAA2D,EAAE;sCAA5C;sBAAK;wBAAM;kCAAW;oCAAY;;AAAW;AAChE,EAAI,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;AAC5B,EAAI,IAAI,OAAO,CAAC,IAAI,IAAE,OAAO,CAAC,MAAM,GAAG,IAAI,MAAM,EAAE,GAAC;AACpD,EAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,cAAC,WAAW,OAAE,GAAG,QAAE,IAAI,aAAE,SAAS,cAAE,UAAU,CAAC,CAAC,CAAC;AAC1F,EAAIH,IAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AACxD,IAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAC/D,EAAI,gBAAgB,CAAC,WAAW,GAAG,WAAW,CAAC;AAC/C,EAAI,gBAAgB,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3C,EAAI,gBAAgB,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAC7C,EAAIA,IAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AACzE,EAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC;AAC7E,EAAC;AACH;qBACE,uBAAmD,EAAE;sCAAnC;sBAAK;wBAAM;kCAAW;;AAAc;AACxD,EAAIC,IAAI,gBAAgB,CAAC;AACzB,EAAI,IAAI,UAAU,EAAE;AACpB;AACA,IAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACrD,IAAM,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACzC,GAAK,MAAM;AACX,IAAM,uBAAkB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,0BAAC,EAAE;AACtD,MADWD,IAAM;;QACT,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,IAAE,WAAS;AAC3D,MAAQA,IAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC9C,MAAQ,IAAI,QAAQ,CAAC,WAAW,KAAK,WAAW;AAChD,WAAa,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC,EAAE;AAC9D,QAAU,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACtC,OAAS;AACT,KAAO;AACP,GAAK;AACL,EAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAC9D,EAAC;AACH;qBACE,oDAAoB,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE;AACrD,EAAI,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE;AACtC,IAAMA,IAAM,IAAI,GAAG,kBAAkB;AACrC,MAAQ,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;AACjF,IAAMC,IAAI,KAAK,CAAC;AAChB,IAAM,IAAI;AACV,MAAQ,KAAK,GAAG,sBAAsB,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;AACvD,KAAO,CAAC,OAAO,CAAC,EAAE;AAClB,MAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;AACzB,MAAQ,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAC9C,MAAQ,OAAO;AACf,KAAO;AACP,IAAMD,IAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACvD,IAAM,KAAKA,IAAM,SAAS,IAAI,OAAO,EAAE;AACvC,MAAQ,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,IAAE,WAAS;AACzD,MAAQ,IAAI,CAAC,KAAK,CAAC;AACnB,QAAU,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU;AACzC,QAAU,IAAI,EAAE,CAAC,IAAI,EAAE;AACvB,UAAY,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,gBAAgB;AAC1F,SAAW,CAAC;AACZ,OAAS,CAAC,CAAC;AACX,KAAO;AACP,GAAK,MAAM;AACX,IAAM,IAAI;AACV,MAAQA,IAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AAC5D,MAAQ,IAAI,OAAO,CAAC,IAAI,IAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,GAAC;AACjE,MAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;AAClF,MAAQ,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AAC5B,KAAO,CAAC,OAAOI,GAAC,EAAE;AAClB,MAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;AACzB,MAAQ,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAEA,GAAC,CAAC,CAAC;AAC9C,KAAO;AACP,GAAK;AACH,EAAC;AACH;qBACE,gDAAkB,UAAU,EAAE,KAAK,EAAE;AACvC,EAAI,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACvC,EAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,EAAC;AACH;qBACE,yCAA4C,EAAE;sBAAjC;wBAAK;kCAAU;;AAAmB;AACjD,EAAIJ,IAAM,eAAe,GAAG,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;AACpG,EAAIA,IAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACrC,EAAIA,IAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;AAChC,EAAIC,IAAI,KAAK,EAAE,cAAc,CAAC;AAC9B;AACA,EAAI,OAAO,GAAG,CAAC,WAAW,WAAC,OAAS;AACpC,IAAM,cAAc,GAAG,SAAS,CAAC;AACjC,IAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;AAC5C,IAAM,KAAK,GAAG,CAAC,4BAA4B,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC7D,IAAM,IAAI,KAAK,IAAE,KAAK,GAAG,QAAQ,GAAC;AAClC,IAAM,IAAI,eAAe,EAAE;AAC3B,MAAQ,KAAKD,IAAM,YAAY,IAAI,eAAe,EAAE;AACpD,QAAU,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,YAAY,CAAC,IAAE,WAAS;AACtE,QAAU,IAAI,YAAY,EAAE;AAC5B,UAAYA,IAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACrD,UAAY,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAE,KAAK,GAAG,EAAE,GAAC;AAClE,UAAYC,IAAI,MAAM,GAAG,KAAK,CAAC;AAC/B,UAAY,KAAKA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1D,YAAcD,IAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AACtC,YAAcC,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACtC,YAAc,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAE,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAC;AAClF,YAAc,MAAM,GAAG,KAAK,CAAC;AAC7B,WAAa;AACb,UAAY,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;AAClF,SAAW,MAAM;AACjB,UAAY,KAAK,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;AAClD,SAAW;AACX,OAAS;AACT,KAAO;AACP,IAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACxB,IAAM,IAAI,CAAC,KAAK,EAAE;AAClB,MAAQ,cAAc,GAAG,KAAK,CAAC;AAC/B,MAAQ,OAAO,KAAK,CAAC;AACrB,KAAO;AACP,GAAK,CAAC,CAAC,IAAI,WAAC,QAAU;AACtB,IAAMD,IAAM,SAAS,GAAG,EAAE,CAAC;AAC3B,IAAMA,IAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;AAClG,IAAM,KAAKA,IAAM,IAAI,IAAI,OAAO,EAAE;AAClC,MAAQ,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,IAAE,WAAS;AACpD,MAAQ,SAAS,CAAC,IAAI,CAAC;AACvB,cAAU,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,IAAIG,MAAI,CAAC,gBAAgB;AAC9F,OAAS,CAAC,CAAC;AACX,KAAO;AACP,IAAM,OAAO,CAAC,SAAS,EAAE,CAAC,KAAK,aAAE,SAAS,CAAC,CAAC;AAC5C,GAAK,YAAE,OAAS;AAChB,IAAM,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,YAAY,EAAE;AACrE,MAAQ,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,WAAC,UAAY;AAClD,QAAU,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAEA,MAAI,CAAC,gBAAgB,CAAC,CAAC;AAC/F,OAAS,CAAC,CAAC;AACX,KAAO;AACP,IAAM,KAAK,CAAC,cAAc,GAAG,cAAc,CAAC;AAC5C,IAAM,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnC,GAAK,CAAC,CAAC;AACL,EAAC;AACH;qBACE,4CAAgB,QAAQ,EAAE;AAC5B,EAAIH,IAAM,IAAI;AACd,IAAM,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;AAClG,EAAI,OAAO;AACX,UAAM,IAAI,EAAE,KAAK,EAAE,sBAAsB,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,gBAAgB;AAC7F,GAAK,CAAC;AACJ,EAAC;AACH;qBACE,yCAAiC,EAAE;sBAAhB;4BAAQ;;AAAS;AACtC,EAAIA,IAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;AAC7D,EAAI,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;AACrC,EAAC;AACH;qBACE,kCAAW,GAAG,EAAE,IAAI,EAAE;AACxB,EAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,GAAC;AACtF,EAAI,IAAI;AACR,IAAMC,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC/C,IAAM,IAAI,IAAI,EAAE;AAChB,MAAQ,QAAQ,IAAI,CAAC,EAAE;AACvB,QAAU,KAAK,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM;AACrD,QAAU,KAAK,QAAQ,EAAE,GAAG,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM;AACzD,QAAU,SAAS,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM;AAC1D,OAAS;AACT,MAAQ,IAAI,IAAI,CAAC,EAAE,IAAE,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAC;AAChD,WAAa,IAAI,IAAI,CAAC,IAAI,IAAE,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAC;AACzD,WAAa,IAAI,IAAI,CAAC,EAAE,IAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAC;AACnD,MAAQ,IAAI,IAAI,CAAC,KAAK,IAAE,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,GAAC;AAC3D,WAAa,IAAI,IAAI,CAAC,IAAI,IAAE,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAC;AAC7D,KAAO;AACP,IAAM,OAAO,GAAG,CAAC;AACjB,GAAK,CAAC,OAAO,CAAC,EAAE;AAChB,IAAM,CAAC,CAAC,KAAK,GAAG,MAAC,GAAG,QAAE,IAAI,CAAC,CAAC;AAC5B,IAAM,MAAM,CAAC,CAAC;AACd,GAAK;AACH,EAAC;AACH;AACE,WAAO,0BAAO,EAAE,EAAE,IAAI,EAAE;AAC1B,EAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC;AAC3B,EAAI,IAAI,CAAC,IAAI,IAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,EAAE,CAAC,GAAC;AAC/E,EAAI,IAAI,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;AAClD,IAAM,MAAM,IAAI,KAAK,gBAAa,IAAI,yBAAqB,CAAC;AAC5D,GAAK;AACL,EAAI,IAAI,UAAU,CAAC,qBAAqB,EAAE;AAC1C,IAAM,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;AACpE,GAAK;AACL,EAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACjC,EAAC;AACH;AACE,WAAO,kEAA2B,EAAE,EAAE;AACxC,EAAI,IAAI,UAAU,CAAC,wBAAwB,EAAE;AAC7C,IAAM,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;AAC/D,GAAK;AACL,EAAI,IAAI,UAAU,CAAC,qBAAqB,EAAE;AAC1C,IAAM,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;AAClF,GAAK;AACL,EAAI,UAAU,CAAC,wBAAwB,GAAG,EAAE,CAAC;AAC3C;;;AAEF;AACA,UAAU,CAAC,QAAQ,GAAG,EAAE,CAAC;AACzB,UAAU,CAAC,qBAAqB,GAAG,KAAK,CAAC;AACzC,UAAU,CAAC,wBAAwB,GAAG,SAAS,CAAC;AAChD;AACA,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,EAAED,IAAM,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AAC1D,EAAEA,IAAM,aAAa,GAAG,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAC1D,EAAE,uBAA2B,sCAAa,EAAE;AAC5C,IADOA,IAAM;;IACT,IAAI,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;AAC7C,GAAG;AACH,EAAE,OAAO,IAAI,CAAC;AACd,CAAC;AACD;AACA,SAAS,sBAAsB,CAAC,KAAK,EAAE;AACvC,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC5B,IAAIA,IAAM,WAAW,GAAG,EAAE,CAAC;AAC3B,IAAI,KAAKC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,MAAMD,IAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5B,MAAM,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAE,WAAS;AACxD,MAAM,WAAW,CAAC,CAAC,CAAC,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,OAAO,WAAW,CAAC;AACvB,GAAG;AACH,EAAE,IAAI,KAAK,YAAY,MAAM,EAAE;AAC/B,IAAI,KAAKA,IAAM,GAAG,IAAI,KAAK,EAAE;AAC7B,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,IAAE,KAAK,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAC;AACrF,KAAK;AACL,GAAG;AACH,EAAE,OAAO,KAAK,CAAC;AACf,CAAC;AACD;AACA,SAAS,UAAU,CAAC,IAAI,EAAE;AAC1B,EAAE,IAAI,CAAC,IAAI,IAAE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAC;AAC1C,EAAEA,IAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC7B,EAAE,OAAO,IAAI,CAAC,eAAe,CAAC;AAC9B,EAAE,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,WAAC,QAAU;AAChD,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;AAC7B,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;AAC7B,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAChC,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG,CAAC,CAAC;AACL,CAAC;AACD;AACA;AACA,SAAS,4BAA4B,CAAC,CAAC,EAAE,CAAC,EAAE;AAC5C,EAAE,IAAI,CAAC,KAAK,CAAC,IAAE,OAAO,IAAI,GAAC;AAC3B,EAAE,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC,IAAE,OAAO,IAAI,GAAC;AACtF,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAE,OAAO,KAAK,GAAC;AAC7C,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,IAAE,OAAO,KAAK,GAAC;AACtE,EAAE,KAAKA,IAAM,GAAG,IAAI,CAAC,EAAE;AACvB,IAAI,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,IAAE,OAAO,KAAK,GAAC;AACvE,IAAI,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAE,OAAO,KAAK,GAAC;AACpE,GAAG;AACH,EAAE,KAAKA,IAAMK,KAAG,IAAI,CAAC,EAAE;AACvB,IAAI,IAAI,CAAC,CAAC,CAAC,cAAc,CAACA,KAAG,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAACA,KAAG,CAAC,IAAE,OAAO,KAAK,GAAC;AACvE,GAAG;AACH,EAAE,OAAO,IAAI,CAAC;AACd,CAAC;AACD;AACA,SAAS,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE;AAC9B,EAAE,IAAI,CAAC,KAAK,CAAC,IAAE,OAAO,IAAI,GAAC;AAC3B,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,IAAE,OAAO,IAAI,GAAC;AAClF,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,IAAE,OAAO,KAAK,GAAC;AACnF,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,IAAE,OAAO,KAAK,GAAC;AACtE,EAAE,KAAKL,IAAM,GAAG,IAAI,CAAC,EAAE;AACvB,IAAI,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,IAAE,OAAO,KAAK,GAAC;AACvE,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAE,OAAO,KAAK,GAAC;AACtD,GAAG;AACH,EAAE,KAAKA,IAAMK,KAAG,IAAI,CAAC,EAAE;AACvB,IAAI,IAAI,CAAC,CAAC,CAAC,cAAc,CAACA,KAAG,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAACA,KAAG,CAAC,IAAE,OAAO,KAAK,GAAC;AACvE,GAAG;AACH,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AAC5C,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAE,OAAO,KAAK,GAAC;AAC7D,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAE,OAAO,KAAK,GAAC;AAC5C,IAAI,KAAKJ,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,MAAM,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,OAAO,KAAK,GAAC;AACpD,KAAK;AACL,GAAG;AACH,EAAE,OAAO,IAAI,CAAC;AACd,CAAC;AACD;AACA,SAAS,iBAAiB,GAAG;AAC7B,EAAE,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;AACxC,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS,KAAK,EAAE;AACrC,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,KAAK,CAAC;AACN,GAAG,MAAM;AACT,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3C,GAAG;AACH,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;AACnC,CAAC;AACD;AACA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,iBAAiB,EAAE;;;;"}
@@ -9,7 +9,7 @@
9
9
  var fireworkers = [];
10
10
  var apps = {};
11
11
  // This version is filled in by the build, don't reformat the line.
12
- var VERSION = '2.1.0';
12
+ var VERSION = '2.4.0';
13
13
 
14
14
 
15
15
  var LocalStorage = function LocalStorage() {
@@ -154,6 +154,9 @@
154
154
  var Fireworker = function Fireworker(port) {
155
155
  this._port = port;
156
156
  this._lastWriteSerial = 0;
157
+ this._app = undefined;
158
+ this._cachedAuth = undefined;
159
+ this._cachedDatabase = undefined;
157
160
  this._lastJsonUser = undefined;
158
161
  this._configError = undefined;
159
162
  this._callbacks = {};
@@ -162,6 +165,24 @@
162
165
  port.onmessage = this._receive.bind(this);
163
166
  };
164
167
 
168
+ var prototypeAccessors$1 = { _auth: { configurable: true },_database: { configurable: true } };
169
+
170
+ prototypeAccessors$1._auth.get = function () {
171
+ if (this._cachedAuth) { return this._cachedAuth; }
172
+ if (!this._app) { throw new Error('Must provide Firebase configuration data first'); }
173
+ return this._cachedAuth = this._app.auth();
174
+ };
175
+
176
+ prototypeAccessors$1._database.get = function () {
177
+ if (this._cachedDatabase) { return this._cachedDatabase; }
178
+ if (!this._app) { throw new Error('Must provide Firebase configuration data first'); }
179
+ this._cachedDatabase = this._app.database();
180
+ if (Fireworker._databaseWrapperCallback) {
181
+ this._cachedDatabase = Fireworker._databaseWrapperCallback(this._cachedDatabase);
182
+ }
183
+ return this._cachedDatabase;
184
+ };
185
+
165
186
  Fireworker.prototype.init = function init (ref) {
166
187
  var storage = ref.storage;
167
188
  var config = ref.config;
@@ -202,14 +223,19 @@
202
223
  if (k >= 0) { fireworkers[k] = null; }
203
224
  };
204
225
 
226
+ Fireworker.prototype.enableFirebaseLogging = function enableFirebaseLogging (ref) {
227
+ var value = ref.value;
228
+
229
+ firebase.database.enableLogging(value);
230
+ };
231
+
205
232
  Fireworker.prototype.ping = function ping () {
206
233
  // Noop, placeholder for legacy Firetruss clients.
207
234
  };
208
235
 
209
236
  Fireworker.prototype.bounceConnection = function bounceConnection () {
210
- if (!this._app) { throw new Error('Must provide Firebase configuration data first'); }
211
- this._app.database().goOffline();
212
- this._app.database().goOnline();
237
+ this._database.goOffline();
238
+ this._database.goOnline();
213
239
  };
214
240
 
215
241
  Fireworker.prototype._receive = function _receive (event) {
@@ -270,7 +296,14 @@
270
296
  var url = ref.url;
271
297
  var authToken = ref.authToken;
272
298
 
273
- return this._app.auth().signInWithCustomToken(authToken)
299
+ return this._auth.signInWithCustomToken(authToken)
300
+ .then(function (result) { return userToJson(result.user); });
301
+ };
302
+
303
+ Fireworker.prototype.authAnonymously = function authAnonymously (ref) {
304
+ var url = ref.url;
305
+
306
+ return this._auth.signInAnonymously()
274
307
  .then(function (result) { return userToJson(result.user); });
275
308
  };
276
309
 
@@ -278,10 +311,10 @@
278
311
  var this$1 = this;
279
312
  var url = ref.url;
280
313
 
281
- return this._app.auth().signOut().catch(function (e) {
314
+ return this._auth.signOut().catch(function (e) {
282
315
  // We can ignore the error if the user is signed out anyway, but make sure to notify all
283
316
  // authCallbacks otherwise we end up in a bogus state!
284
- if (this$1._app.auth().currentUser === null) {
317
+ if (this$1._auth.currentUser === null) {
285
318
  for (var callbackId in this$1._callbacks) {
286
319
  if (!this$1._callbacks.hasOwnProperty(callbackId)) { continue; }
287
320
  var callback = this$1._callbacks[callbackId];
@@ -299,7 +332,7 @@
299
332
 
300
333
  var authCallback = this._callbacks[callbackId] = this._onAuthCallback.bind(this, callbackId);
301
334
  authCallback.auth = true;
302
- authCallback.cancel = this._app.auth().onIdTokenChanged(authCallback);
335
+ authCallback.cancel = this._auth.onIdTokenChanged(authCallback);
303
336
  };
304
337
 
305
338
  Fireworker.prototype._onAuthCallback = function _onAuthCallback (callbackId, user) {
@@ -501,7 +534,7 @@
501
534
  Fireworker.prototype._createRef = function _createRef (url, spec) {
502
535
  if (!this._app) { throw new Error('Must provide Firebase configuration data first'); }
503
536
  try {
504
- var ref = this._app.database().refFromURL(url);
537
+ var ref = this._database.refFromURL(url);
505
538
  if (spec) {
506
539
  switch (spec.by) {
507
540
  case '$key': ref = ref.orderByKey(); break;
@@ -533,8 +566,21 @@
533
566
  Fireworker._exposed[name] = fn;
534
567
  };
535
568
 
569
+ Fireworker.setDatabaseWrapperCallback = function setDatabaseWrapperCallback (fn) {
570
+ if (Fireworker._databaseWrapperCallback) {
571
+ throw new Error("Database wrapper callback already set");
572
+ }
573
+ if (Fireworker._firstMessageReceived) {
574
+ throw new Error('Too late to set database wrapper callback, worker in use');
575
+ }
576
+ Fireworker._databaseWrapperCallback = fn;
577
+ };
578
+
579
+ Object.defineProperties( Fireworker.prototype, prototypeAccessors$1 );
580
+
536
581
  Fireworker._exposed = {};
537
582
  Fireworker._firstMessageReceived = false;
583
+ Fireworker._databaseWrapperCallback = undefined;
538
584
 
539
585
  function errorToJson(error) {
540
586
  var json = {name: error.name, message: error.message};
@@ -1 +1 @@
1
- {"version":3,"file":"worker.umd.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.1.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._lastJsonUser = undefined;\n this._configError = undefined;\n this._callbacks = {};\n this._messages = [];\n this._flushMessageQueue = this._flushMessageQueue.bind(this);\n port.onmessage = this._receive.bind(this);\n }\n\n init({storage, config}) {\n if (storage) self.localStorage.init(storage);\n if (config) {\n try {\n if (!apps[config.databaseURL]) {\n apps[config.databaseURL] = firebase.initializeApp(config, config.databaseURL);\n }\n this._app = apps[config.databaseURL];\n this._app.database();\n this._app.auth();\n this._configError = undefined;\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 ping() {\n // Noop, placeholder for legacy Firetruss clients.\n }\n\n bounceConnection() {\n if (!this._app) throw new Error('Must provide Firebase configuration data first');\n this._app.database().goOffline();\n this._app.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._app.auth().signInWithCustomToken(authToken)\n .then(result => userToJson(result.user));\n }\n\n unauth({url}) {\n return this._app.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._app.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._app.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._app.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) ref = ref.equalTo(spec.at);\n else if (spec.from) ref = ref.startAt(spec.from);\n else if (spec.to) ref = ref.endAt(spec.to);\n if (spec.first) ref = ref.limitToFirst(spec.first);\n else if (spec.last) 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) throw new Error('Cannot expose a function with no name: ' + fn);\n if (Fireworker._exposed.hasOwnProperty(name)) {\n throw new Error(`Function ${name}() already exposed`);\n }\n if (Fireworker._firstMessageReceived) {\n throw new Error('Too late to expose function, worker in use');\n }\n Fireworker._exposed[name] = fn;\n }\n}\n\nFireworker._exposed = {};\nFireworker._firstMessageReceived = false;\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.umd.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.4.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 = undefined;\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 this._cachedDatabase = this._app.database();\n if (Fireworker._databaseWrapperCallback) {\n this._cachedDatabase = Fireworker._databaseWrapperCallback(this._cachedDatabase);\n }\n return this._cachedDatabase;\n }\n\n init({storage, config}) {\n if (storage) self.localStorage.init(storage);\n if (config) {\n try {\n if (!apps[config.databaseURL]) {\n apps[config.databaseURL] = firebase.initializeApp(config, config.databaseURL);\n }\n this._app = apps[config.databaseURL];\n this._app.database();\n this._app.auth();\n this._configError = undefined;\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) ref = ref.equalTo(spec.at);\n else if (spec.from) ref = ref.startAt(spec.from);\n else if (spec.to) ref = ref.endAt(spec.to);\n if (spec.first) ref = ref.limitToFirst(spec.first);\n else if (spec.last) 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) throw new Error('Cannot expose a function with no name: ' + fn);\n if (Fireworker._exposed.hasOwnProperty(name)) {\n throw new Error(`Function ${name}() already exposed`);\n }\n if (Fireworker._firstMessageReceived) {\n throw 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 throw new Error(`Database wrapper callback already set`);\n }\n if (Fireworker._firstMessageReceived) {\n throw new Error('Too late to set database wrapper callback, worker in use');\n }\n Fireworker._databaseWrapperCallback = fn;\n }\n}\n\nFireworker._exposed = {};\nFireworker._firstMessageReceived = false;\nFireworker._databaseWrapperCallback = 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,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():(e="undefined"!=typeof globalThis?globalThis:e||self).Fireworker=t()}(this,function(){"use strict";function e(){this._items=[],this._pendingItems=[],this._initialized=!1,this._flushPending=this.flushPending.bind(this)}var n=[],i={},t={length:{configurable:!0}};e.prototype.init=function(e){this._initialized||(this._items=e,this._initialized=!0)},e.prototype._update=function(e){this._pendingItems.length||Promise.resolve().then(this._flushPending),this._pendingItems.push(e)},e.prototype.flushPending=function(){this._pendingItems.length&&(n.length?(n[0]._send({msg:"updateLocalStorage",items:this._pendingItems}),this._pendingItems=[]):setTimeout(this._flushPending,200))},t.length.get=function(){return this._items.length},e.prototype.key=function(e){return this._items[e].key},e.prototype.getItem=function(e){for(var t=0,r=this._items;t<r.length;t+=1){var n=r[t];if(n.key===e)return n.value}return null},e.prototype.setItem=function(e,t){for(var r,n=0,i=this._items;n<i.length;n+=1){var s=i[n];if(s.key===e){(r=s).value=t;break}}r||(r={key:e,value:t},this._items.push(r)),this._update(r)},e.prototype.removeItem=function(e){for(var t=0;t<this._items.length;t++)if(this._items[t].key===e){this._items.splice(t,1),this._update({key:e,value:null});break}},e.prototype.clear=function(){for(var e in this._items)this._update({key:e.key,value:null});this._items=[]},Object.defineProperties(e.prototype,t),self.localStorage=new e;function f(){this._root=null}f.prototype.set=function(e){this._root=e},f.prototype.diff=function(e,t){var r={},n="/"===t?[""]:t.split("/");return this._diffRecursively(this._root,e,n,r)&&(this._root=e,r[t]=e),r},f.prototype._diffRecursively=function(e,t,r,n){if(void 0===e&&(e=null),void 0===t&&(t=null),null===e)return null!==t;if(!(e instanceof Object&&t instanceof Object))return t!==e;var i=!0,s=[];for(var a in t){t.hasOwnProperty(a)&&(this._diffRecursively(e[a],t[a],r.concat(a),n)?s.push(a):i=!1)}if(i)return!0;for(var o in e)e.hasOwnProperty(o)&&!t.hasOwnProperty(o)&&(n[r.concat(o).join("/")]=null,delete e[o]);for(var l=0,c=s;l<c.length;l+=1){var u=c[l];n[r.concat(u).join("/")]=t[u],e[u]=t[u]}};function s(e){this._port=e,this._lastWriteSerial=0,this._lastJsonUser=void 0,this._configError=void 0,this._callbacks={},this._messages=[],this._flushMessageQueue=this._flushMessageQueue.bind(this),e.onmessage=this._receive.bind(this)}function a(e){for(var t={name:e.name,message:e.message},r=0,n=Object.getOwnPropertyNames(e);r<n.length;r+=1){var i=n[r];t[i]=e[i]}return t}function p(e){if(Array.isArray(e)){for(var t={},r=0;r<e.length;r++){var n=e[r];null!=n&&(t[r]=p(n))}return t}if(e instanceof Object)for(var i in e)e.hasOwnProperty(i)&&(e[i]=p(e[i]));return e}function o(e){if(!e)return Promise.resolve(e);var t=e.toJSON();return delete t.stsTokenManager,e.getIdTokenResult().then(function(e){return delete e.claims.exp,delete e.claims.iat,t.claims=e.claims,t})}return s.prototype.init=function(e){var t=e.storage,r=e.config;if(t&&self.localStorage.init(t),r)try{i[r.databaseURL]||(i[r.databaseURL]=firebase.initializeApp(r,r.databaseURL)),this._app=i[r.databaseURL],this._app.database(),this._app.auth(),this._configError=void 0}catch(e){throw this._configError=e}else if(this._configError)throw this._configError;return{exposedFunctionNames:Object.keys(s._exposed),version:"2.1.0",firebaseSdkVersion:firebase.SDK_VERSION}},s.prototype.destroy=function(){for(var e in this._callbacks){var t=this._callbacks[e];t.cancel&&t.cancel()}this._callbacks={},this._port.onmessage=null,this._messages=[];var r=n.indexOf(this);0<=r&&(n[r]=null)},s.prototype.ping=function(){},s.prototype.bounceConnection=function(){if(!this._app)throw new Error("Must provide Firebase configuration data first");this._app.database().goOffline(),this._app.database().goOnline()},s.prototype._receive=function(e){s._firstMessageReceived=!0;for(var t=0,r=e.data;t<r.length;t+=1){var n=r[t];this._receiveMessage(n)}},s.prototype._receiveMessage=function(t){var r,n=this;try{var e=this[t.msg];if("function"!=typeof e)throw new Error("Unknown message: "+t.msg);t.writeSerial&&(this._lastWriteSerial=Math.max(this._lastWriteSerial,t.writeSerial)),r=Promise.resolve(e.call(this,t))}catch(e){e.immediateFailure=!0,r=Promise.reject(e)}t.oneWay||r.then(function(e){n._send({msg:"resolve",id:t.id,result:e})},function(e){n._send({msg:"reject",id:t.id,error:a(e)})})},s.prototype._send=function(e){this._messages.length||Promise.resolve().then(this._flushMessageQueue),this._messages.push(e)},s.prototype._flushMessageQueue=function(){this._port.postMessage(this._messages),this._messages=[]},s.prototype.call=function(e){var t=e.name,r=e.args;try{return Promise.resolve(s._exposed[t].apply(null,r))}catch(e){return Promise.reject(e)}},s.prototype.authWithCustomToken=function(e){e.url;var t=e.authToken;return this._app.auth().signInWithCustomToken(t).then(function(e){return o(e.user)})},s.prototype.unauth=function(e){var n=this;e.url;return this._app.auth().signOut().catch(function(e){if(null!==n._app.auth().currentUser)return Promise.reject(e);for(var t in n._callbacks){var r;n._callbacks.hasOwnProperty(t)&&((r=n._callbacks[t]).auth&&r(null))}})},s.prototype.onAuth=function(e){e.url;var t=e.callbackId,r=this._callbacks[t]=this._onAuthCallback.bind(this,t);r.auth=!0,r.cancel=this._app.auth().onIdTokenChanged(r)},s.prototype._onAuthCallback=function(t,e){var r=this;o(e).then(function(e){!function e(t,r){if(t===r)return!0;if(null===t&&null===r||void 0===t&&void 0===r)return!0;if(null===t||null===r||void 0===t||void 0===r)return!1;if("object"!=typeof t||"object"!=typeof r)return!1;for(var n in t){if(!t.hasOwnProperty(n)||!r.hasOwnProperty(n))return!1;if(!e(t[n],r[n]))return!1}for(var i in r)if(!t.hasOwnProperty(i)||!r.hasOwnProperty(i))return!1;if(Array.isArray(t)||Array.isArray(r)){if(!Array.isArray(t)||!Array.isArray(r))return!1;if(t.length!==r.length)return!1;for(var s=0;s<t.length;s++)if(!e(t[s],r[s]))return!1}return!0}(r._lastJsonUser,e)&&(r._lastJsonUser=e,r._send({msg:"callback",id:t,args:[e]}))})},s.prototype.set=function(e){var t=e.url,r=e.value;return this._createRef(t).set(r)},s.prototype.update=function(e){var t=e.url,r=e.value;return this._createRef(t).update(r)},s.prototype.once=function(e){var t=this,r=e.url;return this._createRef(r).once("value").then(function(e){return t._snapshotToJson(e)})},s.prototype.on=function(e){var t=e.listenerKey,r=e.url,n=e.spec,i=e.eventType,s=e.callbackId,a=e.options;(a=a||{}).sync&&(a.branch=new f),a.cancel=this.off.bind(this,{listenerKey:t,url:r,spec:n,eventType:i,callbackId:s});var o=this._callbacks[s]=this._onSnapshotCallback.bind(this,s,a);o.listenerKey=t,o.eventType=i,o.cancel=a.cancel;var l=this._onCancelCallback.bind(this,s);this._createRef(r,n).on(i,o,l)},s.prototype.off=function(e){var t,r=e.listenerKey,n=e.url,i=e.spec,s=e.eventType,a=e.callbackId;if(a)t=this._callbacks[a],delete this._callbacks[a];else for(var o=0,l=Object.keys(this._callbacks);o<l.length;o+=1){var c,u=l[o];this._callbacks.hasOwnProperty(u)&&((c=this._callbacks[u]).listenerKey!==r||s&&c.eventType!==s||delete this._callbacks[u])}this._createRef(n,i).off(s,t)},s.prototype._onSnapshotCallback=function(t,r,e){if(r.sync&&r.rest){var n,i=decodeURIComponent(e.ref.toString().replace(/.*?:\/\/[^/]*/,"").replace(/\/$/,""));try{n=p(e.val())}catch(e){return r.cancel(),void this._onCancelCallback(t,e)}var s=r.branch.diff(n,i);for(var a in s)s.hasOwnProperty(a)&&this._send({msg:"callback",id:t,args:[null,{path:a,value:s[a],writeSerial:this._lastWriteSerial}]})}else try{var o=this._snapshotToJson(e);r.sync&&r.branch.set(o.value),this._send({msg:"callback",id:t,args:[null,o]}),r.rest=!0}catch(e){r.cancel(),this._onCancelCallback(t,e)}},s.prototype._onCancelCallback=function(e,t){delete this._callbacks[e],this._send({msg:"callback",id:e,args:[a(t)]})},s.prototype.transaction=function(e){var o,l,i=this,t=e.url,c=e.oldValue,u=e.relativeUpdates,s=decodeURIComponent(t.replace(/.*?:\/\/[^/]*/,"").replace(/\/$/,"")),r=this._createRef(t),h=new f;return r.transaction(function(e){if(l=void 0,e=p(e),(o=!function e(t,r){if(t===r)return!0;if(null==t&&null==r)return!0;if(null===t||null===r)return!1;if("object"!=typeof t||"object"!=typeof r)return!1;for(var n in t){if(!t.hasOwnProperty(n)||!r.hasOwnProperty(n))return!1;if(!e(t[n],r[n]))return!1}for(var i in r)if(!t.hasOwnProperty(i)||!r.hasOwnProperty(i))return!1;return!0}(e,c))&&(e=c),u)for(var t in u)if(u.hasOwnProperty(t))if(t){var r=t.split("/");null==e&&(e={});for(var n=e,i=0;i<r.length-1;i++){var s=r[i],a=n[s];null==a&&(a=n[s]={}),n=a}n[r[r.length-1]]=u[t]}else e=u[t];if(h.set(e),!o)return l=e}).then(function(e){var t=[],r=h.diff(p(e.snapshot.val()),s);for(var n in r)r.hasOwnProperty(n)&&t.push({path:n,value:r[n],writeSerial:e.writeSerial||i._lastWriteSerial});return{committed:!o,snapshots:t}},function(e){return"set"===e.message||"disconnect"===e.message?r.once("value").then(function(e){return{committed:!1,snapshots:[e],writeSerial:i._lastWriteSerial}}):(e.committedValue=l,Promise.reject(e))})},s.prototype._snapshotToJson=function(e){return{path:decodeURIComponent(e.ref.toString().replace(/.*?:\/\/[^/]*/,"").replace(/\/$/,"")),value:p(e.val()),writeSerial:this._lastWriteSerial}},s.prototype.onDisconnect=function(e){var t=e.url,r=e.method,n=e.value,i=this._createRef(t).onDisconnect();return i[r](n)},s.prototype._createRef=function(t,r){if(!this._app)throw new Error("Must provide Firebase configuration data first");try{var e=this._app.database().refFromURL(t);if(r){switch(r.by){case"$key":e=e.orderByKey();break;case"$value":e=e.orderByValue();break;default:e=e.orderByChild(r.by)}r.at?e=e.equalTo(r.at):r.from?e=e.startAt(r.from):r.to&&(e=e.endAt(r.to)),r.first?e=e.limitToFirst(r.first):r.last&&(e=e.limitToLast(r.last))}return e}catch(e){throw e.extra={url:t,spec:r},e}},s.expose=function(e,t){if(!(t=t||e.name))throw new Error("Cannot expose a function with no name: "+e);if(s._exposed.hasOwnProperty(t))throw new Error("Function "+t+"() already exposed");if(s._firstMessageReceived)throw new Error("Too late to expose function, worker in use");s._exposed[t]=e},s._exposed={},s._firstMessageReceived=!1,self.window=self,"undefined"!=typeof onconnect?self.onconnect=function(e){n.push(new s(e.ports[0]))}:n.push(new s(self)),self.localStorage.flushPending(),s});
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():(e="undefined"!=typeof globalThis?globalThis:e||self).Fireworker=t()}(this,function(){"use strict";function e(){this._items=[],this._pendingItems=[],this._initialized=!1,this._flushPending=this.flushPending.bind(this)}var a=[],n={},t={length:{configurable:!0}};e.prototype.init=function(e){this._initialized||(this._items=e,this._initialized=!0)},e.prototype._update=function(e){this._pendingItems.length||Promise.resolve().then(this._flushPending),this._pendingItems.push(e)},e.prototype.flushPending=function(){this._pendingItems.length&&(a.length?(a[0]._send({msg:"updateLocalStorage",items:this._pendingItems}),this._pendingItems=[]):setTimeout(this._flushPending,200))},t.length.get=function(){return this._items.length},e.prototype.key=function(e){return this._items[e].key},e.prototype.getItem=function(e){for(var t=0,r=this._items;t<r.length;t+=1){var a=r[t];if(a.key===e)return a.value}return null},e.prototype.setItem=function(e,t){for(var r,a=0,n=this._items;a<n.length;a+=1){var i=n[a];if(i.key===e){(r=i).value=t;break}}r||(r={key:e,value:t},this._items.push(r)),this._update(r)},e.prototype.removeItem=function(e){for(var t=0;t<this._items.length;t++)if(this._items[t].key===e){this._items.splice(t,1),this._update({key:e,value:null});break}},e.prototype.clear=function(){for(var e in this._items)this._update({key:e.key,value:null});this._items=[]},Object.defineProperties(e.prototype,t),self.localStorage=new e;function f(){this._root=null}f.prototype.set=function(e){this._root=e},f.prototype.diff=function(e,t){var r={},a="/"===t?[""]:t.split("/");return this._diffRecursively(this._root,e,a,r)&&(this._root=e,r[t]=e),r},f.prototype._diffRecursively=function(e,t,r,a){if(void 0===e&&(e=null),void 0===t&&(t=null),null===e)return null!==t;if(!(e instanceof Object&&t instanceof Object))return t!==e;var n=!0,i=[];for(var s in t){t.hasOwnProperty(s)&&(this._diffRecursively(e[s],t[s],r.concat(s),a)?i.push(s):n=!1)}if(n)return!0;for(var o in e)e.hasOwnProperty(o)&&!t.hasOwnProperty(o)&&(a[r.concat(o).join("/")]=null,delete e[o]);for(var l=0,c=i;l<c.length;l+=1){var u=c[l];a[r.concat(u).join("/")]=t[u],e[u]=t[u]}};function i(e){this._port=e,this._lastWriteSerial=0,this._app=void 0,this._cachedAuth=void 0,this._cachedDatabase=void 0,this._lastJsonUser=void 0,this._configError=void 0,this._callbacks={},this._messages=[],this._flushMessageQueue=this._flushMessageQueue.bind(this),e.onmessage=this._receive.bind(this)}var r={_auth:{configurable:!0},_database:{configurable:!0}};function s(e){for(var t={name:e.name,message:e.message},r=0,a=Object.getOwnPropertyNames(e);r<a.length;r+=1){var n=a[r];t[n]=e[n]}return t}function p(e){if(Array.isArray(e)){for(var t={},r=0;r<e.length;r++){var a=e[r];null!=a&&(t[r]=p(a))}return t}if(e instanceof Object)for(var n in e)e.hasOwnProperty(n)&&(e[n]=p(e[n]));return e}function o(e){if(!e)return Promise.resolve(e);var t=e.toJSON();return delete t.stsTokenManager,e.getIdTokenResult().then(function(e){return delete e.claims.exp,delete e.claims.iat,t.claims=e.claims,t})}return r._auth.get=function(){if(this._cachedAuth)return this._cachedAuth;if(!this._app)throw new Error("Must provide Firebase configuration data first");return this._cachedAuth=this._app.auth()},r._database.get=function(){if(this._cachedDatabase)return this._cachedDatabase;if(!this._app)throw new Error("Must provide Firebase configuration data first");return this._cachedDatabase=this._app.database(),i._databaseWrapperCallback&&(this._cachedDatabase=i._databaseWrapperCallback(this._cachedDatabase)),this._cachedDatabase},i.prototype.init=function(e){var t=e.storage,r=e.config;if(t&&self.localStorage.init(t),r)try{n[r.databaseURL]||(n[r.databaseURL]=firebase.initializeApp(r,r.databaseURL)),this._app=n[r.databaseURL],this._app.database(),this._app.auth(),this._configError=void 0}catch(e){throw this._configError=e}else if(this._configError)throw this._configError;return{exposedFunctionNames:Object.keys(i._exposed),version:"2.4.0",firebaseSdkVersion:firebase.SDK_VERSION}},i.prototype.destroy=function(){for(var e in this._callbacks){var t=this._callbacks[e];t.cancel&&t.cancel()}this._callbacks={},this._port.onmessage=null,this._messages=[];var r=a.indexOf(this);0<=r&&(a[r]=null)},i.prototype.enableFirebaseLogging=function(e){var t=e.value;firebase.database.enableLogging(t)},i.prototype.ping=function(){},i.prototype.bounceConnection=function(){this._database.goOffline(),this._database.goOnline()},i.prototype._receive=function(e){i._firstMessageReceived=!0;for(var t=0,r=e.data;t<r.length;t+=1){var a=r[t];this._receiveMessage(a)}},i.prototype._receiveMessage=function(t){var r,a=this;try{var e=this[t.msg];if("function"!=typeof e)throw new Error("Unknown message: "+t.msg);t.writeSerial&&(this._lastWriteSerial=Math.max(this._lastWriteSerial,t.writeSerial)),r=Promise.resolve(e.call(this,t))}catch(e){e.immediateFailure=!0,r=Promise.reject(e)}t.oneWay||r.then(function(e){a._send({msg:"resolve",id:t.id,result:e})},function(e){a._send({msg:"reject",id:t.id,error:s(e)})})},i.prototype._send=function(e){this._messages.length||Promise.resolve().then(this._flushMessageQueue),this._messages.push(e)},i.prototype._flushMessageQueue=function(){this._port.postMessage(this._messages),this._messages=[]},i.prototype.call=function(e){var t=e.name,r=e.args;try{return Promise.resolve(i._exposed[t].apply(null,r))}catch(e){return Promise.reject(e)}},i.prototype.authWithCustomToken=function(e){e.url;var t=e.authToken;return this._auth.signInWithCustomToken(t).then(function(e){return o(e.user)})},i.prototype.authAnonymously=function(e){e.url;return this._auth.signInAnonymously().then(function(e){return o(e.user)})},i.prototype.unauth=function(e){var a=this;e.url;return this._auth.signOut().catch(function(e){if(null!==a._auth.currentUser)return Promise.reject(e);for(var t in a._callbacks){var r;a._callbacks.hasOwnProperty(t)&&((r=a._callbacks[t]).auth&&r(null))}})},i.prototype.onAuth=function(e){e.url;var t=e.callbackId,r=this._callbacks[t]=this._onAuthCallback.bind(this,t);r.auth=!0,r.cancel=this._auth.onIdTokenChanged(r)},i.prototype._onAuthCallback=function(t,e){var r=this;o(e).then(function(e){!function e(t,r){if(t===r)return!0;if(null===t&&null===r||void 0===t&&void 0===r)return!0;if(null===t||null===r||void 0===t||void 0===r)return!1;if("object"!=typeof t||"object"!=typeof r)return!1;for(var a in t){if(!t.hasOwnProperty(a)||!r.hasOwnProperty(a))return!1;if(!e(t[a],r[a]))return!1}for(var n in r)if(!t.hasOwnProperty(n)||!r.hasOwnProperty(n))return!1;if(Array.isArray(t)||Array.isArray(r)){if(!Array.isArray(t)||!Array.isArray(r))return!1;if(t.length!==r.length)return!1;for(var i=0;i<t.length;i++)if(!e(t[i],r[i]))return!1}return!0}(r._lastJsonUser,e)&&(r._lastJsonUser=e,r._send({msg:"callback",id:t,args:[e]}))})},i.prototype.set=function(e){var t=e.url,r=e.value;return this._createRef(t).set(r)},i.prototype.update=function(e){var t=e.url,r=e.value;return this._createRef(t).update(r)},i.prototype.once=function(e){var t=this,r=e.url;return this._createRef(r).once("value").then(function(e){return t._snapshotToJson(e)})},i.prototype.on=function(e){var t=e.listenerKey,r=e.url,a=e.spec,n=e.eventType,i=e.callbackId,s=e.options;(s=s||{}).sync&&(s.branch=new f),s.cancel=this.off.bind(this,{listenerKey:t,url:r,spec:a,eventType:n,callbackId:i});var o=this._callbacks[i]=this._onSnapshotCallback.bind(this,i,s);o.listenerKey=t,o.eventType=n,o.cancel=s.cancel;var l=this._onCancelCallback.bind(this,i);this._createRef(r,a).on(n,o,l)},i.prototype.off=function(e){var t,r=e.listenerKey,a=e.url,n=e.spec,i=e.eventType,s=e.callbackId;if(s)t=this._callbacks[s],delete this._callbacks[s];else for(var o=0,l=Object.keys(this._callbacks);o<l.length;o+=1){var c,u=l[o];this._callbacks.hasOwnProperty(u)&&((c=this._callbacks[u]).listenerKey!==r||i&&c.eventType!==i||delete this._callbacks[u])}this._createRef(a,n).off(i,t)},i.prototype._onSnapshotCallback=function(t,r,e){if(r.sync&&r.rest){var a,n=decodeURIComponent(e.ref.toString().replace(/.*?:\/\/[^/]*/,"").replace(/\/$/,""));try{a=p(e.val())}catch(e){return r.cancel(),void this._onCancelCallback(t,e)}var i=r.branch.diff(a,n);for(var s in i)i.hasOwnProperty(s)&&this._send({msg:"callback",id:t,args:[null,{path:s,value:i[s],writeSerial:this._lastWriteSerial}]})}else try{var o=this._snapshotToJson(e);r.sync&&r.branch.set(o.value),this._send({msg:"callback",id:t,args:[null,o]}),r.rest=!0}catch(e){r.cancel(),this._onCancelCallback(t,e)}},i.prototype._onCancelCallback=function(e,t){delete this._callbacks[e],this._send({msg:"callback",id:e,args:[s(t)]})},i.prototype.transaction=function(e){var o,l,n=this,t=e.url,c=e.oldValue,u=e.relativeUpdates,i=decodeURIComponent(t.replace(/.*?:\/\/[^/]*/,"").replace(/\/$/,"")),r=this._createRef(t),h=new f;return r.transaction(function(e){if(l=void 0,e=p(e),(o=!function e(t,r){if(t===r)return!0;if(null==t&&null==r)return!0;if(null===t||null===r)return!1;if("object"!=typeof t||"object"!=typeof r)return!1;for(var a in t){if(!t.hasOwnProperty(a)||!r.hasOwnProperty(a))return!1;if(!e(t[a],r[a]))return!1}for(var n in r)if(!t.hasOwnProperty(n)||!r.hasOwnProperty(n))return!1;return!0}(e,c))&&(e=c),u)for(var t in u)if(u.hasOwnProperty(t))if(t){var r=t.split("/");null==e&&(e={});for(var a=e,n=0;n<r.length-1;n++){var i=r[n],s=a[i];null==s&&(s=a[i]={}),a=s}a[r[r.length-1]]=u[t]}else e=u[t];if(h.set(e),!o)return l=e}).then(function(e){var t=[],r=h.diff(p(e.snapshot.val()),i);for(var a in r)r.hasOwnProperty(a)&&t.push({path:a,value:r[a],writeSerial:e.writeSerial||n._lastWriteSerial});return{committed:!o,snapshots:t}},function(e){return"set"===e.message||"disconnect"===e.message?r.once("value").then(function(e){return{committed:!1,snapshots:[e],writeSerial:n._lastWriteSerial}}):(e.committedValue=l,Promise.reject(e))})},i.prototype._snapshotToJson=function(e){return{path:decodeURIComponent(e.ref.toString().replace(/.*?:\/\/[^/]*/,"").replace(/\/$/,"")),value:p(e.val()),writeSerial:this._lastWriteSerial}},i.prototype.onDisconnect=function(e){var t=e.url,r=e.method,a=e.value,n=this._createRef(t).onDisconnect();return n[r](a)},i.prototype._createRef=function(t,r){if(!this._app)throw new Error("Must provide Firebase configuration data first");try{var e=this._database.refFromURL(t);if(r){switch(r.by){case"$key":e=e.orderByKey();break;case"$value":e=e.orderByValue();break;default:e=e.orderByChild(r.by)}r.at?e=e.equalTo(r.at):r.from?e=e.startAt(r.from):r.to&&(e=e.endAt(r.to)),r.first?e=e.limitToFirst(r.first):r.last&&(e=e.limitToLast(r.last))}return e}catch(e){throw e.extra={url:t,spec:r},e}},i.expose=function(e,t){if(!(t=t||e.name))throw new Error("Cannot expose a function with no name: "+e);if(i._exposed.hasOwnProperty(t))throw new Error("Function "+t+"() already exposed");if(i._firstMessageReceived)throw new Error("Too late to expose function, worker in use");i._exposed[t]=e},i.setDatabaseWrapperCallback=function(e){if(i._databaseWrapperCallback)throw new Error("Database wrapper callback already set");if(i._firstMessageReceived)throw new Error("Too late to set database wrapper callback, worker in use");i._databaseWrapperCallback=e},Object.defineProperties(i.prototype,r),i._exposed={},i._firstMessageReceived=!1,i._databaseWrapperCallback=void 0,self.window=self,"undefined"!=typeof onconnect?self.onconnect=function(e){a.push(new i(e.ports[0]))}:a.push(new i(self)),self.localStorage.flushPending(),i});
2
2
  //# sourceMappingURL=worker.umd.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker.umd.min.js","sources":["../src/worker.js"],"names":["LocalStorage","this","_items","_pendingItems","_initialized","_flushPending","flushPending","bind","const","fireworkers","apps","init","items","_update","item","length","Promise","resolve","then","push","_send","msg","setTimeout","prototypeAccessors","get","key","n","getItem","i","list","value","setItem","let","targetItem","removeItem","splice","clear","self","localStorage","Branch","_root","set","diff","pathPrefix","updates","segments","split","_diffRecursively","oldValue","newValue","undefined","Object","replace","keysToReplace","childKey","hasOwnProperty","concat","join","Fireworker","port","_port","_lastWriteSerial","_lastJsonUser","_configError","_callbacks","_messages","_flushMessageQueue","onmessage","_receive","errorToJson","error","json","name","message","getOwnPropertyNames","propertyName","normalizeFirebaseValue","Array","isArray","normalValue","userToJson","user","toJSON","stsTokenManager","getIdTokenResult","result","claims","exp","iat","ref","storage","config","databaseURL","firebase","initializeApp","_app","database","auth","e","exposedFunctionNames","keys","_exposed","version","firebaseSdkVersion","SDK_VERSION","destroy","callback","cancel","k","indexOf","ping","bounceConnection","Error","goOffline","goOnline","event","_firstMessageReceived","data","_receiveMessage","promise","fn","writeSerial","Math","max","call","immediateFailure","reject","oneWay","id","postMessage","apply","args","authWithCustomToken","signInWithCustomToken","authToken","unauth","signOut","catch","currentUser","callbackId","onAuth","authCallback","_onAuthCallback","onIdTokenChanged","jsonUser","areEqualValues","a","b","_createRef","url","update","once","snapshot","_snapshotToJson","on","options","sync","branch","off","listenerKey","spec","eventType","snapshotCallback","_onSnapshotCallback","cancelCallback","_onCancelCallback","rest","path","decodeURIComponent","toString","val","childPath","snapshotJson","transaction","ref$1","stale","committedValue","transactionPath","areEqualNormalFirebaseValues","relativeUpdates","relativePath","object","child","snapshots","committed","onDisconnect","method","refFromURL","by","orderByKey","orderByValue","orderByChild","at","equalTo","from","startAt","to","endAt","first","limitToFirst","last","limitToLast","extra","expose","window","onconnect","ports"],"mappings":"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"}
1
+ {"version":3,"file":"worker.umd.min.js","sources":["../src/worker.js"],"names":["LocalStorage","this","_items","_pendingItems","_initialized","_flushPending","flushPending","bind","const","fireworkers","apps","init","items","_update","item","length","Promise","resolve","then","push","_send","msg","setTimeout","prototypeAccessors","get","key","n","getItem","i","list","value","setItem","let","targetItem","removeItem","splice","clear","self","localStorage","Branch","_root","set","diff","pathPrefix","updates","segments","split","_diffRecursively","oldValue","newValue","undefined","Object","replace","keysToReplace","childKey","hasOwnProperty","concat","join","Fireworker","port","_port","_lastWriteSerial","_app","_cachedAuth","_cachedDatabase","_lastJsonUser","_configError","_callbacks","_messages","_flushMessageQueue","onmessage","_receive","errorToJson","error","json","name","message","getOwnPropertyNames","propertyName","normalizeFirebaseValue","Array","isArray","normalValue","userToJson","user","toJSON","stsTokenManager","getIdTokenResult","result","claims","exp","iat","prototypeAccessors$1","_auth","Error","auth","_database","database","_databaseWrapperCallback","ref","storage","config","databaseURL","firebase","initializeApp","e","exposedFunctionNames","keys","_exposed","version","firebaseSdkVersion","SDK_VERSION","destroy","callback","cancel","k","indexOf","enableFirebaseLogging","enableLogging","ping","bounceConnection","goOffline","goOnline","event","_firstMessageReceived","data","_receiveMessage","promise","fn","writeSerial","Math","max","call","immediateFailure","reject","oneWay","id","postMessage","apply","args","authWithCustomToken","signInWithCustomToken","authToken","authAnonymously","signInAnonymously","unauth","signOut","catch","currentUser","callbackId","onAuth","authCallback","_onAuthCallback","onIdTokenChanged","jsonUser","areEqualValues","a","b","_createRef","url","update","once","snapshot","_snapshotToJson","on","options","sync","branch","off","listenerKey","spec","eventType","snapshotCallback","_onSnapshotCallback","cancelCallback","_onCancelCallback","rest","path","decodeURIComponent","toString","val","childPath","snapshotJson","transaction","ref$1","stale","committedValue","transactionPath","areEqualNormalFirebaseValues","relativeUpdates","relativePath","object","child","snapshots","committed","onDisconnect","method","refFromURL","by","orderByKey","orderByValue","orderByChild","at","equalTo","from","startAt","to","endAt","first","limitToFirst","last","limitToLast","extra","expose","setDatabaseWrapperCallback","window","onconnect","ports"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "firetruss-worker",
3
- "version": "2.1.0",
3
+ "version": "2.4.0",
4
4
  "description": "Web worker component for pkaminski/firetruss",
5
5
  "scripts": {
6
6
  "setup": "rm -rf bower_components; rm -rf node_modules; npm install; bower install;",
@@ -47,7 +47,7 @@
47
47
  "testdouble": "3"
48
48
  },
49
49
  "peerDependencies": {
50
- "firebase": "5.x || 6.x || 7.x"
50
+ "firebase": "5.x || 6.x || 7.x || 8.x || 9.x"
51
51
  },
52
52
  "ava": {
53
53
  "files": [
package/src/worker.js CHANGED
@@ -3,7 +3,7 @@
3
3
  const fireworkers = [];
4
4
  const apps = {};
5
5
  // This version is filled in by the build, don't reformat the line.
6
- const VERSION = '2.1.0';
6
+ const VERSION = '2.4.0';
7
7
 
8
8
 
9
9
  class LocalStorage {
@@ -143,6 +143,9 @@ export default class Fireworker {
143
143
  constructor(port) {
144
144
  this._port = port;
145
145
  this._lastWriteSerial = 0;
146
+ this._app = undefined;
147
+ this._cachedAuth = undefined;
148
+ this._cachedDatabase = undefined;
146
149
  this._lastJsonUser = undefined;
147
150
  this._configError = undefined;
148
151
  this._callbacks = {};
@@ -151,6 +154,22 @@ export default class Fireworker {
151
154
  port.onmessage = this._receive.bind(this);
152
155
  }
153
156
 
157
+ get _auth() {
158
+ if (this._cachedAuth) return this._cachedAuth;
159
+ if (!this._app) throw new Error('Must provide Firebase configuration data first');
160
+ return this._cachedAuth = this._app.auth();
161
+ }
162
+
163
+ get _database() {
164
+ if (this._cachedDatabase) return this._cachedDatabase;
165
+ if (!this._app) throw new Error('Must provide Firebase configuration data first');
166
+ this._cachedDatabase = this._app.database();
167
+ if (Fireworker._databaseWrapperCallback) {
168
+ this._cachedDatabase = Fireworker._databaseWrapperCallback(this._cachedDatabase);
169
+ }
170
+ return this._cachedDatabase;
171
+ }
172
+
154
173
  init({storage, config}) {
155
174
  if (storage) self.localStorage.init(storage);
156
175
  if (config) {
@@ -188,14 +207,17 @@ export default class Fireworker {
188
207
  if (k >= 0) fireworkers[k] = null;
189
208
  }
190
209
 
210
+ enableFirebaseLogging({value}) {
211
+ firebase.database.enableLogging(value);
212
+ }
213
+
191
214
  ping() {
192
215
  // Noop, placeholder for legacy Firetruss clients.
193
216
  }
194
217
 
195
218
  bounceConnection() {
196
- if (!this._app) throw new Error('Must provide Firebase configuration data first');
197
- this._app.database().goOffline();
198
- this._app.database().goOnline();
219
+ this._database.goOffline();
220
+ this._database.goOnline();
199
221
  }
200
222
 
201
223
  _receive(event) {
@@ -244,15 +266,20 @@ export default class Fireworker {
244
266
  }
245
267
 
246
268
  authWithCustomToken({url, authToken}) {
247
- return this._app.auth().signInWithCustomToken(authToken)
269
+ return this._auth.signInWithCustomToken(authToken)
270
+ .then(result => userToJson(result.user));
271
+ }
272
+
273
+ authAnonymously({url}) {
274
+ return this._auth.signInAnonymously()
248
275
  .then(result => userToJson(result.user));
249
276
  }
250
277
 
251
278
  unauth({url}) {
252
- return this._app.auth().signOut().catch(e => {
279
+ return this._auth.signOut().catch(e => {
253
280
  // We can ignore the error if the user is signed out anyway, but make sure to notify all
254
281
  // authCallbacks otherwise we end up in a bogus state!
255
- if (this._app.auth().currentUser === null) {
282
+ if (this._auth.currentUser === null) {
256
283
  for (const callbackId in this._callbacks) {
257
284
  if (!this._callbacks.hasOwnProperty(callbackId)) continue;
258
285
  const callback = this._callbacks[callbackId];
@@ -267,7 +294,7 @@ export default class Fireworker {
267
294
  onAuth({url, callbackId}) {
268
295
  const authCallback = this._callbacks[callbackId] = this._onAuthCallback.bind(this, callbackId);
269
296
  authCallback.auth = true;
270
- authCallback.cancel = this._app.auth().onIdTokenChanged(authCallback);
297
+ authCallback.cancel = this._auth.onIdTokenChanged(authCallback);
271
298
  }
272
299
 
273
300
  _onAuthCallback(callbackId, user) {
@@ -434,7 +461,7 @@ export default class Fireworker {
434
461
  _createRef(url, spec) {
435
462
  if (!this._app) throw new Error('Must provide Firebase configuration data first');
436
463
  try {
437
- let ref = this._app.database().refFromURL(url);
464
+ let ref = this._database.refFromURL(url);
438
465
  if (spec) {
439
466
  switch (spec.by) {
440
467
  case '$key': ref = ref.orderByKey(); break;
@@ -465,10 +492,21 @@ export default class Fireworker {
465
492
  }
466
493
  Fireworker._exposed[name] = fn;
467
494
  }
495
+
496
+ static setDatabaseWrapperCallback(fn) {
497
+ if (Fireworker._databaseWrapperCallback) {
498
+ throw new Error(`Database wrapper callback already set`);
499
+ }
500
+ if (Fireworker._firstMessageReceived) {
501
+ throw new Error('Too late to set database wrapper callback, worker in use');
502
+ }
503
+ Fireworker._databaseWrapperCallback = fn;
504
+ }
468
505
  }
469
506
 
470
507
  Fireworker._exposed = {};
471
508
  Fireworker._firstMessageReceived = false;
509
+ Fireworker._databaseWrapperCallback = undefined;
472
510
 
473
511
  function errorToJson(error) {
474
512
  const json = {name: error.name, message: error.message};