signalk-questdb 2.0.1 → 2.1.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/.coderabbit.yaml +4 -3
- package/README.md +151 -5
- package/dist/api-contract.d.ts +62 -0
- package/dist/config/schema.d.ts +1 -0
- package/dist/config/schema.js +5 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/configpanel/responses.d.ts +33 -1
- package/dist/configpanel/responses.js +89 -0
- package/dist/configpanel/responses.js.map +1 -1
- package/dist/history-v1.js +12 -9
- package/dist/history-v1.js.map +1 -1
- package/dist/history-v2.d.ts +18 -6
- package/dist/history-v2.js +275 -41
- package/dist/history-v2.js.map +1 -1
- package/dist/ilp-writer.d.ts +22 -0
- package/dist/ilp-writer.js +76 -4
- package/dist/ilp-writer.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +326 -58
- package/dist/index.js.map +1 -1
- package/dist/influx-detect.d.ts +19 -0
- package/dist/influx-detect.js +165 -0
- package/dist/influx-detect.js.map +1 -0
- package/dist/migration.d.ts +147 -0
- package/dist/migration.js +824 -0
- package/dist/migration.js.map +1 -0
- package/dist/query-client.d.ts +9 -0
- package/dist/query-client.js +11 -0
- package/dist/query-client.js.map +1 -1
- package/dist/restore.js +9 -0
- package/dist/restore.js.map +1 -1
- package/dist/schema-errors.d.ts +15 -0
- package/dist/schema-errors.js +38 -0
- package/dist/schema-errors.js.map +1 -0
- package/dist/test/configpanel-responses.test.js +90 -1
- package/dist/test/configpanel-responses.test.js.map +1 -1
- package/dist/test/history-v2.test.js +440 -2
- package/dist/test/history-v2.test.js.map +1 -1
- package/dist/test/ilp-writer.test.js +28 -0
- package/dist/test/ilp-writer.test.js.map +1 -1
- package/dist/test/influx-detect.test.d.ts +1 -0
- package/dist/test/influx-detect.test.js +287 -0
- package/dist/test/influx-detect.test.js.map +1 -0
- package/dist/test/migration.test.d.ts +1 -0
- package/dist/test/migration.test.js +851 -0
- package/dist/test/migration.test.js.map +1 -0
- package/dist/test/restore.test.js +47 -0
- package/dist/test/restore.test.js.map +1 -1
- package/package.json +5 -4
- package/public/assets/PluginConfigurationPanel-CR4mD9IH.js +9 -0
- package/public/assets/{index-Z7eUk0W6.js → index-CyI4zKUm.js} +1 -1
- package/public/assets/{virtualExposes-CyrNon4j.js → virtualExposes-BBIkbTtD.js} +1 -1
- package/public/remoteEntry.js +1 -1
- package/public/assets/PluginConfigurationPanel-CyS3A7gD.js +0 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.test.js","sourceRoot":"","sources":["../../src/test/migration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -455,6 +455,53 @@ describe("identity is restored over a longer window than motion (issue #127)", (
|
|
|
455
455
|
assert.deepEqual(named?.value, { name: "SEA BREEZE" });
|
|
456
456
|
});
|
|
457
457
|
});
|
|
458
|
+
it("restores AIS ship type from its flattened leaves (issue #148)", () => {
|
|
459
|
+
// design.aisShipType is an object {id, name} recorded as leaves. Freeboard
|
|
460
|
+
// colours a target by .id; before #148 the bare path was the only one in
|
|
461
|
+
// the identity set, so nothing came back and every target kept the default
|
|
462
|
+
// colour. Both leaves are static identity, so they restore over the long
|
|
463
|
+
// window even when older than the motion window.
|
|
464
|
+
const { promise, deltas } = run([
|
|
465
|
+
position(AIS, 60_000),
|
|
466
|
+
[ago(40 * 60_000), "design.aisShipType.id", AIS, "36", "number"],
|
|
467
|
+
// Real data tags aisShipType.name with a null value_kind (it predates or
|
|
468
|
+
// sits outside the identity writer); the decoder's default case restores
|
|
469
|
+
// it as the plain string, and it is NOT the synthetic empty-path name.
|
|
470
|
+
[
|
|
471
|
+
ago(40 * 60_000),
|
|
472
|
+
"design.aisShipType.name",
|
|
473
|
+
AIS,
|
|
474
|
+
"Sailing",
|
|
475
|
+
null,
|
|
476
|
+
],
|
|
477
|
+
]);
|
|
478
|
+
return promise.then((result) => {
|
|
479
|
+
assert.equal(result.contexts, 1);
|
|
480
|
+
assert.equal(result.skippedStale, 0, "the ship-type leaves must use the identity window, not the motion one");
|
|
481
|
+
const idVal = valueAt(deltas[0], "design.aisShipType.id");
|
|
482
|
+
const nameVal = valueAt(deltas[0], "design.aisShipType.name");
|
|
483
|
+
assert.equal(idVal?.value, 36, "the .id leaf drives Freeboard's colour");
|
|
484
|
+
assert.equal(nameVal?.value, "Sailing");
|
|
485
|
+
});
|
|
486
|
+
});
|
|
487
|
+
it("restores the ship-type id even when only the .id leaf is present", () => {
|
|
488
|
+
// The id is what colours a target; the .name leaf is cosmetic. A vessel
|
|
489
|
+
// whose static report gave an id but no readable name must still come back
|
|
490
|
+
// coloured, so the id-alone path — the actual payload of #148 — is covered
|
|
491
|
+
// on its own, not only alongside .name.
|
|
492
|
+
const { promise, deltas } = run([
|
|
493
|
+
position(AIS, 60_000),
|
|
494
|
+
[ago(40 * 60_000), "design.aisShipType.id", AIS, "70", "number"],
|
|
495
|
+
]);
|
|
496
|
+
return promise.then((result) => {
|
|
497
|
+
assert.equal(result.contexts, 1);
|
|
498
|
+
assert.equal(result.skippedStale, 0);
|
|
499
|
+
const idVal = valueAt(deltas[0], "design.aisShipType.id");
|
|
500
|
+
assert.equal(idVal?.value, 70, "a cargo ship must colour from .id alone");
|
|
501
|
+
// No name leaf → no name value; the target still draws in its colour.
|
|
502
|
+
assert.equal(valueAt(deltas[0], "design.aisShipType.name"), undefined);
|
|
503
|
+
});
|
|
504
|
+
});
|
|
458
505
|
it("still refuses motion older than the short window", () => {
|
|
459
506
|
// The widened identity window must not leak into position: a stale fix
|
|
460
507
|
// draws a target somewhere it demonstrably is not.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restore.test.js","sourceRoot":"","sources":["../../src/test/restore.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGnD,MAAM,IAAI,GAAG,oCAAoC,CAAC;AAClD,MAAM,GAAG,GAAG,oCAAoC,CAAC;AAEjD,wDAAwD;AACxD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;AACnD,MAAM,GAAG,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAQ7D,SAAS,UAAU,CAAC,QAAoB,EAAE,OAAc;IACtD,OAAO;QACL,IAAI,EAAE,KAAK,EAAE,GAAW,EAAE,EAAE;YAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;YACvB,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;QACvE,CAAC;QACD,SAAS,EAAE,CAAC,MAAgC,EAAE,EAAE,CAC9C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC3B,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;YACV,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;YACZ,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YACf,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;YACjB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;SACb,CAAC,CAAC;KACmC,CAAC;AAC7C,CAAC;AAgBD,SAAS,GAAG,CACV,OAAc,EACd,YAAqC,EAAE,EACvC,WAAuB,EAAE,EACzB,WAA0C;IAE1C,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,kBAAkB,CAChC;QACE,WAAW,EAAE,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC;QAC1C,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAkB,CAAC;QACrD,WAAW,EAAE,IAAI;QACjB,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;QACf,WAAW;KACZ,EACD;QACE,QAAQ,EAAE,CAAC,GAAG,MAAM;QACpB,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,IAAI;QACnB,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG;QACd,GAAG,SAAS;KACb,CACF,CAAC;IACF,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,GAAG,GAAG,OAAO,EAAE,GAAG,GAAG,OAAO,EAAE,EAAE,CAC5E,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,qBAAqB,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,GAAG,EAAE,EAAE,UAAU,CAAQ,CAAC;AAE/E,yEAAyE;AACzE,yEAAyE;AACzE,MAAM,SAAS,GAAG,CAAC,KAAoB,EAAmB,EAAE,CAC1D,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzC,MAAM,OAAO,GAAG,CAAC,KAAoB,EAAE,IAAY,EAAE,EAAE,CACrD,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAEhD,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;IACpD,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;QAE7B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACrC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YAC/C,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE;SAC7C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;QAClF,oEAAoE;QACpE,mEAAmE;QACnE,sDAAsD;QACtD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5D,MAAM,OAAO,CAAC;QAEd,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,mEAAmE;QACnE,sEAAsE;QACtE,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;QACjC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,OAAO,CAAC;QAEd,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACvD,MAAM,CAAC,QAAQ,CACb,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAC9B,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAC5B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,OAAO,CAAC;QAEd,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,wEAAwE;QACxE,qEAAqE;QACrE,2CAA2C;QAC3C,MAAM,IAAI,GAAU;YAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YACrB,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,UAAU,CAAC;SAC1D,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC;QAEd,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAE1C,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,qBAAqB,CAAC,CACvD,CAAC;QACF,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CACpC,CAAC;QAEF,MAAM,CAAC,EAAE,CAAC,SAAS,IAAI,UAAU,CAAC,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACvB,MAAM,IAAI,GAAU;YAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YACrB,CAAC,EAAE,EAAE,4BAA4B,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC;SACzD,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC;QAEd,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,IAAI,GAAU;YAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YACrB,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,UAAU,CAAC;SAC1D,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;QAE7B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,uEAAuE;QACvE,+DAA+D;QAC/D,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;QAE7B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,OAAO,CAAC;QAEd,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,qEAAqE;QACrE,qCAAqC;QACrC,MAAM,GAAG,GAAQ;YACf,iBAAiB;YACjB,qBAAqB;YACrB,GAAG;YACH,aAAa;YACb,UAAU;SACX,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;QAE7B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;QAC1C,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;QACjE,MAAM,OAAO,CAAC;QAEd,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,uEAAuE;QACvE,4DAA4D;QAC5D,MAAM,QAAQ,GAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;QAC5E,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;QAE7B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,IAAI,GAAU;YAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YACrB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,UAAU,CAAC;SACvD,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC;QAEd,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,qEAAqE;QACrE,wDAAwD;QACxD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,yEAAyE;QACzE,MAAM,IAAI,GAAU;YAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YACrB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC;SAClD,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC;QAEd,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACzC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/D,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,MAAM,OAAO,CAAC;QAEd,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/D,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9D,MAAM,OAAO,CAAC;QAEd,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,wEAAwE;QACxE,gEAAgE;QAChE,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;QACrC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;QAE7B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,KAAK,GAAG,oCAAoC,CAAC;QACnD,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9D,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;QAE7B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,oEAAoE;QACpE,6DAA6D;QAC7D,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;YAClE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,CAAC;QAEd,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;IACrD,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,mEAAmE;QACnE,iEAAiE;QACjE,MAAM,IAAI,GAAU;YAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YACrB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC;YACvD,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC;SACxD,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC;QAEd,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;QACrD,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,4EAA4E;QAC5E,yEAAyE;QACzE,gEAAgE;QAChE,MAAM,IAAI,GAAU;YAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YACrB,CAAC,6BAA6B,EAAE,kBAAkB,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC;YACvE,CAAC,sBAAsB,EAAE,kBAAkB,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC;SACrE,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC;QAEd,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,IAAI,GAAU;YAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YACrB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC;YACvD,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC;SACxD,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC;QAEd,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CACrC,CAAC;QACF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,sEAAsE;QACtE,MAAM,IAAI,GAAU;YAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YACrB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,4BAA4B,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC;SAClE,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC;QAEd,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,4BAA4B,CAAC,CAAC;QAC7D,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,yCAAyC,CAAC,CAAC;QAC1D,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC5E,wEAAwE;QACxE,yEAAyE;QACzE,wBAAwB;QACxB,MAAM,IAAI,GAAU;YAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YACrB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC;SAC1D,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC;QAEd,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,IAAI,GAAU;YAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YACrB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC;SAC3D,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC;QAEd,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,IAAI,GAAU;YAClB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,qBAAqB,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,CAAC;SACpE,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC;QAEd,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,yEAAyE;QACzE,gEAAgE;QAChE,MAAM,QAAQ,GAAe,EAAE,CAAC;QAChC,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC1C,MAAM,OAAO,CAAC;QAEd,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC5B,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAC3D,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC7B,KAAK,MAAM,KAAK,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,kBAAkB,CAAC,EAAE,CAAC;YACnE,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,KAAK,WAAW,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,qEAAqE;QACrE,MAAM,QAAQ,GAAe,EAAE,CAAC;QAChC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,MAAM,GAAc,EAAE,CAAC;QAE7B,MAAM,kBAAkB,CACtB;YACE,WAAW,EAAE;gBACX,IAAI,EAAE,KAAK,EAAE,GAAW,EAAE,EAAE;oBAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;oBACvB,IAAI,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC;wBAClB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;oBAChD,CAAC;oBACD,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;gBAC9D,CAAC;gBACD,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE;aACqB;YAC1C,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACpC,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;SAChB,EACD;YACE,QAAQ,EAAE,CAAC,GAAG,MAAM;YACpB,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE,IAAI;YACnB,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG;SACf,CACF,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACvB,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,yEAAyE;QACzE,wEAAwE;QACxE,iEAAiE;QACjE,wEAAwE;QACxE,mCAAmC;QACnC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,MAAM,GAAoB,EAAE,CAAC;QACnC,MAAM,OAAO,GAAU;YACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YACrB,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,CAAQ;SAC7D,CAAC;QAEF,MAAM,kBAAkB,CACtB;YACE,WAAW,EAAE;gBACX,IAAI,EAAE,KAAK,EAAE,GAAW,EAAE,EAAE;oBAC1B,IAAI,EAAE,KAAK,KAAK,CAAC;wBAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;oBACjE,MAAM,CAAC,EAAE,CACP,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAC/B,8DAA8D,CAC/D,CAAC;oBACF,OAAO;wBACL,OAAO,EAAE,EAAE;wBACX,OAAO;wBACP,KAAK,EAAE,OAAO,CAAC,MAAM;wBACrB,SAAS,EAAE,CAAC;qBACb,CAAC;gBACJ,CAAC;gBACD,SAAS,EAAE,CAAC,CAA2B,EAAE,EAAE,CACzC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBACtB,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;oBACV,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;oBACZ,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;oBACf,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;oBACjB,oDAAoD;oBACpD,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;iBAC9C,CAAC,CAAC;aACmC;YAC1C,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAkB,CAAC;YACrD,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;SAChB,EACD;YACE,QAAQ,EAAE,CAAC,GAAG,MAAM;YACpB,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE,IAAI;YACnB,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG;SACf,CACF,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,kCAAkC,CAAC,CAAC;QAC3D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;QAC9D,MAAM,CAAC,SAAS,CACd,KAAK,EAAE,KAAK,EACZ,EAAE,IAAI,EAAE,YAAY,EAAE,EACtB,iEAAiE,CAClE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,MAAM,CAAC,OAAO,CAClB,kBAAkB,CAChB;YACE,WAAW,EAAE;gBACX,IAAI,EAAE,KAAK,IAAI,EAAE;oBACf,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;gBACxC,CAAC;gBACD,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE;aACqB;YAC1C,aAAa,EAAE,GAAG,EAAE,GAAE,CAAC;YACvB,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;SAChB,EACD;YACE,QAAQ,EAAE,CAAC,GAAG,MAAM;YACpB,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE,IAAI;YACnB,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG;SACf,CACF,EACD,oBAAoB,CACrB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oEAAoE,EAAE,GAAG,EAAE;IAClF,0EAA0E;IAC1E,0EAA0E;IAC1E,oEAAoE;IACpE,0EAA0E;IAE1E,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,QAAQ,GAAe,EAAE,CAAC;QAChC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAC7B;YACE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YACrB,kEAAkE;YAClE,+CAA+C;YAC/C,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,CAAQ;SACjE,EACD,EAAE,EACF,QAAQ,CACT,CAAC;QAEF,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YAC7B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,KAAK,CACV,MAAM,CAAC,YAAY,EACnB,CAAC,EACD,kEAAkE;gBAChE,iDAAiD,CACpD,CAAC;YACF,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;YAC9D,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,uEAAuE;QACvE,mDAAmD;QACnD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;YAC9B,QAAQ,CAAC,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC;YAC1B,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,CAAQ;SACjE,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YAC7B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,mCAAmC,CAAC,CAAC;YACtE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,uEAAuE;QACvE,oEAAoE;QACpE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;YAC9B,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,CAAQ;SACjE,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YAC7B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,QAAQ,GAAe,EAAE,CAAC;QAChC,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QAE/D,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;YACvB,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC5B,+DAA+D;YAC/D,uEAAuE;YACvE,4BAA4B;YAC5B,MAAM,CAAC,EAAE,CACP,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAC7B,gCAAgC,CACjC,CAAC;YACF,MAAM,CAAC,EAAE,CACP,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,EACnC,kCAAkC,CACnC,CAAC;YACF,2DAA2D;YAC3D,MAAM,CAAC,EAAE,CACP,GAAG,CAAC,QAAQ,CAAC,iCAAiC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,EACjE,qDAAqD,CACtD,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"restore.test.js","sourceRoot":"","sources":["../../src/test/restore.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGnD,MAAM,IAAI,GAAG,oCAAoC,CAAC;AAClD,MAAM,GAAG,GAAG,oCAAoC,CAAC;AAEjD,wDAAwD;AACxD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;AACnD,MAAM,GAAG,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAQ7D,SAAS,UAAU,CAAC,QAAoB,EAAE,OAAc;IACtD,OAAO;QACL,IAAI,EAAE,KAAK,EAAE,GAAW,EAAE,EAAE;YAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;YACvB,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;QACvE,CAAC;QACD,SAAS,EAAE,CAAC,MAAgC,EAAE,EAAE,CAC9C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC3B,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;YACV,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;YACZ,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YACf,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;YACjB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;SACb,CAAC,CAAC;KACmC,CAAC;AAC7C,CAAC;AAgBD,SAAS,GAAG,CACV,OAAc,EACd,YAAqC,EAAE,EACvC,WAAuB,EAAE,EACzB,WAA0C;IAE1C,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,kBAAkB,CAChC;QACE,WAAW,EAAE,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC;QAC1C,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAkB,CAAC;QACrD,WAAW,EAAE,IAAI;QACjB,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;QACf,WAAW;KACZ,EACD;QACE,QAAQ,EAAE,CAAC,GAAG,MAAM;QACpB,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,IAAI;QACnB,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG;QACd,GAAG,SAAS;KACb,CACF,CAAC;IACF,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,GAAG,GAAG,OAAO,EAAE,GAAG,GAAG,OAAO,EAAE,EAAE,CAC5E,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,qBAAqB,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,GAAG,EAAE,EAAE,UAAU,CAAQ,CAAC;AAE/E,yEAAyE;AACzE,yEAAyE;AACzE,MAAM,SAAS,GAAG,CAAC,KAAoB,EAAmB,EAAE,CAC1D,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzC,MAAM,OAAO,GAAG,CAAC,KAAoB,EAAE,IAAY,EAAE,EAAE,CACrD,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAEhD,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;IACpD,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;QAE7B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACrC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YAC/C,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE;SAC7C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;QAClF,oEAAoE;QACpE,mEAAmE;QACnE,sDAAsD;QACtD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5D,MAAM,OAAO,CAAC;QAEd,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,mEAAmE;QACnE,sEAAsE;QACtE,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;QACjC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,OAAO,CAAC;QAEd,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACvD,MAAM,CAAC,QAAQ,CACb,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAC9B,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAC5B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,OAAO,CAAC;QAEd,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,wEAAwE;QACxE,qEAAqE;QACrE,2CAA2C;QAC3C,MAAM,IAAI,GAAU;YAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YACrB,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,UAAU,CAAC;SAC1D,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC;QAEd,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAE1C,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,qBAAqB,CAAC,CACvD,CAAC;QACF,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CACpC,CAAC;QAEF,MAAM,CAAC,EAAE,CAAC,SAAS,IAAI,UAAU,CAAC,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACvB,MAAM,IAAI,GAAU;YAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YACrB,CAAC,EAAE,EAAE,4BAA4B,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC;SACzD,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC;QAEd,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,IAAI,GAAU;YAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YACrB,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,UAAU,CAAC;SAC1D,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;QAE7B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,uEAAuE;QACvE,+DAA+D;QAC/D,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;QAE7B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,OAAO,CAAC;QAEd,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,qEAAqE;QACrE,qCAAqC;QACrC,MAAM,GAAG,GAAQ;YACf,iBAAiB;YACjB,qBAAqB;YACrB,GAAG;YACH,aAAa;YACb,UAAU;SACX,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;QAE7B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;QAC1C,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;QACjE,MAAM,OAAO,CAAC;QAEd,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,uEAAuE;QACvE,4DAA4D;QAC5D,MAAM,QAAQ,GAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;QAC5E,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;QAE7B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,IAAI,GAAU;YAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YACrB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,UAAU,CAAC;SACvD,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC;QAEd,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,qEAAqE;QACrE,wDAAwD;QACxD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,yEAAyE;QACzE,MAAM,IAAI,GAAU;YAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YACrB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC;SAClD,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC;QAEd,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACzC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/D,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,MAAM,OAAO,CAAC;QAEd,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/D,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9D,MAAM,OAAO,CAAC;QAEd,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,wEAAwE;QACxE,gEAAgE;QAChE,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;QACrC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;QAE7B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,KAAK,GAAG,oCAAoC,CAAC;QACnD,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9D,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;QAE7B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,oEAAoE;QACpE,6DAA6D;QAC7D,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;YAClE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,CAAC;QAEd,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;IACrD,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,mEAAmE;QACnE,iEAAiE;QACjE,MAAM,IAAI,GAAU;YAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YACrB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC;YACvD,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC;SACxD,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC;QAEd,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;QACrD,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,4EAA4E;QAC5E,yEAAyE;QACzE,gEAAgE;QAChE,MAAM,IAAI,GAAU;YAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YACrB,CAAC,6BAA6B,EAAE,kBAAkB,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC;YACvE,CAAC,sBAAsB,EAAE,kBAAkB,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC;SACrE,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC;QAEd,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,IAAI,GAAU;YAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YACrB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC;YACvD,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC;SACxD,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC;QAEd,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CACrC,CAAC;QACF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,sEAAsE;QACtE,MAAM,IAAI,GAAU;YAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YACrB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,4BAA4B,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC;SAClE,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC;QAEd,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,4BAA4B,CAAC,CAAC;QAC7D,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,yCAAyC,CAAC,CAAC;QAC1D,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC5E,wEAAwE;QACxE,yEAAyE;QACzE,wBAAwB;QACxB,MAAM,IAAI,GAAU;YAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YACrB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC;SAC1D,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC;QAEd,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,IAAI,GAAU;YAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YACrB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC;SAC3D,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC;QAEd,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,IAAI,GAAU;YAClB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,qBAAqB,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,CAAC;SACpE,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC;QAEd,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,yEAAyE;QACzE,gEAAgE;QAChE,MAAM,QAAQ,GAAe,EAAE,CAAC;QAChC,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC1C,MAAM,OAAO,CAAC;QAEd,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC5B,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAC3D,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC7B,KAAK,MAAM,KAAK,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,kBAAkB,CAAC,EAAE,CAAC;YACnE,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,KAAK,WAAW,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,qEAAqE;QACrE,MAAM,QAAQ,GAAe,EAAE,CAAC;QAChC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,MAAM,GAAc,EAAE,CAAC;QAE7B,MAAM,kBAAkB,CACtB;YACE,WAAW,EAAE;gBACX,IAAI,EAAE,KAAK,EAAE,GAAW,EAAE,EAAE;oBAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;oBACvB,IAAI,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC;wBAClB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;oBAChD,CAAC;oBACD,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;gBAC9D,CAAC;gBACD,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE;aACqB;YAC1C,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACpC,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;SAChB,EACD;YACE,QAAQ,EAAE,CAAC,GAAG,MAAM;YACpB,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE,IAAI;YACnB,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG;SACf,CACF,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACvB,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,yEAAyE;QACzE,wEAAwE;QACxE,iEAAiE;QACjE,wEAAwE;QACxE,mCAAmC;QACnC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,MAAM,GAAoB,EAAE,CAAC;QACnC,MAAM,OAAO,GAAU;YACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YACrB,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,CAAQ;SAC7D,CAAC;QAEF,MAAM,kBAAkB,CACtB;YACE,WAAW,EAAE;gBACX,IAAI,EAAE,KAAK,EAAE,GAAW,EAAE,EAAE;oBAC1B,IAAI,EAAE,KAAK,KAAK,CAAC;wBAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;oBACjE,MAAM,CAAC,EAAE,CACP,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAC/B,8DAA8D,CAC/D,CAAC;oBACF,OAAO;wBACL,OAAO,EAAE,EAAE;wBACX,OAAO;wBACP,KAAK,EAAE,OAAO,CAAC,MAAM;wBACrB,SAAS,EAAE,CAAC;qBACb,CAAC;gBACJ,CAAC;gBACD,SAAS,EAAE,CAAC,CAA2B,EAAE,EAAE,CACzC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBACtB,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;oBACV,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;oBACZ,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;oBACf,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;oBACjB,oDAAoD;oBACpD,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;iBAC9C,CAAC,CAAC;aACmC;YAC1C,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAkB,CAAC;YACrD,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;SAChB,EACD;YACE,QAAQ,EAAE,CAAC,GAAG,MAAM;YACpB,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE,IAAI;YACnB,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG;SACf,CACF,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,kCAAkC,CAAC,CAAC;QAC3D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;QAC9D,MAAM,CAAC,SAAS,CACd,KAAK,EAAE,KAAK,EACZ,EAAE,IAAI,EAAE,YAAY,EAAE,EACtB,iEAAiE,CAClE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,MAAM,CAAC,OAAO,CAClB,kBAAkB,CAChB;YACE,WAAW,EAAE;gBACX,IAAI,EAAE,KAAK,IAAI,EAAE;oBACf,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;gBACxC,CAAC;gBACD,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE;aACqB;YAC1C,aAAa,EAAE,GAAG,EAAE,GAAE,CAAC;YACvB,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;SAChB,EACD;YACE,QAAQ,EAAE,CAAC,GAAG,MAAM;YACpB,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE,IAAI;YACnB,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG;SACf,CACF,EACD,oBAAoB,CACrB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oEAAoE,EAAE,GAAG,EAAE;IAClF,0EAA0E;IAC1E,0EAA0E;IAC1E,oEAAoE;IACpE,0EAA0E;IAE1E,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,QAAQ,GAAe,EAAE,CAAC;QAChC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAC7B;YACE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YACrB,kEAAkE;YAClE,+CAA+C;YAC/C,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,CAAQ;SACjE,EACD,EAAE,EACF,QAAQ,CACT,CAAC;QAEF,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YAC7B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,KAAK,CACV,MAAM,CAAC,YAAY,EACnB,CAAC,EACD,kEAAkE;gBAChE,iDAAiD,CACpD,CAAC;YACF,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;YAC9D,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,2EAA2E;QAC3E,yEAAyE;QACzE,2EAA2E;QAC3E,yEAAyE;QACzE,iDAAiD;QACjD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;YAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YACrB,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,uBAAuB,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAQ;YACvE,yEAAyE;YACzE,yEAAyE;YACzE,uEAAuE;YACvE;gBACE,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC;gBAChB,yBAAyB;gBACzB,GAAG;gBACH,SAAS;gBACT,IAAI;aACE;SACT,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YAC7B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,KAAK,CACV,MAAM,CAAC,YAAY,EACnB,CAAC,EACD,uEAAuE,CACxE,CAAC;YACF,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC;YAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC;YAC9D,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,wCAAwC,CAAC,CAAC;YACzE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,wEAAwE;QACxE,2EAA2E;QAC3E,2EAA2E;QAC3E,wCAAwC;QACxC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;YAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YACrB,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,uBAAuB,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAQ;SACxE,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YAC7B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;YACrC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC;YAC1D,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,yCAAyC,CAAC,CAAC;YAC1E,sEAAsE;YACtE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,yBAAyB,CAAC,EAAE,SAAS,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,uEAAuE;QACvE,mDAAmD;QACnD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;YAC9B,QAAQ,CAAC,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC;YAC1B,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,CAAQ;SACjE,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YAC7B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,mCAAmC,CAAC,CAAC;YACtE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,uEAAuE;QACvE,oEAAoE;QACpE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;YAC9B,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,CAAQ;SACjE,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YAC7B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,QAAQ,GAAe,EAAE,CAAC;QAChC,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QAE/D,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;YACvB,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC5B,+DAA+D;YAC/D,uEAAuE;YACvE,4BAA4B;YAC5B,MAAM,CAAC,EAAE,CACP,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAC7B,gCAAgC,CACjC,CAAC;YACF,MAAM,CAAC,EAAE,CACP,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,EACnC,kCAAkC,CACnC,CAAC;YACF,2DAA2D;YAC3D,MAAM,CAAC,EAAE,CACP,GAAG,CAAC,QAAQ,CAAC,iCAAiC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,EACjE,qDAAqD,CACtD,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "signalk-questdb",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "QuestDB history provider for Signal K — replaces signalk-to-influxdb",
|
|
6
6
|
"keywords": [
|
|
@@ -26,8 +26,9 @@
|
|
|
26
26
|
"typecheck:panel": "tsc -p src/configpanel --noEmit",
|
|
27
27
|
"watch": "tsc --watch",
|
|
28
28
|
"prettier": "prettier --write .",
|
|
29
|
-
"lint": "eslint
|
|
30
|
-
"
|
|
29
|
+
"lint": "eslint",
|
|
30
|
+
"lint:fix": "eslint --fix",
|
|
31
|
+
"format": "npm run prettier && npm run lint:fix",
|
|
31
32
|
"ci-lint": "eslint && prettier --check .",
|
|
32
33
|
"test": "node --test 'dist/test/**/*.test.js'",
|
|
33
34
|
"build:all": "npm run build && npm test && npm run test:panel",
|
|
@@ -47,7 +48,7 @@
|
|
|
47
48
|
"dependencies": {
|
|
48
49
|
"@js-temporal/polyfill": "^0.5.0",
|
|
49
50
|
"minimatch": "^10.2.3",
|
|
50
|
-
"signalk-container-helper": "^0.
|
|
51
|
+
"signalk-container-helper": "^0.7.0",
|
|
51
52
|
"typebox": "^1.3.11"
|
|
52
53
|
},
|
|
53
54
|
"devDependencies": {
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import{a as e,i as t,n,r,t as i}from"./_virtual_mf___mfe_internal__signalk_questdb__mf_owner__1__loadShare__react__loadShare__.js-DzhF4wXp.js";var a={root:{fontFamily:`-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`,color:`#333`,padding:`16px 0`},sectionToggle:{color:`#555`,display:`flex`,alignItems:`center`,gap:6,width:`100%`,textAlign:`left`,background:`none`,border:`none`,padding:0,cursor:`pointer`,userSelect:`none`},sectionMarker:{fontSize:11,transition:`transform 0.15s`},sectionTitle:{fontSize:13,fontWeight:600,color:`#888`,textTransform:`uppercase`,letterSpacing:`0.05em`,marginBottom:10,marginTop:24},btn:{display:`inline-flex`,alignItems:`center`,gap:8,padding:`8px 16px`,border:`none`,borderRadius:6,fontSize:13,fontWeight:600,cursor:`pointer`},btnPrimary:{background:`#3b82f6`,color:`#fff`},btnSecondary:{background:`#f1f5f9`,color:`#475569`,border:`1px solid #e2e8f0`},btnWarn:{background:`#f59e0b`,color:`#fff`},btnDanger:{background:`#ef4444`,color:`#fff`},btnDisabled:{opacity:.5,cursor:`not-allowed`},btnSmall:{padding:`4px 12px`,fontSize:12},status:{marginTop:8,fontSize:12,minHeight:18},card:{display:`flex`,alignItems:`center`,gap:14,padding:`14px 18px`,background:`#f8f9fa`,border:`1px solid #e0e0e0`,borderRadius:10,marginBottom:12},cardIcon:{width:44,height:44,borderRadius:10,display:`flex`,alignItems:`center`,justifyContent:`center`,fontSize:20,fontWeight:700,flexShrink:0},cardInfo:{flex:1},cardTitle:{fontSize:15,fontWeight:600,color:`#333`},cardMeta:{fontSize:12,color:`#888`},stateIndicator:{width:10,height:10,borderRadius:`50%`,flexShrink:0},fieldRow:{display:`flex`,alignItems:`center`,gap:12,marginBottom:10},label:{fontSize:13,fontWeight:500,color:`#555`,width:180,flexShrink:0},select:{padding:`6px 10px`,borderRadius:6,border:`1px solid #ccc`,fontSize:13,background:`#fff`,color:`#333`,minWidth:200},input:{padding:`6px 10px`,borderRadius:6,border:`1px solid #ccc`,fontSize:13,background:`#fff`,color:`#333`,width:200},inputSmall:{padding:`6px 10px`,borderRadius:6,border:`1px solid #ccc`,fontSize:13,background:`#fff`,color:`#333`,width:80},checkbox:{width:16,height:16,accentColor:`#3b82f6`},hint:{fontSize:11,color:`#aaa`,marginLeft:8},link:{color:`#3b82f6`,textDecoration:`none`,fontSize:13,fontWeight:600},textarea:{padding:`6px 10px`,borderRadius:6,border:`1px solid #ccc`,fontSize:13,fontFamily:`monospace`,background:`#fff`,color:`#333`,width:`100%`,minHeight:70,boxSizing:`border-box`,resize:`vertical`},empty:{textAlign:`center`,padding:`30px 16px`,color:`#999`,fontSize:13},tag:{display:`inline-block`,padding:`2px 8px`,borderRadius:4,fontSize:10,fontWeight:600,marginLeft:8},tagPre:{background:`#fef3c7`,color:`#92400e`},tagLatest:{background:`#dcfce7`,color:`#166534`},warnBanner:{padding:`12px 16px`,background:`#fef2f2`,border:`1px solid #fecaca`,borderRadius:10,marginBottom:12,fontSize:13,color:`#991b1b`,lineHeight:1.5},warnBannerTitle:{fontWeight:700,marginBottom:4},infoBanner:{padding:`12px 16px`,background:`#fffbeb`,border:`1px solid #fde68a`,borderRadius:10,marginBottom:12,fontSize:13,color:`#92400e`,lineHeight:1.5},bannerCode:{display:`block`,marginTop:8,padding:`8px 10px`,background:`#fff`,border:`1px solid #fecaca`,borderRadius:6,fontFamily:`monospace`,fontSize:12,color:`#7f1d1d`,whiteSpace:`pre-wrap`,wordBreak:`break-word`},statsGrid:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(140px, 1fr))`,gap:10,marginBottom:12},statCard:{padding:`12px 16px`,background:`#f8f9fa`,border:`1px solid #e0e0e0`,borderRadius:10,textAlign:`center`},statValue:{fontSize:22,fontWeight:700,color:`#333`},statLabel:{fontSize:11,color:`#888`,marginTop:2}},o={ok:`#10b981`,warn:`#f59e0b`,error:`#ef4444`};function s(e,t){if(!e)return{versions:null,versionsError:`⚠ Could not reach GitHub — showing last known versions, retry`};let n=t&&typeof t==`object`?t:{},r=Array.isArray(n)?n:Array.isArray(n.versions)?n.versions:[],i=!Array.isArray(n)&&n.sources&&typeof n.sources==`object`?n.sources:{},a=``;return i.prImages===`rate-limited`?a=`⚠ GitHub rate-limited — PR test images temporarily unavailable, retry shortly`:i.releases===`rate-limited`?a=`⚠ GitHub rate-limited — some versions temporarily unavailable, retry shortly`:(i.prImages===`error`||i.releases===`error`)&&(a=`⚠ Could not fetch some versions from GitHub, retry`),{versions:r,versionsError:a}}function c(e,t={}){let{stableCount:n=5,preCount:r=3}=t,i=e.filter(e=>typeof e.pr==`number`),a=e.filter(e=>typeof e.pr!=`number`);return{prVersions:i,stableVersions:a.filter(e=>!e.prerelease).slice(0,n),preVersions:a.filter(e=>e.prerelease).slice(0,r)}}function l(e,t=[`latest`],n={}){let{prVersions:r,stableVersions:i,preVersions:a}=c(e,n);return new Set([...t,...a.map(e=>e.tag),...i.map(e=>e.tag),...r.map(e=>e.tag)])}function u(e,t,n=[`latest`],r={}){return e?l(t,n,r).has(e)?null:e:null}function d(e){return e==null?`—`:e>=1e6?(e/1e6).toFixed(1)+`M`:e>=1e3?(e/1e3).toFixed(1)+`K`:String(e)}function f(i,a={}){let{intervalMs:o=5e3}=a,[s,c]=e(null),[l,u]=e(!0),d=t(0),f=t(a.fallback??null),p=n(async e=>{let t=++d.current,n=f.current;try{let t=await(await fetch(i,{signal:e})).json().catch(()=>null);t&&typeof t==`object`&&(n=t)}catch{}t===d.current&&(c(n),u(!1))},[i]);return r(()=>{let e=!1,t=null,n=new AbortController,r=async()=>{await p(n.signal),!e&&o>0&&(t=setTimeout(()=>void r(),o))};return r(),()=>{e=!0,n.abort(),t&&clearTimeout(t)}},[p,o]),{status:s,loading:l,refresh:()=>p()}}function p(i){let[a,o]=e([]),[c,l]=e(``),[u,d]=e(!1),f=t(0),p=n(async()=>{let e=++f.current;d(!0);try{let t=await fetch(i),n=await t.json().catch(()=>null),r=s(t.ok,n);if(e!==f.current)return;r.versions!==null&&o(r.versions),l(r.versionsError)}catch{if(e!==f.current)return;l(`⚠ Offline — showing last known versions`)}d(!1)},[i]);return r(()=>{p()},[p]),{versions:a,versionsError:c,loading:u,refresh:p}}function m({children:e,color:t}){return i.createElement(`span`,{style:{...a.hint,...t?{color:t}:{}}},e)}function h({state:e=`ok`,color:t,title:n,style:r}){return i.createElement(`div`,{style:{...a.stateIndicator,background:t??o[e],...r},title:n})}function ee({icon:e,iconBackground:t,iconColor:n,title:r,meta:s,state:c=`ok`,stateTitle:l,link:u,children:d}){let f=c===`error`&&!t;return i.createElement(`div`,{style:a.card},i.createElement(`div`,{style:{...a.cardIcon,background:f?`#fef2f2`:t??`#3b82f6`,color:f?o.error:n??`#fff`}},e),i.createElement(`div`,{style:a.cardInfo},i.createElement(`div`,{style:a.cardTitle},r),s!=null&&i.createElement(`div`,{style:a.cardMeta},s)),d,u&&i.createElement(`a`,{href:u.href,target:`_blank`,rel:`noopener noreferrer`,style:a.link},u.label),i.createElement(h,{state:c,title:l}))}function g({title:t,defaultOpen:n=!1,children:r}){let[o,s]=e(n);return i.createElement(`div`,null,i.createElement(`button`,{type:`button`,"aria-expanded":o,style:{...a.sectionTitle,...a.sectionToggle},onClick:()=>s(!o)},i.createElement(`span`,{style:{...a.sectionMarker,transform:o?`rotate(90deg)`:`rotate(0deg)`}},`▶`),t),o&&i.createElement(`div`,{style:{marginBottom:16}},r))}var _={primary:a.btnPrimary,secondary:a.btnSecondary,warn:a.btnWarn,danger:a.btnDanger};function v({variant:e=`primary`,small:t=!1,busy:n=!1,busyLabel:r,disabled:o=!1,onClick:s,title:c,style:l,children:u}){let d=o||n;return i.createElement(`button`,{type:`button`,style:{...a.btn,..._[e],...t?a.btnSmall:{},...d?a.btnDisabled:{},...l},onClick:s,disabled:d,title:c},n?r??u:u)}function te({message:e,error:t=!1,style:n}){return e?i.createElement(`div`,{style:{...a.status,color:t?o.error:o.ok,marginTop:16,...n}},e):null}var ne=[{tag:`latest`,label:`latest (recommended)`}];function re({value:e,onChange:t,versions:n,floatingOptions:r=ne,stableCount:s,preCount:l,loading:d=!1,error:f,onRefresh:p,disabled:h=!1,style:ee}){let g={stableCount:s,preCount:l},{prVersions:_,stableVersions:te,preVersions:re}=c(n,g),y=u(e,n,r.map(e=>e.tag),g);return i.createElement(i.Fragment,null,i.createElement(`select`,{style:{...a.select,...ee},value:e,onChange:e=>t(e.target.value),disabled:h},r.map(e=>i.createElement(`option`,{key:e.tag,value:e.tag},e.label??e.tag)),re.map(e=>i.createElement(`option`,{key:e.tag,value:e.tag},e.tag,` (pre-release)`)),te.map((e,t)=>i.createElement(`option`,{key:e.tag,value:e.tag},e.tag,t===0?` (current stable)`:``)),_.length>0&&i.createElement(`optgroup`,{label:`PR test images`},_.map(e=>i.createElement(`option`,{key:e.tag,value:e.tag},e.tag,e.title?` — ${e.title}`:``))),y&&i.createElement(`option`,{value:y},y,` (running)`)),d&&i.createElement(m,null,`loading releases...`),p&&i.createElement(v,{small:!0,style:{padding:`4px 10px`,fontSize:11},onClick:p,title:`Refresh available versions`},`↻`),f&&i.createElement(m,{color:o.error},f))}var y={...a,warnBannerCode:{display:`block`,marginTop:8,padding:`8px 10px`,background:`#fff`,border:`1px solid #fecaca`,borderRadius:6,fontFamily:`monospace`,fontSize:12,color:`#7f1d1d`,whiteSpace:`pre-wrap`,wordBreak:`break-word`},fieldHelp:{fontSize:12,color:`#666`,marginTop:6,lineHeight:1.5},migrationItem:{display:`flex`,alignItems:`center`,gap:12,padding:`12px 16px`,background:`#f8f9fa`,border:`1px solid #e0e0e0`,borderRadius:10,marginBottom:8},migrationActions:{display:`flex`,gap:8,alignItems:`center`}},b=e=>typeof e==`object`&&!!e;function ie(e){let t=b(e)?e.sources:void 0;return Array.isArray(t)?t.filter(e=>b(e)&&typeof e.type==`string`&&typeof e.url==`string`&&typeof e.status==`string`&&(e.version===void 0||typeof e.version==`string`)):[]}function ae(e){let t=b(e)?e.buckets:void 0;return Array.isArray(t)?t.filter(e=>b(e)&&typeof e.name==`string`&&(e.id===void 0||typeof e.id==`string`)&&(e.retentionSeconds===void 0||typeof e.retentionSeconds==`number`)):[]}function oe(e){let t=b(e)?e.measurements:void 0;return Array.isArray(t)?t.filter(e=>b(e)&&typeof e.name==`string`&&Array.isArray(e.fields)):[]}function x(e){let t=b(e)?e.run:void 0;if(!b(t)||typeof t.id!=`string`||typeof t.state!=`string`)return;let n=t.state;if(n!==`running`&&n!==`done`&&n!==`failed`&&n!==`cancelled`)return;let r=b(t.progress)?t.progress:{},i=e=>typeof e==`number`&&Number.isFinite(e)?e:0,a=e=>typeof e==`string`?e:void 0;return{id:t.id,state:n,url:a(t.url)??``,bucket:a(t.bucket)??``,startedAt:a(t.startedAt)??``,finishedAt:a(t.finishedAt),error:a(t.error),progress:{read:i(r.read),written:i(r.written),skipped:i(r.skipped),measurementsDone:i(r.measurementsDone),measurementsTotal:i(r.measurementsTotal),currentMeasurement:a(r.currentMeasurement),currentWindowStart:a(r.currentWindowStart)}}}function se(e,t){let n=new Date(e),r=new Date(t);return Number.isNaN(n.getTime())||Number.isNaN(r.getTime())?{error:`Enter a valid From and To date for the import.`}:r<=n?{error:`The To date must be after the From date.`}:{from:n.toISOString(),to:r.toISOString()}}function S(e){return e instanceof Error?e.message:String(e)}function C(e,t){return e??t}var ce=[`none`,`lz4`,`zstd`],le={padding:`4px 12px`,fontSize:12};function ue(e){return ce.includes(e)?e:`lz4`}function de({configuration:a,save:o}){let s=a||{},[c,l]=e(s.questdbHost||`127.0.0.1`),[u,m]=e(s.questdbIlpPort||9009),[h,_]=e(s.questdbHttpPort||9e3),[ne,b]=e(s.questdbPgPort||8812),[ce,de]=e(s.questdbVersion||`latest`),[w,fe]=e(s.managedContainer!==!1),[pe,me]=e(s.recordSelf!==!1),[he,ge]=e(s.recordOthers!==!1),[_e,ve]=e(s.restoreOnStart===!0),[ye,be]=e(s.enableConsole!==!1),[xe,Se]=e(s.historySourcePolicyAll===!0),[Ce,we]=e((s.restoreMaxAgeMinutes??0)>0?s.restoreMaxAgeMinutes:9),[Te,Ee]=e(s.defaultSamplingRate??2e3),[De,Oe]=e(String(s.ilpFlushIntervalMs??5e3)),[ke,Ae]=e(s.retentionDays||0),[je,Me]=e(s.pathFilter?.mode===`include`?`include`:`exclude`),[Ne,Pe]=e((Array.isArray(s.pathFilter?.paths)?s.pathFilter.paths:[]).join(`
|
|
2
|
+
`)),[Fe,Ie]=e(s.compression||`lz4`),[Le,Re]=e(s.compressionLevel||3),[ze,Be]=e(s.networkName||`sk-network`),[T,Ve]=e(s.exposeToContainers||!1),{versions:He,versionsError:Ue,loading:We,refresh:Ge}=p(`/plugins/signalk-questdb/api/versions`),{status:E,loading:Ke,refresh:D}=f(`/plugins/signalk-questdb/api/status`,{fallback:{status:`not_running`},intervalMs:5e3}),[O,qe]=e(null),[Je,Ye]=e(!1),[k,Xe]=e(``),[A,Ze]=e(null),[Qe,$e]=e(``),[et,tt]=e(``),[nt,rt]=e(``),[it,at]=e(``),[ot,st]=e(null),[j,M]=e(``),[N,ct]=e(null),[lt,P]=e(!1),[ut,dt]=e(``),[ft,pt]=e(``),[F,I]=e(null),[mt,ht]=e(!1),[gt,L]=e(``),[_t,R]=e(!1),[z,vt]=e(null),[yt,bt]=e(!1),[xt,St]=e(!1),[Ct,wt]=e(!1),[Tt,Et]=e(!1),[Dt,B]=e(``),[V,Ot]=e(null),[kt,H]=e(!1),U=t(0),[At,jt]=e(!1),W=n(async e=>{let t=++U.current;try{let n=await fetch(`/plugins/signalk-questdb/api/wal-diagnosis`,{signal:e});if(t!==U.current)return;if(n.ok){let e=await n.json();if(t!==U.current)return;Ot(e),H(!1)}else H(!0)}catch{t===U.current&&H(!0)}},[]),Mt=!!(E&&E.status===`running`&&(E.suspendedTables||[]).length>0);r(()=>{if(!Mt){Ot(null),H(!1);return}let e=!1,t=null,n=new AbortController,r=async()=>{await W(n.signal),e||(t=setTimeout(r,15e3))};return r(),()=>{e=!0,n.abort(),t&&clearTimeout(t)}},[Mt,W]);let Nt=async(e,t)=>{let n=t.tailSkip?`
|
|
3
|
+
|
|
4
|
+
WARNING: this is the newest pending segment — skipping it drops the ENTIRE pending backlog.`:``;if(window.confirm(`Skip the unreadable WAL segment on ${e}?\n\nThis permanently loses ${d(t.skippedTxns)} transaction(s) recorded between ${t.skipWindowStart} and ${t.skipWindowEnd}. Everything after the skipped segment is replayed without loss.`+n)){jt(!0),B(``);try{let n=await fetch(`/plugins/signalk-questdb/api/resume-wal/skip`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({table:e,confirmPlan:t})}),r=await n.json().catch(()=>({error:n.statusText}));n.ok?B(r.message??``):B(`Skip failed: ${C(r.error,`unknown error`)}`),D(),W()}catch(e){B(`Skip failed: ${S(e)}`)}jt(!1)}},Pt=async()=>{bt(!0);try{let e=await fetch(`/plugins/signalk-questdb/api/update/check`);e.ok&&vt(await e.json())}catch{}bt(!1)},Ft=async()=>{St(!0),L(`Pulling new image and restarting...`),R(!1);try{let e=await fetch(`/plugins/signalk-questdb/api/update/apply`,{method:`POST`});if(e.ok){let t=await e.json();L(t.message??``),vt(null),t.newVersion&&de(t.newVersion),D()}else{let t=await e.json().catch(()=>({error:e.statusText}));L(`Update failed: ${C(t.error,`unknown error`)}`),R(!0)}}catch(e){L(`Update failed: ${S(e)}`),R(!0)}St(!1)},It=async()=>{if(window.confirm(`Remove the QuestDB container and DELETE ALL recorded data? This cannot be undone.`)){wt(!0),L(`Removing QuestDB container and data...`),R(!1);try{let e=await fetch(`/plugins/signalk-questdb/api/purge-data`,{method:`POST`}),t=await e.json().catch(()=>({error:e.statusText}));e.ok?(L(t.message??``),D()):(L(`Remove failed: ${C(t.error,`unknown error`)}`),R(!0))}catch(e){L(`Remove failed: ${S(e)}`),R(!0)}wt(!1)}},Lt=async()=>{Et(!0),B(``);try{let e=await fetch(`/plugins/signalk-questdb/api/resume-wal`,{method:`POST`}),t=await e.json().catch(()=>({error:e.statusText}));if(e.ok){let e=(t.results||[]).filter(e=>!e.ok);B(e.length===0?`${C(t.message,`Resume requested`)}. Recording resumes as the backlog drains — the banner clears once tables catch up.`:`${C(t.message,`Resume requested`)}. `+e.map(e=>`${e.table}: ${e.error}`).join(` · `)),D(),W()}else B(`Resume failed: ${C(t.error,`unknown error`)}`)}catch(e){B(`Resume failed: ${S(e)}`)}Et(!1)},Rt=async()=>{Ye(!0),L(``);try{let e=k?`?url=${encodeURIComponent(k)}`:``,t=await fetch(`/plugins/signalk-questdb/api/migration/detect${e}`);if(t.ok){let e=ie(await t.json().catch(()=>null));qe(e),e.length===0&&(L(k?`No InfluxDB found at ${k}.`:`No InfluxDB instances detected on localhost:8086.`),R(!1))}}catch(e){L(`Detection failed: `+S(e)),R(!0)}Ye(!1)},G=n(()=>({token:Qe||void 0,org:et||void 0,username:nt||void 0,password:it||void 0}),[Qe,et,nt,it]),zt=n(async(e,t=G())=>{P(!0),L(``),M(``);try{let n=await fetch(`/plugins/signalk-questdb/api/migration/buckets`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({url:e.url,type:e.type,...t})}),r=await n.json().catch(()=>null),i=ae(r);st(i),n.ok?i.length===0?(L(`No buckets found. InfluxDB 2.x needs an API token with read access.`),R(!0)):i.length===1&&M(i[0].name):(L(r?.error??`Could not list buckets.`),R(!0))}catch(e){L(`Could not list buckets: `+S(e)),R(!0)}P(!1)},[G]),Bt=n(async()=>{if(!(!A||!j)){P(!0);try{let e=await fetch(`/plugins/signalk-questdb/api/migration/measurements`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({url:A.url,type:A.type,bucket:j,...G()})}),t=await e.json().catch(()=>null),n=oe(t);ct(n),e.ok||(L(t?.error??`Could not list measurements.`),R(!0))}catch(e){L(`Could not list measurements: `+S(e)),R(!0)}P(!1)}},[A,j,G]),Vt=async()=>{if(!A||!j)return;let e=se(ut,ft);if(`error`in e){L(e.error),R(!0);return}ht(!0),L(``);try{let t=await fetch(`/plugins/signalk-questdb/api/migration/start`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({url:A.url,type:A.type,bucket:j,...G(),from:e.from,to:e.to})}),n=await t.json().catch(()=>null);t.ok?I(x(n)??null):(L(n?.error??`Could not start migration.`),R(!0))}catch(e){L(`Could not start migration: `+S(e)),R(!0)}ht(!1)},Ht=async()=>{try{let e=await(await fetch(`/plugins/signalk-questdb/api/migration/cancel`,{method:`POST`})).json().catch(()=>null);I(x(e)??F)}catch(e){L(`Could not cancel: `+S(e)),R(!0)}};r(()=>{if(F?.state!==`running`)return;let e=!1,t,n=async()=>{try{let t=await fetch(`/plugins/signalk-questdb/api/migration/status`),n=x(await t.json().catch(()=>null));e||(n?I(n):t.ok&&(I(null),L(`The import stopped because the plugin restarted. Re-run it to continue — already-imported rows are not duplicated.`),R(!0)))}catch{}e||(t=setTimeout(n,1e3))};return t=setTimeout(n,1e3),()=>{e=!0,clearTimeout(t)}},[F?.state]),r(()=>{let e=!1;return(async()=>{try{let t=x(await(await fetch(`/plugins/signalk-questdb/api/migration/status`)).json().catch(()=>null));!e&&t&&I(t)}catch{}})(),()=>{e=!0}},[]);let[K,Ut]=e(``),[Wt,Gt]=e(``),[q,Kt]=e(`parquet`),[qt,J]=e(!1),Jt=()=>{let e=Number(De);if(De===``||!Number.isFinite(e)||e<500||e>3e5){L(`Write batch interval must be 500–300000 ms.`),R(!0);return}o({...s,questdbHost:c,questdbIlpPort:u,questdbHttpPort:h,questdbPgPort:ne,questdbVersion:ce,managedContainer:w,defaultSamplingRate:Te,ilpFlushIntervalMs:e,recordSelf:pe,recordOthers:he,restoreOnStart:_e,historySourcePolicyAll:xe,enableConsole:ye,restoreMaxAgeMinutes:Ce,retentionDays:ke,compression:Fe,compressionLevel:Le,networkName:ze,exposeToContainers:T,pathFilter:{mode:je,paths:Ne.split(`
|
|
5
|
+
`).map(e=>e.trim()).filter(Boolean)},samplingRates:s.samplingRates||{}}),L(`Saved! Plugin will restart with new configuration.`),R(!1)},Yt=async()=>{if(!K||!Wt){L(`Set both from and to dates for export.`),R(!0);return}J(!0),L(`Exporting ${q.toUpperCase()}...`),R(!1);try{let e=`/plugins/signalk-questdb/api/export?from=${encodeURIComponent(K)}&to=${encodeURIComponent(Wt)}&format=${q}`,t=await fetch(e);if(!t.ok){let e=await t.json().catch(()=>({error:t.statusText}));L(`Export failed: ${C(e.error,`unknown error`)}`),R(!0),J(!1);return}let n=await t.blob(),r=q===`parquet`?`parquet`:`csv`,i=document.createElement(`a`);i.href=URL.createObjectURL(n),i.download=`signalk-export-${K.slice(0,10)}.${r}`,i.click(),URL.revokeObjectURL(i.href),L(`Exported ${(n.size/1024/1024).toFixed(1)} MB`)}catch(e){L(`Export failed: ${S(e)}`),R(!0)}J(!1)},Y=E&&E.status===`running`,X=Y&&E.suspendedTables||[],Z=X.length>0,Xt=Y&&E.schemaMismatch||!1,Q=Y&&E.ulimitClamp||null,Zt=Q!==null&&Q.granted<=0,$=E?.hostMaxMapCount?.tooLow&&E.hostMaxMapCount||null;return i.createElement(`div`,{style:y.root},i.createElement(`div`,{style:y.sectionTitle},`QuestDB Status`),$&&i.createElement(`div`,{style:y.infoBanner},i.createElement(`div`,{style:y.warnBannerTitle},`Host vm.max_map_count is low — `,d($.current),` `,`(QuestDB recommends `,d($.recommended),`)`),`QuestDB memory-maps every partition and WAL segment it touches. As the database grows, this kernel limit can run out — mmap then fails with out-of-memory errors even though RAM is free, which shows up as slow or failing history queries, can suspend recording, and can take QuestDB down entirely. Run this in a shell on the host machine — not inside the QuestDB container, which can neither change the kernel-global limit nor has sudo (takes effect immediately, no restart needed):`,i.createElement(`code`,{style:y.warnBannerCode},`echo 'vm.max_map_count=${$.recommended}' | sudo tee /etc/sysctl.d/99-questdb.conf && sudo sysctl --system`)),Ke?i.createElement(`div`,{style:y.empty},`Checking QuestDB...`):Y?i.createElement(i.Fragment,null,Z&&i.createElement(`div`,{style:y.warnBanner},i.createElement(`div`,{style:y.warnBannerTitle},`QuestDB WAL suspended — recording stalled`),`Rows are arriving but no longer commit, so the counts below have stopped advancing. This follows an error while QuestDB applied the write-ahead log — see the reason reported per table below. Resuming replays every pending transaction, so no data is lost.`,i.createElement(`code`,{style:y.warnBannerCode},X.map(e=>{let t=String(e.errorMessage||e.errorTag||`reason not reported`).replace(/[\r\n]+/g,` `),n=(V?.tables||[]).find(t=>t.name===e.name),r=n?.suspendedSince?` — frozen since ${n.suspendedSince}`:``;return`${e.name}: ${d(e.txnLag)} txns behind — ${t}${r}`}).join(`
|
|
6
|
+
`)),(V?.tables||[]).filter(e=>e.applyError).map(e=>i.createElement(`div`,{key:e.name,style:{marginTop:8,fontSize:12}},`QuestDB's own log reports the apply failure on`,` `,i.createElement(`code`,null,e.name),` as:`,i.createElement(`code`,{style:y.warnBannerCode},e.applyError))),i.createElement(`div`,{style:{marginTop:10}},i.createElement(v,{variant:`primary`,busy:Tt,busyLabel:`Resuming...`,disabled:At,onClick:Lt},`Resume recording`)),X.filter(e=>e.autoResume===`failed`).map(e=>{let t=(V?.tables||[]).find(t=>t.name===e.name);if(t?.partitionOpenFailure)return i.createElement(`div`,{key:e.name,style:{marginTop:12}},i.createElement(`div`,{style:y.warnBannerTitle},e.name,`: table data damaged — automatic repair not possible`),`QuestDB fails while opening this table's stored data, before it reaches any pending transaction. That means the commit record on disk describes rows whose data never made it to storage — the signature of a power loss during a write. Skipping transactions cannot fix this (the failure happens before them) and would discard the `,d(e.txnLag),` pending transactions for nothing, so no repair button is offered. Recovering this table means repairing its commit record by hand; please open an issue with the error above. Recording continues into the other tables, and “Resume recording” will re-suspend this one within milliseconds — it is safe to press, but it cannot repair this damage.`);let n=t?.skipPlan;return n?i.createElement(`div`,{key:e.name,style:{marginTop:12}},i.createElement(`div`,{style:y.warnBannerTitle},e.name,`: automatic resume failed — WAL segment unreadable`),`A lossless resume was attempted and the table re-suspended at the same transaction: the write-ahead-log segment at the stall point cannot be read back (typically corrupted by an unclean shutdown mid-write). Replaying can never get past it. The only repair is to skip the unreadable segment, losing`,` `,i.createElement(`b`,null,d(n.skippedTxns),` transaction(s)`),` `,`recorded between `,i.createElement(`b`,null,n.skipWindowStart),` and`,` `,i.createElement(`b`,null,n.skipWindowEnd),n.tailSkip?` — and this is the newest pending segment, so skipping it drops the ENTIRE pending backlog`:` — everything after the skipped segment (${d(Math.max(0,e.txnLag-n.skippedTxns))} txns) is replayed without loss`,`.`,i.createElement(`div`,{style:{marginTop:8}},i.createElement(v,{variant:`danger`,busy:At,busyLabel:`Skipping...`,disabled:Tt||kt,onClick:()=>Nt(e.name,n)},`Skip unreadable segment (loses data)`),kt&&i.createElement(`div`,{style:{marginTop:6,fontSize:12}},`The diagnosis could not be refreshed — the numbers above may be stale. The skip re-enables once a refresh succeeds.`))):null}),i.createElement(`div`,{style:{marginTop:8,fontSize:12}},`Manual fallback in the QuestDB SQL console (`,i.createElement(`code`,null,`:9000`),`), one statement at a time — avoid running it from several tabs, the console retries a busy statement forever:`,i.createElement(`code`,{style:y.warnBannerCode},X.map(e=>{let t=`"${String(e.name).replace(/"/g,`""`)}"`,n=(V?.tables||[]).find(t=>t.name===e.name),r=[`ALTER TABLE ${t} RESUME WAL;`];return e.autoResume===`failed`&&n?.skipPlan&&!kt&&r.push(`-- if the resume re-suspends: skip the unreadable segment (loses ${d(n.skipPlan.skippedTxns)} txns)`,`ALTER TABLE ${t} RESUME WAL FROM TXN ${n.skipPlan.skipToTxn};`),r.join(`
|
|
7
|
+
`)}).join(`
|
|
8
|
+
`)))),Dt&&i.createElement(`div`,{style:y.infoBanner},Dt),Xt&&i.createElement(`div`,{style:y.warnBanner},i.createElement(`div`,{style:y.warnBannerTitle},`QuestDB table schema mismatch — data not readable`),`A QuestDB table was re-created by ILP ingestion with the wrong timestamp column, so rows are being stored but reads filtering on time (history, Grafana, and the counts above) return nothing. The plugin rebuilds the affected table with the correct schema automatically within a minute; if this persists, restart the plugin. (The few rows written into the wrong-schema table are lost — they were unreadable anyway.)`),Q&&i.createElement(`div`,{style:y.infoBanner},i.createElement(`div`,{style:y.warnBannerTitle},Zt?`QuestDB open-files request rejected by the host`:`QuestDB open-files limit capped by the host`),Zt?i.createElement(i.Fragment,null,`QuestDB requested a `,i.createElement(`code`,null,Q.ulimit),` limit of`,` `,d(Q.requested),`, but the container host rejected it, so QuestDB is running with the runtime's default limits. This is typical for podman machine on macOS, where the limits live inside the VM and cannot be read from here. Raise the limits of the service that runs the container runtime (on macOS: inside the VM, via`,` `,i.createElement(`code`,null,`podman machine ssh`),`), then remove the container once with `,i.createElement(`code`,null,`podman rm -f sk-signalk-questdb`),` and restart Signal K — a restart alone cannot re-grant a rejected ask.`):i.createElement(i.Fragment,null,`QuestDB requested a `,i.createElement(`code`,null,Q.ulimit),` limit of`,` `,d(Q.requested),`, but this host only allows `,d(Q.granted),`, so it was capped. QuestDB is running on the lower limit. To grant the full value, raise the host limit for the user running the container runtime — under rootless Podman that means a systemd`,` `,i.createElement(`code`,null,`user@.service`),` `,i.createElement(`code`,null,`LimitNOFILE`),` drop-in (editing `,i.createElement(`code`,null,`/etc/security/limits.conf`),` alone is usually not enough) — then restart the Signal K server so the plugin can re-create the QuestDB container with the raised limit (signalk-container 1.25.3+; on older versions remove the container once with`,` `,i.createElement(`code`,null,`podman rm -f sk-signalk-questdb`),` instead).`),` `,`This warning clears itself once the container is running with the full value.`,` `,i.createElement(`a`,{href:Zt?`https://github.com/dirkwa/signalk-questdb#questdb-container-never-starts-on-macos-podman-machine`:`https://github.com/dirkwa/signalk-container#raising-the-open-files-limit-nofile`,target:`_blank`,rel:`noreferrer`,style:{color:`#92400e`,textDecoration:`underline`}},`Step-by-step instructions`),`.`),i.createElement(ee,{icon:`Q`,iconBackground:`#7c3aed`,iconColor:`#fff`,title:`QuestDB`,meta:i.createElement(i.Fragment,null,E?.endpoint||`${c}:${h}`,` `,`· `,Z?`WAL suspended`:`Recording`),state:Z?`error`:`ok`,stateTitle:Z?`WAL suspended`:`Running`}),i.createElement(`div`,{style:y.statsGrid},i.createElement(`div`,{style:y.statCard},i.createElement(`div`,{style:y.statValue},d(E.totalRows)),i.createElement(`div`,{style:y.statLabel},`Total Rows`)),i.createElement(`div`,{style:y.statCard},i.createElement(`div`,{style:y.statValue},d(E.activePathsToday)),i.createElement(`div`,{style:y.statLabel},`Active Paths Today`)),E.restore&&i.createElement(`div`,{style:y.statCard},i.createElement(`div`,{style:y.statValue},E.restore.failed?`—`:d(E.restore.contexts)),i.createElement(`div`,{style:y.statLabel},E.restore.failed?`Restore failed`:`Vessels Restored`))),i.createElement(`div`,{style:{display:`flex`,alignItems:`center`,gap:10,marginBottom:12}},z&&z.updateAvailable?i.createElement(i.Fragment,null,i.createElement(`span`,{style:{fontSize:13}},`v`,z.currentVersion,` →`,` `,i.createElement(`strong`,null,`v`,z.latestVersion),` available`),i.createElement(v,{variant:`primary`,busy:xt,busyLabel:`Updating...`,onClick:Ft,style:le},`Update QuestDB`)):z&&!z.updateAvailable?i.createElement(`span`,{style:{fontSize:12,color:`#888`}},`v`,z.currentVersion,` (up to date)`):i.createElement(v,{variant:`secondary`,busy:yt,busyLabel:`Checking...`,onClick:Pt,style:le},`Check for updates`))):i.createElement(ee,{icon:`Q`,title:`QuestDB`,meta:i.createElement(i.Fragment,null,E?.status===`unhealthy`?`Not responding`:`Not running`,w?` — enable plugin to start container`:``),state:`error`}),i.createElement(`div`,{style:y.sectionTitle},`Image Version`),i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`QuestDB version`),i.createElement(re,{value:ce,onChange:de,versions:He,loading:We,onRefresh:()=>void Ge(),error:Ue,stableCount:3,preCount:2})),i.createElement(`div`,{style:y.sectionTitle},`Connection`),i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`Managed container`),i.createElement(`input`,{type:`checkbox`,style:y.checkbox,checked:w,onChange:e=>fe(e.target.checked)}),i.createElement(`span`,{style:y.hint},w?`signalk-container manages QuestDB`:`Connect to external QuestDB`)),!w&&i.createElement(i.Fragment,null,i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`QuestDB host`),i.createElement(`input`,{style:y.input,value:c,onChange:e=>l(e.target.value)})),i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`HTTP port (queries)`),i.createElement(`input`,{style:y.inputSmall,type:`number`,value:h,onChange:e=>_(Number(e.target.value))})),i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`ILP port (writes)`),i.createElement(`input`,{style:y.inputSmall,type:`number`,value:u,onChange:e=>m(Number(e.target.value))}))),w&&i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`Bind to 0.0.0.0`),i.createElement(`input`,{type:`checkbox`,style:y.checkbox,checked:T,onChange:e=>Ve(e.target.checked)}),i.createElement(`span`,{style:{...y.hint,color:T?`#ef4444`:void 0}},T?`Caution! This exposes your data to the network`:`Signal K reaches QuestDB automatically — only enable to reach it from another machine or a separate-Docker Grafana`)),w&&T&&i.createElement(i.Fragment,null,i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`HTTP port (queries)`),i.createElement(`input`,{style:y.inputSmall,type:`number`,value:h,onChange:e=>_(Number(e.target.value))})),i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`ILP port (writes)`),i.createElement(`input`,{style:y.inputSmall,type:`number`,value:u,onChange:e=>m(Number(e.target.value))})),i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`PostgreSQL wire port`),i.createElement(`input`,{style:y.inputSmall,type:`number`,value:ne,onChange:e=>b(Number(e.target.value))}),i.createElement(`span`,{style:y.hint},`for Grafana`)),i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`Container network`),i.createElement(`input`,{style:y.input,value:ze,onChange:e=>Be(e.target.value)}),i.createElement(`span`,{style:y.hint},`shared with signalk-grafana`))),i.createElement(`div`,{style:y.sectionTitle},`Recording`),i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`Default sampling rate (ms)`),i.createElement(`input`,{style:y.inputSmall,type:`number`,value:Te,onChange:e=>Ee(Number(e.target.value))}),i.createElement(`span`,{style:y.hint},`1000 = max 1 write/sec per path (0 = every update)`)),i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`Write batch interval (ms)`),i.createElement(`input`,{style:y.inputSmall,type:`number`,min:500,max:3e5,"aria-label":`Write batch interval in milliseconds`,value:De,onChange:e=>Oe(e.target.value)}),i.createElement(`span`,{style:y.hint},`one QuestDB transaction per table per interval; longer = bigger batches, but up to this many ms lost on a hard crash (default 5000)`)),i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`Record own vessel`),i.createElement(`input`,{type:`checkbox`,style:y.checkbox,checked:pe,onChange:e=>me(e.target.checked)})),i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`Record AIS targets`),i.createElement(`input`,{type:`checkbox`,style:y.checkbox,checked:he,onChange:e=>ge(e.target.checked)})),i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`Restore vessels on startup`),i.createElement(`input`,{type:`checkbox`,style:y.checkbox,"aria-label":`Restore vessels on startup`,checked:_e,onChange:e=>ve(e.target.checked)}),i.createElement(`span`,{style:y.hint},`replay each vessel's last recorded position after a restart, so AIS targets appear at once instead of only when they next transmit`)),i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`Allow sourcePolicy=all`),i.createElement(`input`,{type:`checkbox`,style:y.checkbox,"aria-label":`Allow sourcePolicy=all in the History API`,checked:xe,onChange:e=>Se(e.target.checked)}),i.createElement(`span`,{style:y.hint},`let History API callers split a path into one column per recording source. Off by default: a path recorded by four receivers becomes four queries and four columns, which is markedly more work on a Pi-class host. Requests that name a source explicitly are unaffected`)),i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`QuestDB console webapp`),i.createElement(`input`,{type:`checkbox`,style:y.checkbox,"aria-label":`QuestDB console webapp`,checked:ye,onChange:e=>be(e.target.checked)}),i.createElement(`span`,{style:y.hint},`serve QuestDB's own console inside the Signal K admin UI (admin only). It is a full SQL client — unlike the read-only query endpoint it can modify and delete recorded data`)),_e&&i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`Restore max age (minutes)`),i.createElement(`input`,{style:y.inputSmall,type:`number`,min:1,"aria-label":`Restore max age (minutes)`,value:Ce,onChange:e=>{let t=Number(e.target.value);Number.isFinite(t)&&t>=1&&we(t)}}),i.createElement(`span`,{style:y.hint},`only replay values this recent (default 9, matching Freeboard's AIS expiry); higher puts staler positions on the chart`)),i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`Retention (days)`),i.createElement(`input`,{style:y.inputSmall,type:`number`,value:ke,onChange:e=>Ae(Number(e.target.value))}),i.createElement(`span`,{style:y.hint},`0 = keep forever`)),i.createElement(g,{title:`Path filtering`,defaultOpen:Ne.trim()!==``},i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`Filter mode`),i.createElement(`select`,{style:y.select,value:je,onChange:e=>Me(e.target.value===`include`?`include`:`exclude`)},i.createElement(`option`,{value:`exclude`},`Exclude matching paths`),i.createElement(`option`,{value:`include`},`Include only matching paths`))),i.createElement(`div`,{style:{marginBottom:10}},i.createElement(`div`,{style:{...y.label,width:`auto`,marginBottom:6}},`Path patterns (one per line, glob supported) — optional`),i.createElement(`textarea`,{style:y.textarea,value:Ne,onChange:e=>Pe(e.target.value),placeholder:`notifications.*
|
|
9
|
+
environment.wind.*`}),i.createElement(`div`,{style:y.fieldHelp},`Empty = record everything (the default). Nothing is filtered out unless you list a pattern here.`),i.createElement(`div`,{style:{...y.hint,marginLeft:0}},je===`exclude`?`These paths are NOT recorded; everything else is.`:`ONLY these paths are recorded; everything else is dropped.`))),i.createElement(g,{title:`Compression (on-disk)`},i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`Compression codec`),i.createElement(`select`,{style:y.select,value:Fe,onChange:e=>Ie(ue(e.target.value))},i.createElement(`option`,{value:`none`},`None`),i.createElement(`option`,{value:`lz4`},`LZ4 (fast)`),i.createElement(`option`,{value:`zstd`},`ZSTD (smaller)`)),i.createElement(`span`,{style:y.hint},`applies to new data after save`)),Fe===`zstd`&&i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`ZSTD level`),i.createElement(`input`,{style:y.inputSmall,type:`number`,min:`1`,max:`22`,value:Le,onChange:e=>Re(Number(e.target.value))}),i.createElement(`span`,{style:y.hint},`1 (fast) to 22 (smallest)`))),i.createElement(g,{title:`InfluxDB Migration`},i.createElement(`div`,{style:{display:`flex`,gap:10,alignItems:`center`,marginBottom:10}},i.createElement(v,{variant:`primary`,busy:Je,busyLabel:`Detecting...`,onClick:Rt},`Detect InfluxDB`),i.createElement(`span`,{style:y.hint},`Checks localhost:8086 for InfluxDB 1.x and 2.x`)),O&&O.length>0&&i.createElement(`div`,null,O.map((e,t)=>{let n=A?.url===e.url&&A?.type===e.type,r=()=>{Ze(e),st(null),M(``),ct(null),$e(``),tt(``),rt(``),at(``),e.type!==`influxdb2`&&zt(e,{token:void 0,org:void 0,username:void 0,password:void 0})};return i.createElement(`div`,{key:t,role:`button`,tabIndex:0,"aria-pressed":n,style:{...y.migrationItem,cursor:`pointer`,outline:n?`2px solid #22adf6`:void 0},onClick:r,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),r())}},i.createElement(`div`,{style:{...y.cardIcon,width:36,height:36,fontSize:16,background:e.type===`influxdb2`?`#020a47`:`#22adf6`,color:`#fff`}},e.type===`influxdb2`?`2`:`1`),i.createElement(`div`,{style:y.cardInfo},i.createElement(`div`,{style:y.cardTitle},`InfluxDB `,e.type===`influxdb2`?`2.x`:`1.x`,i.createElement(`span`,{style:{...y.tag,...y.tagLatest}},e.status)),i.createElement(`div`,{style:y.cardMeta},e.url,` · v`,e.version)),i.createElement(`div`,{style:y.cardMeta},n?`selected`:`click to select`))})),i.createElement(`div`,{style:{...y.fieldRow,marginTop:10}},i.createElement(`span`,{style:y.label},`Manual InfluxDB URL`),i.createElement(`input`,{style:y.input,placeholder:`http://192.168.1.100:8086`,"aria-label":`Manual InfluxDB URL`,value:k,onChange:e=>Xe(e.target.value)}),i.createElement(`span`,{style:y.hint},`for remote instances`)),O&&O.length===0&&!Je&&i.createElement(`div`,{style:{...y.empty,padding:`16px`,textAlign:`left`}},`No InfluxDB found on localhost. Use manual URL above for remote instances.`),A&&i.createElement(`div`,{style:{marginTop:14}},i.createElement(`div`,{style:y.fieldHelp},A.type===`influxdb2`?`InfluxDB 2.x needs an API token with read access to the bucket, and the organisation name.`:`InfluxDB 1.x needs a username and password only if the server has authentication enabled.`),A.type===`influxdb2`?i.createElement(i.Fragment,null,i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`API token`),i.createElement(`input`,{style:y.input,type:`password`,"aria-label":`InfluxDB API token`,value:Qe,onChange:e=>$e(e.target.value)}),i.createElement(`span`,{style:y.hint},`not stored`)),i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`Organisation`),i.createElement(`input`,{style:y.input,"aria-label":`InfluxDB organisation`,value:et,onChange:e=>tt(e.target.value)}))):i.createElement(i.Fragment,null,i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`Username`),i.createElement(`input`,{style:y.input,"aria-label":`InfluxDB username`,value:nt,onChange:e=>rt(e.target.value)}),i.createElement(`span`,{style:y.hint},`blank if auth is off`)),i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`Password`),i.createElement(`input`,{style:y.input,type:`password`,"aria-label":`InfluxDB password`,value:it,onChange:e=>at(e.target.value)}),i.createElement(`span`,{style:y.hint},`not stored`))),i.createElement(`div`,{style:{...y.fieldRow,marginTop:4}},i.createElement(`span`,{style:y.label}),i.createElement(v,{busy:lt,busyLabel:`Loading...`,onClick:()=>void zt(A)},A.type===`influxdb2`?`List buckets`:`List databases`)),ot&&ot.length>0&&i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},A.type===`influxdb2`?`Bucket`:`Database`),i.createElement(`select`,{style:y.select,"aria-label":`InfluxDB bucket or database to import from`,value:j,onChange:e=>{M(e.target.value),ct(null)}},i.createElement(`option`,{value:``},`Select...`),ot.map(e=>i.createElement(`option`,{key:e.name,value:e.name},e.name))),i.createElement(v,{busy:lt,busyLabel:`...`,onClick:()=>void Bt()},`Preview paths`)),N&&i.createElement(`div`,{style:y.fieldHelp},N.length,` measurement`,N.length===1?``:`s`,` found`,N.length>0&&i.createElement(i.Fragment,null,` `,`— e.g.`,` `,N.slice(0,3).map(e=>e.name).join(`, `),N.length>3?`, ...`:``)),i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`From`),i.createElement(`input`,{style:y.input,type:`datetime-local`,"aria-label":`Import range start`,value:ut,onChange:e=>dt(e.target.value)})),i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`To`),i.createElement(`input`,{style:y.input,type:`datetime-local`,"aria-label":`Import range end`,value:ft,onChange:e=>pt(e.target.value)})),i.createElement(`div`,{style:y.fieldHelp},`Imported rows are tagged `,i.createElement(`code`,null,`source=influxdb-import`),` and written with their original timestamps, so re-running the same range overwrites rather than duplicating.`),i.createElement(`div`,{style:{...y.migrationActions,marginTop:10}},i.createElement(v,{variant:`primary`,busy:mt,busyLabel:`Starting...`,disabled:!j||!ut||!ft||F?.state===`running`,onClick:Vt},`Start import`),F?.state===`running`&&i.createElement(v,{variant:`danger`,onClick:Ht},`Cancel`))),F&&i.createElement(`div`,{style:{...y.empty,padding:`12px`,textAlign:`left`}},i.createElement(`div`,null,i.createElement(`strong`,null,F.state===`running`?`Importing`:F.state===`done`?`Import complete`:F.state===`cancelled`?`Import cancelled`:`Import failed`),F.bucket?` from ${F.bucket}`:``),i.createElement(`div`,{style:y.cardMeta},d(F.progress.written),` written,`,` `,d(F.progress.skipped),` skipped,`,` `,F.progress.measurementsDone,`/`,F.progress.measurementsTotal,` measurements`,F.progress.currentMeasurement?` — ${F.progress.currentMeasurement}`:``),F.error&&i.createElement(`div`,{style:{...y.cardMeta,color:`#b91c1c`}},F.error))),i.createElement(g,{title:`Data Export`},i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`From`),i.createElement(`input`,{style:y.input,type:`datetime-local`,value:K,onChange:e=>Ut(e.target.value)})),i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`To`),i.createElement(`input`,{style:y.input,type:`datetime-local`,value:Wt,onChange:e=>Gt(e.target.value)})),i.createElement(`div`,{style:y.fieldRow},i.createElement(`span`,{style:y.label},`Format`),i.createElement(`select`,{style:y.select,value:q,onChange:e=>Kt(e.target.value)},i.createElement(`option`,{value:`parquet`},`Parquet`),i.createElement(`option`,{value:`csv`},`CSV`))),i.createElement(v,{variant:`primary`,busy:qt,busyLabel:`Exporting...`,onClick:Yt},`Export Data`)),s.managedContainer!==!1&&i.createElement(g,{title:`Danger zone`},i.createElement(`div`,{style:{fontSize:13,color:`#555`,marginBottom:10}},`Remove the QuestDB container and permanently delete all recorded data. Use this to fully reset QuestDB — Signal K's plugin-uninstall cannot delete this data on rootless Podman. This cannot be undone.`),i.createElement(v,{variant:`danger`,busy:Ct,busyLabel:`Removing...`,onClick:It},`Remove container & all data`)),i.createElement(te,{message:gt,error:_t,style:{marginTop:16}}),i.createElement(`div`,{style:{marginTop:24}},i.createElement(v,{onClick:Jt},`Save Configuration`)))}export{de as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./vite-preload-helper-HclGiUj8.js";import"./virtualExposes-
|
|
1
|
+
import{t as e}from"./vite-preload-helper-HclGiUj8.js";import"./virtualExposes-BBIkbTtD.js";var t=`__mf_module_cache__`;globalThis[t]||={share:{},remote:{}},globalThis[t].share||={},globalThis[t].remote||={};var n=globalThis[t];for(let e of Object.keys(n.share))if(e.startsWith(`default:`)){let t=e.slice(8);n.share[t]===void 0&&(n.share[t]=n.share[e])}else if(!e.includes(`:`)){let t=`default:`+e;n.share[t]===void 0&&(n.share[t]=n.share[e])}(async()=>{let t=await e(()=>import(`./hostInit-CUx4ptQ-.js`),[],import.meta.url);await t.__tla;let{initHost:r}=t;await r(),n.pendingShareLoads&&await Promise.all(n.pendingShareLoads);let i=globalThis.__mf_module_cache_react_server__;i?.pendingShareLoads&&await Promise.all(i.pendingShareLoads)})().then(()=>e(()=>import(`./configpanel-BvRk9kiK.js`),[],import.meta.url));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./vite-preload-helper-HclGiUj8.js";var t={},n=new Set,r=new Map;function i(e,t){let n=r.get(e);return n||(n=Promise.resolve().then(t).catch(t=>{throw r.delete(e),t}),r.set(e,n)),n}async function a(e){if(typeof document>`u`)return;let r=t[e]||[];await Promise.all(r.map(e=>{let t=new URL(e,import.meta.url).href;return n.has(t)||(n.add(t),document.querySelector(`link[rel="stylesheet"][href="${t}"]`))?Promise.resolve():new Promise((e,n)=>{let r=document.createElement(`link`);r.rel=`stylesheet`,r.href=t,r.onload=()=>e(),r.onerror=()=>n(Error(`[Module Federation] Failed to load CSS asset: ${t}`)),document.head.appendChild(r)})}))}var o={"./PluginConfigurationPanel":async()=>{await a(`./PluginConfigurationPanel`),await Promise.all([]);let t=await i(`./PluginConfigurationPanel`,()=>e(()=>import(`./PluginConfigurationPanel-
|
|
1
|
+
import{t as e}from"./vite-preload-helper-HclGiUj8.js";var t={},n=new Set,r=new Map;function i(e,t){let n=r.get(e);return n||(n=Promise.resolve().then(t).catch(t=>{throw r.delete(e),t}),r.set(e,n)),n}async function a(e){if(typeof document>`u`)return;let r=t[e]||[];await Promise.all(r.map(e=>{let t=new URL(e,import.meta.url).href;return n.has(t)||(n.add(t),document.querySelector(`link[rel="stylesheet"][href="${t}"]`))?Promise.resolve():new Promise((e,n)=>{let r=document.createElement(`link`);r.rel=`stylesheet`,r.href=t,r.onload=()=>e(),r.onerror=()=>n(Error(`[Module Federation] Failed to load CSS asset: ${t}`)),document.head.appendChild(r)})}))}var o={"./PluginConfigurationPanel":async()=>{await a(`./PluginConfigurationPanel`),await Promise.all([]);let t=await i(`./PluginConfigurationPanel`,()=>e(()=>import(`./PluginConfigurationPanel-CR4mD9IH.js`),[],import.meta.url)),n=t&&t.__mf_remote_dependency_pending;n&&typeof n.then==`function`&&await n;let r={};return Object.assign(r,t),Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),r},"./AppPanel":async()=>{await a(`./AppPanel`),await Promise.all([]);let t=await i(`./AppPanel`,()=>e(()=>import(`./AppPanel-CNFtJpeq.js`),[],import.meta.url)),n=t&&t.__mf_remote_dependency_pending;n&&typeof n.then==`function`&&await n;let r={};return Object.assign(r,t),Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),r}};export{o as default};
|
package/public/remoteEntry.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./assets/vite-preload-helper-HclGiUj8.js";import{r as t,t as n}from"./assets/dist-BxwXn66h.js";({...t.global});var r=t.share;t.utils,typeof __VUE_HMR_RUNTIME__>`u`&&(globalThis.__VUE_HMR_RUNTIME__={createRecord(){},rerender(){},reload(){}});var i=`__mf_init__virtual:mf:__mfe_internal__signalk_questdb__mf_owner__1__mf_v__runtimeInit__mf_v__.js__`,a=globalThis[i];if(!a){let e,t,n=new Promise((n,r)=>{e=n,t=r});a=globalThis[i]={initPromise:n,initResolve:e,initReject:t}}var o=a.initResolve,s=`__mf_module_cache__`;globalThis[s]||={share:{},remote:{}},globalThis[s].share||={},globalThis[s].remote||={};var c=globalThis[s];for(let e of Object.keys(c.share))if(e.startsWith(`default:`)){let t=e.slice(8);c.share[t]===void 0&&(c.share[t]=c.share[e])}else if(!e.includes(`:`)){let t=`default:`+e;c.share[t]===void 0&&(c.share[t]=c.share[e])}var l={},u=Array.isArray(`default`)?`default`:[`default`],d=`default`,f=`signalk_questdb`,p=[[`react`]],m,h,g;async function _(e){for(let t=0;;t++)try{return await e()}catch(e){throw e}}var v=Symbol(`mf.originalSharedProvider`),y={emit:e=>e},b=(e,t)=>{if(t!==`version-first`)return e;let n={};for(let[t,r]of Object.entries(e))n[t]=Object.assign({},r,{[v]:r});return n},x=(e,t)=>{if(!t)return;let n=Object.entries(e||{}),r=n.find(([,e])=>e===t);if(r)return{version:r[0],provider:t,registered:!0};if(typeof t.version==`string`&&t.version)return{version:t.version,provider:t,registered:!1};let i=n.filter(([,e])=>e===t||!!(t.from&&e?.from===t.from));if(i.length===1)return{version:i[0][0],provider:t,registered:!1}},S=(e,t,n,i)=>{if(!e||!n)return;let a=Array.isArray(n.scope)?n.scope:[n.scope||`default`],o=b(e,i),s={};for(let e of a)s[e||`default`]={[t]:o};let c=r.getRegisteredShare(s,t,{...n,scope:a,strategy:i},y)?.shared;return c?.[v]||c},C=(e,t,n,r)=>{let i=e=>w(e,n),a=Object.fromEntries(Object.entries(e||{}).filter(([,e])=>!i(e)));n?.version&&n.shareConfig?.import!==!1&&(a[n.version]||(a[n.version]=n));let o=S(a,t,n,r);return i(o)?void 0:o},w=(e,t)=>e===t||!!(t?.from&&e?.from===t.from),T=(e,t,n,r,i,a,o,s,c)=>{if(c!==`version-first`||!s)return;let l=t?.options?.shared?.[i],u=Array.isArray(l)?l.find(e=>e?.version===a):void 0,d=(s?.from===t?.options?.name?s:void 0)||(w(u,s)?u:t?void 0:s);if(d)return e.some(e=>e!==t&&e?.options?.name===o?.from&&e?.shareScopeMap?.[r]===n)?d:void 0},ee=(e,t,n,r,i,a,o,s,c)=>{let l=a.registered?T(e,t,n,r,i,a.version,a.provider,s,c):void 0,u=l||o;if(u&&!(a.registered&&!w(u,s)))return{provider:u,scopeRootProvider:l}};async function E(){return m||=_(()=>e(()=>import(`./assets/_virtual_mf-localSharedImportMap___mfe_internal__signalk_questdb__mf_owner__1-I2PEpnTA.js`),[],import.meta.url)).catch(e=>{throw m=void 0,e}),m}async function D(){return h||=_(()=>e(()=>import(`./assets/virtualExposes-CyrNon4j.js`),[],import.meta.url)).then(e=>e.default??e).catch(e=>{throw h=void 0,e}),h}async function O(e={},t=[]){let r=(e,t,n,r)=>{let i=(Array.isArray(r)?r[0]:r)||`default`,a=t||!n?e:e+`@`+n,o={canonical:i+`:`+a};return i==="default"&&(o.aliases=[a]),o},i=(e,t)=>{let n=e[t.canonical];if(n!==void 0)return n;let r=t.aliases||[];for(let n of r){if(!Object.prototype.hasOwnProperty.call(e,n))continue;let r=e[n];if(r!==void 0)return e[t.canonical]=r,r}},a=Symbol.for(`module-federation.shared-cache-listeners`),s=Symbol.for(`module-federation.shared-cache-owners`),m=e=>{let t=e[s];return t===void 0&&(t=Object.create(null),Object.defineProperty(e,s,{value:t,enumerable:!1,configurable:!1,writable:!1})),t},h=(e,t)=>e[s]?.[t.canonical],v=(e,t,n,r)=>{e[t.canonical]=n;let i=t.aliases||[];for(let t of i)Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0});let o=e[s];r===void 0?o&&delete o[t.canonical]:m(e)[t.canonical]=r;let c=e[a]?.[t.canonical];if(c)for(let e of c)e(n);return n},y=Symbol.for(`module-federation.tree-shaking-shared-cache`),b=e=>{let t=e[y];return t===void 0&&(t=Object.create(null),Object.defineProperty(e,y,{value:t,enumerable:!1,configurable:!1,writable:!1})),t},T=(e,t,n,r)=>{if(!Array.isArray(n))return r;let i=[...new Set(n)].sort(),a=b(e),o=a[t.canonical]||=[],s=o.find(e=>e.providedExports.length===i.length&&e.providedExports.every((e,t)=>e===i[t]));return s?s.value=r:o.push({providedExports:i,value:r}),r},D=Symbol.for(`module-federation.tree-shaking-shared-selection-cache`),O=e=>{let t=e[D];return t===void 0&&(t=Object.create(null),Object.defineProperty(e,D,{value:t,enumerable:!1,configurable:!1,writable:!1})),t},k=(e,t,n)=>{let r=i(e,t);return r===void 0?e[D]?.[t.canonical]?.[n]:r},A=(e,t,n,r)=>{let i=O(e),a=i[t.canonical]||=Object.create(null);return a[n]=r,r},j=globalThis.__FEDERATION__?.__INSTANCES__||[],M=t.find(e=>e?.from)?.from,N=j.find(t=>t?.options?.name===M&&t?.shareScopeMap?.default===e)||j.find(t=>t?.options?.name!==f&&t?.shareScopeMap?.default===e),P=Object.create(null),F=e=>{let t=Object.create(null);for(let[n,r]of Object.entries(e||{}))t[n]=Object.assign(Object.create(null),r);return t},I=(e,t)=>{let n=!N&&Object.values(t||{}).some(e=>Object.values(e||{}).some(B)),r=n?F(t):t;return P[e]={host:t,runtime:r,isWebpackScope:n},r},L=()=>{let e=Object.values(P).filter(({isWebpackScope:e})=>e);if(e.length!==0)for(let{host:t,runtime:n}of e)for(let[e,r]of Object.entries(t||{})){let t=n[e]||=Object.create(null);for(let[e,n]of Object.entries(r||{}))t[e]=n}},R=Object.create(null);for(let[t,n]of Object.entries(e)){let e=R[t]=Object.create(null);for(let[t,r]of Object.entries(n))e[t]=Object.assign({},r)}let{usedShared:z,usedRemotes:te}=await E();function B(e){return typeof e?.get==`function`&&Function.prototype.toString.call(e.get).includes(`__webpack_require__`)}let ne=Object.values(R).some(e=>Object.values(e||{}).some(B)),re=e=>{let t=e.split(`/`);return e.startsWith(`@`)?t.slice(0,2).join(`/`):t[0]},V=(t,n,r)=>{if(typeof C!=`function`)return;let i=re(t),a=i===t?[[t,n]]:[[t,n],[i,z[i]]];for(let[n,i]of a){if(!i)continue;let a=C(r?n===t?r:R[n]:e[n],n,i,`version-first`);if(a&&B(a)&&!a.lib&&!a.loaded)return a}};var H=l[d];if(H||=l[d]={from:f},t.indexOf(H)>=0)return;t.push(H);let U=e=>{let t=e;for(let e=0;e<5;e++){let e=t?.default;if(!e||typeof e!=`object`||Object.keys(e).length===0)break;let n=Object.keys(t).filter(e=>e!=="default").map(e=>t[e]);if(n.length>0&&n.some(e=>e!==void 0))break;t=e}return t},ie=[],ae=globalThis.window===void 0?await Promise.all([]):[],W=`__mf_vite_runtime_share_load_id__`,oe=0,G=new Map,K=new Map,q=n({name:f,remotes:te,shared:z,plugins:[se(),...ie,...ae],shareStrategy:`version-first`});q.initShareScopeMap(`default`,I(`default`,e));function se(){return{name:`vite-share-pin-lifecycle-plugin`,resolveShare(e){let t=e.shareInfo?.[W],n=t===void 0?void 0:K.get(t);if(!n)return e;let r=e.resolver;return e.resolver=(...e)=>(n.pinned.reapply(),r(...e)),n.pinned.reveal(),e}}}let ce=q.sharedHandler.hooks.lifecycle.resolveShare,J=new WeakMap;ce.on(e=>{let t=e.shareInfo?.[W],n=e.resolver;return typeof n==`function`&&(e.resolver=(...e)=>{let r=n(...e),i=r?.shared;return i&&(typeof i==`object`||typeof i==`function`)&&!J.has(i)&&J.set(i,{from:i.from}),t!==void 0&&i&&G.set(t,i),r}),e});let le=(e,t,n,r)=>{if(!e||e[t]!==n)return;let i=Object.assign({},r,{version:r.version??t,scope:r.scope??n?.scope??[`default`],strategy:`loaded-first`}),a=r.from;e[t]=i;let o=()=>n===void 0?e[t]===void 0:e[t]===n;return{provider:i,reveal(){return e[t]===i&&(n===void 0?delete e[t]:e[t]=n,!0)},reapply(){return o()?(e[t]=i,!0):!1},release(s,c=!0){return r.from=a,e[t]===i?c?s?(i.from=a,s&&i.lib&&(i.loaded=!0),r.strategy===void 0?delete i.strategy:i.strategy=r.strategy,!0):(n===void 0?delete e[t]:e[t]=n,!1):(n===void 0?delete e[t]:e[t]=n,!0):!c&&o()}}},ue=e=>Object.entries(e||{}).map(([e,t])=>({provider:t,version:e,from:t.from,registered:!0})),de=(e,t)=>{if(t===void 0)return;let n;for(let r of e){let e=r.provider,i=e.treeShaking||e;if(r.loadedFactory===t||e.lib===t||i.lib===t){if(n)return;n=r}}return n},fe=async(e,t,n)=>{let r=++oe;K.set(r,{pinned:n});try{let n=await q.loadShare(e,{customShareInfo:{shareConfig:t,[W]:r}});return{factory:n===!1?void 0:n,selectedProvider:G.get(r)}}finally{G.delete(r),K.delete(r)}},Y=async(e,t,n,r,i,a,o=!0)=>{let s=a.from,c=le(n,r,i,a);if(!c)return;let l;try{l=await fe(e,t,c)}catch(e){throw c.release(!1),e}let u=l?.factory;if(u===void 0){c.release(!1);return}let d=ue(n),f=c.provider.treeShaking||c.provider,p=c.provider.lib===u||f.lib===u;if(!o&&p){let e=d.findIndex(e=>e.provider===c.provider);e!==-1&&d.splice(e,1)}!o&&!d.some(e=>e.provider===a)&&d.push({provider:a,version:r,from:s,registered:!1,loadedFactory:p?u:void 0});let m=!o&&l.selectedProvider===c.provider&&p?a:l.selectedProvider;if(m&&!d.some(e=>e.provider===m)){let e=J.get(m),t=typeof m.version==`string`&&m.version?m.version:r;d.push({provider:m,version:t,from:e?e.from:m.from,registered:n?.[t]===m,loadedFactory:u})}let h=d.find(e=>e.provider===m)??de(d,u);if(!c.release(!0,h?.provider===c.provider)||!h)return;let g=J.get(h.provider);h.from=h.provider===a?s:g?g.from:h.provider.from,g&&(h.provider.from=g.from);let _=typeof u==`function`?u():u,v=await Promise.resolve(_);if(!(h.registered&&n?.[h.version]!==h.provider))return{provider:h.provider,selection:h,resolved:v}},X=new Set,Z=new Map,pe=async(t,n,a)=>{let o=!!n.shareConfig?.singleton;if(!o&&n.canLiveRebind!==!1)try{let s=C(a,t,n,`version-first`),l=x(a,s);if(!l)return;let{version:u}=l;if(!o&&u!==n.version||!s.lib&&!s.loading&&!(s.loaded&&typeof s.get==`function`))return;let d=r(t,o,n.version,n.scope);if(i(c.share,d)!==void 0)return;let f=e[t],p=f?.[u];if(l.registered&&!w(p,s))return;let m,h=s.lib;if(!h&&B(s)||(!h&&s.loading&&(h=await s.loading),!h&&s.loaded&&typeof s.get==`function`&&(h=await s.get()),!h))return;let g=typeof h==`function`?h():h,_=await Promise.resolve(g),y=l.registered?p:s;m={provider:y,selection:{provider:y,version:u,from:s.from,registered:l.registered},resolved:_};let b=m?.provider,S=m?.selection;if(!S)return;let T=m?.resolved;if(T===void 0||i(c.share,d)!==void 0||S.registered&&f?.[S.version]!==b)return;v(c.share,d,U(T),S.from),X.add(b)}catch(e){console.error(`[Module Federation] Failed to bridge materialized shared module "`+t+`"`,e)}},me=async(t,n,a,o,s)=>{try{if(V(t,n))return;let l=r(t,n.shareConfig?.singleton,n.version,n.scope),u=i(c.share,l),d=h(c.share,l),p=C(a,t,n,`version-first`),m=p||S(a,t,n,`version-first`)||n,g=x(a,m);if(!g)return;let _=w(m,n),{version:y}=g;if(!n.shareConfig?.singleton&&y!==n.version)return;let b=o?.[y],T=ee(j,N,e,`default`,t,g,p,b,`version-first`);if(!T&&!_)return;let{provider:E,scopeRootProvider:D}=T||{provider:m,scopeRootProvider:void 0};if(n.canLiveRebind===!1||u!==void 0&&d!==f)return;let O=e[t],k=O?.[y];if(g.registered&&!D&&!w(k,E)||!_&&B(E)&&!E.lib&&!E.loaded)return;let A=await Y(t,n.shareConfig,O,y,k,E,g.registered&&!_),M=A?.provider,P=A?.selection;if(!P||w(M,n)||s&&(s.version!==P.version||!w({from:P.from},s.provider))||X.has(M))return;let F=A?.resolved;if(F===void 0)return;let I=i(c.share,l),L=h(c.share,l);if(I!==void 0&&L!==f||P.registered&&O?.[P.version]!==M)return;s||Z.set(t,{version:P.version,provider:{from:P.from}}),X.add(M);let R=U(F);v(c.share,l,R,P.from)}catch(e){console.error(`[Module Federation] Failed to bridge external shared module "`+t+`"`,e)}};for(let e of p)await Promise.all(e.map(async e=>{let t=z[e];!t||t.materialize===!1||t.treeShaking||await pe(e,t,R[e])}));for(let[e,t]of Object.entries(z)){if(t.treeShaking)continue;let n=r(e,t.shareConfig?.singleton,t.version,t.scope);if(i(c.share,n)!==void 0)continue;let a=r(e,!0,t.version,t.scope),o=i(c.share,a);o!==void 0&&v(c.share,n,o,h(c.share,a))}let he=[`react`],ge=[[`react`]],Q=he.filter(e=>z[e]&&z[e].materialize!==!1);c.providerInit||=new Map;let _e=(e,t)=>{let n=c.providerInit.get(e);if(n)return n;let r=Promise.resolve().then(t);return c.providerInit.set(e,r),r.catch(()=>c.providerInit.delete(e)),r};var ve=async e=>{let t=new Set(e);for(let e of ge)await Promise.all(e.filter(e=>t.has(e)).map(async e=>{let t=z[e],n=r(e,t.shareConfig?.singleton,t.version,t.scope);if(t.shareConfig?.import===!1||t.treeShaking||i(c.share,n)!==void 0)return;let a=r(e,!0,t.version,t.scope),o=i(c.share,a);if(o!==void 0){v(c.share,n,o,h(c.share,a));return}let s=typeof V==`function`?V(e,t):void 0;if(s&&!s.lib&&!s.loaded)return;let l=n.canonical,u=await _e(l,async()=>{let e=await t.get(),n=typeof e==`function`?e():e;return Promise.resolve(n)}),d=(e=>{let t=e;for(let e=0;e<5;e++){let e=t?.default;if(!e||typeof e!=`object`||Object.keys(e).length===0)break;let n=Object.keys(t).filter(e=>e!=="default").map(e=>t[e]);if(n.length>0&&n.some(e=>e!==void 0))break;t=e}return t})(u),p=d===u?{...u}:d;p.__esModule!==!0&&Object.defineProperty(p,"__esModule",{value:!0,enumerable:!1}),v(c.share,n,p,f)}))};let ye=e=>{let t=z[e];if(!t.treeShaking&&t.shareConfig?.import!==!1)return!1;let n=r(e,t.shareConfig?.singleton,t.version,t.scope);return t.treeShaking?k(c.share,n,f)===void 0&&i(c.share,n)===void 0:i(c.share,n)===void 0},$=Q.findIndex(e=>{let t=z[e],n=r(e,t.shareConfig?.singleton,t.version,t.scope);return(t.treeShaking?k(c.share,n,f)??i(c.share,n):i(c.share,n))===void 0?t.treeShaking||t.shareConfig?.import===!1?!0:typeof C==`function`&&!!C(R[e],e,t,`version-first`):!1}),be=$===-1?Q:Q.slice(0,$);var xe=$===-1?[]:Q.slice($);await ve(be);try{await _(async()=>{await Promise.all(await q.initializeSharing(`default`,{strategy:`version-first`,from:`build`,initScope:t}))})}catch(e){console.error(`[Module Federation]`,e)}L();let Se=async()=>{for(let t of p)await Promise.all(t.map(async t=>{let n=z[t];!n||n.materialize===!1||n.treeShaking||await me(t,n,e[t],R[t],void 0)}))};await Se(),ne&&(g=Se);try{let e=globalThis.__FEDERATION__?.__SHARE__,t=Object.create(null);if(e)for(let[,n]of Object.entries(e))for(let e of u){let r=n?.[e];if(r)for(let[e,n]of Object.entries(r)){let r=z?.[e],i=R[e],a=Z.get(e);if(!r||!i||!a||r.treeShaking)continue;let o=t[e]||(t[e]=Object.create(null));for(let[e,t]of Object.entries(n)){if(!t.lib||a.version!==e||!w(t,a.provider))continue;let n=i[e];(t===n||n?.from&&t.from===n.from)&&(t===r||r.from&&t.from===r.from||o[e]===void 0&&(o[e]=t))}}}for(let e of p)await Promise.all(e.map(async e=>{let n=t[e];n&&await me(e,z[e],n,R[e],Z.get(e))}))}catch(e){console.error(`[Module Federation] Failed to bridge external shared modules`,e)}let Ce=async()=>{},we=async(t,n)=>{let a=r(t,n.shareConfig?.singleton,n.version,n.scope),o=n.treeShaking?k(c.share,a,f):i(c.share,a);if(n.shareConfig?.import!==!1||o!==void 0||V(t,n,R[t]))return;let s=e=>{let t=e;for(let e=0;e<5;e++){let e=t?.default;if(!e||typeof e!=`object`||Object.keys(e).length===0)break;let n=Object.keys(t).filter(e=>e!=="default").map(e=>t[e]);if(n.length>0&&n.some(e=>e!==void 0))break;t=e}return t},l=e?.[t],u=S(l,t,n,`version-first`)||n,d=x(l,u);if(!d)return;let{version:p}=d,m=l?.[p],h=await Y(t,n.shareConfig,l,p,m,u,d.registered&&!w(u,n)),g=h?.selection,_=h?.provider,y=h?.resolved;if(!g||w(_,n)||y===void 0||(n.treeShaking?k(c.share,a,f):i(c.share,a))!==void 0||g.registered&&l?.[g.version]!==_)return;let b=s(y);if(n.treeShaking){let e=n.treeShaking.providedExports??n.treeShaking.usedExports??[];T(c.share,a,e,b),A(c.share,a,f,b)}else v(c.share,a,b,g.from)},Te=[];for(let e of xe){let t=z[e];if(ye(e))try{t.treeShaking?await Ce(e,t):t.shareConfig?.import===!1&&await we(e,t)}catch(t){console.error(`[Module Federation] Failed to resolve runtime-only shared module "${e}"`,t);break}if(ye(e))break;Te.push(e)}return await ve(Te),o(q),q}async function k(e){let t=await D();if(!(e in t))throw Error(`[Module Federation] Module ${e} does not exist in container.`);return g&&await g(),c.pendingShareLoads&&await Promise.all(c.pendingShareLoads),t[e]().then(e=>()=>e)}export{k as get,O as init};
|
|
1
|
+
import{t as e}from"./assets/vite-preload-helper-HclGiUj8.js";import{r as t,t as n}from"./assets/dist-BxwXn66h.js";({...t.global});var r=t.share;t.utils,typeof __VUE_HMR_RUNTIME__>`u`&&(globalThis.__VUE_HMR_RUNTIME__={createRecord(){},rerender(){},reload(){}});var i=`__mf_init__virtual:mf:__mfe_internal__signalk_questdb__mf_owner__1__mf_v__runtimeInit__mf_v__.js__`,a=globalThis[i];if(!a){let e,t,n=new Promise((n,r)=>{e=n,t=r});a=globalThis[i]={initPromise:n,initResolve:e,initReject:t}}var o=a.initResolve,s=`__mf_module_cache__`;globalThis[s]||={share:{},remote:{}},globalThis[s].share||={},globalThis[s].remote||={};var c=globalThis[s];for(let e of Object.keys(c.share))if(e.startsWith(`default:`)){let t=e.slice(8);c.share[t]===void 0&&(c.share[t]=c.share[e])}else if(!e.includes(`:`)){let t=`default:`+e;c.share[t]===void 0&&(c.share[t]=c.share[e])}var l={},u=Array.isArray(`default`)?`default`:[`default`],d=`default`,f=`signalk_questdb`,p=[[`react`]],m,h,g;async function _(e){for(let t=0;;t++)try{return await e()}catch(e){throw e}}var v=Symbol(`mf.originalSharedProvider`),y={emit:e=>e},b=(e,t)=>{if(t!==`version-first`)return e;let n={};for(let[t,r]of Object.entries(e))n[t]=Object.assign({},r,{[v]:r});return n},x=(e,t)=>{if(!t)return;let n=Object.entries(e||{}),r=n.find(([,e])=>e===t);if(r)return{version:r[0],provider:t,registered:!0};if(typeof t.version==`string`&&t.version)return{version:t.version,provider:t,registered:!1};let i=n.filter(([,e])=>e===t||!!(t.from&&e?.from===t.from));if(i.length===1)return{version:i[0][0],provider:t,registered:!1}},S=(e,t,n,i)=>{if(!e||!n)return;let a=Array.isArray(n.scope)?n.scope:[n.scope||`default`],o=b(e,i),s={};for(let e of a)s[e||`default`]={[t]:o};let c=r.getRegisteredShare(s,t,{...n,scope:a,strategy:i},y)?.shared;return c?.[v]||c},C=(e,t,n,r)=>{let i=e=>w(e,n),a=Object.fromEntries(Object.entries(e||{}).filter(([,e])=>!i(e)));n?.version&&n.shareConfig?.import!==!1&&(a[n.version]||(a[n.version]=n));let o=S(a,t,n,r);return i(o)?void 0:o},w=(e,t)=>e===t||!!(t?.from&&e?.from===t.from),T=(e,t,n,r,i,a,o,s,c)=>{if(c!==`version-first`||!s)return;let l=t?.options?.shared?.[i],u=Array.isArray(l)?l.find(e=>e?.version===a):void 0,d=(s?.from===t?.options?.name?s:void 0)||(w(u,s)?u:t?void 0:s);if(d)return e.some(e=>e!==t&&e?.options?.name===o?.from&&e?.shareScopeMap?.[r]===n)?d:void 0},ee=(e,t,n,r,i,a,o,s,c)=>{let l=a.registered?T(e,t,n,r,i,a.version,a.provider,s,c):void 0,u=l||o;if(u&&!(a.registered&&!w(u,s)))return{provider:u,scopeRootProvider:l}};async function E(){return m||=_(()=>e(()=>import(`./assets/_virtual_mf-localSharedImportMap___mfe_internal__signalk_questdb__mf_owner__1-I2PEpnTA.js`),[],import.meta.url)).catch(e=>{throw m=void 0,e}),m}async function D(){return h||=_(()=>e(()=>import(`./assets/virtualExposes-BBIkbTtD.js`),[],import.meta.url)).then(e=>e.default??e).catch(e=>{throw h=void 0,e}),h}async function O(e={},t=[]){let r=(e,t,n,r)=>{let i=(Array.isArray(r)?r[0]:r)||`default`,a=t||!n?e:e+`@`+n,o={canonical:i+`:`+a};return i==="default"&&(o.aliases=[a]),o},i=(e,t)=>{let n=e[t.canonical];if(n!==void 0)return n;let r=t.aliases||[];for(let n of r){if(!Object.prototype.hasOwnProperty.call(e,n))continue;let r=e[n];if(r!==void 0)return e[t.canonical]=r,r}},a=Symbol.for(`module-federation.shared-cache-listeners`),s=Symbol.for(`module-federation.shared-cache-owners`),m=e=>{let t=e[s];return t===void 0&&(t=Object.create(null),Object.defineProperty(e,s,{value:t,enumerable:!1,configurable:!1,writable:!1})),t},h=(e,t)=>e[s]?.[t.canonical],v=(e,t,n,r)=>{e[t.canonical]=n;let i=t.aliases||[];for(let t of i)Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0});let o=e[s];r===void 0?o&&delete o[t.canonical]:m(e)[t.canonical]=r;let c=e[a]?.[t.canonical];if(c)for(let e of c)e(n);return n},y=Symbol.for(`module-federation.tree-shaking-shared-cache`),b=e=>{let t=e[y];return t===void 0&&(t=Object.create(null),Object.defineProperty(e,y,{value:t,enumerable:!1,configurable:!1,writable:!1})),t},T=(e,t,n,r)=>{if(!Array.isArray(n))return r;let i=[...new Set(n)].sort(),a=b(e),o=a[t.canonical]||=[],s=o.find(e=>e.providedExports.length===i.length&&e.providedExports.every((e,t)=>e===i[t]));return s?s.value=r:o.push({providedExports:i,value:r}),r},D=Symbol.for(`module-federation.tree-shaking-shared-selection-cache`),O=e=>{let t=e[D];return t===void 0&&(t=Object.create(null),Object.defineProperty(e,D,{value:t,enumerable:!1,configurable:!1,writable:!1})),t},k=(e,t,n)=>{let r=i(e,t);return r===void 0?e[D]?.[t.canonical]?.[n]:r},A=(e,t,n,r)=>{let i=O(e),a=i[t.canonical]||=Object.create(null);return a[n]=r,r},j=globalThis.__FEDERATION__?.__INSTANCES__||[],M=t.find(e=>e?.from)?.from,N=j.find(t=>t?.options?.name===M&&t?.shareScopeMap?.default===e)||j.find(t=>t?.options?.name!==f&&t?.shareScopeMap?.default===e),P=Object.create(null),F=e=>{let t=Object.create(null);for(let[n,r]of Object.entries(e||{}))t[n]=Object.assign(Object.create(null),r);return t},I=(e,t)=>{let n=!N&&Object.values(t||{}).some(e=>Object.values(e||{}).some(B)),r=n?F(t):t;return P[e]={host:t,runtime:r,isWebpackScope:n},r},L=()=>{let e=Object.values(P).filter(({isWebpackScope:e})=>e);if(e.length!==0)for(let{host:t,runtime:n}of e)for(let[e,r]of Object.entries(t||{})){let t=n[e]||=Object.create(null);for(let[e,n]of Object.entries(r||{}))t[e]=n}},R=Object.create(null);for(let[t,n]of Object.entries(e)){let e=R[t]=Object.create(null);for(let[t,r]of Object.entries(n))e[t]=Object.assign({},r)}let{usedShared:z,usedRemotes:te}=await E();function B(e){return typeof e?.get==`function`&&Function.prototype.toString.call(e.get).includes(`__webpack_require__`)}let ne=Object.values(R).some(e=>Object.values(e||{}).some(B)),re=e=>{let t=e.split(`/`);return e.startsWith(`@`)?t.slice(0,2).join(`/`):t[0]},V=(t,n,r)=>{if(typeof C!=`function`)return;let i=re(t),a=i===t?[[t,n]]:[[t,n],[i,z[i]]];for(let[n,i]of a){if(!i)continue;let a=C(r?n===t?r:R[n]:e[n],n,i,`version-first`);if(a&&B(a)&&!a.lib&&!a.loaded)return a}};var H=l[d];if(H||=l[d]={from:f},t.indexOf(H)>=0)return;t.push(H);let U=e=>{let t=e;for(let e=0;e<5;e++){let e=t?.default;if(!e||typeof e!=`object`||Object.keys(e).length===0)break;let n=Object.keys(t).filter(e=>e!=="default").map(e=>t[e]);if(n.length>0&&n.some(e=>e!==void 0))break;t=e}return t},ie=[],ae=globalThis.window===void 0?await Promise.all([]):[],W=`__mf_vite_runtime_share_load_id__`,oe=0,G=new Map,K=new Map,q=n({name:f,remotes:te,shared:z,plugins:[se(),...ie,...ae],shareStrategy:`version-first`});q.initShareScopeMap(`default`,I(`default`,e));function se(){return{name:`vite-share-pin-lifecycle-plugin`,resolveShare(e){let t=e.shareInfo?.[W],n=t===void 0?void 0:K.get(t);if(!n)return e;let r=e.resolver;return e.resolver=(...e)=>(n.pinned.reapply(),r(...e)),n.pinned.reveal(),e}}}let ce=q.sharedHandler.hooks.lifecycle.resolveShare,J=new WeakMap;ce.on(e=>{let t=e.shareInfo?.[W],n=e.resolver;return typeof n==`function`&&(e.resolver=(...e)=>{let r=n(...e),i=r?.shared;return i&&(typeof i==`object`||typeof i==`function`)&&!J.has(i)&&J.set(i,{from:i.from}),t!==void 0&&i&&G.set(t,i),r}),e});let le=(e,t,n,r)=>{if(!e||e[t]!==n)return;let i=Object.assign({},r,{version:r.version??t,scope:r.scope??n?.scope??[`default`],strategy:`loaded-first`}),a=r.from;e[t]=i;let o=()=>n===void 0?e[t]===void 0:e[t]===n;return{provider:i,reveal(){return e[t]===i&&(n===void 0?delete e[t]:e[t]=n,!0)},reapply(){return o()?(e[t]=i,!0):!1},release(s,c=!0){return r.from=a,e[t]===i?c?s?(i.from=a,s&&i.lib&&(i.loaded=!0),r.strategy===void 0?delete i.strategy:i.strategy=r.strategy,!0):(n===void 0?delete e[t]:e[t]=n,!1):(n===void 0?delete e[t]:e[t]=n,!0):!c&&o()}}},ue=e=>Object.entries(e||{}).map(([e,t])=>({provider:t,version:e,from:t.from,registered:!0})),de=(e,t)=>{if(t===void 0)return;let n;for(let r of e){let e=r.provider,i=e.treeShaking||e;if(r.loadedFactory===t||e.lib===t||i.lib===t){if(n)return;n=r}}return n},fe=async(e,t,n)=>{let r=++oe;K.set(r,{pinned:n});try{let n=await q.loadShare(e,{customShareInfo:{shareConfig:t,[W]:r}});return{factory:n===!1?void 0:n,selectedProvider:G.get(r)}}finally{G.delete(r),K.delete(r)}},Y=async(e,t,n,r,i,a,o=!0)=>{let s=a.from,c=le(n,r,i,a);if(!c)return;let l;try{l=await fe(e,t,c)}catch(e){throw c.release(!1),e}let u=l?.factory;if(u===void 0){c.release(!1);return}let d=ue(n),f=c.provider.treeShaking||c.provider,p=c.provider.lib===u||f.lib===u;if(!o&&p){let e=d.findIndex(e=>e.provider===c.provider);e!==-1&&d.splice(e,1)}!o&&!d.some(e=>e.provider===a)&&d.push({provider:a,version:r,from:s,registered:!1,loadedFactory:p?u:void 0});let m=!o&&l.selectedProvider===c.provider&&p?a:l.selectedProvider;if(m&&!d.some(e=>e.provider===m)){let e=J.get(m),t=typeof m.version==`string`&&m.version?m.version:r;d.push({provider:m,version:t,from:e?e.from:m.from,registered:n?.[t]===m,loadedFactory:u})}let h=d.find(e=>e.provider===m)??de(d,u);if(!c.release(!0,h?.provider===c.provider)||!h)return;let g=J.get(h.provider);h.from=h.provider===a?s:g?g.from:h.provider.from,g&&(h.provider.from=g.from);let _=typeof u==`function`?u():u,v=await Promise.resolve(_);if(!(h.registered&&n?.[h.version]!==h.provider))return{provider:h.provider,selection:h,resolved:v}},X=new Set,Z=new Map,pe=async(t,n,a)=>{let o=!!n.shareConfig?.singleton;if(!o&&n.canLiveRebind!==!1)try{let s=C(a,t,n,`version-first`),l=x(a,s);if(!l)return;let{version:u}=l;if(!o&&u!==n.version||!s.lib&&!s.loading&&!(s.loaded&&typeof s.get==`function`))return;let d=r(t,o,n.version,n.scope);if(i(c.share,d)!==void 0)return;let f=e[t],p=f?.[u];if(l.registered&&!w(p,s))return;let m,h=s.lib;if(!h&&B(s)||(!h&&s.loading&&(h=await s.loading),!h&&s.loaded&&typeof s.get==`function`&&(h=await s.get()),!h))return;let g=typeof h==`function`?h():h,_=await Promise.resolve(g),y=l.registered?p:s;m={provider:y,selection:{provider:y,version:u,from:s.from,registered:l.registered},resolved:_};let b=m?.provider,S=m?.selection;if(!S)return;let T=m?.resolved;if(T===void 0||i(c.share,d)!==void 0||S.registered&&f?.[S.version]!==b)return;v(c.share,d,U(T),S.from),X.add(b)}catch(e){console.error(`[Module Federation] Failed to bridge materialized shared module "`+t+`"`,e)}},me=async(t,n,a,o,s)=>{try{if(V(t,n))return;let l=r(t,n.shareConfig?.singleton,n.version,n.scope),u=i(c.share,l),d=h(c.share,l),p=C(a,t,n,`version-first`),m=p||S(a,t,n,`version-first`)||n,g=x(a,m);if(!g)return;let _=w(m,n),{version:y}=g;if(!n.shareConfig?.singleton&&y!==n.version)return;let b=o?.[y],T=ee(j,N,e,`default`,t,g,p,b,`version-first`);if(!T&&!_)return;let{provider:E,scopeRootProvider:D}=T||{provider:m,scopeRootProvider:void 0};if(n.canLiveRebind===!1||u!==void 0&&d!==f)return;let O=e[t],k=O?.[y];if(g.registered&&!D&&!w(k,E)||!_&&B(E)&&!E.lib&&!E.loaded)return;let A=await Y(t,n.shareConfig,O,y,k,E,g.registered&&!_),M=A?.provider,P=A?.selection;if(!P||w(M,n)||s&&(s.version!==P.version||!w({from:P.from},s.provider))||X.has(M))return;let F=A?.resolved;if(F===void 0)return;let I=i(c.share,l),L=h(c.share,l);if(I!==void 0&&L!==f||P.registered&&O?.[P.version]!==M)return;s||Z.set(t,{version:P.version,provider:{from:P.from}}),X.add(M);let R=U(F);v(c.share,l,R,P.from)}catch(e){console.error(`[Module Federation] Failed to bridge external shared module "`+t+`"`,e)}};for(let e of p)await Promise.all(e.map(async e=>{let t=z[e];!t||t.materialize===!1||t.treeShaking||await pe(e,t,R[e])}));for(let[e,t]of Object.entries(z)){if(t.treeShaking)continue;let n=r(e,t.shareConfig?.singleton,t.version,t.scope);if(i(c.share,n)!==void 0)continue;let a=r(e,!0,t.version,t.scope),o=i(c.share,a);o!==void 0&&v(c.share,n,o,h(c.share,a))}let he=[`react`],ge=[[`react`]],Q=he.filter(e=>z[e]&&z[e].materialize!==!1);c.providerInit||=new Map;let _e=(e,t)=>{let n=c.providerInit.get(e);if(n)return n;let r=Promise.resolve().then(t);return c.providerInit.set(e,r),r.catch(()=>c.providerInit.delete(e)),r};var ve=async e=>{let t=new Set(e);for(let e of ge)await Promise.all(e.filter(e=>t.has(e)).map(async e=>{let t=z[e],n=r(e,t.shareConfig?.singleton,t.version,t.scope);if(t.shareConfig?.import===!1||t.treeShaking||i(c.share,n)!==void 0)return;let a=r(e,!0,t.version,t.scope),o=i(c.share,a);if(o!==void 0){v(c.share,n,o,h(c.share,a));return}let s=typeof V==`function`?V(e,t):void 0;if(s&&!s.lib&&!s.loaded)return;let l=n.canonical,u=await _e(l,async()=>{let e=await t.get(),n=typeof e==`function`?e():e;return Promise.resolve(n)}),d=(e=>{let t=e;for(let e=0;e<5;e++){let e=t?.default;if(!e||typeof e!=`object`||Object.keys(e).length===0)break;let n=Object.keys(t).filter(e=>e!=="default").map(e=>t[e]);if(n.length>0&&n.some(e=>e!==void 0))break;t=e}return t})(u),p=d===u?{...u}:d;p.__esModule!==!0&&Object.defineProperty(p,"__esModule",{value:!0,enumerable:!1}),v(c.share,n,p,f)}))};let ye=e=>{let t=z[e];if(!t.treeShaking&&t.shareConfig?.import!==!1)return!1;let n=r(e,t.shareConfig?.singleton,t.version,t.scope);return t.treeShaking?k(c.share,n,f)===void 0&&i(c.share,n)===void 0:i(c.share,n)===void 0},$=Q.findIndex(e=>{let t=z[e],n=r(e,t.shareConfig?.singleton,t.version,t.scope);return(t.treeShaking?k(c.share,n,f)??i(c.share,n):i(c.share,n))===void 0?t.treeShaking||t.shareConfig?.import===!1?!0:typeof C==`function`&&!!C(R[e],e,t,`version-first`):!1}),be=$===-1?Q:Q.slice(0,$);var xe=$===-1?[]:Q.slice($);await ve(be);try{await _(async()=>{await Promise.all(await q.initializeSharing(`default`,{strategy:`version-first`,from:`build`,initScope:t}))})}catch(e){console.error(`[Module Federation]`,e)}L();let Se=async()=>{for(let t of p)await Promise.all(t.map(async t=>{let n=z[t];!n||n.materialize===!1||n.treeShaking||await me(t,n,e[t],R[t],void 0)}))};await Se(),ne&&(g=Se);try{let e=globalThis.__FEDERATION__?.__SHARE__,t=Object.create(null);if(e)for(let[,n]of Object.entries(e))for(let e of u){let r=n?.[e];if(r)for(let[e,n]of Object.entries(r)){let r=z?.[e],i=R[e],a=Z.get(e);if(!r||!i||!a||r.treeShaking)continue;let o=t[e]||(t[e]=Object.create(null));for(let[e,t]of Object.entries(n)){if(!t.lib||a.version!==e||!w(t,a.provider))continue;let n=i[e];(t===n||n?.from&&t.from===n.from)&&(t===r||r.from&&t.from===r.from||o[e]===void 0&&(o[e]=t))}}}for(let e of p)await Promise.all(e.map(async e=>{let n=t[e];n&&await me(e,z[e],n,R[e],Z.get(e))}))}catch(e){console.error(`[Module Federation] Failed to bridge external shared modules`,e)}let Ce=async()=>{},we=async(t,n)=>{let a=r(t,n.shareConfig?.singleton,n.version,n.scope),o=n.treeShaking?k(c.share,a,f):i(c.share,a);if(n.shareConfig?.import!==!1||o!==void 0||V(t,n,R[t]))return;let s=e=>{let t=e;for(let e=0;e<5;e++){let e=t?.default;if(!e||typeof e!=`object`||Object.keys(e).length===0)break;let n=Object.keys(t).filter(e=>e!=="default").map(e=>t[e]);if(n.length>0&&n.some(e=>e!==void 0))break;t=e}return t},l=e?.[t],u=S(l,t,n,`version-first`)||n,d=x(l,u);if(!d)return;let{version:p}=d,m=l?.[p],h=await Y(t,n.shareConfig,l,p,m,u,d.registered&&!w(u,n)),g=h?.selection,_=h?.provider,y=h?.resolved;if(!g||w(_,n)||y===void 0||(n.treeShaking?k(c.share,a,f):i(c.share,a))!==void 0||g.registered&&l?.[g.version]!==_)return;let b=s(y);if(n.treeShaking){let e=n.treeShaking.providedExports??n.treeShaking.usedExports??[];T(c.share,a,e,b),A(c.share,a,f,b)}else v(c.share,a,b,g.from)},Te=[];for(let e of xe){let t=z[e];if(ye(e))try{t.treeShaking?await Ce(e,t):t.shareConfig?.import===!1&&await we(e,t)}catch(t){console.error(`[Module Federation] Failed to resolve runtime-only shared module "${e}"`,t);break}if(ye(e))break;Te.push(e)}return await ve(Te),o(q),q}async function k(e){let t=await D();if(!(e in t))throw Error(`[Module Federation] Module ${e} does not exist in container.`);return g&&await g(),c.pendingShareLoads&&await Promise.all(c.pendingShareLoads),t[e]().then(e=>()=>e)}export{k as get,O as init};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import{a as e,i as t,n,r,t as i}from"./_virtual_mf___mfe_internal__signalk_questdb__mf_owner__1__loadShare__react__loadShare__.js-DzhF4wXp.js";var a={root:{fontFamily:`-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`,color:`#333`,padding:`16px 0`},sectionToggle:{color:`#555`,display:`flex`,alignItems:`center`,gap:6,width:`100%`,textAlign:`left`,background:`none`,border:`none`,padding:0,cursor:`pointer`,userSelect:`none`},sectionMarker:{fontSize:11,transition:`transform 0.15s`},sectionTitle:{fontSize:13,fontWeight:600,color:`#888`,textTransform:`uppercase`,letterSpacing:`0.05em`,marginBottom:10,marginTop:24},btn:{display:`inline-flex`,alignItems:`center`,gap:8,padding:`8px 16px`,border:`none`,borderRadius:6,fontSize:13,fontWeight:600,cursor:`pointer`},btnPrimary:{background:`#3b82f6`,color:`#fff`},btnSecondary:{background:`#f1f5f9`,color:`#475569`,border:`1px solid #e2e8f0`},btnWarn:{background:`#f59e0b`,color:`#fff`},btnDanger:{background:`#ef4444`,color:`#fff`},btnDisabled:{opacity:.5,cursor:`not-allowed`},btnSmall:{padding:`4px 12px`,fontSize:12},status:{marginTop:8,fontSize:12,minHeight:18},card:{display:`flex`,alignItems:`center`,gap:14,padding:`14px 18px`,background:`#f8f9fa`,border:`1px solid #e0e0e0`,borderRadius:10,marginBottom:12},cardIcon:{width:44,height:44,borderRadius:10,display:`flex`,alignItems:`center`,justifyContent:`center`,fontSize:20,fontWeight:700,flexShrink:0},cardInfo:{flex:1},cardTitle:{fontSize:15,fontWeight:600,color:`#333`},cardMeta:{fontSize:12,color:`#888`},stateIndicator:{width:10,height:10,borderRadius:`50%`,flexShrink:0},fieldRow:{display:`flex`,alignItems:`center`,gap:12,marginBottom:10},label:{fontSize:13,fontWeight:500,color:`#555`,width:180,flexShrink:0},select:{padding:`6px 10px`,borderRadius:6,border:`1px solid #ccc`,fontSize:13,background:`#fff`,color:`#333`,minWidth:200},input:{padding:`6px 10px`,borderRadius:6,border:`1px solid #ccc`,fontSize:13,background:`#fff`,color:`#333`,width:200},inputSmall:{padding:`6px 10px`,borderRadius:6,border:`1px solid #ccc`,fontSize:13,background:`#fff`,color:`#333`,width:80},checkbox:{width:16,height:16,accentColor:`#3b82f6`},hint:{fontSize:11,color:`#aaa`,marginLeft:8},link:{color:`#3b82f6`,textDecoration:`none`,fontSize:13,fontWeight:600},textarea:{padding:`6px 10px`,borderRadius:6,border:`1px solid #ccc`,fontSize:13,fontFamily:`monospace`,background:`#fff`,color:`#333`,width:`100%`,minHeight:70,boxSizing:`border-box`,resize:`vertical`},empty:{textAlign:`center`,padding:`30px 16px`,color:`#999`,fontSize:13},tag:{display:`inline-block`,padding:`2px 8px`,borderRadius:4,fontSize:10,fontWeight:600,marginLeft:8},tagPre:{background:`#fef3c7`,color:`#92400e`},tagLatest:{background:`#dcfce7`,color:`#166534`},warnBanner:{padding:`12px 16px`,background:`#fef2f2`,border:`1px solid #fecaca`,borderRadius:10,marginBottom:12,fontSize:13,color:`#991b1b`,lineHeight:1.5},warnBannerTitle:{fontWeight:700,marginBottom:4},infoBanner:{padding:`12px 16px`,background:`#fffbeb`,border:`1px solid #fde68a`,borderRadius:10,marginBottom:12,fontSize:13,color:`#92400e`,lineHeight:1.5},bannerCode:{display:`block`,marginTop:8,padding:`8px 10px`,background:`#fff`,border:`1px solid #fecaca`,borderRadius:6,fontFamily:`monospace`,fontSize:12,color:`#7f1d1d`,whiteSpace:`pre-wrap`,wordBreak:`break-word`},statsGrid:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(140px, 1fr))`,gap:10,marginBottom:12},statCard:{padding:`12px 16px`,background:`#f8f9fa`,border:`1px solid #e0e0e0`,borderRadius:10,textAlign:`center`},statValue:{fontSize:22,fontWeight:700,color:`#333`},statLabel:{fontSize:11,color:`#888`,marginTop:2}},o={ok:`#10b981`,warn:`#f59e0b`,error:`#ef4444`};function s(e,t){if(!e)return{versions:null,versionsError:`⚠ Could not reach GitHub — showing last known versions, retry`};let n=t&&typeof t==`object`?t:{},r=Array.isArray(n)?n:Array.isArray(n.versions)?n.versions:[],i=!Array.isArray(n)&&n.sources&&typeof n.sources==`object`?n.sources:{},a=``;return i.prImages===`rate-limited`?a=`⚠ GitHub rate-limited — PR test images temporarily unavailable, retry shortly`:i.releases===`rate-limited`?a=`⚠ GitHub rate-limited — some versions temporarily unavailable, retry shortly`:(i.prImages===`error`||i.releases===`error`)&&(a=`⚠ Could not fetch some versions from GitHub, retry`),{versions:r,versionsError:a}}function c(e,t={}){let{stableCount:n=5,preCount:r=3}=t,i=e.filter(e=>typeof e.pr==`number`),a=e.filter(e=>typeof e.pr!=`number`);return{prVersions:i,stableVersions:a.filter(e=>!e.prerelease).slice(0,n),preVersions:a.filter(e=>e.prerelease).slice(0,r)}}function l(e,t=[`latest`],n={}){let{prVersions:r,stableVersions:i,preVersions:a}=c(e,n);return new Set([...t,...a.map(e=>e.tag),...i.map(e=>e.tag),...r.map(e=>e.tag)])}function u(e,t,n=[`latest`],r={}){return e?l(t,n,r).has(e)?null:e:null}function d(e){return e==null?`—`:e>=1e6?(e/1e6).toFixed(1)+`M`:e>=1e3?(e/1e3).toFixed(1)+`K`:String(e)}function f(i,a={}){let{intervalMs:o=5e3}=a,[s,c]=e(null),[l,u]=e(!0),d=t(0),f=t(a.fallback??null),p=n(async e=>{let t=++d.current,n=f.current;try{let t=await(await fetch(i,{signal:e})).json().catch(()=>null);t&&typeof t==`object`&&(n=t)}catch{}t===d.current&&(c(n),u(!1))},[i]);return r(()=>{let e=!1,t=null,n=new AbortController,r=async()=>{await p(n.signal),!e&&o>0&&(t=setTimeout(()=>void r(),o))};return r(),()=>{e=!0,n.abort(),t&&clearTimeout(t)}},[p,o]),{status:s,loading:l,refresh:()=>p()}}function p(i){let[a,o]=e([]),[c,l]=e(``),[u,d]=e(!1),f=t(0),p=n(async()=>{let e=++f.current;d(!0);try{let t=await fetch(i),n=await t.json().catch(()=>null),r=s(t.ok,n);if(e!==f.current)return;r.versions!==null&&o(r.versions),l(r.versionsError)}catch{if(e!==f.current)return;l(`⚠ Offline — showing last known versions`)}d(!1)},[i]);return r(()=>{p()},[p]),{versions:a,versionsError:c,loading:u,refresh:p}}function m({children:e,color:t}){return i.createElement(`span`,{style:{...a.hint,...t?{color:t}:{}}},e)}function h({state:e=`ok`,color:t,title:n,style:r}){return i.createElement(`div`,{style:{...a.stateIndicator,background:t??o[e],...r},title:n})}function g({icon:e,iconBackground:t,iconColor:n,title:r,meta:s,state:c=`ok`,stateTitle:l,link:u,children:d}){let f=c===`error`&&!t;return i.createElement(`div`,{style:a.card},i.createElement(`div`,{style:{...a.cardIcon,background:f?`#fef2f2`:t??`#3b82f6`,color:f?o.error:n??`#fff`}},e),i.createElement(`div`,{style:a.cardInfo},i.createElement(`div`,{style:a.cardTitle},r),s!=null&&i.createElement(`div`,{style:a.cardMeta},s)),d,u&&i.createElement(`a`,{href:u.href,target:`_blank`,rel:`noopener noreferrer`,style:a.link},u.label),i.createElement(h,{state:c,title:l}))}function _({title:t,defaultOpen:n=!1,children:r}){let[o,s]=e(n);return i.createElement(`div`,null,i.createElement(`button`,{type:`button`,"aria-expanded":o,style:{...a.sectionTitle,...a.sectionToggle},onClick:()=>s(!o)},i.createElement(`span`,{style:{...a.sectionMarker,transform:o?`rotate(90deg)`:`rotate(0deg)`}},`▶`),t),o&&i.createElement(`div`,{style:{marginBottom:16}},r))}var v={primary:a.btnPrimary,secondary:a.btnSecondary,warn:a.btnWarn,danger:a.btnDanger};function y({variant:e=`primary`,small:t=!1,busy:n=!1,busyLabel:r,disabled:o=!1,onClick:s,title:c,style:l,children:u}){let d=o||n;return i.createElement(`button`,{type:`button`,style:{...a.btn,...v[e],...t?a.btnSmall:{},...d?a.btnDisabled:{},...l},onClick:s,disabled:d,title:c},n?r??u:u)}function ee({message:e,error:t=!1,style:n}){return e?i.createElement(`div`,{style:{...a.status,color:t?o.error:o.ok,marginTop:16,...n}},e):null}var b=[{tag:`latest`,label:`latest (recommended)`}];function te({value:e,onChange:t,versions:n,floatingOptions:r=b,stableCount:s,preCount:l,loading:d=!1,error:f,onRefresh:p,disabled:h=!1,style:g}){let _={stableCount:s,preCount:l},{prVersions:v,stableVersions:ee,preVersions:te}=c(n,_),x=u(e,n,r.map(e=>e.tag),_);return i.createElement(i.Fragment,null,i.createElement(`select`,{style:{...a.select,...g},value:e,onChange:e=>t(e.target.value),disabled:h},r.map(e=>i.createElement(`option`,{key:e.tag,value:e.tag},e.label??e.tag)),te.map(e=>i.createElement(`option`,{key:e.tag,value:e.tag},e.tag,` (pre-release)`)),ee.map((e,t)=>i.createElement(`option`,{key:e.tag,value:e.tag},e.tag,t===0?` (current stable)`:``)),v.length>0&&i.createElement(`optgroup`,{label:`PR test images`},v.map(e=>i.createElement(`option`,{key:e.tag,value:e.tag},e.tag,e.title?` — ${e.title}`:``))),x&&i.createElement(`option`,{value:x},x,` (running)`)),d&&i.createElement(m,null,`loading releases...`),p&&i.createElement(y,{small:!0,style:{padding:`4px 10px`,fontSize:11},onClick:p,title:`Refresh available versions`},`↻`),f&&i.createElement(m,{color:o.error},f))}var x={...a,warnBannerCode:{display:`block`,marginTop:8,padding:`8px 10px`,background:`#fff`,border:`1px solid #fecaca`,borderRadius:6,fontFamily:`monospace`,fontSize:12,color:`#7f1d1d`,whiteSpace:`pre-wrap`,wordBreak:`break-word`},fieldHelp:{fontSize:12,color:`#666`,marginTop:6,lineHeight:1.5},migrationItem:{display:`flex`,alignItems:`center`,gap:12,padding:`12px 16px`,background:`#f8f9fa`,border:`1px solid #e0e0e0`,borderRadius:10,marginBottom:8},migrationActions:{display:`flex`,gap:8,alignItems:`center`}},S=e=>typeof e==`object`&&!!e;function ne(e){let t=S(e)?e.sources:void 0;return Array.isArray(t)?t.filter(e=>S(e)&&typeof e.type==`string`&&typeof e.url==`string`&&typeof e.status==`string`&&(e.version===void 0||typeof e.version==`string`)):[]}function C(e){return e instanceof Error?e.message:String(e)}function w(e,t){return e??t}var T=[`none`,`lz4`,`zstd`],re={padding:`4px 12px`,fontSize:12};function ie(e){return T.includes(e)?e:`lz4`}function E({configuration:a,save:o}){let s=a||{},[c,l]=e(s.questdbHost||`127.0.0.1`),[u,m]=e(s.questdbIlpPort||9009),[h,v]=e(s.questdbHttpPort||9e3),[b,S]=e(s.questdbPgPort||8812),[T,E]=e(s.questdbVersion||`latest`),[D,ae]=e(s.managedContainer!==!1),[oe,se]=e(s.recordSelf!==!1),[ce,le]=e(s.recordOthers!==!1),[O,ue]=e(s.restoreOnStart===!0),[de,fe]=e(s.enableConsole!==!1),[pe,me]=e((s.restoreMaxAgeMinutes??0)>0?s.restoreMaxAgeMinutes:9),[he,ge]=e(s.defaultSamplingRate??2e3),[k,_e]=e(String(s.ilpFlushIntervalMs??5e3)),[ve,ye]=e(s.retentionDays||0),[A,be]=e(s.pathFilter?.mode===`include`?`include`:`exclude`),[j,xe]=e((Array.isArray(s.pathFilter?.paths)?s.pathFilter.paths:[]).join(`
|
|
2
|
-
`)),[Se,Ce]=e(s.compression||`lz4`),[we,Te]=e(s.compressionLevel||3),[Ee,De]=e(s.networkName||`sk-network`),[M,Oe]=e(s.exposeToContainers||!1),{versions:ke,versionsError:Ae,loading:je,refresh:Me}=p(`/plugins/signalk-questdb/api/versions`),{status:N,loading:Ne,refresh:P}=f(`/plugins/signalk-questdb/api/status`,{fallback:{status:`not_running`},intervalMs:5e3}),[F,Pe]=e(null),[Fe,Ie]=e(!1),[I,Le]=e(``),[Re,L]=e(``),[ze,R]=e(!1),[z,Be]=e(null),[Ve,He]=e(!1),[Ue,We]=e(!1),[Ge,Ke]=e(!1),[qe,Je]=e(!1),[Ye,B]=e(``),[V,Xe]=e(null),[H,U]=e(!1),W=t(0),[Ze,Qe]=e(!1),G=n(async e=>{let t=++W.current;try{let n=await fetch(`/plugins/signalk-questdb/api/wal-diagnosis`,{signal:e});if(t!==W.current)return;if(n.ok){let e=await n.json();if(t!==W.current)return;Xe(e),U(!1)}else U(!0)}catch{t===W.current&&U(!0)}},[]),$e=!!(N&&N.status===`running`&&(N.suspendedTables||[]).length>0);r(()=>{if(!$e){Xe(null),U(!1);return}let e=!1,t=null,n=new AbortController,r=async()=>{await G(n.signal),e||(t=setTimeout(r,15e3))};return r(),()=>{e=!0,n.abort(),t&&clearTimeout(t)}},[$e,G]);let et=async(e,t)=>{let n=t.tailSkip?`
|
|
3
|
-
|
|
4
|
-
WARNING: this is the newest pending segment — skipping it drops the ENTIRE pending backlog.`:``;if(window.confirm(`Skip the unreadable WAL segment on ${e}?\n\nThis permanently loses ${d(t.skippedTxns)} transaction(s) recorded between ${t.skipWindowStart} and ${t.skipWindowEnd}. Everything after the skipped segment is replayed without loss.`+n)){Qe(!0),B(``);try{let n=await fetch(`/plugins/signalk-questdb/api/resume-wal/skip`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({table:e,confirmPlan:t})}),r=await n.json().catch(()=>({error:n.statusText}));n.ok?B(r.message??``):B(`Skip failed: ${w(r.error,`unknown error`)}`),P(),G()}catch(e){B(`Skip failed: ${C(e)}`)}Qe(!1)}},tt=async()=>{He(!0);try{let e=await fetch(`/plugins/signalk-questdb/api/update/check`);e.ok&&Be(await e.json())}catch{}He(!1)},nt=async()=>{We(!0),L(`Pulling new image and restarting...`),R(!1);try{let e=await fetch(`/plugins/signalk-questdb/api/update/apply`,{method:`POST`});if(e.ok){let t=await e.json();L(t.message??``),Be(null),t.newVersion&&E(t.newVersion),P()}else{let t=await e.json().catch(()=>({error:e.statusText}));L(`Update failed: ${w(t.error,`unknown error`)}`),R(!0)}}catch(e){L(`Update failed: ${C(e)}`),R(!0)}We(!1)},rt=async()=>{if(window.confirm(`Remove the QuestDB container and DELETE ALL recorded data? This cannot be undone.`)){Ke(!0),L(`Removing QuestDB container and data...`),R(!1);try{let e=await fetch(`/plugins/signalk-questdb/api/purge-data`,{method:`POST`}),t=await e.json().catch(()=>({error:e.statusText}));e.ok?(L(t.message??``),P()):(L(`Remove failed: ${w(t.error,`unknown error`)}`),R(!0))}catch(e){L(`Remove failed: ${C(e)}`),R(!0)}Ke(!1)}},it=async()=>{Je(!0),B(``);try{let e=await fetch(`/plugins/signalk-questdb/api/resume-wal`,{method:`POST`}),t=await e.json().catch(()=>({error:e.statusText}));if(e.ok){let e=(t.results||[]).filter(e=>!e.ok);B(e.length===0?`${w(t.message,`Resume requested`)}. Recording resumes as the backlog drains — the banner clears once tables catch up.`:`${w(t.message,`Resume requested`)}. `+e.map(e=>`${e.table}: ${e.error}`).join(` · `)),P(),G()}else B(`Resume failed: ${w(t.error,`unknown error`)}`)}catch(e){B(`Resume failed: ${C(e)}`)}Je(!1)},at=async()=>{Ie(!0),L(``);try{let e=I?`?url=${encodeURIComponent(I)}`:``,t=await fetch(`/plugins/signalk-questdb/api/migration/detect${e}`);if(t.ok){let e=ne(await t.json().catch(()=>null));Pe(e),e.length===0&&(L(I?`No InfluxDB found at ${I}.`:`No InfluxDB instances detected on localhost:8086.`),R(!1))}}catch(e){L(`Detection failed: `+C(e)),R(!0)}Ie(!1)},[K,ot]=e(``),[q,st]=e(``),[J,ct]=e(`parquet`),[lt,ut]=e(!1),dt=()=>{let e=Number(k);if(k===``||!Number.isFinite(e)||e<500||e>3e5){L(`Write batch interval must be 500–300000 ms.`),R(!0);return}o({...s,questdbHost:c,questdbIlpPort:u,questdbHttpPort:h,questdbPgPort:b,questdbVersion:T,managedContainer:D,defaultSamplingRate:he,ilpFlushIntervalMs:e,recordSelf:oe,recordOthers:ce,restoreOnStart:O,enableConsole:de,restoreMaxAgeMinutes:pe,retentionDays:ve,compression:Se,compressionLevel:we,networkName:Ee,exposeToContainers:M,pathFilter:{mode:A,paths:j.split(`
|
|
5
|
-
`).map(e=>e.trim()).filter(Boolean)},samplingRates:s.samplingRates||{}}),L(`Saved! Plugin will restart with new configuration.`),R(!1)},ft=async()=>{if(!K||!q){L(`Set both from and to dates for export.`),R(!0);return}ut(!0),L(`Exporting ${J.toUpperCase()}...`),R(!1);try{let e=`/plugins/signalk-questdb/api/export?from=${encodeURIComponent(K)}&to=${encodeURIComponent(q)}&format=${J}`,t=await fetch(e);if(!t.ok){let e=await t.json().catch(()=>({error:t.statusText}));L(`Export failed: ${w(e.error,`unknown error`)}`),R(!0),ut(!1);return}let n=await t.blob(),r=J===`parquet`?`parquet`:`csv`,i=document.createElement(`a`);i.href=URL.createObjectURL(n),i.download=`signalk-export-${K.slice(0,10)}.${r}`,i.click(),URL.revokeObjectURL(i.href),L(`Exported ${(n.size/1024/1024).toFixed(1)} MB`)}catch(e){L(`Export failed: ${C(e)}`),R(!0)}ut(!1)},Y=N&&N.status===`running`,X=Y&&N.suspendedTables||[],Z=X.length>0,pt=Y&&N.schemaMismatch||!1,Q=Y&&N.ulimitClamp||null,mt=Q!==null&&Q.granted<=0,$=N?.hostMaxMapCount?.tooLow&&N.hostMaxMapCount||null;return i.createElement(`div`,{style:x.root},i.createElement(`div`,{style:x.sectionTitle},`QuestDB Status`),$&&i.createElement(`div`,{style:x.infoBanner},i.createElement(`div`,{style:x.warnBannerTitle},`Host vm.max_map_count is low — `,d($.current),` `,`(QuestDB recommends `,d($.recommended),`)`),`QuestDB memory-maps every partition and WAL segment it touches. As the database grows, this kernel limit can run out — mmap then fails with out-of-memory errors even though RAM is free, which shows up as slow or failing history queries, can suspend recording, and can take QuestDB down entirely. Run this in a shell on the host machine — not inside the QuestDB container, which can neither change the kernel-global limit nor has sudo (takes effect immediately, no restart needed):`,i.createElement(`code`,{style:x.warnBannerCode},`echo 'vm.max_map_count=${$.recommended}' | sudo tee /etc/sysctl.d/99-questdb.conf && sudo sysctl --system`)),Ne?i.createElement(`div`,{style:x.empty},`Checking QuestDB...`):Y?i.createElement(i.Fragment,null,Z&&i.createElement(`div`,{style:x.warnBanner},i.createElement(`div`,{style:x.warnBannerTitle},`QuestDB WAL suspended — recording stalled`),`Rows are arriving but no longer commit, so the counts below have stopped advancing. This follows an error while QuestDB applied the write-ahead log — see the reason reported per table below. Resuming replays every pending transaction, so no data is lost.`,i.createElement(`code`,{style:x.warnBannerCode},X.map(e=>{let t=String(e.errorMessage||e.errorTag||`reason not reported`).replace(/[\r\n]+/g,` `),n=(V?.tables||[]).find(t=>t.name===e.name),r=n?.suspendedSince?` — frozen since ${n.suspendedSince}`:``;return`${e.name}: ${d(e.txnLag)} txns behind — ${t}${r}`}).join(`
|
|
6
|
-
`)),(V?.tables||[]).filter(e=>e.applyError).map(e=>i.createElement(`div`,{key:e.name,style:{marginTop:8,fontSize:12}},`QuestDB's own log reports the apply failure on`,` `,i.createElement(`code`,null,e.name),` as:`,i.createElement(`code`,{style:x.warnBannerCode},e.applyError))),i.createElement(`div`,{style:{marginTop:10}},i.createElement(y,{variant:`primary`,busy:qe,busyLabel:`Resuming...`,disabled:Ze,onClick:it},`Resume recording`)),X.filter(e=>e.autoResume===`failed`).map(e=>{let t=(V?.tables||[]).find(t=>t.name===e.name);if(t?.partitionOpenFailure)return i.createElement(`div`,{key:e.name,style:{marginTop:12}},i.createElement(`div`,{style:x.warnBannerTitle},e.name,`: table data damaged — automatic repair not possible`),`QuestDB fails while opening this table's stored data, before it reaches any pending transaction. That means the commit record on disk describes rows whose data never made it to storage — the signature of a power loss during a write. Skipping transactions cannot fix this (the failure happens before them) and would discard the `,d(e.txnLag),` pending transactions for nothing, so no repair button is offered. Recovering this table means repairing its commit record by hand; please open an issue with the error above. Recording continues into the other tables, and “Resume recording” will re-suspend this one within milliseconds — it is safe to press, but it cannot repair this damage.`);let n=t?.skipPlan;return n?i.createElement(`div`,{key:e.name,style:{marginTop:12}},i.createElement(`div`,{style:x.warnBannerTitle},e.name,`: automatic resume failed — WAL segment unreadable`),`A lossless resume was attempted and the table re-suspended at the same transaction: the write-ahead-log segment at the stall point cannot be read back (typically corrupted by an unclean shutdown mid-write). Replaying can never get past it. The only repair is to skip the unreadable segment, losing`,` `,i.createElement(`b`,null,d(n.skippedTxns),` transaction(s)`),` `,`recorded between `,i.createElement(`b`,null,n.skipWindowStart),` and`,` `,i.createElement(`b`,null,n.skipWindowEnd),n.tailSkip?` — and this is the newest pending segment, so skipping it drops the ENTIRE pending backlog`:` — everything after the skipped segment (${d(Math.max(0,e.txnLag-n.skippedTxns))} txns) is replayed without loss`,`.`,i.createElement(`div`,{style:{marginTop:8}},i.createElement(y,{variant:`danger`,busy:Ze,busyLabel:`Skipping...`,disabled:qe||H,onClick:()=>et(e.name,n)},`Skip unreadable segment (loses data)`),H&&i.createElement(`div`,{style:{marginTop:6,fontSize:12}},`The diagnosis could not be refreshed — the numbers above may be stale. The skip re-enables once a refresh succeeds.`))):null}),i.createElement(`div`,{style:{marginTop:8,fontSize:12}},`Manual fallback in the QuestDB SQL console (`,i.createElement(`code`,null,`:9000`),`), one statement at a time — avoid running it from several tabs, the console retries a busy statement forever:`,i.createElement(`code`,{style:x.warnBannerCode},X.map(e=>{let t=`"${String(e.name).replace(/"/g,`""`)}"`,n=(V?.tables||[]).find(t=>t.name===e.name),r=[`ALTER TABLE ${t} RESUME WAL;`];return e.autoResume===`failed`&&n?.skipPlan&&!H&&r.push(`-- if the resume re-suspends: skip the unreadable segment (loses ${d(n.skipPlan.skippedTxns)} txns)`,`ALTER TABLE ${t} RESUME WAL FROM TXN ${n.skipPlan.skipToTxn};`),r.join(`
|
|
7
|
-
`)}).join(`
|
|
8
|
-
`)))),Ye&&i.createElement(`div`,{style:x.infoBanner},Ye),pt&&i.createElement(`div`,{style:x.warnBanner},i.createElement(`div`,{style:x.warnBannerTitle},`QuestDB table schema mismatch — data not readable`),`A QuestDB table was re-created by ILP ingestion with the wrong timestamp column, so rows are being stored but reads filtering on time (history, Grafana, and the counts above) return nothing. The plugin rebuilds the affected table with the correct schema automatically within a minute; if this persists, restart the plugin. (The few rows written into the wrong-schema table are lost — they were unreadable anyway.)`),Q&&i.createElement(`div`,{style:x.infoBanner},i.createElement(`div`,{style:x.warnBannerTitle},mt?`QuestDB open-files request rejected by the host`:`QuestDB open-files limit capped by the host`),mt?i.createElement(i.Fragment,null,`QuestDB requested a `,i.createElement(`code`,null,Q.ulimit),` limit of`,` `,d(Q.requested),`, but the container host rejected it, so QuestDB is running with the runtime's default limits. This is typical for podman machine on macOS, where the limits live inside the VM and cannot be read from here. Raise the limits of the service that runs the container runtime (on macOS: inside the VM, via`,` `,i.createElement(`code`,null,`podman machine ssh`),`), then remove the container once with `,i.createElement(`code`,null,`podman rm -f sk-signalk-questdb`),` and restart Signal K — a restart alone cannot re-grant a rejected ask.`):i.createElement(i.Fragment,null,`QuestDB requested a `,i.createElement(`code`,null,Q.ulimit),` limit of`,` `,d(Q.requested),`, but this host only allows `,d(Q.granted),`, so it was capped. QuestDB is running on the lower limit. To grant the full value, raise the host limit for the user running the container runtime — under rootless Podman that means a systemd`,` `,i.createElement(`code`,null,`user@.service`),` `,i.createElement(`code`,null,`LimitNOFILE`),` drop-in (editing `,i.createElement(`code`,null,`/etc/security/limits.conf`),` alone is usually not enough) — then restart the Signal K server so the plugin can re-create the QuestDB container with the raised limit (signalk-container 1.25.3+; on older versions remove the container once with`,` `,i.createElement(`code`,null,`podman rm -f sk-signalk-questdb`),` instead).`),` `,`This warning clears itself once the container is running with the full value.`,` `,i.createElement(`a`,{href:mt?`https://github.com/dirkwa/signalk-questdb#questdb-container-never-starts-on-macos-podman-machine`:`https://github.com/dirkwa/signalk-container#raising-the-open-files-limit-nofile`,target:`_blank`,rel:`noreferrer`,style:{color:`#92400e`,textDecoration:`underline`}},`Step-by-step instructions`),`.`),i.createElement(g,{icon:`Q`,iconBackground:`#7c3aed`,iconColor:`#fff`,title:`QuestDB`,meta:i.createElement(i.Fragment,null,N?.endpoint||`${c}:${h}`,` `,`· `,Z?`WAL suspended`:`Recording`),state:Z?`error`:`ok`,stateTitle:Z?`WAL suspended`:`Running`}),i.createElement(`div`,{style:x.statsGrid},i.createElement(`div`,{style:x.statCard},i.createElement(`div`,{style:x.statValue},d(N.totalRows)),i.createElement(`div`,{style:x.statLabel},`Total Rows`)),i.createElement(`div`,{style:x.statCard},i.createElement(`div`,{style:x.statValue},d(N.activePathsToday)),i.createElement(`div`,{style:x.statLabel},`Active Paths Today`)),N.restore&&i.createElement(`div`,{style:x.statCard},i.createElement(`div`,{style:x.statValue},N.restore.failed?`—`:d(N.restore.contexts)),i.createElement(`div`,{style:x.statLabel},N.restore.failed?`Restore failed`:`Vessels Restored`))),i.createElement(`div`,{style:{display:`flex`,alignItems:`center`,gap:10,marginBottom:12}},z&&z.updateAvailable?i.createElement(i.Fragment,null,i.createElement(`span`,{style:{fontSize:13}},`v`,z.currentVersion,` →`,` `,i.createElement(`strong`,null,`v`,z.latestVersion),` available`),i.createElement(y,{variant:`primary`,busy:Ue,busyLabel:`Updating...`,onClick:nt,style:re},`Update QuestDB`)):z&&!z.updateAvailable?i.createElement(`span`,{style:{fontSize:12,color:`#888`}},`v`,z.currentVersion,` (up to date)`):i.createElement(y,{variant:`secondary`,busy:Ve,busyLabel:`Checking...`,onClick:tt,style:re},`Check for updates`))):i.createElement(g,{icon:`Q`,title:`QuestDB`,meta:i.createElement(i.Fragment,null,N?.status===`unhealthy`?`Not responding`:`Not running`,D?` — enable plugin to start container`:``),state:`error`}),i.createElement(`div`,{style:x.sectionTitle},`Image Version`),i.createElement(`div`,{style:x.fieldRow},i.createElement(`span`,{style:x.label},`QuestDB version`),i.createElement(te,{value:T,onChange:E,versions:ke,loading:je,onRefresh:()=>void Me(),error:Ae,stableCount:3,preCount:2})),i.createElement(`div`,{style:x.sectionTitle},`Connection`),i.createElement(`div`,{style:x.fieldRow},i.createElement(`span`,{style:x.label},`Managed container`),i.createElement(`input`,{type:`checkbox`,style:x.checkbox,checked:D,onChange:e=>ae(e.target.checked)}),i.createElement(`span`,{style:x.hint},D?`signalk-container manages QuestDB`:`Connect to external QuestDB`)),!D&&i.createElement(i.Fragment,null,i.createElement(`div`,{style:x.fieldRow},i.createElement(`span`,{style:x.label},`QuestDB host`),i.createElement(`input`,{style:x.input,value:c,onChange:e=>l(e.target.value)})),i.createElement(`div`,{style:x.fieldRow},i.createElement(`span`,{style:x.label},`HTTP port (queries)`),i.createElement(`input`,{style:x.inputSmall,type:`number`,value:h,onChange:e=>v(Number(e.target.value))})),i.createElement(`div`,{style:x.fieldRow},i.createElement(`span`,{style:x.label},`ILP port (writes)`),i.createElement(`input`,{style:x.inputSmall,type:`number`,value:u,onChange:e=>m(Number(e.target.value))}))),D&&i.createElement(`div`,{style:x.fieldRow},i.createElement(`span`,{style:x.label},`Bind to 0.0.0.0`),i.createElement(`input`,{type:`checkbox`,style:x.checkbox,checked:M,onChange:e=>Oe(e.target.checked)}),i.createElement(`span`,{style:{...x.hint,color:M?`#ef4444`:void 0}},M?`Caution! This exposes your data to the network`:`Signal K reaches QuestDB automatically — only enable to reach it from another machine or a separate-Docker Grafana`)),D&&M&&i.createElement(i.Fragment,null,i.createElement(`div`,{style:x.fieldRow},i.createElement(`span`,{style:x.label},`HTTP port (queries)`),i.createElement(`input`,{style:x.inputSmall,type:`number`,value:h,onChange:e=>v(Number(e.target.value))})),i.createElement(`div`,{style:x.fieldRow},i.createElement(`span`,{style:x.label},`ILP port (writes)`),i.createElement(`input`,{style:x.inputSmall,type:`number`,value:u,onChange:e=>m(Number(e.target.value))})),i.createElement(`div`,{style:x.fieldRow},i.createElement(`span`,{style:x.label},`PostgreSQL wire port`),i.createElement(`input`,{style:x.inputSmall,type:`number`,value:b,onChange:e=>S(Number(e.target.value))}),i.createElement(`span`,{style:x.hint},`for Grafana`)),i.createElement(`div`,{style:x.fieldRow},i.createElement(`span`,{style:x.label},`Container network`),i.createElement(`input`,{style:x.input,value:Ee,onChange:e=>De(e.target.value)}),i.createElement(`span`,{style:x.hint},`shared with signalk-grafana`))),i.createElement(`div`,{style:x.sectionTitle},`Recording`),i.createElement(`div`,{style:x.fieldRow},i.createElement(`span`,{style:x.label},`Default sampling rate (ms)`),i.createElement(`input`,{style:x.inputSmall,type:`number`,value:he,onChange:e=>ge(Number(e.target.value))}),i.createElement(`span`,{style:x.hint},`1000 = max 1 write/sec per path (0 = every update)`)),i.createElement(`div`,{style:x.fieldRow},i.createElement(`span`,{style:x.label},`Write batch interval (ms)`),i.createElement(`input`,{style:x.inputSmall,type:`number`,min:500,max:3e5,"aria-label":`Write batch interval in milliseconds`,value:k,onChange:e=>_e(e.target.value)}),i.createElement(`span`,{style:x.hint},`one QuestDB transaction per table per interval; longer = bigger batches, but up to this many ms lost on a hard crash (default 5000)`)),i.createElement(`div`,{style:x.fieldRow},i.createElement(`span`,{style:x.label},`Record own vessel`),i.createElement(`input`,{type:`checkbox`,style:x.checkbox,checked:oe,onChange:e=>se(e.target.checked)})),i.createElement(`div`,{style:x.fieldRow},i.createElement(`span`,{style:x.label},`Record AIS targets`),i.createElement(`input`,{type:`checkbox`,style:x.checkbox,checked:ce,onChange:e=>le(e.target.checked)})),i.createElement(`div`,{style:x.fieldRow},i.createElement(`span`,{style:x.label},`Restore vessels on startup`),i.createElement(`input`,{type:`checkbox`,style:x.checkbox,"aria-label":`Restore vessels on startup`,checked:O,onChange:e=>ue(e.target.checked)}),i.createElement(`span`,{style:x.hint},`replay each vessel's last recorded position after a restart, so AIS targets appear at once instead of only when they next transmit`)),i.createElement(`div`,{style:x.fieldRow},i.createElement(`span`,{style:x.label},`QuestDB console webapp`),i.createElement(`input`,{type:`checkbox`,style:x.checkbox,"aria-label":`QuestDB console webapp`,checked:de,onChange:e=>fe(e.target.checked)}),i.createElement(`span`,{style:x.hint},`serve QuestDB's own console inside the Signal K admin UI (admin only). It is a full SQL client — unlike the read-only query endpoint it can modify and delete recorded data`)),O&&i.createElement(`div`,{style:x.fieldRow},i.createElement(`span`,{style:x.label},`Restore max age (minutes)`),i.createElement(`input`,{style:x.inputSmall,type:`number`,min:1,"aria-label":`Restore max age (minutes)`,value:pe,onChange:e=>{let t=Number(e.target.value);Number.isFinite(t)&&t>=1&&me(t)}}),i.createElement(`span`,{style:x.hint},`only replay values this recent (default 9, matching Freeboard's AIS expiry); higher puts staler positions on the chart`)),i.createElement(`div`,{style:x.fieldRow},i.createElement(`span`,{style:x.label},`Retention (days)`),i.createElement(`input`,{style:x.inputSmall,type:`number`,value:ve,onChange:e=>ye(Number(e.target.value))}),i.createElement(`span`,{style:x.hint},`0 = keep forever`)),i.createElement(_,{title:`Path filtering`,defaultOpen:j.trim()!==``},i.createElement(`div`,{style:x.fieldRow},i.createElement(`span`,{style:x.label},`Filter mode`),i.createElement(`select`,{style:x.select,value:A,onChange:e=>be(e.target.value===`include`?`include`:`exclude`)},i.createElement(`option`,{value:`exclude`},`Exclude matching paths`),i.createElement(`option`,{value:`include`},`Include only matching paths`))),i.createElement(`div`,{style:{marginBottom:10}},i.createElement(`div`,{style:{...x.label,width:`auto`,marginBottom:6}},`Path patterns (one per line, glob supported) — optional`),i.createElement(`textarea`,{style:x.textarea,value:j,onChange:e=>xe(e.target.value),placeholder:`notifications.*
|
|
9
|
-
environment.wind.*`}),i.createElement(`div`,{style:x.fieldHelp},`Empty = record everything (the default). Nothing is filtered out unless you list a pattern here.`),i.createElement(`div`,{style:{...x.hint,marginLeft:0}},A===`exclude`?`These paths are NOT recorded; everything else is.`:`ONLY these paths are recorded; everything else is dropped.`))),i.createElement(_,{title:`Compression (on-disk)`},i.createElement(`div`,{style:x.fieldRow},i.createElement(`span`,{style:x.label},`Compression codec`),i.createElement(`select`,{style:x.select,value:Se,onChange:e=>Ce(ie(e.target.value))},i.createElement(`option`,{value:`none`},`None`),i.createElement(`option`,{value:`lz4`},`LZ4 (fast)`),i.createElement(`option`,{value:`zstd`},`ZSTD (smaller)`)),i.createElement(`span`,{style:x.hint},`applies to new data after save`)),Se===`zstd`&&i.createElement(`div`,{style:x.fieldRow},i.createElement(`span`,{style:x.label},`ZSTD level`),i.createElement(`input`,{style:x.inputSmall,type:`number`,min:`1`,max:`22`,value:we,onChange:e=>Te(Number(e.target.value))}),i.createElement(`span`,{style:x.hint},`1 (fast) to 22 (smallest)`))),i.createElement(_,{title:`InfluxDB Migration`},i.createElement(`div`,{style:{display:`flex`,gap:10,alignItems:`center`,marginBottom:10}},i.createElement(y,{variant:`primary`,busy:Fe,busyLabel:`Detecting...`,onClick:at},`Detect InfluxDB`),i.createElement(`span`,{style:x.hint},`Checks localhost:8086 for InfluxDB 1.x and 2.x`)),F&&F.length>0&&i.createElement(`div`,null,F.map((e,t)=>i.createElement(`div`,{key:t,style:x.migrationItem},i.createElement(`div`,{style:{...x.cardIcon,width:36,height:36,fontSize:16,background:e.type===`influxdb2`?`#020a47`:`#22adf6`,color:`#fff`}},e.type===`influxdb2`?`2`:`1`),i.createElement(`div`,{style:x.cardInfo},i.createElement(`div`,{style:x.cardTitle},`InfluxDB `,e.type===`influxdb2`?`2.x`:`1.x`,i.createElement(`span`,{style:{...x.tag,...x.tagLatest}},e.status)),i.createElement(`div`,{style:x.cardMeta},e.url,` · v`,e.version))))),i.createElement(`div`,{style:{...x.fieldRow,marginTop:10}},i.createElement(`span`,{style:x.label},`Manual InfluxDB URL`),i.createElement(`input`,{style:x.input,placeholder:`http://192.168.1.100:8086`,value:I,onChange:e=>Le(e.target.value)}),i.createElement(`span`,{style:x.hint},`for remote instances`)),F&&F.length===0&&!Fe&&i.createElement(`div`,{style:{...x.empty,padding:`16px`,textAlign:`left`}},`No InfluxDB found on localhost. Use manual URL above for remote instances.`)),i.createElement(_,{title:`Data Export`},i.createElement(`div`,{style:x.fieldRow},i.createElement(`span`,{style:x.label},`From`),i.createElement(`input`,{style:x.input,type:`datetime-local`,value:K,onChange:e=>ot(e.target.value)})),i.createElement(`div`,{style:x.fieldRow},i.createElement(`span`,{style:x.label},`To`),i.createElement(`input`,{style:x.input,type:`datetime-local`,value:q,onChange:e=>st(e.target.value)})),i.createElement(`div`,{style:x.fieldRow},i.createElement(`span`,{style:x.label},`Format`),i.createElement(`select`,{style:x.select,value:J,onChange:e=>ct(e.target.value)},i.createElement(`option`,{value:`parquet`},`Parquet`),i.createElement(`option`,{value:`csv`},`CSV`))),i.createElement(y,{variant:`primary`,busy:lt,busyLabel:`Exporting...`,onClick:ft},`Export Data`)),s.managedContainer!==!1&&i.createElement(_,{title:`Danger zone`},i.createElement(`div`,{style:{fontSize:13,color:`#555`,marginBottom:10}},`Remove the QuestDB container and permanently delete all recorded data. Use this to fully reset QuestDB — Signal K's plugin-uninstall cannot delete this data on rootless Podman. This cannot be undone.`),i.createElement(y,{variant:`danger`,busy:Ge,busyLabel:`Removing...`,onClick:rt},`Remove container & all data`)),i.createElement(ee,{message:Re,error:ze,style:{marginTop:16}}),i.createElement(`div`,{style:{marginTop:24}},i.createElement(y,{onClick:dt},`Save Configuration`)))}export{E as default};
|