firebird-wasm 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +35 -0
- package/dist/.tsbuildinfo.build +1 -1
- package/dist/browser/firebird-browser.d.ts +54 -2
- package/dist/browser/firebird-browser.d.ts.map +1 -1
- package/dist/browser/firebird-browser.js +102 -17
- package/dist/browser/firebird-browser.js.map +1 -1
- package/dist/browser/index.d.ts +4 -0
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.js +5 -1
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/leader-election.d.ts +55 -0
- package/dist/browser/leader-election.d.ts.map +1 -0
- package/dist/browser/leader-election.js +64 -0
- package/dist/browser/leader-election.js.map +1 -0
- package/dist/browser/shared-transport.d.ts +128 -0
- package/dist/browser/shared-transport.d.ts.map +1 -0
- package/dist/browser/shared-transport.js +339 -0
- package/dist/browser/shared-transport.js.map +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,41 @@ All notable changes to `firebird-wasm`. This project follows
|
|
|
4
4
|
[semantic versioning](https://semver.org/); while the major version is 0 the
|
|
5
5
|
API may still move between minor releases.
|
|
6
6
|
|
|
7
|
+
## 0.2.0
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **`multiTab: 'shared'` — many tabs, one engine.** Previously a second tab on
|
|
12
|
+
the same database was refused; it can now be served. One tab wins the same
|
|
13
|
+
Web Lock that already provided multi-tab safety and runs the engine; the
|
|
14
|
+
others proxy their calls to it over a `BroadcastChannel` and never
|
|
15
|
+
instantiate an engine at all. `worker` accepts a factory for this reason —
|
|
16
|
+
a follower must not download and start a 9 MB engine it will never use.
|
|
17
|
+
|
|
18
|
+
Chosen over a `SharedWorker` owning the engine: this reuses machinery already
|
|
19
|
+
built and works anywhere Web Locks do, without depending on a SharedWorker
|
|
20
|
+
being able to spawn the nested Workers that pthreads require.
|
|
21
|
+
|
|
22
|
+
- **`FirebirdBrowser.isLeader`** — whether this tab runs the engine. Useful for
|
|
23
|
+
work that should happen once per application rather than once per tab, such
|
|
24
|
+
as a migration.
|
|
25
|
+
|
|
26
|
+
### Unchanged
|
|
27
|
+
|
|
28
|
+
- The compiled engine is byte-identical to 0.1.1 — every change in this release
|
|
29
|
+
is TypeScript. Nothing under `wasm/` was touched.
|
|
30
|
+
|
|
31
|
+
### Notes on failover
|
|
32
|
+
|
|
33
|
+
When the leading tab disappears the lock releases, a follower is promoted and
|
|
34
|
+
starts its own engine from the last persisted image, and every tab re-attaches
|
|
35
|
+
to it. A call in flight at that moment is treated according to what it is: a
|
|
36
|
+
read is re-issued, since running a query twice is indistinguishable from
|
|
37
|
+
running it once; a write is rejected with an error stating its outcome is
|
|
38
|
+
unknown, because the old leader may have committed it and died before replying.
|
|
39
|
+
Retrying it could apply it twice, and an error a caller can see beats a
|
|
40
|
+
duplicate row it cannot.
|
|
41
|
+
|
|
7
42
|
## 0.1.1
|
|
8
43
|
|
|
9
44
|
### Fixed
|
package/dist/.tsbuildinfo.build
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/node-firebird-driver/dist/lib/index.d.ts","../../../node_modules/node-firebird-driver/dist/lib/impl/blob.d.ts","../../../node_modules/node-firebird-driver/dist/lib/impl/client.d.ts","../../../node_modules/node-firebird-driver/dist/lib/impl/transaction.d.ts","../../../node_modules/node-firebird-driver/dist/lib/impl/statement.d.ts","../../../node_modules/node-firebird-driver/dist/lib/impl/resultset.d.ts","../../../node_modules/node-firebird-driver/dist/lib/impl/events.d.ts","../../../node_modules/node-firebird-driver/dist/lib/impl/attachment.d.ts","../../../node_modules/node-firebird-driver/dist/lib/impl/date-time.d.ts","../../../node_modules/node-firebird-driver/dist/lib/impl/fb-util.d.ts","../../../node_modules/node-firebird-driver/dist/lib/impl/time-zones.d.ts","../../../node_modules/node-firebird-driver/dist/lib/impl/index.d.ts","../../../node_modules/node-firebird-native-api/dist/lib/cloop-gen.d.ts","../../../node_modules/node-firebird-native-api/dist/lib/index.d.ts","../../../node_modules/node-firebird-driver-native/dist/lib/transaction.d.ts","../../../node_modules/node-firebird-driver-native/dist/lib/blob.d.ts","../../../node_modules/node-firebird-driver-native/dist/lib/resultset.d.ts","../../../node_modules/node-firebird-driver-native/dist/lib/fb-util.d.ts","../../../node_modules/node-firebird-driver-native/dist/lib/statement.d.ts","../../../node_modules/node-firebird-driver-native/dist/lib/events.d.ts","../../../node_modules/node-firebird-driver-native/dist/lib/attachment.d.ts","../../../node_modules/node-firebird-driver-native/dist/lib/client.d.ts","../../../node_modules/node-firebird-driver-native/dist/lib/index.d.ts","../src/types.ts","../src/firebird.ts","../src/wasm-loader.ts","../src/index.ts","../src/browser/db-lock.ts","../src/browser/isolation.ts","../src/browser/params.ts","../src/browser/field-types.ts","../src/browser/engine-transport.ts","../src/browser/indexeddb-vfs.ts","../src/browser/worker-protocol.ts","../src/browser/worker-transport.ts","../src/browser/sql-script.ts","../src/browser/firebird-browser.ts","../src/browser/worker-entry.ts","../src/browser/index.ts","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/node/compatibility/disposable.d.ts","../../../node_modules/@types/node/compatibility/indexable.d.ts","../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/@types/node/compatibility/index.d.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/file.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/filereader.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/graceful-fs/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@jest/expect-utils/build/index.d.ts","../../../node_modules/chalk/index.d.ts","../../../node_modules/@sinclair/typebox/typebox.d.ts","../../../node_modules/@jest/schemas/build/index.d.ts","../../../node_modules/pretty-format/build/index.d.ts","../../../node_modules/jest-diff/build/index.d.ts","../../../node_modules/jest-matcher-utils/build/index.d.ts","../../../node_modules/expect/build/index.d.ts","../../../node_modules/@types/jest/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileIdsList":[[86,97,143],[97,143],[97,143,198],[86,87,88,89,90,97,143],[86,88,97,143],[97,143,155,191],[97,143,193],[97,143,194],[97,143,200,203],[97,140,143],[97,142,143],[143],[97,143,148,176],[97,143,144,149,154,162,173,184],[97,143,144,145,154,162],[92,93,94,97,143],[97,143,146,185],[97,143,147,148,155,163],[97,143,148,173,181],[97,143,149,151,154,162],[97,142,143,150],[97,143,151,152],[97,143,153,154],[97,142,143,154],[97,143,154,155,156,173,184],[97,143,154,155,156,169,173,176],[97,143,151,154,157,162,173,184],[97,143,154,155,157,158,162,173,181,184],[97,143,157,159,173,181,184],[95,96,97,98,99,100,101,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190],[97,143,154,160],[97,143,161,184,189],[97,143,151,154,162,173],[97,143,163],[97,143,164],[97,142,143,165],[97,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190],[97,143,167],[97,143,168],[97,143,154,169,170],[97,143,169,171,185,187],[97,143,154,173,174,176],[97,143,175,176],[97,143,173,174],[97,143,176],[97,143,177],[97,140,143,173,178],[97,143,154,179,180],[97,143,179,180],[97,143,148,162,173,181],[97,143,182],[97,143,162,183],[97,143,157,168,184],[97,143,148,185],[97,143,173,186],[97,143,161,187],[97,143,188],[97,138,143],[97,138,143,154,156,165,173,176,184,187,189],[97,143,173,190],[97,143,206],[97,143,196,202],[97,143,200],[97,143,197,201],[47,58,60,61,62,65,66,68,97,143],[47,58,60,61,67,97,143],[47,58,60,67,97,143],[58,60,67,97,143],[58,60,97,143],[47,68,97,143],[47,58,60,61,65,97,143],[47,58,60,61,63,64,67,97,143],[47,48,49,50,51,52,53,97,143],[47,54,97,143],[47,97,143],[48,49,50,51,52,53,54,55,56,57,97,143],[47,50,51,97,143],[47,50,52,54,97,143],[59,97,143],[97,143,199],[97,110,114,143,184],[97,110,143,173,184],[97,105,143],[97,107,110,143,181,184],[97,143,162,181],[97,143,191],[97,105,143,191],[97,107,110,143,162,184],[97,102,103,106,109,143,154,173,184],[97,110,117,143],[97,102,108,143],[97,110,131,132,143],[97,106,110,143,176,184,191],[97,131,143,191],[97,104,105,143,191],[97,110,143],[97,104,105,106,107,108,109,110,111,112,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,132,133,134,135,136,137,143],[97,110,125,143],[97,110,117,118,143],[97,108,110,118,119,143],[97,109,143],[97,102,105,110,143],[97,110,114,118,119,143],[97,114,143],[97,108,110,113,143,184],[97,102,107,110,117,143],[97,143,173],[97,105,110,131,143,189,191],[70,72,75,76,77,97,143],[70,97,143],[70,74,75,78,79,81,82,97,143],[70,72,74,75,76,77,78,79,80,81,82,83,84,97,143],[78,80,97,143],[70,78,97,143],[70,78,80,97,143],[47,69,70,97,143],[70,71,72,97,143]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"9ff5b372e49ac48b97d4d944a517f698e95f7845b4b5472f3cc9761dfa955de6","impliedFormat":1},{"version":"3ae36c94942890fa3fe63139f047289ff937d192708db5a00683dab039f039ed","impliedFormat":1},{"version":"e2e52ec05c323a13477932ebe5c0a077bb49df132bd80e69833d8721562ca44e","impliedFormat":1},{"version":"f00caac0072dce57af99520fdde8bc21aa221345c98bf44df54f3b43ae8e51a3","impliedFormat":1},{"version":"27e70630a751f231215e11af7cdcc843b8dc0ba489dba0f5192094798f18a6b5","impliedFormat":1},{"version":"d22795273df19428090c1e3048261a2029bc683a320825a12466a95975ffddad","impliedFormat":1},{"version":"b12dd332faeb738dc1bcb65a76c66ea626238cd2d392d9dae763a41de08d54b4","impliedFormat":1},{"version":"c66f5af58fcc5bcbb50370b7fca6bd94695bcd9171f456befb856789960f617a","impliedFormat":1},{"version":"ad561cf41174f8187ad94eba2624750c563db6fac55c2dc3f771fa6fe6f53593","impliedFormat":1},{"version":"6c2f3d21fd4bdbe221808601f0ec42500eb1c1e9ec6c95f479885028cb567d80","impliedFormat":1},{"version":"1b9398b21e7be3e9ab1528167ebd7404611fad0d3bd0179dca4c53abde0d63ad","impliedFormat":1},{"version":"cb0838f5b9ab31b179ab5be069b6b8fb9a78f710f1985e5e0605d8a5787b3167","impliedFormat":1},{"version":"53c209c18880540716796eb3786e2c667cbfc90de1644f7f2ea39b62830def03","impliedFormat":1},{"version":"8568ecc922854d78cb64a68b019b36a0a3999237d04fd40c0f8badd22ea61f43","impliedFormat":1},{"version":"eb8a20e5b567cd7561d5348f95f949fca88e66b8d33e5c8440dd54760aff931b","impliedFormat":1},{"version":"52bdd70e2b4e11e64849a58af04f219f5302084c7c737e7d851dc1b0b02ff33c","impliedFormat":1},{"version":"a88134b71622bb4f9354bc75e71922bde4a624da809fc0e81f0d49ce6395dbc0","impliedFormat":1},{"version":"bc13bd874e69d67e51a73cfbb082330a2a8f8957f301c62d41472822af545488","impliedFormat":1},{"version":"63ec3eeda99e2fc55ce84cb1661ac44fb89979b02d7017ce9396705fabbc936c","impliedFormat":1},{"version":"6fda21fa91b22db409e90c72751b184297539ecb1bf15cc9f1fb96d50cbab59a","impliedFormat":1},{"version":"bb32eba613881313dd9fe7de76d27ec7c1d6ebfcdfb08a547618bbcabe5a7fe4","impliedFormat":1},{"version":"1e4742c828d80621e08aeb0310061421ea4deba37a1dfdf90e51d124e6f05ef6","impliedFormat":1},{"version":"87927fcbc026836aaed1b87f3ad71bfe73c7677f0dd0ff86a9d9dfa953a76893","impliedFormat":1},{"version":"11a4c7fc0c13d7bb3c3e0da32ee113218f67fc6459a679ef1602a2dc680a7c30","signature":"ec25981a51991f7c7e0311b4fef2bceac7c1913d8ca73dd2594f50397b49e003"},{"version":"29cb838cbd4b95448a3190f2e8ecacf7b57c81788f5277823bee0d2a101eee60","signature":"5e58e672a4854331de75ebcc3266112b8e71ec9f68378574cc53a50bf6614721"},{"version":"3022edeb6436d7015a96f741c405693520d4331d50a3dbd52f98b6adf44349ea","signature":"3b6ef539558957ca28aafba8310fbbbe485b28e80d658b53c823ba59e0cb35b5"},{"version":"095025f7100f7eae7effc68d13c07c5069d23ea45c08da3e29c2a361a068cecb","signature":"d113c12172a066650fd7cdadb1121d1e32904d46e851c3276f6cf567e37e78df"},{"version":"4219e671509afe7eadefd4af32ae6cfdc90d8d36cbf2c1ca10d200ae4fe7036b","signature":"9295082a94b27839a0d4de846c8746f30902a5f0e0c2170282acb9b05023d0f1"},{"version":"74336d0fdb6781d232c4acf16ce67577d49fb1ef2a31f2d6cc943a2d6d36173f","signature":"e5007492ffa9adf370edd1b0539cc8fb3bcfd5939a6d88cbd9c48db04c966789"},{"version":"0cabba969d4a172cf9f352086e88ca7384a6007d895f3a2e3b9e5ca298f695f3","signature":"4d2502cea1bd4b23751ac64d3072adc8507eab4ee09df7bd20de0cfdc8a6baba"},{"version":"f89e41c0d72512a632fdcb20b5cd1d59be7a765c2935ec0d723b6b9e2366aab0","signature":"cdf056bbe9951048b6ac874a66b34b690b71fc0b2dd1c0c44acfd5692f2b1cc3"},{"version":"8d28d242f85c4fc52625104bd2c69ec4d98754b75bea6c1914dc972f6496ae67","signature":"01d557e0916ed151e470dfbffda15767d9e411fce87d3fb5e405979d367a15a2"},{"version":"3f7ff78b6dc30d6c07647ce842ba71c93e6aaa1abbcc6b32e6ad137dbfc44629","signature":"cb4d745dd3587102e25c797b46b8fc5d161a5e7f845f485afa7f2b1c2ded8b7f"},{"version":"5b7e2d61bcbed74261f4d97cb1b8966a444baf3d82683dce9d103388a1b455e9","signature":"6986ab271c92b942bb12ce714cd8cf311b9d3c14aea1e034efdf7ec69820b18e"},{"version":"c2f6a742418cd3ebbef11df4a167827089277b22a7e206356c3fedaa07e1ff92","signature":"d365c150444155c569d62c0920cb1f4305e1cd219fb8cda296b1aeff9316f1cb"},{"version":"667053a48fc48299dc265dd5f0e1898688e507c3a86545760d908c262a1ff783","signature":"09f90af4ae7c7393a1b1fb59494923f4d8299cc19f68bb5ce74c2333512b5ff3"},{"version":"86591c2cf1f480021063343df541d9d13e55b5412f60f1b1e5ce697acd50a59d","signature":"82987ab279e082d306c96e85e0cdf4d896621019f8169751a4836dcf318c6e0c"},{"version":"0ffa1e6eed191c24f66f7cea31d54dd3a6f3342f2972e98ad84c97ef204e7b6d","signature":"5fba6391bda9548a9eadae2ab51fd8a02d8a03c17313770bd0f0f70f64c5f85b"},{"version":"788d76e583070b8d19c2a3db9cee096f0a4d41de023aec91c206431921686e3c","signature":"044d03e8b8ecee40a34c7eabcd70c5e3f8cfa0001818eeb4a8c2a07b6c129191"},{"version":"556ccd493ec36c7d7cb130d51be66e147b91cc1415be383d71da0f1e49f742a9","impliedFormat":1},{"version":"b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","impliedFormat":1},{"version":"95aba78013d782537cc5e23868e736bec5d377b918990e28ed56110e3ae8b958","impliedFormat":1},{"version":"670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","impliedFormat":1},{"version":"13b77ab19ef7aadd86a1e54f2f08ea23a6d74e102909e3c00d31f231ed040f62","impliedFormat":1},{"version":"069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"ba481bca06f37d3f2c137ce343c7d5937029b2468f8e26111f3c9d9963d6568d","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d9ef24f9a22a88e3e9b3b3d8c40ab1ddb0853f1bfbd5c843c37800138437b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2677634fe27e87348825bb041651e22d50a613e2fdf6a4a3ade971d71bac37e","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"8c0bcd6c6b67b4b503c11e91a1fb91522ed585900eab2ab1f61bba7d7caa9d6f","impliedFormat":1},{"version":"8cd19276b6590b3ebbeeb030ac271871b9ed0afc3074ac88a94ed2449174b776","affectsGlobalScope":true,"impliedFormat":1},{"version":"696eb8d28f5949b87d894b26dc97318ef944c794a9a4e4f62360cd1d1958014b","impliedFormat":1},{"version":"3f8fa3061bd7402970b399300880d55257953ee6d3cd408722cb9ac20126460c","impliedFormat":1},{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"68bd56c92c2bd7d2339457eb84d63e7de3bd56a69b25f3576e1568d21a162398","affectsGlobalScope":true,"impliedFormat":1},{"version":"3e93b123f7c2944969d291b35fed2af79a6e9e27fdd5faa99748a51c07c02d28","impliedFormat":1},{"version":"9d19808c8c291a9010a6c788e8532a2da70f811adb431c97520803e0ec649991","impliedFormat":1},{"version":"87aad3dd9752067dc875cfaa466fc44246451c0c560b820796bdd528e29bef40","impliedFormat":1},{"version":"4aacb0dd020eeaef65426153686cc639a78ec2885dc72ad220be1d25f1a439df","impliedFormat":1},{"version":"f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45","impliedFormat":1},{"version":"8db0ae9cb14d9955b14c214f34dae1b9ef2baee2fe4ce794a4cd3ac2531e3255","affectsGlobalScope":true,"impliedFormat":1},{"version":"15fc6f7512c86810273af28f224251a5a879e4261b4d4c7e532abfbfc3983134","impliedFormat":1},{"version":"58adba1a8ab2d10b54dc1dced4e41f4e7c9772cbbac40939c0dc8ce2cdb1d442","impliedFormat":1},{"version":"641942a78f9063caa5d6b777c99304b7d1dc7328076038c6d94d8a0b81fc95c1","impliedFormat":1},{"version":"714435130b9015fae551788df2a88038471a5a11eb471f27c4ede86552842bc9","impliedFormat":1},{"version":"855cd5f7eb396f5f1ab1bc0f8580339bff77b68a770f84c6b254e319bbfd1ac7","impliedFormat":1},{"version":"5650cf3dace09e7c25d384e3e6b818b938f68f4e8de96f52d9c5a1b3db068e86","impliedFormat":1},{"version":"1354ca5c38bd3fd3836a68e0f7c9f91f172582ba30ab15bb8c075891b91502b7","affectsGlobalScope":true,"impliedFormat":1},{"version":"27fdb0da0daf3b337c5530c5f266efe046a6ceb606e395b346974e4360c36419","impliedFormat":1},{"version":"2d2fcaab481b31a5882065c7951255703ddbe1c0e507af56ea42d79ac3911201","impliedFormat":1},{"version":"a192fe8ec33f75edbc8d8f3ed79f768dfae11ff5735e7fe52bfa69956e46d78d","impliedFormat":1},{"version":"ca867399f7db82df981d6915bcbb2d81131d7d1ef683bc782b59f71dda59bc85","affectsGlobalScope":true,"impliedFormat":1},{"version":"372413016d17d804e1d139418aca0c68e47a83fb6669490857f4b318de8cccb3","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","impliedFormat":1},{"version":"b4f70ec656a11d570e1a9edce07d118cd58d9760239e2ece99306ee9dfe61d02","impliedFormat":1},{"version":"3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","impliedFormat":1},{"version":"6e70e9570e98aae2b825b533aa6292b6abd542e8d9f6e9475e88e1d7ba17c866","impliedFormat":1},{"version":"f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","impliedFormat":1},{"version":"47ab634529c5955b6ad793474ae188fce3e6163e3a3fb5edd7e0e48f14435333","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"fad4e3c207fe23922d0b2d06b01acbfb9714c4f2685cf80fd384c8a100c82fd0","affectsGlobalScope":true,"impliedFormat":1},{"version":"74cf591a0f63db318651e0e04cb55f8791385f86e987a67fd4d2eaab8191f730","impliedFormat":1},{"version":"5eab9b3dc9b34f185417342436ec3f106898da5f4801992d8ff38ab3aff346b5","impliedFormat":1},{"version":"12ed4559eba17cd977aa0db658d25c4047067444b51acfdcbf38470630642b23","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3ffabc95802521e1e4bcba4c88d8615176dc6e09111d920c7a213bdda6e1d65","impliedFormat":1},{"version":"809821b8a065e3234a55b3a9d7846231ed18d66dd749f2494c66288d890daf7f","impliedFormat":1},{"version":"ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","impliedFormat":1},{"version":"a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9","impliedFormat":1},{"version":"c3b41e74b9a84b88b1dca61ec39eee25c0dbc8e7d519ba11bb070918cfacf656","affectsGlobalScope":true,"impliedFormat":1},{"version":"4737a9dc24d0e68b734e6cfbcea0c15a2cfafeb493485e27905f7856988c6b29","affectsGlobalScope":true,"impliedFormat":1},{"version":"36d8d3e7506b631c9582c251a2c0b8a28855af3f76719b12b534c6edf952748d","impliedFormat":1},{"version":"1ca69210cc42729e7ca97d3a9ad48f2e9cb0042bada4075b588ae5387debd318","impliedFormat":1},{"version":"f5ebe66baaf7c552cfa59d75f2bfba679f329204847db3cec385acda245e574e","impliedFormat":1},{"version":"ed59add13139f84da271cafd32e2171876b0a0af2f798d0c663e8eeb867732cf","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7c5e2ea4a9749097c347454805e933844ed207b6eefec6b7cfd418b5f5f7b28","impliedFormat":1},{"version":"b1810689b76fd473bd12cc9ee219f8e62f54a7d08019a235d07424afbf074d25","impliedFormat":1},{"version":"afe73051ff6a03a9565cbd8ebb0e956ee3df5e913ad5c1ded64218aabfa3dcb5","impliedFormat":1},{"version":"035a5df183489c2e22f3cf59fc1ed2b043d27f357eecc0eb8d8e840059d44245","impliedFormat":1},{"version":"a4809f4d92317535e6b22b01019437030077a76fec1d93b9881c9ed4738fcc54","impliedFormat":1},{"version":"5f53fa0bd22096d2a78533f94e02c899143b8f0f9891a46965294ee8b91a9434","impliedFormat":1},{"version":"cdcc132f207d097d7d3aa75615ab9a2e71d6a478162dde8b67f88ea19f3e54de","impliedFormat":1},{"version":"0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","impliedFormat":1},{"version":"e1028394c1cf96d5d057ecc647e31e457b919092f882ed0c7092152b077fed9d","impliedFormat":1},{"version":"f315e1e65a1f80992f0509e84e4ae2df15ecd9ef73df975f7c98813b71e4c8da","impliedFormat":1},{"version":"5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","impliedFormat":1},{"version":"3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","impliedFormat":1},{"version":"ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","impliedFormat":1},{"version":"d96cc6598148bf1a98fb2e8dcf01c63a4b3558bdaec6ef35e087fd0562eb40ec","impliedFormat":1},{"version":"f8db4fea512ab759b2223b90ecbbe7dae919c02f8ce95ec03f7fb1cf757cfbeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab82804a14454734010dcdcd43f564ff7b0389bee4c5692eec76ff5b30d4cf66","impliedFormat":1},{"version":"bae8d023ef6b23df7da26f51cea44321f95817c190342a36882e93b80d07a960","impliedFormat":1},{"version":"26a770cec4bd2e7dbba95c6e536390fffe83c6268b78974a93727903b515c4e7","impliedFormat":1}],"root":[[70,85]],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"module":1,"outDir":"./","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":7,"tsBuildInfoFile":"./.tsbuildinfo.build"},"referencedMap":[[88,1],[86,2],[196,2],[199,3],[198,2],[91,4],[87,1],[89,5],[90,1],[192,6],[193,2],[194,7],[195,8],[204,9],[140,10],[141,10],[142,11],[97,12],[143,13],[144,14],[145,15],[92,2],[95,16],[93,2],[94,2],[146,17],[147,18],[148,19],[149,20],[150,21],[151,22],[152,22],[153,23],[154,24],[155,25],[156,26],[98,2],[96,2],[157,27],[158,28],[159,29],[191,30],[160,31],[161,32],[162,33],[163,34],[164,35],[165,36],[166,37],[167,38],[168,39],[169,40],[170,40],[171,41],[172,2],[173,42],[175,43],[174,44],[176,45],[177,46],[178,47],[179,48],[180,49],[181,50],[182,51],[183,52],[184,53],[185,54],[186,55],[187,56],[188,57],[99,2],[100,2],[101,2],[139,58],[189,59],[190,60],[205,2],[206,2],[207,61],[197,2],[203,62],[201,63],[202,64],[67,65],[62,66],[68,67],[66,68],[64,69],[69,70],[63,71],[65,72],[61,67],[54,73],[48,74],[49,74],[55,2],[53,74],[56,75],[58,76],[52,77],[51,78],[57,2],[50,74],[47,2],[59,2],[60,79],[200,80],[45,2],[46,2],[8,2],[10,2],[9,2],[2,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[3,2],[19,2],[20,2],[4,2],[21,2],[25,2],[22,2],[23,2],[24,2],[26,2],[27,2],[28,2],[5,2],[29,2],[30,2],[31,2],[32,2],[6,2],[36,2],[33,2],[34,2],[35,2],[37,2],[7,2],[38,2],[43,2],[44,2],[39,2],[40,2],[41,2],[42,2],[1,2],[117,81],[127,82],[116,81],[137,83],[108,84],[107,85],[136,86],[130,87],[135,88],[110,89],[124,90],[109,91],[133,92],[105,93],[104,86],[134,94],[106,95],[111,96],[112,2],[115,96],[102,2],[138,97],[128,98],[119,99],[120,100],[122,101],[118,102],[121,103],[131,86],[113,104],[114,105],[123,106],[103,107],[126,98],[125,96],[129,2],[132,108],[74,2],[78,109],[77,110],[83,111],[85,112],[79,2],[75,110],[76,110],[82,2],[84,113],[80,114],[81,115],[71,116],[73,117],[70,2],[72,2]],"latestChangedDtsFile":"./browser/isolation.d.ts","version":"5.9.3"}
|
|
1
|
+
{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/node-firebird-driver/dist/lib/index.d.ts","../../../node_modules/node-firebird-driver/dist/lib/impl/blob.d.ts","../../../node_modules/node-firebird-driver/dist/lib/impl/client.d.ts","../../../node_modules/node-firebird-driver/dist/lib/impl/transaction.d.ts","../../../node_modules/node-firebird-driver/dist/lib/impl/statement.d.ts","../../../node_modules/node-firebird-driver/dist/lib/impl/resultset.d.ts","../../../node_modules/node-firebird-driver/dist/lib/impl/events.d.ts","../../../node_modules/node-firebird-driver/dist/lib/impl/attachment.d.ts","../../../node_modules/node-firebird-driver/dist/lib/impl/date-time.d.ts","../../../node_modules/node-firebird-driver/dist/lib/impl/fb-util.d.ts","../../../node_modules/node-firebird-driver/dist/lib/impl/time-zones.d.ts","../../../node_modules/node-firebird-driver/dist/lib/impl/index.d.ts","../../../node_modules/node-firebird-native-api/dist/lib/cloop-gen.d.ts","../../../node_modules/node-firebird-native-api/dist/lib/index.d.ts","../../../node_modules/node-firebird-driver-native/dist/lib/transaction.d.ts","../../../node_modules/node-firebird-driver-native/dist/lib/blob.d.ts","../../../node_modules/node-firebird-driver-native/dist/lib/resultset.d.ts","../../../node_modules/node-firebird-driver-native/dist/lib/fb-util.d.ts","../../../node_modules/node-firebird-driver-native/dist/lib/statement.d.ts","../../../node_modules/node-firebird-driver-native/dist/lib/events.d.ts","../../../node_modules/node-firebird-driver-native/dist/lib/attachment.d.ts","../../../node_modules/node-firebird-driver-native/dist/lib/client.d.ts","../../../node_modules/node-firebird-driver-native/dist/lib/index.d.ts","../src/types.ts","../src/firebird.ts","../src/wasm-loader.ts","../src/index.ts","../src/browser/db-lock.ts","../src/browser/isolation.ts","../src/browser/params.ts","../src/browser/field-types.ts","../src/browser/engine-transport.ts","../src/browser/indexeddb-vfs.ts","../src/browser/worker-protocol.ts","../src/browser/worker-transport.ts","../src/browser/sql-script.ts","../src/browser/leader-election.ts","../src/browser/shared-transport.ts","../src/browser/firebird-browser.ts","../src/browser/worker-entry.ts","../src/browser/index.ts","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/node/compatibility/disposable.d.ts","../../../node_modules/@types/node/compatibility/indexable.d.ts","../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/@types/node/compatibility/index.d.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/file.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/filereader.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/graceful-fs/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@jest/expect-utils/build/index.d.ts","../../../node_modules/chalk/index.d.ts","../../../node_modules/@sinclair/typebox/typebox.d.ts","../../../node_modules/@jest/schemas/build/index.d.ts","../../../node_modules/pretty-format/build/index.d.ts","../../../node_modules/jest-diff/build/index.d.ts","../../../node_modules/jest-matcher-utils/build/index.d.ts","../../../node_modules/expect/build/index.d.ts","../../../node_modules/@types/jest/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileIdsList":[[88,99,145],[99,145],[99,145,200],[88,89,90,91,92,99,145],[88,90,99,145],[99,145,157,193],[99,145,195],[99,145,196],[99,145,202,205],[99,142,145],[99,144,145],[145],[99,145,150,178],[99,145,146,151,156,164,175,186],[99,145,146,147,156,164],[94,95,96,99,145],[99,145,148,187],[99,145,149,150,157,165],[99,145,150,175,183],[99,145,151,153,156,164],[99,144,145,152],[99,145,153,154],[99,145,155,156],[99,144,145,156],[99,145,156,157,158,175,186],[99,145,156,157,158,171,175,178],[99,145,153,156,159,164,175,186],[99,145,156,157,159,160,164,175,183,186],[99,145,159,161,175,183,186],[97,98,99,100,101,102,103,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192],[99,145,156,162],[99,145,163,186,191],[99,145,153,156,164,175],[99,145,165],[99,145,166],[99,144,145,167],[99,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192],[99,145,169],[99,145,170],[99,145,156,171,172],[99,145,171,173,187,189],[99,145,156,175,176,178],[99,145,177,178],[99,145,175,176],[99,145,178],[99,145,179],[99,142,145,175,180],[99,145,156,181,182],[99,145,181,182],[99,145,150,164,175,183],[99,145,184],[99,145,164,185],[99,145,159,170,186],[99,145,150,187],[99,145,175,188],[99,145,163,189],[99,145,190],[99,140,145],[99,140,145,156,158,167,175,178,186,189,191],[99,145,175,192],[99,145,208],[99,145,198,204],[99,145,202],[99,145,199,203],[47,58,60,61,62,65,66,68,99,145],[47,58,60,61,67,99,145],[47,58,60,67,99,145],[58,60,67,99,145],[58,60,99,145],[47,68,99,145],[47,58,60,61,65,99,145],[47,58,60,61,63,64,67,99,145],[47,48,49,50,51,52,53,99,145],[47,54,99,145],[47,99,145],[48,49,50,51,52,53,54,55,56,57,99,145],[47,50,51,99,145],[47,50,52,54,99,145],[59,99,145],[99,145,201],[99,112,116,145,186],[99,112,145,175,186],[99,107,145],[99,109,112,145,183,186],[99,145,164,183],[99,145,193],[99,107,145,193],[99,109,112,145,164,186],[99,104,105,108,111,145,156,175,186],[99,112,119,145],[99,104,110,145],[99,112,133,134,145],[99,108,112,145,178,186,193],[99,133,145,193],[99,106,107,145,193],[99,112,145],[99,106,107,108,109,110,111,112,113,114,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,134,135,136,137,138,139,145],[99,112,127,145],[99,112,119,120,145],[99,110,112,120,121,145],[99,111,145],[99,104,107,112,145],[99,112,116,120,121,145],[99,116,145],[99,110,112,115,145,186],[99,104,109,112,119,145],[99,145,175],[99,107,112,133,145,191,193],[70,72,75,76,77,99,145],[70,99,145],[70,74,75,78,79,81,82,84,99,145],[70,72,74,75,76,77,78,79,80,81,82,83,84,85,86,99,145],[74,99,145],[70,78,83,99,145],[78,80,99,145],[70,78,99,145],[70,78,80,99,145],[47,69,70,99,145],[70,71,72,99,145]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"9ff5b372e49ac48b97d4d944a517f698e95f7845b4b5472f3cc9761dfa955de6","impliedFormat":1},{"version":"3ae36c94942890fa3fe63139f047289ff937d192708db5a00683dab039f039ed","impliedFormat":1},{"version":"e2e52ec05c323a13477932ebe5c0a077bb49df132bd80e69833d8721562ca44e","impliedFormat":1},{"version":"f00caac0072dce57af99520fdde8bc21aa221345c98bf44df54f3b43ae8e51a3","impliedFormat":1},{"version":"27e70630a751f231215e11af7cdcc843b8dc0ba489dba0f5192094798f18a6b5","impliedFormat":1},{"version":"d22795273df19428090c1e3048261a2029bc683a320825a12466a95975ffddad","impliedFormat":1},{"version":"b12dd332faeb738dc1bcb65a76c66ea626238cd2d392d9dae763a41de08d54b4","impliedFormat":1},{"version":"c66f5af58fcc5bcbb50370b7fca6bd94695bcd9171f456befb856789960f617a","impliedFormat":1},{"version":"ad561cf41174f8187ad94eba2624750c563db6fac55c2dc3f771fa6fe6f53593","impliedFormat":1},{"version":"6c2f3d21fd4bdbe221808601f0ec42500eb1c1e9ec6c95f479885028cb567d80","impliedFormat":1},{"version":"1b9398b21e7be3e9ab1528167ebd7404611fad0d3bd0179dca4c53abde0d63ad","impliedFormat":1},{"version":"cb0838f5b9ab31b179ab5be069b6b8fb9a78f710f1985e5e0605d8a5787b3167","impliedFormat":1},{"version":"53c209c18880540716796eb3786e2c667cbfc90de1644f7f2ea39b62830def03","impliedFormat":1},{"version":"8568ecc922854d78cb64a68b019b36a0a3999237d04fd40c0f8badd22ea61f43","impliedFormat":1},{"version":"eb8a20e5b567cd7561d5348f95f949fca88e66b8d33e5c8440dd54760aff931b","impliedFormat":1},{"version":"52bdd70e2b4e11e64849a58af04f219f5302084c7c737e7d851dc1b0b02ff33c","impliedFormat":1},{"version":"a88134b71622bb4f9354bc75e71922bde4a624da809fc0e81f0d49ce6395dbc0","impliedFormat":1},{"version":"bc13bd874e69d67e51a73cfbb082330a2a8f8957f301c62d41472822af545488","impliedFormat":1},{"version":"63ec3eeda99e2fc55ce84cb1661ac44fb89979b02d7017ce9396705fabbc936c","impliedFormat":1},{"version":"6fda21fa91b22db409e90c72751b184297539ecb1bf15cc9f1fb96d50cbab59a","impliedFormat":1},{"version":"bb32eba613881313dd9fe7de76d27ec7c1d6ebfcdfb08a547618bbcabe5a7fe4","impliedFormat":1},{"version":"1e4742c828d80621e08aeb0310061421ea4deba37a1dfdf90e51d124e6f05ef6","impliedFormat":1},{"version":"87927fcbc026836aaed1b87f3ad71bfe73c7677f0dd0ff86a9d9dfa953a76893","impliedFormat":1},{"version":"11a4c7fc0c13d7bb3c3e0da32ee113218f67fc6459a679ef1602a2dc680a7c30","signature":"ec25981a51991f7c7e0311b4fef2bceac7c1913d8ca73dd2594f50397b49e003"},{"version":"29cb838cbd4b95448a3190f2e8ecacf7b57c81788f5277823bee0d2a101eee60","signature":"5e58e672a4854331de75ebcc3266112b8e71ec9f68378574cc53a50bf6614721"},{"version":"3022edeb6436d7015a96f741c405693520d4331d50a3dbd52f98b6adf44349ea","signature":"3b6ef539558957ca28aafba8310fbbbe485b28e80d658b53c823ba59e0cb35b5"},{"version":"095025f7100f7eae7effc68d13c07c5069d23ea45c08da3e29c2a361a068cecb","signature":"d113c12172a066650fd7cdadb1121d1e32904d46e851c3276f6cf567e37e78df"},{"version":"4219e671509afe7eadefd4af32ae6cfdc90d8d36cbf2c1ca10d200ae4fe7036b","signature":"9295082a94b27839a0d4de846c8746f30902a5f0e0c2170282acb9b05023d0f1"},{"version":"74336d0fdb6781d232c4acf16ce67577d49fb1ef2a31f2d6cc943a2d6d36173f","signature":"e5007492ffa9adf370edd1b0539cc8fb3bcfd5939a6d88cbd9c48db04c966789"},{"version":"0cabba969d4a172cf9f352086e88ca7384a6007d895f3a2e3b9e5ca298f695f3","signature":"4d2502cea1bd4b23751ac64d3072adc8507eab4ee09df7bd20de0cfdc8a6baba"},{"version":"f89e41c0d72512a632fdcb20b5cd1d59be7a765c2935ec0d723b6b9e2366aab0","signature":"cdf056bbe9951048b6ac874a66b34b690b71fc0b2dd1c0c44acfd5692f2b1cc3"},{"version":"8d28d242f85c4fc52625104bd2c69ec4d98754b75bea6c1914dc972f6496ae67","signature":"01d557e0916ed151e470dfbffda15767d9e411fce87d3fb5e405979d367a15a2"},{"version":"3f7ff78b6dc30d6c07647ce842ba71c93e6aaa1abbcc6b32e6ad137dbfc44629","signature":"cb4d745dd3587102e25c797b46b8fc5d161a5e7f845f485afa7f2b1c2ded8b7f"},{"version":"5b7e2d61bcbed74261f4d97cb1b8966a444baf3d82683dce9d103388a1b455e9","signature":"6986ab271c92b942bb12ce714cd8cf311b9d3c14aea1e034efdf7ec69820b18e"},{"version":"c2f6a742418cd3ebbef11df4a167827089277b22a7e206356c3fedaa07e1ff92","signature":"d365c150444155c569d62c0920cb1f4305e1cd219fb8cda296b1aeff9316f1cb"},{"version":"667053a48fc48299dc265dd5f0e1898688e507c3a86545760d908c262a1ff783","signature":"09f90af4ae7c7393a1b1fb59494923f4d8299cc19f68bb5ce74c2333512b5ff3"},{"version":"f78e632944b44083bc9db773d6f60fb2560d7ae072aa9f214e2125463d9f2e91","signature":"17b7d8154e203b6c7047849700b0f58eeba87c5c5d8cd8fcb345fe13a36c5a28"},{"version":"5e62d59df61768adb75bdf8c18000ce582867c29be87a5e36ef6fe54c7754a6c","signature":"8675d362effb451f3609ce64cd0f45d2640403fdc21bcbad39a6ca6d3754b9c2"},{"version":"032e74a8c1f865fd19dd4222a3d11d8fa4c8a5a35d549694d2656e46e765873b","signature":"df135870bdff24170d697530ccc07df54215af2f73e6513d63252c3c806a6a0e"},{"version":"0ffa1e6eed191c24f66f7cea31d54dd3a6f3342f2972e98ad84c97ef204e7b6d","signature":"5fba6391bda9548a9eadae2ab51fd8a02d8a03c17313770bd0f0f70f64c5f85b"},{"version":"a0a7341aa38ee9fc91d0bad5dcc3d47d6755db82203133ea9e33b7e645f243e5","signature":"eb9149c265207a64ca351bc043d4ec0afc3acb6afa0d3e5810963b5ed1e0535b"},{"version":"556ccd493ec36c7d7cb130d51be66e147b91cc1415be383d71da0f1e49f742a9","impliedFormat":1},{"version":"b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","impliedFormat":1},{"version":"95aba78013d782537cc5e23868e736bec5d377b918990e28ed56110e3ae8b958","impliedFormat":1},{"version":"670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","impliedFormat":1},{"version":"13b77ab19ef7aadd86a1e54f2f08ea23a6d74e102909e3c00d31f231ed040f62","impliedFormat":1},{"version":"069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"ba481bca06f37d3f2c137ce343c7d5937029b2468f8e26111f3c9d9963d6568d","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d9ef24f9a22a88e3e9b3b3d8c40ab1ddb0853f1bfbd5c843c37800138437b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2677634fe27e87348825bb041651e22d50a613e2fdf6a4a3ade971d71bac37e","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"8c0bcd6c6b67b4b503c11e91a1fb91522ed585900eab2ab1f61bba7d7caa9d6f","impliedFormat":1},{"version":"8cd19276b6590b3ebbeeb030ac271871b9ed0afc3074ac88a94ed2449174b776","affectsGlobalScope":true,"impliedFormat":1},{"version":"696eb8d28f5949b87d894b26dc97318ef944c794a9a4e4f62360cd1d1958014b","impliedFormat":1},{"version":"3f8fa3061bd7402970b399300880d55257953ee6d3cd408722cb9ac20126460c","impliedFormat":1},{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"68bd56c92c2bd7d2339457eb84d63e7de3bd56a69b25f3576e1568d21a162398","affectsGlobalScope":true,"impliedFormat":1},{"version":"3e93b123f7c2944969d291b35fed2af79a6e9e27fdd5faa99748a51c07c02d28","impliedFormat":1},{"version":"9d19808c8c291a9010a6c788e8532a2da70f811adb431c97520803e0ec649991","impliedFormat":1},{"version":"87aad3dd9752067dc875cfaa466fc44246451c0c560b820796bdd528e29bef40","impliedFormat":1},{"version":"4aacb0dd020eeaef65426153686cc639a78ec2885dc72ad220be1d25f1a439df","impliedFormat":1},{"version":"f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45","impliedFormat":1},{"version":"8db0ae9cb14d9955b14c214f34dae1b9ef2baee2fe4ce794a4cd3ac2531e3255","affectsGlobalScope":true,"impliedFormat":1},{"version":"15fc6f7512c86810273af28f224251a5a879e4261b4d4c7e532abfbfc3983134","impliedFormat":1},{"version":"58adba1a8ab2d10b54dc1dced4e41f4e7c9772cbbac40939c0dc8ce2cdb1d442","impliedFormat":1},{"version":"641942a78f9063caa5d6b777c99304b7d1dc7328076038c6d94d8a0b81fc95c1","impliedFormat":1},{"version":"714435130b9015fae551788df2a88038471a5a11eb471f27c4ede86552842bc9","impliedFormat":1},{"version":"855cd5f7eb396f5f1ab1bc0f8580339bff77b68a770f84c6b254e319bbfd1ac7","impliedFormat":1},{"version":"5650cf3dace09e7c25d384e3e6b818b938f68f4e8de96f52d9c5a1b3db068e86","impliedFormat":1},{"version":"1354ca5c38bd3fd3836a68e0f7c9f91f172582ba30ab15bb8c075891b91502b7","affectsGlobalScope":true,"impliedFormat":1},{"version":"27fdb0da0daf3b337c5530c5f266efe046a6ceb606e395b346974e4360c36419","impliedFormat":1},{"version":"2d2fcaab481b31a5882065c7951255703ddbe1c0e507af56ea42d79ac3911201","impliedFormat":1},{"version":"a192fe8ec33f75edbc8d8f3ed79f768dfae11ff5735e7fe52bfa69956e46d78d","impliedFormat":1},{"version":"ca867399f7db82df981d6915bcbb2d81131d7d1ef683bc782b59f71dda59bc85","affectsGlobalScope":true,"impliedFormat":1},{"version":"372413016d17d804e1d139418aca0c68e47a83fb6669490857f4b318de8cccb3","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","impliedFormat":1},{"version":"b4f70ec656a11d570e1a9edce07d118cd58d9760239e2ece99306ee9dfe61d02","impliedFormat":1},{"version":"3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","impliedFormat":1},{"version":"6e70e9570e98aae2b825b533aa6292b6abd542e8d9f6e9475e88e1d7ba17c866","impliedFormat":1},{"version":"f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","impliedFormat":1},{"version":"47ab634529c5955b6ad793474ae188fce3e6163e3a3fb5edd7e0e48f14435333","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"fad4e3c207fe23922d0b2d06b01acbfb9714c4f2685cf80fd384c8a100c82fd0","affectsGlobalScope":true,"impliedFormat":1},{"version":"74cf591a0f63db318651e0e04cb55f8791385f86e987a67fd4d2eaab8191f730","impliedFormat":1},{"version":"5eab9b3dc9b34f185417342436ec3f106898da5f4801992d8ff38ab3aff346b5","impliedFormat":1},{"version":"12ed4559eba17cd977aa0db658d25c4047067444b51acfdcbf38470630642b23","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3ffabc95802521e1e4bcba4c88d8615176dc6e09111d920c7a213bdda6e1d65","impliedFormat":1},{"version":"809821b8a065e3234a55b3a9d7846231ed18d66dd749f2494c66288d890daf7f","impliedFormat":1},{"version":"ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","impliedFormat":1},{"version":"a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9","impliedFormat":1},{"version":"c3b41e74b9a84b88b1dca61ec39eee25c0dbc8e7d519ba11bb070918cfacf656","affectsGlobalScope":true,"impliedFormat":1},{"version":"4737a9dc24d0e68b734e6cfbcea0c15a2cfafeb493485e27905f7856988c6b29","affectsGlobalScope":true,"impliedFormat":1},{"version":"36d8d3e7506b631c9582c251a2c0b8a28855af3f76719b12b534c6edf952748d","impliedFormat":1},{"version":"1ca69210cc42729e7ca97d3a9ad48f2e9cb0042bada4075b588ae5387debd318","impliedFormat":1},{"version":"f5ebe66baaf7c552cfa59d75f2bfba679f329204847db3cec385acda245e574e","impliedFormat":1},{"version":"ed59add13139f84da271cafd32e2171876b0a0af2f798d0c663e8eeb867732cf","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7c5e2ea4a9749097c347454805e933844ed207b6eefec6b7cfd418b5f5f7b28","impliedFormat":1},{"version":"b1810689b76fd473bd12cc9ee219f8e62f54a7d08019a235d07424afbf074d25","impliedFormat":1},{"version":"afe73051ff6a03a9565cbd8ebb0e956ee3df5e913ad5c1ded64218aabfa3dcb5","impliedFormat":1},{"version":"035a5df183489c2e22f3cf59fc1ed2b043d27f357eecc0eb8d8e840059d44245","impliedFormat":1},{"version":"a4809f4d92317535e6b22b01019437030077a76fec1d93b9881c9ed4738fcc54","impliedFormat":1},{"version":"5f53fa0bd22096d2a78533f94e02c899143b8f0f9891a46965294ee8b91a9434","impliedFormat":1},{"version":"cdcc132f207d097d7d3aa75615ab9a2e71d6a478162dde8b67f88ea19f3e54de","impliedFormat":1},{"version":"0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","impliedFormat":1},{"version":"e1028394c1cf96d5d057ecc647e31e457b919092f882ed0c7092152b077fed9d","impliedFormat":1},{"version":"f315e1e65a1f80992f0509e84e4ae2df15ecd9ef73df975f7c98813b71e4c8da","impliedFormat":1},{"version":"5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","impliedFormat":1},{"version":"3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","impliedFormat":1},{"version":"ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","impliedFormat":1},{"version":"d96cc6598148bf1a98fb2e8dcf01c63a4b3558bdaec6ef35e087fd0562eb40ec","impliedFormat":1},{"version":"f8db4fea512ab759b2223b90ecbbe7dae919c02f8ce95ec03f7fb1cf757cfbeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab82804a14454734010dcdcd43f564ff7b0389bee4c5692eec76ff5b30d4cf66","impliedFormat":1},{"version":"bae8d023ef6b23df7da26f51cea44321f95817c190342a36882e93b80d07a960","impliedFormat":1},{"version":"26a770cec4bd2e7dbba95c6e536390fffe83c6268b78974a93727903b515c4e7","impliedFormat":1}],"root":[[70,87]],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"module":1,"outDir":"./","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":7,"tsBuildInfoFile":"./.tsbuildinfo.build"},"referencedMap":[[90,1],[88,2],[198,2],[201,3],[200,2],[93,4],[89,1],[91,5],[92,1],[194,6],[195,2],[196,7],[197,8],[206,9],[142,10],[143,10],[144,11],[99,12],[145,13],[146,14],[147,15],[94,2],[97,16],[95,2],[96,2],[148,17],[149,18],[150,19],[151,20],[152,21],[153,22],[154,22],[155,23],[156,24],[157,25],[158,26],[100,2],[98,2],[159,27],[160,28],[161,29],[193,30],[162,31],[163,32],[164,33],[165,34],[166,35],[167,36],[168,37],[169,38],[170,39],[171,40],[172,40],[173,41],[174,2],[175,42],[177,43],[176,44],[178,45],[179,46],[180,47],[181,48],[182,49],[183,50],[184,51],[185,52],[186,53],[187,54],[188,55],[189,56],[190,57],[101,2],[102,2],[103,2],[141,58],[191,59],[192,60],[207,2],[208,2],[209,61],[199,2],[205,62],[203,63],[204,64],[67,65],[62,66],[68,67],[66,68],[64,69],[69,70],[63,71],[65,72],[61,67],[54,73],[48,74],[49,74],[55,2],[53,74],[56,75],[58,76],[52,77],[51,78],[57,2],[50,74],[47,2],[59,2],[60,79],[202,80],[45,2],[46,2],[8,2],[10,2],[9,2],[2,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[3,2],[19,2],[20,2],[4,2],[21,2],[25,2],[22,2],[23,2],[24,2],[26,2],[27,2],[28,2],[5,2],[29,2],[30,2],[31,2],[32,2],[6,2],[36,2],[33,2],[34,2],[35,2],[37,2],[7,2],[38,2],[43,2],[44,2],[39,2],[40,2],[41,2],[42,2],[1,2],[119,81],[129,82],[118,81],[139,83],[110,84],[109,85],[138,86],[132,87],[137,88],[112,89],[126,90],[111,91],[135,92],[107,93],[106,86],[136,94],[108,95],[113,96],[114,2],[117,96],[104,2],[140,97],[130,98],[121,99],[122,100],[124,101],[120,102],[123,103],[133,86],[115,104],[116,105],[125,106],[105,107],[128,98],[127,96],[131,2],[134,108],[74,2],[78,109],[77,110],[85,111],[87,112],[79,2],[75,110],[83,113],[76,110],[84,114],[82,2],[86,115],[80,116],[81,117],[71,118],[73,119],[70,2],[72,2]],"latestChangedDtsFile":"./browser/firebird-browser.d.ts","version":"5.9.3"}
|
|
@@ -53,8 +53,12 @@ export interface FirebirdBrowserOptions {
|
|
|
53
53
|
*
|
|
54
54
|
* Omit it only where blocking the calling thread is acceptable, such as
|
|
55
55
|
* Node or a test harness driving a stub engine.
|
|
56
|
+
*
|
|
57
|
+
* With `multiTab: 'shared'` this must be a **factory**. It is called only
|
|
58
|
+
* if this tab wins the election, so a follower never downloads and
|
|
59
|
+
* instantiates a 9 MB engine to sit idle beside the one already running.
|
|
56
60
|
*/
|
|
57
|
-
worker?: Worker;
|
|
61
|
+
worker?: Worker | (() => Worker);
|
|
58
62
|
/**
|
|
59
63
|
* Use a transport of your own. Takes precedence over `worker`; mainly a
|
|
60
64
|
* seam for tests.
|
|
@@ -97,12 +101,16 @@ export interface FirebirdBrowserOptions {
|
|
|
97
101
|
*
|
|
98
102
|
* - `'exclusive'` (default) takes a cross-tab lock and fails with
|
|
99
103
|
* {@link DatabaseLockedError} if another tab will not release it in time.
|
|
104
|
+
* - `'shared'` elects one tab to run the engine and serves the others from
|
|
105
|
+
* it, so every tab sees the same live database. Needs `worker` to be a
|
|
106
|
+
* factory rather than an instance — a follower must not build an engine it
|
|
107
|
+
* will never use.
|
|
100
108
|
* - `'allow-unsafe'` skips the lock. Only sound when at most one of the
|
|
101
109
|
* tabs writes.
|
|
102
110
|
*
|
|
103
111
|
* @default 'exclusive'
|
|
104
112
|
*/
|
|
105
|
-
multiTab?: 'exclusive' | 'allow-unsafe';
|
|
113
|
+
multiTab?: 'exclusive' | 'shared' | 'allow-unsafe';
|
|
106
114
|
/**
|
|
107
115
|
* How long to wait for another tab to release the database, in
|
|
108
116
|
* milliseconds. `Infinity` waits indefinitely.
|
|
@@ -138,12 +146,26 @@ export declare class FirebirdBrowser {
|
|
|
138
146
|
private readonly lockTimeoutMs;
|
|
139
147
|
/** Held for the connection's lifetime; released by close(). */
|
|
140
148
|
private lock;
|
|
149
|
+
/** Set only in shared mode; owns the election and the channel. */
|
|
150
|
+
private shared;
|
|
141
151
|
/**
|
|
142
152
|
* @param dbName Logical database name. Used as the IndexedDB store name
|
|
143
153
|
* and the filename inside Emscripten's virtual FS.
|
|
144
154
|
* @param options Optional configuration.
|
|
145
155
|
*/
|
|
146
156
|
constructor(dbName: string, options?: FirebirdBrowserOptions);
|
|
157
|
+
/** Build the real engine for this tab: a Worker if given one, else direct. */
|
|
158
|
+
private createLocalEngine;
|
|
159
|
+
private createEngine;
|
|
160
|
+
/**
|
|
161
|
+
* Whether this tab is the one actually running the engine.
|
|
162
|
+
*
|
|
163
|
+
* Always true unless `multiTab: 'shared'`, where exactly one tab owns the
|
|
164
|
+
* engine and the rest are served by it. Useful for deciding which tab should
|
|
165
|
+
* do work that must happen once — an import, a migration, a scheduled
|
|
166
|
+
* cleanup — rather than once per open tab.
|
|
167
|
+
*/
|
|
168
|
+
get isLeader(): boolean;
|
|
147
169
|
/** Path of the database inside Emscripten's filesystem. */
|
|
148
170
|
private get dbPath();
|
|
149
171
|
/**
|
|
@@ -188,6 +210,15 @@ export declare class FirebirdBrowser {
|
|
|
188
210
|
close(): Promise<void>;
|
|
189
211
|
/** Release the cross-tab lock, if this instance holds one. */
|
|
190
212
|
private releaseLock;
|
|
213
|
+
/**
|
|
214
|
+
* Whether this tab may write the database image to IndexedDB.
|
|
215
|
+
*
|
|
216
|
+
* In shared mode only the leader may: a follower has no engine, and its
|
|
217
|
+
* `readFile` would fetch the image across the channel only to race the
|
|
218
|
+
* leader writing the same store — reintroducing the whole-image overwrite
|
|
219
|
+
* that multi-tab safety exists to prevent.
|
|
220
|
+
*/
|
|
221
|
+
private get mayPersist();
|
|
191
222
|
/** Note that the database has changed and schedule a persist. */
|
|
192
223
|
private markDirty;
|
|
193
224
|
private cancelScheduledPersist;
|
|
@@ -213,6 +244,27 @@ export declare class FirebirdBrowser {
|
|
|
213
244
|
private readonly onPageHide;
|
|
214
245
|
private ensureReady;
|
|
215
246
|
private init;
|
|
247
|
+
/**
|
|
248
|
+
* Restore the stored image if this tab owns the engine, then attach.
|
|
249
|
+
*
|
|
250
|
+
* Separate from init() because it has to run again whenever the engine
|
|
251
|
+
* changes underneath us — in shared mode a leadership change replaces the
|
|
252
|
+
* engine, and every handle it issued dies with it.
|
|
253
|
+
*
|
|
254
|
+
* The restore is guarded by {@link mayPersist} for the same reason
|
|
255
|
+
* persistence is: a follower writing its IndexedDB snapshot into the
|
|
256
|
+
* filesystem would be overwriting the leader's *live* database with a
|
|
257
|
+
* possibly older image.
|
|
258
|
+
*/
|
|
259
|
+
private openDatabase;
|
|
260
|
+
/**
|
|
261
|
+
* The engine behind this connection was replaced; attach to the new one.
|
|
262
|
+
*
|
|
263
|
+
* Called on every tab after a leadership change, promoted or not. Silence
|
|
264
|
+
* here would leave the caller holding a handle from an engine that no longer
|
|
265
|
+
* exists, and writes through it would go nowhere — visibly succeeding.
|
|
266
|
+
*/
|
|
267
|
+
private reopenAfterEngineChange;
|
|
216
268
|
}
|
|
217
269
|
/**
|
|
218
270
|
* A handle to an active transaction in the browser WASM engine.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebird-browser.d.ts","sourceRoot":"","sources":["../../src/browser/firebird-browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"firebird-browser.d.ts","sourceRoot":"","sources":["../../src/browser/firebird-browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAOxE,OAAO,KAAK,EACV,WAAW,EACX,GAAG,EACH,WAAW,EACX,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAMlB,mDAAmD;AACnD,MAAM,WAAW,UAAU;IACzB,iEAAiE;IACjE,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,+DAA+D;AAC/D,MAAM,WAAW,sBAAsB;IACrC,oDAAoD;IACpD,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B;;;OAGG;IACH,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAClC;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IACjC;;;OAGG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACxC;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,cAAc,CAAC;IACnD;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAUD;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAA8B;IAEjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;IACtC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyB;IACxD,OAAO,CAAC,YAAY,CAA8C;IAClE,+CAA+C;IAC/C,OAAO,CAAC,eAAe,CAA8B;IACrD,2EAA2E;IAC3E,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,iBAAiB,CAAS;IAElC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0C;IACnE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,+DAA+D;IAC/D,OAAO,CAAC,IAAI,CAA6B;IACzC,kEAAkE;IAClE,OAAO,CAAC,MAAM,CAAsC;IAEpD;;;;OAIG;gBACS,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,sBAA2B;IAiBhE,8EAA8E;IAC9E,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,YAAY;IAwBpB;;;;;;;OAOG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,2DAA2D;IAC3D,OAAO,KAAK,MAAM,GAEjB;IAID;;;;;;;;;;;;;;;OAeG;IACG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IA+BxE;;;;;;;;OAQG;IACG,KAAK,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,EAC7B,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,WAAgB,EACxB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IA6B1B;;OAEG;IACG,WAAW,CAAC,CAAC,EACjB,EAAE,EAAE,CAAC,EAAE,EAAE,0BAA0B,KAAK,OAAO,CAAC,CAAC,CAAC,EAClD,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,CAAC,CAAC;IA8Bb;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAkC9B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAoC5B,8DAA8D;YAChD,WAAW;IAQzB;;;;;;;OAOG;IACH,OAAO,KAAK,UAAU,GAErB;IAED,iEAAiE;IACjE,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,sBAAsB;IAO9B;;;;;OAKG;YACW,mBAAmB;IASjC;;;;;;;;OAQG;IACH,OAAO,CAAC,wBAAwB;IAWhC,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAKjC;IAEF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAGzB;YAIY,WAAW;YAaX,IAAI;IAkBlB;;;;;;;;;;;OAWG;YACW,YAAY;IAe1B;;;;;;OAMG;YACW,uBAAuB;CAatC;AAMD;;;;;GAKG;AACH,qBAAa,0BAA0B;IAInC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAL3B,OAAO,CAAC,QAAQ,CAAS;gBAGN,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY;IAGzC,6DAA6D;IAC7D,IAAI,UAAU,IAAI,OAAO,CAExB;IAED;;;;;;OAMG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B,OAAO,CAAC,YAAY;IAMpB;;;;OAIG;IACG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAWtE,gEAAgE;IAC1D,KAAK,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,EAC7B,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,WAAgB,GACvB,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CAI3B"}
|
|
@@ -30,6 +30,7 @@ const worker_transport_1 = require("./worker-transport");
|
|
|
30
30
|
const sql_script_1 = require("./sql-script");
|
|
31
31
|
const isolation_1 = require("./isolation");
|
|
32
32
|
const db_lock_1 = require("./db-lock");
|
|
33
|
+
const shared_transport_1 = require("./shared-transport");
|
|
33
34
|
// ---------------------------------------------------------------------------
|
|
34
35
|
// Shared helpers
|
|
35
36
|
// ---------------------------------------------------------------------------
|
|
@@ -60,6 +61,8 @@ class FirebirdBrowser {
|
|
|
60
61
|
this.lifecycleAttached = false;
|
|
61
62
|
/** Held for the connection's lifetime; released by close(). */
|
|
62
63
|
this.lock = null;
|
|
64
|
+
/** Set only in shared mode; owns the election and the channel. */
|
|
65
|
+
this.shared = null;
|
|
63
66
|
this.onVisibilityChange = () => {
|
|
64
67
|
if (document.visibilityState === 'hidden') {
|
|
65
68
|
this.cancelScheduledPersist();
|
|
@@ -80,14 +83,48 @@ class FirebirdBrowser {
|
|
|
80
83
|
this.onPersistError =
|
|
81
84
|
options.onPersistError ??
|
|
82
85
|
((error) => console.error('[firebird-wasm] background persist failed', error));
|
|
83
|
-
this.engine =
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
86
|
+
this.engine = options.transport ?? this.createEngine();
|
|
87
|
+
}
|
|
88
|
+
/** Build the real engine for this tab: a Worker if given one, else direct. */
|
|
89
|
+
createLocalEngine() {
|
|
90
|
+
const worker = this.options.worker;
|
|
91
|
+
if (worker) {
|
|
92
|
+
return new worker_transport_1.WorkerTransport(typeof worker === 'function' ? worker() : worker);
|
|
93
|
+
}
|
|
94
|
+
return new engine_transport_1.DirectTransport({
|
|
95
|
+
wasmBinary: this.options.wasmBinary,
|
|
96
|
+
locateFile: this.options.locateFile,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
createEngine() {
|
|
100
|
+
if (this.multiTab !== 'shared') {
|
|
101
|
+
return this.createLocalEngine();
|
|
102
|
+
}
|
|
103
|
+
if (typeof BroadcastChannel === 'undefined') {
|
|
104
|
+
throw new Error("multiTab: 'shared' needs BroadcastChannel, which this environment " +
|
|
105
|
+
"does not have. Use 'exclusive' instead.");
|
|
106
|
+
}
|
|
107
|
+
const shared = new shared_transport_1.SharedEngineTransport({
|
|
108
|
+
dbName: this.dbName,
|
|
109
|
+
createEngine: () => this.createLocalEngine(),
|
|
110
|
+
// A follower's writes run on the leader's engine, so the leader is the
|
|
111
|
+
// only one that can know its image went stale.
|
|
112
|
+
onServedMutation: () => this.markDirty(),
|
|
113
|
+
onEngineReplaced: () => this.reopenAfterEngineChange(),
|
|
114
|
+
});
|
|
115
|
+
this.shared = shared;
|
|
116
|
+
return shared;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Whether this tab is the one actually running the engine.
|
|
120
|
+
*
|
|
121
|
+
* Always true unless `multiTab: 'shared'`, where exactly one tab owns the
|
|
122
|
+
* engine and the rest are served by it. Useful for deciding which tab should
|
|
123
|
+
* do work that must happen once — an import, a migration, a scheduled
|
|
124
|
+
* cleanup — rather than once per open tab.
|
|
125
|
+
*/
|
|
126
|
+
get isLeader() {
|
|
127
|
+
return this.shared === null || this.shared.isLeader;
|
|
91
128
|
}
|
|
92
129
|
/** Path of the database inside Emscripten's filesystem. */
|
|
93
130
|
get dbPath() {
|
|
@@ -192,7 +229,7 @@ class FirebirdBrowser {
|
|
|
192
229
|
* Call this periodically or before the page unloads to avoid data loss.
|
|
193
230
|
*/
|
|
194
231
|
async persist() {
|
|
195
|
-
if (!this.dbHandle)
|
|
232
|
+
if (!this.dbHandle || !this.mayPersist)
|
|
196
233
|
return;
|
|
197
234
|
// Two persists must not interleave: both read the image and write the
|
|
198
235
|
// same store, and the later one could finish first and roll the database
|
|
@@ -264,9 +301,20 @@ class FirebirdBrowser {
|
|
|
264
301
|
await lock?.release();
|
|
265
302
|
}
|
|
266
303
|
// ── Automatic persistence ─────────────────────────────────────────────
|
|
304
|
+
/**
|
|
305
|
+
* Whether this tab may write the database image to IndexedDB.
|
|
306
|
+
*
|
|
307
|
+
* In shared mode only the leader may: a follower has no engine, and its
|
|
308
|
+
* `readFile` would fetch the image across the channel only to race the
|
|
309
|
+
* leader writing the same store — reintroducing the whole-image overwrite
|
|
310
|
+
* that multi-tab safety exists to prevent.
|
|
311
|
+
*/
|
|
312
|
+
get mayPersist() {
|
|
313
|
+
return this.shared === null || this.shared.isLeader;
|
|
314
|
+
}
|
|
267
315
|
/** Note that the database has changed and schedule a persist. */
|
|
268
316
|
markDirty() {
|
|
269
|
-
if (!this.autoPersist || this.closed)
|
|
317
|
+
if (!this.autoPersist || this.closed || !this.mayPersist)
|
|
270
318
|
return;
|
|
271
319
|
if (this.persistTimer !== null) {
|
|
272
320
|
clearTimeout(this.persistTimer);
|
|
@@ -346,19 +394,56 @@ class FirebirdBrowser {
|
|
|
346
394
|
timeoutMs: this.lockTimeoutMs,
|
|
347
395
|
});
|
|
348
396
|
}
|
|
397
|
+
// 'shared' deliberately takes no lock here: the transport's election holds
|
|
398
|
+
// it, and a second request from the same tab would queue behind itself.
|
|
349
399
|
await this.engine.init();
|
|
350
|
-
await this.engine.mkdir('/data');
|
|
351
|
-
// Restore any previously persisted image into the engine's filesystem
|
|
352
|
-
// before attaching, so a reload reopens the same database.
|
|
353
400
|
await this.vfs.open(this.dbName);
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
401
|
+
await this.openDatabase();
|
|
402
|
+
this.attachLifecycleListeners();
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Restore the stored image if this tab owns the engine, then attach.
|
|
406
|
+
*
|
|
407
|
+
* Separate from init() because it has to run again whenever the engine
|
|
408
|
+
* changes underneath us — in shared mode a leadership change replaces the
|
|
409
|
+
* engine, and every handle it issued dies with it.
|
|
410
|
+
*
|
|
411
|
+
* The restore is guarded by {@link mayPersist} for the same reason
|
|
412
|
+
* persistence is: a follower writing its IndexedDB snapshot into the
|
|
413
|
+
* filesystem would be overwriting the leader's *live* database with a
|
|
414
|
+
* possibly older image.
|
|
415
|
+
*/
|
|
416
|
+
async openDatabase() {
|
|
417
|
+
await this.engine.mkdir('/data');
|
|
418
|
+
if (this.mayPersist) {
|
|
419
|
+
const stored = await this.vfs.exportDatabase();
|
|
420
|
+
if (stored.byteLength > 0) {
|
|
421
|
+
await this.engine.writeFile(this.dbPath, stored);
|
|
422
|
+
}
|
|
357
423
|
}
|
|
358
424
|
this.dbHandle = (await this.engine.exists(this.dbPath))
|
|
359
425
|
? await this.engine.attachDatabase(this.dbPath)
|
|
360
426
|
: await this.engine.createDatabase(this.dbPath);
|
|
361
|
-
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* The engine behind this connection was replaced; attach to the new one.
|
|
430
|
+
*
|
|
431
|
+
* Called on every tab after a leadership change, promoted or not. Silence
|
|
432
|
+
* here would leave the caller holding a handle from an engine that no longer
|
|
433
|
+
* exists, and writes through it would go nowhere — visibly succeeding.
|
|
434
|
+
*/
|
|
435
|
+
async reopenAfterEngineChange() {
|
|
436
|
+
if (this.closed)
|
|
437
|
+
return;
|
|
438
|
+
this.dbHandle = 0;
|
|
439
|
+
try {
|
|
440
|
+
await this.openDatabase();
|
|
441
|
+
}
|
|
442
|
+
catch (err) {
|
|
443
|
+
this.onPersistError(err instanceof Error
|
|
444
|
+
? err
|
|
445
|
+
: new Error(`could not reopen after a leadership change: ${String(err)}`));
|
|
446
|
+
}
|
|
362
447
|
}
|
|
363
448
|
}
|
|
364
449
|
exports.FirebirdBrowser = FirebirdBrowser;
|