@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
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  import {configManager} from '../config/config-manager.js';
7
+ import {toPinoRedactPaths} from '../utils/redaction.js';
7
8
 
8
9
  /**
9
10
  * Create server formatter (structured JSON)
@@ -39,7 +40,7 @@ export const getServerConfig = () => {
39
40
  },
40
41
  // Redact sensitive information in production (configurable)
41
42
  redact: {
42
- paths: redactConfig.paths.length > 0 ? redactConfig.paths : ['password', 'token', 'key', 'secret'],
43
+ paths: toPinoRedactPaths(redactConfig.paths),
43
44
  censor: redactConfig.censor || '[REDACTED]'
44
45
  }
45
46
  };
package/index.js CHANGED
@@ -14,33 +14,9 @@ import {createServerFormatter, getServerConfig} from './formatters/server-format
14
14
  import {LogStore} from './stores/log-store.js';
15
15
  import {metaLog, metaWarn, metaError} from './utils/meta-logger.js';
16
16
  import {buildLogEntry, dispatchToTransports} from './utils/transport-dispatcher.js';
17
+ import {redactValue} from './utils/redaction.js';
17
18
  import packageJson from './package.json' with {type: 'json'};
18
19
 
19
- // Check default config for devtools at module load time
20
- // This allows bundlers to tree-shake if disabled
21
- const defaultDevtoolsEnabled = defaultConfig.devtools?.enabled ?? false;
22
-
23
- // Conditional static import - bundlers can eliminate if condition is false
24
- // If defaultDevtoolsEnabled is false, bundler removes this entire block
25
- // Use lazy initialization to avoid top-level await (which would make module async)
26
- let devtoolsModule = null;
27
- let devtoolsModulePromise = null;
28
- if (defaultDevtoolsEnabled) {
29
- metaLog('[JSG-LOGGER] DevTools module pre-loading started (default config enabled)');
30
- // Start loading immediately but don't await (non-blocking)
31
- // Bundlers can still analyze this static import for tree-shaking
32
- devtoolsModulePromise = import('@crimsonsunset/jsg-logger/devtools').then(module => {
33
- devtoolsModule = module;
34
- metaLog('[JSG-LOGGER] DevTools module pre-loaded successfully');
35
- return module;
36
- }).catch(error => {
37
- metaError('[JSG-LOGGER] DevTools module pre-load failed:', error);
38
- return null;
39
- });
40
- } else {
41
- metaLog('[JSG-LOGGER] DevTools module NOT pre-loaded (default config disabled - will tree-shake)');
42
- }
43
-
44
20
  /**
45
21
  * Main Logger Class
46
22
  * Manages logger instances and provides the public API
@@ -138,7 +114,8 @@ class JSGLogger {
138
114
  if (isBrowser() && typeof window !== 'undefined' && window.JSG_Logger) {
139
115
  // If enhanced loggers reference exists, use it (preferred)
140
116
  if (window.__JSG_Logger_Enhanced__) {
141
- return window.__JSG_Logger_Enhanced__;
117
+ JSGLogger._recoverFromGlobal();
118
+ return JSGLogger._enhancedLoggers;
142
119
  }
143
120
  // Fallback: reconstruct enhanced loggers from controls object
144
121
  // This handles cases where __JSG_Logger_Enhanced__ wasn't set
@@ -157,7 +134,7 @@ class JSGLogger {
157
134
  // Server equivalent: check globalThis for cross-module-instance singleton
158
135
  // Same problem as browser cross-bundle, but for Node.js bundled server chunks
159
136
  if (!isBrowser() && globalThis.__JSG_Logger_Enhanced__) {
160
- JSGLogger._enhancedLoggers = globalThis.__JSG_Logger_Enhanced__;
137
+ JSGLogger._recoverFromGlobal();
161
138
  return JSGLogger._enhancedLoggers;
162
139
  }
163
140
 
@@ -464,18 +441,20 @@ class JSGLogger {
464
441
  let data;
465
442
 
466
443
  // Handle different argument patterns
444
+ const redactConfig = configManager.getRedactConfig();
445
+
467
446
  if (typeof first === 'string') {
468
447
  message = first;
469
448
  if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null) {
470
- data = args[0];
471
- pinoLogger[level](args[0], message);
449
+ data = redactValue(args[0], redactConfig);
450
+ pinoLogger[level](data, message);
472
451
  } else {
473
452
  pinoLogger[level](message);
474
453
  }
475
454
  } else if (typeof first === 'object' && first !== null) {
476
- data = first;
455
+ data = redactValue(first, redactConfig);
477
456
  message = (args.length > 0 && typeof args[0] === 'string') ? args[0] : '';
478
- pinoLogger[level](first, ...args);
457
+ pinoLogger[level](data, ...(message ? [message] : []));
479
458
  } else {
480
459
  pinoLogger[level](first, ...args);
481
460
  }
@@ -538,6 +517,9 @@ class JSGLogger {
538
517
  */
539
518
  getLoggerExports() {
540
519
  return {
520
+ // Back-reference for cross-bundle singleton recovery
521
+ _jsgLoggerInstance: this,
522
+
541
523
  // All component loggers
542
524
  ...this.loggers,
543
525
 
@@ -706,24 +688,15 @@ class JSGLogger {
706
688
  }
707
689
 
708
690
  try {
709
- // Use pre-loaded module (from default config) or load dynamically (consumer's runtime config override)
691
+ const {loadDevtoolsModule} = await import('./utils/devtools-loader.js');
692
+ const devtoolsModule = await loadDevtoolsModule();
693
+
710
694
  if (!devtoolsModule) {
711
- // Check if we have a promise for pre-loading
712
- if (devtoolsModulePromise) {
713
- devtoolsLogger.info('Waiting for pre-loaded DevTools module...');
714
- // Wait for pre-load to complete
715
- devtoolsModule = await devtoolsModulePromise;
716
- } else {
717
- // Runtime config override: consumer enabled devtools but default was disabled
718
- // Load on demand via dynamic import
719
- devtoolsLogger.info('Loading DevTools module dynamically (runtime config override)...');
720
- devtoolsModule = await import('@crimsonsunset/jsg-logger/devtools');
721
- }
722
- } else {
723
- devtoolsLogger.info('Using pre-loaded DevTools module');
695
+ devtoolsLogger.warn('DevTools panel is not available in this build');
696
+ return null;
724
697
  }
725
-
726
- if (!devtoolsModule || !devtoolsModule.initializePanel) {
698
+
699
+ if (!devtoolsModule.initializePanel) {
727
700
  throw new Error('DevTools panel module missing initializePanel export');
728
701
  }
729
702
 
@@ -797,18 +770,20 @@ class JSGLogger {
797
770
  let data;
798
771
 
799
772
  // Handle different argument patterns
773
+ const redactConfig = configManager.getRedactConfig();
774
+
800
775
  if (typeof first === 'string') {
801
776
  message = first;
802
777
  logData.msg = first;
803
778
  if (args.length === 1 && typeof args[0] === 'object') {
804
- data = args[0];
805
- Object.assign(logData, args[0]);
779
+ data = redactValue(args[0], redactConfig);
780
+ Object.assign(logData, data);
806
781
  } else if (args.length > 0) {
807
782
  logData.args = args;
808
783
  }
809
784
  } else if (typeof first === 'object') {
810
- data = first;
811
- Object.assign(logData, first);
785
+ data = redactValue(first, redactConfig);
786
+ Object.assign(logData, data);
812
787
  if (args.length > 0 && typeof args[0] === 'string') {
813
788
  message = args[0];
814
789
  logData.msg = args[0];
@@ -835,12 +810,20 @@ class JSGLogger {
835
810
  }
836
811
 
837
812
  /**
838
- * Refresh all loggers with updated configuration
813
+ * Refresh all loggers with updated configuration.
814
+ * Uses the original createLogger (not the caching wrapper) so levels and
815
+ * formatters are rebuilt from the current config.
839
816
  * @private
840
817
  */
841
818
  refreshLoggers() {
842
- Object.keys(this.loggers).forEach(componentName => {
843
- this.loggers[componentName] = this.createLogger(componentName);
819
+ const createLogger = this._createLoggerOriginal || this.createLogger.bind(this);
820
+ const components = new Set([
821
+ ...configManager.getAvailableComponents(),
822
+ ...Object.keys(this.loggers),
823
+ ]);
824
+
825
+ components.forEach((componentName) => {
826
+ this.loggers[componentName] = createLogger(componentName);
844
827
  });
845
828
  }
846
829
 
@@ -996,6 +979,30 @@ class JSGLogger {
996
979
  }
997
980
  }
998
981
 
982
+ /**
983
+ * Restore static singleton refs from window/global enhanced loggers export.
984
+ * @returns {boolean} Whether a live instance was recovered
985
+ * @private
986
+ */
987
+ static _recoverFromGlobal() {
988
+ const enhanced = (isBrowser() && typeof window !== 'undefined' && window.__JSG_Logger_Enhanced__)
989
+ || (!isBrowser() && globalThis.__JSG_Logger_Enhanced__)
990
+ || null;
991
+
992
+ if (!enhanced) {
993
+ return false;
994
+ }
995
+
996
+ JSGLogger._enhancedLoggers = enhanced;
997
+
998
+ if (enhanced._jsgLoggerInstance?.initialized) {
999
+ JSGLogger._instance = enhanced._jsgLoggerInstance;
1000
+ return true;
1001
+ }
1002
+
1003
+ return false;
1004
+ }
1005
+
999
1006
  /**
1000
1007
  * Update logger configuration post-initialization without reinitializing.
1001
1008
  * Merges partialConfig into the current config without touching registered transports.
@@ -1006,6 +1013,8 @@ class JSGLogger {
1006
1013
  * @returns {Object} Enhanced logger exports
1007
1014
  */
1008
1015
  static configure(partialConfig = {}) {
1016
+ JSGLogger._recoverFromGlobal();
1017
+
1009
1018
  if (!JSGLogger._instance?.initialized) {
1010
1019
  return JSGLogger.getInstanceSync(partialConfig);
1011
1020
  }
@@ -1017,6 +1026,15 @@ class JSGLogger {
1017
1026
  JSGLogger._instance.transports = currentTransports;
1018
1027
  JSGLogger._instance.refreshLoggers();
1019
1028
 
1029
+ if (isBrowser() && typeof window !== 'undefined' && JSGLogger._enhancedLoggers?.controls) {
1030
+ window.JSG_Logger = JSGLogger._enhancedLoggers.controls;
1031
+ window.__JSG_Logger_Enhanced__ = JSGLogger._enhancedLoggers;
1032
+ }
1033
+
1034
+ if (!isBrowser()) {
1035
+ globalThis.__JSG_Logger_Enhanced__ = JSGLogger._enhancedLoggers;
1036
+ }
1037
+
1020
1038
  // Re-log init summary so consumers can see the applied project config.
1021
1039
  // The module-level auto-init fires before configure() can run, meaning
1022
1040
  // the one-time init log always shows defaults. This follow-up makes
@@ -1063,6 +1081,8 @@ class JSGLogger {
1063
1081
  * @returns {Object|null} Controls object or null if singleton not initialized
1064
1082
  */
1065
1083
  static getControls() {
1084
+ JSGLogger._recoverFromGlobal();
1085
+
1066
1086
  // Check window.JSG_Logger first to ensure singleton works across bundles
1067
1087
  // This is critical when devtools bundle loads separately from main app
1068
1088
  if (isBrowser() && typeof window !== 'undefined' && window.JSG_Logger) {
package/package.json CHANGED
@@ -1,10 +1,14 @@
1
1
  {
2
2
  "name": "@crimsonsunset/jsg-logger",
3
- "version": "1.8.6",
3
+ "version": "1.8.8",
4
4
  "type": "module",
5
5
  "description": "Multi-environment logger with smart detection, file-level overrides, and beautiful console formatting. Test it live: https://logger.joesangiorgio.com/",
6
6
  "main": "index.js",
7
7
  "types": "./index.d.ts",
8
+ "browser": {
9
+ "fs": false,
10
+ "fs/promises": false
11
+ },
8
12
  "keywords": [
9
13
  "logging",
10
14
  "pino",
@@ -90,12 +94,14 @@
90
94
  "dev": "vite",
91
95
  "dev:devtools": "cd devtools && npm run dev",
92
96
  "test:devtools": "vite",
93
- "build:devtools": "cd devtools && npm run build",
97
+ "build:devtools": "cd devtools && npm ci && npm run build",
98
+ "prepublishOnly": "npm run build:devtools",
94
99
  "build:devtools:netlify": "npm install && cd devtools && npm install && npm run build:netlify",
95
100
  "preview:devtools": "cd devtools && npm run preview",
96
101
  "release:patch": "node scripts/release.js patch",
97
102
  "release:minor": "node scripts/release.js minor",
98
103
  "release:major": "node scripts/release.js major",
104
+ "publish:ci": "node scripts/publish.js",
99
105
  "publish:public": "npm publish --access public",
100
106
  "publish:github": "npm publish --registry=https://npm.pkg.github.com/ --access public",
101
107
  "check": "npm run test && echo 'Package ready for publishing'"
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Lazy devtools panel loader — isolated from index.js so the devtools Vite
3
+ * build (which imports index.js) does not try to resolve panel-entry.js
4
+ * before it exists.
5
+ */
6
+
7
+ let devtoolsModule = null;
8
+ let devtoolsModulePromise = null;
9
+
10
+ /**
11
+ * Load the devtools panel bundle on demand.
12
+ * @returns {Promise<Object|null>}
13
+ */
14
+ export async function loadDevtoolsModule() {
15
+ if (devtoolsModule) {
16
+ return devtoolsModule;
17
+ }
18
+
19
+ if (devtoolsModulePromise) {
20
+ return devtoolsModulePromise;
21
+ }
22
+
23
+ if (process.env.NODE_ENV === 'production') {
24
+ return null;
25
+ }
26
+
27
+ const entry = ['./devtools', 'dist', 'panel-entry.js'].join('/');
28
+
29
+ devtoolsModulePromise = import(
30
+ /* webpackIgnore: true */
31
+ /* @vite-ignore */
32
+ entry
33
+ ).then((module) => {
34
+ devtoolsModule = module;
35
+ return module;
36
+ }).catch((error) => {
37
+ console.error('[JSG-LOGGER] DevTools module load failed:', error);
38
+ devtoolsModulePromise = null;
39
+ return null;
40
+ });
41
+
42
+ return devtoolsModulePromise;
43
+ }
@@ -3,6 +3,18 @@
3
3
  * Used by browser, CLI, and server formatters
4
4
  */
5
5
 
6
+ /**
7
+ * Pino/fast-redact only accepts dot-path keys — not JSG suffix wildcards like *key.
8
+ * Wildcard rules are applied via redactValue() in formatters and the pino wrapper.
9
+ *
10
+ * @param {string[]} paths - Redaction path patterns from config
11
+ * @returns {string[]} Paths safe to pass to pino's native redact option
12
+ */
13
+ export function toPinoRedactPaths(paths) {
14
+ const exact = paths.filter((path) => !path.includes('*'));
15
+ return exact.length > 0 ? exact : ['password', 'token'];
16
+ }
17
+
6
18
  /**
7
19
  * Check if a key should be redacted based on patterns
8
20
  * @param {string} key - Key to check
@@ -1,5 +0,0 @@
1
- const __viteBrowserExternal = {};
2
- export {
3
- __viteBrowserExternal as default
4
- };
5
- //# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js","sources":["__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js"],"sourcesContent":["const __viteBrowserExternal = {};\nexport {\n __viteBrowserExternal as default\n};\n//# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map\n"],"names":[],"mappings":"AAAK,MAAC,wBAAwB,CAAA;"}
@@ -1,5 +0,0 @@
1
- const __viteBrowserExternal = {};
2
- export {
3
- __viteBrowserExternal as default
4
- };
5
- //# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js","sources":["__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js"],"sourcesContent":["const __viteBrowserExternal = {};\nexport {\n __viteBrowserExternal as default\n};\n//# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map\n"],"names":[],"mappings":"AAAK,MAAC,wBAAwB,CAAA;"}
@@ -1,5 +0,0 @@
1
- const __viteBrowserExternal = {};
2
- export {
3
- __viteBrowserExternal as default
4
- };
5
- //# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js","sources":["__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js"],"sourcesContent":["const __viteBrowserExternal = {};\nexport {\n __viteBrowserExternal as default\n};\n//# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map\n"],"names":[],"mappings":"AAAK,MAAC,wBAAwB,CAAA;"}
@@ -1,5 +0,0 @@
1
- const __viteBrowserExternal = {};
2
- export {
3
- __viteBrowserExternal as default
4
- };
5
- //# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js","sources":["__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js"],"sourcesContent":["const __viteBrowserExternal = {};\nexport {\n __viteBrowserExternal as default\n};\n//# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map\n"],"names":[],"mappings":"AAAK,MAAC,wBAAwB,CAAA;"}
@@ -1,5 +0,0 @@
1
- const __viteBrowserExternal = {};
2
- export {
3
- __viteBrowserExternal as default
4
- };
5
- //# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js","sources":["__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js"],"sourcesContent":["const __viteBrowserExternal = {};\nexport {\n __viteBrowserExternal as default\n};\n//# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map\n"],"names":[],"mappings":"AAAK,MAAC,wBAAwB,CAAA;"}
@@ -1,5 +0,0 @@
1
- const __viteBrowserExternal = {};
2
- export {
3
- __viteBrowserExternal as default
4
- };
5
- //# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js","sources":["__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js"],"sourcesContent":["const __viteBrowserExternal = {};\nexport {\n __viteBrowserExternal as default\n};\n//# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map\n"],"names":[],"mappings":"AAAK,MAAC,wBAAwB,CAAA;"}
@@ -1,5 +0,0 @@
1
- const __viteBrowserExternal = {};
2
- export {
3
- __viteBrowserExternal as default
4
- };
5
- //# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js","sources":["__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js"],"sourcesContent":["const __viteBrowserExternal = {};\nexport {\n __viteBrowserExternal as default\n};\n//# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map\n"],"names":[],"mappings":"AAAK,MAAC,wBAAwB,CAAA;"}
@@ -1,5 +0,0 @@
1
- const __viteBrowserExternal = {};
2
- export {
3
- __viteBrowserExternal as default
4
- };
5
- //# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js","sources":["__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js"],"sourcesContent":["const __viteBrowserExternal = {};\nexport {\n __viteBrowserExternal as default\n};\n//# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map\n"],"names":[],"mappings":"AAAK,MAAC,wBAAwB,CAAA;"}
@@ -1,5 +0,0 @@
1
- const __viteBrowserExternal = {};
2
- export {
3
- __viteBrowserExternal as default
4
- };
5
- //# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js","sources":["__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js"],"sourcesContent":["const __viteBrowserExternal = {};\nexport {\n __viteBrowserExternal as default\n};\n//# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map\n"],"names":[],"mappings":"AAAK,MAAC,wBAAwB,CAAA;"}
@@ -1,5 +0,0 @@
1
- const __viteBrowserExternal = {};
2
- export {
3
- __viteBrowserExternal as default
4
- };
5
- //# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js","sources":["__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js"],"sourcesContent":["const __viteBrowserExternal = {};\nexport {\n __viteBrowserExternal as default\n};\n//# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map\n"],"names":[],"mappings":"AAAK,MAAC,wBAAwB,CAAA;"}
@@ -1,5 +0,0 @@
1
- const __viteBrowserExternal = {};
2
- export {
3
- __viteBrowserExternal as default
4
- };
5
- //# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js","sources":["__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js"],"sourcesContent":["const __viteBrowserExternal = {};\nexport {\n __viteBrowserExternal as default\n};\n//# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map\n"],"names":[],"mappings":"AAAK,MAAC,wBAAwB,CAAA;"}
@@ -1,5 +0,0 @@
1
- const __viteBrowserExternal = {};
2
- export {
3
- __viteBrowserExternal as default
4
- };
5
- //# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js","sources":["__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js"],"sourcesContent":["const __viteBrowserExternal = {};\nexport {\n __viteBrowserExternal as default\n};\n//# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map\n"],"names":[],"mappings":"AAAK,MAAC,wBAAwB,CAAA;"}
@@ -1,5 +0,0 @@
1
- const __viteBrowserExternal = {};
2
- export {
3
- __viteBrowserExternal as default
4
- };
5
- //# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js","sources":["__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js"],"sourcesContent":["const __viteBrowserExternal = {};\nexport {\n __viteBrowserExternal as default\n};\n//# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map\n"],"names":[],"mappings":"AAAK,MAAC,wBAAwB,CAAA;"}
@@ -1,5 +0,0 @@
1
- const __viteBrowserExternal = {};
2
- export {
3
- __viteBrowserExternal as default
4
- };
5
- //# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js","sources":["__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js"],"sourcesContent":["const __viteBrowserExternal = {};\nexport {\n __viteBrowserExternal as default\n};\n//# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map\n"],"names":[],"mappings":"AAAK,MAAC,wBAAwB,CAAA;"}
@@ -1,5 +0,0 @@
1
- const __viteBrowserExternal = {};
2
- export {
3
- __viteBrowserExternal as default
4
- };
5
- //# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js","sources":["__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js"],"sourcesContent":["const __viteBrowserExternal = {};\nexport {\n __viteBrowserExternal as default\n};\n//# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map\n"],"names":[],"mappings":"AAAK,MAAC,wBAAwB,CAAA;"}
@@ -1,5 +0,0 @@
1
- const __viteBrowserExternal = {};
2
- export {
3
- __viteBrowserExternal as default
4
- };
5
- //# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js","sources":["__vite-browser-external-2Ng8QIWW-2Ng8QIWW.js"],"sourcesContent":["const __viteBrowserExternal = {};\nexport {\n __viteBrowserExternal as default\n};\n//# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW.js.map\n"],"names":[],"mappings":"AAAK,MAAC,wBAAwB,CAAA;"}
@@ -1,5 +0,0 @@
1
- const __viteBrowserExternal = {};
2
- export {
3
- __viteBrowserExternal as default
4
- };
5
- //# sourceMappingURL=__vite-browser-external-2Ng8QIWW-2Ng8QIWW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"__vite-browser-external-2Ng8QIWW-2Ng8QIWW.js","sources":["__vite-browser-external-2Ng8QIWW.js"],"sourcesContent":["const __viteBrowserExternal = {};\nexport {\n __viteBrowserExternal as default\n};\n//# sourceMappingURL=__vite-browser-external-2Ng8QIWW.js.map\n"],"names":[],"mappings":"AAAK,MAAC,wBAAwB,CAAA;"}