signalk-questdb 2.0.0 → 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.
Files changed (54) hide show
  1. package/.coderabbit.yaml +4 -3
  2. package/README.md +162 -7
  3. package/dist/api-contract.d.ts +62 -0
  4. package/dist/config/schema.d.ts +1 -0
  5. package/dist/config/schema.js +5 -0
  6. package/dist/config/schema.js.map +1 -1
  7. package/dist/configpanel/responses.d.ts +33 -1
  8. package/dist/configpanel/responses.js +89 -0
  9. package/dist/configpanel/responses.js.map +1 -1
  10. package/dist/history-v1.js +12 -9
  11. package/dist/history-v1.js.map +1 -1
  12. package/dist/history-v2.d.ts +18 -6
  13. package/dist/history-v2.js +275 -41
  14. package/dist/history-v2.js.map +1 -1
  15. package/dist/ilp-writer.d.ts +22 -0
  16. package/dist/ilp-writer.js +76 -4
  17. package/dist/ilp-writer.js.map +1 -1
  18. package/dist/index.d.ts +1 -0
  19. package/dist/index.js +326 -70
  20. package/dist/index.js.map +1 -1
  21. package/dist/influx-detect.d.ts +19 -0
  22. package/dist/influx-detect.js +165 -0
  23. package/dist/influx-detect.js.map +1 -0
  24. package/dist/migration.d.ts +147 -0
  25. package/dist/migration.js +824 -0
  26. package/dist/migration.js.map +1 -0
  27. package/dist/query-client.d.ts +9 -0
  28. package/dist/query-client.js +11 -0
  29. package/dist/query-client.js.map +1 -1
  30. package/dist/restore.js +9 -0
  31. package/dist/restore.js.map +1 -1
  32. package/dist/schema-errors.d.ts +15 -0
  33. package/dist/schema-errors.js +38 -0
  34. package/dist/schema-errors.js.map +1 -0
  35. package/dist/test/configpanel-responses.test.js +90 -1
  36. package/dist/test/configpanel-responses.test.js.map +1 -1
  37. package/dist/test/history-v2.test.js +440 -2
  38. package/dist/test/history-v2.test.js.map +1 -1
  39. package/dist/test/ilp-writer.test.js +28 -0
  40. package/dist/test/ilp-writer.test.js.map +1 -1
  41. package/dist/test/influx-detect.test.d.ts +1 -0
  42. package/dist/test/influx-detect.test.js +287 -0
  43. package/dist/test/influx-detect.test.js.map +1 -0
  44. package/dist/test/migration.test.d.ts +1 -0
  45. package/dist/test/migration.test.js +851 -0
  46. package/dist/test/migration.test.js.map +1 -0
  47. package/dist/test/restore.test.js +47 -0
  48. package/dist/test/restore.test.js.map +1 -1
  49. package/package.json +5 -4
  50. package/public/assets/PluginConfigurationPanel-CR4mD9IH.js +9 -0
  51. package/public/assets/{index-Z7eUk0W6.js → index-CyI4zKUm.js} +1 -1
  52. package/public/assets/{virtualExposes-CyrNon4j.js → virtualExposes-BBIkbTtD.js} +1 -1
  53. package/public/remoteEntry.js +1 -1
  54. package/public/assets/PluginConfigurationPanel-CyS3A7gD.js +0 -9
@@ -512,8 +512,12 @@ describe("history-v2 sourceRef filtering", () => {
512
512
  },
513
513
  ],
514
514
  });
515
- assert.equal(result.values[0].sourceRef, "gps.main");
516
- assert.ok(!("sourceRef" in result.values[1]), "an unfiltered spec must not grow a sourceRef");
515
+ // signalk-server #2817 renamed the RESPONSE-side field to `$source`
516
+ // while the request-side PathSpec kept `sourceRef`. Emitting the old key
517
+ // left consumers unable to tell the columns apart.
518
+ assert.equal(result.values[0].$source, "gps.main");
519
+ assert.ok(!("$source" in result.values[1]), "an unfiltered spec must not grow a $source");
520
+ assert.ok(!("sourceRef" in result.values[0]), "the pre-#2817 key must not linger alongside $source");
517
521
  });
518
522
  it("serves the same path from two sources as two distinct columns", async () => {
519
523
  // sourceRef filtering is what makes the same path twice in one request
@@ -560,4 +564,438 @@ describe("history-v2 sourceRef filtering", () => {
560
564
  }));
561
565
  });
562
566
  });
567
+ /** Mock whose responses depend on the SQL, so DISTINCT can be answered. */
568
+ function makeSourceAwareClient(captured, sourcesByTable, dataRows = []) {
569
+ return {
570
+ exec: async (sql) => {
571
+ captured.push({ sql });
572
+ if (/SELECT DISTINCT source FROM (\w+)/.test(sql)) {
573
+ const table = /FROM (\w+)/.exec(sql)[1];
574
+ const list = sourcesByTable[table];
575
+ if (list === undefined)
576
+ throw new Error(`table does not exist: ${table}`);
577
+ return {
578
+ columns: [],
579
+ dataset: list.map((s) => [s]),
580
+ count: list.length,
581
+ timestamp: 0,
582
+ };
583
+ }
584
+ return {
585
+ columns: [],
586
+ dataset: dataRows.map(([ts, v]) => [ts, v]),
587
+ count: dataRows.length,
588
+ timestamp: 0,
589
+ };
590
+ },
591
+ };
592
+ }
593
+ describe("history-v2 sourcePolicy=all", () => {
594
+ const RANGE = {
595
+ from: { toString: () => "2024-01-01T00:00:00Z" },
596
+ to: { toString: () => "2024-01-01T01:00:00Z" },
597
+ };
598
+ const SPEC = {
599
+ path: "navigation.speedOverGround",
600
+ aggregate: "average",
601
+ parameter: [],
602
+ };
603
+ it("is inert until the operator enables it", async () => {
604
+ const captured = [];
605
+ // Third argument omitted = disabled, which is the shipped default.
606
+ const provider = createHistoryProviderV2(makeSourceAwareClient(captured, { signalk: ["gps.main", "gps.aux"] }), SELF_CONTEXT);
607
+ const result = await provider.getValues({
608
+ ...RANGE,
609
+ sourcePolicy: "all",
610
+ pathSpecs: [SPEC],
611
+ });
612
+ assert.equal(result.values.length, 1, "must not expand while disabled");
613
+ assert.ok(!("$source" in result.values[0]));
614
+ assert.ok(!captured.some((c) => /SELECT DISTINCT source/.test(c.sql)), "a disabled provider must not even probe for sources");
615
+ });
616
+ it("expands one path into one column per source when enabled", async () => {
617
+ const captured = [];
618
+ const provider = createHistoryProviderV2(makeSourceAwareClient(captured, {
619
+ signalk: ["gps.aux", "gps.main"],
620
+ signalk_str: [],
621
+ }), SELF_CONTEXT, true);
622
+ const result = await provider.getValues({
623
+ ...RANGE,
624
+ sourcePolicy: "all",
625
+ pathSpecs: [SPEC],
626
+ });
627
+ assert.deepEqual(result.values.map((v) => v.$source), ["gps.aux", "gps.main"], "one column per source, named sources sorted for stable order");
628
+ // Each column must be FILTERED to its own source, or every column would
629
+ // carry identical merged data under different labels.
630
+ assert.ok(captured.some((c) => /source = 'gps.main'/.test(c.sql)));
631
+ assert.ok(captured.some((c) => /source = 'gps.aux'/.test(c.sql)));
632
+ });
633
+ // The data array must be as wide as `values`. Assembling rows against the
634
+ // REQUESTED spec count instead of the expanded column count leaves every
635
+ // expanded column without a slot — the metadata promises N series and the
636
+ // rows carry one.
637
+ it("gives every expanded column its own slot in each data row", async () => {
638
+ const captured = [];
639
+ const provider = createHistoryProviderV2(makeSourceAwareClient(captured, { signalk: ["gps.aux", "gps.main"], signalk_str: [] }, [
640
+ ["2024-01-01T00:00:00.000Z", 1.5],
641
+ ["2024-01-01T00:00:01.000Z", 2.5],
642
+ ]), SELF_CONTEXT, true);
643
+ const result = await provider.getValues({
644
+ ...RANGE,
645
+ sourcePolicy: "all",
646
+ pathSpecs: [SPEC],
647
+ });
648
+ assert.equal(result.values.length, 2);
649
+ assert.ok(result.data.length > 0, "expected data rows");
650
+ for (const row of result.data) {
651
+ assert.equal(row.length - 1, result.values.length, `row has ${row.length - 1} value slots for ${result.values.length} columns`);
652
+ }
653
+ });
654
+ it("leaves an explicit sourceRef as a filter, not an expansion", async () => {
655
+ const captured = [];
656
+ const provider = createHistoryProviderV2(makeSourceAwareClient(captured, { signalk: ["gps.main", "gps.aux"] }), SELF_CONTEXT, true);
657
+ const result = await provider.getValues({
658
+ ...RANGE,
659
+ sourcePolicy: "all",
660
+ pathSpecs: [{ ...SPEC, sourceRef: "gps.main" }],
661
+ });
662
+ assert.equal(result.values.length, 1);
663
+ assert.equal(result.values[0].$source, "gps.main");
664
+ assert.ok(!captured.some((c) => /SELECT DISTINCT source/.test(c.sql)), "an explicit source needs no discovery");
665
+ });
666
+ it("does nothing without the policy, even when enabled", async () => {
667
+ const captured = [];
668
+ const provider = createHistoryProviderV2(makeSourceAwareClient(captured, { signalk: ["gps.main", "gps.aux"] }), SELF_CONTEXT, true);
669
+ const result = await provider.getValues({
670
+ ...RANGE,
671
+ pathSpecs: [SPEC],
672
+ });
673
+ assert.equal(result.values.length, 1);
674
+ assert.ok(!("$source" in result.values[0]));
675
+ });
676
+ it("treats an unrecognised policy as absent", async () => {
677
+ const captured = [];
678
+ const provider = createHistoryProviderV2(makeSourceAwareClient(captured, { signalk: ["gps.main", "gps.aux"] }), SELF_CONTEXT, true);
679
+ const result = await provider.getValues({
680
+ ...RANGE,
681
+ sourcePolicy: "none",
682
+ pathSpecs: [SPEC],
683
+ });
684
+ assert.equal(result.values.length, 1, "only 'all' expands");
685
+ assert.ok(!("$source" in result.values[0]));
686
+ assert.ok(!captured.some((c) => /SELECT DISTINCT source/.test(c.sql)), "an unknown policy must not probe for sources");
687
+ });
688
+ // The per-path cap alone is not enough: many paths at many sources each is
689
+ // hundreds of queries from one request.
690
+ it("refuses a request whose total expansion is too wide", async () => {
691
+ const captured = [];
692
+ const eight = ["s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8"];
693
+ const provider = createHistoryProviderV2(makeSourceAwareClient(captured, { signalk: eight, signalk_str: [] }), SELF_CONTEXT, true);
694
+ // 9 paths x 8 sources = 72 columns, past the 64 request ceiling.
695
+ const specs = Array.from({ length: 9 }, (_, i) => ({
696
+ path: `nav.p${i}`,
697
+ aggregate: "average",
698
+ parameter: [],
699
+ }));
700
+ await assert.rejects(() => provider.getValues({
701
+ ...RANGE,
702
+ sourcePolicy: "all",
703
+ pathSpecs: specs,
704
+ }), /expands these paths into 72 columns/);
705
+ });
706
+ // Discovery is a query per path per table, so a request far past the
707
+ // ceiling must be rejected BEFORE issuing hundreds of DISTINCT probes.
708
+ it("stops probing once the column budget is blown", async () => {
709
+ const captured = [];
710
+ const eight = ["s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8"];
711
+ const provider = createHistoryProviderV2(makeSourceAwareClient(captured, { signalk: eight, signalk_str: [] }), SELF_CONTEXT, true);
712
+ const specs = Array.from({ length: 100 }, (_, i) => ({
713
+ path: `nav.p${i}`,
714
+ aggregate: "average",
715
+ parameter: [],
716
+ }));
717
+ await assert.rejects(() => provider.getValues({
718
+ ...RANGE,
719
+ sourcePolicy: "all",
720
+ pathSpecs: specs,
721
+ }), /more than 64 columns/);
722
+ const probes = captured.filter((c) => /SELECT DISTINCT source/.test(c.sql)).length;
723
+ // 100 paths x 2 tables would be 200 if discovery ran to completion.
724
+ assert.ok(probes < 40, `issued ${probes} discovery probes before giving up`);
725
+ });
726
+ // The two value tables migrate independently, so `signalk` can have a
727
+ // `source` column while `signalk_str` does not. Expansion is driven by
728
+ // whichever table answered and then applied to both, so the string fallback
729
+ // carried `AND source = '...'` into a table with no such column and failed
730
+ // the WHOLE request — verified against a live QuestDB.
731
+ it("degrades the string fallback when only signalk_str lacks source", async () => {
732
+ const warnings = [];
733
+ const captured = [];
734
+ const client = {
735
+ exec: async (sql) => {
736
+ captured.push({ sql });
737
+ if (/DISTINCT source FROM signalk_str/.test(sql)) {
738
+ throw new Error("Invalid column: source");
739
+ }
740
+ if (/DISTINCT source FROM signalk/.test(sql)) {
741
+ return {
742
+ columns: [],
743
+ dataset: [["gps.main"]],
744
+ count: 1,
745
+ timestamp: 0,
746
+ };
747
+ }
748
+ // The numeric table holds nothing, forcing the string fallback.
749
+ if (/FROM signalk WHERE/.test(sql)) {
750
+ return { columns: [], dataset: [], count: 0, timestamp: 0 };
751
+ }
752
+ // The string table rejects any query carrying a source predicate.
753
+ if (/FROM signalk_str/.test(sql) && /source/.test(sql)) {
754
+ throw new Error("Invalid column: source");
755
+ }
756
+ return {
757
+ columns: [],
758
+ dataset: [["2024-01-01T00:00:00.000Z", "docked", null]],
759
+ count: 1,
760
+ timestamp: 0,
761
+ };
762
+ },
763
+ };
764
+ const provider = createHistoryProviderV2(client, SELF_CONTEXT, true, (m) => warnings.push(m));
765
+ const result = await provider.getValues({
766
+ ...RANGE,
767
+ sourcePolicy: "all",
768
+ pathSpecs: [
769
+ { path: "navigation.state", aggregate: "last", parameter: [] },
770
+ ],
771
+ });
772
+ // The request succeeds rather than failing outright...
773
+ assert.equal(result.values.length, 1);
774
+ assert.deepEqual(result.data, [["2024-01-01T00:00:00.000Z", "docked"]]);
775
+ // ...and the column withdraws its $source claim, because the rows it
776
+ // returned were never filtered by source.
777
+ assert.ok(!("$source" in result.values[0]), "unfiltered rows must not be labelled as one source's");
778
+ assert.ok(warnings.some((w) => /signalk_str has no 'source'/.test(w)), "the degradation must be reported");
779
+ });
780
+ it("gives unattributed rows their own column, ordered last", async () => {
781
+ const captured = [];
782
+ const provider = createHistoryProviderV2(makeSourceAwareClient(captured, {
783
+ signalk: [null, "gps.main"],
784
+ signalk_str: [],
785
+ }), SELF_CONTEXT, true);
786
+ const result = await provider.getValues({
787
+ ...RANGE,
788
+ sourcePolicy: "all",
789
+ pathSpecs: [SPEC],
790
+ });
791
+ assert.equal(result.values.length, 2);
792
+ assert.equal(result.values[0].$source, "gps.main");
793
+ assert.ok(!("$source" in result.values[1]), "the unattributed column carries no source claim");
794
+ // The unattributed column must select `source IS NULL`, NOT run unfiltered.
795
+ // An unfiltered query returns EVERY source's rows, so the "no source"
796
+ // column silently duplicates all the others — verified against a live
797
+ // QuestDB, where it returned 60 rows instead of its own 20.
798
+ const dataQueries = captured.filter((c) => !/DISTINCT source/.test(c.sql) && /FROM signalk\b/.test(c.sql));
799
+ assert.ok(dataQueries.some((c) => /AND source IS NULL/.test(c.sql)), "the unattributed column must filter on source IS NULL");
800
+ assert.equal(dataQueries.filter((c) => !/AND source = /.test(c.sql) && !/AND source IS NULL/.test(c.sql)).length, 0, "no expanded column may run without a source predicate");
801
+ assert.ok(!dataQueries.some((c) => /source = 'null'/.test(c.sql)), "a null source must never become the literal string 'null'");
802
+ });
803
+ it("falls back to a single column when nothing was recorded in range", async () => {
804
+ const captured = [];
805
+ const provider = createHistoryProviderV2(makeSourceAwareClient(captured, { signalk: [], signalk_str: [] }), SELF_CONTEXT, true);
806
+ const result = await provider.getValues({
807
+ ...RANGE,
808
+ sourcePolicy: "all",
809
+ pathSpecs: [SPEC],
810
+ });
811
+ assert.equal(result.values.length, 1, "the path must not vanish");
812
+ assert.ok(!("$source" in result.values[0]));
813
+ });
814
+ // A legacy table with no `source` column must not make expansion quietly
815
+ // do nothing: the request still succeeds with one merged column, but the
816
+ // operator is told why, naming the column and the table.
817
+ it("warns, rather than silently degrading, on a missing source column", async () => {
818
+ const warnings = [];
819
+ const client = {
820
+ exec: async (sql) => {
821
+ if (/DISTINCT source/.test(sql)) {
822
+ throw new Error("Invalid column: source");
823
+ }
824
+ return { columns: [], dataset: [], count: 0, timestamp: 0 };
825
+ },
826
+ };
827
+ const provider = createHistoryProviderV2(client, SELF_CONTEXT, true, (m) => warnings.push(m));
828
+ const result = await provider.getValues({
829
+ ...RANGE,
830
+ sourcePolicy: "all",
831
+ pathSpecs: [SPEC],
832
+ });
833
+ assert.equal(result.values.length, 1, "still answers, unexpanded");
834
+ assert.ok(warnings.length > 0, "the degradation must not be silent");
835
+ assert.match(warnings[0], /source/);
836
+ assert.match(warnings[0], /signalk/, "the warning names the table");
837
+ });
838
+ // A timeout or 5xx is NOT "no sources". Reporting it as an empty result
839
+ // would hand back a plausible single column built on a failure nobody saw.
840
+ it("propagates a real query failure instead of reporting no sources", async () => {
841
+ const client = {
842
+ exec: async (sql) => {
843
+ if (/DISTINCT source/.test(sql)) {
844
+ throw new Error("connection reset by peer");
845
+ }
846
+ return { columns: [], dataset: [], count: 0, timestamp: 0 };
847
+ },
848
+ };
849
+ const provider = createHistoryProviderV2(client, SELF_CONTEXT, true);
850
+ await assert.rejects(() => provider.getValues({
851
+ ...RANGE,
852
+ sourcePolicy: "all",
853
+ pathSpecs: [SPEC],
854
+ }), /connection reset/);
855
+ });
856
+ // A table that does not exist yet (no string values recorded) is normal,
857
+ // not a schema fault, and must not produce a warning.
858
+ it("stays quiet when a value table simply does not exist", async () => {
859
+ const warnings = [];
860
+ const client = {
861
+ exec: async (sql) => {
862
+ if (/DISTINCT source FROM signalk_str/.test(sql)) {
863
+ throw new Error("table does not exist [table=signalk_str]");
864
+ }
865
+ if (/DISTINCT source/.test(sql)) {
866
+ return {
867
+ columns: [],
868
+ dataset: [["gps.main"]],
869
+ count: 1,
870
+ timestamp: 0,
871
+ };
872
+ }
873
+ return { columns: [], dataset: [], count: 0, timestamp: 0 };
874
+ },
875
+ };
876
+ const provider = createHistoryProviderV2(client, SELF_CONTEXT, true, (m) => warnings.push(m));
877
+ const result = await provider.getValues({
878
+ ...RANGE,
879
+ sourcePolicy: "all",
880
+ pathSpecs: [SPEC],
881
+ });
882
+ assert.equal(result.values[0].$source, "gps.main");
883
+ assert.equal(warnings.length, 0, "an absent table is not a fault");
884
+ });
885
+ // A STORED sourceRef need not satisfy the identifier guard — "tcp://gw:2000"
886
+ // is an ordinary Signal K source containing characters the guard rejects.
887
+ // Letting it reach the query builder throws and takes the WHOLE request
888
+ // down, so expansion would break a query that works today.
889
+ it("skips a source whose name cannot be used as a filter", async () => {
890
+ const warnings = [];
891
+ const captured = [];
892
+ const provider = createHistoryProviderV2(makeSourceAwareClient(captured, {
893
+ signalk: ["gps.main", "tcp://gw:2000"],
894
+ signalk_str: [],
895
+ }), SELF_CONTEXT, true, (m) => warnings.push(m));
896
+ const result = await provider.getValues({
897
+ ...RANGE,
898
+ sourcePolicy: "all",
899
+ pathSpecs: [SPEC],
900
+ });
901
+ assert.deepEqual(result.values.map((v) => v.$source), ["gps.main"], "the usable source still expands");
902
+ assert.ok(warnings.some((w) => w.includes("tcp://gw:2000")), "the skipped source must be reported");
903
+ });
904
+ it("keeps the path as one column when every source is unusable", async () => {
905
+ const captured = [];
906
+ const provider = createHistoryProviderV2(makeSourceAwareClient(captured, {
907
+ signalk: ["tcp://a", "tcp://b"],
908
+ signalk_str: [],
909
+ }), SELF_CONTEXT, true);
910
+ const result = await provider.getValues({
911
+ ...RANGE,
912
+ sourcePolicy: "all",
913
+ pathSpecs: [SPEC],
914
+ });
915
+ assert.equal(result.values.length, 1, "the path must not vanish");
916
+ assert.ok(!("$source" in result.values[0]));
917
+ });
918
+ // The bucket cap only bites when a resolution was named. An unresolved
919
+ // request runs one raw query per source with nothing else bounding it.
920
+ it("caps how many columns one path may expand into", async () => {
921
+ const warnings = [];
922
+ const captured = [];
923
+ const many = Array.from({ length: 40 }, (_, i) => `src${String(i).padStart(2, "0")}`);
924
+ const provider = createHistoryProviderV2(makeSourceAwareClient(captured, { signalk: many, signalk_str: [] }), SELF_CONTEXT, true, (m) => warnings.push(m));
925
+ const result = await provider.getValues({
926
+ ...RANGE,
927
+ sourcePolicy: "all",
928
+ pathSpecs: [SPEC],
929
+ });
930
+ assert.equal(result.values.length, 16, `got ${result.values.length}`);
931
+ assert.ok(warnings.some((w) => /40 sources/.test(w)), "truncation must be reported, not silent");
932
+ // Deterministic: the FIRST 16 sorted, not an arbitrary 16.
933
+ assert.equal(result.values[0].$source, "src00");
934
+ assert.equal(result.values[15].$source, "src15");
935
+ });
936
+ it("survives a database where no value table exists yet", async () => {
937
+ const captured = [];
938
+ // No table answers DISTINCT: the mock throws for both.
939
+ const provider = createHistoryProviderV2(makeSourceAwareClient(captured, {}), SELF_CONTEXT, true);
940
+ const result = await provider.getValues({
941
+ ...RANGE,
942
+ sourcePolicy: "all",
943
+ pathSpecs: [SPEC],
944
+ });
945
+ assert.equal(result.values.length, 1);
946
+ assert.ok(!("$source" in result.values[0]));
947
+ });
948
+ it("consults the string table so boolean paths expand too", async () => {
949
+ const captured = [];
950
+ const provider = createHistoryProviderV2(makeSourceAwareClient(captured, {
951
+ signalk: [],
952
+ signalk_str: ["switch.a"],
953
+ }), SELF_CONTEXT, true);
954
+ const result = await provider.getValues({
955
+ ...RANGE,
956
+ sourcePolicy: "all",
957
+ pathSpecs: [
958
+ {
959
+ path: "electrical.switches.nav.state",
960
+ aggregate: "last",
961
+ parameter: [],
962
+ },
963
+ ],
964
+ });
965
+ assert.equal(result.values[0].$source, "switch.a");
966
+ });
967
+ it("counts EXPANDED columns against the sample-bucket cap", async () => {
968
+ // Four sources over a range that is just under the cap for ONE column.
969
+ // Counting requested paths instead of columns would run at 4x the ceiling.
970
+ const captured = [];
971
+ const provider = createHistoryProviderV2(makeSourceAwareClient(captured, {
972
+ signalk: ["a", "b", "c", "d"],
973
+ signalk_str: [],
974
+ }), SELF_CONTEXT, true);
975
+ await assert.rejects(() => provider.getValues({
976
+ from: { toString: () => "2024-01-01T00:00:00Z" },
977
+ // 400_000s at 1s = 400k buckets per series; 4 sources fall back too,
978
+ // so 8 queries x 400k = 3.2M, past the 1M cap.
979
+ to: { toString: () => "2024-01-05T15:06:40Z" },
980
+ resolution: 1,
981
+ sourcePolicy: "all",
982
+ pathSpecs: [SPEC],
983
+ }), /sample buckets/);
984
+ });
985
+ it("position expands from its own table", async () => {
986
+ const captured = [];
987
+ const provider = createHistoryProviderV2(makeSourceAwareClient(captured, {
988
+ signalk_position: ["gps.main", "gps.aux"],
989
+ }), SELF_CONTEXT, true);
990
+ const result = await provider.getValues({
991
+ ...RANGE,
992
+ sourcePolicy: "all",
993
+ pathSpecs: [
994
+ { path: "navigation.position", aggregate: "first", parameter: [] },
995
+ ],
996
+ });
997
+ assert.deepEqual(result.values.map((v) => v.$source), ["gps.aux", "gps.main"]);
998
+ assert.ok(captured.some((c) => /DISTINCT source FROM signalk_position/.test(c.sql)), "position must be probed in its own table, not signalk");
999
+ });
1000
+ });
563
1001
  //# sourceMappingURL=history-v2.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"history-v2.test.js","sourceRoot":"","sources":["../../src/test/history-v2.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"history-v2.test.js","sourceRoot":"","sources":["../../src/test/history-v2.test.ts"],"names":[],"mappings":"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"}
@@ -47,6 +47,34 @@ describe("ILPWriter", () => {
47
47
  const all = received.join("");
48
48
  assert.ok(all.includes('signalk_str,path=navigation.state,context=self value_str="motoring"'), `Expected string ILP line in: ${all}`);
49
49
  });
50
+ // ILP is a LINE protocol. A raw newline inside a quoted value splits the
51
+ // row into two malformed lines and QuestDB silently stores NEITHER —
52
+ // verified against a live instance, which recorded 0 rows for such a write.
53
+ // Signal K string values do carry newlines (notification messages,
54
+ // free-text fields), and the failure is invisible: no error, no row.
55
+ it("encodes newlines in string values so the row stays one ILP line", async () => {
56
+ const received = [];
57
+ const server = net.createServer((socket) => {
58
+ socket.on("data", (data) => {
59
+ received.push(data.toString());
60
+ });
61
+ });
62
+ await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve));
63
+ const port = server.address().port;
64
+ const writer = new ILPWriter("127.0.0.1", port, undefined, {
65
+ flushIntervalMs: 100,
66
+ });
67
+ await writer.connect();
68
+ const ts = new Date("2024-06-15T12:00:00.000Z");
69
+ writer.writeString("notifications.msg", "self", "line1\nline2\rmore", ts);
70
+ await new Promise((resolve) => setTimeout(resolve, 300));
71
+ await writer.disconnect();
72
+ server.close();
73
+ const all = received.join("");
74
+ // Exactly one physical line reached the socket.
75
+ assert.strictEqual(all.split("\n").filter((l) => l.length > 0).length, 1, `Expected one ILP line, got: ${JSON.stringify(all)}`);
76
+ assert.ok(all.includes('value_str="line1\\nline2\\rmore"'), `Expected escaped newlines in: ${JSON.stringify(all)}`);
77
+ });
50
78
  it("tags booleans with value_kind and leaves text untagged", async () => {
51
79
  // value_kind is what keeps a recorded boolean distinguishable from a
52
80
  // path whose text value is literally "true". Text must stay untagged so