@camstack/system 1.2.483 → 1.2.485

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 (87) hide show
  1. package/dist/{agent-https-CHZpVx3I.js → agent-https-DBP7P-ee.js} +1 -1
  2. package/dist/{agent-https-NP141VCW.mjs → agent-https-_EXvi6F8.mjs} +1 -1
  3. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  4. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  5. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  6. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  7. package/dist/builtins/alerts/alerts.addon.js +1 -1
  8. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  9. package/dist/builtins/autotrack/index.js +1 -1
  10. package/dist/builtins/autotrack/index.mjs +1 -1
  11. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +2 -2
  12. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +2 -2
  13. package/dist/builtins/calendars/calendars.addon.js +1 -1
  14. package/dist/builtins/calendars/calendars.addon.mjs +1 -1
  15. package/dist/builtins/camera-grid/index.js +1 -1
  16. package/dist/builtins/camera-grid/index.mjs +1 -1
  17. package/dist/builtins/composer/composer.addon.js +13 -5
  18. package/dist/builtins/composer/composer.addon.mjs +13 -5
  19. package/dist/builtins/console-logging/index.js +1 -1
  20. package/dist/builtins/console-logging/index.mjs +1 -1
  21. package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
  22. package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
  23. package/dist/builtins/device-history/device-history.addon.d.ts +2 -0
  24. package/dist/builtins/device-history/device-history.addon.js +248 -4
  25. package/dist/builtins/device-history/device-history.addon.mjs +248 -4
  26. package/dist/builtins/device-history/query/history-query.d.ts +5 -1
  27. package/dist/builtins/device-history/runtime/history-runtime.d.ts +18 -1
  28. package/dist/builtins/device-history/store/history-schema.d.ts +2 -0
  29. package/dist/builtins/device-history/store/history-store.d.ts +11 -0
  30. package/dist/builtins/device-history/store/series-scale.d.ts +37 -0
  31. package/dist/builtins/device-manager/device-manager.addon.js +3 -2
  32. package/dist/builtins/device-manager/device-manager.addon.mjs +3 -2
  33. package/dist/builtins/hub-forwarder/index.js +1 -1
  34. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  35. package/dist/builtins/keychain/index.js +3 -3
  36. package/dist/builtins/keychain/index.mjs +3 -3
  37. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  38. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  39. package/dist/builtins/local-auth/local-auth.addon.js +2 -2
  40. package/dist/builtins/local-auth/local-auth.addon.mjs +2 -2
  41. package/dist/builtins/local-network/local-network.addon.js +2 -2
  42. package/dist/builtins/local-network/local-network.addon.mjs +2 -2
  43. package/dist/builtins/loki-logging/index.js +1 -1
  44. package/dist/builtins/loki-logging/index.mjs +1 -1
  45. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  46. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  47. package/dist/builtins/platform-probe/index.js +1 -1
  48. package/dist/builtins/platform-probe/index.mjs +1 -1
  49. package/dist/builtins/record-entries/index.js +1 -1
  50. package/dist/builtins/record-entries/index.mjs +1 -1
  51. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  52. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  53. package/dist/builtins/snapshot/index.js +1 -1
  54. package/dist/builtins/snapshot/index.mjs +1 -1
  55. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  56. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  57. package/dist/builtins/sqlite-storage/index.js +1 -1
  58. package/dist/builtins/sqlite-storage/index.mjs +1 -1
  59. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +2 -2
  60. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +2 -2
  61. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  62. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  63. package/dist/builtins/system-config/system-config.addon.js +3 -3
  64. package/dist/builtins/system-config/system-config.addon.mjs +280 -280
  65. package/dist/builtins/winston-logging/index.js +1 -1
  66. package/dist/builtins/winston-logging/index.mjs +1 -1
  67. package/dist/{composition-sources-CQxrCexr.js → composition-sources-BSQneZV9.js} +1 -1
  68. package/dist/{composition-sources-CC13wGKL.mjs → composition-sources-BnZpIA8u.mjs} +1 -1
  69. package/dist/{constants-DMB-ex5z.mjs → constants-7D7xjw0h.mjs} +1 -1
  70. package/dist/{constants-Bt0NFXDm.js → constants-CQfTeCnB.js} +1 -1
  71. package/dist/{device-ca-HQKcvofS.mjs → device-ca-Bzd6UO_c.mjs} +1 -1
  72. package/dist/{device-ca-CSLMfr4Q.js → device-ca-D_4dI5gv.js} +1 -1
  73. package/dist/{dist-DvKEKSap.mjs → dist-Df6c0RX_.mjs} +614 -522
  74. package/dist/{dist-2gZWO597.js → dist-xCNJAQMh.js} +625 -521
  75. package/dist/file-host-worker.js +1 -1
  76. package/dist/file-host-worker.mjs +1 -1
  77. package/dist/{hub-mdns-ciao-CVf6mxIZ.mjs → hub-mdns-ciao-D7GMnEz0.mjs} +2 -2
  78. package/dist/{hub-mdns-ciao-Bs3cn9C1.js → hub-mdns-ciao-DRfmLR_Z.js} +2 -2
  79. package/dist/index.js +7 -7
  80. package/dist/index.mjs +7 -7
  81. package/dist/{restore-archive-EFYeCdrG.mjs → restore-archive-Co70oRya.mjs} +78 -78
  82. package/dist/{restore-archive-_mgadWlk.js → restore-archive-DA7N6ZZA.js} +1 -1
  83. package/dist/{retention-qugQGYuY.js → retention-DNDOPW7Z.js} +1 -1
  84. package/dist/{retention-FFJW3-3P.mjs → retention-DfCW-dZS.mjs} +1 -1
  85. package/dist/{wal-maintenance-TCW_esAc.mjs → wal-maintenance-71-j48Ci.mjs} +0 -0
  86. package/dist/{wal-maintenance-DbUC_wdC.js → wal-maintenance-CA0L6WZ9.js} +0 -0
  87. package/package.json +7 -2
@@ -1,18 +1,18 @@
1
- import { Ji as defineRecordKinds, M as DataStoreDatabaseSchema, x as DATABASE_SNAPSHOT_SUFFIX } from "./dist-DvKEKSap.mjs";
1
+ import { Ji as defineRecordKinds, M as DataStoreDatabaseSchema, x as DATABASE_SNAPSHOT_SUFFIX } from "./dist-Df6c0RX_.mjs";
2
2
  import { z } from "zod";
3
3
  import { createCipheriv, createDecipheriv, createHash, createPrivateKey, createPublicKey, diffieHellman, generateKeyPairSync, hkdfSync, randomBytes } from "node:crypto";
4
4
  import { Buffer as Buffer$1 } from "buffer";
5
5
  import * as fsp from "node:fs/promises";
6
6
  import jn from "node:fs/promises";
7
- import * as path$2 from "node:path";
7
+ import * as path$1 from "node:path";
8
8
  import path, { basename, join, posix, win32 } from "node:path";
9
- import * as fs$3 from "node:fs";
9
+ import * as fs$2 from "node:fs";
10
10
  import fs from "node:fs";
11
11
  import { EventEmitter } from "node:events";
12
12
  import As, { Transform } from "node:stream";
13
13
  import { StringDecoder } from "node:string_decoder";
14
- import fs$1 from "fs";
15
- import path$1, { dirname as dirname$1, parse } from "path";
14
+ import I from "fs";
15
+ import qs, { dirname as dirname$1, parse } from "path";
16
16
  import * as Ms from "zlib";
17
17
  import Jr from "zlib";
18
18
  import Pi from "assert";
@@ -459,7 +459,7 @@ async function readBackupEncryptionHeader(file) {
459
459
  async function decryptBackupFile(input, output, secretKey) {
460
460
  const decrypt = createBackupDecryptStream(secretKey);
461
461
  try {
462
- await pipeline(fs$3.createReadStream(input), decrypt, fs$3.createWriteStream(output, { mode: 384 }));
462
+ await pipeline(fs$2.createReadStream(input), decrypt, fs$2.createWriteStream(output, { mode: 384 }));
463
463
  } catch (err) {
464
464
  await fsp.rm(output, { force: true }).catch(() => void 0);
465
465
  throw err;
@@ -797,7 +797,7 @@ while (this[Ns](this[Ae]()) && this[b].length);
797
797
  return zr;
798
798
  }
799
799
  };
800
- var Xr = fs$1.writev, ot = Symbol("_autoClose"), H = Symbol("_close"), te = Symbol("_ended"), m = Symbol("_fd"), Ni = Symbol("_finished"), j = Symbol("_flags"), Di = Symbol("_flush"), Ci = Symbol("_handleChunk"), ki = Symbol("_makeBuf"), ie = Symbol("_mode"), Ce = Symbol("_needDrain"), Ut = Symbol("_onerror"), Ht = Symbol("_onopen"), Ai = Symbol("_onread"), Pt = Symbol("_onwrite"), ht = Symbol("_open"), U = Symbol("_path"), nt = Symbol("_pos"), Y = Symbol("_queue"), zt = Symbol("_read"), Ii = Symbol("_readSize"), J = Symbol("_reading"), ee = Symbol("_remain"), Fi = Symbol("_size"), ke = Symbol("_write"), gt = Symbol("_writing"), ve = Symbol("_defaultFlag"), bt = Symbol("_errored"), _t = class extends A {
800
+ var Xr = I.writev, ot = Symbol("_autoClose"), H = Symbol("_close"), te = Symbol("_ended"), m = Symbol("_fd"), Ni = Symbol("_finished"), j = Symbol("_flags"), Di = Symbol("_flush"), Ci = Symbol("_handleChunk"), ki = Symbol("_makeBuf"), ie = Symbol("_mode"), Ce = Symbol("_needDrain"), Ut = Symbol("_onerror"), Ht = Symbol("_onopen"), Ai = Symbol("_onread"), Pt = Symbol("_onwrite"), ht = Symbol("_open"), U = Symbol("_path"), nt = Symbol("_pos"), Y = Symbol("_queue"), zt = Symbol("_read"), Ii = Symbol("_readSize"), J = Symbol("_reading"), ee = Symbol("_remain"), Fi = Symbol("_size"), ke = Symbol("_write"), gt = Symbol("_writing"), ve = Symbol("_defaultFlag"), bt = Symbol("_errored"), _t = class extends A {
801
801
  [bt] = !1;
802
802
  [m];
803
803
  [U];
@@ -823,7 +823,7 @@ var Xr = fs$1.writev, ot = Symbol("_autoClose"), H = Symbol("_close"), te = Symb
823
823
  throw new TypeError("this is a readable stream");
824
824
  }
825
825
  [ht]() {
826
- fs$1.open(this[U], "r", (t, e) => this[Ht](t, e));
826
+ I.open(this[U], "r", (t, e) => this[Ht](t, e));
827
827
  }
828
828
  [Ht](t, e) {
829
829
  t ? this[Ut](t) : (this[m] = e, this.emit("open", e), this[zt]());
@@ -836,7 +836,7 @@ var Xr = fs$1.writev, ot = Symbol("_autoClose"), H = Symbol("_close"), te = Symb
836
836
  this[J] = !0;
837
837
  let t = this[ki]();
838
838
  if (t.length === 0) return process.nextTick(() => this[Ai](null, 0, t));
839
- fs$1.read(this[m], t, 0, t.length, null, (e, i, r) => this[Ai](e, i, r));
839
+ I.read(this[m], t, 0, t.length, null, (e, i, r) => this[Ai](e, i, r));
840
840
  }
841
841
  }
842
842
  [Ai](t, e, i) {
@@ -845,7 +845,7 @@ var Xr = fs$1.writev, ot = Symbol("_autoClose"), H = Symbol("_close"), te = Symb
845
845
  [H]() {
846
846
  if (this[ot] && typeof this[m] == "number") {
847
847
  let t = this[m];
848
- this[m] = void 0, fs$1.close(t, (e) => e ? this.emit("error", e) : this.emit("close"));
848
+ this[m] = void 0, I.close(t, (e) => e ? this.emit("error", e) : this.emit("close"));
849
849
  }
850
850
  }
851
851
  [Ut](t) {
@@ -868,7 +868,7 @@ var Xr = fs$1.writev, ot = Symbol("_autoClose"), H = Symbol("_close"), te = Symb
868
868
  [ht]() {
869
869
  let t = !0;
870
870
  try {
871
- this[Ht](null, fs$1.openSync(this[U], "r")), t = !1;
871
+ this[Ht](null, I.openSync(this[U], "r")), t = !1;
872
872
  } finally {
873
873
  t && this[H]();
874
874
  }
@@ -879,7 +879,7 @@ var Xr = fs$1.writev, ot = Symbol("_autoClose"), H = Symbol("_close"), te = Symb
879
879
  if (!this[J]) {
880
880
  this[J] = !0;
881
881
  do {
882
- let e = this[ki](), i = e.length === 0 ? 0 : fs$1.readSync(this[m], e, 0, e.length, null);
882
+ let e = this[ki](), i = e.length === 0 ? 0 : I.readSync(this[m], e, 0, e.length, null);
883
883
  if (!this[Ci](i, e)) break;
884
884
  } while (!0);
885
885
  this[J] = !1;
@@ -892,7 +892,7 @@ var Xr = fs$1.writev, ot = Symbol("_autoClose"), H = Symbol("_close"), te = Symb
892
892
  [H]() {
893
893
  if (this[ot] && typeof this[m] == "number") {
894
894
  let t = this[m];
895
- this[m] = void 0, fs$1.closeSync(t), this.emit("close");
895
+ this[m] = void 0, I.closeSync(t), this.emit("close");
896
896
  }
897
897
  }
898
898
  }, tt = class extends $r {
@@ -933,7 +933,7 @@ var Xr = fs$1.writev, ot = Symbol("_autoClose"), H = Symbol("_close"), te = Symb
933
933
  this[H](), this[gt] = !0, this.emit("error", t);
934
934
  }
935
935
  [ht]() {
936
- fs$1.open(this[U], this[j], this[ie], (t, e) => this[Ht](t, e));
936
+ I.open(this[U], this[j], this[ie], (t, e) => this[Ht](t, e));
937
937
  }
938
938
  [Ht](t, e) {
939
939
  this[ve] && this[j] === "r+" && t && t.code === "ENOENT" ? (this[j] = "w", this[ht]()) : t ? this[Ut](t) : (this[m] = e, this.emit("open", e), this[gt] || this[Di]());
@@ -945,7 +945,7 @@ var Xr = fs$1.writev, ot = Symbol("_autoClose"), H = Symbol("_close"), te = Symb
945
945
  return typeof t == "string" && (t = Buffer.from(t, e)), this[te] ? (this.emit("error", /* @__PURE__ */ new Error("write() after end()")), !1) : this[m] === void 0 || this[gt] || this[Y].length ? (this[Y].push(t), this[Ce] = !0, !1) : (this[gt] = !0, this[ke](t), !0);
946
946
  }
947
947
  [ke](t) {
948
- fs$1.write(this[m], t, 0, t.length, this[nt], (e, i) => this[Pt](e, i));
948
+ I.write(this[m], t, 0, t.length, this[nt], (e, i) => this[Pt](e, i));
949
949
  }
950
950
  [Pt](t, e) {
951
951
  t ? this[Ut](t) : (this[nt] !== void 0 && typeof e == "number" && (this[nt] += e), this[Y].length ? this[Di]() : (this[gt] = !1, this[te] && !this[Ni] ? (this[Ni] = !0, this[H](), this.emit("finish")) : this[Ce] && (this[Ce] = !1, this.emit("drain"))));
@@ -961,31 +961,31 @@ var Xr = fs$1.writev, ot = Symbol("_autoClose"), H = Symbol("_close"), te = Symb
961
961
  [H]() {
962
962
  if (this[ot] && typeof this[m] == "number") {
963
963
  let t = this[m];
964
- this[m] = void 0, fs$1.close(t, (e) => e ? this.emit("error", e) : this.emit("close"));
964
+ this[m] = void 0, I.close(t, (e) => e ? this.emit("error", e) : this.emit("close"));
965
965
  }
966
966
  }
967
967
  }, Wt = class extends tt {
968
968
  [ht]() {
969
969
  let t;
970
970
  if (this[ve] && this[j] === "r+") try {
971
- t = fs$1.openSync(this[U], this[j], this[ie]);
971
+ t = I.openSync(this[U], this[j], this[ie]);
972
972
  } catch (e) {
973
973
  if (e?.code === "ENOENT") return this[j] = "w", this[ht]();
974
974
  throw e;
975
975
  }
976
- else t = fs$1.openSync(this[U], this[j], this[ie]);
976
+ else t = I.openSync(this[U], this[j], this[ie]);
977
977
  this[Ht](null, t);
978
978
  }
979
979
  [H]() {
980
980
  if (this[ot] && typeof this[m] == "number") {
981
981
  let t = this[m];
982
- this[m] = void 0, fs$1.closeSync(t), this.emit("close");
982
+ this[m] = void 0, I.closeSync(t), this.emit("close");
983
983
  }
984
984
  }
985
985
  [ke](t) {
986
986
  let e = !0;
987
987
  try {
988
- this[Pt](null, fs$1.writeSync(this[m], t, 0, t.length, this[nt])), e = !1;
988
+ this[Pt](null, I.writeSync(this[m], t, 0, t.length, this[nt])), e = !1;
989
989
  } finally {
990
990
  if (e) try {
991
991
  this[H]();
@@ -1945,7 +1945,7 @@ var er = (s, t) => t ? (s = f(s).replace(/^\.(\/|$)/, ""), mt(t) + "/" + s) : f(
1945
1945
  let [o, a] = le(this.path);
1946
1946
  o && typeof a == "string" && (this.path = a, r = o);
1947
1947
  }
1948
- this.win32 = !!i.win32 || process.platform === "win32", this.win32 && (this.path = $s(this.path.replaceAll(/\\/g, "/")), t = t.replaceAll(/\\/g, "/")), this.absolute = f(i.absolute || path$1.resolve(this.cwd, t)), this.path === "" && (this.path = "./"), r && this.warn("TAR_ENTRY_INFO", `stripping ${r} from absolute path`, {
1948
+ this.win32 = !!i.win32 || process.platform === "win32", this.win32 && (this.path = $s(this.path.replaceAll(/\\/g, "/")), t = t.replaceAll(/\\/g, "/")), this.absolute = f(i.absolute || qs.resolve(this.cwd, t)), this.path === "" && (this.path = "./"), r && this.warn("TAR_ENTRY_INFO", `stripping ${r} from absolute path`, {
1949
1949
  entry: this,
1950
1950
  path: r + this.path
1951
1951
  });
@@ -1959,7 +1959,7 @@ var er = (s, t) => t ? (s = f(s).replace(/^\.(\/|$)/, ""), mt(t) + "/" + s) : f(
1959
1959
  return t === "error" && (this.#t = !0), super.emit(t, ...e);
1960
1960
  }
1961
1961
  [es]() {
1962
- fs$1.lstat(this.absolute, (t, e) => {
1962
+ I.lstat(this.absolute, (t, e) => {
1963
1963
  if (t) return this.emit("error", t);
1964
1964
  this[ii](e);
1965
1965
  });
@@ -2018,7 +2018,7 @@ var er = (s, t) => t ? (s = f(s).replace(/^\.(\/|$)/, ""), mt(t) + "/" + s) : f(
2018
2018
  this.path.slice(-1) !== "/" && (this.path += "/"), this.stat.size = 0, this[ce](), this.end();
2019
2019
  }
2020
2020
  [ts]() {
2021
- fs$1.readlink(this.absolute, (t, e) => {
2021
+ I.readlink(this.absolute, (t, e) => {
2022
2022
  if (t) return this.emit("error", t);
2023
2023
  this[ss](e);
2024
2024
  });
@@ -2028,7 +2028,7 @@ var er = (s, t) => t ? (s = f(s).replace(/^\.(\/|$)/, ""), mt(t) + "/" + s) : f(
2028
2028
  }
2029
2029
  [tr](t) {
2030
2030
  if (!this.stat) throw new Error("cannot create link entry without stat");
2031
- this.type = "Link", this.linkpath = f(path$1.relative(this.cwd, t)), this.stat.size = 0, this[ce](), this.end();
2031
+ this.type = "Link", this.linkpath = f(qs.relative(this.cwd, t)), this.stat.size = 0, this[ce](), this.end();
2032
2032
  }
2033
2033
  [Js]() {
2034
2034
  if (!this.stat) throw new Error("cannot create file entry without stat");
@@ -2041,7 +2041,7 @@ var er = (s, t) => t ? (s = f(s).replace(/^\.(\/|$)/, ""), mt(t) + "/" + s) : f(
2041
2041
  this[rs]();
2042
2042
  }
2043
2043
  [rs]() {
2044
- fs$1.open(this.absolute, "r", (t, e) => {
2044
+ I.open(this.absolute, "r", (t, e) => {
2045
2045
  if (t) return this.emit("error", t);
2046
2046
  this[ns](e);
2047
2047
  });
@@ -2056,13 +2056,13 @@ var er = (s, t) => t ? (s = f(s).replace(/^\.(\/|$)/, ""), mt(t) + "/" + s) : f(
2056
2056
  [ei]() {
2057
2057
  let { fd: t, buf: e, offset: i, length: r, pos: n } = this;
2058
2058
  if (t === void 0 || e === void 0) throw new Error("cannot read file without first opening");
2059
- fs$1.read(t, e, i, r, n, (o, a) => {
2059
+ I.read(t, e, i, r, n, (o, a) => {
2060
2060
  if (o) return this[pt](() => this.emit("error", o));
2061
2061
  this[is](a);
2062
2062
  });
2063
2063
  }
2064
2064
  [pt](t = () => {}) {
2065
- this.fd !== void 0 && fs$1.close(this.fd, t);
2065
+ this.fd !== void 0 && I.close(this.fd, t);
2066
2066
  }
2067
2067
  [is](t) {
2068
2068
  if (t <= 0 && this.remain > 0) {
@@ -2104,20 +2104,20 @@ var er = (s, t) => t ? (s = f(s).replace(/^\.(\/|$)/, ""), mt(t) + "/" + s) : f(
2104
2104
  }, ri = class extends fe {
2105
2105
  sync = !0;
2106
2106
  [es]() {
2107
- this[ii](fs$1.lstatSync(this.absolute));
2107
+ this[ii](I.lstatSync(this.absolute));
2108
2108
  }
2109
2109
  [ts]() {
2110
- this[ss](fs$1.readlinkSync(this.absolute));
2110
+ this[ss](I.readlinkSync(this.absolute));
2111
2111
  }
2112
2112
  [rs]() {
2113
- this[ns](fs$1.openSync(this.absolute, "r"));
2113
+ this[ns](I.openSync(this.absolute, "r"));
2114
2114
  }
2115
2115
  [ei]() {
2116
2116
  let t = !0;
2117
2117
  try {
2118
2118
  let { fd: e, buf: i, offset: r, length: n, pos: o } = this;
2119
2119
  if (e === void 0 || i === void 0) throw new Error("fd and buf must be set in READ method");
2120
- let a = fs$1.readSync(e, i, r, n, o);
2120
+ let a = I.readSync(e, i, r, n, o);
2121
2121
  this[is](a), t = !1;
2122
2122
  } finally {
2123
2123
  if (t) try {
@@ -2129,7 +2129,7 @@ var er = (s, t) => t ? (s = f(s).replace(/^\.(\/|$)/, ""), mt(t) + "/" + s) : f(
2129
2129
  t();
2130
2130
  }
2131
2131
  [pt](t = () => {}) {
2132
- this.fd !== void 0 && fs$1.closeSync(this.fd), t();
2132
+ this.fd !== void 0 && I.closeSync(this.fd), t();
2133
2133
  }
2134
2134
  }, ni = class extends A {
2135
2135
  blockLen = 0;
@@ -2397,7 +2397,7 @@ var mi = class {
2397
2397
  constructor(t, e) {
2398
2398
  this.path = t || "./", this.absolute = e;
2399
2399
  }
2400
- }, ir = Buffer.alloc(1024), ai = Symbol("onStat"), ue = Symbol("ended"), W = Symbol("queue"), me = Symbol("pendingLinks"), Et = Symbol("current"), Ct = Symbol("process"), pe = Symbol("processing"), hi = Symbol("processJob"), G = Symbol("jobs"), hs = Symbol("jobDone"), li = Symbol("addFSEntry"), sr = Symbol("addTarEntry"), cs = Symbol("stat"), fs$2 = Symbol("readdir"), ci = Symbol("onreaddir"), fi = Symbol("pipe"), rr = Symbol("entry"), as = Symbol("entryOpt"), di = Symbol("writeEntryClass"), or = Symbol("write"), ls = Symbol("ondrain"), wt = class extends A {
2400
+ }, ir = Buffer.alloc(1024), ai = Symbol("onStat"), ue = Symbol("ended"), W = Symbol("queue"), me = Symbol("pendingLinks"), Et = Symbol("current"), Ct = Symbol("process"), pe = Symbol("processing"), hi = Symbol("processJob"), G = Symbol("jobs"), hs = Symbol("jobDone"), li = Symbol("addFSEntry"), sr = Symbol("addTarEntry"), cs = Symbol("stat"), fs$1 = Symbol("readdir"), ci = Symbol("onreaddir"), fi = Symbol("pipe"), rr = Symbol("entry"), as = Symbol("entryOpt"), di = Symbol("writeEntryClass"), or = Symbol("write"), ls = Symbol("ondrain"), wt = class extends A {
2401
2401
  sync = !1;
2402
2402
  opt;
2403
2403
  cwd;
@@ -2448,7 +2448,7 @@ var mi = class {
2448
2448
  return typeof t == "string" ? this[li](t) : this[sr](t), this.flowing;
2449
2449
  }
2450
2450
  [sr](t) {
2451
- let e = f(path$1.resolve(this.cwd, t.path));
2451
+ let e = f(qs.resolve(this.cwd, t.path));
2452
2452
  if (!this.filter(t.path, t)) t.resume();
2453
2453
  else {
2454
2454
  let i = new mi(t.path, e);
@@ -2457,12 +2457,12 @@ var mi = class {
2457
2457
  this[Ct]();
2458
2458
  }
2459
2459
  [li](t) {
2460
- let e = f(path$1.resolve(this.cwd, t));
2460
+ let e = f(qs.resolve(this.cwd, t));
2461
2461
  this[W].push(new mi(t, e)), this[Ct]();
2462
2462
  }
2463
2463
  [cs](t) {
2464
2464
  t.pending = !0, this[G] += 1;
2465
- fs$1[this.follow ? "stat" : "lstat"](t.absolute, (i, r) => {
2465
+ I[this.follow ? "stat" : "lstat"](t.absolute, (i, r) => {
2466
2466
  t.pending = !1, this[G] -= 1, i ? this.emit("error", i) : this[ai](t, r);
2467
2467
  });
2468
2468
  }
@@ -2475,8 +2475,8 @@ var mi = class {
2475
2475
  }
2476
2476
  this[Ct]();
2477
2477
  }
2478
- [fs$2](t) {
2479
- t.pending = !0, this[G] += 1, fs$1.readdir(t.absolute, (e, i) => {
2478
+ [fs$1](t) {
2479
+ t.pending = !0, this[G] += 1, I.readdir(t.absolute, (e, i) => {
2480
2480
  if (t.pending = !1, this[G] -= 1, e) return this.emit("error", e);
2481
2481
  this[ci](t, i);
2482
2482
  });
@@ -2522,7 +2522,7 @@ var mi = class {
2522
2522
  if (t.stat && !t.ignore) {
2523
2523
  if (!this.noDirRecurse && t.stat.isDirectory() && !t.readdir) {
2524
2524
  let e = this.readdirCache.get(t.absolute);
2525
- if (e ? this[ci](t, e) : this[fs$2](t), !t.readdir) return;
2525
+ if (e ? this[ci](t, e) : this[fs$1](t), !t.readdir) return;
2526
2526
  }
2527
2527
  if (t.entry = this[rr](t), !t.entry) {
2528
2528
  t.ignore = !0;
@@ -2589,10 +2589,10 @@ var mi = class {
2589
2589
  resume() {}
2590
2590
  [cs](t) {
2591
2591
  let e = this.follow ? "statSync" : "lstatSync";
2592
- this[ai](t, fs$1[e](t.absolute));
2592
+ this[ai](t, I[e](t.absolute));
2593
2593
  }
2594
- [fs$2](t) {
2595
- this[ci](t, fs$1.readdirSync(t.absolute));
2594
+ [fs$1](t) {
2595
+ this[ci](t, I.readdirSync(t.absolute));
2596
2596
  }
2597
2597
  [fi](t) {
2598
2598
  let e = t.entry, i = this.zip;
@@ -2644,7 +2644,7 @@ var Wn = (s, t) => {
2644
2644
  }, Kn = K(Wn, Gn, Zn, Yn, (s, t) => {
2645
2645
  if (!t?.length) throw new TypeError("no paths specified to add to archive");
2646
2646
  });
2647
- var ur = (process.env.__FAKE_PLATFORM__ || process.platform) === "win32", { O_CREAT: mr, O_NOFOLLOW: cr, O_TRUNC: pr, O_WRONLY: Er } = fs$1.constants, wr = Number(process.env.__FAKE_FS_O_FILENAME__) || fs$1.constants.UV_FS_O_FILEMAP || 0, $n = ur && !!wr, Xn = 512 * 1024, qn = wr | pr | mr | Er, fr = !ur && typeof cr == "number" ? cr | pr | mr | Er : null, ds = fr !== null ? () => fr : $n ? (s) => s < Xn ? qn : "w" : () => "w";
2647
+ var ur = (process.env.__FAKE_PLATFORM__ || process.platform) === "win32", { O_CREAT: mr, O_NOFOLLOW: cr, O_TRUNC: pr, O_WRONLY: Er } = I.constants, wr = Number(process.env.__FAKE_FS_O_FILENAME__) || I.constants.UV_FS_O_FILEMAP || 0, $n = ur && !!wr, Xn = 512 * 1024, qn = wr | pr | mr | Er, fr = !ur && typeof cr == "number" ? cr | pr | mr | Er : null, ds = fr !== null ? () => fr : $n ? (s) => s < Xn ? qn : "w" : () => "w";
2648
2648
  var us = (s, t, e) => {
2649
2649
  try {
2650
2650
  return fs.lchownSync(s, t, e);
@@ -3630,8 +3630,8 @@ var SystemBackupService = class {
3630
3630
  return value;
3631
3631
  }
3632
3632
  async statLocation(loc) {
3633
- const abs = path$2.isAbsolute(loc) ? loc : path$2.join(this.dataDir, loc);
3634
- if (!fs$3.existsSync(abs)) return {
3633
+ const abs = path$1.isAbsolute(loc) ? loc : path$1.join(this.dataDir, loc);
3634
+ if (!fs$2.existsSync(abs)) return {
3635
3635
  name: loc,
3636
3636
  sizeBytes: 0,
3637
3637
  fileCount: 0,
@@ -3677,19 +3677,19 @@ var SystemBackupService = class {
3677
3677
  if (!selection.has("settings")) return this.createSnapshotsOnlyArchive(opts, selection, recipient);
3678
3678
  const present = [];
3679
3679
  for (const loc of requested) {
3680
- const abs = path$2.isAbsolute(loc) ? loc : path$2.join(this.dataDir, loc);
3681
- if (fs$3.existsSync(abs)) present.push(loc);
3680
+ const abs = path$1.isAbsolute(loc) ? loc : path$1.join(this.dataDir, loc);
3681
+ if (fs$2.existsSync(abs)) present.push(loc);
3682
3682
  else this.logger.debug("createArchive: skipping missing location", { meta: { location: loc } });
3683
3683
  }
3684
3684
  if (present.length === 0) throw new Error(`createArchive: no locations from {${requested.join(", ")}} exist under ${this.dataDir}`);
3685
- fs$3.mkdirSync(path$2.dirname(opts.archivePath), { recursive: true });
3685
+ fs$2.mkdirSync(path$1.dirname(opts.archivePath), { recursive: true });
3686
3686
  const walked = [];
3687
3687
  for (const loc of present) {
3688
3688
  throwIfCancelled(opts.signal);
3689
- const abs = path$2.join(this.dataDir, loc);
3689
+ const abs = path$1.join(this.dataDir, loc);
3690
3690
  const stat = await fsp.stat(abs);
3691
3691
  if (stat.isDirectory()) for (const e of await walkAbs(abs, this.dataDir, this.exclusionPredicate(), opts.signal)) walked.push(e);
3692
- else if (!isExcludedFromBackup(path$2.relative(this.dataDir, abs))) walked.push(toArchiveEntry(abs, this.dataDir, stat));
3692
+ else if (!isExcludedFromBackup(path$1.relative(this.dataDir, abs))) walked.push(toArchiveEntry(abs, this.dataDir, stat));
3693
3693
  }
3694
3694
  const walkedPaths = new Set(walked.map((e) => e.path));
3695
3695
  const ownedById = walked.some((e) => isSqlitePath(e.path)) ? await this.ownedDatabasesInScope(opts.owner, walkedPaths) : /* @__PURE__ */ new Map();
@@ -3766,7 +3766,7 @@ var SystemBackupService = class {
3766
3766
  */
3767
3767
  async createSnapshotsOnlyArchive(opts, selection, recipient) {
3768
3768
  if (opts.owner === void 0) throw new BackupSnapshotRefusedError("a snapshots-only archive needs the database owner, and none was given");
3769
- fs$3.mkdirSync(path$2.dirname(opts.archivePath), { recursive: true });
3769
+ fs$2.mkdirSync(path$1.dirname(opts.archivePath), { recursive: true });
3770
3770
  const ownedById = await this.ownedDatabasesInScope(opts.owner, null);
3771
3771
  const selected = /* @__PURE__ */ new Map();
3772
3772
  for (const [rel, databaseId] of ownedById) if (selection.has(databaseId)) selected.set(rel, databaseId);
@@ -3820,7 +3820,7 @@ var SystemBackupService = class {
3820
3820
  async writeArchive(opts) {
3821
3821
  const { present, manifest } = opts;
3822
3822
  const manifestStagePath = `${opts.archivePath}.${process.pid}.manifest.json`;
3823
- fs$3.writeFileSync(manifestStagePath, JSON.stringify(manifest, null, 2), "utf-8");
3823
+ fs$2.writeFileSync(manifestStagePath, JSON.stringify(manifest, null, 2), "utf-8");
3824
3824
  this.logger.info("createArchive: tarring", { meta: {
3825
3825
  archivePath: opts.archivePath,
3826
3826
  locations: [...present],
@@ -3828,10 +3828,10 @@ var SystemBackupService = class {
3828
3828
  totalBytes: manifest.totalBytes
3829
3829
  } });
3830
3830
  try {
3831
- const stagedInDataDir = path$2.join(this.dataDir, ARCHIVE_MANIFEST_NAME);
3832
- fs$3.copyFileSync(manifestStagePath, stagedInDataDir);
3833
- const stagingRel = path$2.relative(this.dataDir, path$2.dirname(opts.archivePath));
3834
- const excludePrefix = stagingRel && !stagingRel.startsWith("..") && !path$2.isAbsolute(stagingRel) ? stagingRel : null;
3831
+ const stagedInDataDir = path$1.join(this.dataDir, ARCHIVE_MANIFEST_NAME);
3832
+ fs$2.copyFileSync(manifestStagePath, stagedInDataDir);
3833
+ const stagingRel = path$1.relative(this.dataDir, path$1.dirname(opts.archivePath));
3834
+ const excludePrefix = stagingRel && !stagingRel.startsWith("..") && !path$1.isAbsolute(stagingRel) ? stagingRel : null;
3835
3835
  try {
3836
3836
  const pack = Kn({
3837
3837
  gzip: true,
@@ -3845,29 +3845,29 @@ var SystemBackupService = class {
3845
3845
  return norm !== excludePrefix && !norm.startsWith(`${excludePrefix}/`);
3846
3846
  }
3847
3847
  }, [ARCHIVE_MANIFEST_NAME, ...opts.tarRoots ?? present]);
3848
- const sink = fs$3.createWriteStream(opts.archivePath, { mode: 384 });
3848
+ const sink = fs$2.createWriteStream(opts.archivePath, { mode: 384 });
3849
3849
  try {
3850
3850
  const streamOpts = opts.signal ? { signal: opts.signal } : {};
3851
3851
  if (opts.encryptTo !== void 0) await pipeline(pack, createBackupEncryptStream(opts.encryptTo), byteCountingPassthrough(opts.onArchiveBytes), sink, streamOpts);
3852
3852
  else await pipeline(pack, byteCountingPassthrough(opts.onArchiveBytes), sink, streamOpts);
3853
3853
  } catch (err) {
3854
3854
  try {
3855
- fs$3.rmSync(opts.archivePath, { force: true });
3855
+ fs$2.rmSync(opts.archivePath, { force: true });
3856
3856
  } catch {}
3857
3857
  if (opts.signal?.aborted) throw new BackupCancelledError();
3858
3858
  throw err;
3859
3859
  }
3860
3860
  } finally {
3861
3861
  try {
3862
- fs$3.rmSync(stagedInDataDir, { force: true });
3862
+ fs$2.rmSync(stagedInDataDir, { force: true });
3863
3863
  } catch {}
3864
3864
  }
3865
3865
  } finally {
3866
3866
  try {
3867
- fs$3.rmSync(manifestStagePath, { force: true });
3867
+ fs$2.rmSync(manifestStagePath, { force: true });
3868
3868
  } catch {}
3869
3869
  }
3870
- const sizeBytes = fs$3.statSync(opts.archivePath).size;
3870
+ const sizeBytes = fs$2.statSync(opts.archivePath).size;
3871
3871
  return {
3872
3872
  archivePath: opts.archivePath,
3873
3873
  includedLocations: [...present],
@@ -3880,7 +3880,7 @@ var SystemBackupService = class {
3880
3880
  * one entry we care about, then aborts.
3881
3881
  */
3882
3882
  async readArchiveManifest(archivePath) {
3883
- if (!fs$3.existsSync(archivePath)) throw new Error(`readArchiveManifest: ${archivePath} does not exist`);
3883
+ if (!fs$2.existsSync(archivePath)) throw new Error(`readArchiveManifest: ${archivePath} does not exist`);
3884
3884
  return new Promise((resolve, reject) => {
3885
3885
  const chunks = [];
3886
3886
  let found = false;
@@ -3912,7 +3912,7 @@ var SystemBackupService = class {
3912
3912
  reject(err);
3913
3913
  }
3914
3914
  });
3915
- const reader = fs$3.createReadStream(archivePath);
3915
+ const reader = fs$2.createReadStream(archivePath);
3916
3916
  reader.on("error", (err) => {
3917
3917
  if (!resolved) {
3918
3918
  resolved = true;
@@ -3930,7 +3930,7 @@ var SystemBackupService = class {
3930
3930
  * restart.
3931
3931
  */
3932
3932
  scheduleRestoreMarker(opts) {
3933
- if (!fs$3.existsSync(opts.archivePath)) throw new Error(`scheduleRestoreMarker: ${opts.archivePath} missing`);
3933
+ if (!fs$2.existsSync(opts.archivePath)) throw new Error(`scheduleRestoreMarker: ${opts.archivePath} missing`);
3934
3934
  const markerPath = this.getRestoreMarkerPath();
3935
3935
  const marker = {
3936
3936
  archivePath: opts.archivePath,
@@ -3938,16 +3938,16 @@ var SystemBackupService = class {
3938
3938
  source: opts.source,
3939
3939
  ...opts.locations ? { locations: [...opts.locations] } : {}
3940
3940
  };
3941
- fs$3.mkdirSync(path$2.dirname(markerPath), { recursive: true });
3942
- fs$3.writeFileSync(markerPath, JSON.stringify(marker, null, 2), { mode: 384 });
3941
+ fs$2.mkdirSync(path$1.dirname(markerPath), { recursive: true });
3942
+ fs$2.writeFileSync(markerPath, JSON.stringify(marker, null, 2), { mode: 384 });
3943
3943
  return markerPath;
3944
3944
  }
3945
3945
  /** Read the pending-restore marker if one is present. */
3946
3946
  readPendingMarker() {
3947
3947
  const markerPath = this.getRestoreMarkerPath();
3948
- if (!fs$3.existsSync(markerPath)) return null;
3948
+ if (!fs$2.existsSync(markerPath)) return null;
3949
3949
  try {
3950
- const raw = fs$3.readFileSync(markerPath, "utf-8");
3950
+ const raw = fs$2.readFileSync(markerPath, "utf-8");
3951
3951
  const parsed = JSON.parse(raw);
3952
3952
  if (typeof parsed === "object" && parsed != null && typeof parsed.archivePath === "string") return parsed;
3953
3953
  } catch (err) {
@@ -3958,7 +3958,7 @@ var SystemBackupService = class {
3958
3958
  /** Drop the marker after a successful boot-time restore. */
3959
3959
  clearPendingMarker() {
3960
3960
  const markerPath = this.getRestoreMarkerPath();
3961
- if (fs$3.existsSync(markerPath)) fs$3.rmSync(markerPath, { force: true });
3961
+ if (fs$2.existsSync(markerPath)) fs$2.rmSync(markerPath, { force: true });
3962
3962
  }
3963
3963
  /**
3964
3964
  * The databases the owner declares, archive-relative, that this walk found,
@@ -4002,7 +4002,7 @@ var SystemBackupService = class {
4002
4002
  */
4003
4003
  async takeOwnerSnapshots(owner, selected, signal) {
4004
4004
  const removeOwnedSnapshots = async () => {
4005
- for (const db of selected.keys()) await this.removeSnapshot(path$2.join(this.dataDir, db + DATABASE_SNAPSHOT_SUFFIX));
4005
+ for (const db of selected.keys()) await this.removeSnapshot(path$1.join(this.dataDir, db + DATABASE_SNAPSHOT_SUFFIX));
4006
4006
  };
4007
4007
  const taken = [];
4008
4008
  try {
@@ -4047,7 +4047,7 @@ var SystemBackupService = class {
4047
4047
  }
4048
4048
  if (snapshotPath !== livePath + ".backup-snapshot") throw new BackupSnapshotRefusedError(`snapshot ${snapshotPath} does not sit beside the database ${livePath} it copies`);
4049
4049
  if (livePath !== expectedLive || result.databaseId !== databaseId) throw new BackupSnapshotRefusedError(`snapshot copies ${livePath} (${result.databaseId}), but ${databaseId} (${expectedLive}) was asked for`);
4050
- const absPath = path$2.join(this.dataDir, snapshotPath);
4050
+ const absPath = path$1.join(this.dataDir, snapshotPath);
4051
4051
  const stat = await fsp.stat(absPath);
4052
4052
  this.logger.info("createArchive: carrying the owner snapshot in place of the live database", { meta: {
4053
4053
  database: livePath,
@@ -4080,12 +4080,12 @@ var SystemBackupService = class {
4080
4080
  }
4081
4081
  /** `abs` relative to the data root, or null when it lies outside it. */
4082
4082
  archiveRelative(abs) {
4083
- const rel = path$2.relative(path$2.resolve(this.dataDir), path$2.resolve(abs));
4084
- if (rel.length === 0 || rel.startsWith("..") || path$2.isAbsolute(rel)) return null;
4083
+ const rel = path$1.relative(path$1.resolve(this.dataDir), path$1.resolve(abs));
4084
+ if (rel.length === 0 || rel.startsWith("..") || path$1.isAbsolute(rel)) return null;
4085
4085
  return normalizeArchivePath(rel);
4086
4086
  }
4087
4087
  getRestoreMarkerPath() {
4088
- return path$2.join(this.dataDir, ".pending-restore.json");
4088
+ return path$1.join(this.dataDir, ".pending-restore.json");
4089
4089
  }
4090
4090
  /**
4091
4091
  * Absolute-path form of {@link isExcludedFromBackup}, anchored on
@@ -4093,7 +4093,7 @@ var SystemBackupService = class {
4093
4093
  * stats so both agree with the tar filter about what a backup contains.
4094
4094
  */
4095
4095
  exclusionPredicate() {
4096
- return (abs) => isExcludedFromBackup(path$2.relative(this.dataDir, abs));
4096
+ return (abs) => isExcludedFromBackup(path$1.relative(this.dataDir, abs));
4097
4097
  }
4098
4098
  };
4099
4099
  /**
@@ -4124,7 +4124,7 @@ async function walkRec(abs, dataDir, out, shouldSkip, signal) {
4124
4124
  } catch {
4125
4125
  return;
4126
4126
  }
4127
- for (const child of children) await walkRec(path$2.join(abs, child), dataDir, out, shouldSkip, signal);
4127
+ for (const child of children) await walkRec(path$1.join(abs, child), dataDir, out, shouldSkip, signal);
4128
4128
  }
4129
4129
  }
4130
4130
  /**
@@ -4141,10 +4141,10 @@ function byteCountingPassthrough(onBytes) {
4141
4141
  } });
4142
4142
  }
4143
4143
  function toArchiveEntry(abs, dataDir, stat) {
4144
- const rel = path$2.relative(dataDir, abs).replace(/\\/g, "/");
4144
+ const rel = path$1.relative(dataDir, abs).replace(/\\/g, "/");
4145
4145
  const kind = stat.isDirectory() ? "dir" : stat.isSymbolicLink() ? "symlink" : "file";
4146
4146
  return {
4147
- path: rel || path$2.basename(abs),
4147
+ path: rel || path$1.basename(abs),
4148
4148
  kind,
4149
4149
  sizeBytes: kind === "file" ? stat.size : 0,
4150
4150
  mtime: stat.mtimeMs
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-Cek0wNdY.js");
2
- const require_dist = require("./dist-2gZWO597.js");
2
+ const require_dist = require("./dist-xCNJAQMh.js");
3
3
  let zod = require("zod");
4
4
  let node_crypto = require("node:crypto");
5
5
  let buffer = require("buffer");
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-2gZWO597.js");
1
+ const require_dist = require("./dist-xCNJAQMh.js");
2
2
  //#region src/builtins/device-history/store/series-registry.ts
3
3
  function subjectIdOf(subject) {
4
4
  return subject.kind === "device" ? `d:${subject.deviceId}` : `n:${subject.nodeId}`;
@@ -1,4 +1,4 @@
1
- import { $i as historyItemFieldPath, di as HISTORY_DEFAULT_MIN_INTERVAL_MS, ei as DeviceType } from "./dist-DvKEKSap.mjs";
1
+ import { $i as historyItemFieldPath, di as HISTORY_DEFAULT_MIN_INTERVAL_MS, ei as DeviceType } from "./dist-Df6c0RX_.mjs";
2
2
  //#region src/builtins/device-history/store/series-registry.ts
3
3
  function subjectIdOf(subject) {
4
4
  return subject.kind === "device" ? `d:${subject.deviceId}` : `n:${subject.nodeId}`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/system",
3
- "version": "1.2.483",
3
+ "version": "1.2.485",
4
4
  "description": "Core addon for CamStack — builtins, pipeline, process management, auth, logging, events",
5
5
  "keywords": [
6
6
  "camstack",
@@ -12,7 +12,12 @@
12
12
  "license": "MIT",
13
13
  "repository": {
14
14
  "type": "git",
15
- "url": "https://github.com/camstack/server"
15
+ "url": "https://github.com/camstack/server.git",
16
+ "directory": "packages/system"
17
+ },
18
+ "homepage": "https://camstack-docs.zentik.app",
19
+ "bugs": {
20
+ "url": "https://github.com/camstack/server/issues"
16
21
  },
17
22
  "main": "./dist/index.js",
18
23
  "module": "./dist/index.mjs",