aboutsummaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
Diffstat (limited to 'ext')
-rw-r--r--ext/css/settings.css10
-rw-r--r--ext/js/pages/settings/backup-controller.js130
-rw-r--r--ext/legal.html418
-rw-r--r--ext/lib/dexie-export-import.min.js271
-rw-r--r--ext/lib/dexie-export-import.min.js.map1
-rw-r--r--ext/lib/dexie.min.js2
-rw-r--r--ext/lib/dexie.min.js.map1
-rw-r--r--ext/settings.html63
-rw-r--r--ext/welcome.html10
9 files changed, 903 insertions, 3 deletions
diff --git a/ext/css/settings.css b/ext/css/settings.css
index 33fbc22c..eaebc3af 100644
--- a/ext/css/settings.css
+++ b/ext/css/settings.css
@@ -680,6 +680,16 @@ select.short-height {
padding-top: var(--padding);
padding-right: var(--padding);
}
+.settings-item-progress-report {
+ display: none;
+ font-weight: bold;
+ color: #4169e1;
+}
+.settings-item-error-report {
+ display: none;
+ font-weight: bold;
+ color: #8b0000;
+}
/* Advanced settings */
diff --git a/ext/js/pages/settings/backup-controller.js b/ext/js/pages/settings/backup-controller.js
index b4de01bf..bd089fb1 100644
--- a/ext/js/pages/settings/backup-controller.js
+++ b/ext/js/pages/settings/backup-controller.js
@@ -18,6 +18,7 @@
/* global
* ArrayBufferUtil
+ * Dexie
* DictionaryController
* OptionsUtil
*/
@@ -33,6 +34,10 @@ class BackupController {
this._settingsImportErrorModal = null;
this._settingsImportWarningModal = null;
this._optionsUtil = null;
+
+ this._dictionariesDatabaseName = 'dict';
+ this._settingsExportDatabaseToken = null;
+
try {
this._optionsUtil = new OptionsUtil();
} catch (e) {
@@ -56,6 +61,10 @@ class BackupController {
this._addNodeEventListener('#settings-import-file', 'change', this._onSettingsImportFileChange.bind(this), false);
this._addNodeEventListener('#settings-reset-button', 'click', this._onSettingsResetClick.bind(this), false);
this._addNodeEventListener('#settings-reset-confirm-button', 'click', this._onSettingsResetConfirmClick.bind(this), false);
+
+ this._addNodeEventListener('#settings-export-db-button', 'click', this._onSettingsExportDatabaseClick.bind(this), false);
+ this._addNodeEventListener('#settings-import-db-button', 'click', this._onSettingsImportDatabaseClick.bind(this), false);
+ this._addNodeEventListener('#settings-import-db', 'change', this._onSettingsImportDatabaseChange.bind(this), false);
}
// Private
@@ -413,4 +422,125 @@ class BackupController {
log.error(e);
}
}
+
+ // Exporting Dictionaries Database
+
+ _databaseExportImportErrorMessage(message, isWarning=false) {
+ const errorMessageContainer = document.querySelector('#db-ops-error-report');
+ errorMessageContainer.style.display = 'block';
+ errorMessageContainer.textContent = message;
+
+ if (isWarning) { // Hide after 5 seconds (5000 milliseconds)
+ errorMessageContainer.style.color = '#FFC40C';
+ setTimeout(function _hideWarningMessage() {
+ errorMessageContainer.style.display = 'none';
+ errorMessageContainer.style.color = '#8B0000';
+ }, 5000);
+ }
+ }
+
+ _databaseExportProgressCallback({totalRows, completedRows, done}) {
+ console.log(`Progress: ${completedRows} of ${totalRows} rows completed`);
+ const messageContainer = document.querySelector('#db-ops-progress-report');
+ messageContainer.style.display = 'block';
+ messageContainer.textContent = `Export Progress: ${completedRows} of ${totalRows} rows completed`;
+
+ if (done) {
+ console.log('Done exporting.');
+ messageContainer.style.display = 'none';
+ }
+ }
+
+ async _exportDatabase(databaseName) {
+ const db = await new Dexie(databaseName).open();
+ const blob = await db.export({progressCallback: this._databaseExportProgressCallback});
+ await db.close();
+ return blob;
+ }
+
+ async _onSettingsExportDatabaseClick() {
+ if (this._settingsExportDatabaseToken !== null) {
+ // An existing import or export is in progress.
+ this._databaseExportImportErrorMessage('An export or import operation is already in progress. Please wait till it is over.', true);
+ return;
+ }
+
+ const errorMessageContainer = document.querySelector('#db-ops-error-report');
+ errorMessageContainer.style.display = 'none';
+
+ const date = new Date(Date.now());
+ const pageExitPrevention = this._settingsController.preventPageExit();
+ try {
+ const token = {};
+ this._settingsExportDatabaseToken = token;
+ const fileName = `yomitan-dictionaries-${this._getSettingsExportDateString(date, '-', '-', '-', 6)}.json`;
+ const data = await this._exportDatabase(this._dictionariesDatabaseName);
+ const blob = new Blob([data], {type: 'application/json'});
+ this._saveBlob(blob, fileName);
+ } catch (error) {
+ console.log(error);
+ this._databaseExportImportErrorMessage('Errors encountered while exporting. Please try again. Restart the browser if it continues to fail.');
+ } finally {
+ pageExitPrevention.end();
+ this._settingsExportDatabaseToken = null;
+ }
+ }
+
+ // Importing Dictionaries Database
+
+ _databaseImportProgressCallback({totalRows, completedRows, done}) {
+ console.log(`Progress: ${completedRows} of ${totalRows} rows completed`);
+ const messageContainer = document.querySelector('#db-ops-progress-report');
+ messageContainer.style.display = 'block';
+ messageContainer.style.color = '#4169e1';
+ messageContainer.textContent = `Import Progress: ${completedRows} of ${totalRows} rows completed`;
+
+ if (done) {
+ console.log('Done importing.');
+ messageContainer.style.color = '#006633';
+ messageContainer.textContent = 'Done importing. You will need to re-enable the dictionaries and refresh afterward. If you run into issues, please restart the browser. If it continues to fail, reinstall Yomitan and import dictionaries one-by-one.';
+ }
+ }
+
+ async _importDatabase(databaseName, file) {
+ await yomichan.api.purgeDatabase();
+ await Dexie.import(file, {progressCallback: this._databaseImportProgressCallback});
+ yomichan.api.triggerDatabaseUpdated('dictionary', 'import');
+ yomichan.trigger('storageChanged');
+ }
+
+ _onSettingsImportDatabaseClick() {
+ document.querySelector('#settings-import-db').click();
+ }
+
+ async _onSettingsImportDatabaseChange(e) {
+ if (this._settingsExportDatabaseToken !== null) {
+ // An existing import or export is in progress.
+ this._databaseExportImportErrorMessage('An export or import operation is already in progress. Please wait till it is over.', true);
+ return;
+ }
+
+ const errorMessageContainer = document.querySelector('#db-ops-error-report');
+ errorMessageContainer.style.display = 'none';
+
+ const files = e.target.files;
+ if (files.length === 0) { return; }
+
+ const pageExitPrevention = this._settingsController.preventPageExit();
+ const file = files[0];
+ e.target.value = null;
+ try {
+ const token = {};
+ this._settingsExportDatabaseToken = token;
+ await this._importDatabase(this._dictionariesDatabaseName, file);
+ } catch (error) {
+ console.log(error);
+ const messageContainer = document.querySelector('#db-ops-progress-report');
+ messageContainer.style.color = 'red';
+ this._databaseExportImportErrorMessage('Encountered errors when importing. Please restart the browser and try again. If it continues to fail, reinstall Yomitan and import dictionaries one-by-one.');
+ } finally {
+ pageExitPrevention.end();
+ this._settingsExportDatabaseToken = null;
+ }
+ }
}
diff --git a/ext/legal.html b/ext/legal.html
index 4b2fe1a2..52ad28af 100644
--- a/ext/legal.html
+++ b/ext/legal.html
@@ -119,6 +119,424 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
</pre>
</div></div></div></div></div>
+ <h2><a href="https://unpkg.com/browse/dexie@3.2.4/LICENSE" target="_blank" rel="noopener noreferrer">Dexie 3.2.4</a></h2>
+ <div class="settings-group"><div class="settings-item"><div class="settings-item-inner"><div class="settings-item-left"><div class="settings-item-label">
+<pre>
+Copyright (c) 2014-2023 David Fahlander (david.fahlander@gmail.com, https://github.com/dfahlander)
+
+Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "{}"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright {yyyy} {name of copyright owner}
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+</pre>
+ </div></div></div></div></div>
+
+ <h2><a href="https://unpkg.com/browse/dexie-export-import@4.0.7/LICENSE" target="_blank" rel="noopener noreferrer">DexieExportImport 4.0.7</a></h2>
+ <div class="settings-group"><div class="settings-item"><div class="settings-item-inner"><div class="settings-item-left"><div class="settings-item-label">
+<pre>
+Copyright (c) 2020-2023 David Fahlander (david.fahlander@gmail.com, https://github.com/dfahlander)
+
+Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "{}"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright {yyyy} {name of copyright owner}
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+</pre>
+ </div></div></div></div></div>
+
<div data-show-for-manifest-version="3">
<h2><a href="https://github.com/inikulin/parse5/blob/v7.1.2/LICENSE" target="_blank" rel="noopener noreferrer">parse5 v7.1.2</a></h2>
<div class="settings-group"><div class="settings-item"><div class="settings-item-inner"><div class="settings-item-left"><div class="settings-item-label">
diff --git a/ext/lib/dexie-export-import.min.js b/ext/lib/dexie-export-import.min.js
new file mode 100644
index 00000000..684f702d
--- /dev/null
+++ b/ext/lib/dexie-export-import.min.js
@@ -0,0 +1,271 @@
+(function(global,factory){typeof exports==='object'&&typeof module!=='undefined'?factory(exports,require('dexie')):typeof define==='function'&&define.amd?define(['exports','dexie'],factory):(global=typeof globalThis!=='undefined'?globalThis:global||self,factory(global.DexieExportImport={},global.Dexie))})(this,(function(exports,Dexie){'use strict';function _interopDefaultLegacy(e){return e&&typeof e==='object'&&'default' in e?e:{'default':e}}
+ var Dexie__default=_interopDefaultLegacy(Dexie);/*! *****************************************************************************
+ Copyright (c) Microsoft Corporation.
+
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+ ***************************************************************************** */
+ function __awaiter(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve){resolve(value)})}
+ return new(P||(P=Promise))(function(resolve,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}
+ function rejected(value){try{step(generator["throw"](value))}catch(e){reject(e)}}
+ function step(result){result.done?resolve(result.value):adopt(result.value).then(fulfilled,rejected)}
+ step((generator=generator.apply(thisArg,_arguments||[])).next())})}
+ function __generator(thisArg,body){var _={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},f,y,t,g;return g={next:verb(0),"throw":verb(1),"return":verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}
+ function step(op){if(f)throw new TypeError("Generator is already executing.");while(_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:!1};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}
+ if(op[0]===3&&(!t||(op[1]>t[0]&&op[1]<t[3]))){_.label=op[1];break}
+ if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}
+ if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}
+ if(t[2])_.ops.pop();_.trys.pop();continue}
+ op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}
+ if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:!0}}}
+ function getSchemaString(table){var primKeyAndIndexes=[table.schema.primKey].concat(table.schema.indexes);return primKeyAndIndexes.map(function(index){return index.src}).join(',')}
+ function extractDbSchema(exportedDb){var schema={};for(var _i=0,_a=exportedDb.tables;_i<_a.length;_i++){var table=_a[_i];schema[table.name]=table.schema}
+ return schema}
+ function readBlobAsync(blob,type){return new Promise(function(resolve,reject){var reader=new FileReader();reader.onabort=function(ev){return reject(new Error("file read aborted"))};reader.onerror=function(ev){return reject(ev.target.error)};reader.onload=function(ev){return resolve(ev.target.result)};if(type==='binary')
+ reader.readAsArrayBuffer(blob);else reader.readAsText(blob)})}
+ function readBlobSync(blob,type){if(typeof FileReaderSync==='undefined'){throw new Error('FileReaderSync missing. Reading blobs synchronously requires code to run from within a web worker. Use TSON.encapsulateAsync() to do it from the main thread.')}
+ var reader=new FileReaderSync();var data=type==='binary'?reader.readAsArrayBuffer(blob):reader.readAsText(blob);return data}
+ var commonjsGlobal=typeof globalThis!=='undefined'?globalThis:typeof window!=='undefined'?window:typeof global!=='undefined'?global:typeof self!=='undefined'?self:{};function createCommonjsModule(fn,module){return module={exports:{}},fn(module,module.exports),module.exports}
+ var typeson=createCommonjsModule(function(module,exports){(function(global,factory){module.exports=factory()}(commonjsGlobal,(function(){function _typeof(obj){if(typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"){_typeof=function(obj){return typeof obj}}else{_typeof=function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj}}
+ return _typeof(obj)}
+ function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}
+ if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}
+ function _asyncToGenerator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}
+ function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}
+ _next(undefined)})}}
+ function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}
+ function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||!1;descriptor.configurable=!0;if("value" in descriptor)descriptor.writable=!0;Object.defineProperty(target,descriptor.key,descriptor)}}
+ function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor}
+ function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0})}else{obj[key]=value}
+ return obj}
+ function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly)symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable});keys.push.apply(keys,symbols)}
+ return keys}
+ function _objectSpread2(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};if(i%2){ownKeys(Object(source),!0).forEach(function(key){_defineProperty(target,key,source[key])})}else if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source))}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))})}}
+ return target}
+ function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_nonIterableRest()}
+ function _toConsumableArray(arr){return _arrayWithoutHoles(arr)||_iterableToArray(arr)||_nonIterableSpread()}
+ function _arrayWithoutHoles(arr){if(Array.isArray(arr)){for(var i=0,arr2=new Array(arr.length);i<arr.length;i++)arr2[i]=arr[i];return arr2}}
+ function _arrayWithHoles(arr){if(Array.isArray(arr))return arr}
+ function _iterableToArray(iter){if(Symbol.iterator in Object(iter)||Object.prototype.toString.call(iter)==="[object Arguments]")return Array.from(iter)}
+ function _iterableToArrayLimit(arr,i){if(!(Symbol.iterator in Object(arr)||Object.prototype.toString.call(arr)==="[object Arguments]")){return}
+ var _arr=[];var _n=!0;var _d=!1;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=!0){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=!0;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}
+ return _arr}
+ function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance")}
+ function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}
+ var TypesonPromise=function TypesonPromise(f){_classCallCheck(this,TypesonPromise);this.p=new Promise(f)};TypesonPromise.__typeson__type__='TypesonPromise';if(typeof Symbol!=='undefined'){TypesonPromise.prototype[Symbol.toStringTag]='TypesonPromise'}
+ TypesonPromise.prototype.then=function(onFulfilled,onRejected){var _this=this;return new TypesonPromise(function(typesonResolve,typesonReject){_this.p.then(function(res){typesonResolve(onFulfilled?onFulfilled(res):res)})["catch"](function(res){return onRejected?onRejected(res):Promise.reject(res)}).then(typesonResolve,typesonReject)})};TypesonPromise.prototype["catch"]=function(onRejected){return this.then(null,onRejected)};TypesonPromise.resolve=function(v){return new TypesonPromise(function(typesonResolve){typesonResolve(v)})};TypesonPromise.reject=function(v){return new TypesonPromise(function(typesonResolve,typesonReject){typesonReject(v)})};['all','race'].forEach(function(meth){TypesonPromise[meth]=function(promArr){return new TypesonPromise(function(typesonResolve,typesonReject){Promise[meth](promArr.map(function(prom){return prom&&prom.constructor&&prom.constructor.__typeson__type__==='TypesonPromise'?prom.p:prom})).then(typesonResolve,typesonReject)})}});var _ref={},toStr=_ref.toString,hasOwn={}.hasOwnProperty,getProto=Object.getPrototypeOf,fnToString=hasOwn.toString;function isThenable(v,catchCheck){return isObject(v)&&typeof v.then==='function'&&(!catchCheck||typeof v["catch"]==='function')}
+ function toStringTag(val){return toStr.call(val).slice(8,-1)}
+ function hasConstructorOf(a,b){if(!a||_typeof(a)!=='object'){return!1}
+ var proto=getProto(a);if(!proto){return b===null}
+ var Ctor=hasOwn.call(proto,'constructor')&&proto.constructor;if(typeof Ctor!=='function'){return b===null}
+ if(b===Ctor){return!0}
+ if(b!==null&&fnToString.call(Ctor)===fnToString.call(b)){return!0}
+ if(typeof b==='function'&&typeof Ctor.__typeson__type__==='string'&&Ctor.__typeson__type__===b.__typeson__type__){return!0}
+ return!1}
+ function isPlainObject(val){if(!val||toStringTag(val)!=='Object'){return!1}
+ var proto=getProto(val);if(!proto){return!0}
+ return hasConstructorOf(val,Object)}
+ function isUserObject(val){if(!val||toStringTag(val)!=='Object'){return!1}
+ var proto=getProto(val);if(!proto){return!0}
+ return hasConstructorOf(val,Object)||isUserObject(proto)}
+ function isObject(v){return v&&_typeof(v)==='object'}
+ function escapeKeyPathComponent(keyPathComponent){return keyPathComponent.replace(/~/g,'~0').replace(/\./g,'~1')}
+ function unescapeKeyPathComponent(keyPathComponent){return keyPathComponent.replace(/~1/g,'.').replace(/~0/g,'~')}
+ function getByKeyPath(obj,keyPath){if(keyPath===''){return obj}
+ var period=keyPath.indexOf('.');if(period>-1){var innerObj=obj[unescapeKeyPathComponent(keyPath.slice(0,period))];return innerObj===undefined?undefined:getByKeyPath(innerObj,keyPath.slice(period+1))}
+ return obj[unescapeKeyPathComponent(keyPath)]}
+ function setAtKeyPath(obj,keyPath,value){if(keyPath===''){return value}
+ var period=keyPath.indexOf('.');if(period>-1){var innerObj=obj[unescapeKeyPathComponent(keyPath.slice(0,period))];return setAtKeyPath(innerObj,keyPath.slice(period+1),value)}
+ obj[unescapeKeyPathComponent(keyPath)]=value;return obj}
+ function getJSONType(value){return value===null?'null':Array.isArray(value)?'array':_typeof(value)}
+ var keys=Object.keys,isArray=Array.isArray,hasOwn$1={}.hasOwnProperty,internalStateObjPropsToIgnore=['type','replaced','iterateIn','iterateUnsetNumeric'];function nestedPathsFirst(a,b){if(a.keypath===''){return-1}
+ var as=a.keypath.match(/\./g)||0;var bs=b.keypath.match(/\./g)||0;if(as){as=as.length}
+ if(bs){bs=bs.length}
+ return as>bs?-1:as<bs?1:a.keypath<b.keypath?-1:a.keypath>b.keypath}
+ var Typeson=function(){function Typeson(options){_classCallCheck(this,Typeson);this.options=options;this.plainObjectReplacers=[];this.nonplainObjectReplacers=[];this.revivers={};this.types={}}
+ _createClass(Typeson,[{key:"stringify",value:function stringify(obj,replacer,space,opts){opts=_objectSpread2({},this.options,{},opts,{stringification:!0});var encapsulated=this.encapsulate(obj,null,opts);if(isArray(encapsulated)){return JSON.stringify(encapsulated[0],replacer,space)}
+ return encapsulated.then(function(res){return JSON.stringify(res,replacer,space)})}},{key:"stringifySync",value:function stringifySync(obj,replacer,space,opts){return this.stringify(obj,replacer,space,_objectSpread2({throwOnBadSyncType:!0},opts,{sync:!0}))}},{key:"stringifyAsync",value:function stringifyAsync(obj,replacer,space,opts){return this.stringify(obj,replacer,space,_objectSpread2({throwOnBadSyncType:!0},opts,{sync:!1}))}},{key:"parse",value:function parse(text,reviver,opts){opts=_objectSpread2({},this.options,{},opts,{parse:!0});return this.revive(JSON.parse(text,reviver),opts)}},{key:"parseSync",value:function parseSync(text,reviver,opts){return this.parse(text,reviver,_objectSpread2({throwOnBadSyncType:!0},opts,{sync:!0}))}},{key:"parseAsync",value:function parseAsync(text,reviver,opts){return this.parse(text,reviver,_objectSpread2({throwOnBadSyncType:!0},opts,{sync:!1}))}},{key:"specialTypeNames",value:function specialTypeNames(obj,stateObj){var opts=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};opts.returnTypeNames=!0;return this.encapsulate(obj,stateObj,opts)}},{key:"rootTypeName",value:function rootTypeName(obj,stateObj){var opts=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};opts.iterateNone=!0;return this.encapsulate(obj,stateObj,opts)}},{key:"encapsulate",value:function encapsulate(obj,stateObj,opts){opts=_objectSpread2({sync:!0},this.options,{},opts);var _opts=opts,sync=_opts.sync;var that=this,types={},refObjs=[],refKeys=[],promisesDataRoot=[];var cyclic='cyclic' in opts?opts.cyclic:!0;var _opts2=opts,encapsulateObserver=_opts2.encapsulateObserver;var ret=_encapsulate('',obj,cyclic,stateObj||{},promisesDataRoot);function finish(ret){var typeNames=Object.values(types);if(opts.iterateNone){if(typeNames.length){return typeNames[0]}
+ return Typeson.getJSONType(ret)}
+ if(typeNames.length){if(opts.returnTypeNames){return _toConsumableArray(new Set(typeNames))}
+ if(!ret||!isPlainObject(ret)||hasOwn$1.call(ret,'$types')){ret={$:ret,$types:{$:types}}}else{ret.$types=types}}else if(isObject(ret)&&hasOwn$1.call(ret,'$types')){ret={$:ret,$types:!0}}
+ if(opts.returnTypeNames){return!1}
+ return ret}
+ function checkPromises(_x,_x2){return _checkPromises.apply(this,arguments)}
+ function _checkPromises(){_checkPromises=_asyncToGenerator(regeneratorRuntime.mark(function _callee2(ret,promisesData){var promResults;return regeneratorRuntime.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:_context2.next=2;return Promise.all(promisesData.map(function(pd){return pd[1].p}));case 2:promResults=_context2.sent;_context2.next=5;return Promise.all(promResults.map(function(){var _ref=_asyncToGenerator(regeneratorRuntime.mark(function _callee(promResult){var newPromisesData,_promisesData$splice,_promisesData$splice2,prData,_prData,keyPath,cyclic,stateObj,parentObj,key,detectedType,encaps,isTypesonPromise,encaps2;return regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:newPromisesData=[];_promisesData$splice=promisesData.splice(0,1),_promisesData$splice2=_slicedToArray(_promisesData$splice,1),prData=_promisesData$splice2[0];_prData=_slicedToArray(prData,7),keyPath=_prData[0],cyclic=_prData[2],stateObj=_prData[3],parentObj=_prData[4],key=_prData[5],detectedType=_prData[6];encaps=_encapsulate(keyPath,promResult,cyclic,stateObj,newPromisesData,!0,detectedType);isTypesonPromise=hasConstructorOf(encaps,TypesonPromise);if(!(keyPath&&isTypesonPromise)){_context.next=11;break}
+ _context.next=8;return encaps.p;case 8:encaps2=_context.sent;parentObj[key]=encaps2;return _context.abrupt("return",checkPromises(ret,newPromisesData));case 11:if(keyPath){parentObj[key]=encaps}else if(isTypesonPromise){ret=encaps.p}else{ret=encaps}
+ return _context.abrupt("return",checkPromises(ret,newPromisesData));case 13:case "end":return _context.stop()}}},_callee)}));return function(_x3){return _ref.apply(this,arguments)}}()));case 5:return _context2.abrupt("return",ret);case 6:case "end":return _context2.stop()}}},_callee2)}));return _checkPromises.apply(this,arguments)}
+ function _adaptBuiltinStateObjectProperties(stateObj,ownKeysObj,cb){Object.assign(stateObj,ownKeysObj);var vals=internalStateObjPropsToIgnore.map(function(prop){var tmp=stateObj[prop];delete stateObj[prop];return tmp});cb();internalStateObjPropsToIgnore.forEach(function(prop,i){stateObj[prop]=vals[i]})}
+ function _encapsulate(keypath,value,cyclic,stateObj,promisesData,resolvingTypesonPromise,detectedType){var ret;var observerData={};var $typeof=_typeof(value);var runObserver=encapsulateObserver?function(obj){var type=detectedType||stateObj.type||Typeson.getJSONType(value);encapsulateObserver(Object.assign(obj||observerData,{keypath:keypath,value:value,cyclic:cyclic,stateObj:stateObj,promisesData:promisesData,resolvingTypesonPromise:resolvingTypesonPromise,awaitingTypesonPromise:hasConstructorOf(value,TypesonPromise)},{type:type}))}:null;if(['string','boolean','number','undefined'].includes($typeof)){if(value===undefined||$typeof==='number'&&(isNaN(value)||value===-Infinity||value===Infinity)){if(stateObj.replaced){ret=value}else{ret=replace(keypath,value,stateObj,promisesData,!1,resolvingTypesonPromise,runObserver)}
+ if(ret!==value){observerData={replaced:ret}}}else{ret=value}
+ if(runObserver){runObserver()}
+ return ret}
+ if(value===null){if(runObserver){runObserver()}
+ return value}
+ if(cyclic&&!stateObj.iterateIn&&!stateObj.iterateUnsetNumeric&&value&&_typeof(value)==='object'){var refIndex=refObjs.indexOf(value);if(refIndex<0){if(cyclic===!0){refObjs.push(value);refKeys.push(keypath)}}else{types[keypath]='#';if(runObserver){runObserver({cyclicKeypath:refKeys[refIndex]})}
+ return'#'+refKeys[refIndex]}}
+ var isPlainObj=isPlainObject(value);var isArr=isArray(value);var replaced=(isPlainObj||isArr)&&(!that.plainObjectReplacers.length||stateObj.replaced)||stateObj.iterateIn?value:replace(keypath,value,stateObj,promisesData,isPlainObj||isArr,null,runObserver);var clone;if(replaced!==value){ret=replaced;observerData={replaced:replaced}}else{if(keypath===''&&hasConstructorOf(value,TypesonPromise)){promisesData.push([keypath,value,cyclic,stateObj,undefined,undefined,stateObj.type]);ret=value}else if(isArr&&stateObj.iterateIn!=='object'||stateObj.iterateIn==='array'){clone=new Array(value.length);observerData={clone:clone}}else if(!['function','symbol'].includes(_typeof(value))&&!('toJSON' in value)&&!hasConstructorOf(value,TypesonPromise)&&!hasConstructorOf(value,Promise)&&!hasConstructorOf(value,ArrayBuffer)||isPlainObj||stateObj.iterateIn==='object'){clone={};if(stateObj.addLength){clone.length=value.length}
+ observerData={clone:clone}}else{ret=value}}
+ if(runObserver){runObserver()}
+ if(opts.iterateNone){return clone||ret}
+ if(!clone){return ret}
+ if(stateObj.iterateIn){var _loop=function _loop(key){var ownKeysObj={ownKeys:hasOwn$1.call(value,key)};_adaptBuiltinStateObjectProperties(stateObj,ownKeysObj,function(){var kp=keypath+(keypath?'.':'')+escapeKeyPathComponent(key);var val=_encapsulate(kp,value[key],Boolean(cyclic),stateObj,promisesData,resolvingTypesonPromise);if(hasConstructorOf(val,TypesonPromise)){promisesData.push([kp,val,Boolean(cyclic),stateObj,clone,key,stateObj.type])}else if(val!==undefined){clone[key]=val}})};for(var key in value){_loop(key)}
+ if(runObserver){runObserver({endIterateIn:!0,end:!0})}}else{keys(value).forEach(function(key){var kp=keypath+(keypath?'.':'')+escapeKeyPathComponent(key);var ownKeysObj={ownKeys:!0};_adaptBuiltinStateObjectProperties(stateObj,ownKeysObj,function(){var val=_encapsulate(kp,value[key],Boolean(cyclic),stateObj,promisesData,resolvingTypesonPromise);if(hasConstructorOf(val,TypesonPromise)){promisesData.push([kp,val,Boolean(cyclic),stateObj,clone,key,stateObj.type])}else if(val!==undefined){clone[key]=val}})});if(runObserver){runObserver({endIterateOwn:!0,end:!0})}}
+ if(stateObj.iterateUnsetNumeric){var vl=value.length;var _loop2=function _loop2(i){if(!(i in value)){var kp=keypath+(keypath?'.':'')+i;var ownKeysObj={ownKeys:!1};_adaptBuiltinStateObjectProperties(stateObj,ownKeysObj,function(){var val=_encapsulate(kp,undefined,Boolean(cyclic),stateObj,promisesData,resolvingTypesonPromise);if(hasConstructorOf(val,TypesonPromise)){promisesData.push([kp,val,Boolean(cyclic),stateObj,clone,i,stateObj.type])}else if(val!==undefined){clone[i]=val}})}};for(var i=0;i<vl;i++){_loop2(i)}
+ if(runObserver){runObserver({endIterateUnsetNumeric:!0,end:!0})}}
+ return clone}
+ function replace(keypath,value,stateObj,promisesData,plainObject,resolvingTypesonPromise,runObserver){var replacers=plainObject?that.plainObjectReplacers:that.nonplainObjectReplacers;var i=replacers.length;while(i--){var replacer=replacers[i];if(replacer.test(value,stateObj)){var type=replacer.type;if(that.revivers[type]){var existing=types[keypath];types[keypath]=existing?[type].concat(existing):type}
+ Object.assign(stateObj,{type:type,replaced:!0});if((sync||!replacer.replaceAsync)&&!replacer.replace){if(runObserver){runObserver({typeDetected:!0})}
+ return _encapsulate(keypath,value,cyclic&&'readonly',stateObj,promisesData,resolvingTypesonPromise,type)}
+ if(runObserver){runObserver({replacing:!0})}
+ var replaceMethod=sync||!replacer.replaceAsync?'replace':'replaceAsync';return _encapsulate(keypath,replacer[replaceMethod](value,stateObj),cyclic&&'readonly',stateObj,promisesData,resolvingTypesonPromise,type)}}
+ return value}
+ return promisesDataRoot.length?sync&&opts.throwOnBadSyncType?function(){throw new TypeError('Sync method requested but async result obtained')}():Promise.resolve(checkPromises(ret,promisesDataRoot)).then(finish):!sync&&opts.throwOnBadSyncType?function(){throw new TypeError('Async method requested but sync result obtained')}():opts.stringification&&sync?[finish(ret)]:sync?finish(ret):Promise.resolve(finish(ret))}},{key:"encapsulateSync",value:function encapsulateSync(obj,stateObj,opts){return this.encapsulate(obj,stateObj,_objectSpread2({throwOnBadSyncType:!0},opts,{sync:!0}))}},{key:"encapsulateAsync",value:function encapsulateAsync(obj,stateObj,opts){return this.encapsulate(obj,stateObj,_objectSpread2({throwOnBadSyncType:!0},opts,{sync:!1}))}},{key:"revive",value:function revive(obj,opts){var types=obj&&obj.$types;if(!types){return obj}
+ if(types===!0){return obj.$}
+ opts=_objectSpread2({sync:!0},this.options,{},opts);var _opts3=opts,sync=_opts3.sync;var keyPathResolutions=[];var stateObj={};var ignore$Types=!0;if(types.$&&isPlainObject(types.$)){obj=obj.$;types=types.$;ignore$Types=!1}
+ var that=this;function executeReviver(type,val){var _ref2=that.revivers[type]||[],_ref3=_slicedToArray(_ref2,1),reviver=_ref3[0];if(!reviver){throw new Error('Unregistered type: '+type)}
+ if(sync&&!('revive' in reviver)){return val}
+ return reviver[sync&&reviver.revive?'revive':!sync&&reviver.reviveAsync?'reviveAsync':'revive'](val,stateObj)}
+ function revivePlainObjects(){var plainObjectTypes=[];Object.entries(types).forEach(function(_ref4){var _ref5=_slicedToArray(_ref4,2),keypath=_ref5[0],type=_ref5[1];if(type==='#'){return}[].concat(type).forEach(function(type){var _ref6=that.revivers[type]||[null,{}],_ref7=_slicedToArray(_ref6,2),plain=_ref7[1].plain;if(!plain){return}
+ plainObjectTypes.push({keypath:keypath,type:type});delete types[keypath]})});if(!plainObjectTypes.length){return undefined}
+ return plainObjectTypes.sort(nestedPathsFirst).reduce(function reducer(possibleTypesonPromise,_ref8){var keypath=_ref8.keypath,type=_ref8.type;if(isThenable(possibleTypesonPromise)){return possibleTypesonPromise.then(function(val){return reducer(val,{keypath:keypath,type:type})})}
+ var val=getByKeyPath(obj,keypath);val=executeReviver(type,val);if(hasConstructorOf(val,TypesonPromise)){return val.then(function(v){var newVal=setAtKeyPath(obj,keypath,v);if(newVal===v){obj=newVal}
+ return undefined})}
+ var newVal=setAtKeyPath(obj,keypath,val);if(newVal===val){obj=newVal}
+ return undefined},undefined)}
+ var revivalPromises=[];function _revive(keypath,value,target,clone,key){if(ignore$Types&&keypath==='$types'){return undefined}
+ var type=types[keypath];var isArr=isArray(value);if(isArr||isPlainObject(value)){var _clone=isArr?new Array(value.length):{};keys(value).forEach(function(k){var val=_revive(keypath+(keypath?'.':'')+escapeKeyPathComponent(k),value[k],target||_clone,_clone,k);var set=function set(v){if(hasConstructorOf(v,Undefined)){_clone[k]=undefined}else if(v!==undefined){_clone[k]=v}
+ return v};if(hasConstructorOf(val,TypesonPromise)){revivalPromises.push(val.then(function(ret){return set(ret)}))}else{set(val)}});value=_clone;while(keyPathResolutions.length){var _keyPathResolutions$=_slicedToArray(keyPathResolutions[0],4),_target=_keyPathResolutions$[0],keyPath=_keyPathResolutions$[1],_clone2=_keyPathResolutions$[2],k=_keyPathResolutions$[3];var val=getByKeyPath(_target,keyPath);if(val!==undefined){_clone2[k]=val}else{break}
+ keyPathResolutions.splice(0,1)}}
+ if(!type){return value}
+ if(type==='#'){var _ret=getByKeyPath(target,value.slice(1));if(_ret===undefined){keyPathResolutions.push([target,value.slice(1),clone,key])}
+ return _ret}
+ return[].concat(type).reduce(function reducer(val,typ){if(hasConstructorOf(val,TypesonPromise)){return val.then(function(v){return reducer(v,typ)})}
+ return executeReviver(typ,val)},value)}
+ function checkUndefined(retrn){return hasConstructorOf(retrn,Undefined)?undefined:retrn}
+ var possibleTypesonPromise=revivePlainObjects();var ret;if(hasConstructorOf(possibleTypesonPromise,TypesonPromise)){ret=possibleTypesonPromise.then(function(){return obj})}else{ret=_revive('',obj,null);if(revivalPromises.length){ret=TypesonPromise.resolve(ret).then(function(r){return TypesonPromise.all([r].concat(revivalPromises))}).then(function(_ref9){var _ref10=_slicedToArray(_ref9,1),r=_ref10[0];return r})}}
+ return isThenable(ret)?sync&&opts.throwOnBadSyncType?function(){throw new TypeError('Sync method requested but async result obtained')}():hasConstructorOf(ret,TypesonPromise)?ret.p.then(checkUndefined):ret:!sync&&opts.throwOnBadSyncType?function(){throw new TypeError('Async method requested but sync result obtained')}():sync?checkUndefined(ret):Promise.resolve(checkUndefined(ret))}},{key:"reviveSync",value:function reviveSync(obj,opts){return this.revive(obj,_objectSpread2({throwOnBadSyncType:!0},opts,{sync:!0}))}},{key:"reviveAsync",value:function reviveAsync(obj,opts){return this.revive(obj,_objectSpread2({throwOnBadSyncType:!0},opts,{sync:!1}))}},{key:"register",value:function register(typeSpecSets,opts){opts=opts||{};[].concat(typeSpecSets).forEach(function R(typeSpec){var _this=this;if(isArray(typeSpec)){return typeSpec.map(function(typSpec){return R.call(_this,typSpec)})}
+ typeSpec&&keys(typeSpec).forEach(function(typeId){if(typeId==='#'){throw new TypeError('# cannot be used as a type name as it is reserved '+'for cyclic objects')}else if(Typeson.JSON_TYPES.includes(typeId)){throw new TypeError('Plain JSON object types are reserved as type names')}
+ var spec=typeSpec[typeId];var replacers=spec&&spec.testPlainObjects?this.plainObjectReplacers:this.nonplainObjectReplacers;var existingReplacer=replacers.filter(function(r){return r.type===typeId});if(existingReplacer.length){replacers.splice(replacers.indexOf(existingReplacer[0]),1);delete this.revivers[typeId];delete this.types[typeId]}
+ if(typeof spec==='function'){var Class=spec;spec={test:function test(x){return x&&x.constructor===Class},replace:function replace(x){return _objectSpread2({},x)},revive:function revive(x){return Object.assign(Object.create(Class.prototype),x)}}}else if(isArray(spec)){var _spec=spec,_spec2=_slicedToArray(_spec,3),test=_spec2[0],replace=_spec2[1],revive=_spec2[2];spec={test:test,replace:replace,revive:revive}}
+ if(!spec||!spec.test){return}
+ var replacerObj={type:typeId,test:spec.test.bind(spec)};if(spec.replace){replacerObj.replace=spec.replace.bind(spec)}
+ if(spec.replaceAsync){replacerObj.replaceAsync=spec.replaceAsync.bind(spec)}
+ var start=typeof opts.fallback==='number'?opts.fallback:opts.fallback?0:Infinity;if(spec.testPlainObjects){this.plainObjectReplacers.splice(start,0,replacerObj)}else{this.nonplainObjectReplacers.splice(start,0,replacerObj)}
+ if(spec.revive||spec.reviveAsync){var reviverObj={};if(spec.revive){reviverObj.revive=spec.revive.bind(spec)}
+ if(spec.reviveAsync){reviverObj.reviveAsync=spec.reviveAsync.bind(spec)}
+ this.revivers[typeId]=[reviverObj,{plain:spec.testPlainObjects}]}
+ this.types[typeId]=spec},this)},this);return this}}]);return Typeson}();var Undefined=function Undefined(){_classCallCheck(this,Undefined)};Undefined.__typeson__type__='TypesonUndefined';Typeson.Undefined=Undefined;Typeson.Promise=TypesonPromise;Typeson.isThenable=isThenable;Typeson.toStringTag=toStringTag;Typeson.hasConstructorOf=hasConstructorOf;Typeson.isObject=isObject;Typeson.isPlainObject=isPlainObject;Typeson.isUserObject=isUserObject;Typeson.escapeKeyPathComponent=escapeKeyPathComponent;Typeson.unescapeKeyPathComponent=unescapeKeyPathComponent;Typeson.getByKeyPath=getByKeyPath;Typeson.getJSONType=getJSONType;Typeson.JSON_TYPES=['null','boolean','number','string','array','object'];return Typeson})))});var structuredCloning=createCommonjsModule(function(module,exports){!function(e,t){module.exports=t()}(commonjsGlobal,(function(){function _typeof$1(e){return(_typeof$1="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _classCallCheck$1(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties$1(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _defineProperty$1(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function ownKeys$1(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function _toConsumableArray$1(e){return function _arrayWithoutHoles$1(e){if(Array.isArray(e))return _arrayLikeToArray$1(e)}(e)||function _iterableToArray$1(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function _unsupportedIterableToArray$1(e,t){if(!e)return;if("string"==typeof e)return _arrayLikeToArray$1(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return _arrayLikeToArray$1(e,t)}(e)||function _nonIterableSpread$1(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _arrayLikeToArray$1(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function _typeof(e){return typeof e}:function _typeof(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _defineProperty(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function _objectSpread2(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach((function(t){_defineProperty(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function _slicedToArray(e,t){return function _arrayWithHoles(e){if(Array.isArray(e))return e}(e)||function _iterableToArrayLimit(e,t){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var r=[],n=!0,i=!1,o=void 0;try{for(var a,c=e[Symbol.iterator]();!(n=(a=c.next()).done)&&(r.push(a.value),!t||r.length!==t);n=!0);}catch(e){i=!0,o=e}finally{try{n||null==c.return||c.return()}finally{if(i)throw o}}return r}(e,t)||_unsupportedIterableToArray(e,t)||function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _toConsumableArray(e){return function _arrayWithoutHoles(e){if(Array.isArray(e))return _arrayLikeToArray(e)}(e)||function _iterableToArray(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||_unsupportedIterableToArray(e)||function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _unsupportedIterableToArray(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_arrayLikeToArray(e,t):void 0}}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var e=function TypesonPromise(e){_classCallCheck(this,TypesonPromise),this.p=new Promise(e)};e.__typeson__type__="TypesonPromise","undefined"!=typeof Symbol&&(e.prototype[Symbol.toStringTag]="TypesonPromise"),e.prototype.then=function(t,r){var n=this;return new e((function(e,i){n.p.then((function(r){e(t?t(r):r)})).catch((function(e){return r?r(e):Promise.reject(e)})).then(e,i)}))},e.prototype.catch=function(e){return this.then(null,e)},e.resolve=function(t){return new e((function(e){e(t)}))},e.reject=function(t){return new e((function(e,r){r(t)}))},["all","race"].forEach((function(t){e[t]=function(r){return new e((function(e,n){Promise[t](r.map((function(e){return e&&e.constructor&&"TypesonPromise"===e.constructor.__typeson__type__?e.p:e}))).then(e,n)}))}}));var t={}.toString,r={}.hasOwnProperty,n=Object.getPrototypeOf,i=r.toString;function isThenable(e,t){return isObject(e)&&"function"==typeof e.then&&(!t||"function"==typeof e.catch)}function toStringTag(e){return t.call(e).slice(8,-1)}function hasConstructorOf(e,t){if(!e||"object"!==_typeof(e))return!1;var o=n(e);if(!o)return null===t;var a=r.call(o,"constructor")&&o.constructor;return"function"!=typeof a?null===t:t===a||(null!==t&&i.call(a)===i.call(t)||"function"==typeof t&&"string"==typeof a.__typeson__type__&&a.__typeson__type__===t.__typeson__type__)}function isPlainObject(e){return!(!e||"Object"!==toStringTag(e))&&(!n(e)||hasConstructorOf(e,Object))}function isObject(e){return e&&"object"===_typeof(e)}function escapeKeyPathComponent(e){return e.replace(/~/g,"~0").replace(/\./g,"~1")}function unescapeKeyPathComponent(e){return e.replace(/~1/g,".").replace(/~0/g,"~")}function getByKeyPath(e,t){if(""===t)return e;var r=t.indexOf(".");if(r>-1){var n=e[unescapeKeyPathComponent(t.slice(0,r))];return void 0===n?void 0:getByKeyPath(n,t.slice(r+1))}return e[unescapeKeyPathComponent(t)]}function setAtKeyPath(e,t,r){if(""===t)return r;var n=t.indexOf(".");return n>-1?setAtKeyPath(e[unescapeKeyPathComponent(t.slice(0,n))],t.slice(n+1),r):(e[unescapeKeyPathComponent(t)]=r,e)}function _await(e,t,r){return r?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}var o=Object.keys,a=Array.isArray,c={}.hasOwnProperty,u=["type","replaced","iterateIn","iterateUnsetNumeric"];function _async(e){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];try{return Promise.resolve(e.apply(this,t))}catch(e){return Promise.reject(e)}}}function nestedPathsFirst(e,t){if(""===e.keypath)return-1;var r=e.keypath.match(/\./g)||0,n=t.keypath.match(/\./g)||0;return r&&(r=r.length),n&&(n=n.length),r>n?-1:r<n?1:e.keypath<t.keypath?-1:e.keypath>t.keypath}var s=function(){function Typeson(e){_classCallCheck(this,Typeson),this.options=e,this.plainObjectReplacers=[],this.nonplainObjectReplacers=[],this.revivers={},this.types={}}return function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),e}(Typeson,[{key:"stringify",value:function stringify(e,t,r,n){n=_objectSpread2(_objectSpread2(_objectSpread2({},this.options),n),{},{stringification:!0});var i=this.encapsulate(e,null,n);return a(i)?JSON.stringify(i[0],t,r):i.then((function(e){return JSON.stringify(e,t,r)}))}},{key:"stringifySync",value:function stringifySync(e,t,r,n){return this.stringify(e,t,r,_objectSpread2(_objectSpread2({throwOnBadSyncType:!0},n),{},{sync:!0}))}},{key:"stringifyAsync",value:function stringifyAsync(e,t,r,n){return this.stringify(e,t,r,_objectSpread2(_objectSpread2({throwOnBadSyncType:!0},n),{},{sync:!1}))}},{key:"parse",value:function parse(e,t,r){return r=_objectSpread2(_objectSpread2(_objectSpread2({},this.options),r),{},{parse:!0}),this.revive(JSON.parse(e,t),r)}},{key:"parseSync",value:function parseSync(e,t,r){return this.parse(e,t,_objectSpread2(_objectSpread2({throwOnBadSyncType:!0},r),{},{sync:!0}))}},{key:"parseAsync",value:function parseAsync(e,t,r){return this.parse(e,t,_objectSpread2(_objectSpread2({throwOnBadSyncType:!0},r),{},{sync:!1}))}},{key:"specialTypeNames",value:function specialTypeNames(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return r.returnTypeNames=!0,this.encapsulate(e,t,r)}},{key:"rootTypeName",value:function rootTypeName(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return r.iterateNone=!0,this.encapsulate(e,t,r)}},{key:"encapsulate",value:function encapsulate(t,r,n){var i=_async((function(t,r){return _await(Promise.all(r.map((function(e){return e[1].p}))),(function(n){return _await(Promise.all(n.map(_async((function(n){var o=!1,a=[],c=_slicedToArray(r.splice(0,1),1),u=_slicedToArray(c[0],7),s=u[0],f=u[2],l=u[3],p=u[4],y=u[5],v=u[6],b=_encapsulate(s,n,f,l,a,!0,v),d=hasConstructorOf(b,e);return function _invoke(e,t){var r=e();return r&&r.then?r.then(t):t(r)}((function(){if(s&&d)return _await(b.p,(function(e){return p[y]=e,o=!0,i(t,a)}))}),(function(e){return o?e:(s?p[y]=b:t=d?b.p:b,i(t,a))}))})))),(function(){return t}))}))})),s=(n=_objectSpread2(_objectSpread2({sync:!0},this.options),n)).sync,f=this,l={},p=[],y=[],v=[],b=!("cyclic"in n)||n.cyclic,d=n.encapsulateObserver,h=_encapsulate("",t,b,r||{},v);function finish(e){var t=Object.values(l);if(n.iterateNone)return t.length?t[0]:Typeson.getJSONType(e);if(t.length){if(n.returnTypeNames)return _toConsumableArray(new Set(t));e&&isPlainObject(e)&&!c.call(e,"$types")?e.$types=l:e={$:e,$types:{$:l}}}else isObject(e)&&c.call(e,"$types")&&(e={$:e,$types:!0});return!n.returnTypeNames&&e}function _adaptBuiltinStateObjectProperties(e,t,r){Object.assign(e,t);var n=u.map((function(t){var r=e[t];return delete e[t],r}));r(),u.forEach((function(t,r){e[t]=n[r]}))}function _encapsulate(t,r,i,u,s,v,b){var h,g={},m=_typeof(r),O=d?function(n){var o=b||u.type||Typeson.getJSONType(r);d(Object.assign(n||g,{keypath:t,value:r,cyclic:i,stateObj:u,promisesData:s,resolvingTypesonPromise:v,awaitingTypesonPromise:hasConstructorOf(r,e)},{type:o}))}:null;if(["string","boolean","number","undefined"].includes(m))return void 0===r||Number.isNaN(r)||r===Number.NEGATIVE_INFINITY||r===Number.POSITIVE_INFINITY?(h=u.replaced?r:replace(t,r,u,s,!1,v,O))!==r&&(g={replaced:h}):h=r,O&&O(),h;if(null===r)return O&&O(),r;if(i&&!u.iterateIn&&!u.iterateUnsetNumeric&&r&&"object"===_typeof(r)){var _=p.indexOf(r);if(!(_<0))return l[t]="#",O&&O({cyclicKeypath:y[_]}),"#"+y[_];!0===i&&(p.push(r),y.push(t))}var j,S=isPlainObject(r),T=a(r),w=(S||T)&&(!f.plainObjectReplacers.length||u.replaced)||u.iterateIn?r:replace(t,r,u,s,S||T,null,O);if(w!==r?(h=w,g={replaced:w}):""===t&&hasConstructorOf(r,e)?(s.push([t,r,i,u,void 0,void 0,u.type]),h=r):T&&"object"!==u.iterateIn||"array"===u.iterateIn?(j=new Array(r.length),g={clone:j}):(["function","symbol"].includes(_typeof(r))||"toJSON"in r||hasConstructorOf(r,e)||hasConstructorOf(r,Promise)||hasConstructorOf(r,ArrayBuffer))&&!S&&"object"!==u.iterateIn?h=r:(j={},u.addLength&&(j.length=r.length),g={clone:j}),O&&O(),n.iterateNone)return j||h;if(!j)return h;if(u.iterateIn){var A=function _loop(n){var o={ownKeys:c.call(r,n)};_adaptBuiltinStateObjectProperties(u,o,(function(){var o=t+(t?".":"")+escapeKeyPathComponent(n),a=_encapsulate(o,r[n],Boolean(i),u,s,v);hasConstructorOf(a,e)?s.push([o,a,Boolean(i),u,j,n,u.type]):void 0!==a&&(j[n]=a)}))};for(var P in r)A(P);O&&O({endIterateIn:!0,end:!0})}else o(r).forEach((function(n){var o=t+(t?".":"")+escapeKeyPathComponent(n);_adaptBuiltinStateObjectProperties(u,{ownKeys:!0},(function(){var t=_encapsulate(o,r[n],Boolean(i),u,s,v);hasConstructorOf(t,e)?s.push([o,t,Boolean(i),u,j,n,u.type]):void 0!==t&&(j[n]=t)}))})),O&&O({endIterateOwn:!0,end:!0});if(u.iterateUnsetNumeric){for(var I=r.length,C=function _loop2(n){if(!(n in r)){var o=t+(t?".":"")+n;_adaptBuiltinStateObjectProperties(u,{ownKeys:!1},(function(){var t=_encapsulate(o,void 0,Boolean(i),u,s,v);hasConstructorOf(t,e)?s.push([o,t,Boolean(i),u,j,n,u.type]):void 0!==t&&(j[n]=t)}))}},N=0;N<I;N++)C(N);O&&O({endIterateUnsetNumeric:!0,end:!0})}return j}function replace(e,t,r,n,i,o,a){for(var c=i?f.plainObjectReplacers:f.nonplainObjectReplacers,u=c.length;u--;){var p=c[u];if(p.test(t,r)){var y=p.type;if(f.revivers[y]){var v=l[e];l[e]=v?[y].concat(v):y}return Object.assign(r,{type:y,replaced:!0}),!s&&p.replaceAsync||p.replace?(a&&a({replacing:!0}),_encapsulate(e,p[s||!p.replaceAsync?"replace":"replaceAsync"](t,r),b&&"readonly",r,n,o,y)):(a&&a({typeDetected:!0}),_encapsulate(e,t,b&&"readonly",r,n,o,y))}}return t}return v.length?s&&n.throwOnBadSyncType?function(){throw new TypeError("Sync method requested but async result obtained")}():Promise.resolve(i(h,v)).then(finish):!s&&n.throwOnBadSyncType?function(){throw new TypeError("Async method requested but sync result obtained")}():n.stringification&&s?[finish(h)]:s?finish(h):Promise.resolve(finish(h))}},{key:"encapsulateSync",value:function encapsulateSync(e,t,r){return this.encapsulate(e,t,_objectSpread2(_objectSpread2({throwOnBadSyncType:!0},r),{},{sync:!0}))}},{key:"encapsulateAsync",value:function encapsulateAsync(e,t,r){return this.encapsulate(e,t,_objectSpread2(_objectSpread2({throwOnBadSyncType:!0},r),{},{sync:!1}))}},{key:"revive",value:function revive(t,r){var n=t&&t.$types;if(!n)return t;if(!0===n)return t.$;var i=(r=_objectSpread2(_objectSpread2({sync:!0},this.options),r)).sync,c=[],u={},s=!0;n.$&&isPlainObject(n.$)&&(t=t.$,n=n.$,s=!1);var l=this;function executeReviver(e,t){var r=_slicedToArray(l.revivers[e]||[],1)[0];if(!r)throw new Error("Unregistered type: "+e);return i&&!("revive"in r)?t:r[i&&r.revive?"revive":!i&&r.reviveAsync?"reviveAsync":"revive"](t,u)}var p=[];function checkUndefined(e){return hasConstructorOf(e,f)?void 0:e}var y,v=function revivePlainObjects(){var r=[];if(Object.entries(n).forEach((function(e){var t=_slicedToArray(e,2),i=t[0],o=t[1];"#"!==o&&[].concat(o).forEach((function(e){_slicedToArray(l.revivers[e]||[null,{}],2)[1].plain&&(r.push({keypath:i,type:e}),delete n[i])}))})),r.length)return r.sort(nestedPathsFirst).reduce((function reducer(r,n){var i=n.keypath,o=n.type;if(isThenable(r))return r.then((function(e){return reducer(e,{keypath:i,type:o})}));var a=getByKeyPath(t,i);if(hasConstructorOf(a=executeReviver(o,a),e))return a.then((function(e){var r=setAtKeyPath(t,i,e);r===e&&(t=r)}));var c=setAtKeyPath(t,i,a);c===a&&(t=c)}),void 0)}();return hasConstructorOf(v,e)?y=v.then((function(){return t})):(y=function _revive(t,r,i,u,l){if(!s||"$types"!==t){var y=n[t],v=a(r);if(v||isPlainObject(r)){var b=v?new Array(r.length):{};for(o(r).forEach((function(n){var o=_revive(t+(t?".":"")+escapeKeyPathComponent(n),r[n],i||b,b,n),a=function set(e){return hasConstructorOf(e,f)?b[n]=void 0:void 0!==e&&(b[n]=e),e};hasConstructorOf(o,e)?p.push(o.then((function(e){return a(e)}))):a(o)})),r=b;c.length;){var d=_slicedToArray(c[0],4),h=d[0],g=d[1],m=d[2],O=d[3],_=getByKeyPath(h,g);if(void 0===_)break;m[O]=_,c.splice(0,1)}}if(!y)return r;if("#"===y){var j=getByKeyPath(i,r.slice(1));return void 0===j&&c.push([i,r.slice(1),u,l]),j}return[].concat(y).reduce((function reducer(t,r){return hasConstructorOf(t,e)?t.then((function(e){return reducer(e,r)})):executeReviver(r,t)}),r)}}("",t,null),p.length&&(y=e.resolve(y).then((function(t){return e.all([t].concat(p))})).then((function(e){return _slicedToArray(e,1)[0]})))),isThenable(y)?i&&r.throwOnBadSyncType?function(){throw new TypeError("Sync method requested but async result obtained")}():hasConstructorOf(y,e)?y.p.then(checkUndefined):y:!i&&r.throwOnBadSyncType?function(){throw new TypeError("Async method requested but sync result obtained")}():i?checkUndefined(y):Promise.resolve(checkUndefined(y))}},{key:"reviveSync",value:function reviveSync(e,t){return this.revive(e,_objectSpread2(_objectSpread2({throwOnBadSyncType:!0},t),{},{sync:!0}))}},{key:"reviveAsync",value:function reviveAsync(e,t){return this.revive(e,_objectSpread2(_objectSpread2({throwOnBadSyncType:!0},t),{},{sync:!1}))}},{key:"register",value:function register(e,t){return t=t||{},[].concat(e).forEach((function R(e){var r=this;if(a(e))return e.map((function(e){return R.call(r,e)}));e&&o(e).forEach((function(r){if("#"===r)throw new TypeError("# cannot be used as a type name as it is reserved for cyclic objects");if(Typeson.JSON_TYPES.includes(r))throw new TypeError("Plain JSON object types are reserved as type names");var n=e[r],i=n&&n.testPlainObjects?this.plainObjectReplacers:this.nonplainObjectReplacers,o=i.filter((function(e){return e.type===r}));if(o.length&&(i.splice(i.indexOf(o[0]),1),delete this.revivers[r],delete this.types[r]),"function"==typeof n){var c=n;n={test:function test(e){return e&&e.constructor===c},replace:function replace(e){return _objectSpread2({},e)},revive:function revive(e){return Object.assign(Object.create(c.prototype),e)}}}else if(a(n)){var u=_slicedToArray(n,3);n={test:u[0],replace:u[1],revive:u[2]}}if(n&&n.test){var s={type:r,test:n.test.bind(n)};n.replace&&(s.replace=n.replace.bind(n)),n.replaceAsync&&(s.replaceAsync=n.replaceAsync.bind(n));var f="number"==typeof t.fallback?t.fallback:t.fallback?0:Number.POSITIVE_INFINITY;if(n.testPlainObjects?this.plainObjectReplacers.splice(f,0,s):this.nonplainObjectReplacers.splice(f,0,s),n.revive||n.reviveAsync){var l={};n.revive&&(l.revive=n.revive.bind(n)),n.reviveAsync&&(l.reviveAsync=n.reviveAsync.bind(n)),this.revivers[r]=[l,{plain:n.testPlainObjects}]}this.types[r]=n}}),this)}),this),this}}]),Typeson}(),f=function Undefined(){_classCallCheck(this,Undefined)};f.__typeson__type__="TypesonUndefined",s.Undefined=f,s.Promise=e,s.isThenable=isThenable,s.toStringTag=toStringTag,s.hasConstructorOf=hasConstructorOf,s.isObject=isObject,s.isPlainObject=isPlainObject,s.isUserObject=function isUserObject(e){if(!e||"Object"!==toStringTag(e))return!1;var t=n(e);return!t||(hasConstructorOf(e,Object)||isUserObject(t))},s.escapeKeyPathComponent=escapeKeyPathComponent,s.unescapeKeyPathComponent=unescapeKeyPathComponent,s.getByKeyPath=getByKeyPath,s.getJSONType=function getJSONType(e){return null===e?"null":Array.isArray(e)?"array":_typeof(e)},s.JSON_TYPES=["null","boolean","number","string","array","object"];for(var l={userObject:{test:function test(e,t){return s.isUserObject(e)},replace:function replace(e){return function _objectSpread2$1(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys$1(Object(r),!0).forEach((function(t){_defineProperty$1(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys$1(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({},e)},revive:function revive(e){return e}}},p=[{arrayNonindexKeys:{testPlainObjects:!0,test:function test(e,t){return!!Array.isArray(e)&&(Object.keys(e).some((function(e){return String(Number.parseInt(e))!==e}))&&(t.iterateIn="object",t.addLength=!0),!0)},replace:function replace(e,t){return t.iterateUnsetNumeric=!0,e},revive:function revive(e){if(Array.isArray(e))return e;var t=[];return Object.keys(e).forEach((function(r){var n=e[r];t[r]=n})),t}}},{sparseUndefined:{test:function test(e,t){return void 0===e&&!1===t.ownKeys},replace:function replace(e){return 0},revive:function revive(e){}}}],y={undef:{test:function test(e,t){return void 0===e&&(t.ownKeys||!("ownKeys"in t))},replace:function replace(e){return 0},revive:function revive(e){return new s.Undefined}}},v={StringObject:{test:function test(e){return"String"===s.toStringTag(e)&&"object"===_typeof$1(e)},replace:function replace(e){return String(e)},revive:function revive(e){return new String(e)}},BooleanObject:{test:function test(e){return"Boolean"===s.toStringTag(e)&&"object"===_typeof$1(e)},replace:function replace(e){return Boolean(e)},revive:function revive(e){return new Boolean(e)}},NumberObject:{test:function test(e){return"Number"===s.toStringTag(e)&&"object"===_typeof$1(e)},replace:function replace(e){return Number(e)},revive:function revive(e){return new Number(e)}}},b=[{nan:{test:function test(e){return Number.isNaN(e)},replace:function replace(e){return"NaN"},revive:function revive(e){return Number.NaN}}},{infinity:{test:function test(e){return e===Number.POSITIVE_INFINITY},replace:function replace(e){return"Infinity"},revive:function revive(e){return Number.POSITIVE_INFINITY}}},{negativeInfinity:{test:function test(e){return e===Number.NEGATIVE_INFINITY},replace:function replace(e){return"-Infinity"},revive:function revive(e){return Number.NEGATIVE_INFINITY}}}],d={date:{test:function test(e){return"Date"===s.toStringTag(e)},replace:function replace(e){var t=e.getTime();return Number.isNaN(t)?"NaN":t},revive:function revive(e){return"NaN"===e?new Date(Number.NaN):new Date(e)}}},h={regexp:{test:function test(e){return"RegExp"===s.toStringTag(e)},replace:function replace(e){return{source:e.source,flags:(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.sticky?"y":"")+(e.unicode?"u":"")}},revive:function revive(e){var t=e.source,r=e.flags;return new RegExp(t,r)}}},g={map:{test:function test(e){return"Map"===s.toStringTag(e)},replace:function replace(e){return _toConsumableArray$1(e.entries())},revive:function revive(e){return new Map(e)}}},m={set:{test:function test(e){return"Set"===s.toStringTag(e)},replace:function replace(e){return _toConsumableArray$1(e.values())},revive:function revive(e){return new Set(e)}}},O="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",_=new Uint8Array(256),j=0;j<O.length;j++)_[O.charCodeAt(j)]=j;var S=function encode(e,t,r){null==r&&(r=e.byteLength);for(var n=new Uint8Array(e,t||0,r),i=n.length,o="",a=0;a<i;a+=3)o+=O[n[a]>>2],o+=O[(3&n[a])<<4|n[a+1]>>4],o+=O[(15&n[a+1])<<2|n[a+2]>>6],o+=O[63&n[a+2]];return i%3==2?o=o.slice(0,-1)+"=":i%3==1&&(o=o.slice(0,-2)+"=="),o},T=function decode(e){var t,r,n,i,o=e.length,a=.75*e.length,c=0;"="===e[e.length-1]&&(a--,"="===e[e.length-2]&&a--);for(var u=new ArrayBuffer(a),s=new Uint8Array(u),f=0;f<o;f+=4)t=_[e.charCodeAt(f)],r=_[e.charCodeAt(f+1)],n=_[e.charCodeAt(f+2)],i=_[e.charCodeAt(f+3)],s[c++]=t<<2|r>>4,s[c++]=(15&r)<<4|n>>2,s[c++]=(3&n)<<6|63&i;return u},w={arraybuffer:{test:function test(e){return"ArrayBuffer"===s.toStringTag(e)},replace:function replace(e,t){t.buffers||(t.buffers=[]);var r=t.buffers.indexOf(e);return r>-1?{index:r}:(t.buffers.push(e),S(e))},revive:function revive(e,t){if(t.buffers||(t.buffers=[]),"object"===_typeof$1(e))return t.buffers[e.index];var r=T(e);return t.buffers.push(r),r}}},A="undefined"==typeof self?commonjsGlobal:self,P={};["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array"].forEach((function(e){var t=e,r=A[t];r&&(P[e.toLowerCase()]={test:function test(e){return s.toStringTag(e)===t},replace:function replace(e,t){var r=e.buffer,n=e.byteOffset,i=e.length;t.buffers||(t.buffers=[]);var o=t.buffers.indexOf(r);return o>-1?{index:o,byteOffset:n,length:i}:(t.buffers.push(r),{encoded:S(r),byteOffset:n,length:i})},revive:function revive(e,t){t.buffers||(t.buffers=[]);var n,i=e.byteOffset,o=e.length,a=e.encoded,c=e.index;return"index"in e?n=t.buffers[c]:(n=T(a),t.buffers.push(n)),new r(n,i,o)}})}));var I={dataview:{test:function test(e){return"DataView"===s.toStringTag(e)},replace:function replace(e,t){var r=e.buffer,n=e.byteOffset,i=e.byteLength;t.buffers||(t.buffers=[]);var o=t.buffers.indexOf(r);return o>-1?{index:o,byteOffset:n,byteLength:i}:(t.buffers.push(r),{encoded:S(r),byteOffset:n,byteLength:i})},revive:function revive(e,t){t.buffers||(t.buffers=[]);var r,n=e.byteOffset,i=e.byteLength,o=e.encoded,a=e.index;return"index"in e?r=t.buffers[a]:(r=T(o),t.buffers.push(r)),new DataView(r,n,i)}}},C={IntlCollator:{test:function test(e){return s.hasConstructorOf(e,Intl.Collator)},replace:function replace(e){return e.resolvedOptions()},revive:function revive(e){return new Intl.Collator(e.locale,e)}},IntlDateTimeFormat:{test:function test(e){return s.hasConstructorOf(e,Intl.DateTimeFormat)},replace:function replace(e){return e.resolvedOptions()},revive:function revive(e){return new Intl.DateTimeFormat(e.locale,e)}},IntlNumberFormat:{test:function test(e){return s.hasConstructorOf(e,Intl.NumberFormat)},replace:function replace(e){return e.resolvedOptions()},revive:function revive(e){return new Intl.NumberFormat(e.locale,e)}}};function string2arraybuffer(e){for(var t=new Uint8Array(e.length),r=0;r<e.length;r++)t[r]=e.charCodeAt(r);return t.buffer}var N={file:{test:function test(e){return"File"===s.toStringTag(e)},replace:function replace(e){var t=new XMLHttpRequest;if(t.overrideMimeType("text/plain; charset=x-user-defined"),t.open("GET",URL.createObjectURL(e),!1),t.send(),200!==t.status&&0!==t.status)throw new Error("Bad File access: "+t.status);return{type:e.type,stringContents:t.responseText,name:e.name,lastModified:e.lastModified}},revive:function revive(e){var t=e.name,r=e.type,n=e.stringContents,i=e.lastModified;return new File([string2arraybuffer(n)],t,{type:r,lastModified:i})},replaceAsync:function replaceAsync(e){return new s.Promise((function(t,r){var n=new FileReader;n.addEventListener("load",(function(){t({type:e.type,stringContents:n.result,name:e.name,lastModified:e.lastModified})})),n.addEventListener("error",(function(){r(n.error)})),n.readAsBinaryString(e)}))}}},k={bigint:{test:function test(e){return"bigint"==typeof e},replace:function replace(e){return String(e)},revive:function revive(e){return BigInt(e)}}},E={bigintObject:{test:function test(e){return"object"===_typeof$1(e)&&s.hasConstructorOf(e,BigInt)},replace:function replace(e){return String(e)},revive:function revive(e){return new Object(BigInt(e))}}},B={cryptokey:{test:function test(e){return"CryptoKey"===s.toStringTag(e)&&e.extractable},replaceAsync:function replaceAsync(e){return new s.Promise((function(t,r){crypto.subtle.exportKey("jwk",e).catch((function(e){r(e)})).then((function(r){t({jwk:r,algorithm:e.algorithm,usages:e.usages})}))}))},revive:function revive(e){var t=e.jwk,r=e.algorithm,n=e.usages;return crypto.subtle.importKey("jwk",t,r,!0,n)}}};return[l,y,p,v,b,d,h,{imagedata:{test:function test(e){return"ImageData"===s.toStringTag(e)},replace:function replace(e){return{array:_toConsumableArray$1(e.data),width:e.width,height:e.height}},revive:function revive(e){return new ImageData(new Uint8ClampedArray(e.array),e.width,e.height)}}},{imagebitmap:{test:function test(e){return"ImageBitmap"===s.toStringTag(e)||e&&e.dataset&&"ImageBitmap"===e.dataset.toStringTag},replace:function replace(e){var t=document.createElement("canvas");return t.getContext("2d").drawImage(e,0,0),t.toDataURL()},revive:function revive(e){var t=document.createElement("canvas"),r=t.getContext("2d"),n=document.createElement("img");return n.addEventListener("load",(function(){r.drawImage(n,0,0)})),n.src=e,t},reviveAsync:function reviveAsync(e){var t=document.createElement("canvas"),r=t.getContext("2d"),n=document.createElement("img");return n.addEventListener("load",(function(){r.drawImage(n,0,0)})),n.src=e,createImageBitmap(t)}}},N,{file:N.file,filelist:{test:function test(e){return"FileList"===s.toStringTag(e)},replace:function replace(e){for(var t=[],r=0;r<e.length;r++)t[r]=e.item(r);return t},revive:function revive(e){return new(function(){function FileList(){_classCallCheck$1(this,FileList),this._files=arguments[0],this.length=this._files.length}return function _createClass$1(e,t,r){return t&&_defineProperties$1(e.prototype,t),r&&_defineProperties$1(e,r),e}(FileList,[{key:"item",value:function item(e){return this._files[e]}},{key:Symbol.toStringTag,get:function get(){return"FileList"}}]),FileList}())(e)}}},{blob:{test:function test(e){return"Blob"===s.toStringTag(e)},replace:function replace(e){var t=new XMLHttpRequest;if(t.overrideMimeType("text/plain; charset=x-user-defined"),t.open("GET",URL.createObjectURL(e),!1),t.send(),200!==t.status&&0!==t.status)throw new Error("Bad Blob access: "+t.status);return{type:e.type,stringContents:t.responseText}},revive:function revive(e){var t=e.type,r=e.stringContents;return new Blob([string2arraybuffer(r)],{type:t})},replaceAsync:function replaceAsync(e){return new s.Promise((function(t,r){var n=new FileReader;n.addEventListener("load",(function(){t({type:e.type,stringContents:n.result})})),n.addEventListener("error",(function(){r(n.error)})),n.readAsBinaryString(e)}))}}}].concat("function"==typeof Map?g:[],"function"==typeof Set?m:[],"function"==typeof ArrayBuffer?w:[],"function"==typeof Uint8Array?P:[],"function"==typeof DataView?I:[],"undefined"!=typeof Intl?C:[],"undefined"!=typeof crypto?B:[],"undefined"!=typeof BigInt?[k,E]:[])}))});var chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';var lookup=new Uint8Array(256);for(var i=0;i<chars.length;i++){lookup[chars.codePointAt(i)]=i}
+ var encode=function encode(arraybuffer,byteOffset,lngth){if(lngth===null||lngth===undefined){lngth=arraybuffer.byteLength}
+ var bytes=new Uint8Array(arraybuffer,byteOffset||0,lngth);var len=bytes.length;var base64='';for(var _i=0;_i<len;_i+=3){base64+=chars[bytes[_i]>>2];base64+=chars[(bytes[_i]&3)<<4|bytes[_i+1]>>4];base64+=chars[(bytes[_i+1]&15)<<2|bytes[_i+2]>>6];base64+=chars[bytes[_i+2]&63]}
+ if(len%3===2){base64=base64.slice(0,-1)+'='}else if(len%3===1){base64=base64.slice(0,-2)+'=='}
+ return base64};var decode=function decode(base64){var len=base64.length;var bufferLength=base64.length*0.75;var p=0;var encoded1,encoded2,encoded3,encoded4;if(base64[base64.length-1]==='='){bufferLength--;if(base64[base64.length-2]==='='){bufferLength--}}
+ var arraybuffer=new ArrayBuffer(bufferLength),bytes=new Uint8Array(arraybuffer);for(var _i2=0;_i2<len;_i2+=4){encoded1=lookup[base64.codePointAt(_i2)];encoded2=lookup[base64.codePointAt(_i2+1)];encoded3=lookup[base64.codePointAt(_i2+2)];encoded4=lookup[base64.codePointAt(_i2+3)];bytes[p++]=encoded1<<2|encoded2>>4;bytes[p++]=(encoded2&15)<<4|encoded3>>2;bytes[p++]=(encoded3&3)<<6|encoded4&63}
+ return arraybuffer};var _global=typeof self==='undefined'?global:self;var exportObj={};['Int8Array','Uint8Array','Uint8ClampedArray','Int16Array','Uint16Array','Int32Array','Uint32Array','Float32Array','Float64Array'].forEach(function(typeName){var arrType=typeName;var TypedArray=_global[arrType];if(TypedArray){exportObj[typeName.toLowerCase()+"2"]={test:function(x){return typeson.toStringTag(x)===arrType},replace:function(_a){var buffer=_a.buffer,byteOffset=_a.byteOffset,length=_a.length;return{buffer:buffer,byteOffset:byteOffset,length:length}},revive:function(b64Obj){var buffer=b64Obj.buffer,byteOffset=b64Obj.byteOffset,length=b64Obj.length;return new TypedArray(buffer,byteOffset,length)}}}});var arrayBuffer={arraybuffer:{test:function(x){return typeson.toStringTag(x)==='ArrayBuffer'},replace:function(b){return encode(b,0,b.byteLength)},revive:function(b64){var buffer=decode(b64);return buffer}}};var TSON=new typeson().register(structuredCloning);var readBlobsSynchronously='FileReaderSync' in self;var blobsToAwait=[];var blobsToAwaitPos=0;TSON.register([arrayBuffer,exportObj,{blob2:{test:function(x){return typeson.toStringTag(x)==='Blob'},replace:function(b){if(b.isClosed){throw new Error('The Blob is closed')}
+ if(readBlobsSynchronously){var data=readBlobSync(b,'binary');var base64=encode(data,0,data.byteLength);return{type:b.type,data:base64}}else{blobsToAwait.push(b);var result={type:b.type,data:{start:blobsToAwaitPos,end:blobsToAwaitPos+b.size}};blobsToAwaitPos+=b.size;return result}},finalize:function(b,ba){b.data=encode(ba,0,ba.byteLength)},revive:function(_a){var type=_a.type,data=_a.data;return new Blob([decode(data)],{type:type})}}}]);TSON.mustFinalize=function(){return blobsToAwait.length>0};TSON.finalize=function(items){return __awaiter(void 0,void 0,void 0,function(){var allChunks,_i,items_1,item,types,arrayType,keyPath,typeName,typeSpec,b;return __generator(this,function(_a){switch(_a.label){case 0:return[4,readBlobAsync(new Blob(blobsToAwait),'binary')];case 1:allChunks=_a.sent();if(items){for(_i=0,items_1=items;_i<items_1.length;_i++){item=items_1[_i];if(item.$types){types=item.$types;arrayType=types.$;if(arrayType)
+ types=types.$;for(keyPath in types){typeName=types[keyPath];typeSpec=TSON.types[typeName];if(typeSpec&&typeSpec.finalize){b=Dexie__default["default"].getByKeyPath(item,arrayType?"$."+keyPath:keyPath);typeSpec.finalize(b,allChunks.slice(b.start,b.end))}}}}}
+ blobsToAwait=[];return[2]}})})};var DEFAULT_ROWS_PER_CHUNK=2000;function exportDB(db,options){return __awaiter(this,void 0,void 0,function(){function exportAll(){return __awaiter(this,void 0,void 0,function(){var tablesRowCounts,emptyExportJson,posEndDataArray,firstJsonSlice,filter,_loop_1,_i,tables_1,tableName;return __generator(this,function(_a){switch(_a.label){case 0:return[4,Promise.all(db.tables.map(function(table){return table.count()}))];case 1:tablesRowCounts=_a.sent();tablesRowCounts.forEach(function(rowCount,i){return tables[i].rowCount=rowCount});progress.totalRows=tablesRowCounts.reduce(function(p,c){return p+c});emptyExportJson=JSON.stringify(emptyExport,undefined,prettyJson?2:undefined);posEndDataArray=emptyExportJson.lastIndexOf(']');firstJsonSlice=emptyExportJson.substring(0,posEndDataArray);slices.push(firstJsonSlice);filter=options.filter;_loop_1=function(tableName){var table,primKey,inbound,LIMIT,emptyTableExport,emptyTableExportJson,posEndRowsArray,lastKey,lastNumRows,mayHaveMoreRows,_loop_2,state_1;return __generator(this,function(_b){switch(_b.label){case 0:table=db.table(tableName);primKey=table.schema.primKey;inbound=!!primKey.keyPath;LIMIT=options.numRowsPerChunk||DEFAULT_ROWS_PER_CHUNK;emptyTableExport=inbound?{tableName:table.name,inbound:!0,rows:[]}:{tableName:table.name,inbound:!1,rows:[]};emptyTableExportJson=JSON.stringify(emptyTableExport,undefined,prettyJson?2:undefined);if(prettyJson){emptyTableExportJson=emptyTableExportJson.split('\n').join('\n ')}
+ posEndRowsArray=emptyTableExportJson.lastIndexOf(']');slices.push(emptyTableExportJson.substring(0,posEndRowsArray));lastKey=null;lastNumRows=0;mayHaveMoreRows=!0;_loop_2=function(){var chunkedCollection,values,filteredValues,tsonValues,json,keys,keyvals,tsonTuples,json;return __generator(this,function(_c){switch(_c.label){case 0:if(progressCallback){Dexie__default["default"].ignoreTransaction(function(){return progressCallback(progress)})}
+ chunkedCollection=lastKey==null?table.limit(LIMIT):table.where(':id').above(lastKey).limit(LIMIT);return[4,chunkedCollection.toArray()];case 1:values=_c.sent();if(values.length===0)
+ return[2,"break"];if(lastKey!=null&&lastNumRows>0){slices.push(",");if(prettyJson){slices.push("\n ")}}
+ mayHaveMoreRows=values.length===LIMIT;if(!inbound)return[3,4];filteredValues=filter?values.filter(function(value){return filter(tableName,value)}):values;tsonValues=filteredValues.map(function(value){return TSON.encapsulate(value)});if(!TSON.mustFinalize())return[3,3];return[4,Dexie__default["default"].waitFor(TSON.finalize(tsonValues))];case 2:_c.sent();_c.label=3;case 3:json=JSON.stringify(tsonValues,undefined,prettyJson?2:undefined);if(prettyJson)
+ json=json.split('\n').join('\n ');slices.push(new Blob([json.substring(1,json.length-1)]));lastNumRows=filteredValues.length;lastKey=values.length>0?Dexie__default["default"].getByKeyPath(values[values.length-1],primKey.keyPath):null;return[3,8];case 4:return[4,chunkedCollection.primaryKeys()];case 5:keys=_c.sent();keyvals=keys.map(function(key,i){return[key,values[i]]});if(filter)
+ keyvals=keyvals.filter(function(_a){var key=_a[0],value=_a[1];return filter(tableName,value,key)});tsonTuples=keyvals.map(function(tuple){return TSON.encapsulate(tuple)});if(!TSON.mustFinalize())return[3,7];return[4,Dexie__default["default"].waitFor(TSON.finalize(tsonTuples))];case 6:_c.sent();_c.label=7;case 7:json=JSON.stringify(tsonTuples,undefined,prettyJson?2:undefined);if(prettyJson)
+ json=json.split('\n').join('\n ');slices.push(new Blob([json.substring(1,json.length-1)]));lastNumRows=keyvals.length;lastKey=keys.length>0?keys[keys.length-1]:null;_c.label=8;case 8:progress.completedRows+=values.length;return[2]}})};_b.label=1;case 1:if(!mayHaveMoreRows)return[3,3];return[5,_loop_2()];case 2:state_1=_b.sent();if(state_1==="break")
+ return[3,3];return[3,1];case 3:slices.push(emptyTableExportJson.substr(posEndRowsArray));progress.completedTables+=1;if(progress.completedTables<progress.totalTables){slices.push(",")}
+ return[2]}})};_i=0,tables_1=tables;_a.label=2;case 2:if(!(_i<tables_1.length))return[3,5];tableName=tables_1[_i].name;return[5,_loop_1(tableName)];case 3:_a.sent();_a.label=4;case 4:_i++;return[3,2];case 5:slices.push(emptyExportJson.substr(posEndDataArray));progress.done=!0;if(progressCallback){Dexie__default["default"].ignoreTransaction(function(){return progressCallback(progress)})}
+ return[2]}})})}
+ var slices,tables,prettyJson,emptyExport,progressCallback,progress;return __generator(this,function(_a){switch(_a.label){case 0:options=options||{};slices=[];tables=db.tables.map(function(table){return({name:table.name,schema:getSchemaString(table),rowCount:0})});prettyJson=options.prettyJson;emptyExport={formatName:"dexie",formatVersion:1,data:{databaseName:db.name,databaseVersion:db.verno,tables:tables,data:[]}};progressCallback=options.progressCallback;progress={done:!1,completedRows:0,completedTables:0,totalRows:NaN,totalTables:db.tables.length};_a.label=1;case 1:_a.trys.push([1,,6,7]);if(!options.noTransaction)return[3,3];return[4,exportAll()];case 2:_a.sent();return[3,5];case 3:return[4,db.transaction('r',db.tables,exportAll)];case 4:_a.sent();_a.label=5;case 5:return[3,7];case 6:TSON.finalize();return[7];case 7:return[2,new Blob(slices,{type:"text/json"})]}})})}
+ var VERSION=1;var fakeStream={Stream:function(){}};var clarinet_1=createCommonjsModule(function(module,exports){(function(clarinet){var env=(typeof process==='object'&&process.env)?process.env:self;clarinet.parser=function(opt){return new CParser(opt)};clarinet.CParser=CParser;clarinet.CStream=CStream;clarinet.createStream=createStream;clarinet.MAX_BUFFER_LENGTH=10*1024*1024;clarinet.DEBUG=(env.CDEBUG==='debug');clarinet.INFO=(env.CDEBUG==='debug'||env.CDEBUG==='info');clarinet.EVENTS=["value","string","key","openobject","closeobject","openarray","closearray","error","end","ready"];var buffers={textNode:undefined,numberNode:""},streamWraps=clarinet.EVENTS.filter(function(ev){return ev!=="error"&&ev!=="end"}),S=0,Stream;clarinet.STATE={BEGIN:S++,VALUE:S++,OPEN_OBJECT:S++,CLOSE_OBJECT:S++,OPEN_ARRAY:S++,CLOSE_ARRAY:S++,TEXT_ESCAPE:S++,STRING:S++,BACKSLASH:S++,END:S++,OPEN_KEY:S++,CLOSE_KEY:S++,TRUE:S++,TRUE2:S++,TRUE3:S++,FALSE:S++,FALSE2:S++,FALSE3:S++,FALSE4:S++,NULL:S++,NULL2:S++,NULL3:S++,NUMBER_DECIMAL_POINT:S++,NUMBER_DIGIT:S++};for(var s_ in clarinet.STATE)clarinet.STATE[clarinet.STATE[s_]]=s_;S=clarinet.STATE;const Char={tab:0x09,lineFeed:0x0A,carriageReturn:0x0D,space:0x20,doubleQuote:0x22,plus:0x2B,comma:0x2C,minus:0x2D,period:0x2E,_0:0x30,_9:0x39,colon:0x3A,E:0x45,openBracket:0x5B,backslash:0x5C,closeBracket:0x5D,a:0x61,b:0x62,e:0x65,f:0x66,l:0x6C,n:0x6E,r:0x72,s:0x73,t:0x74,u:0x75,openBrace:0x7B,closeBrace:0x7D,};if(!Object.create){Object.create=function(o){function f(){this["__proto__"]=o}
+ f.prototype=o;return new f}}
+ if(!Object.getPrototypeOf){Object.getPrototypeOf=function(o){return o.__proto__}}
+ if(!Object.keys){Object.keys=function(o){var a=[];for(var i in o)if(o.hasOwnProperty(i))a.push(i);return a}}
+ function checkBufferLength(parser){var maxAllowed=Math.max(clarinet.MAX_BUFFER_LENGTH,10),maxActual=0;for(var buffer in buffers){var len=parser[buffer]===undefined?0:parser[buffer].length;if(len>maxAllowed){switch(buffer){case "text":closeText(parser);break;default:error(parser,"Max buffer length exceeded: "+buffer)}}
+ maxActual=Math.max(maxActual,len)}
+ parser.bufferCheckPosition=(clarinet.MAX_BUFFER_LENGTH-maxActual)+parser.position}
+ function clearBuffers(parser){for(var buffer in buffers){parser[buffer]=buffers[buffer]}}
+ var stringTokenPattern=/[\\"\n]/g;function CParser(opt){if(!(this instanceof CParser))return new CParser(opt);var parser=this;clearBuffers(parser);parser.bufferCheckPosition=clarinet.MAX_BUFFER_LENGTH;parser.q=parser.c=parser.p="";parser.opt=opt||{};parser.closed=parser.closedRoot=parser.sawRoot=!1;parser.tag=parser.error=null;parser.state=S.BEGIN;parser.stack=new Array();parser.position=parser.column=0;parser.line=1;parser.slashed=!1;parser.unicodeI=0;parser.unicodeS=null;parser.depth=0;emit(parser,"onready")}
+ CParser.prototype={end:function(){end(this)},write:write,resume:function(){this.error=null;return this},close:function(){return this.write(null)}};try{Stream=fakeStream.Stream}catch(ex){Stream=function(){}}
+ function createStream(opt){return new CStream(opt)}
+ function CStream(opt){if(!(this instanceof CStream))return new CStream(opt);this._parser=new CParser(opt);this.writable=!0;this.readable=!0;this.bytes_remaining=0;this.bytes_in_sequence=0;this.temp_buffs={"2":new Buffer(2),"3":new Buffer(3),"4":new Buffer(4)};this.string='';var me=this;Stream.apply(me);this._parser.onend=function(){me.emit("end")};this._parser.onerror=function(er){me.emit("error",er);me._parser.error=null};streamWraps.forEach(function(ev){Object.defineProperty(me,"on"+ev,{get:function(){return me._parser["on"+ev]},set:function(h){if(!h){me.removeAllListeners(ev);me._parser["on"+ev]=h;return h}
+ me.on(ev,h)},enumerable:!0,configurable:!1})})}
+ CStream.prototype=Object.create(Stream.prototype,{constructor:{value:CStream}});CStream.prototype.write=function(data){data=new Buffer(data);for(var i=0;i<data.length;i++){var n=data[i];if(this.bytes_remaining>0){for(var j=0;j<this.bytes_remaining;j++){this.temp_buffs[this.bytes_in_sequence][this.bytes_in_sequence-this.bytes_remaining+j]=data[j]}
+ this.string=this.temp_buffs[this.bytes_in_sequence].toString();this.bytes_in_sequence=this.bytes_remaining=0;i=i+j-1;this._parser.write(this.string);this.emit("data",this.string);continue}
+ if(this.bytes_remaining===0&&n>=128){if((n>=194)&&(n<=223))this.bytes_in_sequence=2;if((n>=224)&&(n<=239))this.bytes_in_sequence=3;if((n>=240)&&(n<=244))this.bytes_in_sequence=4;if((this.bytes_in_sequence+i)>data.length){for(var k=0;k<=(data.length-1-i);k++){this.temp_buffs[this.bytes_in_sequence][k]=data[i+k]}
+ this.bytes_remaining=(i+this.bytes_in_sequence)-data.length;return!0}else{this.string=data.slice(i,(i+this.bytes_in_sequence)).toString();i=i+this.bytes_in_sequence-1;this._parser.write(this.string);this.emit("data",this.string);continue}}
+ for(var p=i;p<data.length;p++){if(data[p]>=128)break}
+ this.string=data.slice(i,p).toString();this._parser.write(this.string);this.emit("data",this.string);i=p-1;continue}};CStream.prototype.end=function(chunk){if(chunk&&chunk.length)this._parser.write(chunk.toString());this._parser.end();return!0};CStream.prototype.on=function(ev,handler){var me=this;if(!me._parser["on"+ev]&&streamWraps.indexOf(ev)!==-1){me._parser["on"+ev]=function(){var args=arguments.length===1?[arguments[0]]:Array.apply(null,arguments);args.splice(0,0,ev);me.emit.apply(me,args)}}
+ return Stream.prototype.on.call(me,ev,handler)};CStream.prototype.destroy=function(){clearBuffers(this._parser);this.emit("close")};function emit(parser,event,data){if(clarinet.INFO)console.log('-- emit',event,data);if(parser[event])parser[event](data)}
+ function emitNode(parser,event,data){closeValue(parser);emit(parser,event,data)}
+ function closeValue(parser,event){parser.textNode=textopts(parser.opt,parser.textNode);if(parser.textNode!==undefined){emit(parser,(event?event:"onvalue"),parser.textNode)}
+ parser.textNode=undefined}
+ function closeNumber(parser){if(parser.numberNode)
+ emit(parser,"onvalue",parseFloat(parser.numberNode));parser.numberNode=""}
+ function textopts(opt,text){if(text===undefined){return text}
+ if(opt.trim)text=text.trim();if(opt.normalize)text=text.replace(/\s+/g," ");return text}
+ function error(parser,er){closeValue(parser);er+="\nLine: "+parser.line+"\nColumn: "+parser.column+"\nChar: "+parser.c;er=new Error(er);parser.error=er;emit(parser,"onerror",er);return parser}
+ function end(parser){if(parser.state!==S.VALUE||parser.depth!==0)
+ error(parser,"Unexpected end");closeValue(parser);parser.c="";parser.closed=!0;emit(parser,"onend");CParser.call(parser,parser.opt);return parser}
+ function isWhitespace(c){return c===Char.carriageReturn||c===Char.lineFeed||c===Char.space||c===Char.tab}
+ function write(chunk){var parser=this;if(this.error)throw this.error;if(parser.closed)return error(parser,"Cannot write after close. Assign an onready handler.");if(chunk===null)return end(parser);var i=0,c=chunk.charCodeAt(0),p=parser.p;if(clarinet.DEBUG)console.log('write -> ['+chunk+']');while(c){p=c;parser.c=c=chunk.charCodeAt(i++);if(p!==c)parser.p=p;else p=parser.p;if(!c)break;if(clarinet.DEBUG)console.log(i,c,clarinet.STATE[parser.state]);parser.position ++;if(c===Char.lineFeed){parser.line ++;parser.column=0}else parser.column ++;switch(parser.state){case S.BEGIN:if(c===Char.openBrace)parser.state=S.OPEN_OBJECT;else if(c===Char.openBracket)parser.state=S.OPEN_ARRAY;else if(!isWhitespace(c))
+ error(parser,"Non-whitespace before {[.");continue;case S.OPEN_KEY:case S.OPEN_OBJECT:if(isWhitespace(c))continue;if(parser.state===S.OPEN_KEY)parser.stack.push(S.CLOSE_KEY);else{if(c===Char.closeBrace){emit(parser,'onopenobject');this.depth++;emit(parser,'oncloseobject');this.depth--;parser.state=parser.stack.pop()||S.VALUE;continue}else parser.stack.push(S.CLOSE_OBJECT)}
+ if(c===Char.doubleQuote)parser.state=S.STRING;else error(parser,"Malformed object key should start with \"");continue;case S.CLOSE_KEY:case S.CLOSE_OBJECT:if(isWhitespace(c))continue;(parser.state===S.CLOSE_KEY)?'key':'object';if(c===Char.colon){if(parser.state===S.CLOSE_OBJECT){parser.stack.push(S.CLOSE_OBJECT);closeValue(parser,'onopenobject');this.depth++}else closeValue(parser,'onkey');parser.state=S.VALUE}else if(c===Char.closeBrace){emitNode(parser,'oncloseobject');this.depth--;parser.state=parser.stack.pop()||S.VALUE}else if(c===Char.comma){if(parser.state===S.CLOSE_OBJECT)
+ parser.stack.push(S.CLOSE_OBJECT);closeValue(parser);parser.state=S.OPEN_KEY}else error(parser,'Bad object');continue;case S.OPEN_ARRAY:case S.VALUE:if(isWhitespace(c))continue;if(parser.state===S.OPEN_ARRAY){emit(parser,'onopenarray');this.depth++;parser.state=S.VALUE;if(c===Char.closeBracket){emit(parser,'onclosearray');this.depth--;parser.state=parser.stack.pop()||S.VALUE;continue}else{parser.stack.push(S.CLOSE_ARRAY)}}
+ if(c===Char.doubleQuote)parser.state=S.STRING;else if(c===Char.openBrace)parser.state=S.OPEN_OBJECT;else if(c===Char.openBracket)parser.state=S.OPEN_ARRAY;else if(c===Char.t)parser.state=S.TRUE;else if(c===Char.f)parser.state=S.FALSE;else if(c===Char.n)parser.state=S.NULL;else if(c===Char.minus){parser.numberNode+="-"}else if(Char._0<=c&&c<=Char._9){parser.numberNode+=String.fromCharCode(c);parser.state=S.NUMBER_DIGIT}else error(parser,"Bad value");continue;case S.CLOSE_ARRAY:if(c===Char.comma){parser.stack.push(S.CLOSE_ARRAY);closeValue(parser,'onvalue');parser.state=S.VALUE}else if(c===Char.closeBracket){emitNode(parser,'onclosearray');this.depth--;parser.state=parser.stack.pop()||S.VALUE}else if(isWhitespace(c))
+ continue;else error(parser,'Bad array');continue;case S.STRING:if(parser.textNode===undefined){parser.textNode=""}
+ var starti=i-1,slashed=parser.slashed,unicodeI=parser.unicodeI;STRING_BIGLOOP:while(!0){if(clarinet.DEBUG)
+ console.log(i,c,clarinet.STATE[parser.state],slashed);while(unicodeI>0){parser.unicodeS+=String.fromCharCode(c);c=chunk.charCodeAt(i++);parser.position++;if(unicodeI===4){parser.textNode+=String.fromCharCode(parseInt(parser.unicodeS,16));unicodeI=0;starti=i-1}else{unicodeI++}
+ if(!c)break STRING_BIGLOOP}
+ if(c===Char.doubleQuote&&!slashed){parser.state=parser.stack.pop()||S.VALUE;parser.textNode+=chunk.substring(starti,i-1);parser.position+=i-1-starti;break}
+ if(c===Char.backslash&&!slashed){slashed=!0;parser.textNode+=chunk.substring(starti,i-1);parser.position+=i-1-starti;c=chunk.charCodeAt(i++);parser.position++;if(!c)break}
+ if(slashed){slashed=!1;if(c===Char.n){parser.textNode+='\n'}else if(c===Char.r){parser.textNode+='\r'}else if(c===Char.t){parser.textNode+='\t'}else if(c===Char.f){parser.textNode+='\f'}else if(c===Char.b){parser.textNode+='\b'}else if(c===Char.u){unicodeI=1;parser.unicodeS=''}else{parser.textNode+=String.fromCharCode(c)}
+ c=chunk.charCodeAt(i++);parser.position++;starti=i-1;if(!c)break;else continue}
+ stringTokenPattern.lastIndex=i;var reResult=stringTokenPattern.exec(chunk);if(reResult===null){i=chunk.length+1;parser.textNode+=chunk.substring(starti,i-1);parser.position+=i-1-starti;break}
+ i=reResult.index+1;c=chunk.charCodeAt(reResult.index);if(!c){parser.textNode+=chunk.substring(starti,i-1);parser.position+=i-1-starti;break}}
+ parser.slashed=slashed;parser.unicodeI=unicodeI;continue;case S.TRUE:if(c===Char.r)parser.state=S.TRUE2;else error(parser,'Invalid true started with t'+c);continue;case S.TRUE2:if(c===Char.u)parser.state=S.TRUE3;else error(parser,'Invalid true started with tr'+c);continue;case S.TRUE3:if(c===Char.e){emit(parser,"onvalue",!0);parser.state=parser.stack.pop()||S.VALUE}else error(parser,'Invalid true started with tru'+c);continue;case S.FALSE:if(c===Char.a)parser.state=S.FALSE2;else error(parser,'Invalid false started with f'+c);continue;case S.FALSE2:if(c===Char.l)parser.state=S.FALSE3;else error(parser,'Invalid false started with fa'+c);continue;case S.FALSE3:if(c===Char.s)parser.state=S.FALSE4;else error(parser,'Invalid false started with fal'+c);continue;case S.FALSE4:if(c===Char.e){emit(parser,"onvalue",!1);parser.state=parser.stack.pop()||S.VALUE}else error(parser,'Invalid false started with fals'+c);continue;case S.NULL:if(c===Char.u)parser.state=S.NULL2;else error(parser,'Invalid null started with n'+c);continue;case S.NULL2:if(c===Char.l)parser.state=S.NULL3;else error(parser,'Invalid null started with nu'+c);continue;case S.NULL3:if(c===Char.l){emit(parser,"onvalue",null);parser.state=parser.stack.pop()||S.VALUE}else error(parser,'Invalid null started with nul'+c);continue;case S.NUMBER_DECIMAL_POINT:if(c===Char.period){parser.numberNode+=".";parser.state=S.NUMBER_DIGIT}else error(parser,'Leading zero not followed by .');continue;case S.NUMBER_DIGIT:if(Char._0<=c&&c<=Char._9)parser.numberNode+=String.fromCharCode(c);else if(c===Char.period){if(parser.numberNode.indexOf('.')!==-1)
+ error(parser,'Invalid number has two dots');parser.numberNode+="."}else if(c===Char.e||c===Char.E){if(parser.numberNode.indexOf('e')!==-1||parser.numberNode.indexOf('E')!==-1)
+ error(parser,'Invalid number has two exponential');parser.numberNode+="e"}else if(c===Char.plus||c===Char.minus){if(!(p===Char.e||p===Char.E))
+ error(parser,'Invalid symbol in number');parser.numberNode+=String.fromCharCode(c)}else{closeNumber(parser);i--;parser.state=parser.stack.pop()||S.VALUE}
+ continue;default:error(parser,"Unknown state: "+parser.state)}}
+ if(parser.position>=parser.bufferCheckPosition)
+ checkBufferLength(parser);return parser}})(exports)});function JsonStream(blob){var pos=0;var parser=JsonParser(!0);var rv={pullAsync:function(numBytes){return __awaiter(this,void 0,void 0,function(){var slize,jsonPart,result;return __generator(this,function(_a){switch(_a.label){case 0:slize=blob.slice(pos,pos+numBytes);pos+=numBytes;return[4,readBlobAsync(slize,'text')];case 1:jsonPart=_a.sent();result=parser.write(jsonPart);rv.result=result||{};return[2,result]}})})},pullSync:function(numBytes){var slize=blob.slice(pos,pos+numBytes);pos+=numBytes;var jsonPart=readBlobSync(slize,'text');var result=parser.write(jsonPart);rv.result=result||{};return result},done:function(){return parser.done()},eof:function(){return pos>=blob.size},result:{}};return rv}
+ function JsonParser(allowPartial){var parser=clarinet_1.parser();var level=0;var result;var stack=[];var obj;var key;var done=!1;var array=!1;parser.onopenobject=function(newKey){var newObj={};newObj.incomplete=!0;if(!result)
+ result=newObj;if(obj){stack.push([key,obj,array]);if(allowPartial){if(array){obj.push(newObj)}else{obj[key]=newObj}}}
+ obj=newObj;key=newKey;array=!1;++level};parser.onkey=function(newKey){return key=newKey};parser.onvalue=function(value){return array?obj.push(value):obj[key]=value};parser.oncloseobject=function(){var _a;delete obj.incomplete;key=null;if(--level===0){done=!0}else{var completedObj=obj;_a=stack.pop(),key=_a[0],obj=_a[1],array=_a[2];if(!allowPartial){if(array){obj.push(completedObj)}else{obj[key]=completedObj}}}};parser.onopenarray=function(){var newObj=[];newObj.incomplete=!0;if(!result)
+ result=newObj;if(obj){stack.push([key,obj,array]);if(allowPartial){if(array){obj.push(newObj)}else{obj[key]=newObj}}}
+ obj=newObj;array=!0;key=null;++level};parser.onclosearray=function(){var _a;delete obj.incomplete;key=null;if(--level===0){done=!0}else{var completedObj=obj;_a=stack.pop(),key=_a[0],obj=_a[1],array=_a[2];if(!allowPartial){if(array){obj.push(completedObj)}else{obj[key]=completedObj}}}};return{write:function(jsonPart){parser.write(jsonPart);return result},done:function(){return done}}}
+ var DEFAULT_KILOBYTES_PER_CHUNK=1024;function importDB(exportedData,options){return __awaiter(this,void 0,void 0,function(){var CHUNK_SIZE,stream,dbExport,db;return __generator(this,function(_a){switch(_a.label){case 0:options=options||{};CHUNK_SIZE=options.chunkSizeBytes||(DEFAULT_KILOBYTES_PER_CHUNK*1024);return[4,loadUntilWeGotEnoughData(exportedData,CHUNK_SIZE)];case 1:stream=_a.sent();dbExport=stream.result.data;db=new Dexie__default["default"](dbExport.databaseName);db.version(dbExport.databaseVersion).stores(extractDbSchema(dbExport));return[4,importInto(db,stream,options)];case 2:_a.sent();return[2,db]}})})}
+ function peakImportFile(exportedData){return __awaiter(this,void 0,void 0,function(){var stream;return __generator(this,function(_a){switch(_a.label){case 0:stream=JsonStream(exportedData);_a.label=1;case 1:if(!!stream.eof())return[3,3];return[4,stream.pullAsync(5*1024)];case 2:_a.sent();if(stream.result.data&&stream.result.data.data){delete stream.result.data.data;return[3,3]}
+ return[3,1];case 3:return[2,stream.result]}})})}
+ function importInto(db,exportedData,options){return __awaiter(this,void 0,void 0,function(){function importAll(){return __awaiter(this,void 0,void 0,function(){var _loop_1,_i,_a,tableExport,state_1;return __generator(this,function(_b){switch(_b.label){case 0:_loop_1=function(tableExport){var tableName,table,tableSchemaStr,sourceRows,rows,i,obj,filter,filteredRows,_c,keys,values;return __generator(this,function(_d){switch(_d.label){case 0:if(!tableExport.rows)
+ return[2,"break"];if(!tableExport.rows.incomplete&&tableExport.rows.length===0)
+ return[2,"continue"];if(progressCallback){Dexie__default["default"].ignoreTransaction(function(){return progressCallback(progress)})}
+ tableName=tableExport.tableName;table=db.table(tableName);tableSchemaStr=dbExport.tables.filter(function(t){return t.name===tableName})[0].schema;if(!table){if(!options.acceptMissingTables)
+ throw new Error("Exported table ".concat(tableExport.tableName," is missing in installed database"));else return[2,"continue"]}
+ if(!options.acceptChangedPrimaryKey&&tableSchemaStr.split(',')[0]!=table.schema.primKey.src){throw new Error("Primary key differs for table ".concat(tableExport.tableName,". "))}
+ sourceRows=tableExport.rows;rows=[];for(i=0;i<sourceRows.length;i++){obj=sourceRows[i];if(!obj.incomplete){rows.push(TSON.revive(obj))}else{break}}
+ filter=options.filter;filteredRows=filter?tableExport.inbound?rows.filter(function(value){return filter(tableName,value)}):rows.filter(function(_a){var key=_a[0],value=_a[1];return filter(tableName,value,key)}):rows;_c=tableExport.inbound?[undefined,filteredRows]:[filteredRows.map(function(row){return row[0]}),rows.map(function(row){return row[1]})],keys=_c[0],values=_c[1];if(!options.overwriteValues)return[3,2];return[4,table.bulkPut(values,keys)];case 1:_d.sent();return[3,4];case 2:return[4,table.bulkAdd(values,keys)];case 3:_d.sent();_d.label=4;case 4:progress.completedRows+=rows.length;if(!rows.incomplete){progress.completedTables+=1}
+ sourceRows.splice(0,rows.length);return[2]}})};_i=0,_a=dbExport.data;_b.label=1;case 1:if(!(_i<_a.length))return[3,4];tableExport=_a[_i];return[5,_loop_1(tableExport)];case 2:state_1=_b.sent();if(state_1==="break")
+ return[3,4];_b.label=3;case 3:_i++;return[3,1];case 4:while(dbExport.data.length>0&&dbExport.data[0].rows&&!dbExport.data[0].rows.incomplete){dbExport.data.splice(0,1)}
+ if(!(!jsonStream.done()&&!jsonStream.eof()))return[3,8];if(!readBlobsSynchronously)return[3,5];jsonStream.pullSync(CHUNK_SIZE);return[3,7];case 5:return[4,Dexie__default["default"].waitFor(jsonStream.pullAsync(CHUNK_SIZE))];case 6:_b.sent();_b.label=7;case 7:return[3,9];case 8:return[3,10];case 9:return[3,0];case 10:return[2]}})})}
+ var CHUNK_SIZE,jsonStream,dbExportFile,readBlobsSynchronously,dbExport,progressCallback,progress,_i,_a,table;return __generator(this,function(_b){switch(_b.label){case 0:options=options||{};CHUNK_SIZE=options.chunkSizeBytes||(DEFAULT_KILOBYTES_PER_CHUNK*1024);return[4,loadUntilWeGotEnoughData(exportedData,CHUNK_SIZE)];case 1:jsonStream=_b.sent();dbExportFile=jsonStream.result;readBlobsSynchronously='FileReaderSync' in self;dbExport=dbExportFile.data;if(!options.acceptNameDiff&&db.name!==dbExport.databaseName)
+ throw new Error("Name differs. Current database name is ".concat(db.name," but export is ").concat(dbExport.databaseName));if(!options.acceptVersionDiff&&db.verno!==dbExport.databaseVersion){throw new Error("Database version differs. Current database is in version ".concat(db.verno," but export is ").concat(dbExport.databaseVersion))}
+ progressCallback=options.progressCallback;progress={done:!1,completedRows:0,completedTables:0,totalRows:dbExport.tables.reduce(function(p,c){return p+c.rowCount},0),totalTables:dbExport.tables.length};if(progressCallback){Dexie__default["default"].ignoreTransaction(function(){return progressCallback(progress)})}
+ if(!options.clearTablesBeforeImport)return[3,5];_i=0,_a=db.tables;_b.label=2;case 2:if(!(_i<_a.length))return[3,5];table=_a[_i];return[4,table.clear()];case 3:_b.sent();_b.label=4;case 4:_i++;return[3,2];case 5:if(!options.noTransaction)return[3,7];return[4,importAll()];case 6:_b.sent();return[3,9];case 7:return[4,db.transaction('rw',db.tables,importAll)];case 8:_b.sent();_b.label=9;case 9:progress.done=!0;if(progressCallback){Dexie__default["default"].ignoreTransaction(function(){return progressCallback(progress)})}
+ return[2]}})})}
+ function loadUntilWeGotEnoughData(exportedData,CHUNK_SIZE){return __awaiter(this,void 0,void 0,function(){var stream,dbExportFile;return __generator(this,function(_a){switch(_a.label){case 0:stream=('slice' in exportedData?JsonStream(exportedData):exportedData);_a.label=1;case 1:if(!!stream.eof())return[3,3];return[4,stream.pullAsync(CHUNK_SIZE)];case 2:_a.sent();if(stream.result.data&&stream.result.data.data)
+ return[3,3];return[3,1];case 3:dbExportFile=stream.result;if(!dbExportFile||dbExportFile.formatName!="dexie")
+ throw new Error("Given file is not a dexie export");if(dbExportFile.formatVersion>VERSION){throw new Error("Format version ".concat(dbExportFile.formatVersion," not supported"))}
+ if(!dbExportFile.data){throw new Error("No data in export file")}
+ if(!dbExportFile.data.databaseName){throw new Error("Missing databaseName in export file")}
+ if(!dbExportFile.data.databaseVersion){throw new Error("Missing databaseVersion in export file")}
+ if(!dbExportFile.data.tables){throw new Error("Missing tables in export file")}
+ return[2,stream]}})})}
+ Dexie__default["default"].prototype.export=function(options){return exportDB(this,options)};Dexie__default["default"].prototype.import=function(blob,options){return importInto(this,blob,options)};Dexie__default["default"].import=function(blob,options){return importDB(blob,options)};var dexieExportImport=(function(){throw new Error("This addon extends Dexie.prototype globally and does not have be included in Dexie constructor's addons options.")});exports["default"]=dexieExportImport;exports.exportDB=exportDB;exports.importDB=importDB;exports.importInto=importInto;exports.peakImportFile=peakImportFile;Object.defineProperty(exports,'__esModule',{value:!0})}))
diff --git a/ext/lib/dexie-export-import.min.js.map b/ext/lib/dexie-export-import.min.js.map
new file mode 100644
index 00000000..f3684f32
--- /dev/null
+++ b/ext/lib/dexie-export-import.min.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"dexie-export-import.js","sources":["../../../node_modules/.pnpm/tslib@2.3.1/node_modules/tslib/tslib.es6.js","../src/helpers.ts","../../../node_modules/.pnpm/typeson@5.18.2_iz6lblx3cjm7v34nvvsjg2rl44/node_modules/typeson/dist/typeson.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/node_modules/typeson/dist/typeson-esm.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/node_modules/base64-arraybuffer-es6/dist/base64-arraybuffer-es.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/user-object.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/presets/array-nonindex-keys.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/undef.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/primitive-objects.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/presets/special-numbers.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/nan.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/infinity.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/negative-infinity.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/date.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/regexp.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/map.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/set.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/arraybuffer.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/typed-arrays.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/dataview.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/intl-types.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/utils/stringArrayBuffer.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/file.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/bigint.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/bigint-object.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/cryptokey.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/presets/structured-cloning.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/imagedata.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/imagebitmap.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/filelist.js","../../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/blob.js","../../../node_modules/.pnpm/base64-arraybuffer-es6@1.0.0/node_modules/base64-arraybuffer-es6/dist/base64-arraybuffer-es.js","../src/tson-typed-array.ts","../src/tson-arraybuffer.ts","../src/tson.ts","../src/export.ts","../src/json-structure.ts","../tools/build-configs/fake-stream.js","../../../node_modules/.pnpm/github.com+dfahlander+clarinet@d1dc89f7e67488b16ad98b2464d29a9b3bc6f5ef/node_modules/clarinet/clarinet.js","../src/json-stream.ts","../src/import.ts","../src/dexie-export-import.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import Dexie from 'dexie';\nimport { DexieExportedDatabase } from './json-structure';\n\nexport function getSchemaString(table: Dexie.Table<any, any>) {\n const primKeyAndIndexes = [table.schema.primKey].concat(table.schema.indexes);\n return primKeyAndIndexes.map(index => index.src).join(',');\n}\n\nexport function extractDbSchema(exportedDb: DexieExportedDatabase) {\n const schema: {\n [tableName: string]: string;\n } = {};\n for (const table of exportedDb.tables) {\n schema[table.name] = table.schema;\n }\n return schema;\n}\n\n\n// Missing FileReaderSync type in standard typescript libs:\ninterface FileReaderSync {\n readAsArrayBuffer(blob: Blob): ArrayBuffer;\n readAsBinaryString(blob: Blob): string;\n readAsDataURL(blob: Blob): string;\n readAsText(blob: Blob, encoding?: string): string;\n}\ndeclare var FileReaderSync: {\n prototype: FileReaderSync;\n new(): FileReaderSync;\n};\n// -----------------------------------------------\n\nexport interface TypeMapper {\n binary: ArrayBuffer;\n text: string;\n}\n\nexport function readBlobAsync<T extends keyof TypeMapper>(blob: Blob, type: T): Promise<TypeMapper[T]> {\n return new Promise<TypeMapper[T]>((resolve, reject) => {\n const reader = new FileReader();\n reader.onabort = ev => reject(new Error(\"file read aborted\"));\n reader.onerror = ev => reject((ev.target as any).error);\n reader.onload = ev => resolve((ev.target as any).result);\n if (type === 'binary')\n reader.readAsArrayBuffer(blob);\n else\n reader.readAsText(blob);\n });\n}\n\nexport function readBlobSync<T extends keyof TypeMapper>(blob: Blob, type: T): TypeMapper[T] {\n if (typeof FileReaderSync === 'undefined') {\n throw new Error('FileReaderSync missing. Reading blobs synchronously requires code to run from within a web worker. Use TSON.encapsulateAsync() to do it from the main thread.');\n }\n const reader = new FileReaderSync(); // Requires worker environment\n const data = type === 'binary' ?\n reader.readAsArrayBuffer(blob) :\n reader.readAsText(blob);\n\n return data as TypeMapper[T];\n}\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.Typeson = factory());\n}(this, (function () { 'use strict';\n\n function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n }\n\n function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n }\n\n function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n }\n\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n }\n\n function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n }\n\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n }\n\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n\n function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n }\n\n function _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n }\n\n function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n\n /**\n * We keep this function minimized so if using two instances of this\n * library, where one is minimized and one is not, it will still work\n * with `hasConstructorOf`.\n * With ES6 classes, we may be able to simply use `class TypesonPromise\n * extends Promise` and add a string tag for detection.\n * @param {function} f\n */\n // eslint-disable-next-line max-len\n // eslint-disable-next-line block-spacing, space-before-function-paren, space-before-blocks, space-infix-ops, semi, promise/avoid-new\n var TypesonPromise = function TypesonPromise(f) {\n _classCallCheck(this, TypesonPromise);\n\n this.p = new Promise(f);\n }; // eslint-disable-next-line max-len\n // class TypesonPromise extends Promise {get[Symbol.toStringTag](){return 'TypesonPromise'};} // eslint-disable-line keyword-spacing, space-before-function-paren, space-before-blocks, block-spacing, semi\n\n\n TypesonPromise.__typeson__type__ = 'TypesonPromise'; // Note: core-js-bundle provides a `Symbol` polyfill\n\n /* istanbul ignore else */\n\n if (typeof Symbol !== 'undefined') {\n // Ensure `isUserObject` will return `false` for `TypesonPromise`\n TypesonPromise.prototype[Symbol.toStringTag] = 'TypesonPromise';\n }\n /**\n *\n * @param {function} [onFulfilled]\n * @param {function} [onRejected]\n * @returns {TypesonPromise}\n */\n\n\n TypesonPromise.prototype.then = function (onFulfilled, onRejected) {\n var _this = this;\n\n return new TypesonPromise(function (typesonResolve, typesonReject) {\n // eslint-disable-next-line promise/catch-or-return\n _this.p.then(function (res) {\n // eslint-disable-next-line promise/always-return\n typesonResolve(onFulfilled ? onFulfilled(res) : res);\n })[\"catch\"](function (res) {\n return onRejected ? onRejected(res) : Promise.reject(res);\n }).then(typesonResolve, typesonReject);\n });\n };\n /**\n *\n * @param {function} onRejected\n * @returns {TypesonPromise}\n */\n\n\n TypesonPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n };\n /**\n *\n * @param {Any} v\n * @returns {TypesonPromise}\n */\n\n\n TypesonPromise.resolve = function (v) {\n return new TypesonPromise(function (typesonResolve) {\n typesonResolve(v);\n });\n };\n /**\n *\n * @param {Any} v\n * @returns {TypesonPromise}\n */\n\n\n TypesonPromise.reject = function (v) {\n return new TypesonPromise(function (typesonResolve, typesonReject) {\n typesonReject(v);\n });\n };\n\n ['all', 'race'].forEach(function (meth) {\n /**\n *\n * @param {Promise[]} promArr\n * @returns {TypesonPromise}\n */\n TypesonPromise[meth] = function (promArr) {\n return new TypesonPromise(function (typesonResolve, typesonReject) {\n // eslint-disable-next-line promise/catch-or-return\n Promise[meth](promArr.map(function (prom) {\n return prom && prom.constructor && prom.constructor.__typeson__type__ === 'TypesonPromise' ? prom.p : prom;\n })).then(typesonResolve, typesonReject);\n });\n };\n });\n\n var _ref = {},\n toStr = _ref.toString,\n hasOwn = {}.hasOwnProperty,\n getProto = Object.getPrototypeOf,\n fnToString = hasOwn.toString;\n /**\n * Second argument not in use internally, but provided for utility.\n * @param {Any} v\n * @param {boolean} catchCheck\n * @returns {boolean}\n */\n\n function isThenable(v, catchCheck) {\n return isObject(v) && typeof v.then === 'function' && (!catchCheck || typeof v[\"catch\"] === 'function');\n }\n /**\n *\n * @param {Any} val\n * @returns {string}\n */\n\n\n function toStringTag(val) {\n return toStr.call(val).slice(8, -1);\n }\n /**\n * This function is dependent on both constructors\n * being identical so any minimization is expected of both.\n * @param {Any} a\n * @param {function} b\n * @returns {boolean}\n */\n\n\n function hasConstructorOf(a, b) {\n if (!a || _typeof(a) !== 'object') {\n return false;\n }\n\n var proto = getProto(a);\n\n if (!proto) {\n return b === null;\n }\n\n var Ctor = hasOwn.call(proto, 'constructor') && proto.constructor;\n\n if (typeof Ctor !== 'function') {\n return b === null;\n }\n\n if (b === Ctor) {\n return true;\n }\n\n if (b !== null && fnToString.call(Ctor) === fnToString.call(b)) {\n return true;\n }\n\n if (typeof b === 'function' && typeof Ctor.__typeson__type__ === 'string' && Ctor.__typeson__type__ === b.__typeson__type__) {\n return true;\n }\n\n return false;\n }\n /**\n *\n * @param {Any} val\n * @returns {boolean}\n */\n\n\n function isPlainObject(val) {\n // Mirrors jQuery's\n if (!val || toStringTag(val) !== 'Object') {\n return false;\n }\n\n var proto = getProto(val);\n\n if (!proto) {\n // `Object.create(null)`\n return true;\n }\n\n return hasConstructorOf(val, Object);\n }\n /**\n *\n * @param {Any} val\n * @returns {boolean}\n */\n\n\n function isUserObject(val) {\n if (!val || toStringTag(val) !== 'Object') {\n return false;\n }\n\n var proto = getProto(val);\n\n if (!proto) {\n // `Object.create(null)`\n return true;\n }\n\n return hasConstructorOf(val, Object) || isUserObject(proto);\n }\n /**\n *\n * @param {Any} v\n * @returns {boolean}\n */\n\n\n function isObject(v) {\n return v && _typeof(v) === 'object';\n }\n /**\n *\n * @param {string} keyPathComponent\n * @returns {string}\n */\n\n\n function escapeKeyPathComponent(keyPathComponent) {\n return keyPathComponent.replace(/~/g, '~0').replace(/\\./g, '~1');\n }\n /**\n *\n * @param {string} keyPathComponent\n * @returns {string}\n */\n\n\n function unescapeKeyPathComponent(keyPathComponent) {\n return keyPathComponent.replace(/~1/g, '.').replace(/~0/g, '~');\n }\n /**\n * @param {PlainObject|GenericArray} obj\n * @param {string} keyPath\n * @returns {Any}\n */\n\n\n function getByKeyPath(obj, keyPath) {\n if (keyPath === '') {\n return obj;\n }\n\n var period = keyPath.indexOf('.');\n\n if (period > -1) {\n var innerObj = obj[unescapeKeyPathComponent(keyPath.slice(0, period))];\n return innerObj === undefined ? undefined : getByKeyPath(innerObj, keyPath.slice(period + 1));\n }\n\n return obj[unescapeKeyPathComponent(keyPath)];\n }\n /**\n *\n * @param {PlainObject} obj\n * @param {string} keyPath\n * @param {Any} value\n * @returns {Any}\n */\n\n\n function setAtKeyPath(obj, keyPath, value) {\n if (keyPath === '') {\n return value;\n }\n\n var period = keyPath.indexOf('.');\n\n if (period > -1) {\n var innerObj = obj[unescapeKeyPathComponent(keyPath.slice(0, period))];\n return setAtKeyPath(innerObj, keyPath.slice(period + 1), value);\n }\n\n obj[unescapeKeyPathComponent(keyPath)] = value;\n return obj;\n }\n /**\n *\n * @param {external:JSON} value\n * @returns {\"null\"|\"array\"|\"undefined\"|\"boolean\"|\"number\"|\"string\"|\n * \"object\"|\"symbol\"}\n */\n\n\n function getJSONType(value) {\n return value === null ? 'null' : Array.isArray(value) ? 'array' : _typeof(value);\n }\n\n var keys = Object.keys,\n isArray = Array.isArray,\n hasOwn$1 = {}.hasOwnProperty,\n internalStateObjPropsToIgnore = ['type', 'replaced', 'iterateIn', 'iterateUnsetNumeric'];\n /**\n * Handle plain object revivers first so reference setting can use\n * revived type (e.g., array instead of object); assumes revived\n * has same structure or will otherwise break subsequent references.\n * @param {PlainObjectType} a\n * @param {PlainObjectType} b\n * @returns {1|-1|boolean}\n */\n\n function nestedPathsFirst(a, b) {\n if (a.keypath === '') {\n return -1;\n }\n\n var as = a.keypath.match(/\\./g) || 0;\n var bs = b.keypath.match(/\\./g) || 0;\n\n if (as) {\n as = as.length;\n }\n\n if (bs) {\n bs = bs.length;\n }\n\n return as > bs ? -1 : as < bs ? 1 : a.keypath < b.keypath ? -1 : a.keypath > b.keypath;\n }\n /**\n * An instance of this class can be used to call `stringify()` and `parse()`.\n * Typeson resolves cyclic references by default. Can also be extended to\n * support custom types using the register() method.\n *\n * @class\n * @param {{cyclic: boolean}} [options] - if cyclic (default true),\n * cyclic references will be handled gracefully.\n */\n\n\n var Typeson =\n /*#__PURE__*/\n function () {\n function Typeson(options) {\n _classCallCheck(this, Typeson);\n\n this.options = options; // Replacers signature: replace (value). Returns falsy if not\n // replacing. Otherwise ['Date', value.getTime()]\n\n this.plainObjectReplacers = [];\n this.nonplainObjectReplacers = []; // Revivers: [{type => reviver}, {plain: boolean}].\n // Sample: [{'Date': value => new Date(value)}, {plain: false}]\n\n this.revivers = {};\n /** Types registered via `register()`. */\n\n this.types = {};\n }\n /**\n * @typedef {null|boolean|number|string|GenericArray|PlainObject} JSON\n */\n\n /**\n * @callback JSONReplacer\n * @param {\"\"|string} key\n * @param {JSON} value\n * @returns {number|string|boolean|null|PlainObject|undefined}\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#The%20replacer%20parameter\n */\n\n /**\n * Serialize given object to Typeson.\n * Initial arguments work identical to those of `JSON.stringify`.\n * The `replacer` argument has nothing to do with our replacers.\n * @param {Any} obj\n * @param {JSONReplacer|string[]} replacer\n * @param {number|string} space\n * @param {object} opts\n * @returns {string|Promise} Promise resolves to a string\n */\n\n\n _createClass(Typeson, [{\n key: \"stringify\",\n value: function stringify(obj, replacer, space, opts) {\n opts = _objectSpread2({}, this.options, {}, opts, {\n stringification: true\n });\n var encapsulated = this.encapsulate(obj, null, opts);\n\n if (isArray(encapsulated)) {\n return JSON.stringify(encapsulated[0], replacer, space);\n }\n\n return encapsulated.then(function (res) {\n return JSON.stringify(res, replacer, space);\n });\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {Any} obj\n * @param {JSONReplacer|string[]} replacer\n * @param {number|string} space\n * @param {object} opts\n * @returns {string}\n */\n\n }, {\n key: \"stringifySync\",\n value: function stringifySync(obj, replacer, space, opts) {\n return this.stringify(obj, replacer, space, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: true\n }));\n }\n /**\n *\n * @param {Any} obj\n * @param {JSONReplacer|string[]} replacer\n * @param {number|string} space\n * @param {object} opts\n * @returns {Promise<string>}\n */\n\n }, {\n key: \"stringifyAsync\",\n value: function stringifyAsync(obj, replacer, space, opts) {\n return this.stringify(obj, replacer, space, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: false\n }));\n }\n /**\n * Parse Typeson back into an obejct.\n * Initial arguments works identical to those of `JSON.parse()`.\n * @param {string} text\n * @param {function} reviver This JSON reviver has nothing to do with\n * our revivers.\n * @param {object} opts\n * @returns {external:JSON}\n */\n\n }, {\n key: \"parse\",\n value: function parse(text, reviver, opts) {\n opts = _objectSpread2({}, this.options, {}, opts, {\n parse: true\n });\n return this.revive(JSON.parse(text, reviver), opts);\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {string} text\n * @param {function} reviver This JSON reviver has nothing to do with\n * our revivers.\n * @param {object} opts\n * @returns {external:JSON}\n */\n\n }, {\n key: \"parseSync\",\n value: function parseSync(text, reviver, opts) {\n return this.parse(text, reviver, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: true\n }));\n }\n /**\n * @param {string} text\n * @param {function} reviver This JSON reviver has nothing to do with\n * our revivers.\n * @param {object} opts\n * @returns {Promise} Resolves to `external:JSON`\n */\n\n }, {\n key: \"parseAsync\",\n value: function parseAsync(text, reviver, opts) {\n return this.parse(text, reviver, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: false\n }));\n }\n /**\n *\n * @param {Any} obj\n * @param {object} stateObj\n * @param {object} [opts={}]\n * @returns {string[]|false}\n */\n\n }, {\n key: \"specialTypeNames\",\n value: function specialTypeNames(obj, stateObj) {\n var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n opts.returnTypeNames = true;\n return this.encapsulate(obj, stateObj, opts);\n }\n /**\n *\n * @param {Any} obj\n * @param {PlainObject} stateObj\n * @param {PlainObject} [opts={}]\n * @returns {Promise|GenericArray|PlainObject|string|false}\n */\n\n }, {\n key: \"rootTypeName\",\n value: function rootTypeName(obj, stateObj) {\n var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n opts.iterateNone = true;\n return this.encapsulate(obj, stateObj, opts);\n }\n /**\n * Encapsulate a complex object into a plain Object by replacing\n * registered types with plain objects representing the types data.\n *\n * This method is used internally by `Typeson.stringify()`.\n * @param {Any} obj - Object to encapsulate.\n * @param {PlainObject} stateObj\n * @param {PlainObject} opts\n * @returns {Promise|GenericArray|PlainObject|string|false}\n */\n\n }, {\n key: \"encapsulate\",\n value: function encapsulate(obj, stateObj, opts) {\n opts = _objectSpread2({\n sync: true\n }, this.options, {}, opts);\n var _opts = opts,\n sync = _opts.sync;\n var that = this,\n types = {},\n refObjs = [],\n // For checking cyclic references\n refKeys = [],\n // For checking cyclic references\n promisesDataRoot = []; // Clone the object deeply while at the same time replacing any\n // special types or cyclic reference:\n\n var cyclic = 'cyclic' in opts ? opts.cyclic : true;\n var _opts2 = opts,\n encapsulateObserver = _opts2.encapsulateObserver;\n\n var ret = _encapsulate('', obj, cyclic, stateObj || {}, promisesDataRoot);\n /**\n *\n * @param {Any} ret\n * @returns {GenericArray|PlainObject|string|false}\n */\n\n\n function finish(ret) {\n // Add `$types` to result only if we ever bumped into a\n // special type (or special case where object has own `$types`)\n var typeNames = Object.values(types);\n\n if (opts.iterateNone) {\n if (typeNames.length) {\n return typeNames[0];\n }\n\n return Typeson.getJSONType(ret);\n }\n\n if (typeNames.length) {\n if (opts.returnTypeNames) {\n return _toConsumableArray(new Set(typeNames));\n } // Special if array (or a primitive) was serialized\n // because JSON would ignore custom `$types` prop on it\n\n\n if (!ret || !isPlainObject(ret) || // Also need to handle if this is an object with its\n // own `$types` property (to avoid ambiguity)\n hasOwn$1.call(ret, '$types')) {\n ret = {\n $: ret,\n $types: {\n $: types\n }\n };\n } else {\n ret.$types = types;\n } // No special types\n\n } else if (isObject(ret) && hasOwn$1.call(ret, '$types')) {\n ret = {\n $: ret,\n $types: true\n };\n }\n\n if (opts.returnTypeNames) {\n return false;\n }\n\n return ret;\n }\n /**\n *\n * @param {Any} ret\n * @param {GenericArray} promisesData\n * @returns {Promise<Any>}\n */\n\n\n function checkPromises(_x, _x2) {\n return _checkPromises.apply(this, arguments);\n }\n /**\n *\n * @param {object} stateObj\n * @param {object} ownKeysObj\n * @param {function} cb\n * @returns {undefined}\n */\n\n\n function _checkPromises() {\n _checkPromises = _asyncToGenerator(\n /*#__PURE__*/\n regeneratorRuntime.mark(function _callee2(ret, promisesData) {\n var promResults;\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return Promise.all(promisesData.map(function (pd) {\n return pd[1].p;\n }));\n\n case 2:\n promResults = _context2.sent;\n _context2.next = 5;\n return Promise.all(promResults.map(\n /*#__PURE__*/\n function () {\n var _ref = _asyncToGenerator(\n /*#__PURE__*/\n regeneratorRuntime.mark(function _callee(promResult) {\n var newPromisesData, _promisesData$splice, _promisesData$splice2, prData, _prData, keyPath, cyclic, stateObj, parentObj, key, detectedType, encaps, isTypesonPromise, encaps2;\n\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n newPromisesData = [];\n _promisesData$splice = promisesData.splice(0, 1), _promisesData$splice2 = _slicedToArray(_promisesData$splice, 1), prData = _promisesData$splice2[0];\n _prData = _slicedToArray(prData, 7), keyPath = _prData[0], cyclic = _prData[2], stateObj = _prData[3], parentObj = _prData[4], key = _prData[5], detectedType = _prData[6];\n encaps = _encapsulate(keyPath, promResult, cyclic, stateObj, newPromisesData, true, detectedType);\n isTypesonPromise = hasConstructorOf(encaps, TypesonPromise); // Handle case where an embedded custom type itself\n // returns a `Typeson.Promise`\n\n if (!(keyPath && isTypesonPromise)) {\n _context.next = 11;\n break;\n }\n\n _context.next = 8;\n return encaps.p;\n\n case 8:\n encaps2 = _context.sent;\n parentObj[key] = encaps2;\n return _context.abrupt(\"return\", checkPromises(ret, newPromisesData));\n\n case 11:\n if (keyPath) {\n parentObj[key] = encaps;\n } else if (isTypesonPromise) {\n ret = encaps.p;\n } else {\n // If this is itself a `Typeson.Promise` (because the\n // original value supplied was a `Promise` or\n // because the supplied custom type value resolved\n // to one), returning it below will be fine since\n // a `Promise` is expected anyways given current\n // config (and if not a `Promise`, it will be ready\n // as the resolve value)\n ret = encaps;\n }\n\n return _context.abrupt(\"return\", checkPromises(ret, newPromisesData));\n\n case 13:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x3) {\n return _ref.apply(this, arguments);\n };\n }()));\n\n case 5:\n return _context2.abrupt(\"return\", ret);\n\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n return _checkPromises.apply(this, arguments);\n }\n\n function _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, cb) {\n Object.assign(stateObj, ownKeysObj);\n var vals = internalStateObjPropsToIgnore.map(function (prop) {\n var tmp = stateObj[prop];\n delete stateObj[prop];\n return tmp;\n }); // eslint-disable-next-line callback-return\n\n cb();\n internalStateObjPropsToIgnore.forEach(function (prop, i) {\n stateObj[prop] = vals[i];\n });\n }\n /**\n *\n * @param {string} keypath\n * @param {Any} value\n * @param {boolean} cyclic\n * @param {PlainObject} stateObj\n * @param {boolean} promisesData\n * @param {boolean} resolvingTypesonPromise\n * @param {string} detectedType\n * @returns {Any}\n */\n\n\n function _encapsulate(keypath, value, cyclic, stateObj, promisesData, resolvingTypesonPromise, detectedType) {\n var ret;\n var observerData = {};\n\n var $typeof = _typeof(value);\n\n var runObserver = encapsulateObserver ? function (obj) {\n var type = detectedType || stateObj.type || Typeson.getJSONType(value);\n encapsulateObserver(Object.assign(obj || observerData, {\n keypath: keypath,\n value: value,\n cyclic: cyclic,\n stateObj: stateObj,\n promisesData: promisesData,\n resolvingTypesonPromise: resolvingTypesonPromise,\n awaitingTypesonPromise: hasConstructorOf(value, TypesonPromise)\n }, {\n type: type\n }));\n } : null;\n\n if (['string', 'boolean', 'number', 'undefined'].includes($typeof)) {\n if (value === undefined || $typeof === 'number' && (isNaN(value) || value === -Infinity || value === Infinity)) {\n if (stateObj.replaced) {\n ret = value;\n } else {\n ret = replace(keypath, value, stateObj, promisesData, false, resolvingTypesonPromise, runObserver);\n }\n\n if (ret !== value) {\n observerData = {\n replaced: ret\n };\n }\n } else {\n ret = value;\n }\n\n if (runObserver) {\n runObserver();\n }\n\n return ret;\n }\n\n if (value === null) {\n if (runObserver) {\n runObserver();\n }\n\n return value;\n }\n\n if (cyclic && !stateObj.iterateIn && !stateObj.iterateUnsetNumeric && value && _typeof(value) === 'object') {\n // Options set to detect cyclic references and be able\n // to rewrite them.\n var refIndex = refObjs.indexOf(value);\n\n if (refIndex < 0) {\n if (cyclic === true) {\n refObjs.push(value);\n refKeys.push(keypath);\n }\n } else {\n types[keypath] = '#';\n\n if (runObserver) {\n runObserver({\n cyclicKeypath: refKeys[refIndex]\n });\n }\n\n return '#' + refKeys[refIndex];\n }\n }\n\n var isPlainObj = isPlainObject(value);\n var isArr = isArray(value);\n var replaced = // Running replace will cause infinite loop as will test\n // positive again\n (isPlainObj || isArr) && (!that.plainObjectReplacers.length || stateObj.replaced) || stateObj.iterateIn ? // Optimization: if plain object and no plain-object\n // replacers, don't try finding a replacer\n value : replace(keypath, value, stateObj, promisesData, isPlainObj || isArr, null, runObserver);\n var clone;\n\n if (replaced !== value) {\n ret = replaced;\n observerData = {\n replaced: replaced\n };\n } else {\n // eslint-disable-next-line no-lonely-if\n if (keypath === '' && hasConstructorOf(value, TypesonPromise)) {\n promisesData.push([keypath, value, cyclic, stateObj, undefined, undefined, stateObj.type]);\n ret = value;\n } else if (isArr && stateObj.iterateIn !== 'object' || stateObj.iterateIn === 'array') {\n clone = new Array(value.length);\n observerData = {\n clone: clone\n };\n } else if (!['function', 'symbol'].includes(_typeof(value)) && !('toJSON' in value) && !hasConstructorOf(value, TypesonPromise) && !hasConstructorOf(value, Promise) && !hasConstructorOf(value, ArrayBuffer) || isPlainObj || stateObj.iterateIn === 'object') {\n clone = {};\n\n if (stateObj.addLength) {\n clone.length = value.length;\n }\n\n observerData = {\n clone: clone\n };\n } else {\n ret = value; // Only clone vanilla objects and arrays\n }\n }\n\n if (runObserver) {\n runObserver();\n }\n\n if (opts.iterateNone) {\n return clone || ret;\n }\n\n if (!clone) {\n return ret;\n } // Iterate object or array\n\n\n if (stateObj.iterateIn) {\n var _loop = function _loop(key) {\n var ownKeysObj = {\n ownKeys: hasOwn$1.call(value, key)\n };\n\n _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, function () {\n var kp = keypath + (keypath ? '.' : '') + escapeKeyPathComponent(key);\n\n var val = _encapsulate(kp, value[key], Boolean(cyclic), stateObj, promisesData, resolvingTypesonPromise);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n promisesData.push([kp, val, Boolean(cyclic), stateObj, clone, key, stateObj.type]);\n } else if (val !== undefined) {\n clone[key] = val;\n }\n });\n };\n\n // eslint-disable-next-line guard-for-in\n for (var key in value) {\n _loop(key);\n }\n\n if (runObserver) {\n runObserver({\n endIterateIn: true,\n end: true\n });\n }\n } else {\n // Note: Non-indexes on arrays won't survive stringify so\n // somewhat wasteful for arrays, but so too is iterating\n // all numeric indexes on sparse arrays when not wanted\n // or filtering own keys for positive integers\n keys(value).forEach(function (key) {\n var kp = keypath + (keypath ? '.' : '') + escapeKeyPathComponent(key);\n var ownKeysObj = {\n ownKeys: true\n };\n\n _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, function () {\n var val = _encapsulate(kp, value[key], Boolean(cyclic), stateObj, promisesData, resolvingTypesonPromise);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n promisesData.push([kp, val, Boolean(cyclic), stateObj, clone, key, stateObj.type]);\n } else if (val !== undefined) {\n clone[key] = val;\n }\n });\n });\n\n if (runObserver) {\n runObserver({\n endIterateOwn: true,\n end: true\n });\n }\n } // Iterate array for non-own numeric properties (we can't\n // replace the prior loop though as it iterates non-integer\n // keys)\n\n\n if (stateObj.iterateUnsetNumeric) {\n var vl = value.length;\n\n var _loop2 = function _loop2(i) {\n if (!(i in value)) {\n // No need to escape numeric\n var kp = keypath + (keypath ? '.' : '') + i;\n var ownKeysObj = {\n ownKeys: false\n };\n\n _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, function () {\n var val = _encapsulate(kp, undefined, Boolean(cyclic), stateObj, promisesData, resolvingTypesonPromise);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n promisesData.push([kp, val, Boolean(cyclic), stateObj, clone, i, stateObj.type]);\n } else if (val !== undefined) {\n clone[i] = val;\n }\n });\n }\n };\n\n for (var i = 0; i < vl; i++) {\n _loop2(i);\n }\n\n if (runObserver) {\n runObserver({\n endIterateUnsetNumeric: true,\n end: true\n });\n }\n }\n\n return clone;\n }\n /**\n *\n * @param {string} keypath\n * @param {Any} value\n * @param {PlainObject} stateObj\n * @param {GenericArray} promisesData\n * @param {boolean} plainObject\n * @param {boolean} resolvingTypesonPromise\n * @param {function} [runObserver]\n * @returns {*}\n */\n\n\n function replace(keypath, value, stateObj, promisesData, plainObject, resolvingTypesonPromise, runObserver) {\n // Encapsulate registered types\n var replacers = plainObject ? that.plainObjectReplacers : that.nonplainObjectReplacers;\n var i = replacers.length;\n\n while (i--) {\n var replacer = replacers[i];\n\n if (replacer.test(value, stateObj)) {\n var type = replacer.type;\n\n if (that.revivers[type]) {\n // Record the type only if a corresponding reviver\n // exists. This is to support specs where only\n // replacement is done.\n // For example, ensuring deep cloning of the object,\n // or replacing a type to its equivalent without\n // the need to revive it.\n var existing = types[keypath]; // type can comprise an array of types (see test\n // \"should support intermediate types\")\n\n types[keypath] = existing ? [type].concat(existing) : type;\n }\n\n Object.assign(stateObj, {\n type: type,\n replaced: true\n });\n\n if ((sync || !replacer.replaceAsync) && !replacer.replace) {\n if (runObserver) {\n runObserver({\n typeDetected: true\n });\n }\n\n return _encapsulate(keypath, value, cyclic && 'readonly', stateObj, promisesData, resolvingTypesonPromise, type);\n }\n\n if (runObserver) {\n runObserver({\n replacing: true\n });\n } // Now, also traverse the result in case it contains its\n // own types to replace\n\n\n var replaceMethod = sync || !replacer.replaceAsync ? 'replace' : 'replaceAsync';\n return _encapsulate(keypath, replacer[replaceMethod](value, stateObj), cyclic && 'readonly', stateObj, promisesData, resolvingTypesonPromise, type);\n }\n }\n\n return value;\n }\n\n return promisesDataRoot.length ? sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Sync method requested but async result obtained');\n }() : Promise.resolve(checkPromises(ret, promisesDataRoot)).then(finish) : !sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Async method requested but sync result obtained');\n }() // If this is a synchronous request for stringification, yet\n // a promise is the result, we don't want to resolve leading\n // to an async result, so we return an array to avoid\n // ambiguity\n : opts.stringification && sync ? [finish(ret)] : sync ? finish(ret) : Promise.resolve(finish(ret));\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {*} obj\n * @param {object} stateObj\n * @param {object} opts\n * @returns {*}\n */\n\n }, {\n key: \"encapsulateSync\",\n value: function encapsulateSync(obj, stateObj, opts) {\n return this.encapsulate(obj, stateObj, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: true\n }));\n }\n /**\n * @param {*} obj\n * @param {object} stateObj\n * @param {object} opts\n * @returns {*}\n */\n\n }, {\n key: \"encapsulateAsync\",\n value: function encapsulateAsync(obj, stateObj, opts) {\n return this.encapsulate(obj, stateObj, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: false\n }));\n }\n /**\n * Revive an encapsulated object.\n * This method is used internally by `Typeson.parse()`.\n * @param {object} obj - Object to revive. If it has `$types` member, the\n * properties that are listed there will be replaced with its true type\n * instead of just plain objects.\n * @param {object} opts\n * @throws TypeError If mismatch between sync/async type and result\n * @returns {Promise|*} If async, returns a Promise that resolves to `*`\n */\n\n }, {\n key: \"revive\",\n value: function revive(obj, opts) {\n var types = obj && obj.$types; // No type info added. Revival not needed.\n\n if (!types) {\n return obj;\n } // Object happened to have own `$types` property but with\n // no actual types, so we unescape and return that object\n\n\n if (types === true) {\n return obj.$;\n }\n\n opts = _objectSpread2({\n sync: true\n }, this.options, {}, opts);\n var _opts3 = opts,\n sync = _opts3.sync;\n var keyPathResolutions = [];\n var stateObj = {};\n var ignore$Types = true; // Special when root object is not a trivial Object, it will\n // be encapsulated in `$`. It will also be encapsulated in\n // `$` if it has its own `$` property to avoid ambiguity\n\n if (types.$ && isPlainObject(types.$)) {\n obj = obj.$;\n types = types.$;\n ignore$Types = false;\n }\n\n var that = this;\n /**\n * @callback RevivalReducer\n * @param {Any} value\n * @param {string} type\n * @returns {Any}\n */\n\n /**\n *\n * @param {string} type\n * @param {Any} val\n * @returns {[type]} [description]\n */\n\n function executeReviver(type, val) {\n var _ref2 = that.revivers[type] || [],\n _ref3 = _slicedToArray(_ref2, 1),\n reviver = _ref3[0];\n\n if (!reviver) {\n throw new Error('Unregistered type: ' + type);\n } // Only `sync` expected here, as problematic async would\n // be missing both `reviver` and `reviverAsync`, and\n // encapsulation shouldn't have added types, so\n // should have made an early exit\n\n\n if (sync && !('revive' in reviver)) {\n // Just return value as is\n return val;\n }\n\n return reviver[sync && reviver.revive ? 'revive' : !sync && reviver.reviveAsync ? 'reviveAsync' : 'revive'](val, stateObj);\n }\n /**\n *\n * @returns {void|TypesonPromise<void>}\n */\n\n\n function revivePlainObjects() {\n // const references = [];\n // const reviveTypes = [];\n var plainObjectTypes = [];\n Object.entries(types).forEach(function (_ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n keypath = _ref5[0],\n type = _ref5[1];\n\n if (type === '#') {\n /*\n references.push({\n keypath,\n reference: getByKeyPath(obj, keypath)\n });\n */\n return;\n }\n\n [].concat(type).forEach(function (type) {\n var _ref6 = that.revivers[type] || [null, {}],\n _ref7 = _slicedToArray(_ref6, 2),\n plain = _ref7[1].plain;\n\n if (!plain) {\n // reviveTypes.push({keypath, type});\n return;\n }\n\n plainObjectTypes.push({\n keypath: keypath,\n type: type\n });\n delete types[keypath]; // Avoid repeating\n });\n });\n\n if (!plainObjectTypes.length) {\n return undefined;\n } // console.log(plainObjectTypes.sort(nestedPathsFirst));\n\n /**\n * @typedef {PlainObject} PlainObjectType\n * @property {string} keypath\n * @property {string} type\n */\n\n\n return plainObjectTypes.sort(nestedPathsFirst).reduce(function reducer(possibleTypesonPromise, _ref8) {\n var keypath = _ref8.keypath,\n type = _ref8.type;\n\n if (isThenable(possibleTypesonPromise)) {\n return possibleTypesonPromise.then(function (val) {\n return reducer(val, {\n keypath: keypath,\n type: type\n });\n });\n } // console.log('obj', JSON.stringify(keypath), obj);\n\n\n var val = getByKeyPath(obj, keypath);\n val = executeReviver(type, val);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n return val.then(function (v) {\n var newVal = setAtKeyPath(obj, keypath, v);\n\n if (newVal === v) {\n obj = newVal;\n }\n\n return undefined;\n });\n }\n\n var newVal = setAtKeyPath(obj, keypath, val);\n\n if (newVal === val) {\n obj = newVal;\n }\n\n return undefined;\n }, undefined // This argument must be explicit\n ); // references.forEach(({keypath, reference}) => {});\n // reviveTypes.sort(nestedPathsFirst).forEach(() => {});\n }\n\n var revivalPromises = [];\n /**\n *\n * @param {string} keypath\n * @param {Any} value\n * @param {?(Array|object)} target\n * @param {Array|object} [clone]\n * @param {string} [key]\n * @returns {Any}\n */\n\n function _revive(keypath, value, target, clone, key) {\n if (ignore$Types && keypath === '$types') {\n return undefined;\n }\n\n var type = types[keypath];\n var isArr = isArray(value);\n\n if (isArr || isPlainObject(value)) {\n var _clone = isArr ? new Array(value.length) : {}; // Iterate object or array\n\n\n keys(value).forEach(function (k) {\n var val = _revive(keypath + (keypath ? '.' : '') + escapeKeyPathComponent(k), value[k], target || _clone, _clone, k);\n\n var set = function set(v) {\n if (hasConstructorOf(v, Undefined)) {\n _clone[k] = undefined;\n } else if (v !== undefined) {\n _clone[k] = v;\n }\n\n return v;\n };\n\n if (hasConstructorOf(val, TypesonPromise)) {\n revivalPromises.push(val.then(function (ret) {\n return set(ret);\n }));\n } else {\n set(val);\n }\n });\n value = _clone; // Try to resolve cyclic reference as soon as available\n\n while (keyPathResolutions.length) {\n var _keyPathResolutions$ = _slicedToArray(keyPathResolutions[0], 4),\n _target = _keyPathResolutions$[0],\n keyPath = _keyPathResolutions$[1],\n _clone2 = _keyPathResolutions$[2],\n k = _keyPathResolutions$[3];\n\n var val = getByKeyPath(_target, keyPath); // Typeson.Undefined not expected here as not cyclic or\n // `undefined`\n\n if (val !== undefined) {\n _clone2[k] = val;\n } else {\n break;\n }\n\n keyPathResolutions.splice(0, 1);\n }\n }\n\n if (!type) {\n return value;\n }\n\n if (type === '#') {\n var _ret = getByKeyPath(target, value.slice(1));\n\n if (_ret === undefined) {\n // Cyclic reference not yet available\n keyPathResolutions.push([target, value.slice(1), clone, key]);\n }\n\n return _ret;\n } // `type` can be an array here\n\n\n return [].concat(type).reduce(function reducer(val, typ) {\n if (hasConstructorOf(val, TypesonPromise)) {\n return val.then(function (v) {\n // TypesonPromise here too\n return reducer(v, typ);\n });\n }\n\n return executeReviver(typ, val);\n }, value);\n }\n /**\n *\n * @param {Any} retrn\n * @returns {undefined|Any}\n */\n\n\n function checkUndefined(retrn) {\n return hasConstructorOf(retrn, Undefined) ? undefined : retrn;\n }\n\n var possibleTypesonPromise = revivePlainObjects();\n var ret;\n\n if (hasConstructorOf(possibleTypesonPromise, TypesonPromise)) {\n ret = possibleTypesonPromise.then(function () {\n return obj;\n });\n } else {\n ret = _revive('', obj, null);\n\n if (revivalPromises.length) {\n // Ensure children resolved\n ret = TypesonPromise.resolve(ret).then(function (r) {\n return TypesonPromise.all([// May be a TypesonPromise or not\n r].concat(revivalPromises));\n }).then(function (_ref9) {\n var _ref10 = _slicedToArray(_ref9, 1),\n r = _ref10[0];\n\n return r;\n });\n }\n }\n\n return isThenable(ret) ? sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Sync method requested but async result obtained');\n }() : hasConstructorOf(ret, TypesonPromise) ? ret.p.then(checkUndefined) : ret : !sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Async method requested but sync result obtained');\n }() : sync ? checkUndefined(ret) : Promise.resolve(checkUndefined(ret));\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {Any} obj\n * @param {object} opts\n * @returns {Any}\n */\n\n }, {\n key: \"reviveSync\",\n value: function reviveSync(obj, opts) {\n return this.revive(obj, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: true\n }));\n }\n /**\n * @param {Any} obj\n * @param {object} opts\n * @returns {Promise} Resolves to `*`\n */\n\n }, {\n key: \"reviveAsync\",\n value: function reviveAsync(obj, opts) {\n return this.revive(obj, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: false\n }));\n }\n /**\n * Register types.\n * For examples on how to use this method, see\n * {@link https://github.com/dfahlander/typeson-registry/tree/master/types}.\n * @param {object.<string,Function[]>[]} typeSpecSets - Types and\n * their functions [test, encapsulate, revive];\n * @param {object} opts\n * @returns {Typeson}\n */\n\n }, {\n key: \"register\",\n value: function register(typeSpecSets, opts) {\n opts = opts || {};\n [].concat(typeSpecSets).forEach(function R(typeSpec) {\n var _this = this;\n\n // Allow arrays of arrays of arrays...\n if (isArray(typeSpec)) {\n return typeSpec.map(function (typSpec) {\n return R.call(_this, typSpec);\n });\n }\n\n typeSpec && keys(typeSpec).forEach(function (typeId) {\n if (typeId === '#') {\n throw new TypeError('# cannot be used as a type name as it is reserved ' + 'for cyclic objects');\n } else if (Typeson.JSON_TYPES.includes(typeId)) {\n throw new TypeError('Plain JSON object types are reserved as type names');\n }\n\n var spec = typeSpec[typeId];\n var replacers = spec && spec.testPlainObjects ? this.plainObjectReplacers : this.nonplainObjectReplacers;\n var existingReplacer = replacers.filter(function (r) {\n return r.type === typeId;\n });\n\n if (existingReplacer.length) {\n // Remove existing spec and replace with this one.\n replacers.splice(replacers.indexOf(existingReplacer[0]), 1);\n delete this.revivers[typeId];\n delete this.types[typeId];\n }\n\n if (typeof spec === 'function') {\n // Support registering just a class without replacer/reviver\n var Class = spec;\n spec = {\n test: function test(x) {\n return x && x.constructor === Class;\n },\n replace: function replace(x) {\n return _objectSpread2({}, x);\n },\n revive: function revive(x) {\n return Object.assign(Object.create(Class.prototype), x);\n }\n };\n } else if (isArray(spec)) {\n var _spec = spec,\n _spec2 = _slicedToArray(_spec, 3),\n test = _spec2[0],\n replace = _spec2[1],\n revive = _spec2[2];\n\n spec = {\n test: test,\n replace: replace,\n revive: revive\n };\n }\n\n if (!spec || !spec.test) {\n return;\n }\n\n var replacerObj = {\n type: typeId,\n test: spec.test.bind(spec)\n };\n\n if (spec.replace) {\n replacerObj.replace = spec.replace.bind(spec);\n }\n\n if (spec.replaceAsync) {\n replacerObj.replaceAsync = spec.replaceAsync.bind(spec);\n }\n\n var start = typeof opts.fallback === 'number' ? opts.fallback : opts.fallback ? 0 : Infinity;\n\n if (spec.testPlainObjects) {\n this.plainObjectReplacers.splice(start, 0, replacerObj);\n } else {\n this.nonplainObjectReplacers.splice(start, 0, replacerObj);\n } // Todo: We might consider a testAsync type\n\n\n if (spec.revive || spec.reviveAsync) {\n var reviverObj = {};\n\n if (spec.revive) {\n reviverObj.revive = spec.revive.bind(spec);\n }\n\n if (spec.reviveAsync) {\n reviverObj.reviveAsync = spec.reviveAsync.bind(spec);\n }\n\n this.revivers[typeId] = [reviverObj, {\n plain: spec.testPlainObjects\n }];\n } // Record to be retrieved via public types property.\n\n\n this.types[typeId] = spec;\n }, this);\n }, this);\n return this;\n }\n }]);\n\n return Typeson;\n }();\n /**\n * We keep this function minimized so if using two instances of this\n * library, where one is minimized and one is not, it will still work\n * with `hasConstructorOf`.\n * @class\n */\n\n\n var Undefined = function Undefined() {\n _classCallCheck(this, Undefined);\n }; // eslint-disable-line space-before-blocks\n\n\n Undefined.__typeson__type__ = 'TypesonUndefined'; // The following provide classes meant to avoid clashes with other values\n // To insist `undefined` should be added\n\n Typeson.Undefined = Undefined; // To support async encapsulation/stringification\n\n Typeson.Promise = TypesonPromise; // Some fundamental type-checking utilities\n\n Typeson.isThenable = isThenable;\n Typeson.toStringTag = toStringTag;\n Typeson.hasConstructorOf = hasConstructorOf;\n Typeson.isObject = isObject;\n Typeson.isPlainObject = isPlainObject;\n Typeson.isUserObject = isUserObject;\n Typeson.escapeKeyPathComponent = escapeKeyPathComponent;\n Typeson.unescapeKeyPathComponent = unescapeKeyPathComponent;\n Typeson.getByKeyPath = getByKeyPath;\n Typeson.getJSONType = getJSONType;\n Typeson.JSON_TYPES = ['null', 'boolean', 'number', 'string', 'array', 'object'];\n\n return Typeson;\n\n})));\n","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n/**\n* @callback TypesonFulfilled\n* @returns {Promise<any>|any}\n*/\n\n/**\n* @callback TypesonRejected\n* @returns {Promise<any>|any}\n*/\n\n/**\n * @callback TypesonResolve\n * @param {any} value\n * @returns {Promise<any>}\n */\n\n/**\n * @callback TypesonReject\n * @param {Error|any} error\n * @returns {Promise<any>}\n */\n\n/**\n * @callback TypesonResolveReject\n * @param {TypesonResolve} typesonResolve\n * @param {TypesonReject} typesonReject\n * @returns {Promise<any>}\n */\n\n/* eslint-disable block-spacing, space-before-function-paren,\n space-before-blocks, space-infix-ops, semi, promise/avoid-new,\n jsdoc/require-jsdoc */\n\n/**\n * We keep this function minimized so if using two instances of this\n * library, where one is minimized and one is not, it will still work\n * with `hasConstructorOf`.\n * With ES6 classes, we may be able to simply use `class TypesonPromise\n * extends Promise` and add a string tag for detection.\n * @param {TypesonResolveReject} f\n */\nvar TypesonPromise = function TypesonPromise(f) {\n _classCallCheck(this, TypesonPromise);\n\n this.p = new Promise(f);\n};\n/* eslint-enable block-spacing, space-before-function-paren,\n space-before-blocks, space-infix-ops, semi, promise/avoid-new,\n jsdoc/require-jsdoc */\n// eslint-disable-next-line max-len\n// class TypesonPromise extends Promise {get[Symbol.toStringTag](){return 'TypesonPromise'};} // eslint-disable-line keyword-spacing, space-before-function-paren, space-before-blocks, block-spacing, semi\n\n\nTypesonPromise.__typeson__type__ = 'TypesonPromise'; // Note: core-js-bundle provides a `Symbol` polyfill\n\n/* istanbul ignore else */\n\nif (typeof Symbol !== 'undefined') {\n // Ensure `isUserObject` will return `false` for `TypesonPromise`\n TypesonPromise.prototype[Symbol.toStringTag] = 'TypesonPromise';\n}\n/**\n *\n * @param {TypesonFulfilled} [onFulfilled]\n * @param {TypesonRejected} [onRejected]\n * @returns {TypesonPromise}\n */\n\n\nTypesonPromise.prototype.then = function (onFulfilled, onRejected) {\n var _this = this;\n\n return new TypesonPromise(function (typesonResolve, typesonReject) {\n // eslint-disable-next-line promise/catch-or-return\n _this.p.then(function (res) {\n // eslint-disable-next-line promise/always-return\n typesonResolve(onFulfilled ? onFulfilled(res) : res);\n })[\"catch\"](function (res) {\n return onRejected ? onRejected(res) : Promise.reject(res);\n }).then(typesonResolve, typesonReject);\n });\n};\n/**\n *\n * @param {TypesonRejected} onRejected\n * @returns {TypesonPromise}\n */\n\n\nTypesonPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n};\n/**\n *\n * @param {any} v\n * @returns {TypesonPromise}\n */\n\n\nTypesonPromise.resolve = function (v) {\n return new TypesonPromise(function (typesonResolve) {\n typesonResolve(v);\n });\n};\n/**\n *\n * @param {any} v\n * @returns {TypesonPromise}\n */\n\n\nTypesonPromise.reject = function (v) {\n return new TypesonPromise(function (typesonResolve, typesonReject) {\n typesonReject(v);\n });\n};\n\n['all', 'race'].forEach(function (meth) {\n /**\n *\n * @param {Promise<any>[]} promArr\n * @returns {TypesonPromise}\n */\n TypesonPromise[meth] = function (promArr) {\n return new TypesonPromise(function (typesonResolve, typesonReject) {\n // eslint-disable-next-line promise/catch-or-return\n Promise[meth](promArr.map(function (prom) {\n return prom && prom.constructor && prom.constructor.__typeson__type__ === 'TypesonPromise' ? prom.p : prom;\n })).then(typesonResolve, typesonReject);\n });\n };\n});\n\nvar _ref = {},\n toStr = _ref.toString,\n hasOwn$1 = {}.hasOwnProperty,\n getProto = Object.getPrototypeOf,\n fnToString = hasOwn$1.toString;\n/**\n * Second argument not in use internally, but provided for utility.\n * @param {any} v\n * @param {boolean} catchCheck\n * @returns {boolean}\n */\n\nfunction isThenable(v, catchCheck) {\n return isObject(v) && typeof v.then === 'function' && (!catchCheck || typeof v[\"catch\"] === 'function');\n}\n/**\n *\n * @param {any} val\n * @returns {string}\n */\n\n\nfunction toStringTag(val) {\n return toStr.call(val).slice(8, -1);\n}\n/**\n * This function is dependent on both constructors\n * being identical so any minimization is expected of both.\n * @param {any} a\n * @param {GenericFunction} b\n * @returns {boolean}\n */\n\n\nfunction hasConstructorOf(a, b) {\n if (!a || _typeof(a) !== 'object') {\n return false;\n }\n\n var proto = getProto(a);\n\n if (!proto) {\n return b === null;\n }\n\n var Ctor = hasOwn$1.call(proto, 'constructor') && proto.constructor;\n\n if (typeof Ctor !== 'function') {\n return b === null;\n }\n\n if (b === Ctor) {\n return true;\n }\n\n if (b !== null && fnToString.call(Ctor) === fnToString.call(b)) {\n return true;\n }\n\n if (typeof b === 'function' && typeof Ctor.__typeson__type__ === 'string' && Ctor.__typeson__type__ === b.__typeson__type__) {\n return true;\n }\n\n return false;\n}\n/**\n *\n * @param {any} val\n * @returns {boolean}\n */\n\n\nfunction isPlainObject(val) {\n // Mirrors jQuery's\n if (!val || toStringTag(val) !== 'Object') {\n return false;\n }\n\n var proto = getProto(val);\n\n if (!proto) {\n // `Object.create(null)`\n return true;\n }\n\n return hasConstructorOf(val, Object);\n}\n/**\n *\n * @param {any} val\n * @returns {boolean}\n */\n\n\nfunction isUserObject(val) {\n if (!val || toStringTag(val) !== 'Object') {\n return false;\n }\n\n var proto = getProto(val);\n\n if (!proto) {\n // `Object.create(null)`\n return true;\n }\n\n return hasConstructorOf(val, Object) || isUserObject(proto);\n}\n/**\n *\n * @param {any} v\n * @returns {boolean}\n */\n\n\nfunction isObject(v) {\n return v && _typeof(v) === 'object';\n}\n/**\n *\n * @param {string} keyPathComponent\n * @returns {string}\n */\n\n\nfunction escapeKeyPathComponent(keyPathComponent) {\n return keyPathComponent.replace(/~/g, '~0').replace(/\\./g, '~1');\n}\n/**\n *\n * @param {string} keyPathComponent\n * @returns {string}\n */\n\n\nfunction unescapeKeyPathComponent(keyPathComponent) {\n return keyPathComponent.replace(/~1/g, '.').replace(/~0/g, '~');\n}\n/**\n * @param {PlainObject|GenericArray} obj\n * @param {string} keyPath\n * @returns {any}\n */\n\n\nfunction getByKeyPath(obj, keyPath) {\n if (keyPath === '') {\n return obj;\n }\n\n var period = keyPath.indexOf('.');\n\n if (period > -1) {\n var innerObj = obj[unescapeKeyPathComponent(keyPath.slice(0, period))];\n return innerObj === undefined ? undefined : getByKeyPath(innerObj, keyPath.slice(period + 1));\n }\n\n return obj[unescapeKeyPathComponent(keyPath)];\n}\n/**\n *\n * @param {PlainObject} obj\n * @param {string} keyPath\n * @param {any} value\n * @returns {any}\n */\n\n\nfunction setAtKeyPath(obj, keyPath, value) {\n if (keyPath === '') {\n return value;\n }\n\n var period = keyPath.indexOf('.');\n\n if (period > -1) {\n var innerObj = obj[unescapeKeyPathComponent(keyPath.slice(0, period))];\n return setAtKeyPath(innerObj, keyPath.slice(period + 1), value);\n }\n\n obj[unescapeKeyPathComponent(keyPath)] = value;\n return obj;\n}\n/**\n *\n * @param {external:JSON} value\n * @returns {\"null\"|\"array\"|\"undefined\"|\"boolean\"|\"number\"|\"string\"|\n * \"object\"|\"symbol\"}\n */\n\n\nfunction getJSONType(value) {\n return value === null ? 'null' : Array.isArray(value) ? 'array' : _typeof(value);\n}\n\nfunction _await(value, then, direct) {\n if (direct) {\n return then ? then(value) : value;\n }\n\n if (!value || !value.then) {\n value = Promise.resolve(value);\n }\n\n return then ? value.then(then) : value;\n}\n\nvar keys = Object.keys,\n isArray = Array.isArray,\n hasOwn = {}.hasOwnProperty,\n internalStateObjPropsToIgnore = ['type', 'replaced', 'iterateIn', 'iterateUnsetNumeric'];\n/**\n * Handle plain object revivers first so reference setting can use\n * revived type (e.g., array instead of object); assumes revived\n * has same structure or will otherwise break subsequent references.\n * @param {PlainObjectType} a\n * @param {PlainObjectType} b\n * @returns {1|-1|boolean}\n */\n\nfunction _async(f) {\n return function () {\n for (var args = [], i = 0; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n\n try {\n return Promise.resolve(f.apply(this, args));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\n/**\n * @callback Tester\n * @param {any} value\n * @param {StateObject} stateobj\n * @returns {boolean}\n */\n\n/**\n* @callback Replacer\n* @param {any} value\n* @param {StateObject} stateObj\n* @returns {any} Should be JSON-stringifiable\n*/\n\n/**\n* @callback Reviver\n* @param {JSON} value\n* @param {StateObject} stateObj\n* @returns {any}\n*/\n\n/**\n* @typedef {PlainObject} TypesonOptions\n* @property {boolean} stringification Auto-set by `stringify`\n*/\n\n/**\n * An instance of this class can be used to call `stringify()` and `parse()`.\n * Typeson resolves cyclic references by default. Can also be extended to\n * support custom types using the register() method.\n *\n * @class\n * @param {{cyclic: boolean}} [options] - if cyclic (default true),\n * cyclic references will be handled gracefully.\n */\n\n\nfunction _invoke(body, then) {\n var result = body();\n\n if (result && result.then) {\n return result.then(then);\n }\n\n return then(result);\n}\n\nfunction nestedPathsFirst(a, b) {\n if (a.keypath === '') {\n return -1;\n }\n\n var as = a.keypath.match(/\\./g) || 0;\n var bs = b.keypath.match(/\\./g) || 0;\n\n if (as) {\n as = as.length;\n }\n\n if (bs) {\n bs = bs.length;\n }\n\n return as > bs ? -1 : as < bs ? 1 : a.keypath < b.keypath ? -1 : a.keypath > b.keypath;\n}\n\nvar Typeson = /*#__PURE__*/function () {\n /**\n * @param {TypesonOptions} options\n */\n function Typeson(options) {\n _classCallCheck(this, Typeson);\n\n this.options = options; // Replacers signature: replace (value). Returns falsy if not\n // replacing. Otherwise ['Date', value.getTime()]\n\n this.plainObjectReplacers = [];\n this.nonplainObjectReplacers = []; // Revivers: [{type => reviver}, {plain: boolean}].\n // Sample: [{'Date': value => new Date(value)}, {plain: false}]\n\n this.revivers = {};\n /** Types registered via `register()`. */\n\n this.types = {};\n }\n /**\n * @typedef {null|boolean|number|string|GenericArray|PlainObject} JSON\n */\n\n /**\n * @callback JSONReplacer\n * @param {\"\"|string} key\n * @param {JSON} value\n * @returns {number|string|boolean|null|PlainObject|undefined}\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#The%20replacer%20parameter\n */\n\n /**\n * Serialize given object to Typeson.\n * Initial arguments work identical to those of `JSON.stringify`.\n * The `replacer` argument has nothing to do with our replacers.\n * @param {any} obj\n * @param {JSONReplacer|string[]} replacer\n * @param {number|string} space\n * @param {TypesonOptions} opts\n * @returns {string|Promise<string>} Promise resolves to a string\n */\n\n\n _createClass(Typeson, [{\n key: \"stringify\",\n value: function stringify(obj, replacer, space, opts) {\n opts = _objectSpread2(_objectSpread2(_objectSpread2({}, this.options), opts), {}, {\n stringification: true\n });\n var encapsulated = this.encapsulate(obj, null, opts);\n\n if (isArray(encapsulated)) {\n return JSON.stringify(encapsulated[0], replacer, space);\n }\n\n return encapsulated.then(function (res) {\n return JSON.stringify(res, replacer, space);\n });\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {any} obj\n * @param {JSONReplacer|string[]} replacer\n * @param {number|string} space\n * @param {TypesonOptions} opts\n * @returns {string}\n */\n\n }, {\n key: \"stringifySync\",\n value: function stringifySync(obj, replacer, space, opts) {\n return this.stringify(obj, replacer, space, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: true\n }));\n }\n /**\n *\n * @param {any} obj\n * @param {JSONReplacer|string[]} replacer\n * @param {number|string} space\n * @param {TypesonOptions} opts\n * @returns {Promise<string>}\n */\n\n }, {\n key: \"stringifyAsync\",\n value: function stringifyAsync(obj, replacer, space, opts) {\n return this.stringify(obj, replacer, space, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: false\n }));\n }\n /**\n * @callback JSONReviver\n * @param {string} key\n * @param {JSON} value\n * @returns {JSON}\n */\n\n /**\n * Parse Typeson back into an obejct.\n * Initial arguments works identical to those of `JSON.parse()`.\n * @param {string} text\n * @param {JSONReviver} reviver This JSON reviver has nothing to do with\n * our revivers.\n * @param {TypesonOptions} opts\n * @returns {external:JSON}\n */\n\n }, {\n key: \"parse\",\n value: function parse(text, reviver, opts) {\n opts = _objectSpread2(_objectSpread2(_objectSpread2({}, this.options), opts), {}, {\n parse: true\n });\n return this.revive(JSON.parse(text, reviver), opts);\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {string} text\n * @param {JSONReviver} reviver This JSON reviver has nothing to do with\n * our revivers.\n * @param {TypesonOptions} opts\n * @returns {external:JSON}\n */\n\n }, {\n key: \"parseSync\",\n value: function parseSync(text, reviver, opts) {\n return this.parse(text, reviver, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: true\n }));\n }\n /**\n * @param {string} text\n * @param {JSONReviver} reviver This JSON reviver has nothing to do with\n * our revivers.\n * @param {TypesonOptions} opts\n * @returns {Promise<external:JSON>} Resolves to `external:JSON`\n */\n\n }, {\n key: \"parseAsync\",\n value: function parseAsync(text, reviver, opts) {\n return this.parse(text, reviver, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: false\n }));\n }\n /**\n * @typedef {} StateObject\n */\n\n /**\n *\n * @param {any} obj\n * @param {StateObject} stateObj\n * @param {TypesonOptions} [opts={}]\n * @returns {string[]|false}\n */\n\n }, {\n key: \"specialTypeNames\",\n value: function specialTypeNames(obj, stateObj) {\n var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n opts.returnTypeNames = true;\n return this.encapsulate(obj, stateObj, opts);\n }\n /**\n *\n * @param {any} obj\n * @param {PlainObject} stateObj\n * @param {PlainObject} [opts={}]\n * @returns {Promise<any>|GenericArray|PlainObject|string|false}\n */\n\n }, {\n key: \"rootTypeName\",\n value: function rootTypeName(obj, stateObj) {\n var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n opts.iterateNone = true;\n return this.encapsulate(obj, stateObj, opts);\n }\n /**\n * Encapsulate a complex object into a plain Object by replacing\n * registered types with plain objects representing the types data.\n *\n * This method is used internally by `Typeson.stringify()`.\n * @param {any} obj - Object to encapsulate.\n * @param {PlainObject} stateObj\n * @param {PlainObject} opts\n * @returns {Promise<any>|GenericArray|PlainObject|string|false}\n */\n\n }, {\n key: \"encapsulate\",\n value: function encapsulate(obj, stateObj, opts) {\n /**\n *\n * @param {any} ret\n * @param {GenericArray} promisesData\n * @returns {Promise<any>}\n */\n var checkPromises = _async(function (ret, promisesData) {\n return _await(Promise.all(promisesData.map(function (pd) {\n return pd[1].p;\n })), function (promResults) {\n return _await(Promise.all(promResults.map(_async(function (promResult) {\n var _exit = false;\n var newPromisesData = [];\n\n var _promisesData$splice = promisesData.splice(0, 1),\n _promisesData$splice2 = _slicedToArray(_promisesData$splice, 1),\n prData = _promisesData$splice2[0];\n\n var _prData = _slicedToArray(prData, 7),\n keyPath = _prData[0],\n cyclic = _prData[2],\n stateObj = _prData[3],\n parentObj = _prData[4],\n key = _prData[5],\n detectedType = _prData[6];\n\n var encaps = _encapsulate(keyPath, promResult, cyclic, stateObj, newPromisesData, true, detectedType);\n\n var isTypesonPromise = hasConstructorOf(encaps, TypesonPromise); // Handle case where an embedded custom type itself\n // returns a `Typeson.Promise`\n\n return _invoke(function () {\n if (keyPath && isTypesonPromise) {\n return _await(encaps.p, function (encaps2) {\n parentObj[key] = encaps2;\n _exit = true;\n return checkPromises(ret, newPromisesData);\n });\n }\n }, function (_result) {\n if (_exit) return _result;\n\n if (keyPath) {\n parentObj[key] = encaps;\n } else if (isTypesonPromise) {\n ret = encaps.p;\n } else {\n // If this is itself a `Typeson.Promise` (because the\n // original value supplied was a `Promise` or\n // because the supplied custom type value resolved\n // to one), returning it below will be fine since\n // a `Promise` is expected anyways given current\n // config (and if not a `Promise`, it will be ready\n // as the resolve value)\n ret = encaps;\n }\n\n return checkPromises(ret, newPromisesData);\n });\n }))), function () {\n return ret;\n });\n });\n });\n /**\n * @typedef {PlainObject} OwnKeysObject\n * @property {boolean} ownKeys\n */\n\n /**\n * @callback BuiltinStateObjectPropertiesCallback\n * @returns {void}\n */\n\n /**\n *\n * @param {StateObject} stateObj\n * @param {OwnKeysObject} ownKeysObj\n * @param {BuiltinStateObjectPropertiesCallback} cb\n * @returns {undefined}\n */\n\n\n opts = _objectSpread2(_objectSpread2({\n sync: true\n }, this.options), opts);\n var _opts = opts,\n sync = _opts.sync;\n var that = this,\n types = {},\n refObjs = [],\n // For checking cyclic references\n refKeys = [],\n // For checking cyclic references\n promisesDataRoot = []; // Clone the object deeply while at the same time replacing any\n // special types or cyclic reference:\n\n var cyclic = 'cyclic' in opts ? opts.cyclic : true;\n var _opts2 = opts,\n encapsulateObserver = _opts2.encapsulateObserver;\n\n var ret = _encapsulate('', obj, cyclic, stateObj || {}, promisesDataRoot);\n /**\n *\n * @param {any} ret\n * @returns {GenericArray|PlainObject|string|false}\n */\n\n\n function finish(ret) {\n // Add `$types` to result only if we ever bumped into a\n // special type (or special case where object has own `$types`)\n var typeNames = Object.values(types);\n\n if (opts.iterateNone) {\n if (typeNames.length) {\n return typeNames[0];\n }\n\n return Typeson.getJSONType(ret);\n }\n\n if (typeNames.length) {\n if (opts.returnTypeNames) {\n return _toConsumableArray(new Set(typeNames));\n } // Special if array (or a primitive) was serialized\n // because JSON would ignore custom `$types` prop on it\n\n\n if (!ret || !isPlainObject(ret) || // Also need to handle if this is an object with its\n // own `$types` property (to avoid ambiguity)\n hasOwn.call(ret, '$types')) {\n ret = {\n $: ret,\n $types: {\n $: types\n }\n };\n } else {\n ret.$types = types;\n } // No special types\n\n } else if (isObject(ret) && hasOwn.call(ret, '$types')) {\n ret = {\n $: ret,\n $types: true\n };\n }\n\n if (opts.returnTypeNames) {\n return false;\n }\n\n return ret;\n }\n\n function _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, cb) {\n Object.assign(stateObj, ownKeysObj);\n var vals = internalStateObjPropsToIgnore.map(function (prop) {\n var tmp = stateObj[prop];\n delete stateObj[prop];\n return tmp;\n }); // eslint-disable-next-line node/callback-return\n\n cb();\n internalStateObjPropsToIgnore.forEach(function (prop, i) {\n stateObj[prop] = vals[i];\n });\n }\n /**\n *\n * @param {string} keypath\n * @param {any} value\n * @param {boolean} cyclic\n * @param {PlainObject} stateObj\n * @param {boolean} promisesData\n * @param {boolean} resolvingTypesonPromise\n * @param {string} detectedType\n * @returns {any}\n */\n\n\n function _encapsulate(keypath, value, cyclic, stateObj, promisesData, resolvingTypesonPromise, detectedType) {\n var ret;\n var observerData = {};\n\n var $typeof = _typeof(value);\n\n var runObserver = encapsulateObserver ? function (obj) {\n var type = detectedType || stateObj.type || Typeson.getJSONType(value);\n encapsulateObserver(Object.assign(obj || observerData, {\n keypath: keypath,\n value: value,\n cyclic: cyclic,\n stateObj: stateObj,\n promisesData: promisesData,\n resolvingTypesonPromise: resolvingTypesonPromise,\n awaitingTypesonPromise: hasConstructorOf(value, TypesonPromise)\n }, {\n type: type\n }));\n } : null;\n\n if (['string', 'boolean', 'number', 'undefined'].includes($typeof)) {\n if (value === undefined || Number.isNaN(value) || value === Number.NEGATIVE_INFINITY || value === Number.POSITIVE_INFINITY) {\n ret = stateObj.replaced ? value : replace(keypath, value, stateObj, promisesData, false, resolvingTypesonPromise, runObserver);\n\n if (ret !== value) {\n observerData = {\n replaced: ret\n };\n }\n } else {\n ret = value;\n }\n\n if (runObserver) {\n runObserver();\n }\n\n return ret;\n }\n\n if (value === null) {\n if (runObserver) {\n runObserver();\n }\n\n return value;\n }\n\n if (cyclic && !stateObj.iterateIn && !stateObj.iterateUnsetNumeric && value && _typeof(value) === 'object') {\n // Options set to detect cyclic references and be able\n // to rewrite them.\n var refIndex = refObjs.indexOf(value);\n\n if (refIndex < 0) {\n if (cyclic === true) {\n refObjs.push(value);\n refKeys.push(keypath);\n }\n } else {\n types[keypath] = '#';\n\n if (runObserver) {\n runObserver({\n cyclicKeypath: refKeys[refIndex]\n });\n }\n\n return '#' + refKeys[refIndex];\n }\n }\n\n var isPlainObj = isPlainObject(value);\n var isArr = isArray(value);\n var replaced = // Running replace will cause infinite loop as will test\n // positive again\n (isPlainObj || isArr) && (!that.plainObjectReplacers.length || stateObj.replaced) || stateObj.iterateIn ? // Optimization: if plain object and no plain-object\n // replacers, don't try finding a replacer\n value : replace(keypath, value, stateObj, promisesData, isPlainObj || isArr, null, runObserver);\n var clone;\n\n if (replaced !== value) {\n ret = replaced;\n observerData = {\n replaced: replaced\n };\n } else {\n // eslint-disable-next-line no-lonely-if\n if (keypath === '' && hasConstructorOf(value, TypesonPromise)) {\n promisesData.push([keypath, value, cyclic, stateObj, undefined, undefined, stateObj.type]);\n ret = value;\n } else if (isArr && stateObj.iterateIn !== 'object' || stateObj.iterateIn === 'array') {\n // eslint-disable-next-line unicorn/no-new-array -- Sparse\n clone = new Array(value.length);\n observerData = {\n clone: clone\n };\n } else if (!['function', 'symbol'].includes(_typeof(value)) && !('toJSON' in value) && !hasConstructorOf(value, TypesonPromise) && !hasConstructorOf(value, Promise) && !hasConstructorOf(value, ArrayBuffer) || isPlainObj || stateObj.iterateIn === 'object') {\n clone = {};\n\n if (stateObj.addLength) {\n clone.length = value.length;\n }\n\n observerData = {\n clone: clone\n };\n } else {\n ret = value; // Only clone vanilla objects and arrays\n }\n }\n\n if (runObserver) {\n runObserver();\n }\n\n if (opts.iterateNone) {\n return clone || ret;\n }\n\n if (!clone) {\n return ret;\n } // Iterate object or array\n\n\n if (stateObj.iterateIn) {\n var _loop = function _loop(key) {\n var ownKeysObj = {\n ownKeys: hasOwn.call(value, key)\n };\n\n _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, function () {\n var kp = keypath + (keypath ? '.' : '') + escapeKeyPathComponent(key);\n\n var val = _encapsulate(kp, value[key], Boolean(cyclic), stateObj, promisesData, resolvingTypesonPromise);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n promisesData.push([kp, val, Boolean(cyclic), stateObj, clone, key, stateObj.type]);\n } else if (val !== undefined) {\n clone[key] = val;\n }\n });\n };\n\n // eslint-disable-next-line guard-for-in\n for (var key in value) {\n _loop(key);\n }\n\n if (runObserver) {\n runObserver({\n endIterateIn: true,\n end: true\n });\n }\n } else {\n // Note: Non-indexes on arrays won't survive stringify so\n // somewhat wasteful for arrays, but so too is iterating\n // all numeric indexes on sparse arrays when not wanted\n // or filtering own keys for positive integers\n keys(value).forEach(function (key) {\n var kp = keypath + (keypath ? '.' : '') + escapeKeyPathComponent(key);\n var ownKeysObj = {\n ownKeys: true\n };\n\n _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, function () {\n var val = _encapsulate(kp, value[key], Boolean(cyclic), stateObj, promisesData, resolvingTypesonPromise);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n promisesData.push([kp, val, Boolean(cyclic), stateObj, clone, key, stateObj.type]);\n } else if (val !== undefined) {\n clone[key] = val;\n }\n });\n });\n\n if (runObserver) {\n runObserver({\n endIterateOwn: true,\n end: true\n });\n }\n } // Iterate array for non-own numeric properties (we can't\n // replace the prior loop though as it iterates non-integer\n // keys)\n\n\n if (stateObj.iterateUnsetNumeric) {\n var vl = value.length;\n\n var _loop2 = function _loop2(i) {\n if (!(i in value)) {\n // No need to escape numeric\n var kp = keypath + (keypath ? '.' : '') + i;\n var ownKeysObj = {\n ownKeys: false\n };\n\n _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, function () {\n var val = _encapsulate(kp, undefined, Boolean(cyclic), stateObj, promisesData, resolvingTypesonPromise);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n promisesData.push([kp, val, Boolean(cyclic), stateObj, clone, i, stateObj.type]);\n } else if (val !== undefined) {\n clone[i] = val;\n }\n });\n }\n };\n\n for (var i = 0; i < vl; i++) {\n _loop2(i);\n }\n\n if (runObserver) {\n runObserver({\n endIterateUnsetNumeric: true,\n end: true\n });\n }\n }\n\n return clone;\n }\n /**\n * @typedef {PlainObject} KeyPathEvent\n * @property {string} cyclicKeypath\n */\n\n /**\n * @typedef {PlainObject} EndIterateInEvent\n * @property {boolean} endIterateIn\n * @property {boolean} end\n */\n\n /**\n * @typedef {PlainObject} EndIterateUnsetNumericEvent\n * @property {boolean} endIterateUnsetNumeric\n * @property {boolean} end\n */\n\n /**\n * @typedef {PlainObject} TypeDetectedEvent\n * @property {boolean} typeDetected\n */\n\n /**\n * @typedef {PlainObject} ReplacingEvent\n * @property {boolean} replacing\n */\n\n /**\n * @callback Observer\n * @param {KeyPathEvent|EndIterateInEvent|EndIterateUnsetNumericEvent|\n * TypeDetectedEvent|ReplacingEvent} [event]\n * @returns {void}\n */\n\n /**\n *\n * @param {string} keypath\n * @param {any} value\n * @param {PlainObject} stateObj\n * @param {GenericArray} promisesData\n * @param {boolean} plainObject\n * @param {boolean} resolvingTypesonPromise\n * @param {Observer} [runObserver]\n * @returns {any}\n */\n\n\n function replace(keypath, value, stateObj, promisesData, plainObject, resolvingTypesonPromise, runObserver) {\n // Encapsulate registered types\n var replacers = plainObject ? that.plainObjectReplacers : that.nonplainObjectReplacers;\n var i = replacers.length;\n\n while (i--) {\n var replacer = replacers[i];\n\n if (replacer.test(value, stateObj)) {\n var type = replacer.type;\n\n if (that.revivers[type]) {\n // Record the type only if a corresponding reviver\n // exists. This is to support specs where only\n // replacement is done.\n // For example, ensuring deep cloning of the object,\n // or replacing a type to its equivalent without\n // the need to revive it.\n var existing = types[keypath]; // type can comprise an array of types (see test\n // \"should support intermediate types\")\n\n types[keypath] = existing ? [type].concat(existing) : type;\n }\n\n Object.assign(stateObj, {\n type: type,\n replaced: true\n });\n\n if ((sync || !replacer.replaceAsync) && !replacer.replace) {\n if (runObserver) {\n runObserver({\n typeDetected: true\n });\n }\n\n return _encapsulate(keypath, value, cyclic && 'readonly', stateObj, promisesData, resolvingTypesonPromise, type);\n }\n\n if (runObserver) {\n runObserver({\n replacing: true\n });\n } // Now, also traverse the result in case it contains its\n // own types to replace\n\n\n var replaceMethod = sync || !replacer.replaceAsync ? 'replace' : 'replaceAsync';\n return _encapsulate(keypath, replacer[replaceMethod](value, stateObj), cyclic && 'readonly', stateObj, promisesData, resolvingTypesonPromise, type);\n }\n }\n\n return value;\n }\n\n return promisesDataRoot.length ? sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Sync method requested but async result obtained');\n }() : Promise.resolve(checkPromises(ret, promisesDataRoot)).then(finish) : !sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Async method requested but sync result obtained');\n }() // If this is a synchronous request for stringification, yet\n // a promise is the result, we don't want to resolve leading\n // to an async result, so we return an array to avoid\n // ambiguity\n : opts.stringification && sync ? [finish(ret)] : sync ? finish(ret) : Promise.resolve(finish(ret));\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {any} obj\n * @param {StateObject} stateObj\n * @param {TypesonOptions} opts\n * @returns {any}\n */\n\n }, {\n key: \"encapsulateSync\",\n value: function encapsulateSync(obj, stateObj, opts) {\n return this.encapsulate(obj, stateObj, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: true\n }));\n }\n /**\n * @param {any} obj\n * @param {StateObject} stateObj\n * @param {TypesonOptions} opts\n * @returns {any}\n */\n\n }, {\n key: \"encapsulateAsync\",\n value: function encapsulateAsync(obj, stateObj, opts) {\n return this.encapsulate(obj, stateObj, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: false\n }));\n }\n /**\n * Revive an encapsulated object.\n * This method is used internally by `Typeson.parse()`.\n * @param {PlainObject} obj - Object to revive. If it has `$types` member,\n * the properties that are listed there will be replaced with its true\n * type instead of just plain objects.\n * @param {TypesonOptions} opts\n * @throws TypeError If mismatch between sync/async type and result\n * @returns {Promise<any>|any} If async, returns a Promise that resolves\n * to `any`.\n */\n\n }, {\n key: \"revive\",\n value: function revive(obj, opts) {\n var types = obj && obj.$types; // No type info added. Revival not needed.\n\n if (!types) {\n return obj;\n } // Object happened to have own `$types` property but with\n // no actual types, so we unescape and return that object\n\n\n if (types === true) {\n return obj.$;\n }\n\n opts = _objectSpread2(_objectSpread2({\n sync: true\n }, this.options), opts);\n var _opts3 = opts,\n sync = _opts3.sync;\n var keyPathResolutions = [];\n var stateObj = {};\n var ignore$Types = true; // Special when root object is not a trivial Object, it will\n // be encapsulated in `$`. It will also be encapsulated in\n // `$` if it has its own `$` property to avoid ambiguity\n\n if (types.$ && isPlainObject(types.$)) {\n obj = obj.$;\n types = types.$;\n ignore$Types = false;\n }\n\n var that = this;\n /**\n * @callback RevivalReducer\n * @param {any} value\n * @param {string} type\n * @returns {any}\n */\n\n /**\n *\n * @param {string} type\n * @param {any} val\n * @throws {Error}\n * @returns {any}\n */\n\n function executeReviver(type, val) {\n var _ref = that.revivers[type] || [],\n _ref2 = _slicedToArray(_ref, 1),\n reviver = _ref2[0];\n\n if (!reviver) {\n throw new Error('Unregistered type: ' + type);\n } // Only `sync` expected here, as problematic async would\n // be missing both `reviver` and `reviverAsync`, and\n // encapsulation shouldn't have added types, so\n // should have made an early exit\n\n\n if (sync && !('revive' in reviver)) {\n // Just return value as is\n return val;\n }\n\n return reviver[sync && reviver.revive ? 'revive' : !sync && reviver.reviveAsync ? 'reviveAsync' : 'revive'](val, stateObj);\n }\n /**\n *\n * @returns {void|TypesonPromise<void>}\n */\n\n\n function revivePlainObjects() {\n // const references = [];\n // const reviveTypes = [];\n var plainObjectTypes = [];\n Object.entries(types).forEach(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n keypath = _ref4[0],\n type = _ref4[1];\n\n if (type === '#') {\n /*\n references.push({\n keypath,\n reference: getByKeyPath(obj, keypath)\n });\n */\n return;\n }\n\n [].concat(type).forEach(function (type) {\n var _ref5 = that.revivers[type] || [null, {}],\n _ref6 = _slicedToArray(_ref5, 2),\n plain = _ref6[1].plain;\n\n if (!plain) {\n // reviveTypes.push({keypath, type});\n return;\n }\n\n plainObjectTypes.push({\n keypath: keypath,\n type: type\n });\n delete types[keypath]; // Avoid repeating\n });\n });\n\n if (!plainObjectTypes.length) {\n return undefined;\n } // console.log(plainObjectTypes.sort(nestedPathsFirst));\n\n /**\n * @typedef {PlainObject} PlainObjectType\n * @property {string} keypath\n * @property {string} type\n */\n\n\n return plainObjectTypes.sort(nestedPathsFirst).reduce(function reducer(possibleTypesonPromise, _ref7) {\n var keypath = _ref7.keypath,\n type = _ref7.type;\n\n if (isThenable(possibleTypesonPromise)) {\n return possibleTypesonPromise.then(function (val) {\n return reducer(val, {\n keypath: keypath,\n type: type\n });\n });\n } // console.log('obj', JSON.stringify(keypath), obj);\n\n\n var val = getByKeyPath(obj, keypath);\n val = executeReviver(type, val);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n return val.then(function (v) {\n var newVal = setAtKeyPath(obj, keypath, v);\n\n if (newVal === v) {\n obj = newVal;\n }\n\n return undefined;\n });\n }\n\n var newVal = setAtKeyPath(obj, keypath, val);\n\n if (newVal === val) {\n obj = newVal;\n }\n\n return undefined;\n }, undefined // This argument must be explicit\n ); // references.forEach(({keypath, reference}) => {});\n // reviveTypes.sort(nestedPathsFirst).forEach(() => {});\n }\n\n var revivalPromises = [];\n /**\n *\n * @param {string} keypath\n * @param {any} value\n * @param {?(GenericArray|PlainObject)} target\n * @param {GenericArray|PlainObject} [clone]\n * @param {string} [key]\n * @returns {any}\n */\n\n function _revive(keypath, value, target, clone, key) {\n if (ignore$Types && keypath === '$types') {\n return undefined;\n }\n\n var type = types[keypath];\n var isArr = isArray(value);\n\n if (isArr || isPlainObject(value)) {\n // eslint-disable-next-line unicorn/no-new-array -- Sparse\n var _clone = isArr ? new Array(value.length) : {}; // Iterate object or array\n\n\n keys(value).forEach(function (k) {\n var val = _revive(keypath + (keypath ? '.' : '') + escapeKeyPathComponent(k), value[k], target || _clone, _clone, k);\n\n var set = function set(v) {\n if (hasConstructorOf(v, Undefined)) {\n _clone[k] = undefined;\n } else if (v !== undefined) {\n _clone[k] = v;\n }\n\n return v;\n };\n\n if (hasConstructorOf(val, TypesonPromise)) {\n revivalPromises.push(val.then(function (ret) {\n return set(ret);\n }));\n } else {\n set(val);\n }\n });\n value = _clone; // Try to resolve cyclic reference as soon as available\n\n while (keyPathResolutions.length) {\n var _keyPathResolutions$ = _slicedToArray(keyPathResolutions[0], 4),\n _target = _keyPathResolutions$[0],\n keyPath = _keyPathResolutions$[1],\n _clone2 = _keyPathResolutions$[2],\n k = _keyPathResolutions$[3];\n\n var val = getByKeyPath(_target, keyPath); // Typeson.Undefined not expected here as not cyclic or\n // `undefined`\n\n if (val !== undefined) {\n _clone2[k] = val;\n } else {\n break;\n }\n\n keyPathResolutions.splice(0, 1);\n }\n }\n\n if (!type) {\n return value;\n }\n\n if (type === '#') {\n var _ret = getByKeyPath(target, value.slice(1));\n\n if (_ret === undefined) {\n // Cyclic reference not yet available\n keyPathResolutions.push([target, value.slice(1), clone, key]);\n }\n\n return _ret;\n } // `type` can be an array here\n\n\n return [].concat(type).reduce(function reducer(val, typ) {\n if (hasConstructorOf(val, TypesonPromise)) {\n return val.then(function (v) {\n // TypesonPromise here too\n return reducer(v, typ);\n });\n }\n\n return executeReviver(typ, val);\n }, value);\n }\n /**\n *\n * @param {any} retrn\n * @returns {undefined|any}\n */\n\n\n function checkUndefined(retrn) {\n return hasConstructorOf(retrn, Undefined) ? undefined : retrn;\n }\n\n var possibleTypesonPromise = revivePlainObjects();\n var ret;\n\n if (hasConstructorOf(possibleTypesonPromise, TypesonPromise)) {\n ret = possibleTypesonPromise.then(function () {\n return obj;\n });\n } else {\n ret = _revive('', obj, null);\n\n if (revivalPromises.length) {\n // Ensure children resolved\n ret = TypesonPromise.resolve(ret).then(function (r) {\n return TypesonPromise.all([// May be a TypesonPromise or not\n r].concat(revivalPromises));\n }).then(function (_ref8) {\n var _ref9 = _slicedToArray(_ref8, 1),\n r = _ref9[0];\n\n return r;\n });\n }\n }\n\n return isThenable(ret) ? sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Sync method requested but async result obtained');\n }() : hasConstructorOf(ret, TypesonPromise) ? ret.p.then(checkUndefined) : ret : !sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Async method requested but sync result obtained');\n }() : sync ? checkUndefined(ret) : Promise.resolve(checkUndefined(ret));\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {any} obj\n * @param {TypesonOptions} opts\n * @returns {any}\n */\n\n }, {\n key: \"reviveSync\",\n value: function reviveSync(obj, opts) {\n return this.revive(obj, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: true\n }));\n }\n /**\n * @param {any} obj\n * @param {TypesonOptions} opts\n * @returns {Promise<any>}\n */\n\n }, {\n key: \"reviveAsync\",\n value: function reviveAsync(obj, opts) {\n return this.revive(obj, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: false\n }));\n }\n /**\n * @typedef {Tester|Replacer|Reviver} Spec\n */\n\n /**\n * Register types.\n * For examples on how to use this method, see\n * {@link https://github.com/dfahlander/typeson-registry/tree/master/types}.\n * @param {object<string,Spec[]>[]} typeSpecSets -\n * Types and their functions [test, encapsulate, revive];\n * @param {TypesonOptions} opts\n * @returns {Typeson}\n */\n\n }, {\n key: \"register\",\n value: function register(typeSpecSets, opts) {\n opts = opts || {};\n [].concat(typeSpecSets).forEach(function R(typeSpec) {\n var _this = this;\n\n // Allow arrays of arrays of arrays...\n if (isArray(typeSpec)) {\n return typeSpec.map(function (typSpec) {\n return R.call(_this, typSpec);\n });\n }\n\n typeSpec && keys(typeSpec).forEach(function (typeId) {\n if (typeId === '#') {\n throw new TypeError('# cannot be used as a type name as it is reserved ' + 'for cyclic objects');\n } else if (Typeson.JSON_TYPES.includes(typeId)) {\n throw new TypeError('Plain JSON object types are reserved as type names');\n }\n\n var spec = typeSpec[typeId];\n var replacers = spec && spec.testPlainObjects ? this.plainObjectReplacers : this.nonplainObjectReplacers;\n var existingReplacer = replacers.filter(function (r) {\n return r.type === typeId;\n });\n\n if (existingReplacer.length) {\n // Remove existing spec and replace with this one.\n replacers.splice(replacers.indexOf(existingReplacer[0]), 1);\n delete this.revivers[typeId];\n delete this.types[typeId];\n }\n\n if (typeof spec === 'function') {\n // Support registering just a class without replacer/reviver\n var Class = spec;\n spec = {\n test: function test(x) {\n return x && x.constructor === Class;\n },\n replace: function replace(x) {\n return _objectSpread2({}, x);\n },\n revive: function revive(x) {\n return Object.assign(Object.create(Class.prototype), x);\n }\n };\n } else if (isArray(spec)) {\n var _spec = spec,\n _spec2 = _slicedToArray(_spec, 3),\n test = _spec2[0],\n replace = _spec2[1],\n revive = _spec2[2];\n\n spec = {\n test: test,\n replace: replace,\n revive: revive\n };\n }\n\n if (!spec || !spec.test) {\n return;\n }\n\n var replacerObj = {\n type: typeId,\n test: spec.test.bind(spec)\n };\n\n if (spec.replace) {\n replacerObj.replace = spec.replace.bind(spec);\n }\n\n if (spec.replaceAsync) {\n replacerObj.replaceAsync = spec.replaceAsync.bind(spec);\n }\n\n var start = typeof opts.fallback === 'number' ? opts.fallback : opts.fallback ? 0 : Number.POSITIVE_INFINITY;\n\n if (spec.testPlainObjects) {\n this.plainObjectReplacers.splice(start, 0, replacerObj);\n } else {\n this.nonplainObjectReplacers.splice(start, 0, replacerObj);\n } // Todo: We might consider a testAsync type\n\n\n if (spec.revive || spec.reviveAsync) {\n var reviverObj = {};\n\n if (spec.revive) {\n reviverObj.revive = spec.revive.bind(spec);\n }\n\n if (spec.reviveAsync) {\n reviverObj.reviveAsync = spec.reviveAsync.bind(spec);\n }\n\n this.revivers[typeId] = [reviverObj, {\n plain: spec.testPlainObjects\n }];\n } // Record to be retrieved via public types property.\n\n\n this.types[typeId] = spec;\n }, this);\n }, this);\n return this;\n }\n }]);\n\n return Typeson;\n}();\n/**\n * We keep this function minimized so if using two instances of this\n * library, where one is minimized and one is not, it will still work\n * with `hasConstructorOf`.\n * @class\n */\n\n\nvar Undefined = function Undefined() {\n _classCallCheck(this, Undefined);\n}; // eslint-disable-line space-before-blocks\n\n\nUndefined.__typeson__type__ = 'TypesonUndefined'; // The following provide classes meant to avoid clashes with other values\n// To insist `undefined` should be added\n\nTypeson.Undefined = Undefined; // To support async encapsulation/stringification\n\nTypeson.Promise = TypesonPromise; // Some fundamental type-checking utilities\n\nTypeson.isThenable = isThenable;\nTypeson.toStringTag = toStringTag;\nTypeson.hasConstructorOf = hasConstructorOf;\nTypeson.isObject = isObject;\nTypeson.isPlainObject = isPlainObject;\nTypeson.isUserObject = isUserObject;\nTypeson.escapeKeyPathComponent = escapeKeyPathComponent;\nTypeson.unescapeKeyPathComponent = unescapeKeyPathComponent;\nTypeson.getByKeyPath = getByKeyPath;\nTypeson.getJSONType = getJSONType;\nTypeson.JSON_TYPES = ['null', 'boolean', 'number', 'string', 'array', 'object'];\n\nexport default Typeson;\n","/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2017 Brett Zamir, 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; // Use a lookup table to find the index.\n\nvar lookup = new Uint8Array(256);\n\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n/**\n * @param {ArrayBuffer} arraybuffer\n * @param {Integer} byteOffset\n * @param {Integer} lngth\n * @returns {string}\n */\n\n\nvar encode = function encode(arraybuffer, byteOffset, lngth) {\n if (lngth === null || lngth === undefined) {\n lngth = arraybuffer.byteLength; // Needed for Safari\n }\n\n var bytes = new Uint8Array(arraybuffer, byteOffset || 0, // Default needed for Safari\n lngth);\n var len = bytes.length;\n var base64 = '';\n\n for (var _i = 0; _i < len; _i += 3) {\n base64 += chars[bytes[_i] >> 2];\n base64 += chars[(bytes[_i] & 3) << 4 | bytes[_i + 1] >> 4];\n base64 += chars[(bytes[_i + 1] & 15) << 2 | bytes[_i + 2] >> 6];\n base64 += chars[bytes[_i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.slice(0, -1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.slice(0, -2) + '==';\n }\n\n return base64;\n};\n/**\n * @param {string} base64\n * @returns {ArrayBuffer}\n */\n\nvar decode = function decode(base64) {\n var len = base64.length;\n var bufferLength = base64.length * 0.75;\n var p = 0;\n var encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (var _i2 = 0; _i2 < len; _i2 += 4) {\n encoded1 = lookup[base64.charCodeAt(_i2)];\n encoded2 = lookup[base64.charCodeAt(_i2 + 1)];\n encoded3 = lookup[base64.charCodeAt(_i2 + 2)];\n encoded4 = lookup[base64.charCodeAt(_i2 + 3)];\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n\n return arraybuffer;\n};\n\nexport { decode, encode };\n","import Typeson from 'typeson';\n\nconst userObject = {\n userObject: {\n test (x, stateObj) { return Typeson.isUserObject(x); },\n replace (n) { return {...n}; },\n revive (s) { return s; }\n }\n};\n\nexport default userObject;\n","const arrayNonindexKeys = [\n {\n arrayNonindexKeys: {\n testPlainObjects: true,\n test (x, stateObj) {\n if (Array.isArray(x)) {\n if (\n // By avoiding serializing arrays into objects which\n // have only positive-integer keys, we reduce\n // size and improve revival performance; arrays with\n // non-index keys will be larger however\n Object.keys(x).some((k) => {\n // No need to check for `isNaN` or\n // `isNaN(Number.parseInt())` as `NaN` will be\n // treated as a string.\n // No need to do check as\n // `Number.parseInt(Number())` since scientific\n // notation will be pre-resolved if a number\n // was given, and it will otherwise be a string\n return String(Number.parseInt(k)) !== k;\n })\n ) {\n stateObj.iterateIn = 'object';\n stateObj.addLength = true;\n }\n return true;\n }\n return false;\n },\n replace (a, stateObj) {\n // Catch sparse undefined\n stateObj.iterateUnsetNumeric = true;\n return a;\n },\n revive (o) {\n if (Array.isArray(o)) {\n return o;\n }\n const arr = [];\n // No map here as may be a sparse array (including\n // with `length` set)\n // Todo: Reenable when Node `engines` >= 7\n // Object.entries(o).forEach(([key, val]) => {\n Object.keys(o).forEach((key) => {\n const val = o[key];\n arr[key] = val;\n });\n return arr;\n }\n }\n },\n {\n sparseUndefined: {\n test (x, stateObj) {\n return typeof x === 'undefined' && stateObj.ownKeys === false;\n },\n replace (n) { return 0; },\n revive (s) { return undefined; } // Will avoid adding anything\n }\n }\n];\n\nexport default arrayNonindexKeys;\n","// This does not preserve `undefined` in sparse arrays; see the `undefined`\n// or `sparse-undefined` preset\nimport Typeson from 'typeson';\n\nconst undef = {\n undef: {\n test (x, stateObj) {\n return typeof x === 'undefined' &&\n (stateObj.ownKeys || !('ownKeys' in stateObj));\n },\n replace (n) { return 0; },\n revive (s) {\n // Will add `undefined` (returning `undefined` would instead\n // avoid explicitly setting)\n return new Typeson.Undefined();\n }\n }\n};\n\nexport default undef;\n","// This module is for objectified primitives (such as `new Number(3)` or\n// `new String(\"foo\")`)\n/* eslint-disable no-new-wrappers, unicorn/new-for-builtins */\nimport Typeson from 'typeson';\n\nconst primitiveObjects = {\n // String Object (not primitive string which need no type spec)\n StringObject: {\n test (x) {\n return Typeson.toStringTag(x) === 'String' && typeof x === 'object';\n },\n replace (s) { return String(s); }, // convert to primitive string\n revive (s) { return new String(s); } // Revive to an objectified string\n },\n // Boolean Object (not primitive boolean which need no type spec)\n BooleanObject: {\n test (x) {\n return Typeson.toStringTag(x) === 'Boolean' &&\n typeof x === 'object';\n },\n replace (b) { return Boolean(b); }, // convert to primitive boolean\n revive (b) {\n // Revive to an objectified Boolean\n return new Boolean(b);\n }\n },\n // Number Object (not primitive number which need no type spec)\n NumberObject: {\n test (x) {\n return Typeson.toStringTag(x) === 'Number' && typeof x === 'object';\n },\n replace (n) { return Number(n); }, // convert to primitive number\n revive (n) { return new Number(n); } // Revive to an objectified number\n }\n};\n/* eslint-enable no-new-wrappers, unicorn/new-for-builtins */\n\nexport default primitiveObjects;\n","import nan from '../types/nan.js';\nimport infinity from '../types/infinity.js';\nimport NegativeInfinity from '../types/negative-infinity.js';\n\nconst specialNumbers = [\n nan,\n infinity,\n NegativeInfinity\n];\n\nexport default specialNumbers;\n","const nan = {\n nan: {\n test (x) { return Number.isNaN(x); },\n replace (n) { return 'NaN'; },\n revive (s) { return Number.NaN; }\n }\n};\n\nexport default nan;\n","const infinity = {\n infinity: {\n test (x) { return x === Number.POSITIVE_INFINITY; },\n replace (n) { return 'Infinity'; },\n revive (s) { return Number.POSITIVE_INFINITY; }\n }\n};\n\nexport default infinity;\n","const negativeInfinity = {\n negativeInfinity: {\n test (x) { return x === Number.NEGATIVE_INFINITY; },\n replace (n) { return '-Infinity'; },\n revive (s) { return Number.NEGATIVE_INFINITY; }\n }\n};\n\nexport default negativeInfinity;\n","import Typeson from 'typeson';\n\nconst date = {\n date: {\n test (x) { return Typeson.toStringTag(x) === 'Date'; },\n replace (dt) {\n const time = dt.getTime();\n if (Number.isNaN(time)) {\n return 'NaN';\n }\n return time;\n },\n revive (time) {\n if (time === 'NaN') {\n return new Date(Number.NaN);\n }\n return new Date(time);\n }\n }\n};\n\nexport default date;\n","import Typeson from 'typeson';\n\nconst regexp = {\n regexp: {\n test (x) { return Typeson.toStringTag(x) === 'RegExp'; },\n replace (rexp) {\n return {\n source: rexp.source,\n flags: (rexp.global ? 'g' : '') +\n (rexp.ignoreCase ? 'i' : '') +\n (rexp.multiline ? 'm' : '') +\n (rexp.sticky ? 'y' : '') +\n (rexp.unicode ? 'u' : '')\n };\n },\n revive ({source, flags}) { return new RegExp(source, flags); }\n }\n};\n\nexport default regexp;\n","import Typeson from 'typeson';\n\nconst map = {\n map: {\n test (x) { return Typeson.toStringTag(x) === 'Map'; },\n replace (mp) { return [...mp.entries()]; },\n revive (entries) { return new Map(entries); }\n }\n};\n\nexport default map;\n","import Typeson from 'typeson';\n\nconst set = {\n set: {\n test (x) { return Typeson.toStringTag(x) === 'Set'; },\n replace (st) {\n return [...st.values()];\n },\n revive (values) { return new Set(values); }\n }\n};\n\nexport default set;\n","import Typeson from 'typeson';\nimport {encode, decode} from 'base64-arraybuffer-es6';\n\nconst arraybuffer = {\n arraybuffer: {\n test (x) { return Typeson.toStringTag(x) === 'ArrayBuffer'; },\n replace (b, stateObj) {\n if (!stateObj.buffers) {\n stateObj.buffers = [];\n }\n const index = stateObj.buffers.indexOf(b);\n if (index > -1) {\n return {index};\n }\n stateObj.buffers.push(b);\n return encode(b);\n },\n revive (b64, stateObj) {\n if (!stateObj.buffers) {\n stateObj.buffers = [];\n }\n if (typeof b64 === 'object') {\n return stateObj.buffers[b64.index];\n }\n const buffer = decode(b64);\n stateObj.buffers.push(buffer);\n return buffer;\n }\n }\n};\n\nexport default arraybuffer;\n\n// See also typed-arrays!\n","/* eslint-env browser, node */\nimport Typeson from 'typeson';\nimport {encode, decode} from 'base64-arraybuffer-es6';\n\n/* istanbul ignore next */\nconst _global = typeof self === 'undefined' ? global : self;\n\nconst typedArrays = {};\n[\n 'Int8Array',\n 'Uint8Array',\n 'Uint8ClampedArray',\n 'Int16Array',\n 'Uint16Array',\n 'Int32Array',\n 'Uint32Array',\n 'Float32Array',\n 'Float64Array'\n].forEach(function (typeName) {\n const arrType = typeName;\n const TypedArray = _global[arrType];\n /* istanbul ignore if */\n if (!TypedArray) {\n return;\n }\n typedArrays[typeName.toLowerCase()] = {\n test (x) { return Typeson.toStringTag(x) === arrType; },\n replace ({buffer, byteOffset, length: l}, stateObj) {\n if (!stateObj.buffers) {\n stateObj.buffers = [];\n }\n const index = stateObj.buffers.indexOf(buffer);\n if (index > -1) {\n return {index, byteOffset, length: l};\n }\n stateObj.buffers.push(buffer);\n return {\n encoded: encode(buffer),\n byteOffset,\n length: l\n };\n },\n revive (b64Obj, stateObj) {\n if (!stateObj.buffers) {\n stateObj.buffers = [];\n }\n const {byteOffset, length: len, encoded, index} = b64Obj;\n let buffer;\n if ('index' in b64Obj) {\n buffer = stateObj.buffers[index];\n } else {\n buffer = decode(encoded);\n stateObj.buffers.push(buffer);\n }\n return new TypedArray(buffer, byteOffset, len);\n }\n };\n});\n\nexport default typedArrays;\n","import Typeson from 'typeson';\nimport {encode, decode} from 'base64-arraybuffer-es6';\n\nconst dataview = {\n dataview: {\n test (x) { return Typeson.toStringTag(x) === 'DataView'; },\n replace ({buffer, byteOffset, byteLength}, stateObj) {\n if (!stateObj.buffers) {\n stateObj.buffers = [];\n }\n const index = stateObj.buffers.indexOf(buffer);\n if (index > -1) {\n return {index, byteOffset, byteLength};\n }\n stateObj.buffers.push(buffer);\n return {\n encoded: encode(buffer),\n byteOffset,\n byteLength\n };\n },\n revive (b64Obj, stateObj) {\n if (!stateObj.buffers) {\n stateObj.buffers = [];\n }\n const {byteOffset, byteLength, encoded, index} = b64Obj;\n let buffer;\n if ('index' in b64Obj) {\n buffer = stateObj.buffers[index];\n } else {\n buffer = decode(encoded);\n stateObj.buffers.push(buffer);\n }\n return new DataView(buffer, byteOffset, byteLength);\n }\n }\n};\n\nexport default dataview;\n","import Typeson from 'typeson';\n\nconst IntlCollator = {\n test (x) { return Typeson.hasConstructorOf(x, Intl.Collator); },\n replace (c) { return c.resolvedOptions(); },\n revive (options) { return new Intl.Collator(options.locale, options); }\n};\n\nconst IntlDateTimeFormat = {\n test (x) { return Typeson.hasConstructorOf(x, Intl.DateTimeFormat); },\n replace (dtf) { return dtf.resolvedOptions(); },\n revive (options) {\n return new Intl.DateTimeFormat(options.locale, options);\n }\n};\n\nconst IntlNumberFormat = {\n test (x) { return Typeson.hasConstructorOf(x, Intl.NumberFormat); },\n replace (nf) { return nf.resolvedOptions(); },\n revive (options) { return new Intl.NumberFormat(options.locale, options); }\n};\n\nconst intlTypes = {\n IntlCollator,\n IntlDateTimeFormat,\n IntlNumberFormat\n};\n\nexport default intlTypes;\n","/**\n * Not currently in use internally, but provided for parity.\n * @param {ArrayBuffer} buf\n * @returns {Uint8Array}\n */\nfunction arraybuffer2string (buf) {\n return new Uint8Array(buf).reduce(\n (s, byte) => s + String.fromCharCode(byte), ''\n );\n}\n\n/**\n *\n * @param {string} str\n * @returns {ArrayBuffer}\n */\nfunction string2arraybuffer (str) {\n /*\n // UTF-8 approaches\n const utf8 = unescape(encodeURIComponent(str));\n const arr = new Uint8Array(utf8.length);\n for (let i = 0; i < utf8.length; i++) {\n arr[i] = utf8.charCodeAt(i);\n }\n return arr.buffer;\n\n const utf8 = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 0x80) utf8.push(charcode);\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6),\n 0x80 | (charcode & 0x3f));\n } else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12),\n 0x80 | ((charcode >> 6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n // surrogate pair\n } else {\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff) << 10) |\n (str.charCodeAt(i) & 0x3ff));\n utf8.push(0xf0 | (charcode >> 18),\n 0x80 | ((charcode >> 12) & 0x3f),\n 0x80 | ((charcode >> 6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n }\n return utf8;\n */\n /*\n // Working UTF-16 options (equivalents)\n const buf = new ArrayBuffer(str.length * 2); // 2 bytes for each char\n const bufView = new Uint16Array(buf);\n for (let i = 0, strLen = str.length; i < strLen; i++) {\n bufView[i] = str.charCodeAt(i);\n }\n return buf;\n */\n\n const array = new Uint8Array(str.length);\n for (let i = 0; i < str.length; i++) {\n array[i] = str.charCodeAt(i); // & 0xff;\n }\n return array.buffer;\n}\nexport {arraybuffer2string, string2arraybuffer};\n","/* globals XMLHttpRequest, File, FileReader */\nimport Typeson from 'typeson';\nimport {string2arraybuffer} from '../utils/stringArrayBuffer.js';\n\nconst file = {\n file: {\n test (x) { return Typeson.toStringTag(x) === 'File'; },\n replace (f) { // Sync\n const req = new XMLHttpRequest();\n req.overrideMimeType('text/plain; charset=x-user-defined');\n req.open('GET', URL.createObjectURL(f), false); // Sync\n req.send();\n\n // Seems not feasible to accurately simulate\n /* istanbul ignore next */\n if (req.status !== 200 && req.status !== 0) {\n throw new Error('Bad File access: ' + req.status);\n }\n return {\n type: f.type,\n stringContents: req.responseText,\n name: f.name,\n lastModified: f.lastModified\n };\n },\n revive ({name, type, stringContents, lastModified}) {\n return new File([string2arraybuffer(stringContents)], name, {\n type,\n lastModified\n });\n },\n replaceAsync (f) {\n return new Typeson.Promise(function (resolve, reject) {\n /*\n if (f.isClosed) { // On MDN, but not in https://w3c.github.io/FileAPI/#dfn-Blob\n reject(new Error('The File is closed'));\n return;\n }\n */\n const reader = new FileReader();\n reader.addEventListener('load', function () {\n resolve({\n type: f.type,\n stringContents: reader.result,\n name: f.name,\n lastModified: f.lastModified\n });\n });\n // Seems not feasible to accurately simulate\n /* istanbul ignore next */\n reader.addEventListener('error', function () {\n reject(reader.error);\n });\n reader.readAsBinaryString(f);\n });\n }\n }\n};\n\nexport default file;\n","/* globals BigInt */\n\nconst bigint = {\n bigint: {\n test (x) {\n return typeof x === 'bigint';\n },\n replace (n) { return String(n); },\n revive (s) { return BigInt(s); }\n }\n};\n\nexport default bigint;\n","/* globals BigInt */\nimport Typeson from 'typeson';\n\nconst bigintObject = {\n bigintObject: {\n test (x) {\n return typeof x === 'object' && Typeson.hasConstructorOf(x, BigInt);\n },\n replace (n) { return String(n); },\n revive (s) {\n // Filed this to avoid error: https://github.com/eslint/eslint/issues/11810\n // eslint-disable-next-line no-new-object\n return new Object(BigInt(s));\n }\n }\n};\n\nexport default bigintObject;\n","/* globals crypto */\nimport Typeson from 'typeson';\n\nconst cryptokey = {\n cryptokey: {\n test (x) {\n return Typeson.toStringTag(x) === 'CryptoKey' && x.extractable;\n },\n replaceAsync (key) {\n return new Typeson.Promise((resolve, reject) => {\n // eslint-disable-next-line promise/catch-or-return\n crypto.subtle.exportKey('jwk', key).catch(\n /* eslint-disable promise/prefer-await-to-callbacks */\n // istanbul ignore next\n (err) => {\n /* eslint-enable promise/prefer-await-to-callbacks */\n // eslint-disable-next-line max-len\n // istanbul ignore next -- Our format should be valid and our key extractable\n reject(err);\n }\n // eslint-disable-next-line max-len\n // eslint-disable-next-line promise/always-return, promise/prefer-await-to-then\n ).then((jwk) => {\n resolve({\n jwk,\n algorithm: key.algorithm,\n usages: key.usages\n });\n });\n });\n },\n revive ({jwk, algorithm, usages}) {\n return crypto.subtle.importKey('jwk', jwk, algorithm, true, usages);\n }\n }\n};\n\nexport default cryptokey;\n","/* This preset includes types for the Structured Cloning Algorithm. */\n\nimport userObject from '../types/user-object.js';\nimport arrayNonindexKeys from './array-nonindex-keys.js';\nimport undef from '../types/undef.js';\nimport primitiveObjects from '../types/primitive-objects.js';\nimport specialNumbers from './special-numbers.js';\nimport date from '../types/date.js';\nimport regexp from '../types/regexp.js';\nimport map from '../types/map.js';\nimport set from '../types/set.js';\nimport arraybuffer from '../types/arraybuffer.js';\nimport typedArrays from '../types/typed-arrays.js';\nimport dataview from '../types/dataview.js';\nimport intlTypes from '../types/intl-types.js';\n\nimport imagedata from '../types/imagedata.js';\nimport imagebitmap from '../types/imagebitmap.js'; // Async return\nimport file from '../types/file.js';\nimport filelist from '../types/filelist.js';\nimport blob from '../types/blob.js';\nimport bigint from '../types/bigint.js';\nimport bigintObject from '../types/bigint-object.js';\n\nimport cryptokey from '../types/cryptokey.js';\n\nconst expObj = [\n // Todo: Might also register synchronous `ImageBitmap` and\n // `Blob`/`File`/`FileList`?\n // ES5\n userObject, // Processed last (non-builtin)\n\n undef,\n arrayNonindexKeys, primitiveObjects, specialNumbers,\n date, regexp,\n\n // Non-built-ins\n imagedata,\n imagebitmap, // Async return\n file,\n filelist,\n blob\n].concat(\n // ES2015 (ES6)\n /* istanbul ignore next */\n typeof Map === 'function' ? map : [],\n /* istanbul ignore next */\n typeof Set === 'function' ? set : [],\n /* istanbul ignore next */\n typeof ArrayBuffer === 'function' ? arraybuffer : [],\n /* istanbul ignore next */\n typeof Uint8Array === 'function' ? typedArrays : [],\n /* istanbul ignore next */\n typeof DataView === 'function' ? dataview : [],\n /* istanbul ignore next */\n typeof Intl !== 'undefined' ? intlTypes : [],\n /* istanbul ignore next */\n typeof crypto !== 'undefined' ? cryptokey : [],\n /* istanbul ignore next */\n typeof BigInt !== 'undefined' ? [bigint, bigintObject] : []\n);\nexport default expObj;\n","/* globals ImageData */\n// `ImageData` is browser / DOM specific (though `node-canvas` has it\n// available on `Canvas`).\n\nimport Typeson from 'typeson';\n\nconst imagedata = {\n imagedata: {\n test (x) { return Typeson.toStringTag(x) === 'ImageData'; },\n replace (d) {\n return {\n // Ensure `length` gets preserved for revival\n array: [...d.data],\n width: d.width,\n height: d.height\n };\n },\n revive (o) {\n return new ImageData(\n new Uint8ClampedArray(o.array), o.width, o.height\n );\n }\n }\n};\n\nexport default imagedata;\n","/* globals createImageBitmap */\n// `ImageBitmap` is browser / DOM specific. It also can only work\n// same-domain (or CORS)\n\nimport Typeson from 'typeson';\n\nconst imagebitmap = {\n imagebitmap: {\n test (x) {\n return Typeson.toStringTag(x) === 'ImageBitmap' ||\n // In Node, our polyfill sets the dataset on a canvas\n // element as JSDom no longer allows overriding toStringTag\n (x && x.dataset && x.dataset.toStringTag === 'ImageBitmap');\n },\n replace (bm) {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n ctx.drawImage(bm, 0, 0);\n // Although `width` and `height` are part of `ImageBitMap`,\n // these will be auto-created for us when reviving with the\n // data URL (and they are not settable even if they weren't)\n // return {\n // width: bm.width, height: bm.height, dataURL: canvas.toDataURL()\n // };\n return canvas.toDataURL();\n },\n revive (o) {\n /*\n var req = new XMLHttpRequest();\n req.open('GET', o, false); // Sync\n if (req.status !== 200 && req.status !== 0) {\n throw new Error('Bad ImageBitmap access: ' + req.status);\n }\n req.send();\n return req.responseText;\n */\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n const img = document.createElement('img');\n // The onload is needed by some browsers per http://stackoverflow.com/a/4776378/271577\n img.addEventListener('load', function () {\n ctx.drawImage(img, 0, 0);\n });\n img.src = o;\n // Works in contexts allowing an `ImageBitmap` (We might use\n // `OffscreenCanvas.transferToBitmap` when supported)\n return canvas;\n },\n reviveAsync (o) {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n const img = document.createElement('img');\n // The onload is needed by some browsers per http://stackoverflow.com/a/4776378/271577\n img.addEventListener('load', function () {\n ctx.drawImage(img, 0, 0);\n });\n img.src = o; // o.dataURL;\n return createImageBitmap(canvas); // Returns a promise\n }\n }\n};\n\nexport default imagebitmap;\n","import Typeson from 'typeson';\nimport file from './file.js';\n\nconst filelist = {\n file: file.file,\n filelist: {\n test (x) { return Typeson.toStringTag(x) === 'FileList'; },\n replace (fl) {\n const arr = [];\n for (let i = 0; i < fl.length; i++) {\n arr[i] = fl.item(i);\n }\n return arr;\n },\n revive (o) {\n /**\n * `FileList` polyfill.\n */\n class FileList {\n /**\n * Set private properties and length.\n */\n constructor () {\n // eslint-disable-next-line prefer-rest-params\n this._files = arguments[0];\n this.length = this._files.length;\n }\n /**\n * @param {Integer} index\n * @returns {File}\n */\n item (index) {\n return this._files[index];\n }\n /* eslint-disable class-methods-use-this */\n /**\n * @returns {\"FileList\"}\n */\n get [Symbol.toStringTag] () {\n /* eslint-enable class-methods-use-this */\n return 'FileList';\n }\n }\n return new FileList(o);\n }\n }\n};\n\nexport default filelist;\n","/* globals XMLHttpRequest, Blob, FileReader */\nimport Typeson from 'typeson';\nimport {string2arraybuffer} from '../utils/stringArrayBuffer.js';\n\nconst blob = {\n blob: {\n test (x) { return Typeson.toStringTag(x) === 'Blob'; },\n replace (b) { // Sync\n const req = new XMLHttpRequest();\n req.overrideMimeType('text/plain; charset=x-user-defined');\n req.open('GET', URL.createObjectURL(b), false); // Sync\n req.send();\n\n // Seems not feasible to accurately simulate\n /* istanbul ignore next */\n if (req.status !== 200 && req.status !== 0) {\n throw new Error('Bad Blob access: ' + req.status);\n }\n return {\n type: b.type,\n stringContents: req.responseText\n };\n },\n revive ({type, stringContents}) {\n return new Blob([string2arraybuffer(stringContents)], {type});\n },\n replaceAsync (b) {\n return new Typeson.Promise((resolve, reject) => {\n /*\n if (b.isClosed) { // On MDN, but not in https://w3c.github.io/FileAPI/#dfn-Blob\n reject(new Error('The Blob is closed'));\n return;\n }\n */\n const reader = new FileReader();\n reader.addEventListener('load', () => {\n resolve({\n type: b.type,\n stringContents: reader.result\n });\n });\n // Seems not feasible to accurately simulate\n /* istanbul ignore next */\n reader.addEventListener('error', () => {\n reject(reader.error);\n });\n reader.readAsBinaryString(b);\n });\n }\n }\n};\n\nexport default blob;\n","/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2017 Brett Zamir, 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; // Use a lookup table to find the index.\n\nvar lookup = new Uint8Array(256);\n\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.codePointAt(i)] = i;\n}\n/**\n * @param {ArrayBuffer} arraybuffer\n * @param {Integer} byteOffset\n * @param {Integer} lngth\n * @returns {string}\n */\n\n\nvar encode = function encode(arraybuffer, byteOffset, lngth) {\n if (lngth === null || lngth === undefined) {\n lngth = arraybuffer.byteLength; // Needed for Safari\n }\n\n var bytes = new Uint8Array(arraybuffer, byteOffset || 0, // Default needed for Safari\n lngth);\n var len = bytes.length;\n var base64 = '';\n\n for (var _i = 0; _i < len; _i += 3) {\n base64 += chars[bytes[_i] >> 2];\n base64 += chars[(bytes[_i] & 3) << 4 | bytes[_i + 1] >> 4];\n base64 += chars[(bytes[_i + 1] & 15) << 2 | bytes[_i + 2] >> 6];\n base64 += chars[bytes[_i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.slice(0, -1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.slice(0, -2) + '==';\n }\n\n return base64;\n};\n/**\n * @param {string} base64\n * @returns {ArrayBuffer}\n */\n\nvar decode = function decode(base64) {\n var len = base64.length;\n var bufferLength = base64.length * 0.75;\n var p = 0;\n var encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (var _i2 = 0; _i2 < len; _i2 += 4) {\n encoded1 = lookup[base64.codePointAt(_i2)];\n encoded2 = lookup[base64.codePointAt(_i2 + 1)];\n encoded3 = lookup[base64.codePointAt(_i2 + 2)];\n encoded4 = lookup[base64.codePointAt(_i2 + 3)];\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n\n return arraybuffer;\n};\n\nexport { decode, encode };\n","declare var global;\n\n/* eslint-env browser, node */\nimport Typeson from 'typeson';\nimport {encode, decode} from 'base64-arraybuffer-es6';\n\nconst _global = typeof self === 'undefined' ? global : self;\n\nconst exportObj = {};\n[\n 'Int8Array',\n 'Uint8Array',\n 'Uint8ClampedArray',\n 'Int16Array',\n 'Uint16Array',\n 'Int32Array',\n 'Uint32Array',\n 'Float32Array',\n 'Float64Array'\n].forEach(function (typeName) {\n const arrType = typeName;\n const TypedArray = _global[arrType];\n if (TypedArray) {\n exportObj[typeName.toLowerCase()+\"2\"] = {\n test (x) { return Typeson.toStringTag(x) === arrType; },\n replace ({buffer, byteOffset, length}) {\n return {\n buffer,\n byteOffset,\n length\n };\n },\n revive (b64Obj) {\n const {buffer, byteOffset, length} = b64Obj;\n return new TypedArray(buffer, byteOffset, length);\n }\n };\n }\n});\n\nexport default exportObj;\n","import Typeson from 'typeson';\nimport {encode, decode} from 'base64-arraybuffer-es6';\n\nexport default {\n arraybuffer: {\n test (x) { return Typeson.toStringTag(x) === 'ArrayBuffer'; },\n replace (b) {\n return encode(b, 0, b.byteLength);\n },\n revive (b64) {\n const buffer = decode(b64);\n return buffer;\n }\n }\n};\n\n// See also typed-arrays!\n","import Typeson from 'typeson';\nimport StructuredCloning from 'typeson-registry/dist/presets/structured-cloning';\nimport { encode as encodeB64, decode as decodeB64 } from 'base64-arraybuffer-es6';\nimport Dexie from 'dexie';\nimport { readBlobSync, readBlobAsync } from './helpers';\nimport typedArray from './tson-typed-array';\nimport arrayBuffer from './tson-arraybuffer';\n\nexport const TSON = new Typeson().register(StructuredCloning);\n\nconst readBlobsSynchronously = 'FileReaderSync' in self; // true in workers only.\n\nlet blobsToAwait: any[] = [];\nlet blobsToAwaitPos = 0;\n\n// Need to patch encapsulateAsync as it does not work as of typeson 5.8.2\n// Also, current version of typespn-registry-1.0.0-alpha.21 does not\n// encapsulate/revive Blobs correctly (fails one of the unit tests in\n// this library (test 'export-format'))\nTSON.register([\n arrayBuffer,\n typedArray, {\n blob2: {\n test(x) { return Typeson.toStringTag(x) === 'Blob'; },\n replace(b) {\n if (b.isClosed) { // On MDN, but not in https://w3c.github.io/FileAPI/#dfn-Blob\n throw new Error('The Blob is closed');\n }\n if (readBlobsSynchronously) {\n const data = readBlobSync(b, 'binary');\n const base64 = encodeB64(data, 0, data.byteLength);\n return {\n type: b.type,\n data: base64\n }\n } else {\n blobsToAwait.push(b); // This will also make TSON.mustFinalize() return true.\n const result = {\n type: b.type,\n data: {start: blobsToAwaitPos, end: blobsToAwaitPos + b.size}\n }\n blobsToAwaitPos += b.size;\n return result;\n }\n },\n finalize(b, ba: ArrayBuffer) {\n b.data = encodeB64(ba, 0, ba.byteLength);\n },\n revive ({type, data}) {\n return new Blob([decodeB64(data)], {type});\n }\n }\n }\n]);\n\nTSON.mustFinalize = ()=>blobsToAwait.length > 0;\n\nTSON.finalize = async (items?: any[]) => {\n const allChunks = await readBlobAsync(new Blob(blobsToAwait), 'binary');\n if (items) {\n for (const item of items) {\n // Manually go through all \"blob\" types in the result\n // and lookup the data slice they point at.\n if (item.$types) {\n let types = item.$types;\n const arrayType = types.$;\n if (arrayType) types = types.$;\n for (let keyPath in types) {\n const typeName = types[keyPath];\n const typeSpec = TSON.types[typeName];\n if (typeSpec && typeSpec.finalize) {\n const b = Dexie.getByKeyPath(item, arrayType ? \"$.\" + keyPath : keyPath);\n typeSpec.finalize(b, allChunks.slice(b.start, b.end));\n }\n }\n }\n }\n }\n // Free up memory\n blobsToAwait = [];\n}\n","\nimport Dexie from 'dexie';\nimport { getSchemaString, extractDbSchema } from './helpers';\nimport { DexieExportedTable, DexieExportJsonStructure } from './json-structure';\nimport { TSON } from './tson';\n\nexport interface ExportOptions {\n noTransaction?: boolean;\n numRowsPerChunk?: number;\n prettyJson?: boolean;\n filter?: (table: string, value: any, key?: any) => boolean;\n progressCallback?: (progress: ExportProgress) => boolean;\n}\n\nexport interface ExportProgress {\n totalTables: number;\n completedTables: number;\n totalRows: number | undefined;\n completedRows: number;\n done: boolean;\n}\n\nconst DEFAULT_ROWS_PER_CHUNK = 2000;\n\nexport async function exportDB(db: Dexie, options?: ExportOptions): Promise<Blob> {\n options = options || {};\n const slices: (string | Blob)[] = [];\n const tables = db.tables.map(table => ({\n name: table.name,\n schema: getSchemaString(table),\n rowCount: 0\n }));\n const {prettyJson} = options!;\n const emptyExport: DexieExportJsonStructure = {\n formatName: \"dexie\",\n formatVersion: 1,\n data: {\n databaseName: db.name,\n databaseVersion: db.verno,\n tables: tables,\n data: []\n }\n };\n \n const {progressCallback} = options!;\n const progress: ExportProgress = {\n done: false,\n completedRows: 0,\n completedTables: 0,\n totalRows: NaN,\n totalTables: db.tables.length\n };\n\n try {\n if (options!.noTransaction) {\n await exportAll();\n } else {\n await db.transaction('r', db.tables, exportAll);\n }\n } finally {\n TSON.finalize(); // Free up mem if error has occurred\n }\n\n return new Blob(slices,{type: \"text/json\"});\n\n async function exportAll() {\n // Count rows:\n const tablesRowCounts = await Promise.all(db.tables.map(table => table.count()));\n tablesRowCounts.forEach((rowCount, i) => tables[i].rowCount = rowCount);\n progress.totalRows = tablesRowCounts.reduce((p,c)=>p+c);\n\n // Write first JSON slice\n const emptyExportJson = JSON.stringify(emptyExport, undefined, prettyJson ? 2 : undefined);\n const posEndDataArray = emptyExportJson.lastIndexOf(']');\n const firstJsonSlice = emptyExportJson.substring(0, posEndDataArray);\n slices.push(firstJsonSlice);\n\n const filter = options!.filter;\n\n for (const {name: tableName} of tables) {\n const table = db.table(tableName);\n const {primKey} = table.schema;\n const inbound = !!primKey.keyPath;\n const LIMIT = options!.numRowsPerChunk || DEFAULT_ROWS_PER_CHUNK;\n const emptyTableExport: DexieExportedTable = inbound ? {\n tableName: table.name,\n inbound: true,\n rows: []\n } : {\n tableName: table.name,\n inbound: false,\n rows: []\n };\n let emptyTableExportJson = JSON.stringify(emptyTableExport, undefined, prettyJson ? 2 : undefined);\n if (prettyJson) {\n // Increase indentation according to this:\n // {\n // ...\n // data: [\n // ...\n // data: [\n // 123456<---- here\n // ] \n // ]\n // }\n emptyTableExportJson = emptyTableExportJson.split('\\n').join('\\n ');\n }\n const posEndRowsArray = emptyTableExportJson.lastIndexOf(']');\n slices.push(emptyTableExportJson.substring(0, posEndRowsArray));\n let lastKey: any = null;\n let lastNumRows = 0;\n let mayHaveMoreRows = true;\n while (mayHaveMoreRows) {\n if (progressCallback) {\n // Keep ongoing transaction private\n Dexie.ignoreTransaction(()=>progressCallback(progress));\n }\n const chunkedCollection = lastKey == null ?\n table.limit(LIMIT) :\n table.where(':id').above(lastKey).limit(LIMIT);\n\n const values = await chunkedCollection.toArray();\n\n if (values.length === 0) break;\n\n if (lastKey != null && lastNumRows > 0) {\n // Not initial chunk. Must add a comma:\n slices.push(\",\");\n if (prettyJson) {\n slices.push(\"\\n \");\n }\n }\n\n mayHaveMoreRows = values.length === LIMIT;\n \n if (inbound) {\n const filteredValues = filter ?\n values.filter(value => filter(tableName, value)) :\n values;\n\n const tsonValues = filteredValues.map(value => TSON.encapsulate(value));\n if (TSON.mustFinalize()) {\n await Dexie.waitFor(TSON.finalize(tsonValues));\n }\n\n let json = JSON.stringify(tsonValues, undefined, prettyJson ? 2 : undefined);\n if (prettyJson) json = json.split('\\n').join('\\n ');\n\n // By generating a blob here, we give web platform the opportunity to store the contents\n // on disk and release RAM.\n slices.push(new Blob([json.substring(1, json.length - 1)]));\n lastNumRows = filteredValues.length;\n lastKey = values.length > 0 ?\n Dexie.getByKeyPath(values[values.length -1], primKey.keyPath as string) :\n null;\n } else {\n const keys = await chunkedCollection.primaryKeys();\n let keyvals = keys.map((key, i) => [key, values[i]]);\n if (filter) keyvals = keyvals.filter(([key, value]) => filter(tableName, value, key));\n\n const tsonTuples = keyvals.map(tuple => TSON.encapsulate(tuple));\n if (TSON.mustFinalize()) {\n await Dexie.waitFor(TSON.finalize(tsonTuples));\n }\n\n let json = JSON.stringify(tsonTuples, undefined, prettyJson ? 2 : undefined);\n if (prettyJson) json = json.split('\\n').join('\\n ');\n\n // By generating a blob here, we give web platform the opportunity to store the contents\n // on disk and release RAM.\n slices.push(new Blob([json.substring(1, json.length - 1)]));\n lastNumRows = keyvals.length;\n lastKey = keys.length > 0 ?\n keys[keys.length - 1] :\n null;\n }\n progress.completedRows += values.length;\n }\n slices.push(emptyTableExportJson.substr(posEndRowsArray)); // \"]}\"\n progress.completedTables += 1;\n if (progress.completedTables < progress.totalTables) {\n slices.push(\",\");\n }\n }\n slices.push(emptyExportJson.substr(posEndDataArray));\n progress.done = true;\n if (progressCallback) {\n // Keep ongoing transaction private\n Dexie.ignoreTransaction(()=>progressCallback(progress));\n }\n }\n}\n","export const VERSION = 1;\n\n/** Same as DexieExportJsonStructure but without the data.data array */\nexport interface DexieExportJsonMeta {\n formatName: 'dexie';\n formatVersion: typeof VERSION;\n data: {\n databaseName: string;\n databaseVersion: number;\n tables: Array<{\n name: string;\n schema: string;\n rowCount: number;\n }>;\n }\n}\n\nexport interface DexieExportJsonStructure extends DexieExportJsonMeta {\n formatName: 'dexie';\n formatVersion: typeof VERSION;\n data: {\n databaseName: string;\n databaseVersion: number;\n tables: Array<{\n name: string;\n schema: string;\n rowCount: number;\n }>;\n data: Array<{\n tableName: string;\n inbound: boolean;\n rows: any[];\n }>;\n }\n}\n\nexport type DexieExportedDatabase = DexieExportJsonStructure[\"data\"];\nexport type DexieExportedTable = DexieExportedDatabase[\"data\"][number];\n","module.exports = {Stream: function(){}};\n\n",";(function (clarinet) {\n \"use strict\";\n\n // non node-js needs to set clarinet debug on root\n var env =(typeof process === 'object' && process.env)\n ? process.env\n : self;\n\n clarinet.parser = function (opt) { return new CParser(opt);};\n clarinet.CParser = CParser;\n clarinet.CStream = CStream;\n clarinet.createStream = createStream;\n clarinet.MAX_BUFFER_LENGTH = 10 * 1024 * 1024;\n clarinet.DEBUG = (env.CDEBUG==='debug');\n clarinet.INFO = (env.CDEBUG==='debug' || env.CDEBUG==='info');\n clarinet.EVENTS =\n [ \"value\"\n , \"string\"\n , \"key\"\n , \"openobject\"\n , \"closeobject\"\n , \"openarray\"\n , \"closearray\"\n , \"error\"\n , \"end\"\n , \"ready\"\n ];\n\n var buffers = {\n textNode: undefined,\n numberNode: \"\"\n }\n , streamWraps = clarinet.EVENTS.filter(function (ev) {\n return ev !== \"error\" && ev !== \"end\";\n })\n , S = 0\n , Stream\n ;\n\n clarinet.STATE =\n { BEGIN : S++\n , VALUE : S++ // general stuff\n , OPEN_OBJECT : S++ // {\n , CLOSE_OBJECT : S++ // }\n , OPEN_ARRAY : S++ // [\n , CLOSE_ARRAY : S++ // ]\n , TEXT_ESCAPE : S++ // \\ stuff\n , STRING : S++ // \"\"\n , BACKSLASH : S++\n , END : S++ // No more stack\n , OPEN_KEY : S++ // , \"a\"\n , CLOSE_KEY : S++ // :\n , TRUE : S++ // r\n , TRUE2 : S++ // u\n , TRUE3 : S++ // e\n , FALSE : S++ // a\n , FALSE2 : S++ // l\n , FALSE3 : S++ // s\n , FALSE4 : S++ // e\n , NULL : S++ // u\n , NULL2 : S++ // l\n , NULL3 : S++ // l\n , NUMBER_DECIMAL_POINT : S++ // .\n , NUMBER_DIGIT : S++ // [0-9]\n };\n\n for (var s_ in clarinet.STATE) clarinet.STATE[clarinet.STATE[s_]] = s_;\n\n // switcharoo\n S = clarinet.STATE;\n\n const Char = {\n tab : 0x09, // \\t\n lineFeed : 0x0A, // \\n\n carriageReturn : 0x0D, // \\r\n space : 0x20, // \" \"\n\n doubleQuote : 0x22, // \"\n plus : 0x2B, // +\n comma : 0x2C, // ,\n minus : 0x2D, // -\n period : 0x2E, // .\n\n _0 : 0x30, // 0\n _9 : 0x39, // 9\n\n colon : 0x3A, // :\n\n E : 0x45, // E\n\n openBracket : 0x5B, // [\n backslash : 0x5C, // \\\n closeBracket : 0x5D, // ]\n\n a : 0x61, // a\n b : 0x62, // b\n e : 0x65, // e \n f : 0x66, // f\n l : 0x6C, // l\n n : 0x6E, // n\n r : 0x72, // r\n s : 0x73, // s\n t : 0x74, // t\n u : 0x75, // u\n\n openBrace : 0x7B, // {\n closeBrace : 0x7D, // }\n }\n\n if (!Object.create) {\n Object.create = function (o) {\n function f () { this[\"__proto__\"] = o; }\n f.prototype = o;\n return new f;\n };\n }\n\n if (!Object.getPrototypeOf) {\n Object.getPrototypeOf = function (o) {\n return o[\"__proto__\"];\n };\n }\n\n if (!Object.keys) {\n Object.keys = function (o) {\n var a = [];\n for (var i in o) if (o.hasOwnProperty(i)) a.push(i);\n return a;\n };\n }\n\n function checkBufferLength (parser) {\n var maxAllowed = Math.max(clarinet.MAX_BUFFER_LENGTH, 10)\n , maxActual = 0\n ;\n for (var buffer in buffers) {\n var len = parser[buffer] === undefined ? 0 : parser[buffer].length;\n if (len > maxAllowed) {\n switch (buffer) {\n case \"text\":\n closeText(parser);\n break;\n\n default:\n error(parser, \"Max buffer length exceeded: \"+ buffer);\n }\n }\n maxActual = Math.max(maxActual, len);\n }\n parser.bufferCheckPosition = (clarinet.MAX_BUFFER_LENGTH - maxActual)\n + parser.position;\n }\n\n function clearBuffers (parser) {\n for (var buffer in buffers) {\n parser[buffer] = buffers[buffer];\n }\n }\n\n var stringTokenPattern = /[\\\\\"\\n]/g;\n\n function CParser (opt) {\n if (!(this instanceof CParser)) return new CParser (opt);\n\n var parser = this;\n clearBuffers(parser);\n parser.bufferCheckPosition = clarinet.MAX_BUFFER_LENGTH;\n parser.q = parser.c = parser.p = \"\";\n parser.opt = opt || {};\n parser.closed = parser.closedRoot = parser.sawRoot = false;\n parser.tag = parser.error = null;\n parser.state = S.BEGIN;\n parser.stack = new Array();\n // mostly just for error reporting\n parser.position = parser.column = 0;\n parser.line = 1;\n parser.slashed = false;\n parser.unicodeI = 0;\n parser.unicodeS = null;\n parser.depth = 0;\n emit(parser, \"onready\");\n }\n\n CParser.prototype =\n { end : function () { end(this); }\n , write : write\n , resume : function () { this.error = null; return this; }\n , close : function () { return this.write(null); }\n };\n\n try { Stream = require(\"stream\").Stream; }\n catch (ex) { Stream = function () {}; }\n\n function createStream (opt) { return new CStream(opt); }\n\n function CStream (opt) {\n if (!(this instanceof CStream)) return new CStream(opt);\n\n this._parser = new CParser(opt);\n this.writable = true;\n this.readable = true;\n\n //var Buffer = this.Buffer || function Buffer () {}; // if we don't have Buffers, fake it so we can do `var instanceof Buffer` and not throw an error\n this.bytes_remaining = 0; // number of bytes remaining in multi byte utf8 char to read after split boundary\n this.bytes_in_sequence = 0; // bytes in multi byte utf8 char to read\n this.temp_buffs = { \"2\": new Buffer(2), \"3\": new Buffer(3), \"4\": new Buffer(4) }; // for rebuilding chars split before boundary is reached\n this.string = '';\n\n var me = this;\n Stream.apply(me);\n\n this._parser.onend = function () { me.emit(\"end\"); };\n this._parser.onerror = function (er) {\n me.emit(\"error\", er);\n me._parser.error = null;\n };\n\n streamWraps.forEach(function (ev) {\n Object.defineProperty(me, \"on\" + ev,\n { get : function () { return me._parser[\"on\" + ev]; }\n , set : function (h) {\n if (!h) {\n me.removeAllListeners(ev);\n me._parser[\"on\"+ev] = h;\n return h;\n }\n me.on(ev, h);\n }\n , enumerable : true\n , configurable : false\n });\n });\n }\n\n CStream.prototype = Object.create(Stream.prototype,\n { constructor: { value: CStream } });\n\n CStream.prototype.write = function (data) {\n data = new Buffer(data);\n for (var i = 0; i < data.length; i++) {\n var n = data[i];\n\n // check for carry over of a multi byte char split between data chunks\n // & fill temp buffer it with start of this data chunk up to the boundary limit set in the last iteration\n if (this.bytes_remaining > 0) {\n for (var j = 0; j < this.bytes_remaining; j++) {\n this.temp_buffs[this.bytes_in_sequence][this.bytes_in_sequence - this.bytes_remaining + j] = data[j];\n }\n this.string = this.temp_buffs[this.bytes_in_sequence].toString();\n this.bytes_in_sequence = this.bytes_remaining = 0;\n\n // move iterator forward by number of byte read during sequencing\n i = i + j - 1;\n\n // pass data to parser and move forward to parse rest of data\n this._parser.write(this.string);\n this.emit(\"data\", this.string);\n continue;\n }\n\n // if no remainder bytes carried over, parse multi byte (>=128) chars one at a time\n if (this.bytes_remaining === 0 && n >= 128) {\n if ((n >= 194) && (n <= 223)) this.bytes_in_sequence = 2;\n if ((n >= 224) && (n <= 239)) this.bytes_in_sequence = 3;\n if ((n >= 240) && (n <= 244)) this.bytes_in_sequence = 4;\n if ((this.bytes_in_sequence + i) > data.length) { // if bytes needed to complete char fall outside data length, we have a boundary split\n\n for (var k = 0; k <= (data.length - 1 - i); k++) {\n this.temp_buffs[this.bytes_in_sequence][k] = data[i + k]; // fill temp data of correct size with bytes available in this chunk\n }\n this.bytes_remaining = (i + this.bytes_in_sequence) - data.length;\n\n // immediately return as we need another chunk to sequence the character\n return true;\n } else {\n this.string = data.slice(i, (i + this.bytes_in_sequence)).toString();\n i = i + this.bytes_in_sequence - 1;\n\n this._parser.write(this.string);\n this.emit(\"data\", this.string);\n continue;\n }\n }\n\n // is there a range of characters that are immediately parsable?\n for (var p = i; p < data.length; p++) {\n if (data[p] >= 128) break;\n }\n this.string = data.slice(i, p).toString();\n this._parser.write(this.string);\n this.emit(\"data\", this.string);\n i = p - 1;\n\n // handle any remaining characters using multibyte logic\n continue;\n }\n };\n\n CStream.prototype.end = function (chunk) {\n if (chunk && chunk.length) this._parser.write(chunk.toString());\n this._parser.end();\n return true;\n };\n\n CStream.prototype.on = function (ev, handler) {\n var me = this;\n if (!me._parser[\"on\"+ev] && streamWraps.indexOf(ev) !== -1) {\n me._parser[\"on\"+ev] = function () {\n var args = arguments.length === 1 ? [arguments[0]]\n : Array.apply(null, arguments);\n args.splice(0, 0, ev);\n me.emit.apply(me, args);\n };\n }\n return Stream.prototype.on.call(me, ev, handler);\n };\n\n CStream.prototype.destroy = function () {\n clearBuffers(this._parser);\n this.emit(\"close\");\n };\n\n function emit(parser, event, data) {\n if(clarinet.INFO) console.log('-- emit', event, data);\n if (parser[event]) parser[event](data);\n }\n\n function emitNode(parser, event, data) {\n closeValue(parser);\n emit(parser, event, data);\n }\n\n function closeValue(parser, event) {\n parser.textNode = textopts(parser.opt, parser.textNode);\n if (parser.textNode !== undefined) {\n emit(parser, (event ? event : \"onvalue\"), parser.textNode);\n }\n parser.textNode = undefined;\n }\n\n function closeNumber(parser) {\n if (parser.numberNode)\n emit(parser, \"onvalue\", parseFloat(parser.numberNode));\n parser.numberNode = \"\";\n }\n\n function textopts (opt, text) {\n if (text === undefined) {\n return text;\n }\n if (opt.trim) text = text.trim();\n if (opt.normalize) text = text.replace(/\\s+/g, \" \");\n return text;\n }\n\n function error (parser, er) {\n closeValue(parser);\n er += \"\\nLine: \"+parser.line+\n \"\\nColumn: \"+parser.column+\n \"\\nChar: \"+parser.c;\n er = new Error(er);\n parser.error = er;\n emit(parser, \"onerror\", er);\n return parser;\n }\n\n function end(parser) {\n if (parser.state !== S.VALUE || parser.depth !== 0)\n error(parser, \"Unexpected end\");\n\n closeValue(parser);\n parser.c = \"\";\n parser.closed = true;\n emit(parser, \"onend\");\n CParser.call(parser, parser.opt);\n return parser;\n }\n\n function isWhitespace(c) {\n return c === Char.carriageReturn || c === Char.lineFeed || c === Char.space || c === Char.tab;\n }\n\n function write (chunk) {\n var parser = this;\n if (this.error) throw this.error;\n if (parser.closed) return error(parser,\n \"Cannot write after close. Assign an onready handler.\");\n if (chunk === null) return end(parser);\n var i = 0, c = chunk.charCodeAt(0), p = parser.p;\n if (clarinet.DEBUG) console.log('write -> [' + chunk + ']');\n while (c) {\n p = c;\n parser.c = c = chunk.charCodeAt(i++);\n // if chunk doesnt have next, like streaming char by char\n // this way we need to check if previous is really previous\n // if not we need to reset to what the parser says is the previous\n // from buffer\n if(p !== c ) parser.p = p;\n else p = parser.p;\n\n if(!c) break;\n\n if (clarinet.DEBUG) console.log(i,c,clarinet.STATE[parser.state]);\n parser.position ++;\n if (c === Char.lineFeed) {\n parser.line ++;\n parser.column = 0;\n } else parser.column ++;\n switch (parser.state) {\n\n case S.BEGIN:\n if (c === Char.openBrace) parser.state = S.OPEN_OBJECT;\n else if (c === Char.openBracket) parser.state = S.OPEN_ARRAY;\n else if (!isWhitespace(c))\n error(parser, \"Non-whitespace before {[.\");\n continue;\n\n case S.OPEN_KEY:\n case S.OPEN_OBJECT:\n if (isWhitespace(c)) continue;\n if(parser.state === S.OPEN_KEY) parser.stack.push(S.CLOSE_KEY);\n else {\n if(c === Char.closeBrace) {\n emit(parser, 'onopenobject');\n this.depth++;\n emit(parser, 'oncloseobject');\n this.depth--;\n parser.state = parser.stack.pop() || S.VALUE;\n continue;\n } else parser.stack.push(S.CLOSE_OBJECT);\n }\n if(c === Char.doubleQuote) parser.state = S.STRING;\n else error(parser, \"Malformed object key should start with \\\"\");\n continue;\n\n case S.CLOSE_KEY:\n case S.CLOSE_OBJECT:\n if (isWhitespace(c)) continue;\n var event = (parser.state === S.CLOSE_KEY) ? 'key' : 'object';\n if(c === Char.colon) {\n if(parser.state === S.CLOSE_OBJECT) {\n parser.stack.push(S.CLOSE_OBJECT);\n closeValue(parser, 'onopenobject');\n this.depth++;\n } else closeValue(parser, 'onkey');\n parser.state = S.VALUE;\n } else if (c === Char.closeBrace) {\n emitNode(parser, 'oncloseobject');\n this.depth--;\n parser.state = parser.stack.pop() || S.VALUE;\n } else if(c === Char.comma) {\n if(parser.state === S.CLOSE_OBJECT)\n parser.stack.push(S.CLOSE_OBJECT);\n closeValue(parser);\n parser.state = S.OPEN_KEY;\n } else error(parser, 'Bad object');\n continue;\n\n case S.OPEN_ARRAY: // after an array there always a value\n case S.VALUE:\n if (isWhitespace(c)) continue;\n if(parser.state===S.OPEN_ARRAY) {\n emit(parser, 'onopenarray');\n this.depth++;\n parser.state = S.VALUE;\n if(c === Char.closeBracket) {\n emit(parser, 'onclosearray');\n this.depth--;\n parser.state = parser.stack.pop() || S.VALUE;\n continue;\n } else {\n parser.stack.push(S.CLOSE_ARRAY);\n }\n }\n if(c === Char.doubleQuote) parser.state = S.STRING;\n else if(c === Char.openBrace) parser.state = S.OPEN_OBJECT;\n else if(c === Char.openBracket) parser.state = S.OPEN_ARRAY;\n else if(c === Char.t) parser.state = S.TRUE;\n else if(c === Char.f) parser.state = S.FALSE;\n else if(c === Char.n) parser.state = S.NULL;\n else if(c === Char.minus) { // keep and continue\n parser.numberNode += \"-\";\n } else if(Char._0 <= c && c <= Char._9) {\n parser.numberNode += String.fromCharCode(c);\n parser.state = S.NUMBER_DIGIT;\n } else error(parser, \"Bad value\");\n continue;\n\n case S.CLOSE_ARRAY:\n if(c === Char.comma) {\n parser.stack.push(S.CLOSE_ARRAY);\n closeValue(parser, 'onvalue');\n parser.state = S.VALUE;\n } else if (c === Char.closeBracket) {\n emitNode(parser, 'onclosearray');\n this.depth--;\n parser.state = parser.stack.pop() || S.VALUE;\n } else if (isWhitespace(c))\n continue;\n else error(parser, 'Bad array');\n continue;\n\n case S.STRING:\n if (parser.textNode === undefined) {\n parser.textNode = \"\";\n }\n\n // thanks thejh, this is an about 50% performance improvement.\n var starti = i-1\n , slashed = parser.slashed\n , unicodeI = parser.unicodeI\n ;\n STRING_BIGLOOP: while (true) {\n if (clarinet.DEBUG)\n console.log(i,c,clarinet.STATE[parser.state]\n ,slashed);\n // zero means \"no unicode active\". 1-4 mean \"parse some more\". end after 4.\n while (unicodeI > 0) {\n parser.unicodeS += String.fromCharCode(c);\n c = chunk.charCodeAt(i++);\n parser.position++;\n if (unicodeI === 4) {\n // TODO this might be slow? well, probably not used too often anyway\n parser.textNode += String.fromCharCode(parseInt(parser.unicodeS, 16));\n unicodeI = 0;\n starti = i-1;\n } else {\n unicodeI++;\n }\n // we can just break here: no stuff we skipped that still has to be sliced out or so\n if (!c) break STRING_BIGLOOP;\n }\n if (c === Char.doubleQuote && !slashed) {\n parser.state = parser.stack.pop() || S.VALUE;\n parser.textNode += chunk.substring(starti, i-1);\n parser.position += i - 1 - starti;\n break;\n }\n if (c === Char.backslash && !slashed) {\n slashed = true;\n parser.textNode += chunk.substring(starti, i-1);\n parser.position += i - 1 - starti;\n c = chunk.charCodeAt(i++);\n parser.position++;\n if (!c) break;\n }\n if (slashed) {\n slashed = false;\n if (c === Char.n) { parser.textNode += '\\n'; }\n else if (c === Char.r) { parser.textNode += '\\r'; }\n else if (c === Char.t) { parser.textNode += '\\t'; }\n else if (c === Char.f) { parser.textNode += '\\f'; }\n else if (c === Char.b) { parser.textNode += '\\b'; }\n else if (c === Char.u) {\n // \\uxxxx. meh!\n unicodeI = 1;\n parser.unicodeS = '';\n } else {\n parser.textNode += String.fromCharCode(c);\n }\n c = chunk.charCodeAt(i++);\n parser.position++;\n starti = i-1;\n if (!c) break;\n else continue;\n }\n\n stringTokenPattern.lastIndex = i;\n var reResult = stringTokenPattern.exec(chunk);\n if (reResult === null) {\n i = chunk.length+1;\n parser.textNode += chunk.substring(starti, i-1);\n parser.position += i - 1 - starti;\n break;\n }\n i = reResult.index+1;\n c = chunk.charCodeAt(reResult.index);\n if (!c) {\n parser.textNode += chunk.substring(starti, i-1);\n parser.position += i - 1 - starti;\n break;\n }\n }\n parser.slashed = slashed;\n parser.unicodeI = unicodeI;\n continue;\n\n case S.TRUE:\n if (c === Char.r) parser.state = S.TRUE2;\n else error(parser, 'Invalid true started with t'+ c);\n continue;\n\n case S.TRUE2:\n if (c === Char.u) parser.state = S.TRUE3;\n else error(parser, 'Invalid true started with tr'+ c);\n continue;\n\n case S.TRUE3:\n if(c === Char.e) {\n emit(parser, \"onvalue\", true);\n parser.state = parser.stack.pop() || S.VALUE;\n } else error(parser, 'Invalid true started with tru'+ c);\n continue;\n\n case S.FALSE:\n if (c === Char.a) parser.state = S.FALSE2;\n else error(parser, 'Invalid false started with f'+ c);\n continue;\n\n case S.FALSE2:\n if (c === Char.l) parser.state = S.FALSE3;\n else error(parser, 'Invalid false started with fa'+ c);\n continue;\n\n case S.FALSE3:\n if (c === Char.s) parser.state = S.FALSE4;\n else error(parser, 'Invalid false started with fal'+ c);\n continue;\n\n case S.FALSE4:\n if (c === Char.e) {\n emit(parser, \"onvalue\", false);\n parser.state = parser.stack.pop() || S.VALUE;\n } else error(parser, 'Invalid false started with fals'+ c);\n continue;\n\n case S.NULL:\n if (c === Char.u) parser.state = S.NULL2;\n else error(parser, 'Invalid null started with n'+ c);\n continue;\n\n case S.NULL2:\n if (c === Char.l) parser.state = S.NULL3;\n else error(parser, 'Invalid null started with nu'+ c);\n continue;\n\n case S.NULL3:\n if(c === Char.l) {\n emit(parser, \"onvalue\", null);\n parser.state = parser.stack.pop() || S.VALUE;\n } else error(parser, 'Invalid null started with nul'+ c);\n continue;\n\n case S.NUMBER_DECIMAL_POINT:\n if(c === Char.period) {\n parser.numberNode += \".\";\n parser.state = S.NUMBER_DIGIT;\n } else error(parser, 'Leading zero not followed by .');\n continue;\n\n case S.NUMBER_DIGIT:\n if(Char._0 <= c && c <= Char._9) parser.numberNode += String.fromCharCode(c);\n else if (c === Char.period) {\n if(parser.numberNode.indexOf('.')!==-1)\n error(parser, 'Invalid number has two dots');\n parser.numberNode += \".\";\n } else if (c === Char.e || c === Char.E) {\n if(parser.numberNode.indexOf('e')!==-1 ||\n parser.numberNode.indexOf('E')!==-1 )\n error(parser, 'Invalid number has two exponential');\n parser.numberNode += \"e\";\n } else if (c === Char.plus || c === Char.minus) {\n if(!(p === Char.e || p === Char.E))\n error(parser, 'Invalid symbol in number');\n parser.numberNode += String.fromCharCode(c);\n } else {\n closeNumber(parser);\n i--; // go back one\n parser.state = parser.stack.pop() || S.VALUE;\n }\n continue;\n\n default:\n error(parser, \"Unknown state: \" + parser.state);\n }\n }\n if (parser.position >= parser.bufferCheckPosition)\n checkBufferLength(parser);\n return parser;\n }\n\n})(typeof exports === \"undefined\" ? clarinet = {} : exports);\n","import clarinet from 'clarinet';\nimport { readBlobAsync, readBlobSync } from './helpers';\n\nexport interface JsonStream<T> {\n pullAsync(numBytes: number): Promise<Partial<T>>;\n pullSync(numBytes: number): Partial<T>;\n done(): boolean;\n eof(): boolean;\n result: Partial<T>;\n}\n\nexport function JsonStream<T>(blob: Blob): JsonStream<T> {\n let pos = 0;\n const parser = JsonParser(true);\n\n const rv = {\n async pullAsync(numBytes: number): Promise<Partial<T>> {\n const slize = blob.slice(pos, pos + numBytes);\n pos += numBytes;\n const jsonPart = await readBlobAsync(slize, 'text');\n const result = parser.write(jsonPart);\n rv.result = result || {};\n return result;\n },\n pullSync(numBytes: number): Partial<T> {\n const slize = blob.slice(pos, pos + numBytes);\n pos += numBytes;\n const jsonPart = readBlobSync(slize, 'text');\n const result = parser.write(jsonPart);\n rv.result = result || {};\n return result;\n },\n done() {\n return parser.done();\n },\n eof() {\n return pos >= blob.size;\n },\n result: {}\n }\n\n return rv;\n}\n\n\nexport function JsonParser (allowPartial: boolean) {\n const parser = (clarinet as any).parser();\n let level = 0;\n let result: any;\n const stack: any[][] = [];\n let obj: any;\n let key: string | null;\n let done = false;\n let array = false;\n\n parser.onopenobject = newKey => {\n const newObj = {};\n (newObj as any).incomplete = true;\n if (!result) result = newObj;\n if (obj) {\n stack.push([key,obj,array])\n if (allowPartial) {\n if (array) {\n obj.push(newObj);\n } else {\n obj[key!] = newObj;\n }\n }\n }\n obj = newObj;\n key = newKey;\n array = false;\n ++level;\n }\n parser.onkey = newKey => key = newKey;\n parser.onvalue = value => array ? obj.push(value) : obj[key!] = value;\n parser.oncloseobject = ()=>{\n delete obj.incomplete;\n key = null;\n if (--level === 0) {\n done = true;\n } else {\n const completedObj = obj;\n [key, obj, array] = stack.pop()!;\n if (!allowPartial) {\n if (array) {\n obj.push(completedObj);\n } else {\n obj[key!] = completedObj;\n }\n }\n }\n }\n parser.onopenarray = () => {\n const newObj = [];\n (newObj as any).incomplete = true;\n if (!result) result = newObj;\n if (obj) {\n stack.push([key,obj,array])\n if (allowPartial) {\n if (array) {\n obj.push(newObj);\n } else {\n obj[key!] = newObj;\n }\n }\n }\n obj = newObj;\n array = true;\n key = null;\n ++level;\n }\n parser.onclosearray = () => {\n delete obj.incomplete;\n key = null;\n if (--level === 0) {\n done = true;\n } else {\n const completedObj = obj;\n [key, obj, array] = stack.pop()!;\n if (!allowPartial) {\n if (array) {\n obj.push(completedObj);\n } else {\n obj[key!] = completedObj;\n }\n }\n }\n }\n\n return {\n write(jsonPart: string) {\n parser.write(jsonPart);\n return result;\n },\n done() {\n return done;\n }\n }\n}\n","import Dexie from 'dexie';\nimport { extractDbSchema } from './helpers';\nimport { DexieExportJsonMeta, DexieExportJsonStructure, VERSION } from './json-structure';\nimport { TSON } from './tson';\nimport { JsonStream } from './json-stream';\n\nexport interface StaticImportOptions {\n noTransaction?: boolean;\n chunkSizeBytes?: number; // Default: DEFAULT_KILOBYTES_PER_CHUNK ( 1MB )\n filter?: (table: string, value: any, key?: any) => boolean;\n progressCallback?: (progress: ImportProgress) => boolean;\n}\n\nexport interface ImportOptions extends StaticImportOptions {\n acceptMissingTables?: boolean;\n acceptVersionDiff?: boolean;\n acceptNameDiff?: boolean;\n acceptChangedPrimaryKey?: boolean;\n overwriteValues?: boolean;\n clearTablesBeforeImport?: boolean;\n noTransaction?: boolean;\n chunkSizeBytes?: number; // Default: DEFAULT_KILOBYTES_PER_CHUNK ( 1MB )\n filter?: (table: string, value: any, key?: any) => boolean;\n progressCallback?: (progress: ImportProgress) => boolean;\n}\n\nconst DEFAULT_KILOBYTES_PER_CHUNK = 1024;\n\nexport interface ImportProgress {\n totalTables: number;\n completedTables: number;\n totalRows: number | undefined;\n completedRows: number;\n done: boolean;\n}\n\nexport async function importDB(exportedData: Blob | JsonStream<DexieExportJsonStructure>, options?: StaticImportOptions): Promise<Dexie> {\n options = options || {}; // All booleans defaults to false.\n const CHUNK_SIZE = options!.chunkSizeBytes || (DEFAULT_KILOBYTES_PER_CHUNK * 1024);\n const stream = await loadUntilWeGotEnoughData(exportedData, CHUNK_SIZE);\n const dbExport = stream.result.data!;\n const db = new Dexie(dbExport.databaseName);\n db.version(dbExport.databaseVersion).stores(extractDbSchema(dbExport));\n await importInto(db, stream, options);\n return db;\n}\n\nexport async function peakImportFile(exportedData: Blob): Promise<DexieExportJsonMeta> {\n const stream = JsonStream<DexieExportJsonStructure>(exportedData);\n while (!stream.eof()) {\n await stream.pullAsync(5 * 1024); // 5 k is normally enough for the headers. If not, it will just do another go.\n if (stream.result.data && stream.result.data!.data) {\n // @ts-ignore - TS won't allow us to delete a required property - but we are going to cast it.\n delete stream.result.data.data; // Don't return half-baked data array.\n break;\n }\n }\n return stream.result as DexieExportJsonMeta;\n}\n\nexport async function importInto(db: Dexie, exportedData: Blob | JsonStream<DexieExportJsonStructure>, options?: ImportOptions): Promise<void> {\n options = options || {}; // All booleans defaults to false.\n const CHUNK_SIZE = options!.chunkSizeBytes || (DEFAULT_KILOBYTES_PER_CHUNK * 1024);\n const jsonStream = await loadUntilWeGotEnoughData(exportedData, CHUNK_SIZE);\n let dbExportFile = jsonStream.result;\n const readBlobsSynchronously = 'FileReaderSync' in self; // true in workers only.\n\n const dbExport = dbExportFile.data!;\n\n if (!options!.acceptNameDiff && db.name !== dbExport.databaseName)\n throw new Error(`Name differs. Current database name is ${db.name} but export is ${dbExport.databaseName}`);\n if (!options!.acceptVersionDiff && db.verno !== dbExport.databaseVersion) {\n // Possible feature: Call upgraders in some isolated way if this happens... ?\n throw new Error(`Database version differs. Current database is in version ${db.verno} but export is ${dbExport.databaseVersion}`);\n }\n \n const { progressCallback } = options;\n const progress: ImportProgress = {\n done: false,\n completedRows: 0,\n completedTables: 0,\n totalRows: dbExport.tables.reduce((p, c) => p + c.rowCount, 0),\n totalTables: dbExport.tables.length\n };\n if (progressCallback) {\n // Keep ongoing transaction private\n Dexie.ignoreTransaction(()=>progressCallback(progress));\n }\n\n if (options!.clearTablesBeforeImport) {\n for (const table of db.tables) {\n await table.clear();\n }\n }\n\n if (options.noTransaction) {\n await importAll();\n } else {\n await db.transaction('rw', db.tables, importAll);\n } \n\n async function importAll () {\n do {\n for (const tableExport of dbExport.data) {\n if (!tableExport.rows) break; // Need to pull more!\n if (!(tableExport.rows as any).incomplete && tableExport.rows.length === 0)\n continue;\n\n if (progressCallback) {\n // Keep ongoing transaction private\n Dexie.ignoreTransaction(()=>progressCallback(progress));\n }\n const tableName = tableExport.tableName;\n const table = db.table(tableName);\n const tableSchemaStr = dbExport.tables.filter(t => t.name === tableName)[0].schema;\n if (!table) {\n if (!options!.acceptMissingTables)\n throw new Error(`Exported table ${tableExport.tableName} is missing in installed database`);\n else\n continue;\n }\n if (!options!.acceptChangedPrimaryKey &&\n tableSchemaStr.split(',')[0] != table.schema.primKey.src) {\n throw new Error(`Primary key differs for table ${tableExport.tableName}. `);\n }\n\n const sourceRows = tableExport.rows\n \n // Our rows may be partial, so we need to ensure each one is completed before using it\n const rows: any[] = [];\n for(let i = 0; i < sourceRows.length; i++) {\n const obj = sourceRows[i];\n if (!obj.incomplete) {\n rows.push(TSON.revive(obj));\n } else {\n break;\n }\n }\n\n const filter = options!.filter;\n const filteredRows = filter ?\n tableExport.inbound ?\n rows.filter(value => filter(tableName, value)) :\n rows.filter(([key, value]) => filter(tableName, value, key)) :\n rows;\n const [keys, values] = tableExport.inbound ?\n [undefined, filteredRows] :\n [filteredRows.map(row=>row[0]), rows.map(row=>row[1])];\n\n if (options!.overwriteValues)\n await table.bulkPut(values, keys);\n else\n await table.bulkAdd(values, keys);\n \n progress.completedRows += rows.length;\n if (!(rows as any).incomplete) {\n progress.completedTables += 1;\n }\n sourceRows.splice(0, rows.length); // Free up RAM, keep existing array instance.\n }\n\n // Avoid unnescessary loops in \"for (const tableExport of dbExport.data)\" \n while (dbExport.data.length > 0 && dbExport.data[0].rows && !(dbExport.data[0].rows as any).incomplete) {\n // We've already imported all rows from the first table. Delete its occurrence\n dbExport.data.splice(0, 1); \n }\n if (!jsonStream.done() && !jsonStream.eof()) {\n // Pull some more (keeping transaction alive)\n if (readBlobsSynchronously) {\n // If we can pull from blob synchronically, we don't have to\n // keep transaction alive using Dexie.waitFor().\n // This will only be possible in workers.\n jsonStream.pullSync(CHUNK_SIZE);\n } else {\n await Dexie.waitFor(jsonStream.pullAsync(CHUNK_SIZE));\n }\n } else break;\n } while (true)\n }\n progress.done = true;\n if (progressCallback) {\n // Keep ongoing transaction private\n Dexie.ignoreTransaction(()=>progressCallback(progress));\n }\n}\n\nasync function loadUntilWeGotEnoughData(exportedData: Blob | JsonStream<DexieExportJsonStructure>, CHUNK_SIZE: number): Promise<JsonStream<DexieExportJsonStructure>> {\n const stream = ('slice' in exportedData ?\n JsonStream<DexieExportJsonStructure>(exportedData) :\n exportedData);\n\n while (!stream.eof()) {\n await stream.pullAsync(CHUNK_SIZE);\n\n if (stream.result.data && stream.result.data!.data)\n break;\n }\n const dbExportFile = stream.result;\n if (!dbExportFile || dbExportFile.formatName != \"dexie\")\n throw new Error(`Given file is not a dexie export`);\n if (dbExportFile.formatVersion! > VERSION) {\n throw new Error(`Format version ${dbExportFile.formatVersion} not supported`);\n }\n if (!dbExportFile.data!) {\n throw new Error(`No data in export file`);\n }\n if (!dbExportFile.data!.databaseName) {\n throw new Error(`Missing databaseName in export file`);\n }\n if (!dbExportFile.data!.databaseVersion) {\n throw new Error(`Missing databaseVersion in export file`);\n }\n if (!dbExportFile.data!.tables) {\n throw new Error(`Missing tables in export file`);\n }\n return stream; \n}\n","import Dexie from 'dexie';\nimport { ExportOptions, exportDB } from './export';\nimport { importDB, peakImportFile, ImportOptions, importInto, StaticImportOptions } from './import';\nimport { DexieExportJsonMeta } from './json-structure';\n\nexport { exportDB, ExportOptions};\nexport { importDB, importInto, peakImportFile, ImportOptions, DexieExportJsonMeta};\n\n//\n// Extend Dexie interface (typescript-wise)\n//\ndeclare module 'dexie' {\n // Extend methods on db\n interface Dexie {\n export(options?: ExportOptions): Promise<Blob>;\n import(blob: Blob, options?: ImportOptions): Promise<void>;\n }\n interface DexieConstructor {\n import(blob: Blob, options?: StaticImportOptions): Promise<Dexie>;\n }\n}\n\n//\n// Extend Dexie interface (runtime wise)\n//\n\nDexie.prototype.export = function (this: Dexie, options?: ExportOptions) {\n return exportDB(this, options);\n};\nDexie.prototype.import = function (this: Dexie, blob: Blob, options?: ImportOptions) {\n return importInto(this, blob, options);\n};\nDexie.import = (blob: Blob, options?: StaticImportOptions) => importDB(blob, options);\n\nexport default ()=>{\n throw new Error(\"This addon extends Dexie.prototype globally and does not have be included in Dexie constructor's addons options.\")\n};\n"],"names":["this","_typeof","obj","Symbol","iterator","constructor","prototype","_classCallCheck","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_defineProperty","value","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","push","apply","_objectSpread2","arguments","source","forEach","getOwnPropertyDescriptors","defineProperties","_slicedToArray","arr","_arrayWithHoles","Array","isArray","_iterableToArrayLimit","_arr","_n","_d","_e","undefined","_s","_i","next","done","err","_unsupportedIterableToArray","_nonIterableRest","_toConsumableArray","_arrayWithoutHoles","_arrayLikeToArray","_iterableToArray","iter","from","_nonIterableSpread","o","minLen","n","toString","call","slice","name","test","len","arr2","TypesonPromise","f","p","Promise","__typeson__type__","toStringTag","then","onFulfilled","onRejected","_this","typesonResolve","typesonReject","res","reject","resolve","v","meth","promArr","map","prom","toStr","hasOwn$1","hasOwnProperty","getProto","getPrototypeOf","fnToString","isThenable","catchCheck","isObject","val","hasConstructorOf","a","b","proto","Ctor","isPlainObject","escapeKeyPathComponent","keyPathComponent","replace","unescapeKeyPathComponent","getByKeyPath","keyPath","period","indexOf","innerObj","setAtKeyPath","_await","direct","hasOwn","internalStateObjPropsToIgnore","_async","args","e","nestedPathsFirst","keypath","as","match","bs","Typeson","options","plainObjectReplacers","nonplainObjectReplacers","revivers","types","_createClass","protoProps","staticProps","stringify","replacer","space","opts","stringification","encapsulated","encapsulate","JSON","stringifySync","throwOnBadSyncType","sync","stringifyAsync","parse","text","reviver","revive","parseSync","parseAsync","specialTypeNames","stateObj","returnTypeNames","rootTypeName","iterateNone","checkPromises","ret","promisesData","all","pd","promResults","promResult","_exit","newPromisesData","_promisesData$splice2","splice","_prData","cyclic","parentObj","detectedType","encaps","_encapsulate","isTypesonPromise","_invoke","body","result","encaps2","_result","that","refObjs","refKeys","promisesDataRoot","encapsulateObserver","finish","typeNames","values","getJSONType","Set","$types","$","_adaptBuiltinStateObjectProperties","ownKeysObj","cb","assign","vals","prop","tmp","resolvingTypesonPromise","observerData","$typeof","runObserver","type","awaitingTypesonPromise","includes","Number","isNaN","NEGATIVE_INFINITY","POSITIVE_INFINITY","replaced","iterateIn","iterateUnsetNumeric","refIndex","cyclicKeypath","clone","isPlainObj","isArr","ArrayBuffer","addLength","_loop","kp","Boolean","endIterateIn","end","endIterateOwn","vl","_loop2","endIterateUnsetNumeric","plainObject","replacers","existing","concat","replaceAsync","replacing","typeDetected","encapsulateSync","encapsulateAsync","keyPathResolutions","ignore$Types","executeReviver","Error","reviveAsync","revivalPromises","checkUndefined","retrn","Undefined","possibleTypesonPromise","revivePlainObjects","plainObjectTypes","entries","_ref3","_ref4","plain","sort","reduce","reducer","_ref7","newVal","_revive","_clone","k","set","_keyPathResolutions$","_target","_clone2","_ret","typ","r","_ref8","reviveSync","register","typeSpecSets","R","typeSpec","typSpec","typeId","JSON_TYPES","spec","testPlainObjects","existingReplacer","Class","x","create","_spec2","replacerObj","bind","start","fallback","reviverObj","isUserObject","userObject","s","arrayNonindexKeys","some","String","parseInt","sparseUndefined","undef","primitiveObjects","StringObject","BooleanObject","NumberObject","specialNumbers","nan","NaN","infinity","negativeInfinity","date","dt","time","getTime","Date","regexp","rexp","flags","global","ignoreCase","multiline","sticky","unicode","RegExp","mp","Map","st","chars","lookup","Uint8Array","charCodeAt","encode","arraybuffer","byteOffset","lngth","byteLength","bytes","base64","decode","encoded1","encoded2","encoded3","encoded4","bufferLength","_i2","buffers","index","b64","buffer","_global","self","typedArrays","typeName","arrType","TypedArray","toLowerCase","l","encoded","b64Obj","dataview","DataView","intlTypes","IntlCollator","Intl","Collator","c","resolvedOptions","locale","IntlDateTimeFormat","DateTimeFormat","dtf","IntlNumberFormat","NumberFormat","nf","string2arraybuffer","str","array","file","req","XMLHttpRequest","overrideMimeType","open","URL","createObjectURL","send","status","stringContents","responseText","lastModified","File","reader","FileReader","addEventListener","error","readAsBinaryString","bigint","BigInt","bigintObject","cryptokey","extractable","crypto","subtle","exportKey","jwk","algorithm","usages","importKey","imagedata","d","data","width","height","ImageData","Uint8ClampedArray","imagebitmap","dataset","bm","canvas","document","createElement","getContext","drawImage","toDataURL","ctx","img","src","createImageBitmap","filelist","fl","item","_files","blob","Blob","StructuredCloning","typedArray","encodeB64","decodeB64","Dexie","require$$0","clarinet"],"mappings":"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"} \ No newline at end of file
diff --git a/ext/lib/dexie.min.js b/ext/lib/dexie.min.js
new file mode 100644
index 00000000..9a028fba
--- /dev/null
+++ b/ext/lib/dexie.min.js
@@ -0,0 +1,2 @@
+(function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Dexie=t()})(this,function(){"use strict";var g=function(){return(g=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)};function i(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||((r=r||Array.prototype.slice.call(t,0,i))[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))}var h="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,x=Object.keys,b=Array.isArray;function u(t,n){return"object"!=typeof n||x(n).forEach(function(e){t[e]=n[e]}),t}"undefined"==typeof Promise||h.Promise||(h.Promise=Promise);var s=Object.getPrototypeOf,n={}.hasOwnProperty;function m(e,t){return n.call(e,t)}function r(t,n){"function"==typeof n&&(n=n(s(t))),("undefined"==typeof Reflect?x:Reflect.ownKeys)(n).forEach(function(e){c(t,e,n[e])})}var a=Object.defineProperty;function c(e,t,n,r){a(e,t,u(n&&m(n,"get")&&"function"==typeof n.get?{get:n.get,set:n.set,configurable:!0}:{value:n,configurable:!0,writable:!0},r))}function o(t){return{from:function(e){return t.prototype=Object.create(e.prototype),c(t.prototype,"constructor",t),{extend:r.bind(null,t.prototype)}}}}var l=Object.getOwnPropertyDescriptor;function f(e,t){return l(e,t)||(e=s(e))&&f(e,t)}var d=[].slice;function y(e,t,n){return d.call(e,t,n)}function p(e,t){return t(e)}function v(e){if(!e)throw new Error("Assertion Failed")}function _(e){h.setImmediate?setImmediate(e):setTimeout(e,0)}function w(e,r){return e.reduce(function(e,t,n){n=r(t,n);return n&&(e[n[0]]=n[1]),e},{})}function k(e,t){if(m(e,t))return e[t];if(!t)return e;if("string"!=typeof t){for(var n=[],r=0,i=t.length;r<i;++r){var o=k(e,t[r]);n.push(o)}return n}var a=t.indexOf(".");if(-1!==a){var u=e[t.substr(0,a)];return void 0===u?void 0:k(u,t.substr(a+1))}}function E(e,t,n){if(e&&void 0!==t&&!("isFrozen"in Object&&Object.isFrozen(e)))if("string"!=typeof t&&"length"in t){v("string"!=typeof n&&"length"in n);for(var r=0,i=t.length;r<i;++r)E(e,t[r],n[r])}else{var o,a,u=t.indexOf(".");-1!==u?(o=t.substr(0,u),""===(a=t.substr(u+1))?void 0===n?b(e)&&!isNaN(parseInt(o))?e.splice(o,1):delete e[o]:e[o]=n:E(u=!(u=e[o])||!m(e,o)?e[o]={}:u,a,n)):void 0===n?b(e)&&!isNaN(parseInt(t))?e.splice(t,1):delete e[t]:e[t]=n}}function P(e){var t,n={};for(t in e)m(e,t)&&(n[t]=e[t]);return n}var t=[].concat;function K(e){return t.apply([],e)}var e="Boolean,String,Date,RegExp,Blob,File,FileList,FileSystemFileHandle,ArrayBuffer,DataView,Uint8ClampedArray,ImageBitmap,ImageData,Map,Set,CryptoKey".split(",").concat(K([8,16,32,64].map(function(t){return["Int","Uint","Float"].map(function(e){return e+t+"Array"})}))).filter(function(e){return h[e]}),O=e.map(function(e){return h[e]});w(e,function(e){return[e,!0]});var S=null;function A(e){S="undefined"!=typeof WeakMap&&new WeakMap;e=function e(t){if(!t||"object"!=typeof t)return t;var n=S&&S.get(t);if(n)return n;if(b(t)){n=[],S&&S.set(t,n);for(var r=0,i=t.length;r<i;++r)n.push(e(t[r]))}else if(0<=O.indexOf(t.constructor))n=t;else{var o,a=s(t);for(o in n=a===Object.prototype?{}:Object.create(a),S&&S.set(t,n),t)m(t,o)&&(n[o]=e(t[o]))}return n}(e);return S=null,e}var C={}.toString;function j(e){return C.call(e).slice(8,-1)}var D="undefined"!=typeof Symbol?Symbol.iterator:"@@iterator",I="symbol"==typeof D?function(e){var t;return null!=e&&(t=e[D])&&t.apply(e)}:function(){return null},B={};function T(e){var t,n,r,i;if(1===arguments.length){if(b(e))return e.slice();if(this===B&&"string"==typeof e)return[e];if(i=I(e)){for(n=[];!(r=i.next()).done;)n.push(r.value);return n}if(null==e)return[e];if("number"!=typeof(t=e.length))return[e];for(n=new Array(t);t--;)n[t]=e[t];return n}for(t=arguments.length,n=new Array(t);t--;)n[t]=arguments[t];return n}var R="undefined"!=typeof Symbol?function(e){return"AsyncFunction"===e[Symbol.toStringTag]}:function(){return!1},F="undefined"!=typeof location&&/^(http|https):\/\/(localhost|127\.0\.0\.1)/.test(location.href);function M(e,t){F=e,N=t}var N=function(){return!0},q=!new Error("").stack;function U(){if(q)try{throw new Error}catch(e){return e}return new Error}function L(e,t){var n=e.stack;return n?(t=t||0,0===n.indexOf(e.name)&&(t+=(e.name+e.message).split("\n").length),n.split("\n").slice(t).filter(N).map(function(e){return"\n"+e}).join("")):""}var V=["Unknown","Constraint","Data","TransactionInactive","ReadOnly","Version","NotFound","InvalidState","InvalidAccess","Abort","Timeout","QuotaExceeded","Syntax","DataClone"],e=["Modify","Bulk","OpenFailed","VersionChange","Schema","Upgrade","InvalidTable","MissingAPI","NoSuchDatabase","InvalidArgument","SubTransaction","Unsupported","Internal","DatabaseClosed","PrematureCommit","ForeignAwait"].concat(V),W={VersionChanged:"Database version changed by other database connection",DatabaseClosed:"Database has been closed",Abort:"Transaction aborted",TransactionInactive:"Transaction has already completed or failed",MissingAPI:"IndexedDB API missing. Please visit https://tinyurl.com/y2uuvskb"};function z(e,t){this._e=U(),this.name=e,this.message=t}function Y(e,t){return e+". Errors: "+Object.keys(t).map(function(e){return t[e].toString()}).filter(function(e,t,n){return n.indexOf(e)===t}).join("\n")}function G(e,t,n,r){this._e=U(),this.failures=t,this.failedKeys=r,this.successCount=n,this.message=Y(e,t)}function H(e,t){this._e=U(),this.name="BulkError",this.failures=Object.keys(t).map(function(e){return t[e]}),this.failuresByPos=t,this.message=Y(e,t)}o(z).from(Error).extend({stack:{get:function(){return this._stack||(this._stack=this.name+": "+this.message+L(this._e,2))}},toString:function(){return this.name+": "+this.message}}),o(G).from(z),o(H).from(z);var Q=e.reduce(function(e,t){return e[t]=t+"Error",e},{}),X=z,J=e.reduce(function(e,n){var r=n+"Error";function t(e,t){this._e=U(),this.name=r,e?"string"==typeof e?(this.message=e+(t?"\n "+t:""),this.inner=t||null):"object"==typeof e&&(this.message=e.name+" "+e.message,this.inner=e):(this.message=W[n]||r,this.inner=null)}return o(t).from(X),e[n]=t,e},{});J.Syntax=SyntaxError,J.Type=TypeError,J.Range=RangeError;var $=V.reduce(function(e,t){return e[t+"Error"]=J[t],e},{});V=e.reduce(function(e,t){return-1===["Syntax","Type","Range"].indexOf(t)&&(e[t+"Error"]=J[t]),e},{});function Z(){}function ee(e){return e}function te(t,n){return null==t||t===ee?n:function(e){return n(t(e))}}function ne(e,t){return function(){e.apply(this,arguments),t.apply(this,arguments)}}function re(i,o){return i===Z?o:function(){var e=i.apply(this,arguments);void 0!==e&&(arguments[0]=e);var t=this.onsuccess,n=this.onerror;this.onsuccess=null,this.onerror=null;var r=o.apply(this,arguments);return t&&(this.onsuccess=this.onsuccess?ne(t,this.onsuccess):t),n&&(this.onerror=this.onerror?ne(n,this.onerror):n),void 0!==r?r:e}}function ie(n,r){return n===Z?r:function(){n.apply(this,arguments);var e=this.onsuccess,t=this.onerror;this.onsuccess=this.onerror=null,r.apply(this,arguments),e&&(this.onsuccess=this.onsuccess?ne(e,this.onsuccess):e),t&&(this.onerror=this.onerror?ne(t,this.onerror):t)}}function oe(i,o){return i===Z?o:function(e){var t=i.apply(this,arguments);u(e,t);var n=this.onsuccess,r=this.onerror;this.onsuccess=null,this.onerror=null;e=o.apply(this,arguments);return n&&(this.onsuccess=this.onsuccess?ne(n,this.onsuccess):n),r&&(this.onerror=this.onerror?ne(r,this.onerror):r),void 0===t?void 0===e?void 0:e:u(t,e)}}function ae(e,t){return e===Z?t:function(){return!1!==t.apply(this,arguments)&&e.apply(this,arguments)}}function ue(i,o){return i===Z?o:function(){var e=i.apply(this,arguments);if(e&&"function"==typeof e.then){for(var t=this,n=arguments.length,r=new Array(n);n--;)r[n]=arguments[n];return e.then(function(){return o.apply(t,r)})}return o.apply(this,arguments)}}V.ModifyError=G,V.DexieError=z,V.BulkError=H;var se={},ce=100,le=100,e="undefined"==typeof Promise?[]:function(){var e=Promise.resolve();if("undefined"==typeof crypto||!crypto.subtle)return[e,s(e),e];var t=crypto.subtle.digest("SHA-512",new Uint8Array([0]));return[t,s(t),e]}(),fe=e[0],he=e[1],de=e[2],pe=he&&he.then,ye=fe&&fe.constructor,ve=!!de,me=!1,ge=de?function(){de.then(Ne)}:h.setImmediate?setImmediate.bind(null,Ne):h.MutationObserver?function(){var e=document.createElement("div");new MutationObserver(function(){Ne(),e=null}).observe(e,{attributes:!0}),e.setAttribute("i","1")}:function(){setTimeout(Ne,0)},be=function(e,t){Se.push([e,t]),we&&(ge(),we=!1)},_e=!0,we=!0,xe=[],ke=[],Ee=null,Pe=ee,Ke={id:"global",global:!0,ref:0,unhandleds:[],onunhandled:ct,pgp:!1,env:{},finalize:function(){this.unhandleds.forEach(function(e){try{ct(e[0],e[1])}catch(e){}})}},Oe=Ke,Se=[],Ae=0,Ce=[];function je(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");this._listeners=[],this.onuncatched=Z,this._lib=!1;var t=this._PSD=Oe;if(F&&(this._stackHolder=U(),this._prev=null,this._numPrev=0),"function"!=typeof e){if(e!==se)throw new TypeError("Not a function");return this._state=arguments[1],this._value=arguments[2],void(!1===this._state&&Be(this,this._value))}this._state=null,this._value=null,++t.ref,function t(r,e){try{e(function(n){if(null===r._state){if(n===r)throw new TypeError("A promise cannot be resolved with itself.");var e=r._lib&&qe();n&&"function"==typeof n.then?t(r,function(e,t){n instanceof je?n._then(e,t):n.then(e,t)}):(r._state=!0,r._value=n,Te(r)),e&&Ue()}},Be.bind(null,r))}catch(e){Be(r,e)}}(this,e)}var De={get:function(){var u=Oe,t=Qe;function e(n,r){var i=this,o=!u.global&&(u!==Oe||t!==Qe),a=o&&!Ze(),e=new je(function(e,t){Re(i,new Ie(at(n,u,o,a),at(r,u,o,a),e,t,u))});return F&&Me(e,this),e}return e.prototype=se,e},set:function(e){c(this,"then",e&&e.prototype===se?De:{get:function(){return e},set:De.set})}};function Ie(e,t,n,r,i){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.resolve=n,this.reject=r,this.psd=i}function Be(t,n){var e,r;ke.push(n),null===t._state&&(e=t._lib&&qe(),n=Pe(n),t._state=!1,t._value=n,F&&null!==n&&"object"==typeof n&&!n._promise&&function(e,t,n){try{e.apply(null,n)}catch(e){t&&t(e)}}(function(){var e=f(n,"stack");n._promise=t,c(n,"stack",{get:function(){return me?e&&(e.get?e.get.apply(n):e.value):t.stack}})}),r=t,xe.some(function(e){return e._value===r._value})||xe.push(r),Te(t),e&&Ue())}function Te(e){var t=e._listeners;e._listeners=[];for(var n=0,r=t.length;n<r;++n)Re(e,t[n]);var i=e._PSD;--i.ref||i.finalize(),0===Ae&&(++Ae,be(function(){0==--Ae&&Le()},[]))}function Re(e,t){if(null!==e._state){var n=e._state?t.onFulfilled:t.onRejected;if(null===n)return(e._state?t.resolve:t.reject)(e._value);++t.psd.ref,++Ae,be(Fe,[n,e,t])}else e._listeners.push(t)}function Fe(e,t,n){try{var r,i=(Ee=t)._value;t._state?r=e(i):(ke.length&&(ke=[]),r=e(i),-1===ke.indexOf(i)&&function(e){var t=xe.length;for(;t;)if(xe[--t]._value===e._value)return xe.splice(t,1)}(t)),n.resolve(r)}catch(e){n.reject(e)}finally{Ee=null,0==--Ae&&Le(),--n.psd.ref||n.psd.finalize()}}function Me(e,t){var n=t?t._numPrev+1:0;n<ce&&(e._prev=t,e._numPrev=n)}function Ne(){qe()&&Ue()}function qe(){var e=_e;return we=_e=!1,e}function Ue(){var e,t,n;do{for(;0<Se.length;)for(e=Se,Se=[],n=e.length,t=0;t<n;++t){var r=e[t];r[0].apply(null,r[1])}}while(0<Se.length);we=_e=!0}function Le(){var e=xe;xe=[],e.forEach(function(e){e._PSD.onunhandled.call(null,e._value,e)});for(var t=Ce.slice(0),n=t.length;n;)t[--n]()}function Ve(e){return new je(se,!1,e)}function We(n,r){var i=Oe;return function(){var e=qe(),t=Oe;try{return nt(i,!0),n.apply(this,arguments)}catch(e){r&&r(e)}finally{nt(t,!1),e&&Ue()}}}r(je.prototype,{then:De,_then:function(e,t){Re(this,new Ie(null,null,e,t,Oe))},catch:function(e){if(1===arguments.length)return this.then(null,e);var t=e,n=arguments[1];return"function"==typeof t?this.then(null,function(e){return(e instanceof t?n:Ve)(e)}):this.then(null,function(e){return(e&&e.name===t?n:Ve)(e)})},finally:function(t){return this.then(function(e){return t(),e},function(e){return t(),Ve(e)})},stack:{get:function(){if(this._stack)return this._stack;try{me=!0;var e=function e(t,n,r){if(n.length===r)return n;var i="";{var o,a,u;!1===t._state&&(null!=(o=t._value)?(a=o.name||"Error",u=o.message||o,i=L(o,0)):(a=o,u=""),n.push(a+(u?": "+u:"")+i))}F&&((i=L(t._stackHolder,2))&&-1===n.indexOf(i)&&n.push(i),t._prev&&e(t._prev,n,r));return n}(this,[],20).join("\nFrom previous: ");return null!==this._state&&(this._stack=e),e}finally{me=!1}}},timeout:function(r,i){var o=this;return r<1/0?new je(function(e,t){var n=setTimeout(function(){return t(new J.Timeout(i))},r);o.then(e,t).finally(clearTimeout.bind(null,n))}):this}}),"undefined"!=typeof Symbol&&Symbol.toStringTag&&c(je.prototype,Symbol.toStringTag,"Dexie.Promise"),Ke.env=rt(),r(je,{all:function(){var o=T.apply(null,arguments).map(et);return new je(function(n,r){0===o.length&&n([]);var i=o.length;o.forEach(function(e,t){return je.resolve(e).then(function(e){o[t]=e,--i||n(o)},r)})})},resolve:function(n){if(n instanceof je)return n;if(n&&"function"==typeof n.then)return new je(function(e,t){n.then(e,t)});var e=new je(se,!0,n);return Me(e,Ee),e},reject:Ve,race:function(){var e=T.apply(null,arguments).map(et);return new je(function(t,n){e.map(function(e){return je.resolve(e).then(t,n)})})},PSD:{get:function(){return Oe},set:function(e){return Oe=e}},totalEchoes:{get:function(){return Qe}},newPSD:Je,usePSD:it,scheduler:{get:function(){return be},set:function(e){be=e}},rejectionMapper:{get:function(){return Pe},set:function(e){Pe=e}},follow:function(i,n){return new je(function(e,t){return Je(function(n,r){var e=Oe;e.unhandleds=[],e.onunhandled=r,e.finalize=ne(function(){var t,e=this;t=function(){0===e.unhandleds.length?n():r(e.unhandleds[0])},Ce.push(function e(){t(),Ce.splice(Ce.indexOf(e),1)}),++Ae,be(function(){0==--Ae&&Le()},[])},e.finalize),i()},n,e,t)})}}),ye&&(ye.allSettled&&c(je,"allSettled",function(){var e=T.apply(null,arguments).map(et);return new je(function(n){0===e.length&&n([]);var r=e.length,i=new Array(r);e.forEach(function(e,t){return je.resolve(e).then(function(e){return i[t]={status:"fulfilled",value:e}},function(e){return i[t]={status:"rejected",reason:e}}).then(function(){return--r||n(i)})})})}),ye.any&&"undefined"!=typeof AggregateError&&c(je,"any",function(){var e=T.apply(null,arguments).map(et);return new je(function(n,r){0===e.length&&r(new AggregateError([]));var i=e.length,o=new Array(i);e.forEach(function(e,t){return je.resolve(e).then(function(e){return n(e)},function(e){o[t]=e,--i||r(new AggregateError(o))})})})}));var ze={awaits:0,echoes:0,id:0},Ye=0,Ge=[],He=0,Qe=0,Xe=0;function Je(e,t,n,r){var i=Oe,o=Object.create(i);o.parent=i,o.ref=0,o.global=!1,o.id=++Xe;var a=Ke.env;o.env=ve?{Promise:je,PromiseProp:{value:je,configurable:!0,writable:!0},all:je.all,race:je.race,allSettled:je.allSettled,any:je.any,resolve:je.resolve,reject:je.reject,nthen:ut(a.nthen,o),gthen:ut(a.gthen,o)}:{},t&&u(o,t),++i.ref,o.finalize=function(){--this.parent.ref||this.parent.finalize()};r=it(o,e,n,r);return 0===o.ref&&o.finalize(),r}function $e(){return ze.id||(ze.id=++Ye),++ze.awaits,ze.echoes+=le,ze.id}function Ze(){return!!ze.awaits&&(0==--ze.awaits&&(ze.id=0),ze.echoes=ze.awaits*le,!0)}function et(e){return ze.echoes&&e&&e.constructor===ye?($e(),e.then(function(e){return Ze(),e},function(e){return Ze(),lt(e)})):e}function tt(){var e=Ge[Ge.length-1];Ge.pop(),nt(e,!1)}function nt(e,t){var n,r=Oe;(t?!ze.echoes||He++&&e===Oe:!He||--He&&e===Oe)||ot(t?function(e){++Qe,ze.echoes&&0!=--ze.echoes||(ze.echoes=ze.id=0),Ge.push(Oe),nt(e,!0)}.bind(null,e):tt),e!==Oe&&(Oe=e,r===Ke&&(Ke.env=rt()),ve&&(n=Ke.env.Promise,t=e.env,he.then=t.nthen,n.prototype.then=t.gthen,(r.global||e.global)&&(Object.defineProperty(h,"Promise",t.PromiseProp),n.all=t.all,n.race=t.race,n.resolve=t.resolve,n.reject=t.reject,t.allSettled&&(n.allSettled=t.allSettled),t.any&&(n.any=t.any))))}function rt(){var e=h.Promise;return ve?{Promise:e,PromiseProp:Object.getOwnPropertyDescriptor(h,"Promise"),all:e.all,race:e.race,allSettled:e.allSettled,any:e.any,resolve:e.resolve,reject:e.reject,nthen:he.then,gthen:e.prototype.then}:{}}function it(e,t,n,r,i){var o=Oe;try{return nt(e,!0),t(n,r,i)}finally{nt(o,!1)}}function ot(e){pe.call(fe,e)}function at(t,n,r,i){return"function"!=typeof t?t:function(){var e=Oe;r&&$e(),nt(n,!0);try{return t.apply(this,arguments)}finally{nt(e,!1),i&&ot(Ze)}}}function ut(n,r){return function(e,t){return n.call(this,at(e,r),at(t,r))}}-1===(""+pe).indexOf("[native code]")&&($e=Ze=Z);var st="unhandledrejection";function ct(e,t){var n;try{n=t.onuncatched(e)}catch(e){}if(!1!==n)try{var r,i={promise:t,reason:e};if(h.document&&document.createEvent?((r=document.createEvent("Event")).initEvent(st,!0,!0),u(r,i)):h.CustomEvent&&u(r=new CustomEvent(st,{detail:i}),i),r&&h.dispatchEvent&&(dispatchEvent(r),!h.PromiseRejectionEvent&&h.onunhandledrejection))try{h.onunhandledrejection(r)}catch(e){}F&&r&&!r.defaultPrevented&&console.warn("Unhandled rejection: "+(e.stack||e))}catch(e){}}var lt=je.reject;function ft(e){return!/(dexie\.js|dexie\.min\.js)/.test(e)}var ht=String.fromCharCode(65535),dt="Invalid key provided. Keys must be of type string, number, Date or Array<string | number | Date>.",pt="String expected.",yt=[],vt="undefined"!=typeof navigator&&/(MSIE|Trident|Edge)/.test(navigator.userAgent),mt=vt,gt=vt,bt="__dbnames",_t="readonly",wt="readwrite";function xt(e,t){return e?t?function(){return e.apply(this,arguments)&&t.apply(this,arguments)}:e:t}var kt={type:3,lower:-1/0,lowerOpen:!1,upper:[[]],upperOpen:!1};function Et(t){return"string"!=typeof t||/\./.test(t)?function(e){return e}:function(e){return void 0===e[t]&&t in e&&delete(e=A(e))[t],e}}var Pt=(Kt.prototype._trans=function(e,r,t){var n=this._tx||Oe.trans,i=this.name;function o(e,t,n){if(!n.schema[i])throw new J.NotFound("Table "+i+" not part of transaction");return r(n.idbtrans,n)}var a=qe();try{return n&&n.db===this.db?n===Oe.trans?n._promise(e,o,t):Je(function(){return n._promise(e,o,t)},{trans:n,transless:Oe.transless||Oe}):function t(n,r,i,o){if(n.idbdb&&(n._state.openComplete||Oe.letThrough||n._vip)){var a=n._createTransaction(r,i,n._dbSchema);try{a.create(),n._state.PR1398_maxLoop=3}catch(e){return e.name===Q.InvalidState&&n.isOpen()&&0<--n._state.PR1398_maxLoop?(console.warn("Dexie: Need to reopen db"),n._close(),n.open().then(function(){return t(n,r,i,o)})):lt(e)}return a._promise(r,function(e,t){return Je(function(){return Oe.trans=a,o(e,t,a)})}).then(function(e){return a._completion.then(function(){return e})})}if(n._state.openComplete)return lt(new J.DatabaseClosed(n._state.dbOpenError));if(!n._state.isBeingOpened){if(!n._options.autoOpen)return lt(new J.DatabaseClosed);n.open().catch(Z)}return n._state.dbReadyPromise.then(function(){return t(n,r,i,o)})}(this.db,e,[this.name],o)}finally{a&&Ue()}},Kt.prototype.get=function(t,e){var n=this;return t&&t.constructor===Object?this.where(t).first(e):this._trans("readonly",function(e){return n.core.get({trans:e,key:t}).then(function(e){return n.hook.reading.fire(e)})}).then(e)},Kt.prototype.where=function(o){if("string"==typeof o)return new this.db.WhereClause(this,o);if(b(o))return new this.db.WhereClause(this,"["+o.join("+")+"]");var n=x(o);if(1===n.length)return this.where(n[0]).equals(o[n[0]]);var e=this.schema.indexes.concat(this.schema.primKey).filter(function(t){return t.compound&&n.every(function(e){return 0<=t.keyPath.indexOf(e)})&&t.keyPath.every(function(e){return 0<=n.indexOf(e)})})[0];if(e&&this.db._maxKey!==ht)return this.where(e.name).equals(e.keyPath.map(function(e){return o[e]}));!e&&F&&console.warn("The query "+JSON.stringify(o)+" on "+this.name+" would benefit of a compound index ["+n.join("+")+"]");var a=this.schema.idxByName,r=this.db._deps.indexedDB;function u(e,t){try{return 0===r.cmp(e,t)}catch(e){return!1}}var t=n.reduce(function(e,t){var n=e[0],r=e[1],e=a[t],i=o[t];return[n||e,n||!e?xt(r,e&&e.multi?function(e){e=k(e,t);return b(e)&&e.some(function(e){return u(i,e)})}:function(e){return u(i,k(e,t))}):r]},[null,null]),i=t[0],t=t[1];return i?this.where(i.name).equals(o[i.keyPath]).filter(t):e?this.filter(t):this.where(n).equals("")},Kt.prototype.filter=function(e){return this.toCollection().and(e)},Kt.prototype.count=function(e){return this.toCollection().count(e)},Kt.prototype.offset=function(e){return this.toCollection().offset(e)},Kt.prototype.limit=function(e){return this.toCollection().limit(e)},Kt.prototype.each=function(e){return this.toCollection().each(e)},Kt.prototype.toArray=function(e){return this.toCollection().toArray(e)},Kt.prototype.toCollection=function(){return new this.db.Collection(new this.db.WhereClause(this))},Kt.prototype.orderBy=function(e){return new this.db.Collection(new this.db.WhereClause(this,b(e)?"["+e.join("+")+"]":e))},Kt.prototype.reverse=function(){return this.toCollection().reverse()},Kt.prototype.mapToClass=function(r){this.schema.mappedClass=r;function e(e){if(!e)return e;var t,n=Object.create(r.prototype);for(t in e)if(m(e,t))try{n[t]=e[t]}catch(e){}return n}return this.schema.readHook&&this.hook.reading.unsubscribe(this.schema.readHook),this.schema.readHook=e,this.hook("reading",e),r},Kt.prototype.defineClass=function(){return this.mapToClass(function(e){u(this,e)})},Kt.prototype.add=function(t,n){var r=this,e=this.schema.primKey,i=e.auto,o=e.keyPath,a=t;return o&&i&&(a=Et(o)(t)),this._trans("readwrite",function(e){return r.core.mutate({trans:e,type:"add",keys:null!=n?[n]:null,values:[a]})}).then(function(e){return e.numFailures?je.reject(e.failures[0]):e.lastResult}).then(function(e){if(o)try{E(t,o,e)}catch(e){}return e})},Kt.prototype.update=function(t,n){if("object"!=typeof t||b(t))return this.where(":id").equals(t).modify(n);var e=k(t,this.schema.primKey.keyPath);if(void 0===e)return lt(new J.InvalidArgument("Given object does not contain its primary key"));try{"function"!=typeof n?x(n).forEach(function(e){E(t,e,n[e])}):n(t,{value:t,primKey:e})}catch(e){}return this.where(":id").equals(e).modify(n)},Kt.prototype.put=function(t,n){var r=this,e=this.schema.primKey,i=e.auto,o=e.keyPath,a=t;return o&&i&&(a=Et(o)(t)),this._trans("readwrite",function(e){return r.core.mutate({trans:e,type:"put",values:[a],keys:null!=n?[n]:null})}).then(function(e){return e.numFailures?je.reject(e.failures[0]):e.lastResult}).then(function(e){if(o)try{E(t,o,e)}catch(e){}return e})},Kt.prototype.delete=function(t){var n=this;return this._trans("readwrite",function(e){return n.core.mutate({trans:e,type:"delete",keys:[t]})}).then(function(e){return e.numFailures?je.reject(e.failures[0]):void 0})},Kt.prototype.clear=function(){var t=this;return this._trans("readwrite",function(e){return t.core.mutate({trans:e,type:"deleteRange",range:kt})}).then(function(e){return e.numFailures?je.reject(e.failures[0]):void 0})},Kt.prototype.bulkGet=function(t){var n=this;return this._trans("readonly",function(e){return n.core.getMany({keys:t,trans:e}).then(function(e){return e.map(function(e){return n.hook.reading.fire(e)})})})},Kt.prototype.bulkAdd=function(r,e,t){var o=this,a=Array.isArray(e)?e:void 0,u=(t=t||(a?void 0:e))?t.allKeys:void 0;return this._trans("readwrite",function(e){var t=o.schema.primKey,n=t.auto,t=t.keyPath;if(t&&a)throw new J.InvalidArgument("bulkAdd(): keys argument invalid on tables with inbound keys");if(a&&a.length!==r.length)throw new J.InvalidArgument("Arguments objects and keys must have the same length");var i=r.length,t=t&&n?r.map(Et(t)):r;return o.core.mutate({trans:e,type:"add",keys:a,values:t,wantResults:u}).then(function(e){var t=e.numFailures,n=e.results,r=e.lastResult,e=e.failures;if(0===t)return u?n:r;throw new H(o.name+".bulkAdd(): "+t+" of "+i+" operations failed",e)})})},Kt.prototype.bulkPut=function(r,e,t){var o=this,a=Array.isArray(e)?e:void 0,u=(t=t||(a?void 0:e))?t.allKeys:void 0;return this._trans("readwrite",function(e){var t=o.schema.primKey,n=t.auto,t=t.keyPath;if(t&&a)throw new J.InvalidArgument("bulkPut(): keys argument invalid on tables with inbound keys");if(a&&a.length!==r.length)throw new J.InvalidArgument("Arguments objects and keys must have the same length");var i=r.length,t=t&&n?r.map(Et(t)):r;return o.core.mutate({trans:e,type:"put",keys:a,values:t,wantResults:u}).then(function(e){var t=e.numFailures,n=e.results,r=e.lastResult,e=e.failures;if(0===t)return u?n:r;throw new H(o.name+".bulkPut(): "+t+" of "+i+" operations failed",e)})})},Kt.prototype.bulkDelete=function(t){var r=this,i=t.length;return this._trans("readwrite",function(e){return r.core.mutate({trans:e,type:"delete",keys:t})}).then(function(e){var t=e.numFailures,n=e.lastResult,e=e.failures;if(0===t)return n;throw new H(r.name+".bulkDelete(): "+t+" of "+i+" operations failed",e)})},Kt);function Kt(){}function Ot(i){function t(e,t){if(t){for(var n=arguments.length,r=new Array(n-1);--n;)r[n-1]=arguments[n];return a[e].subscribe.apply(null,r),i}if("string"==typeof e)return a[e]}var a={};t.addEventType=u;for(var e=1,n=arguments.length;e<n;++e)u(arguments[e]);return t;function u(e,n,r){if("object"!=typeof e){var i;n=n||ae;var o={subscribers:[],fire:r=r||Z,subscribe:function(e){-1===o.subscribers.indexOf(e)&&(o.subscribers.push(e),o.fire=n(o.fire,e))},unsubscribe:function(t){o.subscribers=o.subscribers.filter(function(e){return e!==t}),o.fire=o.subscribers.reduce(n,r)}};return a[e]=t[e]=o}x(i=e).forEach(function(e){var t=i[e];if(b(t))u(e,i[e][0],i[e][1]);else{if("asap"!==t)throw new J.InvalidArgument("Invalid event config");var n=u(e,ee,function(){for(var e=arguments.length,t=new Array(e);e--;)t[e]=arguments[e];n.subscribers.forEach(function(e){_(function(){e.apply(null,t)})})})}})}}function St(e,t){return o(t).from({prototype:e}),t}function At(e,t){return!(e.filter||e.algorithm||e.or)&&(t?e.justLimit:!e.replayFilter)}function Ct(e,t){e.filter=xt(e.filter,t)}function jt(e,t,n){var r=e.replayFilter;e.replayFilter=r?function(){return xt(r(),t())}:t,e.justLimit=n&&!r}function Dt(e,t){if(e.isPrimKey)return t.primaryKey;var n=t.getIndexByKeyPath(e.index);if(!n)throw new J.Schema("KeyPath "+e.index+" on object store "+t.name+" is not indexed");return n}function It(e,t,n){var r=Dt(e,t.schema);return t.openCursor({trans:n,values:!e.keysOnly,reverse:"prev"===e.dir,unique:!!e.unique,query:{index:r,range:e.range}})}function Bt(e,o,t,n){var a=e.replayFilter?xt(e.filter,e.replayFilter()):e.filter;if(e.or){var u={},r=function(e,t,n){var r,i;a&&!a(t,n,function(e){return t.stop(e)},function(e){return t.fail(e)})||("[object ArrayBuffer]"===(i=""+(r=t.primaryKey))&&(i=""+new Uint8Array(r)),m(u,i)||(u[i]=!0,o(e,t,n)))};return Promise.all([e.or._iterate(r,t),Tt(It(e,n,t),e.algorithm,r,!e.keysOnly&&e.valueMapper)])}return Tt(It(e,n,t),xt(e.algorithm,a),o,!e.keysOnly&&e.valueMapper)}function Tt(e,r,i,o){var a=We(o?function(e,t,n){return i(o(e),t,n)}:i);return e.then(function(n){if(n)return n.start(function(){var t=function(){return n.continue()};r&&!r(n,function(e){return t=e},function(e){n.stop(e),t=Z},function(e){n.fail(e),t=Z})||a(n.value,n,function(e){return t=e}),t()})})}function Rt(e,t){try{var n=Ft(e),r=Ft(t);if(n!==r)return"Array"===n?1:"Array"===r?-1:"binary"===n?1:"binary"===r?-1:"string"===n?1:"string"===r?-1:"Date"===n?1:"Date"!==r?NaN:-1;switch(n){case"number":case"Date":case"string":return t<e?1:e<t?-1:0;case"binary":return function(e,t){for(var n=e.length,r=t.length,i=n<r?n:r,o=0;o<i;++o)if(e[o]!==t[o])return e[o]<t[o]?-1:1;return n===r?0:n<r?-1:1}(Mt(e),Mt(t));case"Array":return function(e,t){for(var n=e.length,r=t.length,i=n<r?n:r,o=0;o<i;++o){var a=Rt(e[o],t[o]);if(0!==a)return a}return n===r?0:n<r?-1:1}(e,t)}}catch(e){}return NaN}function Ft(e){var t=typeof e;if("object"!=t)return t;if(ArrayBuffer.isView(e))return"binary";e=j(e);return"ArrayBuffer"===e?"binary":e}function Mt(e){return e instanceof Uint8Array?e:ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e)}var Nt=(qt.prototype._read=function(e,t){var n=this._ctx;return n.error?n.table._trans(null,lt.bind(null,n.error)):n.table._trans("readonly",e).then(t)},qt.prototype._write=function(e){var t=this._ctx;return t.error?t.table._trans(null,lt.bind(null,t.error)):t.table._trans("readwrite",e,"locked")},qt.prototype._addAlgorithm=function(e){var t=this._ctx;t.algorithm=xt(t.algorithm,e)},qt.prototype._iterate=function(e,t){return Bt(this._ctx,e,t,this._ctx.table.core)},qt.prototype.clone=function(e){var t=Object.create(this.constructor.prototype),n=Object.create(this._ctx);return e&&u(n,e),t._ctx=n,t},qt.prototype.raw=function(){return this._ctx.valueMapper=null,this},qt.prototype.each=function(t){var n=this._ctx;return this._read(function(e){return Bt(n,t,e,n.table.core)})},qt.prototype.count=function(e){var i=this;return this._read(function(e){var t=i._ctx,n=t.table.core;if(At(t,!0))return n.count({trans:e,query:{index:Dt(t,n.schema),range:t.range}}).then(function(e){return Math.min(e,t.limit)});var r=0;return Bt(t,function(){return++r,!1},e,n).then(function(){return r})}).then(e)},qt.prototype.sortBy=function(e,t){var n=e.split(".").reverse(),r=n[0],i=n.length-1;function o(e,t){return t?o(e[n[t]],t-1):e[r]}var a="next"===this._ctx.dir?1:-1;function u(e,t){e=o(e,i),t=o(t,i);return e<t?-a:t<e?a:0}return this.toArray(function(e){return e.sort(u)}).then(t)},qt.prototype.toArray=function(e){var o=this;return this._read(function(e){var t=o._ctx;if("next"===t.dir&&At(t,!0)&&0<t.limit){var n=t.valueMapper,r=Dt(t,t.table.core.schema);return t.table.core.query({trans:e,limit:t.limit,values:!0,query:{index:r,range:t.range}}).then(function(e){e=e.result;return n?e.map(n):e})}var i=[];return Bt(t,function(e){return i.push(e)},e,t.table.core).then(function(){return i})},e)},qt.prototype.offset=function(t){var e=this._ctx;return t<=0||(e.offset+=t,At(e)?jt(e,function(){var n=t;return function(e,t){return 0===n||(1===n?--n:t(function(){e.advance(n),n=0}),!1)}}):jt(e,function(){var e=t;return function(){return--e<0}})),this},qt.prototype.limit=function(e){return this._ctx.limit=Math.min(this._ctx.limit,e),jt(this._ctx,function(){var r=e;return function(e,t,n){return--r<=0&&t(n),0<=r}},!0),this},qt.prototype.until=function(r,i){return Ct(this._ctx,function(e,t,n){return!r(e.value)||(t(n),i)}),this},qt.prototype.first=function(e){return this.limit(1).toArray(function(e){return e[0]}).then(e)},qt.prototype.last=function(e){return this.reverse().first(e)},qt.prototype.filter=function(t){var e;return Ct(this._ctx,function(e){return t(e.value)}),(e=this._ctx).isMatch=xt(e.isMatch,t),this},qt.prototype.and=function(e){return this.filter(e)},qt.prototype.or=function(e){return new this.db.WhereClause(this._ctx.table,e,this)},qt.prototype.reverse=function(){return this._ctx.dir="prev"===this._ctx.dir?"next":"prev",this._ondirectionchange&&this._ondirectionchange(this._ctx.dir),this},qt.prototype.desc=function(){return this.reverse()},qt.prototype.eachKey=function(n){var e=this._ctx;return e.keysOnly=!e.isMatch,this.each(function(e,t){n(t.key,t)})},qt.prototype.eachUniqueKey=function(e){return this._ctx.unique="unique",this.eachKey(e)},qt.prototype.eachPrimaryKey=function(n){var e=this._ctx;return e.keysOnly=!e.isMatch,this.each(function(e,t){n(t.primaryKey,t)})},qt.prototype.keys=function(e){var t=this._ctx;t.keysOnly=!t.isMatch;var n=[];return this.each(function(e,t){n.push(t.key)}).then(function(){return n}).then(e)},qt.prototype.primaryKeys=function(e){var n=this._ctx;if("next"===n.dir&&At(n,!0)&&0<n.limit)return this._read(function(e){var t=Dt(n,n.table.core.schema);return n.table.core.query({trans:e,values:!1,limit:n.limit,query:{index:t,range:n.range}})}).then(function(e){return e.result}).then(e);n.keysOnly=!n.isMatch;var r=[];return this.each(function(e,t){r.push(t.primaryKey)}).then(function(){return r}).then(e)},qt.prototype.uniqueKeys=function(e){return this._ctx.unique="unique",this.keys(e)},qt.prototype.firstKey=function(e){return this.limit(1).keys(function(e){return e[0]}).then(e)},qt.prototype.lastKey=function(e){return this.reverse().firstKey(e)},qt.prototype.distinct=function(){var e=this._ctx,e=e.index&&e.table.schema.idxByName[e.index];if(!e||!e.multi)return this;var n={};return Ct(this._ctx,function(e){var t=e.primaryKey.toString(),e=m(n,t);return n[t]=!0,!e}),this},qt.prototype.modify=function(_){var n=this,w=this._ctx;return this._write(function(d){var o,a,p;p="function"==typeof _?_:(o=x(_),a=o.length,function(e){for(var t=!1,n=0;n<a;++n){var r=o[n],i=_[r];k(e,r)!==i&&(E(e,r,i),t=!0)}return t});function y(e,t){var n=t.failures,t=t.numFailures;s+=e-t;for(var r=0,i=x(n);r<i.length;r++){var o=i[r];u.push(n[o])}}var v=w.table.core,e=v.schema.primaryKey,m=e.outbound,g=e.extractKey,b=n.db._options.modifyChunkSize||200,u=[],s=0,t=[];return n.clone().primaryKeys().then(function(f){function h(c){var l=Math.min(b,f.length-c);return v.getMany({trans:d,keys:f.slice(c,c+l),cache:"immutable"}).then(function(e){for(var n=[],t=[],r=m?[]:null,i=[],o=0;o<l;++o){var a=e[o],u={value:A(a),primKey:f[c+o]};!1!==p.call(u,u.value,u)&&(null==u.value?i.push(f[c+o]):m||0===Rt(g(a),g(u.value))?(t.push(u.value),m&&r.push(f[c+o])):(i.push(f[c+o]),n.push(u.value)))}var s=At(w)&&w.limit===1/0&&("function"!=typeof _||_===Ut)&&{index:w.index,range:w.range};return Promise.resolve(0<n.length&&v.mutate({trans:d,type:"add",values:n}).then(function(e){for(var t in e.failures)i.splice(parseInt(t),1);y(n.length,e)})).then(function(){return(0<t.length||s&&"object"==typeof _)&&v.mutate({trans:d,type:"put",keys:r,values:t,criteria:s,changeSpec:"function"!=typeof _&&_}).then(function(e){return y(t.length,e)})}).then(function(){return(0<i.length||s&&_===Ut)&&v.mutate({trans:d,type:"delete",keys:i,criteria:s}).then(function(e){return y(i.length,e)})}).then(function(){return f.length>c+l&&h(c+b)})})}return h(0).then(function(){if(0<u.length)throw new G("Error modifying one or more objects",u,s,t);return f.length})})})},qt.prototype.delete=function(){var i=this._ctx,n=i.range;return At(i)&&(i.isPrimKey&&!gt||3===n.type)?this._write(function(e){var t=i.table.core.schema.primaryKey,r=n;return i.table.core.count({trans:e,query:{index:t,range:r}}).then(function(n){return i.table.core.mutate({trans:e,type:"deleteRange",range:r}).then(function(e){var t=e.failures;e.lastResult,e.results;e=e.numFailures;if(e)throw new G("Could not delete some values",Object.keys(t).map(function(e){return t[e]}),n-e);return n-e})})}):this.modify(Ut)},qt);function qt(){}var Ut=function(e,t){return t.value=null};function Lt(e,t){return e<t?-1:e===t?0:1}function Vt(e,t){return t<e?-1:e===t?0:1}function Wt(e,t,n){e=e instanceof Qt?new e.Collection(e):e;return e._ctx.error=new(n||TypeError)(t),e}function zt(e){return new e.Collection(e,function(){return Ht("")}).limit(0)}function Yt(e,s,n,r){var i,c,l,f,h,d,p,y=n.length;if(!n.every(function(e){return"string"==typeof e}))return Wt(e,pt);function t(e){i="next"===e?function(e){return e.toUpperCase()}:function(e){return e.toLowerCase()},c="next"===e?function(e){return e.toLowerCase()}:function(e){return e.toUpperCase()},l="next"===e?Lt:Vt;var t=n.map(function(e){return{lower:c(e),upper:i(e)}}).sort(function(e,t){return l(e.lower,t.lower)});f=t.map(function(e){return e.upper}),h=t.map(function(e){return e.lower}),p="next"===(d=e)?"":r}t("next");e=new e.Collection(e,function(){return Gt(f[0],h[y-1]+r)});e._ondirectionchange=function(e){t(e)};var v=0;return e._addAlgorithm(function(e,t,n){var r=e.key;if("string"!=typeof r)return!1;var i=c(r);if(s(i,h,v))return!0;for(var o=null,a=v;a<y;++a){var u=function(e,t,n,r,i,o){for(var a=Math.min(e.length,r.length),u=-1,s=0;s<a;++s){var c=t[s];if(c!==r[s])return i(e[s],n[s])<0?e.substr(0,s)+n[s]+n.substr(s+1):i(e[s],r[s])<0?e.substr(0,s)+r[s]+n.substr(s+1):0<=u?e.substr(0,u)+t[u]+n.substr(u+1):null;i(e[s],c)<0&&(u=s)}return a<r.length&&"next"===o?e+n.substr(e.length):a<e.length&&"prev"===o?e.substr(0,n.length):u<0?null:e.substr(0,u)+r[u]+n.substr(u+1)}(r,i,f[a],h[a],l,d);null===u&&null===o?v=a+1:(null===o||0<l(o,u))&&(o=u)}return t(null!==o?function(){e.continue(o+p)}:n),!1}),e}function Gt(e,t,n,r){return{type:2,lower:e,upper:t,lowerOpen:n,upperOpen:r}}function Ht(e){return{type:1,lower:e,upper:e}}var Qt=(Object.defineProperty(Xt.prototype,"Collection",{get:function(){return this._ctx.table.db.Collection},enumerable:!1,configurable:!0}),Xt.prototype.between=function(e,t,n,r){n=!1!==n,r=!0===r;try{return 0<this._cmp(e,t)||0===this._cmp(e,t)&&(n||r)&&(!n||!r)?zt(this):new this.Collection(this,function(){return Gt(e,t,!n,!r)})}catch(e){return Wt(this,dt)}},Xt.prototype.equals=function(e){return null==e?Wt(this,dt):new this.Collection(this,function(){return Ht(e)})},Xt.prototype.above=function(e){return null==e?Wt(this,dt):new this.Collection(this,function(){return Gt(e,void 0,!0)})},Xt.prototype.aboveOrEqual=function(e){return null==e?Wt(this,dt):new this.Collection(this,function(){return Gt(e,void 0,!1)})},Xt.prototype.below=function(e){return null==e?Wt(this,dt):new this.Collection(this,function(){return Gt(void 0,e,!1,!0)})},Xt.prototype.belowOrEqual=function(e){return null==e?Wt(this,dt):new this.Collection(this,function(){return Gt(void 0,e)})},Xt.prototype.startsWith=function(e){return"string"!=typeof e?Wt(this,pt):this.between(e,e+ht,!0,!0)},Xt.prototype.startsWithIgnoreCase=function(e){return""===e?this.startsWith(e):Yt(this,function(e,t){return 0===e.indexOf(t[0])},[e],ht)},Xt.prototype.equalsIgnoreCase=function(e){return Yt(this,function(e,t){return e===t[0]},[e],"")},Xt.prototype.anyOfIgnoreCase=function(){var e=T.apply(B,arguments);return 0===e.length?zt(this):Yt(this,function(e,t){return-1!==t.indexOf(e)},e,"")},Xt.prototype.startsWithAnyOfIgnoreCase=function(){var e=T.apply(B,arguments);return 0===e.length?zt(this):Yt(this,function(t,e){return e.some(function(e){return 0===t.indexOf(e)})},e,ht)},Xt.prototype.anyOf=function(){var t=this,i=T.apply(B,arguments),o=this._cmp;try{i.sort(o)}catch(e){return Wt(this,dt)}if(0===i.length)return zt(this);var e=new this.Collection(this,function(){return Gt(i[0],i[i.length-1])});e._ondirectionchange=function(e){o="next"===e?t._ascending:t._descending,i.sort(o)};var a=0;return e._addAlgorithm(function(e,t,n){for(var r=e.key;0<o(r,i[a]);)if(++a===i.length)return t(n),!1;return 0===o(r,i[a])||(t(function(){e.continue(i[a])}),!1)}),e},Xt.prototype.notEqual=function(e){return this.inAnyRange([[-1/0,e],[e,this.db._maxKey]],{includeLowers:!1,includeUppers:!1})},Xt.prototype.noneOf=function(){var e=T.apply(B,arguments);if(0===e.length)return new this.Collection(this);try{e.sort(this._ascending)}catch(e){return Wt(this,dt)}var t=e.reduce(function(e,t){return e?e.concat([[e[e.length-1][1],t]]):[[-1/0,t]]},null);return t.push([e[e.length-1],this.db._maxKey]),this.inAnyRange(t,{includeLowers:!1,includeUppers:!1})},Xt.prototype.inAnyRange=function(e,t){var o=this,a=this._cmp,u=this._ascending,n=this._descending,s=this._min,c=this._max;if(0===e.length)return zt(this);if(!e.every(function(e){return void 0!==e[0]&&void 0!==e[1]&&u(e[0],e[1])<=0}))return Wt(this,"First argument to inAnyRange() must be an Array of two-value Arrays [lower,upper] where upper must not be lower than lower",J.InvalidArgument);var r=!t||!1!==t.includeLowers,i=t&&!0===t.includeUppers;var l,f=u;function h(e,t){return f(e[0],t[0])}try{(l=e.reduce(function(e,t){for(var n=0,r=e.length;n<r;++n){var i=e[n];if(a(t[0],i[1])<0&&0<a(t[1],i[0])){i[0]=s(i[0],t[0]),i[1]=c(i[1],t[1]);break}}return n===r&&e.push(t),e},[])).sort(h)}catch(e){return Wt(this,dt)}var d=0,p=i?function(e){return 0<u(e,l[d][1])}:function(e){return 0<=u(e,l[d][1])},y=r?function(e){return 0<n(e,l[d][0])}:function(e){return 0<=n(e,l[d][0])};var v=p,e=new this.Collection(this,function(){return Gt(l[0][0],l[l.length-1][1],!r,!i)});return e._ondirectionchange=function(e){f="next"===e?(v=p,u):(v=y,n),l.sort(h)},e._addAlgorithm(function(e,t,n){for(var r,i=e.key;v(i);)if(++d===l.length)return t(n),!1;return!p(r=i)&&!y(r)||(0===o._cmp(i,l[d][1])||0===o._cmp(i,l[d][0])||t(function(){f===u?e.continue(l[d][0]):e.continue(l[d][1])}),!1)}),e},Xt.prototype.startsWithAnyOf=function(){var e=T.apply(B,arguments);return e.every(function(e){return"string"==typeof e})?0===e.length?zt(this):this.inAnyRange(e.map(function(e){return[e,e+ht]})):Wt(this,"startsWithAnyOf() only works with strings")},Xt);function Xt(){}function Jt(t){return We(function(e){return $t(e),t(e.target.error),!1})}function $t(e){e.stopPropagation&&e.stopPropagation(),e.preventDefault&&e.preventDefault()}var Zt="storagemutated",en="x-storagemutated-1",tn=Ot(null,Zt),nn=(rn.prototype._lock=function(){return v(!Oe.global),++this._reculock,1!==this._reculock||Oe.global||(Oe.lockOwnerFor=this),this},rn.prototype._unlock=function(){if(v(!Oe.global),0==--this._reculock)for(Oe.global||(Oe.lockOwnerFor=null);0<this._blockedFuncs.length&&!this._locked();){var e=this._blockedFuncs.shift();try{it(e[1],e[0])}catch(e){}}return this},rn.prototype._locked=function(){return this._reculock&&Oe.lockOwnerFor!==this},rn.prototype.create=function(t){var n=this;if(!this.mode)return this;var e=this.db.idbdb,r=this.db._state.dbOpenError;if(v(!this.idbtrans),!t&&!e)switch(r&&r.name){case"DatabaseClosedError":throw new J.DatabaseClosed(r);case"MissingAPIError":throw new J.MissingAPI(r.message,r);default:throw new J.OpenFailed(r)}if(!this.active)throw new J.TransactionInactive;return v(null===this._completion._state),(t=this.idbtrans=t||(this.db.core||e).transaction(this.storeNames,this.mode,{durability:this.chromeTransactionDurability})).onerror=We(function(e){$t(e),n._reject(t.error)}),t.onabort=We(function(e){$t(e),n.active&&n._reject(new J.Abort(t.error)),n.active=!1,n.on("abort").fire(e)}),t.oncomplete=We(function(){n.active=!1,n._resolve(),"mutatedParts"in t&&tn.storagemutated.fire(t.mutatedParts)}),this},rn.prototype._promise=function(n,r,i){var o=this;if("readwrite"===n&&"readwrite"!==this.mode)return lt(new J.ReadOnly("Transaction is readonly"));if(!this.active)return lt(new J.TransactionInactive);if(this._locked())return new je(function(e,t){o._blockedFuncs.push([function(){o._promise(n,r,i).then(e,t)},Oe])});if(i)return Je(function(){var e=new je(function(e,t){o._lock();var n=r(e,t,o);n&&n.then&&n.then(e,t)});return e.finally(function(){return o._unlock()}),e._lib=!0,e});var e=new je(function(e,t){var n=r(e,t,o);n&&n.then&&n.then(e,t)});return e._lib=!0,e},rn.prototype._root=function(){return this.parent?this.parent._root():this},rn.prototype.waitFor=function(e){var t,r=this._root(),i=je.resolve(e);r._waitingFor?r._waitingFor=r._waitingFor.then(function(){return i}):(r._waitingFor=i,r._waitingQueue=[],t=r.idbtrans.objectStore(r.storeNames[0]),function e(){for(++r._spinCount;r._waitingQueue.length;)r._waitingQueue.shift()();r._waitingFor&&(t.get(-1/0).onsuccess=e)}());var o=r._waitingFor;return new je(function(t,n){i.then(function(e){return r._waitingQueue.push(We(t.bind(null,e)))},function(e){return r._waitingQueue.push(We(n.bind(null,e)))}).finally(function(){r._waitingFor===o&&(r._waitingFor=null)})})},rn.prototype.abort=function(){this.active&&(this.active=!1,this.idbtrans&&this.idbtrans.abort(),this._reject(new J.Abort))},rn.prototype.table=function(e){var t=this._memoizedTables||(this._memoizedTables={});if(m(t,e))return t[e];var n=this.schema[e];if(!n)throw new J.NotFound("Table "+e+" not part of transaction");n=new this.db.Table(e,n,this);return n.core=this.db.core.table(e),t[e]=n},rn);function rn(){}function on(e,t,n,r,i,o,a){return{name:e,keyPath:t,unique:n,multi:r,auto:i,compound:o,src:(n&&!a?"&":"")+(r?"*":"")+(i?"++":"")+an(t)}}function an(e){return"string"==typeof e?e:e?"["+[].join.call(e,"+")+"]":""}function un(e,t,n){return{name:e,primKey:t,indexes:n,mappedClass:null,idxByName:w(n,function(e){return[e.name,e]})}}var sn=function(e){try{return e.only([[]]),sn=function(){return[[]]},[[]]}catch(e){return sn=function(){return ht},ht}};function cn(t){return null==t?function(){}:"string"==typeof t?1===(n=t).split(".").length?function(e){return e[n]}:function(e){return k(e,n)}:function(e){return k(e,t)};var n}function ln(e){return[].slice.call(e)}var fn=0;function hn(e){return null==e?":id":"string"==typeof e?e:"["+e.join("+")+"]"}function dn(e,i,t){function w(e){if(3===e.type)return null;if(4===e.type)throw new Error("Cannot convert never type to IDBKeyRange");var t=e.lower,n=e.upper,r=e.lowerOpen,e=e.upperOpen;return void 0===t?void 0===n?null:i.upperBound(n,!!e):void 0===n?i.lowerBound(t,!!r):i.bound(t,n,!!r,!!e)}function n(e){var h,_=e.name;return{name:_,schema:e,mutate:function(e){var y=e.trans,v=e.type,m=e.keys,g=e.values,b=e.range;return new Promise(function(t,e){t=We(t);var n=y.objectStore(_),r=null==n.keyPath,i="put"===v||"add"===v;if(!i&&"delete"!==v&&"deleteRange"!==v)throw new Error("Invalid operation type: "+v);var o,a=(m||g||{length:1}).length;if(m&&g&&m.length!==g.length)throw new Error("Given keys array must have same length as given values array.");if(0===a)return t({numFailures:0,failures:{},results:[],lastResult:void 0});function u(e){++l,$t(e)}var s=[],c=[],l=0;if("deleteRange"===v){if(4===b.type)return t({numFailures:l,failures:c,results:[],lastResult:void 0});3===b.type?s.push(o=n.clear()):s.push(o=n.delete(w(b)))}else{var r=i?r?[g,m]:[g,null]:[m,null],f=r[0],h=r[1];if(i)for(var d=0;d<a;++d)s.push(o=h&&void 0!==h[d]?n[v](f[d],h[d]):n[v](f[d])),o.onerror=u;else for(d=0;d<a;++d)s.push(o=n[v](f[d])),o.onerror=u}function p(e){e=e.target.result,s.forEach(function(e,t){return null!=e.error&&(c[t]=e.error)}),t({numFailures:l,failures:c,results:"delete"===v?m:s.map(function(e){return e.result}),lastResult:e})}o.onerror=function(e){u(e),p(e)},o.onsuccess=p})},getMany:function(e){var f=e.trans,h=e.keys;return new Promise(function(t,e){t=We(t);for(var n,r=f.objectStore(_),i=h.length,o=new Array(i),a=0,u=0,s=function(e){e=e.target;o[e._pos]=e.result,++u===a&&t(o)},c=Jt(e),l=0;l<i;++l)null!=h[l]&&((n=r.get(h[l]))._pos=l,n.onsuccess=s,n.onerror=c,++a);0===a&&t(o)})},get:function(e){var r=e.trans,i=e.key;return new Promise(function(t,e){t=We(t);var n=r.objectStore(_).get(i);n.onsuccess=function(e){return t(e.target.result)},n.onerror=Jt(e)})},query:(h=s,function(f){return new Promise(function(n,e){n=We(n);var r,i,o,t=f.trans,a=f.values,u=f.limit,s=f.query,c=u===1/0?void 0:u,l=s.index,s=s.range,t=t.objectStore(_),l=l.isPrimaryKey?t:t.index(l.name),s=w(s);if(0===u)return n({result:[]});h?((c=a?l.getAll(s,c):l.getAllKeys(s,c)).onsuccess=function(e){return n({result:e.target.result})},c.onerror=Jt(e)):(r=0,i=!a&&"openKeyCursor"in l?l.openKeyCursor(s):l.openCursor(s),o=[],i.onsuccess=function(e){var t=i.result;return t?(o.push(a?t.value:t.primaryKey),++r===u?n({result:o}):void t.continue()):n({result:o})},i.onerror=Jt(e))})}),openCursor:function(e){var c=e.trans,o=e.values,a=e.query,u=e.reverse,l=e.unique;return new Promise(function(t,n){t=We(t);var e=a.index,r=a.range,i=c.objectStore(_),i=e.isPrimaryKey?i:i.index(e.name),e=u?l?"prevunique":"prev":l?"nextunique":"next",s=!o&&"openKeyCursor"in i?i.openKeyCursor(w(r),e):i.openCursor(w(r),e);s.onerror=Jt(n),s.onsuccess=We(function(e){var r,i,o,a,u=s.result;u?(u.___id=++fn,u.done=!1,r=u.continue.bind(u),i=(i=u.continuePrimaryKey)&&i.bind(u),o=u.advance.bind(u),a=function(){throw new Error("Cursor not stopped")},u.trans=c,u.stop=u.continue=u.continuePrimaryKey=u.advance=function(){throw new Error("Cursor not started")},u.fail=We(n),u.next=function(){var e=this,t=1;return this.start(function(){return t--?e.continue():e.stop()}).then(function(){return e})},u.start=function(e){function t(){if(s.result)try{e()}catch(e){u.fail(e)}else u.done=!0,u.start=function(){throw new Error("Cursor behind last entry")},u.stop()}var n=new Promise(function(t,e){t=We(t),s.onerror=Jt(e),u.fail=e,u.stop=function(e){u.stop=u.continue=u.continuePrimaryKey=u.advance=a,t(e)}});return s.onsuccess=We(function(e){s.onsuccess=t,t()}),u.continue=r,u.continuePrimaryKey=i,u.advance=o,t(),n},t(u)):t(null)},n)})},count:function(e){var t=e.query,i=e.trans,o=t.index,a=t.range;return new Promise(function(t,e){var n=i.objectStore(_),r=o.isPrimaryKey?n:n.index(o.name),n=w(a),r=n?r.count(n):r.count();r.onsuccess=We(function(e){return t(e.target.result)}),r.onerror=Jt(e)})}}}var r,o,a,u=(o=t,a=ln((r=e).objectStoreNames),{schema:{name:r.name,tables:a.map(function(e){return o.objectStore(e)}).map(function(t){var e=t.keyPath,n=t.autoIncrement,r=b(e),i={},n={name:t.name,primaryKey:{name:null,isPrimaryKey:!0,outbound:null==e,compound:r,keyPath:e,autoIncrement:n,unique:!0,extractKey:cn(e)},indexes:ln(t.indexNames).map(function(e){return t.index(e)}).map(function(e){var t=e.name,n=e.unique,r=e.multiEntry,e=e.keyPath,r={name:t,compound:b(e),keyPath:e,unique:n,multiEntry:r,extractKey:cn(e)};return i[hn(e)]=r}),getIndexByKeyPath:function(e){return i[hn(e)]}};return i[":id"]=n.primaryKey,null!=e&&(i[hn(e)]=n.primaryKey),n})},hasGetAll:0<a.length&&"getAll"in o.objectStore(a[0])&&!("undefined"!=typeof navigator&&/Safari/.test(navigator.userAgent)&&!/(Chrome\/|Edge\/)/.test(navigator.userAgent)&&[].concat(navigator.userAgent.match(/Safari\/(\d*)/))[1]<604)}),t=u.schema,s=u.hasGetAll,u=t.tables.map(n),c={};return u.forEach(function(e){return c[e.name]=e}),{stack:"dbcore",transaction:e.transaction.bind(e),table:function(e){if(!c[e])throw new Error("Table '"+e+"' not found");return c[e]},MIN_KEY:-1/0,MAX_KEY:sn(i),schema:t}}function pn(e,t,n,r){var i=n.IDBKeyRange;return n.indexedDB,{dbcore:(r=dn(t,i,r),e.dbcore.reduce(function(e,t){t=t.create;return g(g({},e),t(e))},r))}}function yn(e,t){var n=e._novip,e=t.db,t=pn(n._middlewares,e,n._deps,t);n.core=t.dbcore,n.tables.forEach(function(e){var t=e.name;n.core.schema.tables.some(function(e){return e.name===t})&&(e.core=n.core.table(t),n[t]instanceof n.Table&&(n[t].core=e.core))})}function vn(e,t,n,i){var o=e._novip;n.forEach(function(n){var r=i[n];t.forEach(function(e){var t=f(e,n);(!t||"value"in t&&void 0===t.value)&&(e===o.Transaction.prototype||e instanceof o.Transaction?c(e,n,{get:function(){return this.table(n)},set:function(e){a(this,n,{value:e,writable:!0,configurable:!0,enumerable:!0})}}):e[n]=new o.Table(n,r))})})}function mn(e,t){var n=e._novip;t.forEach(function(e){for(var t in e)e[t]instanceof n.Table&&delete e[t]})}function gn(e,t){return e._cfg.version-t._cfg.version}function bn(n,r,i,e){var o=n._dbSchema,a=n._createTransaction("readwrite",n._storeNames,o);a.create(i),a._completion.catch(e);var u=a._reject.bind(a),p=Oe.transless||Oe;Je(function(){var e,s,c,l,f,t,h,d;Oe.trans=a,Oe.transless=p,0===r?(x(o).forEach(function(e){wn(i,e,o[e].primKey,o[e].indexes)}),yn(n,i),je.follow(function(){return n.on.populate.fire(a)}).catch(u)):(s=r,c=a,l=i,f=(e=n)._novip,t=[],e=f._versions,h=f._dbSchema=kn(0,f.idbdb,l),d=!1,e.filter(function(e){return e._cfg.version>=s}).forEach(function(u){t.push(function(){var t=h,e=u._cfg.dbschema;En(f,t,l),En(f,e,l),h=f._dbSchema=e;var n=_n(t,e);n.add.forEach(function(e){wn(l,e[0],e[1].primKey,e[1].indexes)}),n.change.forEach(function(e){if(e.recreate)throw new J.Upgrade("Not yet support for changing primary key");var t=l.objectStore(e.name);e.add.forEach(function(e){return xn(t,e)}),e.change.forEach(function(e){t.deleteIndex(e.name),xn(t,e)}),e.del.forEach(function(e){return t.deleteIndex(e)})});var r=u._cfg.contentUpgrade;if(r&&u._cfg.version>s){yn(f,l),c._memoizedTables={},d=!0;var i=P(e);n.del.forEach(function(e){i[e]=t[e]}),mn(f,[f.Transaction.prototype]),vn(f,[f.Transaction.prototype],x(i),i),c.schema=i;var o,a=R(r);a&&$e();n=je.follow(function(){var e;(o=r(c))&&a&&(e=Ze.bind(null,null),o.then(e,e))});return o&&"function"==typeof o.then?je.resolve(o):n.then(function(){return o})}}),t.push(function(e){var t,n,r;d&&mt||(t=u._cfg.dbschema,n=t,r=e,[].slice.call(r.db.objectStoreNames).forEach(function(e){return null==n[e]&&r.db.deleteObjectStore(e)})),mn(f,[f.Transaction.prototype]),vn(f,[f.Transaction.prototype],f._storeNames,f._dbSchema),c.schema=f._dbSchema})}),function e(){return t.length?je.resolve(t.shift()(c.idbtrans)).then(e):je.resolve()}().then(function(){var t,n;n=l,x(t=h).forEach(function(e){n.db.objectStoreNames.contains(e)||wn(n,e,t[e].primKey,t[e].indexes)})}).catch(u))})}function _n(e,t){var n,r={del:[],add:[],change:[]};for(n in e)t[n]||r.del.push(n);for(n in t){var i=e[n],o=t[n];if(i){var a={name:n,def:o,recreate:!1,del:[],add:[],change:[]};if(""+(i.primKey.keyPath||"")!=""+(o.primKey.keyPath||"")||i.primKey.auto!==o.primKey.auto&&!vt)a.recreate=!0,r.change.push(a);else{var u=i.idxByName,s=o.idxByName,c=void 0;for(c in u)s[c]||a.del.push(c);for(c in s){var l=u[c],f=s[c];l?l.src!==f.src&&a.change.push(f):a.add.push(f)}(0<a.del.length||0<a.add.length||0<a.change.length)&&r.change.push(a)}}else r.add.push([n,o])}return r}function wn(e,t,n,r){var i=e.db.createObjectStore(t,n.keyPath?{keyPath:n.keyPath,autoIncrement:n.auto}:{autoIncrement:n.auto});return r.forEach(function(e){return xn(i,e)}),i}function xn(e,t){e.createIndex(t.name,t.keyPath,{unique:t.unique,multiEntry:t.multi})}function kn(e,t,u){var s={};return y(t.objectStoreNames,0).forEach(function(e){for(var t=u.objectStore(e),n=on(an(a=t.keyPath),a||"",!1,!1,!!t.autoIncrement,a&&"string"!=typeof a,!0),r=[],i=0;i<t.indexNames.length;++i){var o=t.index(t.indexNames[i]),a=o.keyPath,o=on(o.name,a,!!o.unique,!!o.multiEntry,!1,a&&"string"!=typeof a,!1);r.push(o)}s[e]=un(e,n,r)}),s}function En(e,t,n){for(var r=e._novip,i=n.db.objectStoreNames,o=0;o<i.length;++o){var a=i[o],u=n.objectStore(a);r._hasGetAll="getAll"in u;for(var s=0;s<u.indexNames.length;++s){var c=u.indexNames[s],l=u.index(c).keyPath,f="string"==typeof l?l:"["+y(l).join("+")+"]";!t[a]||(l=t[a].idxByName[f])&&(l.name=c,delete t[a].idxByName[f],t[a].idxByName[c]=l)}}"undefined"!=typeof navigator&&/Safari/.test(navigator.userAgent)&&!/(Chrome\/|Edge\/)/.test(navigator.userAgent)&&h.WorkerGlobalScope&&h instanceof h.WorkerGlobalScope&&[].concat(navigator.userAgent.match(/Safari\/(\d*)/))[1]<604&&(r._hasGetAll=!1)}var Pn=(Kn.prototype._parseStoresSpec=function(r,i){x(r).forEach(function(e){if(null!==r[e]){var t=r[e].split(",").map(function(e,t){var n=(e=e.trim()).replace(/([&*]|\+\+)/g,""),r=/^\[/.test(n)?n.match(/^\[(.*)\]$/)[1].split("+"):n;return on(n,r||null,/\&/.test(e),/\*/.test(e),/\+\+/.test(e),b(r),0===t)}),n=t.shift();if(n.multi)throw new J.Schema("Primary key cannot be multi-valued");t.forEach(function(e){if(e.auto)throw new J.Schema("Only primary key can be marked as autoIncrement (++)");if(!e.keyPath)throw new J.Schema("Index must have a name and cannot be an empty string")}),i[e]=un(e,n,t)}})},Kn.prototype.stores=function(e){var t=this.db;this._cfg.storesSource=this._cfg.storesSource?u(this._cfg.storesSource,e):e;var e=t._versions,n={},r={};return e.forEach(function(e){u(n,e._cfg.storesSource),r=e._cfg.dbschema={},e._parseStoresSpec(n,r)}),t._dbSchema=r,mn(t,[t._allTables,t,t.Transaction.prototype]),vn(t,[t._allTables,t,t.Transaction.prototype,this._cfg.tables],x(r),r),t._storeNames=x(r),this},Kn.prototype.upgrade=function(e){return this._cfg.contentUpgrade=ue(this._cfg.contentUpgrade||Z,e),this},Kn);function Kn(){}function On(e,t){var n=e._dbNamesDB;return n||(n=e._dbNamesDB=new Gn(bt,{addons:[],indexedDB:e,IDBKeyRange:t})).version(1).stores({dbnames:"name"}),n.table("dbnames")}function Sn(e){return e&&"function"==typeof e.databases}function An(e){return Je(function(){return Oe.letThrough=!0,e()})}function Cn(f){var h=f._state,r=f._deps.indexedDB;if(h.isBeingOpened||f.idbdb)return h.dbReadyPromise.then(function(){return h.dbOpenError?lt(h.dbOpenError):f});F&&(h.openCanceller._stackHolder=U()),h.isBeingOpened=!0,h.dbOpenError=null,h.openComplete=!1;var t=h.openCanceller;function e(){if(h.openCanceller!==t)throw new J.DatabaseClosed("db.open() was cancelled")}var n,i=h.dbReadyResolve,d=null,p=!1;return je.race([t,("undefined"==typeof navigator?je.resolve():!navigator.userAgentData&&/Safari\//.test(navigator.userAgent)&&!/Chrom(e|ium)\//.test(navigator.userAgent)&&indexedDB.databases?new Promise(function(e){function t(){return indexedDB.databases().finally(e)}n=setInterval(t,100),t()}).finally(function(){return clearInterval(n)}):Promise.resolve()).then(function(){return new je(function(s,n){if(e(),!r)throw new J.MissingAPI;var c=f.name,l=h.autoSchema?r.open(c):r.open(c,Math.round(10*f.verno));if(!l)throw new J.MissingAPI;l.onerror=Jt(n),l.onblocked=We(f._fireOnBlocked),l.onupgradeneeded=We(function(e){var t;d=l.transaction,h.autoSchema&&!f._options.allowEmptyDB?(l.onerror=$t,d.abort(),l.result.close(),(t=r.deleteDatabase(c)).onsuccess=t.onerror=We(function(){n(new J.NoSuchDatabase("Database "+c+" doesnt exist"))})):(d.onerror=Jt(n),e=e.oldVersion>Math.pow(2,62)?0:e.oldVersion,p=e<1,f._novip.idbdb=l.result,bn(f,e/10,d,n))},n),l.onsuccess=We(function(){d=null;var e,t,n,r,i,o=f._novip.idbdb=l.result,a=y(o.objectStoreNames);if(0<a.length)try{var u=o.transaction(1===(r=a).length?r[0]:r,"readonly");h.autoSchema?(t=o,n=u,(e=(e=f)._novip).verno=t.version/10,n=e._dbSchema=kn(0,t,n),e._storeNames=y(t.objectStoreNames,0),vn(e,[e._allTables],x(n),n)):(En(f,f._dbSchema,u),((i=_n(kn(0,(i=f).idbdb,u),i._dbSchema)).add.length||i.change.some(function(e){return e.add.length||e.change.length}))&&console.warn("Dexie SchemaDiff: Schema was extended without increasing the number passed to db.version(). Some queries may fail.")),yn(f,u)}catch(e){}yt.push(f),o.onversionchange=We(function(e){h.vcFired=!0,f.on("versionchange").fire(e)}),o.onclose=We(function(e){f.on("close").fire(e)}),p&&(i=f._deps,u=c,o=i.indexedDB,i=i.IDBKeyRange,Sn(o)||u===bt||On(o,i).put({name:u}).catch(Z)),s()},n)})})]).then(function(){return e(),h.onReadyBeingFired=[],je.resolve(An(function(){return f.on.ready.fire(f.vip)})).then(function e(){if(0<h.onReadyBeingFired.length){var t=h.onReadyBeingFired.reduce(ue,Z);return h.onReadyBeingFired=[],je.resolve(An(function(){return t(f.vip)})).then(e)}})}).finally(function(){h.onReadyBeingFired=null,h.isBeingOpened=!1}).then(function(){return f}).catch(function(e){h.dbOpenError=e;try{d&&d.abort()}catch(e){}return t===h.openCanceller&&f._close(),lt(e)}).finally(function(){h.openComplete=!0,i()})}function jn(t){function e(e){return t.next(e)}var r=n(e),i=n(function(e){return t.throw(e)});function n(n){return function(e){var t=n(e),e=t.value;return t.done?e:e&&"function"==typeof e.then?e.then(r,i):b(e)?Promise.all(e).then(r,i):r(e)}}return n(e)()}function Dn(e,t,n){for(var r=b(e)?e.slice():[e],i=0;i<n;++i)r.push(t);return r}var In={stack:"dbcore",name:"VirtualIndexMiddleware",level:1,create:function(f){return g(g({},f),{table:function(e){var a=f.table(e),t=a.schema,u={},s=[];function c(e,t,n){var r=hn(e),i=u[r]=u[r]||[],o=null==e?0:"string"==typeof e?1:e.length,r=0<t,r=g(g({},n),{isVirtual:r,keyTail:t,keyLength:o,extractKey:cn(e),unique:!r&&n.unique});return i.push(r),r.isPrimaryKey||s.push(r),1<o&&c(2===o?e[0]:e.slice(0,o-1),t+1,n),i.sort(function(e,t){return e.keyTail-t.keyTail}),r}e=c(t.primaryKey.keyPath,0,t.primaryKey);u[":id"]=[e];for(var n=0,r=t.indexes;n<r.length;n++){var i=r[n];c(i.keyPath,0,i)}function l(e){var t,n=e.query.index;return n.isVirtual?g(g({},e),{query:{index:n,range:(t=e.query.range,n=n.keyTail,{type:1===t.type?2:t.type,lower:Dn(t.lower,t.lowerOpen?f.MAX_KEY:f.MIN_KEY,n),lowerOpen:!0,upper:Dn(t.upper,t.upperOpen?f.MIN_KEY:f.MAX_KEY,n),upperOpen:!0})}}):e}return g(g({},a),{schema:g(g({},t),{primaryKey:e,indexes:s,getIndexByKeyPath:function(e){return(e=u[hn(e)])&&e[0]}}),count:function(e){return a.count(l(e))},query:function(e){return a.query(l(e))},openCursor:function(t){var e=t.query.index,r=e.keyTail,n=e.isVirtual,i=e.keyLength;return n?a.openCursor(l(t)).then(function(e){return e&&o(e)}):a.openCursor(t);function o(n){return Object.create(n,{continue:{value:function(e){null!=e?n.continue(Dn(e,t.reverse?f.MAX_KEY:f.MIN_KEY,r)):t.unique?n.continue(n.key.slice(0,i).concat(t.reverse?f.MIN_KEY:f.MAX_KEY,r)):n.continue()}},continuePrimaryKey:{value:function(e,t){n.continuePrimaryKey(Dn(e,f.MAX_KEY,r),t)}},primaryKey:{get:function(){return n.primaryKey}},key:{get:function(){var e=n.key;return 1===i?e[0]:e.slice(0,i)}},value:{get:function(){return n.value}}})}}})}})}};function Bn(i,o,a,u){return a=a||{},u=u||"",x(i).forEach(function(e){var t,n,r;m(o,e)?(t=i[e],n=o[e],"object"==typeof t&&"object"==typeof n&&t&&n?(r=j(t))!==j(n)?a[u+e]=o[e]:"Object"===r?Bn(t,n,a,u+e+"."):t!==n&&(a[u+e]=o[e]):t!==n&&(a[u+e]=o[e])):a[u+e]=void 0}),x(o).forEach(function(e){m(i,e)||(a[u+e]=o[e])}),a}var Tn={stack:"dbcore",name:"HooksMiddleware",level:2,create:function(e){return g(g({},e),{table:function(r){var y=e.table(r),v=y.schema.primaryKey;return g(g({},y),{mutate:function(e){var t=Oe.trans,n=t.table(r).hook,h=n.deleting,d=n.creating,p=n.updating;switch(e.type){case"add":if(d.fire===Z)break;return t._promise("readwrite",function(){return a(e)},!0);case"put":if(d.fire===Z&&p.fire===Z)break;return t._promise("readwrite",function(){return a(e)},!0);case"delete":if(h.fire===Z)break;return t._promise("readwrite",function(){return a(e)},!0);case"deleteRange":if(h.fire===Z)break;return t._promise("readwrite",function(){return function n(r,i,o){return y.query({trans:r,values:!1,query:{index:v,range:i},limit:o}).then(function(e){var t=e.result;return a({type:"delete",keys:t,trans:r}).then(function(e){return 0<e.numFailures?Promise.reject(e.failures[0]):t.length<o?{failures:[],numFailures:0,lastResult:void 0}:n(r,g(g({},i),{lower:t[t.length-1],lowerOpen:!0}),o)})})}(e.trans,e.range,1e4)},!0)}return y.mutate(e);function a(c){var e,t,n,l=Oe.trans,f=c.keys||(t=v,"delete"===(n=c).type?n.keys:n.keys||n.values.map(t.extractKey));if(!f)throw new Error("Keys missing");return"delete"!==(c="add"===c.type||"put"===c.type?g(g({},c),{keys:f}):g({},c)).type&&(c.values=i([],c.values,!0)),c.keys&&(c.keys=i([],c.keys,!0)),e=y,n=f,("add"===(t=c).type?Promise.resolve([]):e.getMany({trans:t.trans,keys:n,cache:"immutable"})).then(function(u){var s=f.map(function(e,t){var n,r,i,o=u[t],a={onerror:null,onsuccess:null};return"delete"===c.type?h.fire.call(a,e,o,l):"add"===c.type||void 0===o?(n=d.fire.call(a,e,c.values[t],l),null==e&&null!=n&&(c.keys[t]=e=n,v.outbound||E(c.values[t],v.keyPath,e))):(n=Bn(o,c.values[t]),(r=p.fire.call(a,n,e,o,l))&&(i=c.values[t],Object.keys(r).forEach(function(e){m(i,e)?i[e]=r[e]:E(i,e,r[e])}))),a});return y.mutate(c).then(function(e){for(var t=e.failures,n=e.results,r=e.numFailures,e=e.lastResult,i=0;i<f.length;++i){var o=(n||f)[i],a=s[i];null==o?a.onerror&&a.onerror(t[i]):a.onsuccess&&a.onsuccess("put"===c.type&&u[i]?c.values[i]:o)}return{failures:t,results:n,numFailures:r,lastResult:e}}).catch(function(t){return s.forEach(function(e){return e.onerror&&e.onerror(t)}),Promise.reject(t)})})}}})}})}};function Rn(e,t,n){try{if(!t)return null;if(t.keys.length<e.length)return null;for(var r=[],i=0,o=0;i<t.keys.length&&o<e.length;++i)0===Rt(t.keys[i],e[o])&&(r.push(n?A(t.values[i]):t.values[i]),++o);return r.length===e.length?r:null}catch(e){return null}}var Fn={stack:"dbcore",level:-1,create:function(t){return{table:function(e){var n=t.table(e);return g(g({},n),{getMany:function(t){if(!t.cache)return n.getMany(t);var e=Rn(t.keys,t.trans._cache,"clone"===t.cache);return e?je.resolve(e):n.getMany(t).then(function(e){return t.trans._cache={keys:t.keys,values:"clone"===t.cache?A(e):e},e})},mutate:function(e){return"add"!==e.type&&(e.trans._cache=null),n.mutate(e)}})}}}};function Mn(e){return!("from"in e)}var Nn=function(e,t){if(!this){var n=new Nn;return e&&"d"in e&&u(n,e),n}u(this,arguments.length?{d:1,from:e,to:1<arguments.length?t:e}:{d:0})};function qn(e,t,n){var r=Rt(t,n);if(!isNaN(r)){if(0<r)throw RangeError();if(Mn(e))return u(e,{from:t,to:n,d:1});var i=e.l,r=e.r;if(Rt(n,e.from)<0)return i?qn(i,t,n):e.l={from:t,to:n,d:1,l:null,r:null},Wn(e);if(0<Rt(t,e.to))return r?qn(r,t,n):e.r={from:t,to:n,d:1,l:null,r:null},Wn(e);Rt(t,e.from)<0&&(e.from=t,e.l=null,e.d=r?r.d+1:1),0<Rt(n,e.to)&&(e.to=n,e.r=null,e.d=e.l?e.l.d+1:1);n=!e.r;i&&!e.l&&Un(e,i),r&&n&&Un(e,r)}}function Un(e,t){Mn(t)||function e(t,n){var r=n.from,i=n.to,o=n.l,n=n.r;qn(t,r,i),o&&e(t,o),n&&e(t,n)}(e,t)}function Ln(e,t){var n=Vn(t),r=n.next();if(r.done)return!1;for(var i=r.value,o=Vn(e),a=o.next(i.from),u=a.value;!r.done&&!a.done;){if(Rt(u.from,i.to)<=0&&0<=Rt(u.to,i.from))return!0;Rt(i.from,u.from)<0?i=(r=n.next(u.from)).value:u=(a=o.next(i.from)).value}return!1}function Vn(e){var n=Mn(e)?null:{s:0,n:e};return{next:function(e){for(var t=0<arguments.length;n;)switch(n.s){case 0:if(n.s=1,t)for(;n.n.l&&Rt(e,n.n.from)<0;)n={up:n,n:n.n.l,s:1};else for(;n.n.l;)n={up:n,n:n.n.l,s:1};case 1:if(n.s=2,!t||Rt(e,n.n.to)<=0)return{value:n.n,done:!1};case 2:if(n.n.r){n.s=3,n={up:n,n:n.n.r,s:0};continue}case 3:n=n.up}return{done:!0}}}}function Wn(e){var t,n,r=((null===(t=e.r)||void 0===t?void 0:t.d)||0)-((null===(n=e.l)||void 0===n?void 0:n.d)||0),i=1<r?"r":r<-1?"l":"";i&&(t="r"==i?"l":"r",n=g({},e),r=e[i],e.from=r.from,e.to=r.to,e[i]=r[i],n[i]=r[t],(e[t]=n).d=zn(n)),e.d=zn(e)}function zn(e){var t=e.r,e=e.l;return(t?e?Math.max(t.d,e.d):t.d:e?e.d:0)+1}r(Nn.prototype,((e={add:function(e){return Un(this,e),this},addKey:function(e){return qn(this,e,e),this},addKeys:function(e){var t=this;return e.forEach(function(e){return qn(t,e,e)}),this}})[D]=function(){return Vn(this)},e));var Yn={stack:"dbcore",level:0,create:function(r){var v=r.schema.name,m=new Nn(r.MIN_KEY,r.MAX_KEY);return g(g({},r),{table:function(d){function e(e){var e=(t=e.query).index,t=t.range;return[e,new Nn(null!==(e=t.lower)&&void 0!==e?e:r.MIN_KEY,null!==(t=t.upper)&&void 0!==t?t:r.MAX_KEY)]}var p=r.table(d),y=p.schema,t=y.primaryKey,c=t.extractKey,l=t.outbound,n=g(g({},p),{mutate:function(e){function n(e){return r[e="idb://"+v+"/"+d+"/"+e]||(r[e]=new Nn)}var t=e.trans,r=t.mutatedParts||(t.mutatedParts={}),i=n(""),s=n(":dels"),c=e.type,t="deleteRange"===e.type?[e.range]:"delete"===e.type?[e.keys]:e.values.length<50?[[],e.values]:[],l=t[0],f=t[1],h=e.trans._cache;return p.mutate(e).then(function(e){var t,o,a,u;return b(l)?("delete"!==c&&(l=e.results),i.addKeys(l),(t=Rn(l,h))||"add"===c||s.addKeys(l),(t||f)&&(o=n,a=t,u=f,y.indexes.forEach(function(t){var n=o(t.name||"");function r(e){return null!=e?t.extractKey(e):null}function i(e){return t.multiEntry&&b(e)?e.forEach(function(e){return n.addKey(e)}):n.addKey(e)}(a||u).forEach(function(e,t){var n=a&&r(a[t]),t=u&&r(u[t]);0!==Rt(n,t)&&(null!=n&&i(n),null!=t&&i(t))})}))):l?(t={from:l.lower,to:l.upper},s.add(t),i.add(t)):(i.add(m),s.add(m),y.indexes.forEach(function(e){return n(e.name).add(m)})),e})}}),f={get:function(e){return[t,new Nn(e.key)]},getMany:function(e){return[t,(new Nn).addKeys(e.keys)]},count:e,query:e,openCursor:e};return x(f).forEach(function(s){n[s]=function(i){var t=Oe.subscr;if(t){var e=function(e){e="idb://"+v+"/"+d+"/"+e;return t[e]||(t[e]=new Nn)},o=e(""),a=e(":dels"),n=f[s](i),r=n[0],n=n[1];if(e(r.name||"").add(n),!r.isPrimaryKey){if("count"!==s){var u="query"===s&&l&&i.values&&p.query(g(g({},i),{values:!1}));return p[s].apply(this,arguments).then(function(t){if("query"===s){if(l&&i.values)return u.then(function(e){e=e.result;return o.addKeys(e),t});var e=i.values?t.result.map(c):t.result;(i.values?o:a).addKeys(e)}else if("openCursor"===s){var n=t,r=i.values;return n&&Object.create(n,{key:{get:function(){return a.addKey(n.primaryKey),n.key}},primaryKey:{get:function(){var e=n.primaryKey;return a.addKey(e),e}},value:{get:function(){return r&&o.addKey(n.primaryKey),n.value}}})}return t})}a.add(m)}}return p[s].apply(this,arguments)}}),n}})}};var Gn=(Hn.prototype.version=function(t){if(isNaN(t)||t<.1)throw new J.Type("Given version is not a positive number");if(t=Math.round(10*t)/10,this.idbdb||this._state.isBeingOpened)throw new J.Schema("Cannot add version when database is open");this.verno=Math.max(this.verno,t);var e=this._versions,n=e.filter(function(e){return e._cfg.version===t})[0];return n||(n=new this.Version(t),e.push(n),e.sort(gn),n.stores({}),this._state.autoSchema=!1,n)},Hn.prototype._whenReady=function(e){var n=this;return this.idbdb&&(this._state.openComplete||Oe.letThrough||this._vip)?e():new je(function(e,t){if(n._state.openComplete)return t(new J.DatabaseClosed(n._state.dbOpenError));if(!n._state.isBeingOpened){if(!n._options.autoOpen)return void t(new J.DatabaseClosed);n.open().catch(Z)}n._state.dbReadyPromise.then(e,t)}).then(e)},Hn.prototype.use=function(e){var t=e.stack,n=e.create,r=e.level,i=e.name;i&&this.unuse({stack:t,name:i});e=this._middlewares[t]||(this._middlewares[t]=[]);return e.push({stack:t,create:n,level:null==r?10:r,name:i}),e.sort(function(e,t){return e.level-t.level}),this},Hn.prototype.unuse=function(e){var t=e.stack,n=e.name,r=e.create;return t&&this._middlewares[t]&&(this._middlewares[t]=this._middlewares[t].filter(function(e){return r?e.create!==r:!!n&&e.name!==n})),this},Hn.prototype.open=function(){return Cn(this)},Hn.prototype._close=function(){var n=this._state,e=yt.indexOf(this);if(0<=e&&yt.splice(e,1),this.idbdb){try{this.idbdb.close()}catch(e){}this._novip.idbdb=null}n.dbReadyPromise=new je(function(e){n.dbReadyResolve=e}),n.openCanceller=new je(function(e,t){n.cancelOpen=t})},Hn.prototype.close=function(){this._close();var e=this._state;this._options.autoOpen=!1,e.dbOpenError=new J.DatabaseClosed,e.isBeingOpened&&e.cancelOpen(e.dbOpenError)},Hn.prototype.delete=function(){var i=this,n=0<arguments.length,o=this._state;return new je(function(r,t){function e(){i.close();var e=i._deps.indexedDB.deleteDatabase(i.name);e.onsuccess=We(function(){var e,t,n;e=i._deps,t=i.name,n=e.indexedDB,e=e.IDBKeyRange,Sn(n)||t===bt||On(n,e).delete(t).catch(Z),r()}),e.onerror=Jt(t),e.onblocked=i._fireOnBlocked}if(n)throw new J.InvalidArgument("Arguments not allowed in db.delete()");o.isBeingOpened?o.dbReadyPromise.then(e):e()})},Hn.prototype.backendDB=function(){return this.idbdb},Hn.prototype.isOpen=function(){return null!==this.idbdb},Hn.prototype.hasBeenClosed=function(){var e=this._state.dbOpenError;return e&&"DatabaseClosed"===e.name},Hn.prototype.hasFailed=function(){return null!==this._state.dbOpenError},Hn.prototype.dynamicallyOpened=function(){return this._state.autoSchema},Object.defineProperty(Hn.prototype,"tables",{get:function(){var t=this;return x(this._allTables).map(function(e){return t._allTables[e]})},enumerable:!1,configurable:!0}),Hn.prototype.transaction=function(){var e=function(e,t,n){var r=arguments.length;if(r<2)throw new J.InvalidArgument("Too few arguments");for(var i=new Array(r-1);--r;)i[r-1]=arguments[r];return n=i.pop(),[e,K(i),n]}.apply(this,arguments);return this._transaction.apply(this,e)},Hn.prototype._transaction=function(e,t,n){var r=this,i=Oe.trans;i&&i.db===this&&-1===e.indexOf("!")||(i=null);var o,a,u=-1!==e.indexOf("?");e=e.replace("!","").replace("?","");try{if(a=t.map(function(e){e=e instanceof r.Table?e.name:e;if("string"!=typeof e)throw new TypeError("Invalid table argument to Dexie.transaction(). Only Table or String are allowed");return e}),"r"==e||e===_t)o=_t;else{if("rw"!=e&&e!=wt)throw new J.InvalidArgument("Invalid transaction mode: "+e);o=wt}if(i){if(i.mode===_t&&o===wt){if(!u)throw new J.SubTransaction("Cannot enter a sub-transaction with READWRITE mode when parent transaction is READONLY");i=null}i&&a.forEach(function(e){if(i&&-1===i.storeNames.indexOf(e)){if(!u)throw new J.SubTransaction("Table "+e+" not included in parent transaction.");i=null}}),u&&i&&!i.active&&(i=null)}}catch(n){return i?i._promise(null,function(e,t){t(n)}):lt(n)}var s=function i(o,a,u,s,c){return je.resolve().then(function(){var e=Oe.transless||Oe,t=o._createTransaction(a,u,o._dbSchema,s),e={trans:t,transless:e};if(s)t.idbtrans=s.idbtrans;else try{t.create(),o._state.PR1398_maxLoop=3}catch(e){return e.name===Q.InvalidState&&o.isOpen()&&0<--o._state.PR1398_maxLoop?(console.warn("Dexie: Need to reopen db"),o._close(),o.open().then(function(){return i(o,a,u,null,c)})):lt(e)}var n,r=R(c);return r&&$e(),e=je.follow(function(){var e;(n=c.call(t,t))&&(r?(e=Ze.bind(null,null),n.then(e,e)):"function"==typeof n.next&&"function"==typeof n.throw&&(n=jn(n)))},e),(n&&"function"==typeof n.then?je.resolve(n).then(function(e){return t.active?e:lt(new J.PrematureCommit("Transaction committed too early. See http://bit.ly/2kdckMn"))}):e.then(function(){return n})).then(function(e){return s&&t._resolve(),t._completion.then(function(){return e})}).catch(function(e){return t._reject(e),lt(e)})})}.bind(null,this,o,a,i,n);return i?i._promise(o,s,"lock"):Oe.trans?it(Oe.transless,function(){return r._whenReady(s)}):this._whenReady(s)},Hn.prototype.table=function(e){if(!m(this._allTables,e))throw new J.InvalidTable("Table "+e+" does not exist");return this._allTables[e]},Hn);function Hn(e,t){var o=this;this._middlewares={},this.verno=0;var n=Hn.dependencies;this._options=t=g({addons:Hn.addons,autoOpen:!0,indexedDB:n.indexedDB,IDBKeyRange:n.IDBKeyRange},t),this._deps={indexedDB:t.indexedDB,IDBKeyRange:t.IDBKeyRange};n=t.addons;this._dbSchema={},this._versions=[],this._storeNames=[],this._allTables={},this.idbdb=null,this._novip=this;var a,r,u,i,s,c={dbOpenError:null,isBeingOpened:!1,onReadyBeingFired:null,openComplete:!1,dbReadyResolve:Z,dbReadyPromise:null,cancelOpen:Z,openCanceller:null,autoSchema:!0,PR1398_maxLoop:3};c.dbReadyPromise=new je(function(e){c.dbReadyResolve=e}),c.openCanceller=new je(function(e,t){c.cancelOpen=t}),this._state=c,this.name=e,this.on=Ot(this,"populate","blocked","versionchange","close",{ready:[ue,Z]}),this.on.ready.subscribe=p(this.on.ready.subscribe,function(i){return function(n,r){Hn.vip(function(){var t,e=o._state;e.openComplete?(e.dbOpenError||je.resolve().then(n),r&&i(n)):e.onReadyBeingFired?(e.onReadyBeingFired.push(n),r&&i(n)):(i(n),t=o,r||i(function e(){t.on.ready.unsubscribe(n),t.on.ready.unsubscribe(e)}))})}}),this.Collection=(a=this,St(Nt.prototype,function(e,t){this.db=a;var n=kt,r=null;if(t)try{n=t()}catch(e){r=e}var i=e._ctx,t=i.table,e=t.hook.reading.fire;this._ctx={table:t,index:i.index,isPrimKey:!i.index||t.schema.primKey.keyPath&&i.index===t.schema.primKey.name,range:n,keysOnly:!1,dir:"next",unique:"",algorithm:null,filter:null,replayFilter:null,justLimit:!0,isMatch:null,offset:0,limit:1/0,error:r,or:i.or,valueMapper:e!==ee?e:null}})),this.Table=(r=this,St(Pt.prototype,function(e,t,n){this.db=r,this._tx=n,this.name=e,this.schema=t,this.hook=r._allTables[e]?r._allTables[e].hook:Ot(null,{creating:[re,Z],reading:[te,ee],updating:[oe,Z],deleting:[ie,Z]})})),this.Transaction=(u=this,St(nn.prototype,function(e,t,n,r,i){var o=this;this.db=u,this.mode=e,this.storeNames=t,this.schema=n,this.chromeTransactionDurability=r,this.idbtrans=null,this.on=Ot(this,"complete","error","abort"),this.parent=i||null,this.active=!0,this._reculock=0,this._blockedFuncs=[],this._resolve=null,this._reject=null,this._waitingFor=null,this._waitingQueue=null,this._spinCount=0,this._completion=new je(function(e,t){o._resolve=e,o._reject=t}),this._completion.then(function(){o.active=!1,o.on.complete.fire()},function(e){var t=o.active;return o.active=!1,o.on.error.fire(e),o.parent?o.parent._reject(e):t&&o.idbtrans&&o.idbtrans.abort(),lt(e)})})),this.Version=(i=this,St(Pn.prototype,function(e){this.db=i,this._cfg={version:e,storesSource:null,dbschema:{},tables:{},contentUpgrade:null}})),this.WhereClause=(s=this,St(Qt.prototype,function(e,t,n){this.db=s,this._ctx={table:e,index:":id"===t?null:t,or:n};var r=s._deps.indexedDB;if(!r)throw new J.MissingAPI;this._cmp=this._ascending=r.cmp.bind(r),this._descending=function(e,t){return r.cmp(t,e)},this._max=function(e,t){return 0<r.cmp(e,t)?e:t},this._min=function(e,t){return r.cmp(e,t)<0?e:t},this._IDBKeyRange=s._deps.IDBKeyRange})),this.on("versionchange",function(e){0<e.newVersion?console.warn("Another connection wants to upgrade database '"+o.name+"'. Closing db now to resume the upgrade."):console.warn("Another connection wants to delete database '"+o.name+"'. Closing db now to resume the delete request."),o.close()}),this.on("blocked",function(e){!e.newVersion||e.newVersion<e.oldVersion?console.warn("Dexie.delete('"+o.name+"') was blocked"):console.warn("Upgrade '"+o.name+"' blocked by other connection holding version "+e.oldVersion/10)}),this._maxKey=sn(t.IDBKeyRange),this._createTransaction=function(e,t,n,r){return new o.Transaction(e,t,n,o._options.chromeTransactionDurability,r)},this._fireOnBlocked=function(t){o.on("blocked").fire(t),yt.filter(function(e){return e.name===o.name&&e!==o&&!e._state.vcFired}).map(function(e){return e.on("versionchange").fire(t)})},this.use(In),this.use(Tn),this.use(Yn),this.use(Fn),this.vip=Object.create(this,{_vip:{value:!0}}),n.forEach(function(e){return e(o)})}var e="undefined"!=typeof Symbol&&"observable"in Symbol?Symbol.observable:"@@observable",Qn=(Xn.prototype.subscribe=function(e,t,n){return this._subscribe(e&&"function"!=typeof e?e:{next:e,error:t,complete:n})},Xn.prototype[e]=function(){return this},Xn);function Xn(e){this._subscribe=e}function Jn(t,n){return x(n).forEach(function(e){Un(t[e]||(t[e]=new Nn),n[e])}),t}function $n(d){var p=!1,y=void 0,e=new Qn(function(n){var r=R(d);var i=!1,o={},a={},u={get closed(){return i},unsubscribe:function(){i=!0,tn.storagemutated.unsubscribe(f)}};n.start&&n.start(u);var s=!1,c=!1;function l(){return x(a).some(function(e){return o[e]&&Ln(o[e],a[e])})}var f=function(e){Jn(o,e),l()&&h()},h=function(){var t,e;s||i||(o={},e=function(e){r&&$e();var t=function(){return Je(d,{subscr:e,trans:null})},t=Oe.trans?it(Oe.transless,t):t();return r&&t.then(Ze,Ze),t}(t={}),c||(tn(Zt,f),c=!0),s=!0,Promise.resolve(e).then(function(e){y=e,s=!(p=!0),i||(l()?h():(o={},a=t,n.next&&n.next(e)))},function(e){p=s=!1,n.error&&n.error(e),u.unsubscribe()}))};return h(),u});return e.hasValue=function(){return p},e.getValue=function(){return y},e}try{nr={indexedDB:h.indexedDB||h.mozIndexedDB||h.webkitIndexedDB||h.msIndexedDB,IDBKeyRange:h.IDBKeyRange||h.webkitIDBKeyRange}}catch(e){nr={indexedDB:null,IDBKeyRange:null}}var Zn=Gn;function er(e){var t=rr;try{rr=!0,tn.storagemutated.fire(e)}finally{rr=t}}r(Zn,g(g({},V),{delete:function(e){return new Zn(e,{addons:[]}).delete()},exists:function(e){return new Zn(e,{addons:[]}).open().then(function(e){return e.close(),!0}).catch("NoSuchDatabaseError",function(){return!1})},getDatabaseNames:function(e){try{return t=Zn.dependencies,n=t.indexedDB,t=t.IDBKeyRange,(Sn(n)?Promise.resolve(n.databases()).then(function(e){return e.map(function(e){return e.name}).filter(function(e){return e!==bt})}):On(n,t).toCollection().primaryKeys()).then(e)}catch(e){return lt(new J.MissingAPI)}var t,n},defineClass:function(){return function(e){u(this,e)}},ignoreTransaction:function(e){return Oe.trans?it(Oe.transless,e):e()},vip:An,async:function(t){return function(){try{var e=jn(t.apply(this,arguments));return e&&"function"==typeof e.then?e:je.resolve(e)}catch(e){return lt(e)}}},spawn:function(e,t,n){try{var r=jn(e.apply(n,t||[]));return r&&"function"==typeof r.then?r:je.resolve(r)}catch(e){return lt(e)}},currentTransaction:{get:function(){return Oe.trans||null}},waitFor:function(e,t){t=je.resolve("function"==typeof e?Zn.ignoreTransaction(e):e).timeout(t||6e4);return Oe.trans?Oe.trans.waitFor(t):t},Promise:je,debug:{get:function(){return F},set:function(e){M(e,"dexie"===e?function(){return!0}:ft)}},derive:o,extend:u,props:r,override:p,Events:Ot,on:tn,liveQuery:$n,extendObservabilitySet:Jn,getByKeyPath:k,setByKeyPath:E,delByKeyPath:function(t,e){"string"==typeof e?E(t,e,void 0):"length"in e&&[].map.call(e,function(e){E(t,e,void 0)})},shallowClone:P,deepClone:A,getObjectDiff:Bn,cmp:Rt,asap:_,minKey:-1/0,addons:[],connections:yt,errnames:Q,dependencies:nr,semVer:"3.2.4",version:"3.2.4".split(".").map(function(e){return parseInt(e)}).reduce(function(e,t,n){return e+t/Math.pow(10,2*n)})})),Zn.maxKey=sn(Zn.dependencies.IDBKeyRange),"undefined"!=typeof dispatchEvent&&"undefined"!=typeof addEventListener&&(tn(Zt,function(e){var t;rr||(vt?(t=document.createEvent("CustomEvent")).initCustomEvent(en,!0,!0,e):t=new CustomEvent(en,{detail:e}),rr=!0,dispatchEvent(t),rr=!1)}),addEventListener(en,function(e){e=e.detail;rr||er(e)}));var tr,nr,rr=!1;return"undefined"!=typeof BroadcastChannel?("function"==typeof(tr=new BroadcastChannel(en)).unref&&tr.unref(),tn(Zt,function(e){rr||tr.postMessage(e)}),tr.onmessage=function(e){e.data&&er(e.data)}):"undefined"!=typeof self&&"undefined"!=typeof navigator&&(tn(Zt,function(t){try{rr||("undefined"!=typeof localStorage&&localStorage.setItem(en,JSON.stringify({trig:Math.random(),changedParts:t})),"object"==typeof self.clients&&i([],self.clients.matchAll({includeUncontrolled:!0}),!0).forEach(function(e){return e.postMessage({type:en,changedParts:t})}))}catch(e){}}),"undefined"!=typeof addEventListener&&addEventListener("storage",function(e){e.key!==en||(e=JSON.parse(e.newValue))&&er(e.changedParts)}),(nr=self.document&&navigator.serviceWorker)&&nr.addEventListener("message",function(e){e=e.data;e&&e.type===en&&er(e.changedParts)})),je.rejectionMapper=function(e,t){return!e||e instanceof z||e instanceof TypeError||e instanceof SyntaxError||!e.name||!$[e.name]?e:(t=new $[e.name](t||e.message,e),"stack"in e&&c(t,"stack",{get:function(){return this.inner.stack}}),t)},M(F,ft),g(Gn,Object.freeze({__proto__:null,Dexie:Gn,liveQuery:$n,default:Gn,RangeSet:Nn,mergeRanges:Un,rangesOverlap:Ln}),{default:Gn}),Gn});
+//# sourceMappingURL=dexie.min.js.map \ No newline at end of file
diff --git a/ext/lib/dexie.min.js.map b/ext/lib/dexie.min.js.map
new file mode 100644
index 00000000..995ec22d
--- /dev/null
+++ b/ext/lib/dexie.min.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["dexie.js"],"names":["global","factory","exports","module","define","amd","globalThis","self","Dexie","this","__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","__spreadArray","to","from","pack","ar","l","Array","slice","concat","_global","window","keys","isArray","extend","obj","extension","forEach","key","Promise","getProto","getPrototypeOf","_hasOwn","hasOwn","prop","props","proto","Reflect","ownKeys","setProp","defineProperty","functionOrGetSet","options","get","set","configurable","value","writable","derive","Child","Parent","create","bind","getOwnPropertyDescriptor","getPropertyDescriptor","_slice","args","start","end","override","origFunc","overridedFactory","assert","b","Error","asap$1","fn","setImmediate","setTimeout","arrayToObject","array","extractor","reduce","result","item","nameAndValue","getByKeyPath","keyPath","rv","val","push","period","indexOf","innerObj","substr","undefined","setByKeyPath","isFrozen","currentKeyPath","remainingKeyPath","isNaN","parseInt","splice","shallowClone","m","flatten","a","intrinsicTypeNames","split","map","num","filter","intrinsicTypes","x","circularRefs","deepClone","any","WeakMap","innerDeepClone","constructor","toString","toStringTag","o","iteratorSymbol","Symbol","iterator","getIteratorOf","NO_CHAR_ARRAY","getArrayOf","arrayLike","it","next","done","isAsyncFunction","debug","location","test","href","setDebug","libraryFilter","NEEDS_THROW_FOR_STACK","stack","getErrorWithStack","e","prettyStack","exception","numIgnoredFrames","name","message","frame","join","idbDomErrorNames","errorList","defaultTexts","VersionChanged","DatabaseClosed","Abort","TransactionInactive","MissingAPI","DexieError","msg","_e","getMultiErrorMessage","failures","v","ModifyError","successCount","failedKeys","BulkError","pos","failuresByPos","_stack","errnames","BaseException","exceptions","fullName","msgOrInner","inner","Syntax","SyntaxError","Type","TypeError","Range","RangeError","exceptionMap","fullNameExceptions","nop","mirror","pureFunctionChain","f1","f2","callBoth","on1","on2","hookCreatingChain","res","onsuccess","onerror","res2","hookDeletingChain","hookUpdatingChain","modifications","reverseStoppableEventChain","promisableChain","then","thiz","INTERNAL","LONG_STACKS_CLIP_LIMIT","ZONE_ECHO_LIMIT","_a$1","globalP","resolve","crypto","subtle","nativeP","digest","Uint8Array","resolvedNativePromise","nativePromiseProto","resolvedGlobalPromise","nativePromiseThen","NativePromise","patchGlobalPromise","stack_being_generated","schedulePhysicalTick","physicalTick","MutationObserver","hiddenDiv","document","createElement","observe","attributes","setAttribute","asap","callback","microtickQueue","needsNewPhysicalTick","isOutsideMicroTick","unhandledErrors","rejectingErrors","currentFulfiller","rejectionMapper","globalPSD","id","ref","unhandleds","onunhandled","globalError","pgp","env","finalize","uh","PSD","numScheduledCalls","tickFinalizers","DexiePromise","_listeners","onuncatched","_lib","psd","_PSD","_stackHolder","_prev","_numPrev","_state","_value","handleRejection","executePromiseTask","promise","shouldExecuteTick","beginMicroTickScope","reject","_then","propagateAllListeners","endMicroTickScope","ex","thenProp","microTaskId","totalEchoes","onFulfilled","onRejected","_this","possibleAwait","cleanup","decrementExpectedAwaits","propagateToListener","Listener","nativeAwaitCompatibleWrap","linkToPreviousPromise","zone","reason","_promise","tryCatch","origProp","some","listeners","len","finalizePhysicalTick","listener","cb","callListener","ret","markErrorAsHandled","prev","numPrev","wasRootExec","callbacks","unhandledErrs","finalizers","PromiseReject","wrap","errorCatcher","outerScope","switchToZone","catch","type","handler","err","finally","onFinally","getStack","stacks","limit","failure","errorName","timeout","ms","Infinity","handle","Timeout","clearTimeout","snapShot","all","values","onPossibleParallellAsync","remaining","race","newPSD","newScope","usePSD","scheduler","follow","zoneProps","finalizer","allSettled","possiblePromises","results","status","AggregateError","task","awaits","echoes","taskCounter","zoneStack","zoneEchoes","zone_id_counter","a1","a2","parent","globalEnv","PromiseProp","nthen","getPatchedPromiseThen","gthen","incrementExpectedAwaits","possiblePromise","rejection","zoneLeaveEcho","pop","targetZone","bEnteringZone","GlobalPromise_1","currentZone","enqueueNativeMicroTask","targetEnv","GlobalPromise","a3","job","outerZone","origThen","onResolved","UNHANDLEDREJECTION","event","eventData","createEvent","initEvent","CustomEvent","detail","dispatchEvent","PromiseRejectionEvent","onunhandledrejection","_","defaultPrevented","console","warn","dexieStackFrameFilter","maxString","String","fromCharCode","INVALID_KEY_ARGUMENT","STRING_EXPECTED","connections","isIEOrEdge","navigator","userAgent","hasIEDeleteObjectStoreBug","hangsOnDeleteLargeKeyRange","DBNAMES_DB","READONLY","READWRITE","combine","filter1","filter2","AnyRange","lower","lowerOpen","upper","upperOpen","workaroundForUndefinedPrimKey","Table","_trans","mode","writeLocked","trans","_tx","tableName","checkTableInTransaction","schema","NotFound","idbtrans","db","transless","tempTransaction","storeNames","idbdb","openComplete","letThrough","_vip","_createTransaction","_dbSchema","PR1398_maxLoop","InvalidState","isOpen","_close","open","_completion","dbOpenError","isBeingOpened","_options","autoOpen","dbReadyPromise","keyOrCrit","where","first","core","hook","reading","fire","indexOrCrit","WhereClause","keyPaths","equals","compoundIndex","indexes","primKey","ix","compound","every","_maxKey","kp","JSON","stringify","idxByName","idb","_deps","indexedDB","cmp","_a","prevIndex","prevFilterFn","index","multi","idx","filterFunction","toCollection","and","count","thenShortcut","offset","numRows","each","toArray","Collection","orderBy","reverse","mapToClass","mappedClass","readHook","unsubscribe","defineClass","content","add","auto","objToAdd","mutate","numFailures","lastResult","update","keyOrObject","modify","InvalidArgument","put","delete","clear","range","bulkGet","getMany","bulkAdd","objects","keysOrOptions","wantResults","allKeys","numObjects","objectsToAdd","bulkPut","objectsToPut","bulkDelete","numKeys","Events","ctx","eventName","subscriber","evs","subscribe","addEventType","chainFunction","defaultFunction","cfg","context","subscribers","makeClassConstructor","isPlainKeyRange","ignoreLimitFilter","algorithm","or","justLimit","replayFilter","addFilter","addReplayFilter","isLimitFilter","curr","getIndexOrStore","coreSchema","isPrimKey","primaryKey","getIndexByKeyPath","Schema","openCursor","coreTable","keysOnly","dir","unique","query","iter","coreTrans","set_1","union","cursor","advance","stop","fail","_iterate","iterate","valueMapper","cursorPromise","wrappedFn","c","continue","advancer","ta","tb","NaN","al","bl","compareUint8Arrays","getUint8Array","compareArrays","ArrayBuffer","isView","tsTag","buffer","byteOffset","byteLength","_read","_ctx","error","table","_write","_addAlgorithm","clone","raw","Math","min","sortBy","parts","lastPart","lastIndex","getval","order","sorter","aVal","bVal","sort","valueMapper_1","a_1","offsetLeft","rowsLeft","until","bIncludeStopEntry","last","isMatch","indexName","_ondirectionchange","desc","eachKey","eachUniqueKey","eachPrimaryKey","primaryKeys","uniqueKeys","firstKey","lastKey","distinct","strKey","found","changes","modifyer","anythingModified","applyMutateResult","expectedCount","_i","totalFailures","outbound","extractKey","modifyChunkSize","nextChunk","cache","addValues","putValues","putKeys","deleteKeys","origValue","ctx_1","criteria","deleteCallback","changeSpec","coreRange","simpleCompare","simpleCompareReverse","collectionOrWhereClause","T","collection","emptyCollection","whereClause","rangeEqual","addIgnoreCaseAlgorithm","match","needles","suffix","compare","upperNeedles","lowerNeedles","direction","nextKeySuffix","needlesLen","initDirection","toUpperCase","toLowerCase","needleBounds","needle","nb","createRange","firstPossibleNeedle","lowerKey","lowestPossibleCasing","casing","upperNeedle","lowerNeedle","llp","lwrKeyChar","nextCasing","enumerable","between","includeLower","includeUpper","_cmp","above","aboveOrEqual","below","belowOrEqual","startsWith","str","startsWithIgnoreCase","equalsIgnoreCase","anyOfIgnoreCase","startsWithAnyOfIgnoreCase","anyOf","_ascending","_descending","notEqual","inAnyRange","includeLowers","includeUppers","noneOf","ranges","ascending","descending","_min","max","_max","sortDirection","rangeSorter","newRange","rangePos","keyIsBeyondCurrentEntry","keyIsBeforeCurrentEntry","checkKey","startsWithAnyOf","eventRejectHandler","preventDefault","target","stopPropagation","DEXIE_STORAGE_MUTATED_EVENT_NAME","STORAGE_MUTATED_DOM_EVENT_NAME","globalEvents","Transaction","_lock","_reculock","lockOwnerFor","_unlock","_blockedFuncs","_locked","fnAndPSD","shift","OpenFailed","active","transaction","durability","chromeTransactionDurability","ev","_reject","onabort","on","oncomplete","_resolve","storagemutated","bWriteLock","ReadOnly","_root","waitFor","promiseLike","store","root","_waitingFor","_waitingQueue","objectStore","spin","_spinCount","currentWaitPromise","abort","memoizedTables","_memoizedTables","tableSchema","transactionBoundTable","createIndexSpec","src","nameFromKeyPath","createTableSchema","getMaxKey","IdbKeyRange","only","getKeyExtractor","arrayify","_id_counter","getKeyPathAlias","createDBCore","tmpTrans","makeIDBKeyRange","upperBound","lowerBound","bound","createDbCoreTable","hasGetAll","isAddOrPut","req","errorHandler","reqs","args1","args2","keyCount","callbackCount","successHandler","_pos","request","count_1","req_1","result_1","nonInfinitLimit","source","isPrimaryKey","idbKeyRange","getAll","getAllKeys","openKeyCursor","_cursorContinue","_cursorContinuePrimaryKey","_cursorAdvance","doThrowCursorIsStopped","___id","continuePrimaryKey","gotOne","guardedCallback","iterationPromise","resolveIteration","rejectIteration","tables","objectStoreNames","autoIncrement","indexByKeyPath","indexNames","multiEntry","tableMap","MIN_KEY","MAX_KEY","createMiddlewareStacks","middlewares","IDBKeyRange","dbcore","stackImpl","down","generateMiddlewareStacks","_novip","_middlewares","tbl","setApiOnPlace","objs","tableNames","dbschema","propDesc","removeTablesApi","lowerVersionFirst","_cfg","version","runUpgraders","oldVersion","idbUpgradeTrans","globalSchema","_storeNames","rejectTransaction","queue","anyContentUpgraderHasRun","createTable","populate","versions","_versions","buildGlobalSchema","oldSchema","newSchema","adjustToExistingIndexNames","diff","getSchemaDiff","tuple","change","recreate","Upgrade","store_1","addIndex","deleteIndex","del","idxName","contentUpgrade","upgradeSchema_1","returnValue_1","contentUpgradeIsAsync_1","promiseFollowed","decrementor","storeName","deleteObjectStore","runQueue","contains","oldDef","newDef","def","oldIndexes","newIndexes","oldIdx","newIdx","createObjectStore","createIndex","j","idbindex","_hasGetAll","dexieName","indexSpec","WorkerGlobalScope","Version","_parseStoresSpec","stores","outSchema","indexNum","trim","replace","storesSource","storesSpec","_allTables","upgrade","upgradeFunction","getDbNamesTable","dbNamesDB","Dexie$1","addons","dbnames","hasDatabasesNative","databases","vip","dexieOpen","state","openCanceller","throwIfCancelled","intervalId","resolveDbReady","dbReadyResolve","upgradeTransaction","wasCreated","userAgentData","tryIdb","setInterval","clearInterval","dbName","autoSchema","round","verno","onblocked","_fireOnBlocked","onupgradeneeded","delreq","allowEmptyDB","close","deleteDatabase","NoSuchDatabase","oldVer","pow","ch","onversionchange","vcFired","onclose","onReadyBeingFired","ready","fireRemainders","remainders_1","awaitIterator","callNext","onSuccess","step","onError","throw","getNext","pad","virtualIndexMiddleware","level","indexLookup","allVirtualIndexes","addVirtualIndexes","keyTail","lowLevelIndex","keyPathAlias","indexList","keyLength","isVirtual","virtualIndex","translateRequest","createVirtualCursor","getObjectDiff","prfx","ap","bp","apTypeName","hooksMiddleware","downCore","downTable","dxTrans","deleting","creating","updating","addPutOrDelete","deleteNextChunk","effectiveKeys","existingValues","contexts","objectDiff","additionalChanges_1","requestedValue_1","existingValue","generatedPrimaryKey","getFromTransactionCache","cacheExistingValuesMiddleware","cachedResult","isEmptyRange","node","RangeSet","fromOrTree","d","addRange","left","right","r","rebalance","rightWasCutOff","mergeRanges","newSet","_addRangeSet","rangesOverlap","rangeSet1","rangeSet2","i1","getRangeSetIterator","nextResult1","i2","nextResult2","keyProvided","up","rootClone","_b","oldRootRight","computeDepth","rangeSet","addKey","addKeys","observabilityMiddleware","FULL_RANGE","getRange","_d","_c","tableClone","getRangeSet","mutatedParts","part","pkRangeSet","delsRangeSet","newObjs","oldCache","oldObjs","addKeyOrKeys","oldKey","newKey","readSubscribers","method","subscr","pkRangeSet_1","delsRangeSet_1","queriedIndex","queriedRanges","keysPromise_1","resultingKeys","pKeys","cursor_1","wantValues_1","pkey","versionNumber","versionInstance","_whenReady","use","unuse","mw","cancelOpen","hasArguments","doDelete","backendDB","hasBeenClosed","hasFailed","dynamicallyOpened","_tableArgs_","scopeFunc","_transaction","parentTransaction","idbMode","onlyIfCompatible","SubTransaction","enterTransaction","enterTransactionScope","returnValue","scopeFuncIsAsync","PrematureCommit","InvalidTable","deps","dependencies","bSticky","db_1","keyRangeGenerator","keyRange","whereCtx","readingHook","complete","wasActive","orCollection","_IDBKeyRange","newVersion","addon","symbolObservable","observable","Observable","_subscribe","extendObservabilitySet","liveQuery","querier","hasValue","currentValue","observer","closed","accumMuts","currentObs","subscription","mutationListener","querying","startedListening","shouldNotify","doQuery","exec","execute","getValue","domDeps","mozIndexedDB","webkitIndexedDB","msIndexedDB","webkitIDBKeyRange","propagateLocally","updateParts","wasMe","propagatingLocally","databaseName","exists","getDatabaseNames","infos","info","ignoreTransaction","async","generatorFn","spawn","currentTransaction","promiseOrFunction","optionalTimeout","delByKeyPath","minKey","semVer","maxKey","addEventListener","updatedParts","event_1","initCustomEvent","bc_1","swContainer","BroadcastChannel","unref","changedParts","postMessage","onmessage","data","localStorage","setItem","trig","random","matchAll","includeUncontrolled","client","parse","newValue","serviceWorker","domError","freeze","__proto__","default"],"mappings":"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"} \ No newline at end of file
diff --git a/ext/settings.html b/ext/settings.html
index 62e06e98..3b410cce 100644
--- a/ext/settings.html
+++ b/ext/settings.html
@@ -2033,9 +2033,13 @@
<div class="settings-item"><div class="settings-item-inner">
<div class="settings-item-left">
<div class="settings-item-label">
- Yomitan can import and export settings files which can be used to restore settings, share settings across devices, and to help to debug problems.
- These files will only contain settings and will not contain dictionaries.
- Dictionaries must be imported separately.
+ Yomitan can import and export settings files which can be
+ used to restore settings, share settings across devices,
+ and to help to debug problems. These files will only
+ contain settings and will not contain dictionaries.
+ Dictionaries must be imported separately. However, you can
+ also import a previously exported collection of
+ dictionaries. See the next section about that.
</div>
</div>
</div></div>
@@ -2055,6 +2059,52 @@
</div>
</div>
</div></div>
+ <div class="settings-item"><div class="settings-item-inner">
+ <div class="settings-item-left">
+ <div class="settings-item-label">
+ You can try to export the entire collection of your
+ dictionaries into a single large file that you can try to
+ import from other browsers or devices. Importing the
+ collection like that is a destructive operation and will
+ replace your current database of dictionaries so please
+ proceed with caution. These operations can take a lot of
+ time depending on the size of your database, especially to
+ start and to complete, so have patience.
+
+ <br><br>
+
+ See <a href="https://github.com/themoeway/yomichan-data-exporter" target="_blank" rel="noopener noreferrer">yomichan-data-exporter</a> for
+ instructions to export your data from older Yomichan installations.
+ </div>
+ </div>
+ </div></div>
+ <div class="settings-item"><div class="settings-item-inner">
+ <div class="settings-item-right settings-item-button-group-container">
+ <div class="settings-item-button-group">
+ <div class="settings-item-button-group-item">
+ <button class="low-emphasis" id="settings-import-db-button">Import Dictionary Collection</button>
+ <div hidden><input type="file" id="settings-import-db" accept=".json,application/json"></div>
+ </div>
+ <div class="settings-item-button-group-item">
+ <button class="low-emphasis" id="settings-export-db-button">Export Dictionary Collection</button>
+ </div>
+ </div>
+ </div>
+ </div></div>
+ <div class="settings-item"><div class="settings-item-inner">
+ <div class="settings-item-left">
+ <div class="settings-item-progress-report" id="db-ops-progress-report">
+ Placeholder text.
+ </div>
+ </div>
+ </div></div>
+ <div class="settings-item"><div class="settings-item-inner">
+ <div class="settings-item-left">
+ <div class="settings-item-error-report" id="db-ops-error-report">
+ Placeholder text.
+ </div>
+ </div>
+ </div></div>
</div>
<!-- Accessibility -->
@@ -3803,6 +3853,13 @@
<!-- Scripts -->
+<script src="/lib/dexie.min.js"></script>
+
+<!-- The linter enforces a lexicographical order for each 'group' of imported scripts as demarked by newline between groups
+ but this extension to dexie must be loaded after the main dexie library, hence breaking it out into its own group.
+ Perhaps The linter could be smarter and ignore 3p libaries for import order. -->
+<script src="/lib/dexie-export-import.min.js"></script>
+
<script src="/lib/wanakana.min.js"></script>
<script src="/js/core.js"></script>
diff --git a/ext/welcome.html b/ext/welcome.html
index f5725f23..bfa3cefd 100644
--- a/ext/welcome.html
+++ b/ext/welcome.html
@@ -67,6 +67,16 @@
</div>
<div class="settings-item">
<div class="settings-item-inner"><div class="settings-item-left"><div class="settings-item-label">
+ You can also import an exported collection of dictionaries to migrate from a different device or browser from the <a href="/settings.html#!backup">Backup section of the Settings</a> page.
+
+ <br><br>
+
+ If you are migrating from Yomichan, you may be particularly interested in migrating your data from Yomichan into Yomitan.
+ Please follow instructions from <a href="https://github.com/themoeway/yomitan#migrating-from-yomichan" target="_blank" rel="noopener noreferrer">Yomitan's README</a> for that.
+ </div></div></div>
+ </div>
+ <div class="settings-item">
+ <div class="settings-item-inner"><div class="settings-item-left"><div class="settings-item-label">
After dictionaries have been installed, webpage text can be scanned by moving the cursor while holding a modifier key.
The default key is <kbd>Shift</kbd>, which can be disabled or configured below.
</div></div></div>