@crimsonsunset/jsg-logger 1.8.6 → 1.8.8

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 (79) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/config/config-manager.js +4 -2
  3. package/devtools/dist/panel-entry.js +408 -147
  4. package/devtools/dist/panel-entry.js.map +1 -1
  5. package/formatters/server-formatter.js +2 -1
  6. package/index.js +74 -54
  7. package/package.json +8 -2
  8. package/utils/devtools-loader.js +43 -0
  9. package/utils/redaction.js +12 -0
  10. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
  11. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
  12. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
  13. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
  14. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
  15. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
  16. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
  17. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
  18. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
  19. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
  20. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
  21. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
  22. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
  23. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
  24. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
  25. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
  26. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
  27. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
  28. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
  29. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
  30. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
  31. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
  32. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
  33. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
  34. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
  35. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
  36. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
  37. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
  38. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
  39. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
  40. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
  41. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
  42. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW.js +0 -5
  43. package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
  44. package/devtools/dist/panel-entry-Ahej53sX-y0jCvGoU-BGR5GUGQ-B-CAdAd3-DipRT8xT-CSMwqnO2-CHbiC4Qe-BRrWXqYD-CNcJekPg.js +0 -13932
  45. package/devtools/dist/panel-entry-Ahej53sX-y0jCvGoU-BGR5GUGQ-B-CAdAd3-DipRT8xT-CSMwqnO2-CHbiC4Qe-BRrWXqYD-CNcJekPg.js.map +0 -1
  46. package/devtools/dist/panel-entry-B0ZWdsQY-DQdquw3J-TpkzsLdj-BGvdXuoS-CzTJvBQl-CAQNpg2W-Bo2gswMb-CAJV5DP5-DZe7oWlk-tDqwNUld.js +0 -13923
  47. package/devtools/dist/panel-entry-B0ZWdsQY-DQdquw3J-TpkzsLdj-BGvdXuoS-CzTJvBQl-CAQNpg2W-Bo2gswMb-CAJV5DP5-DZe7oWlk-tDqwNUld.js.map +0 -1
  48. package/devtools/dist/panel-entry-B2MhZ3gp.js +0 -13975
  49. package/devtools/dist/panel-entry-B2MhZ3gp.js.map +0 -1
  50. package/devtools/dist/panel-entry-BZ56bT66-BMyD75mc-BxfcB-io-DLFBg4X2-By57n0cz-DG9FfyPU-tsDeIORn-Brgs9eZh-C1aTwqVx-Bga5v200-D2uIBkta-DFygDOuM-CiZQ0ZWs-CK-Qy7JF-3_LfnrLj-C80pq-Ox-BAydVBl9.js +0 -13602
  51. package/devtools/dist/panel-entry-BZ56bT66-BMyD75mc-BxfcB-io-DLFBg4X2-By57n0cz-DG9FfyPU-tsDeIORn-Brgs9eZh-C1aTwqVx-Bga5v200-D2uIBkta-DFygDOuM-CiZQ0ZWs-CK-Qy7JF-3_LfnrLj-C80pq-Ox-BAydVBl9.js.map +0 -1
  52. package/devtools/dist/panel-entry-BaBkkSt6-B3YoMX06.js +0 -13963
  53. package/devtools/dist/panel-entry-BaBkkSt6-B3YoMX06.js.map +0 -1
  54. package/devtools/dist/panel-entry-CIG0rw0G-C23A9sjU-CbDuened.js +0 -13957
  55. package/devtools/dist/panel-entry-CIG0rw0G-C23A9sjU-CbDuened.js.map +0 -1
  56. package/devtools/dist/panel-entry-CLDrp2P4-BhE5Qmzo-DsrDp_aW-D77vFWhc-D0p-3Vck-juqy3fYf-Dla5eR-o-CER385zO-3kQqst6Z-mEXeTQxs-XDwY_WUW-CcUUttdq-BGVY77mY.js +0 -13914
  57. package/devtools/dist/panel-entry-CLDrp2P4-BhE5Qmzo-DsrDp_aW-D77vFWhc-D0p-3Vck-juqy3fYf-Dla5eR-o-CER385zO-3kQqst6Z-mEXeTQxs-XDwY_WUW-CcUUttdq-BGVY77mY.js.map +0 -1
  58. package/devtools/dist/panel-entry-Car1txqz-Cujk5tL9-pWwzfz1C-C_CMO2R5-BtcT6buV-DEh6fx7S-BLtwgJNF-CUuTgFqX.js +0 -13935
  59. package/devtools/dist/panel-entry-Car1txqz-Cujk5tL9-pWwzfz1C-C_CMO2R5-BtcT6buV-DEh6fx7S-BLtwgJNF-CUuTgFqX.js.map +0 -1
  60. package/devtools/dist/panel-entry-CdHyTMuR-wqllnGMv-CJFeg7x9-C7mRB5fj-DOgQaLRi-yYTqC4-t-DKUNOg6F-BtruRO_z-BDQrJIZQ-ByHq-LMj-Drlk5OTb-BAoinR4q-CD8VtN79-Cidg8klg-CA9PGoiF.js +0 -13728
  61. package/devtools/dist/panel-entry-CdHyTMuR-wqllnGMv-CJFeg7x9-C7mRB5fj-DOgQaLRi-yYTqC4-t-DKUNOg6F-BtruRO_z-BDQrJIZQ-ByHq-LMj-Drlk5OTb-BAoinR4q-CD8VtN79-Cidg8klg-CA9PGoiF.js.map +0 -1
  62. package/devtools/dist/panel-entry-D53S3yYJ-DlRCzJ0q-BnWPSxII-B57eqdYD-CRpb7P7m-CSgQ8r4U-DqjeAoTP.js +0 -13935
  63. package/devtools/dist/panel-entry-D53S3yYJ-DlRCzJ0q-BnWPSxII-B57eqdYD-CRpb7P7m-CSgQ8r4U-DqjeAoTP.js.map +0 -1
  64. package/devtools/dist/panel-entry-D6EQIVsV-51lrmGiZ-D4qVD_00-DVb1ySI7-C_RfHhv5-D78tUI3_.js +0 -13945
  65. package/devtools/dist/panel-entry-D6EQIVsV-51lrmGiZ-D4qVD_00-DVb1ySI7-C_RfHhv5-D78tUI3_.js.map +0 -1
  66. package/devtools/dist/panel-entry-Da9n85v7-C6Gam2oq-DDT89MNj-D9ZqvcEM-Dx--LZLa-BJiXK46m-DGuagWzT-B6evq62k-Cj2QcsAJ-BnxooYWW-D4oxy7MQ-g1-2DT91-DESRmxtW-BFO1EmVx-MWoTuzW5-Cg1SKwet.js +0 -13631
  67. package/devtools/dist/panel-entry-Da9n85v7-C6Gam2oq-DDT89MNj-D9ZqvcEM-Dx--LZLa-BJiXK46m-DGuagWzT-B6evq62k-Cj2QcsAJ-BnxooYWW-D4oxy7MQ-g1-2DT91-DESRmxtW-BFO1EmVx-MWoTuzW5-Cg1SKwet.js.map +0 -1
  68. package/devtools/dist/panel-entry-DeLbn5Tk-P7ZtOAd3-DXeez3fy-BFxPfyZi-9L9N-1f8-DzO_hXuM-CWXuuiJk-CI3ufk2T-CP3JflFQ-CLoczwy1-D7ukr7PE-DbMhopxi-BHxIMhDL-CDnadrxB.js +0 -13999
  69. package/devtools/dist/panel-entry-DeLbn5Tk-P7ZtOAd3-DXeez3fy-BFxPfyZi-9L9N-1f8-DzO_hXuM-CWXuuiJk-CI3ufk2T-CP3JflFQ-CLoczwy1-D7ukr7PE-DbMhopxi-BHxIMhDL-CDnadrxB.js.map +0 -1
  70. package/devtools/dist/panel-entry-Dh3i-JKj-D7NSYIQS-C_qI61WQ-BfJ0BW16-Df40_Q6R.js +0 -13951
  71. package/devtools/dist/panel-entry-Dh3i-JKj-D7NSYIQS-C_qI61WQ-BfJ0BW16-Df40_Q6R.js.map +0 -1
  72. package/devtools/dist/panel-entry-DlWAx2yA-vZadFV4d-DTvClgVl-zRu1NJo4-rPRjTg0e-dbBSWeq3-jx9KYEq_-B3sEcSWI-DeCc9Glr-02P4pIqr-CrzX1Fsr-C1C-Fcde.js +0 -13921
  73. package/devtools/dist/panel-entry-DlWAx2yA-vZadFV4d-DTvClgVl-zRu1NJo4-rPRjTg0e-dbBSWeq3-jx9KYEq_-B3sEcSWI-DeCc9Glr-02P4pIqr-CrzX1Fsr-C1C-Fcde.js.map +0 -1
  74. package/devtools/dist/panel-entry-DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s-.js +0 -11418
  75. package/devtools/dist/panel-entry-DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s--DzGsV7s-.js.map +0 -1
  76. package/devtools/dist/panel-entry-F_czAD5m-haMWJ-NK-CsYx2f8v-CczoKRsz-CIS8-qZe-F0ks_Y8t-CZBpt1gj-QmZJhT5N-460P-RpL-CKLofb-z-DEXl2ipp.js +0 -13921
  77. package/devtools/dist/panel-entry-F_czAD5m-haMWJ-NK-CsYx2f8v-CczoKRsz-CIS8-qZe-F0ks_Y8t-CZBpt1gj-QmZJhT5N-460P-RpL-CKLofb-z-DEXl2ipp.js.map +0 -1
  78. package/devtools/dist/panel-entry-L66PnOAy-CSPip1Cq-DIdgAB36-D56Z9rwz.js +0 -13957
  79. package/devtools/dist/panel-entry-L66PnOAy-CSPip1Cq-DIdgAB36-D56Z9rwz.js.map +0 -1
@@ -1,7 +1,6 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- var _a;
5
4
  var n, l$1, u$2, i$1, r$2, o$1, e$2, f$2, c$1, s$1, a$1, h$1, p$1 = {}, v$1 = [], y$1 = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i, w$3 = Array.isArray;
6
5
  function d$1(n2, l2) {
7
6
  for (var u2 in l2) n2[u2] = l2[u2];
@@ -4422,8 +4421,8 @@ const prop_types_1 = __importDefault$2(propTypesExports);
4422
4421
  const enhancers_1$1 = enhancers;
4423
4422
  const enhance_props_1 = __importDefault$2(enhanceProps$1);
4424
4423
  const safeHref_1 = safeHref;
4425
- const Box$1 = react_1.default.forwardRef((_a2, ref) => {
4426
- var { is, children, allowUnsafeHref } = _a2, props = __rest(_a2, ["is", "children", "allowUnsafeHref"]);
4424
+ const Box$1 = react_1.default.forwardRef((_a, ref) => {
4425
+ var { is, children, allowUnsafeHref } = _a, props = __rest(_a, ["is", "children", "allowUnsafeHref"]);
4427
4426
  const { className, enhancedProps: parsedProps } = (0, enhance_props_1.default)(props);
4428
4427
  parsedProps.className = className;
4429
4428
  if (ref) {
@@ -8866,10 +8865,10 @@ getPrefix$1.default = void 0;
8866
8865
  getPrefix$1.getPrefix = getPrefix;
8867
8866
  const prefixes = ["Moz", "Webkit", "O", "ms"];
8868
8867
  function getPrefix() {
8869
- var _a2, _b;
8868
+ var _a, _b;
8870
8869
  let prop = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "transform";
8871
8870
  if (typeof window === "undefined") return "";
8872
- const style = (_b = (_a2 = window.document) == null ? void 0 : _a2.documentElement) == null ? void 0 : _b.style;
8871
+ const style = (_b = (_a = window.document) == null ? void 0 : _a.documentElement) == null ? void 0 : _b.style;
8873
8872
  if (!style) return "";
8874
8873
  if (prop in style) return "";
8875
8874
  for (let i2 = 0; i2 < prefixes.length; i2++) {
@@ -9442,8 +9441,8 @@ let DraggableCore$1 = class DraggableCore extends React.Component {
9442
9441
  // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find
9443
9442
  // the underlying DOM node ourselves. See the README for more information.
9444
9443
  findDOMNode() {
9445
- var _a2, _b, _c;
9446
- return ((_a2 = this.props) == null ? void 0 : _a2.nodeRef) ? (_c = (_b = this.props) == null ? void 0 : _b.nodeRef) == null ? void 0 : _c.current : _reactDom.default.findDOMNode(this);
9444
+ var _a, _b, _c;
9445
+ return ((_a = this.props) == null ? void 0 : _a.nodeRef) ? (_c = (_b = this.props) == null ? void 0 : _b.nodeRef) == null ? void 0 : _c.current : _reactDom.default.findDOMNode(this);
9447
9446
  }
9448
9447
  render() {
9449
9448
  return /* @__PURE__ */ React.cloneElement(React.Children.only(this.props.children), {
@@ -9797,8 +9796,8 @@ _defineProperty(DraggableCore$1, "defaultProps", {
9797
9796
  // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find
9798
9797
  // the underlying DOM node ourselves. See the README for more information.
9799
9798
  findDOMNode() {
9800
- var _a2, _b;
9801
- return ((_b = (_a2 = this.props) == null ? void 0 : _a2.nodeRef) == null ? void 0 : _b.current) ?? _reactDom2.default.findDOMNode(this);
9799
+ var _a, _b;
9800
+ return ((_b = (_a = this.props) == null ? void 0 : _a.nodeRef) == null ? void 0 : _b.current) ?? _reactDom2.default.findDOMNode(this);
9802
9801
  }
9803
9802
  render() {
9804
9803
  const {
@@ -10225,8 +10224,8 @@ function ComponentFilters({ components: components2, loggerControls, onLevelChan
10225
10224
  y(() => {
10226
10225
  const levels2 = {};
10227
10226
  components2.forEach((name2) => {
10228
- var _a2;
10229
- const level = ((_a2 = loggerControls.getLevel) == null ? void 0 : _a2.call(loggerControls, name2)) || "info";
10227
+ var _a;
10228
+ const level = ((_a = loggerControls.getLevel) == null ? void 0 : _a.call(loggerControls, name2)) || "info";
10230
10229
  levels2[name2] = levelNameToValue[level] ?? 3;
10231
10230
  });
10232
10231
  setComponentLevels(levels2);
@@ -10362,7 +10361,7 @@ function ComponentFilters({ components: components2, loggerControls, onLevelChan
10362
10361
  );
10363
10362
  }) });
10364
10363
  }
10365
- var browser = { exports: {} };
10364
+ var browser$1 = { exports: {} };
10366
10365
  function tryStringify(o2) {
10367
10366
  try {
10368
10367
  return JSON.stringify(o2);
@@ -10473,7 +10472,7 @@ function format$2(f2, args, opts) {
10473
10472
  return str;
10474
10473
  }
10475
10474
  const format$1 = quickFormatUnescaped;
10476
- browser.exports = pino;
10475
+ browser$1.exports = pino;
10477
10476
  const _console = pfGlobalThisOrFallback().console || {};
10478
10477
  const stdSerializers = {
10479
10478
  mapHttpRequest: mock,
@@ -10897,9 +10896,9 @@ function pfGlobalThisOrFallback() {
10897
10896
  return defd(self) || defd(window) || defd(this) || {};
10898
10897
  }
10899
10898
  }
10900
- browser.exports.default = pino;
10901
- browser.exports.pino = pino;
10902
- var browserExports = browser.exports;
10899
+ browser$1.exports.default = pino;
10900
+ browser$1.exports.pino = pino;
10901
+ var browserExports = browser$1.exports;
10903
10902
  const pino$1 = /* @__PURE__ */ getDefaultExportFromCjs(browserExports);
10904
10903
  const projectName = "JSG Logger";
10905
10904
  const globalLevel = "info";
@@ -10920,6 +10919,17 @@ const display = {
10920
10919
  jsonPayload: true,
10921
10920
  stackTrace: true
10922
10921
  };
10922
+ const redact = {
10923
+ paths: [
10924
+ "password",
10925
+ "token",
10926
+ "*key",
10927
+ "*secret",
10928
+ "*apiKey",
10929
+ "*api_key"
10930
+ ],
10931
+ censor: "[REDACTED]"
10932
+ };
10923
10933
  const levels = {
10924
10934
  "10": {
10925
10935
  name: "TRACE",
@@ -10971,6 +10981,7 @@ const defaultConfig = {
10971
10981
  format,
10972
10982
  timestampMode,
10973
10983
  display,
10984
+ redact,
10974
10985
  levels,
10975
10986
  components,
10976
10987
  fileOverrides,
@@ -11001,9 +11012,9 @@ const LEVEL_SCHEME = {
11001
11012
  60: { emoji: "💀", color: "#D63031", name: "FATAL" }
11002
11013
  };
11003
11014
  const metaLog = (message, ...args) => {
11004
- var _a2;
11015
+ var _a;
11005
11016
  try {
11006
- const metaLoggingConfig = (_a2 = configManager == null ? void 0 : configManager.config) == null ? void 0 : _a2.metaLogging;
11017
+ const metaLoggingConfig = (_a = configManager == null ? void 0 : configManager.config) == null ? void 0 : _a.metaLogging;
11007
11018
  if (metaLoggingConfig === void 0 || metaLoggingConfig === true) {
11008
11019
  console.log(message, ...args);
11009
11020
  return;
@@ -11015,10 +11026,25 @@ const metaLog = (message, ...args) => {
11015
11026
  console.log(message, ...args);
11016
11027
  }
11017
11028
  };
11029
+ const metaWarn = (message, ...args) => {
11030
+ var _a;
11031
+ try {
11032
+ const metaLoggingConfig = (_a = configManager == null ? void 0 : configManager.config) == null ? void 0 : _a.metaLogging;
11033
+ if (metaLoggingConfig === void 0 || metaLoggingConfig === true) {
11034
+ console.warn(message, ...args);
11035
+ return;
11036
+ }
11037
+ if (metaLoggingConfig === false) {
11038
+ return;
11039
+ }
11040
+ } catch (error) {
11041
+ console.warn(message, ...args);
11042
+ }
11043
+ };
11018
11044
  const metaError$1 = (message, ...args) => {
11019
- var _a2;
11045
+ var _a;
11020
11046
  try {
11021
- const metaLoggingConfig = (_a2 = configManager == null ? void 0 : configManager.config) == null ? void 0 : _a2.metaLogging;
11047
+ const metaLoggingConfig = (_a = configManager == null ? void 0 : configManager.config) == null ? void 0 : _a.metaLogging;
11022
11048
  if (metaLoggingConfig === void 0 || metaLoggingConfig === true) {
11023
11049
  console.error(message, ...args);
11024
11050
  return;
@@ -11042,7 +11068,7 @@ class ConfigManager {
11042
11068
  * @returns {Promise<Object>} Merged configuration
11043
11069
  */
11044
11070
  async loadConfig(configSource) {
11045
- var _a2, _b, _c;
11071
+ var _a, _b, _c;
11046
11072
  try {
11047
11073
  let externalConfig = {};
11048
11074
  if (typeof configSource === "string") {
@@ -11053,7 +11079,7 @@ class ConfigManager {
11053
11079
  externalConfig = configSource;
11054
11080
  }
11055
11081
  const normalizedConfig = this._normalizeConfigStructure(externalConfig);
11056
- const devtoolsBefore = ((_a2 = this.config.devtools) == null ? void 0 : _a2.enabled) ?? false;
11082
+ const devtoolsBefore = ((_a = this.config.devtools) == null ? void 0 : _a.enabled) ?? false;
11057
11083
  const devtoolsAfter = ((_b = normalizedConfig.devtools) == null ? void 0 : _b.enabled) ?? devtoolsBefore;
11058
11084
  this.config = this.mergeConfigs(this.config, normalizedConfig);
11059
11085
  const finalDevtoolsEnabled = ((_c = this.config.devtools) == null ? void 0 : _c.enabled) ?? false;
@@ -11144,6 +11170,7 @@ class ConfigManager {
11144
11170
  }
11145
11171
  try {
11146
11172
  const module = await import(
11173
+ /* webpackIgnore: true */
11147
11174
  /* @vite-ignore */
11148
11175
  path
11149
11176
  );
@@ -11167,6 +11194,7 @@ class ConfigManager {
11167
11194
  async _loadConfigBrowserImport(path) {
11168
11195
  try {
11169
11196
  const module = await import(
11197
+ /* webpackIgnore: true */
11170
11198
  /* @vite-ignore */
11171
11199
  path
11172
11200
  );
@@ -11193,6 +11221,9 @@ class ConfigManager {
11193
11221
  if (config.components) {
11194
11222
  normalized.components = this._normalizeComponents(config.components);
11195
11223
  }
11224
+ if (config.transports) {
11225
+ normalized.transports = config.transports;
11226
+ }
11196
11227
  return normalized;
11197
11228
  }
11198
11229
  /**
@@ -11313,6 +11344,8 @@ class ConfigManager {
11313
11344
  if (override.hasOwnProperty(key)) {
11314
11345
  if (key === "components" && typeof override[key] === "object") {
11315
11346
  merged[key] = override[key];
11347
+ } else if (key === "transports") {
11348
+ merged[key] = override[key];
11316
11349
  } else if (typeof override[key] === "object" && !Array.isArray(override[key])) {
11317
11350
  merged[key] = this.mergeConfigs(merged[key] || {}, override[key]);
11318
11351
  } else {
@@ -11380,8 +11413,8 @@ class ConfigManager {
11380
11413
  * @returns {Object} Component configuration
11381
11414
  */
11382
11415
  getComponentConfig(componentName, filePath = null) {
11383
- var _a2;
11384
- let baseComponent = (_a2 = this.config.components) == null ? void 0 : _a2[componentName];
11416
+ var _a;
11417
+ let baseComponent = (_a = this.config.components) == null ? void 0 : _a[componentName];
11385
11418
  if (!baseComponent) {
11386
11419
  baseComponent = COMPONENT_SCHEME[componentName];
11387
11420
  }
@@ -11461,6 +11494,28 @@ class ConfigManager {
11461
11494
  }
11462
11495
  return baseDisplay;
11463
11496
  }
11497
+ /**
11498
+ * Get redact configuration with file override support
11499
+ * @param {string} filePath - Optional file path for override checking
11500
+ * @returns {Object} Redact configuration with paths array and censor string
11501
+ */
11502
+ getRedactConfig(filePath = null) {
11503
+ const baseRedact = this.config.redact || {
11504
+ paths: [],
11505
+ censor: "[REDACTED]"
11506
+ };
11507
+ const checkFile = filePath || this.currentFile;
11508
+ if (checkFile) {
11509
+ const fileOverride = this.getFileOverride(checkFile);
11510
+ if (fileOverride && fileOverride.redact) {
11511
+ return {
11512
+ ...baseRedact,
11513
+ ...fileOverride.redact
11514
+ };
11515
+ }
11516
+ }
11517
+ return baseRedact;
11518
+ }
11464
11519
  /**
11465
11520
  * Get project name
11466
11521
  * @returns {string} Project name
@@ -11591,10 +11646,10 @@ const isBrowser = () => {
11591
11646
  return typeof window !== "undefined" && typeof document !== "undefined";
11592
11647
  };
11593
11648
  const isCLI = () => {
11594
- var _a2, _b;
11649
+ var _a, _b;
11595
11650
  if (forcedEnvironment) return forcedEnvironment === "cli";
11596
11651
  if (typeof process === "undefined") return false;
11597
- const hasTTY = ((_a2 = process.stdout) == null ? void 0 : _a2.isTTY) || ((_b = process.stderr) == null ? void 0 : _b.isTTY);
11652
+ const hasTTY = ((_a = process.stdout) == null ? void 0 : _a.isTTY) || ((_b = process.stderr) == null ? void 0 : _b.isTTY);
11598
11653
  const hasTermEnv = process.env.TERM || process.env.COLORTERM;
11599
11654
  const notCI = !process.env.CI && !process.env.GITHUB_ACTIONS;
11600
11655
  return hasTTY || hasTermEnv && notCI;
@@ -11605,6 +11660,39 @@ const getEnvironment = () => {
11605
11660
  if (isCLI()) return "cli";
11606
11661
  return "server";
11607
11662
  };
11663
+ function toPinoRedactPaths(paths) {
11664
+ const exact = paths.filter((path) => !path.includes("*"));
11665
+ return exact.length > 0 ? exact : ["password", "token"];
11666
+ }
11667
+ function shouldRedactKey(key, paths) {
11668
+ return paths.some((pattern) => {
11669
+ if (pattern.startsWith("*")) {
11670
+ const suffix = pattern.slice(1).toLowerCase();
11671
+ return key.toLowerCase().endsWith(suffix);
11672
+ }
11673
+ return key.toLowerCase() === pattern.toLowerCase();
11674
+ });
11675
+ }
11676
+ function redactValue(value, redactConfig) {
11677
+ if (!redactConfig || !redactConfig.paths || redactConfig.paths.length === 0) {
11678
+ return value;
11679
+ }
11680
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) {
11681
+ const redacted = {};
11682
+ for (const [key, val] of Object.entries(value)) {
11683
+ if (shouldRedactKey(key, redactConfig.paths)) {
11684
+ redacted[key] = redactConfig.censor || "[REDACTED]";
11685
+ } else {
11686
+ redacted[key] = redactValue(val, redactConfig);
11687
+ }
11688
+ }
11689
+ return redacted;
11690
+ }
11691
+ if (Array.isArray(value)) {
11692
+ return value.map((item) => redactValue(item, redactConfig));
11693
+ }
11694
+ return value;
11695
+ }
11608
11696
  const createBrowserFormatter = (componentName, logStore = null) => {
11609
11697
  return {
11610
11698
  write: (data2) => {
@@ -11617,6 +11705,7 @@ const createBrowserFormatter = (componentName, logStore = null) => {
11617
11705
  const component = configManager.getComponentConfig(componentName, filePath);
11618
11706
  const level = configManager.getLevelConfig(logData.level);
11619
11707
  const displayConfig = configManager.getDisplayConfig(filePath);
11708
+ const redactConfig = configManager.getRedactConfig(filePath);
11620
11709
  const effectiveLevel = configManager.getEffectiveLevel(componentName, filePath);
11621
11710
  if (!shouldDisplay(logData.level, effectiveLevel)) {
11622
11711
  return;
@@ -11655,7 +11744,8 @@ const createBrowserFormatter = (componentName, logStore = null) => {
11655
11744
  if (displayConfig.jsonPayload) {
11656
11745
  const contextData = extractContextData(logData);
11657
11746
  if (Object.keys(contextData).length > 0) {
11658
- displayContextData(contextData);
11747
+ const redactedData = redactValue(contextData, redactConfig);
11748
+ displayContextData(redactedData);
11659
11749
  }
11660
11750
  }
11661
11751
  if (displayConfig.stackTrace && logData.err && logData.err.stack) {
@@ -11783,10 +11873,12 @@ const createCLIFormatter = () => {
11783
11873
  const internalFields = ["level", "time", "msg", "pid", "hostname", "name", "v", "environment"];
11784
11874
  const contextKeys = Object.keys(log2).filter((key) => !internalFields.includes(key));
11785
11875
  if (contextKeys.length > 0) {
11876
+ const redactConfig = configManager.getRedactConfig();
11877
+ const redactedLog = redactValue(log2, redactConfig);
11786
11878
  contextKeys.forEach((key, index) => {
11787
11879
  const isLast = index === contextKeys.length - 1;
11788
11880
  const prefix2 = isLast ? " └─" : " ├─";
11789
- const value = formatValue(log2[key]);
11881
+ const value = formatValue(redactedLog[key]);
11790
11882
  console.log(`${prefix2} ${key}: ${value}`);
11791
11883
  });
11792
11884
  }
@@ -11800,6 +11892,7 @@ const createServerFormatter = () => {
11800
11892
  return null;
11801
11893
  };
11802
11894
  const getServerConfig = () => {
11895
+ const redactConfig = configManager.getRedactConfig();
11803
11896
  return {
11804
11897
  level: "info",
11805
11898
  // More conservative logging in production
@@ -11815,10 +11908,10 @@ const getServerConfig = () => {
11815
11908
  };
11816
11909
  }
11817
11910
  },
11818
- // Redact sensitive information in production
11911
+ // Redact sensitive information in production (configurable)
11819
11912
  redact: {
11820
- paths: ["password", "token", "key", "secret"],
11821
- censor: "[REDACTED]"
11913
+ paths: toPinoRedactPaths(redactConfig.paths),
11914
+ censor: redactConfig.censor || "[REDACTED]"
11822
11915
  }
11823
11916
  };
11824
11917
  };
@@ -11944,12 +12037,57 @@ class LogStore {
11944
12037
  return levelMap[level] || "unknown";
11945
12038
  }
11946
12039
  }
12040
+ const LEVEL_NUMS = {
12041
+ trace: 10,
12042
+ debug: 20,
12043
+ info: 30,
12044
+ warn: 40,
12045
+ error: 50,
12046
+ fatal: 60
12047
+ };
12048
+ function extractError(data2) {
12049
+ if (data2 instanceof Error) return data2;
12050
+ if (data2 && typeof data2 === "object") {
12051
+ if (data2.err instanceof Error) return data2.err;
12052
+ if (data2.error instanceof Error) return data2.error;
12053
+ }
12054
+ return void 0;
12055
+ }
12056
+ function buildLogEntry(level, levelNum, component, message, data2) {
12057
+ return {
12058
+ level,
12059
+ levelNum,
12060
+ message: message ?? "",
12061
+ component,
12062
+ data: data2,
12063
+ timestamp: Date.now(),
12064
+ isError: levelNum >= 50,
12065
+ error: extractError(data2)
12066
+ };
12067
+ }
12068
+ function dispatchToTransports(entry, transports) {
12069
+ if (!transports || transports.length === 0) return;
12070
+ const entryLevelNum = entry.levelNum;
12071
+ for (const transport of transports) {
12072
+ try {
12073
+ const minLevel = transport.level ? LEVEL_NUMS[transport.level] ?? 0 : 0;
12074
+ if (entryLevelNum < minLevel) continue;
12075
+ transport.send(entry);
12076
+ } catch (err) {
12077
+ metaError$1("[JSG-LOGGER] Transport dispatch error:", err);
12078
+ }
12079
+ }
12080
+ }
11947
12081
  const name = "@crimsonsunset/jsg-logger";
11948
- const version = "1.7.13";
12082
+ const version = "1.8.8";
11949
12083
  const type = "module";
11950
12084
  const description = "Multi-environment logger with smart detection, file-level overrides, and beautiful console formatting. Test it live: https://logger.joesangiorgio.com/";
11951
12085
  const main = "index.js";
11952
12086
  const types = "./index.d.ts";
12087
+ const browser = {
12088
+ fs: false,
12089
+ "fs/promises": false
12090
+ };
11953
12091
  const keywords = [
11954
12092
  "logging",
11955
12093
  "pino",
@@ -12035,12 +12173,14 @@ const scripts = {
12035
12173
  dev: "vite",
12036
12174
  "dev:devtools": "cd devtools && npm run dev",
12037
12175
  "test:devtools": "vite",
12038
- "build:devtools": "cd devtools && npm run build",
12176
+ "build:devtools": "cd devtools && npm ci && npm run build",
12177
+ prepublishOnly: "npm run build:devtools",
12039
12178
  "build:devtools:netlify": "npm install && cd devtools && npm install && npm run build:netlify",
12040
12179
  "preview:devtools": "cd devtools && npm run preview",
12041
12180
  "release:patch": "node scripts/release.js patch",
12042
12181
  "release:minor": "node scripts/release.js minor",
12043
12182
  "release:major": "node scripts/release.js major",
12183
+ "publish:ci": "node scripts/publish.js",
12044
12184
  "publish:public": "npm publish --access public",
12045
12185
  "publish:github": "npm publish --registry=https://npm.pkg.github.com/ --access public",
12046
12186
  check: "npm run test && echo 'Package ready for publishing'"
@@ -12052,6 +12192,7 @@ const packageJson = {
12052
12192
  description,
12053
12193
  main,
12054
12194
  types,
12195
+ browser,
12055
12196
  keywords,
12056
12197
  author,
12057
12198
  license,
@@ -12066,22 +12207,6 @@ const packageJson = {
12066
12207
  exports,
12067
12208
  scripts
12068
12209
  };
12069
- const defaultDevtoolsEnabled = ((_a = defaultConfig.devtools) == null ? void 0 : _a.enabled) ?? false;
12070
- let devtoolsModule = null;
12071
- let devtoolsModulePromise = null;
12072
- if (defaultDevtoolsEnabled) {
12073
- metaLog("[JSG-LOGGER] DevTools module pre-loading started (default config enabled)");
12074
- devtoolsModulePromise = import("./panel-entry-B2MhZ3gp.js").then((module) => {
12075
- devtoolsModule = module;
12076
- metaLog("[JSG-LOGGER] DevTools module pre-loaded successfully");
12077
- return module;
12078
- }).catch((error) => {
12079
- metaError$1("[JSG-LOGGER] DevTools module pre-load failed:", error);
12080
- return null;
12081
- });
12082
- } else {
12083
- metaLog("[JSG-LOGGER] DevTools module NOT pre-loaded (default config disabled - will tree-shake)");
12084
- }
12085
12210
  const _JSGLogger = class _JSGLogger {
12086
12211
  // Lock to prevent concurrent initializations
12087
12212
  constructor() {
@@ -12091,6 +12216,7 @@ const _JSGLogger = class _JSGLogger {
12091
12216
  this.initialized = false;
12092
12217
  this.components = {};
12093
12218
  this.componentSubscribers = [];
12219
+ this.transports = [];
12094
12220
  }
12095
12221
  /**
12096
12222
  * Get singleton instance with auto-initialization
@@ -12098,20 +12224,26 @@ const _JSGLogger = class _JSGLogger {
12098
12224
  * @returns {Promise<Object>} Enhanced logger exports with controls API
12099
12225
  */
12100
12226
  static async getInstance(options = {}) {
12101
- var _a2, _b;
12227
+ var _a, _b;
12102
12228
  const hasOptions = options && Object.keys(options).length > 0;
12103
12229
  if (!_JSGLogger._instance) {
12104
12230
  _JSGLogger._instance = new _JSGLogger();
12105
12231
  _JSGLogger._enhancedLoggers = await _JSGLogger._instance.init(options);
12106
- if (isBrowser() && typeof window !== "undefined" && ((_a2 = _JSGLogger._enhancedLoggers) == null ? void 0 : _a2.controls)) {
12232
+ if (isBrowser() && typeof window !== "undefined" && ((_a = _JSGLogger._enhancedLoggers) == null ? void 0 : _a.controls)) {
12107
12233
  window.JSG_Logger = _JSGLogger._enhancedLoggers.controls;
12108
12234
  window.__JSG_Logger_Enhanced__ = _JSGLogger._enhancedLoggers;
12109
12235
  }
12110
12236
  } else if (hasOptions) {
12111
- _JSGLogger._enhancedLoggers = await _JSGLogger._instance.init(options);
12112
- if (isBrowser() && typeof window !== "undefined" && ((_b = _JSGLogger._enhancedLoggers) == null ? void 0 : _b.controls)) {
12113
- window.JSG_Logger = _JSGLogger._enhancedLoggers.controls;
12114
- window.__JSG_Logger_Enhanced__ = _JSGLogger._enhancedLoggers;
12237
+ if (_JSGLogger._instance.initialized) {
12238
+ console.warn(
12239
+ "[JSGLogger] getInstance() called with options on an already-initialized instance — options were ignored to preserve registered transports. Use configure() to update settings post-init."
12240
+ );
12241
+ } else {
12242
+ _JSGLogger._enhancedLoggers = await _JSGLogger._instance.init(options);
12243
+ if (isBrowser() && typeof window !== "undefined" && ((_b = _JSGLogger._enhancedLoggers) == null ? void 0 : _b.controls)) {
12244
+ window.JSG_Logger = _JSGLogger._enhancedLoggers.controls;
12245
+ window.__JSG_Logger_Enhanced__ = _JSGLogger._enhancedLoggers;
12246
+ }
12115
12247
  }
12116
12248
  }
12117
12249
  return _JSGLogger._enhancedLoggers;
@@ -12123,22 +12255,32 @@ const _JSGLogger = class _JSGLogger {
12123
12255
  * @returns {Object} Enhanced logger exports with controls API
12124
12256
  */
12125
12257
  static getInstanceSync(options = {}) {
12126
- var _a2, _b;
12258
+ var _a, _b, _c;
12127
12259
  const hasOptions = options && Object.keys(options).length > 0;
12128
12260
  if (hasOptions) {
12261
+ if ((_a = _JSGLogger._instance) == null ? void 0 : _a.initialized) {
12262
+ console.warn(
12263
+ "[JSGLogger] getInstanceSync() called with options on an already-initialized instance — options were ignored to preserve registered transports. Use configure() to update settings post-init."
12264
+ );
12265
+ return _JSGLogger._enhancedLoggers;
12266
+ }
12129
12267
  if (!_JSGLogger._instance) {
12130
12268
  _JSGLogger._instance = new _JSGLogger();
12131
12269
  }
12132
12270
  _JSGLogger._enhancedLoggers = _JSGLogger._instance.initSync(options);
12133
- if (isBrowser() && typeof window !== "undefined" && ((_a2 = _JSGLogger._enhancedLoggers) == null ? void 0 : _a2.controls)) {
12271
+ if (isBrowser() && typeof window !== "undefined" && ((_b = _JSGLogger._enhancedLoggers) == null ? void 0 : _b.controls)) {
12134
12272
  window.JSG_Logger = _JSGLogger._enhancedLoggers.controls;
12135
12273
  window.__JSG_Logger_Enhanced__ = _JSGLogger._enhancedLoggers;
12136
12274
  }
12275
+ if (!isBrowser()) {
12276
+ globalThis.__JSG_Logger_Enhanced__ = _JSGLogger._enhancedLoggers;
12277
+ }
12137
12278
  return _JSGLogger._enhancedLoggers;
12138
12279
  }
12139
12280
  if (isBrowser() && typeof window !== "undefined" && window.JSG_Logger) {
12140
12281
  if (window.__JSG_Logger_Enhanced__) {
12141
- return window.__JSG_Logger_Enhanced__;
12282
+ _JSGLogger._recoverFromGlobal();
12283
+ return _JSGLogger._enhancedLoggers;
12142
12284
  }
12143
12285
  const globalControls = window.JSG_Logger;
12144
12286
  return {
@@ -12151,13 +12293,20 @@ const _JSGLogger = class _JSGLogger {
12151
12293
  JSGLogger: _JSGLogger
12152
12294
  };
12153
12295
  }
12296
+ if (!isBrowser() && globalThis.__JSG_Logger_Enhanced__) {
12297
+ _JSGLogger._recoverFromGlobal();
12298
+ return _JSGLogger._enhancedLoggers;
12299
+ }
12154
12300
  if (!_JSGLogger._instance) {
12155
12301
  _JSGLogger._instance = new _JSGLogger();
12156
12302
  _JSGLogger._enhancedLoggers = _JSGLogger._instance.initSync(options);
12157
- if (isBrowser() && typeof window !== "undefined" && ((_b = _JSGLogger._enhancedLoggers) == null ? void 0 : _b.controls)) {
12303
+ if (isBrowser() && typeof window !== "undefined" && ((_c = _JSGLogger._enhancedLoggers) == null ? void 0 : _c.controls)) {
12158
12304
  window.JSG_Logger = _JSGLogger._enhancedLoggers.controls;
12159
12305
  window.__JSG_Logger_Enhanced__ = _JSGLogger._enhancedLoggers;
12160
12306
  }
12307
+ if (!isBrowser()) {
12308
+ globalThis.__JSG_Logger_Enhanced__ = _JSGLogger._enhancedLoggers;
12309
+ }
12161
12310
  }
12162
12311
  return _JSGLogger._enhancedLoggers;
12163
12312
  }
@@ -12167,7 +12316,7 @@ const _JSGLogger = class _JSGLogger {
12167
12316
  * @returns {Promise<Object>} Logger instance with all components
12168
12317
  */
12169
12318
  async init(options = {}) {
12170
- var _a2;
12319
+ var _a;
12171
12320
  try {
12172
12321
  const isReinit = this.initialized;
12173
12322
  const globalInitFlag = typeof window !== "undefined" ? window.__JSG_LOGGER_INITIALIZED__ = window.__JSG_LOGGER_INITIALIZED__ || false : false;
@@ -12182,6 +12331,7 @@ const _JSGLogger = class _JSGLogger {
12182
12331
  forceEnvironment(configManager.config.forceEnvironment);
12183
12332
  }
12184
12333
  this.environment = getEnvironment();
12334
+ this.transports = configManager.config.transports ?? [];
12185
12335
  const components2 = configManager.getAvailableComponents();
12186
12336
  components2.forEach((componentName) => {
12187
12337
  this.loggers[componentName] = this.createLogger(componentName);
@@ -12206,7 +12356,7 @@ const _JSGLogger = class _JSGLogger {
12206
12356
  }
12207
12357
  return this.getLoggerExports();
12208
12358
  } catch (error) {
12209
- if ((_a2 = this.loggers) == null ? void 0 : _a2.core) {
12359
+ if ((_a = this.loggers) == null ? void 0 : _a.core) {
12210
12360
  this.loggers.core.error("JSG Logger initialization failed:", error);
12211
12361
  } else {
12212
12362
  console.error("JSG Logger initialization failed:", error);
@@ -12220,7 +12370,7 @@ const _JSGLogger = class _JSGLogger {
12220
12370
  * @returns {Object} Logger instance with all components
12221
12371
  */
12222
12372
  initSync(options = {}) {
12223
- var _a2;
12373
+ var _a;
12224
12374
  try {
12225
12375
  const isReinit = this.initialized;
12226
12376
  const globalInitFlag = typeof window !== "undefined" ? window.__JSG_LOGGER_INITIALIZED__ = window.__JSG_LOGGER_INITIALIZED__ || false : false;
@@ -12242,12 +12392,10 @@ const _JSGLogger = class _JSGLogger {
12242
12392
  forceEnvironment(configManager.config.forceEnvironment);
12243
12393
  }
12244
12394
  this.environment = getEnvironment();
12395
+ this.transports = configManager.config.transports ?? [];
12245
12396
  this.loggers = {};
12246
12397
  this.components = {};
12247
12398
  const components2 = configManager.getAvailableComponents();
12248
- if (components2.length > 0) {
12249
- console.log(`[JSG-LOGGER] Creating ${components2.length} loggers during initSync:`, components2);
12250
- }
12251
12399
  components2.forEach((componentName) => {
12252
12400
  const createFn = this._createLoggerOriginal || this.createLogger.bind(this);
12253
12401
  this.loggers[componentName] = createFn(componentName);
@@ -12260,7 +12408,7 @@ const _JSGLogger = class _JSGLogger {
12260
12408
  try {
12261
12409
  callback(currentComponents);
12262
12410
  } catch (error) {
12263
- console.error("Component subscriber error:", error);
12411
+ metaError$1("Component subscriber error:", error);
12264
12412
  }
12265
12413
  });
12266
12414
  }
@@ -12285,7 +12433,7 @@ const _JSGLogger = class _JSGLogger {
12285
12433
  }
12286
12434
  return this.getLoggerExports();
12287
12435
  } catch (error) {
12288
- if ((_a2 = this.loggers) == null ? void 0 : _a2.core) {
12436
+ if ((_a = this.loggers) == null ? void 0 : _a.core) {
12289
12437
  this.loggers.core.error("JSG Logger sync initialization failed:", error);
12290
12438
  } else {
12291
12439
  console.error("JSG Logger sync initialization failed:", error);
@@ -12330,21 +12478,33 @@ const _JSGLogger = class _JSGLogger {
12330
12478
  */
12331
12479
  _wrapPinoLogger(pinoLogger) {
12332
12480
  const levels2 = ["trace", "debug", "info", "warn", "error", "fatal"];
12481
+ const levelNums = { trace: 10, debug: 20, info: 30, warn: 40, error: 50, fatal: 60 };
12333
12482
  const wrapped = {};
12483
+ const self2 = this;
12334
12484
  levels2.forEach((level) => {
12335
12485
  wrapped[level] = (first, ...args) => {
12486
+ let message = "";
12487
+ let data2;
12488
+ const redactConfig = configManager.getRedactConfig();
12336
12489
  if (typeof first === "string") {
12337
- const message = first;
12490
+ message = first;
12338
12491
  if (args.length === 1 && typeof args[0] === "object" && args[0] !== null) {
12339
- pinoLogger[level](args[0], message);
12492
+ data2 = redactValue(args[0], redactConfig);
12493
+ pinoLogger[level](data2, message);
12340
12494
  } else {
12341
12495
  pinoLogger[level](message);
12342
12496
  }
12343
12497
  } else if (typeof first === "object" && first !== null) {
12344
- pinoLogger[level](first, ...args);
12498
+ data2 = redactValue(first, redactConfig);
12499
+ message = args.length > 0 && typeof args[0] === "string" ? args[0] : "";
12500
+ pinoLogger[level](data2, ...message ? [message] : []);
12345
12501
  } else {
12346
12502
  pinoLogger[level](first, ...args);
12347
12503
  }
12504
+ if (self2.transports && self2.transports.length > 0) {
12505
+ const entry = buildLogEntry(level, levelNums[level], pinoLogger._componentName, message, data2);
12506
+ dispatchToTransports(entry, self2.transports);
12507
+ }
12348
12508
  };
12349
12509
  });
12350
12510
  Object.keys(pinoLogger).forEach((key) => {
@@ -12386,6 +12546,8 @@ const _JSGLogger = class _JSGLogger {
12386
12546
  */
12387
12547
  getLoggerExports() {
12388
12548
  return {
12549
+ // Back-reference for cross-bundle singleton recovery
12550
+ _jsgLoggerInstance: this,
12389
12551
  // All component loggers
12390
12552
  ...this.loggers,
12391
12553
  // Auto-discovery convenience getters (kebab-case and camelCase)
@@ -12407,6 +12569,8 @@ const _JSGLogger = class _JSGLogger {
12407
12569
  },
12408
12570
  // Expose config manager for runtime configuration
12409
12571
  configManager,
12572
+ // Post-init config updater — safe to call after transports are registered
12573
+ configure: (partialConfig) => _JSGLogger.configure(partialConfig),
12410
12574
  // Log store for popup/debugging
12411
12575
  logStore: this.logStore,
12412
12576
  // Enhanced runtime controls with all new features
@@ -12419,18 +12583,19 @@ const _JSGLogger = class _JSGLogger {
12419
12583
  }
12420
12584
  },
12421
12585
  getLevel: (component) => {
12422
- var _a2;
12423
- return (_a2 = this.loggers[component]) == null ? void 0 : _a2._effectiveLevel;
12586
+ var _a;
12587
+ return (_a = this.loggers[component]) == null ? void 0 : _a._effectiveLevel;
12424
12588
  },
12425
12589
  // Component controls
12426
12590
  listComponents: () => Object.keys(this.loggers),
12427
12591
  subscribeToComponents: (callback) => {
12592
+ var _a;
12428
12593
  this.componentSubscribers.push(callback);
12429
12594
  const currentComponents = Object.keys(this.loggers);
12430
12595
  try {
12431
12596
  callback(currentComponents);
12432
12597
  } catch (error) {
12433
- console.error("Component subscriber error (initial call):", error);
12598
+ (_a = this.loggers.core) == null ? void 0 : _a.error("Component subscriber error (initial call):", error);
12434
12599
  }
12435
12600
  return () => {
12436
12601
  const index = this.componentSubscribers.indexOf(callback);
@@ -12507,16 +12672,16 @@ const _JSGLogger = class _JSGLogger {
12507
12672
  this.refreshLoggers();
12508
12673
  },
12509
12674
  getComponentLevel: (component) => {
12510
- var _a2, _b;
12511
- return (_b = (_a2 = configManager.config.components) == null ? void 0 : _a2[component]) == null ? void 0 : _b.level;
12675
+ var _a, _b;
12676
+ return (_b = (_a = configManager.config.components) == null ? void 0 : _a[component]) == null ? void 0 : _b.level;
12512
12677
  },
12513
12678
  // Component logger access
12514
12679
  getComponent: (componentName) => this.getComponent(componentName),
12515
12680
  // DevTools panel controls
12516
12681
  enableDevPanel: async () => {
12517
- var _a2;
12682
+ var _a;
12518
12683
  const devtoolsLogger = this.getComponent("devtools-ui");
12519
- const runtimeDevtoolsEnabled = ((_a2 = configManager.config.devtools) == null ? void 0 : _a2.enabled) ?? false;
12684
+ const runtimeDevtoolsEnabled = ((_a = configManager.config.devtools) == null ? void 0 : _a.enabled) ?? false;
12520
12685
  devtoolsLogger.info("enableDevPanel() called", {
12521
12686
  runtimeConfig: runtimeDevtoolsEnabled ? "ENABLED" : "DISABLED"
12522
12687
  });
@@ -12529,18 +12694,13 @@ const _JSGLogger = class _JSGLogger {
12529
12694
  return null;
12530
12695
  }
12531
12696
  try {
12697
+ const { loadDevtoolsModule } = await import("../../utils/devtools-loader.js");
12698
+ const devtoolsModule = await loadDevtoolsModule();
12532
12699
  if (!devtoolsModule) {
12533
- if (devtoolsModulePromise) {
12534
- devtoolsLogger.info("Waiting for pre-loaded DevTools module...");
12535
- devtoolsModule = await devtoolsModulePromise;
12536
- } else {
12537
- devtoolsLogger.info("Loading DevTools module dynamically (runtime config override)...");
12538
- devtoolsModule = await import("./panel-entry-B2MhZ3gp.js");
12539
- }
12540
- } else {
12541
- devtoolsLogger.info("Using pre-loaded DevTools module");
12700
+ devtoolsLogger.warn("DevTools panel is not available in this build");
12701
+ return null;
12542
12702
  }
12543
- if (!devtoolsModule || !devtoolsModule.initializePanel) {
12703
+ if (!devtoolsModule.initializePanel) {
12544
12704
  throw new Error("DevTools panel module missing initializePanel export");
12545
12705
  }
12546
12706
  devtoolsLogger.info("Initializing DevTools panel...");
@@ -12554,9 +12714,9 @@ const _JSGLogger = class _JSGLogger {
12554
12714
  }
12555
12715
  },
12556
12716
  disableDevPanel: () => {
12557
- var _a2;
12717
+ var _a;
12558
12718
  const devtoolsLogger = this.getComponent("devtools-ui");
12559
- if (typeof window !== "undefined" && ((_a2 = window.JSG_DevTools) == null ? void 0 : _a2.destroy)) {
12719
+ if (typeof window !== "undefined" && ((_a = window.JSG_DevTools) == null ? void 0 : _a.destroy)) {
12560
12720
  window.JSG_DevTools.destroy();
12561
12721
  devtoolsLogger.info("DevTools panel disabled and destroyed");
12562
12722
  return true;
@@ -12585,6 +12745,7 @@ const _JSGLogger = class _JSGLogger {
12585
12745
  const formatter = createBrowserFormatter(componentName, this.logStore);
12586
12746
  const levels2 = ["trace", "debug", "info", "warn", "error", "fatal"];
12587
12747
  const levelMap = { trace: 10, debug: 20, info: 30, warn: 40, error: 50, fatal: 60 };
12748
+ const self2 = this;
12588
12749
  const logger = {};
12589
12750
  levels2.forEach((level) => {
12590
12751
  logger[level] = (first, ...args) => {
@@ -12598,20 +12759,31 @@ const _JSGLogger = class _JSGLogger {
12598
12759
  name: componentName,
12599
12760
  v: 1
12600
12761
  };
12762
+ let message = "";
12763
+ let data2;
12764
+ const redactConfig = configManager.getRedactConfig();
12601
12765
  if (typeof first === "string") {
12766
+ message = first;
12602
12767
  logData.msg = first;
12603
12768
  if (args.length === 1 && typeof args[0] === "object") {
12604
- Object.assign(logData, args[0]);
12769
+ data2 = redactValue(args[0], redactConfig);
12770
+ Object.assign(logData, data2);
12605
12771
  } else if (args.length > 0) {
12606
12772
  logData.args = args;
12607
12773
  }
12608
12774
  } else if (typeof first === "object") {
12609
- Object.assign(logData, first);
12775
+ data2 = redactValue(first, redactConfig);
12776
+ Object.assign(logData, data2);
12610
12777
  if (args.length > 0 && typeof args[0] === "string") {
12778
+ message = args[0];
12611
12779
  logData.msg = args[0];
12612
12780
  }
12613
12781
  }
12614
12782
  formatter.write(JSON.stringify(logData));
12783
+ if (self2.transports && self2.transports.length > 0) {
12784
+ const entry = buildLogEntry(level, logLevel, componentName, message, data2);
12785
+ dispatchToTransports(entry, self2.transports);
12786
+ }
12615
12787
  };
12616
12788
  });
12617
12789
  logger._componentEmoji = configManager.getComponentConfig(componentName).emoji;
@@ -12621,12 +12793,19 @@ const _JSGLogger = class _JSGLogger {
12621
12793
  return logger;
12622
12794
  }
12623
12795
  /**
12624
- * Refresh all loggers with updated configuration
12796
+ * Refresh all loggers with updated configuration.
12797
+ * Uses the original createLogger (not the caching wrapper) so levels and
12798
+ * formatters are rebuilt from the current config.
12625
12799
  * @private
12626
12800
  */
12627
12801
  refreshLoggers() {
12628
- Object.keys(this.loggers).forEach((componentName) => {
12629
- this.loggers[componentName] = this.createLogger(componentName);
12802
+ const createLogger = this._createLoggerOriginal || this.createLogger.bind(this);
12803
+ const components2 = /* @__PURE__ */ new Set([
12804
+ ...configManager.getAvailableComponents(),
12805
+ ...Object.keys(this.loggers)
12806
+ ]);
12807
+ components2.forEach((componentName) => {
12808
+ this.loggers[componentName] = createLogger(componentName);
12630
12809
  });
12631
12810
  }
12632
12811
  /**
@@ -12680,9 +12859,9 @@ const _JSGLogger = class _JSGLogger {
12680
12859
  * @returns {Object} Logger instance (auto-created if needed)
12681
12860
  */
12682
12861
  getComponent(componentName) {
12683
- var _a2;
12862
+ var _a;
12684
12863
  if (!this.loggers[componentName]) {
12685
- const hasConfig = (_a2 = configManager.config.components) == null ? void 0 : _a2[componentName];
12864
+ const hasConfig = (_a = configManager.config.components) == null ? void 0 : _a[componentName];
12686
12865
  const hasScheme = COMPONENT_SCHEME[componentName];
12687
12866
  if (!hasConfig && !hasScheme) {
12688
12867
  if (this.loggers.core) {
@@ -12706,10 +12885,11 @@ const _JSGLogger = class _JSGLogger {
12706
12885
  }
12707
12886
  }
12708
12887
  this.componentSubscribers.forEach((callback) => {
12888
+ var _a2;
12709
12889
  try {
12710
12890
  callback(currentComponents);
12711
12891
  } catch (error) {
12712
- console.error("Component subscriber error:", error);
12892
+ (_a2 = this.loggers.core) == null ? void 0 : _a2.error("Component subscriber error:", error);
12713
12893
  }
12714
12894
  });
12715
12895
  }
@@ -12759,6 +12939,84 @@ const _JSGLogger = class _JSGLogger {
12759
12939
  return duration;
12760
12940
  }
12761
12941
  }
12942
+ /**
12943
+ * Restore static singleton refs from window/global enhanced loggers export.
12944
+ * @returns {boolean} Whether a live instance was recovered
12945
+ * @private
12946
+ */
12947
+ static _recoverFromGlobal() {
12948
+ var _a;
12949
+ const enhanced = isBrowser() && typeof window !== "undefined" && window.__JSG_Logger_Enhanced__ || !isBrowser() && globalThis.__JSG_Logger_Enhanced__ || null;
12950
+ if (!enhanced) {
12951
+ return false;
12952
+ }
12953
+ _JSGLogger._enhancedLoggers = enhanced;
12954
+ if ((_a = enhanced._jsgLoggerInstance) == null ? void 0 : _a.initialized) {
12955
+ _JSGLogger._instance = enhanced._jsgLoggerInstance;
12956
+ return true;
12957
+ }
12958
+ return false;
12959
+ }
12960
+ /**
12961
+ * Update logger configuration post-initialization without reinitializing.
12962
+ * Merges partialConfig into the current config without touching registered transports.
12963
+ * If called before any initialization has occurred, delegates to getInstanceSync(partialConfig).
12964
+ * Emits a "JSG Logger configured" log so the applied project config is visible in the
12965
+ * console even though the one-time init log already fired with defaults at module eval time.
12966
+ * @param {Object} partialConfig - Partial config to merge into the current config
12967
+ * @returns {Object} Enhanced logger exports
12968
+ */
12969
+ static configure(partialConfig = {}) {
12970
+ var _a, _b, _c;
12971
+ _JSGLogger._recoverFromGlobal();
12972
+ if (!((_a = _JSGLogger._instance) == null ? void 0 : _a.initialized)) {
12973
+ return _JSGLogger.getInstanceSync(partialConfig);
12974
+ }
12975
+ const currentTransports = _JSGLogger._instance.transports;
12976
+ const normalized = configManager._normalizeConfigStructure(partialConfig);
12977
+ configManager.config = configManager.mergeConfigs(configManager.config, normalized);
12978
+ configManager.config.transports = currentTransports;
12979
+ _JSGLogger._instance.transports = currentTransports;
12980
+ _JSGLogger._instance.refreshLoggers();
12981
+ if (isBrowser() && typeof window !== "undefined" && ((_b = _JSGLogger._enhancedLoggers) == null ? void 0 : _b.controls)) {
12982
+ window.JSG_Logger = _JSGLogger._enhancedLoggers.controls;
12983
+ window.__JSG_Logger_Enhanced__ = _JSGLogger._enhancedLoggers;
12984
+ }
12985
+ if (!isBrowser()) {
12986
+ globalThis.__JSG_Logger_Enhanced__ = _JSGLogger._enhancedLoggers;
12987
+ }
12988
+ if ((_c = _JSGLogger._instance.loggers) == null ? void 0 : _c.core) {
12989
+ const components2 = configManager.getAvailableComponents();
12990
+ _JSGLogger._instance.loggers.core.info("JSG Logger configured", {
12991
+ projectName: configManager.getProjectName(),
12992
+ components: components2.length,
12993
+ timestampMode: configManager.getTimestampMode()
12994
+ });
12995
+ }
12996
+ return _JSGLogger._enhancedLoggers;
12997
+ }
12998
+ /**
12999
+ * Add a transport to the running singleton without reinitializing.
13000
+ * Safe to call even if the singleton was already initialized by module-level code
13001
+ * or a third-party library — bypasses the reinit guard entirely.
13002
+ * Idempotent: calling with the same transport instance twice is a no-op.
13003
+ * @param {Object} transport - LogTransport instance to register
13004
+ * @returns {void}
13005
+ */
13006
+ static addTransport(transport) {
13007
+ if (!transport || typeof transport.send !== "function") {
13008
+ metaWarn("[JSGLogger] addTransport() received an invalid transport — must have a send() method");
13009
+ return;
13010
+ }
13011
+ if (!_JSGLogger._instance) {
13012
+ metaWarn("[JSGLogger] addTransport() called before any initialization — initializing with defaults first");
13013
+ _JSGLogger._instance = new _JSGLogger();
13014
+ _JSGLogger._enhancedLoggers = _JSGLogger._instance.initSync({});
13015
+ }
13016
+ if (!_JSGLogger._instance.transports.includes(transport)) {
13017
+ _JSGLogger._instance.transports.push(transport);
13018
+ }
13019
+ }
12762
13020
  /**
12763
13021
  * Get singleton controls without triggering initialization
12764
13022
  * Checks window.JSG_Logger first to ensure singleton works across separate bundles
@@ -12766,11 +13024,12 @@ const _JSGLogger = class _JSGLogger {
12766
13024
  * @returns {Object|null} Controls object or null if singleton not initialized
12767
13025
  */
12768
13026
  static getControls() {
12769
- var _a2;
13027
+ var _a;
13028
+ _JSGLogger._recoverFromGlobal();
12770
13029
  if (isBrowser() && typeof window !== "undefined" && window.JSG_Logger) {
12771
13030
  return window.JSG_Logger;
12772
13031
  }
12773
- return ((_a2 = _JSGLogger._enhancedLoggers) == null ? void 0 : _a2.controls) || null;
13032
+ return ((_a = _JSGLogger._enhancedLoggers) == null ? void 0 : _a.controls) || null;
12774
13033
  }
12775
13034
  };
12776
13035
  // Static singleton instance
@@ -12786,20 +13045,22 @@ if (isBrowser() && typeof window !== "undefined") {
12786
13045
  }
12787
13046
  enhancedLoggers.getInstance = JSGLogger.getInstance;
12788
13047
  enhancedLoggers.getInstanceSync = JSGLogger.getInstanceSync;
13048
+ enhancedLoggers.configure = JSGLogger.configure.bind(JSGLogger);
13049
+ enhancedLoggers.addTransport = JSGLogger.addTransport.bind(JSGLogger);
12789
13050
  enhancedLoggers.logPerformance = JSGLogger.logPerformance;
12790
13051
  enhancedLoggers.JSGLogger = JSGLogger;
12791
13052
  const getDevToolsLogger$3 = () => {
12792
- var _a2;
13053
+ var _a;
12793
13054
  const instance = JSGLogger.getInstanceSync();
12794
- return ((_a2 = instance == null ? void 0 : instance.getComponent) == null ? void 0 : _a2.call(instance, "devtools-ui")) || {
13055
+ return ((_a = instance == null ? void 0 : instance.getComponent) == null ? void 0 : _a.call(instance, "devtools-ui")) || {
12795
13056
  info: console.log.bind(console, "[JSG-DEVTOOLS]"),
12796
13057
  warn: console.warn.bind(console, "[JSG-DEVTOOLS]"),
12797
13058
  error: console.error.bind(console, "[JSG-DEVTOOLS]")
12798
13059
  };
12799
13060
  };
12800
13061
  function GlobalControls({ onDebugAll, onTraceAll, onReset, loggerControls }) {
12801
- var _a2, _b;
12802
- const stats = ((_a2 = loggerControls.getStats) == null ? void 0 : _a2.call(loggerControls)) || { total: 0, byLevel: {} };
13062
+ var _a, _b;
13063
+ const stats = ((_a = loggerControls.getStats) == null ? void 0 : _a.call(loggerControls)) || { total: 0, byLevel: {} };
12803
13064
  const configSummary = ((_b = loggerControls.getConfigSummary) == null ? void 0 : _b.call(loggerControls)) || {};
12804
13065
  return /* @__PURE__ */ u$1(Pane, { marginBottom: 16, children: [
12805
13066
  /* @__PURE__ */ u$1(Pane, { display: "flex", gap: 8, marginBottom: 16, flexWrap: "wrap", children: [
@@ -12851,8 +13112,8 @@ function GlobalControls({ onDebugAll, onTraceAll, onReset, loggerControls }) {
12851
13112
  flex: "1",
12852
13113
  minWidth: 80,
12853
13114
  onClick: () => {
12854
- var _a3;
12855
- const summary = (_a3 = loggerControls.getConfigSummary) == null ? void 0 : _a3.call(loggerControls);
13115
+ var _a2;
13116
+ const summary = (_a2 = loggerControls.getConfigSummary) == null ? void 0 : _a2.call(loggerControls);
12856
13117
  const devtoolsLogger = getDevToolsLogger$3();
12857
13118
  devtoolsLogger.info("Current Config:", summary);
12858
13119
  alert("Config exported to console");
@@ -12902,9 +13163,9 @@ function GlobalControls({ onDebugAll, onTraceAll, onReset, loggerControls }) {
12902
13163
  ] });
12903
13164
  }
12904
13165
  const getDevToolsLogger$2 = () => {
12905
- var _a2;
13166
+ var _a;
12906
13167
  const instance = JSGLogger.getInstanceSync();
12907
- return ((_a2 = instance == null ? void 0 : instance.getComponent) == null ? void 0 : _a2.call(instance, "devtools-ui")) || {
13168
+ return ((_a = instance == null ? void 0 : instance.getComponent) == null ? void 0 : _a.call(instance, "devtools-ui")) || {
12908
13169
  info: console.log.bind(console, "[JSG-DEVTOOLS]"),
12909
13170
  warn: console.warn.bind(console, "[JSG-DEVTOOLS]"),
12910
13171
  error: console.error.bind(console, "[JSG-DEVTOOLS]")
@@ -12996,10 +13257,10 @@ function DisplayControls({ loggerControls, onStateChange }) {
12996
13257
  stackTrace: true
12997
13258
  });
12998
13259
  y(() => {
12999
- var _a2, _b;
13260
+ var _a, _b;
13000
13261
  if (loggerControls) {
13001
13262
  try {
13002
- const config = (_a2 = loggerControls.getDisplayConfig) == null ? void 0 : _a2.call(loggerControls);
13263
+ const config = (_a = loggerControls.getDisplayConfig) == null ? void 0 : _a.call(loggerControls);
13003
13264
  if (config) {
13004
13265
  setDisplayOptions((prev) => ({
13005
13266
  ...prev,
@@ -13025,12 +13286,12 @@ function DisplayControls({ loggerControls, onStateChange }) {
13025
13286
  }
13026
13287
  }, [displayOptions, timestampMode2, onStateChange]);
13027
13288
  const handleTimestampModeChange = (mode) => {
13028
- var _a2;
13289
+ var _a;
13029
13290
  setTimestampMode(mode);
13030
13291
  const isVisible = mode !== "disable";
13031
13292
  setDisplayOptions((prev) => ({ ...prev, timestamp: isVisible }));
13032
13293
  try {
13033
- (_a2 = loggerControls.setTimestampMode) == null ? void 0 : _a2.call(loggerControls, mode);
13294
+ (_a = loggerControls.setTimestampMode) == null ? void 0 : _a.call(loggerControls, mode);
13034
13295
  const devtoolsLogger = getDevToolsLogger$2();
13035
13296
  devtoolsLogger.info(`Timestamp mode changed to: ${mode}`);
13036
13297
  } catch (error) {
@@ -13042,14 +13303,14 @@ function DisplayControls({ loggerControls, onStateChange }) {
13042
13303
  }
13043
13304
  };
13044
13305
  const handleToggle = (option) => {
13045
- var _a2;
13306
+ var _a;
13046
13307
  const newValue = !displayOptions[option];
13047
13308
  setDisplayOptions((prev) => ({
13048
13309
  ...prev,
13049
13310
  [option]: newValue
13050
13311
  }));
13051
13312
  try {
13052
- (_a2 = loggerControls.setDisplayOption) == null ? void 0 : _a2.call(loggerControls, option, newValue);
13313
+ (_a = loggerControls.setDisplayOption) == null ? void 0 : _a.call(loggerControls, option, newValue);
13053
13314
  const devtoolsLogger = getDevToolsLogger$2();
13054
13315
  devtoolsLogger.info(`Display option '${option}' set to: ${newValue}`);
13055
13316
  } catch (error) {
@@ -13061,7 +13322,7 @@ function DisplayControls({ loggerControls, onStateChange }) {
13061
13322
  }
13062
13323
  };
13063
13324
  const handleAllOn = () => {
13064
- var _a2;
13325
+ var _a;
13065
13326
  const allOn = {
13066
13327
  timestamp: true,
13067
13328
  emoji: true,
@@ -13075,10 +13336,10 @@ function DisplayControls({ loggerControls, onStateChange }) {
13075
13336
  setTimestampMode("absolute");
13076
13337
  try {
13077
13338
  Object.entries(allOn).forEach(([key, value]) => {
13078
- var _a3;
13079
- (_a3 = loggerControls.setDisplayOption) == null ? void 0 : _a3.call(loggerControls, key, value);
13339
+ var _a2;
13340
+ (_a2 = loggerControls.setDisplayOption) == null ? void 0 : _a2.call(loggerControls, key, value);
13080
13341
  });
13081
- (_a2 = loggerControls.setTimestampMode) == null ? void 0 : _a2.call(loggerControls, "absolute");
13342
+ (_a = loggerControls.setTimestampMode) == null ? void 0 : _a.call(loggerControls, "absolute");
13082
13343
  const devtoolsLogger = getDevToolsLogger$2();
13083
13344
  devtoolsLogger.info("All display options enabled");
13084
13345
  } catch (error) {
@@ -13090,7 +13351,7 @@ function DisplayControls({ loggerControls, onStateChange }) {
13090
13351
  }
13091
13352
  };
13092
13353
  const handleAllOff = () => {
13093
- var _a2;
13354
+ var _a;
13094
13355
  const allOff = {
13095
13356
  timestamp: false,
13096
13357
  emoji: false,
@@ -13105,10 +13366,10 @@ function DisplayControls({ loggerControls, onStateChange }) {
13105
13366
  setTimestampMode("disable");
13106
13367
  try {
13107
13368
  Object.entries(allOff).forEach(([key, value]) => {
13108
- var _a3;
13109
- (_a3 = loggerControls.setDisplayOption) == null ? void 0 : _a3.call(loggerControls, key, value);
13369
+ var _a2;
13370
+ (_a2 = loggerControls.setDisplayOption) == null ? void 0 : _a2.call(loggerControls, key, value);
13110
13371
  });
13111
- (_a2 = loggerControls.setTimestampMode) == null ? void 0 : _a2.call(loggerControls, "disable");
13372
+ (_a = loggerControls.setTimestampMode) == null ? void 0 : _a.call(loggerControls, "disable");
13112
13373
  const devtoolsLogger = getDevToolsLogger$2();
13113
13374
  devtoolsLogger.info("All display options disabled (message kept on)");
13114
13375
  } catch (error) {
@@ -13120,7 +13381,7 @@ function DisplayControls({ loggerControls, onStateChange }) {
13120
13381
  }
13121
13382
  };
13122
13383
  const handleReset = () => {
13123
- var _a2;
13384
+ var _a;
13124
13385
  const defaults = {
13125
13386
  timestamp: true,
13126
13387
  emoji: true,
@@ -13134,10 +13395,10 @@ function DisplayControls({ loggerControls, onStateChange }) {
13134
13395
  setTimestampMode("absolute");
13135
13396
  try {
13136
13397
  Object.entries(defaults).forEach(([key, value]) => {
13137
- var _a3;
13138
- (_a3 = loggerControls.setDisplayOption) == null ? void 0 : _a3.call(loggerControls, key, value);
13398
+ var _a2;
13399
+ (_a2 = loggerControls.setDisplayOption) == null ? void 0 : _a2.call(loggerControls, key, value);
13139
13400
  });
13140
- (_a2 = loggerControls.setTimestampMode) == null ? void 0 : _a2.call(loggerControls, "absolute");
13401
+ (_a = loggerControls.setTimestampMode) == null ? void 0 : _a.call(loggerControls, "absolute");
13141
13402
  const devtoolsLogger = getDevToolsLogger$2();
13142
13403
  devtoolsLogger.info("Display options reset to defaults");
13143
13404
  } catch (error) {
@@ -13427,9 +13688,9 @@ function PanelContainer({
13427
13688
  );
13428
13689
  }
13429
13690
  const getDevToolsLogger$1 = () => {
13430
- var _a2;
13691
+ var _a;
13431
13692
  const instance = JSGLogger.getInstanceSync();
13432
- return ((_a2 = instance == null ? void 0 : instance.getComponent) == null ? void 0 : _a2.call(instance, "devtools-ui")) || {
13693
+ return ((_a = instance == null ? void 0 : instance.getComponent) == null ? void 0 : _a.call(instance, "devtools-ui")) || {
13433
13694
  info: console.log.bind(console, "[JSG-DEVTOOLS]"),
13434
13695
  warn: console.warn.bind(console, "[JSG-DEVTOOLS]"),
13435
13696
  error: console.error.bind(console, "[JSG-DEVTOOLS]")
@@ -13441,17 +13702,17 @@ function DevToolsPanel({ loggerControls, onUnmount }) {
13441
13702
  const [components2, setComponents] = d([]);
13442
13703
  const [loggerStats, setLoggerStats] = d({ total: 0 });
13443
13704
  y(() => {
13444
- var _a2, _b, _c, _d;
13705
+ var _a, _b, _c, _d;
13445
13706
  if (loggerControls) {
13446
- const componentList = ((_a2 = loggerControls.listComponents) == null ? void 0 : _a2.call(loggerControls)) || [];
13707
+ const componentList = ((_a = loggerControls.listComponents) == null ? void 0 : _a.call(loggerControls)) || [];
13447
13708
  const devtoolsLogger = getDevToolsLogger$1();
13448
13709
  devtoolsLogger.info("📋 Initial component list read", { componentCount: componentList.length, components: componentList });
13449
13710
  setComponents(componentList);
13450
13711
  const stats = ((_b = loggerControls.getStats) == null ? void 0 : _b.call(loggerControls)) || { total: 0 };
13451
13712
  setLoggerStats(stats);
13452
13713
  const unsubscribe = (_c = loggerControls.subscribe) == null ? void 0 : _c.call(loggerControls, (logEntry, allLogs) => {
13453
- var _a3;
13454
- const updatedStats = ((_a3 = loggerControls.getStats) == null ? void 0 : _a3.call(loggerControls)) || { total: 0 };
13714
+ var _a2;
13715
+ const updatedStats = ((_a2 = loggerControls.getStats) == null ? void 0 : _a2.call(loggerControls)) || { total: 0 };
13455
13716
  setLoggerStats(updatedStats);
13456
13717
  });
13457
13718
  const unsubscribeComponents = (_d = loggerControls.subscribeToComponents) == null ? void 0 : _d.call(loggerControls, (newComponents) => {
@@ -13464,8 +13725,8 @@ function DevToolsPanel({ loggerControls, onUnmount }) {
13464
13725
  const devtoolsLogger2 = getDevToolsLogger$1();
13465
13726
  devtoolsLogger2.warn("⚠️ subscribeToComponents not available, using timeout fallback");
13466
13727
  timeoutId = setTimeout(() => {
13467
- var _a3;
13468
- const updated = ((_a3 = loggerControls.listComponents) == null ? void 0 : _a3.call(loggerControls)) || [];
13728
+ var _a2;
13729
+ const updated = ((_a2 = loggerControls.listComponents) == null ? void 0 : _a2.call(loggerControls)) || [];
13469
13730
  setComponents(updated);
13470
13731
  }, 100);
13471
13732
  } else {
@@ -13510,32 +13771,32 @@ function DevToolsPanel({ loggerControls, onUnmount }) {
13510
13771
  }
13511
13772
  };
13512
13773
  const handleLevelChange = (componentName, newLevel) => {
13513
- var _a2;
13514
- (_a2 = loggerControls.setLevel) == null ? void 0 : _a2.call(loggerControls, componentName, newLevel);
13774
+ var _a;
13775
+ (_a = loggerControls.setLevel) == null ? void 0 : _a.call(loggerControls, componentName, newLevel);
13515
13776
  const devtoolsLogger = getDevToolsLogger$1();
13516
13777
  devtoolsLogger.info(`Changed ${componentName} level to: ${newLevel.toUpperCase()}`);
13517
13778
  };
13518
13779
  const handleGlobalDebug = () => {
13519
- var _a2;
13520
- (_a2 = loggerControls.enableDebugMode) == null ? void 0 : _a2.call(loggerControls);
13780
+ var _a;
13781
+ (_a = loggerControls.enableDebugMode) == null ? void 0 : _a.call(loggerControls);
13521
13782
  const devtoolsLogger = getDevToolsLogger$1();
13522
13783
  devtoolsLogger.info("Enabled debug mode for all components");
13523
13784
  };
13524
13785
  const handleGlobalTrace = () => {
13525
- var _a2;
13526
- (_a2 = loggerControls.enableTraceMode) == null ? void 0 : _a2.call(loggerControls);
13786
+ var _a;
13787
+ (_a = loggerControls.enableTraceMode) == null ? void 0 : _a.call(loggerControls);
13527
13788
  const devtoolsLogger = getDevToolsLogger$1();
13528
13789
  devtoolsLogger.info("Enabled trace mode for all components");
13529
13790
  };
13530
13791
  const handleReset = () => {
13531
- var _a2;
13532
- (_a2 = loggerControls.reset) == null ? void 0 : _a2.call(loggerControls);
13792
+ var _a;
13793
+ (_a = loggerControls.reset) == null ? void 0 : _a.call(loggerControls);
13533
13794
  const devtoolsLogger = getDevToolsLogger$1();
13534
13795
  devtoolsLogger.info("Reset all settings to defaults");
13535
13796
  };
13536
13797
  const handleUnload = () => {
13537
- var _a2;
13538
- (_a2 = loggerControls.disableDevPanel) == null ? void 0 : _a2.call(loggerControls);
13798
+ var _a;
13799
+ (_a = loggerControls.disableDevPanel) == null ? void 0 : _a.call(loggerControls);
13539
13800
  };
13540
13801
  y(() => {
13541
13802
  if (onUnmount) {
@@ -13838,16 +14099,16 @@ let panelInstance = null;
13838
14099
  let isInitialized = false;
13839
14100
  let closeHandler = null;
13840
14101
  function initializePanel() {
13841
- var _a2;
14102
+ var _a;
13842
14103
  const devtoolsLogger = getDevToolsLogger();
13843
14104
  const existingPanel = document.getElementById("jsg-devtools-panel");
13844
14105
  if (existingPanel) {
13845
14106
  devtoolsLogger.info("Panel already exists in DOM, returning existing instance");
13846
- return ((_a2 = window.JSG_DevTools) == null ? void 0 : _a2.panelInstance) || {
14107
+ return ((_a = window.JSG_DevTools) == null ? void 0 : _a.panelInstance) || {
13847
14108
  container: existingPanel,
13848
14109
  destroy: () => {
13849
- var _a3;
13850
- if ((_a3 = window.JSG_DevTools) == null ? void 0 : _a3.destroy) {
14110
+ var _a2;
14111
+ if ((_a2 = window.JSG_DevTools) == null ? void 0 : _a2.destroy) {
13851
14112
  window.JSG_DevTools.destroy();
13852
14113
  }
13853
14114
  }