@crimsonsunset/jsg-logger 1.8.5 → 1.8.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/config/config-manager.js +4 -2
- package/formatters/server-formatter.js +2 -1
- package/index.d.ts +6 -2
- package/index.js +97 -20
- package/package.json +5 -1
- package/utils/redaction.js +12 -0
- 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
- 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
- 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
- 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
- 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
- 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
- package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
- 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
- package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
- package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
- package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
- package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
- package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
- package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
- package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
- package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
- package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
- package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
- package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
- package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
- package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
- package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
- package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
- package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
- package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
- package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
- package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
- package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
- package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
- package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
- package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js +0 -5
- package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
- package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW.js +0 -5
- package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW.js.map +0 -1
- package/devtools/dist/__vite-browser-external-2Ng8QIWW.js +0 -5
- package/devtools/dist/__vite-browser-external-2Ng8QIWW.js.map +0 -1
- package/devtools/dist/panel-entry-Ahej53sX-y0jCvGoU-BGR5GUGQ-B-CAdAd3-DipRT8xT-CSMwqnO2-CHbiC4Qe-BRrWXqYD-CNcJekPg.js +0 -13932
- package/devtools/dist/panel-entry-Ahej53sX-y0jCvGoU-BGR5GUGQ-B-CAdAd3-DipRT8xT-CSMwqnO2-CHbiC4Qe-BRrWXqYD-CNcJekPg.js.map +0 -1
- package/devtools/dist/panel-entry-B0ZWdsQY-DQdquw3J-TpkzsLdj-BGvdXuoS-CzTJvBQl-CAQNpg2W-Bo2gswMb-CAJV5DP5-DZe7oWlk-tDqwNUld.js +0 -13923
- package/devtools/dist/panel-entry-B0ZWdsQY-DQdquw3J-TpkzsLdj-BGvdXuoS-CzTJvBQl-CAQNpg2W-Bo2gswMb-CAJV5DP5-DZe7oWlk-tDqwNUld.js.map +0 -1
- package/devtools/dist/panel-entry-B2MhZ3gp.js +0 -13975
- package/devtools/dist/panel-entry-B2MhZ3gp.js.map +0 -1
- 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
- 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
- package/devtools/dist/panel-entry-BaBkkSt6-B3YoMX06.js +0 -13963
- package/devtools/dist/panel-entry-BaBkkSt6-B3YoMX06.js.map +0 -1
- package/devtools/dist/panel-entry-CIG0rw0G-C23A9sjU-CbDuened.js +0 -13957
- package/devtools/dist/panel-entry-CIG0rw0G-C23A9sjU-CbDuened.js.map +0 -1
- 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
- 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
- package/devtools/dist/panel-entry-Car1txqz-Cujk5tL9-pWwzfz1C-C_CMO2R5-BtcT6buV-DEh6fx7S-BLtwgJNF-CUuTgFqX.js +0 -13935
- package/devtools/dist/panel-entry-Car1txqz-Cujk5tL9-pWwzfz1C-C_CMO2R5-BtcT6buV-DEh6fx7S-BLtwgJNF-CUuTgFqX.js.map +0 -1
- 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
- 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
- package/devtools/dist/panel-entry-D53S3yYJ-DlRCzJ0q-BnWPSxII-B57eqdYD-CRpb7P7m-CSgQ8r4U-DqjeAoTP.js +0 -13935
- package/devtools/dist/panel-entry-D53S3yYJ-DlRCzJ0q-BnWPSxII-B57eqdYD-CRpb7P7m-CSgQ8r4U-DqjeAoTP.js.map +0 -1
- package/devtools/dist/panel-entry-D6EQIVsV-51lrmGiZ-D4qVD_00-DVb1ySI7-C_RfHhv5-D78tUI3_.js +0 -13945
- package/devtools/dist/panel-entry-D6EQIVsV-51lrmGiZ-D4qVD_00-DVb1ySI7-C_RfHhv5-D78tUI3_.js.map +0 -1
- 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
- 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
- package/devtools/dist/panel-entry-DeLbn5Tk-P7ZtOAd3-DXeez3fy-BFxPfyZi-9L9N-1f8-DzO_hXuM-CWXuuiJk-CI3ufk2T-CP3JflFQ-CLoczwy1-D7ukr7PE-DbMhopxi-BHxIMhDL-CDnadrxB.js +0 -13999
- 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
- package/devtools/dist/panel-entry-Dh3i-JKj-D7NSYIQS-C_qI61WQ-BfJ0BW16-Df40_Q6R.js +0 -13951
- package/devtools/dist/panel-entry-Dh3i-JKj-D7NSYIQS-C_qI61WQ-BfJ0BW16-Df40_Q6R.js.map +0 -1
- package/devtools/dist/panel-entry-DlWAx2yA-vZadFV4d-DTvClgVl-zRu1NJo4-rPRjTg0e-dbBSWeq3-jx9KYEq_-B3sEcSWI-DeCc9Glr-02P4pIqr-CrzX1Fsr-C1C-Fcde.js +0 -13921
- package/devtools/dist/panel-entry-DlWAx2yA-vZadFV4d-DTvClgVl-zRu1NJo4-rPRjTg0e-dbBSWeq3-jx9KYEq_-B3sEcSWI-DeCc9Glr-02P4pIqr-CrzX1Fsr-C1C-Fcde.js.map +0 -1
- 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
- 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
- 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
- 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
- package/devtools/dist/panel-entry-L66PnOAy-CSPip1Cq-DIdgAB36-D56Z9rwz.js +0 -13957
- package/devtools/dist/panel-entry-L66PnOAy-CSPip1Cq-DIdgAB36-D56Z9rwz.js.map +0 -1
- package/devtools/dist/panel-entry.js +0 -13985
- package/devtools/dist/panel-entry.js.map +0 -1
- package/devtools/dist/vite.svg +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,25 @@ All notable changes to the JSG Logger project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.8.7] - 2026-06-04 🧹 **Bundler-clean: no webpack warnings**
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- **`fs/promises` module-not-found warning** — added a `browser` field to `package.json` mapping `fs` and `fs/promises` to `false`. Bundlers (webpack/Vite/esbuild) now skip the Node-only `fs.readFile` fallback in `_loadConfigNode` when building for the browser, instead of erroring with `Module not found: Can't resolve 'fs/promises'`.
|
|
12
|
+
- **`Critical dependency: the request of a dependency is an expression`** — the two variable-path `import()` calls in `config-manager.js` now carry a `webpackIgnore: true` magic comment (alongside the existing `@vite-ignore`). These are runtime user-supplied config paths that should resolve natively, not be bundled.
|
|
13
|
+
- **DevTools chunks leaking into production client bundles** — the on-demand `import('@crimsonsunset/jsg-logger/devtools')` fallback in `enableDevPanel()` is now guarded by `process.env.NODE_ENV !== 'production'`, so production bundlers statically eliminate the entire `devtools/` subtree (~110 `panel-entry-*` critical-dependency warnings) instead of pulling it into the client bundle. DevTools remains fully available in development.
|
|
14
|
+
|
|
15
|
+
### Migration
|
|
16
|
+
None. Drop-in replacement for 1.8.6.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## [1.8.6] - 2026-03-28 🪵 **configure() console feedback**
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
- **`configure()` now logs applied config** — after merging the partial config, `configure()` emits a `"JSG Logger configured"` log entry showing `projectName`, `components`, and `timestampMode`. Previously the one-time init log fired at module evaluation time with default values, making it impossible to visually confirm that `configure()` had applied a consumer's `projectName` and other settings.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
8
27
|
## [1.8.5] - 2026-03-28 🏷️ **configure() TypeScript types**
|
|
9
28
|
|
|
10
29
|
### Added
|
package/config/config-manager.js
CHANGED
|
@@ -151,7 +151,9 @@ export class ConfigManager {
|
|
|
151
151
|
|
|
152
152
|
try {
|
|
153
153
|
// Try dynamic import first (works with ES modules)
|
|
154
|
-
|
|
154
|
+
// Runtime user-supplied path: webpackIgnore stops webpack from emitting a
|
|
155
|
+
// "Critical dependency" warning; @vite-ignore does the same for Vite.
|
|
156
|
+
const module = await import(/* webpackIgnore: true */ /* @vite-ignore */ path, { assert: { type: 'json' } });
|
|
155
157
|
return module.default || module;
|
|
156
158
|
} catch (error) {
|
|
157
159
|
try {
|
|
@@ -174,7 +176,7 @@ export class ConfigManager {
|
|
|
174
176
|
async _loadConfigBrowserImport(path) {
|
|
175
177
|
try {
|
|
176
178
|
// Some bundlers can handle dynamic imports of JSON files
|
|
177
|
-
const module = await import(/* @vite-ignore */ path);
|
|
179
|
+
const module = await import(/* webpackIgnore: true */ /* @vite-ignore */ path);
|
|
178
180
|
return module.default || module;
|
|
179
181
|
} catch (error) {
|
|
180
182
|
return null;
|
|
@@ -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
|
|
43
|
+
paths: toPinoRedactPaths(redactConfig.paths),
|
|
43
44
|
censor: redactConfig.censor || '[REDACTED]'
|
|
44
45
|
}
|
|
45
46
|
};
|
package/index.d.ts
CHANGED
|
@@ -235,7 +235,11 @@ export interface JSGLogger {
|
|
|
235
235
|
* Update config on an already-initialized singleton without reinitializing.
|
|
236
236
|
* Merges the provided partial config into the running instance, preserving all
|
|
237
237
|
* registered transports. Use this instead of getInstanceSync(config) when the
|
|
238
|
-
* singleton may already be initialized
|
|
238
|
+
* singleton may already be initialized by module-level auto-init.
|
|
239
|
+
*
|
|
240
|
+
* Emits a "JSG Logger configured" log showing the applied projectName and
|
|
241
|
+
* component count, so the final config is visible in the console even though
|
|
242
|
+
* the one-time init log already fired with defaults at module evaluation time.
|
|
239
243
|
*
|
|
240
244
|
* If the singleton has not yet been initialized, behaves like getInstanceSync(config).
|
|
241
245
|
*
|
|
@@ -244,7 +248,7 @@ export interface JSGLogger {
|
|
|
244
248
|
*
|
|
245
249
|
* @example
|
|
246
250
|
* ```ts
|
|
247
|
-
* // instrumentation-client.ts —
|
|
251
|
+
* // instrumentation-client.ts — run before anything else uses the logger
|
|
248
252
|
* JSGLogger.configure({ projectName: 'My App', display: { timestamp: true } });
|
|
249
253
|
* ```
|
|
250
254
|
*/
|
package/index.js
CHANGED
|
@@ -14,18 +14,23 @@ 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
20
|
// Check default config for devtools at module load time
|
|
20
21
|
// This allows bundlers to tree-shake if disabled
|
|
21
22
|
const defaultDevtoolsEnabled = defaultConfig.devtools?.enabled ?? false;
|
|
22
23
|
|
|
23
|
-
// Conditional static import
|
|
24
|
-
//
|
|
24
|
+
// Conditional static import.
|
|
25
|
+
// The NODE_ENV check MUST come first: production bundlers (Next.js/webpack DefinePlugin)
|
|
26
|
+
// replace it with `false`, making the whole condition statically false so the entire
|
|
27
|
+
// block — and the devtools chunk graph — is dead-code-eliminated from client bundles.
|
|
28
|
+
// A bare `if (defaultDevtoolsEnabled)` is NOT eliminable because the value comes from a
|
|
29
|
+
// JSON property access webpack cannot constant-fold.
|
|
25
30
|
// Use lazy initialization to avoid top-level await (which would make module async)
|
|
26
31
|
let devtoolsModule = null;
|
|
27
32
|
let devtoolsModulePromise = null;
|
|
28
|
-
if (defaultDevtoolsEnabled) {
|
|
33
|
+
if (process.env.NODE_ENV !== 'production' && defaultDevtoolsEnabled) {
|
|
29
34
|
metaLog('[JSG-LOGGER] DevTools module pre-loading started (default config enabled)');
|
|
30
35
|
// Start loading immediately but don't await (non-blocking)
|
|
31
36
|
// Bundlers can still analyze this static import for tree-shaking
|
|
@@ -138,7 +143,8 @@ class JSGLogger {
|
|
|
138
143
|
if (isBrowser() && typeof window !== 'undefined' && window.JSG_Logger) {
|
|
139
144
|
// If enhanced loggers reference exists, use it (preferred)
|
|
140
145
|
if (window.__JSG_Logger_Enhanced__) {
|
|
141
|
-
|
|
146
|
+
JSGLogger._recoverFromGlobal();
|
|
147
|
+
return JSGLogger._enhancedLoggers;
|
|
142
148
|
}
|
|
143
149
|
// Fallback: reconstruct enhanced loggers from controls object
|
|
144
150
|
// This handles cases where __JSG_Logger_Enhanced__ wasn't set
|
|
@@ -157,7 +163,7 @@ class JSGLogger {
|
|
|
157
163
|
// Server equivalent: check globalThis for cross-module-instance singleton
|
|
158
164
|
// Same problem as browser cross-bundle, but for Node.js bundled server chunks
|
|
159
165
|
if (!isBrowser() && globalThis.__JSG_Logger_Enhanced__) {
|
|
160
|
-
JSGLogger.
|
|
166
|
+
JSGLogger._recoverFromGlobal();
|
|
161
167
|
return JSGLogger._enhancedLoggers;
|
|
162
168
|
}
|
|
163
169
|
|
|
@@ -464,18 +470,20 @@ class JSGLogger {
|
|
|
464
470
|
let data;
|
|
465
471
|
|
|
466
472
|
// Handle different argument patterns
|
|
473
|
+
const redactConfig = configManager.getRedactConfig();
|
|
474
|
+
|
|
467
475
|
if (typeof first === 'string') {
|
|
468
476
|
message = first;
|
|
469
477
|
if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null) {
|
|
470
|
-
data = args[0];
|
|
471
|
-
pinoLogger[level](
|
|
478
|
+
data = redactValue(args[0], redactConfig);
|
|
479
|
+
pinoLogger[level](data, message);
|
|
472
480
|
} else {
|
|
473
481
|
pinoLogger[level](message);
|
|
474
482
|
}
|
|
475
483
|
} else if (typeof first === 'object' && first !== null) {
|
|
476
|
-
data = first;
|
|
484
|
+
data = redactValue(first, redactConfig);
|
|
477
485
|
message = (args.length > 0 && typeof args[0] === 'string') ? args[0] : '';
|
|
478
|
-
pinoLogger[level](
|
|
486
|
+
pinoLogger[level](data, ...(message ? [message] : []));
|
|
479
487
|
} else {
|
|
480
488
|
pinoLogger[level](first, ...args);
|
|
481
489
|
}
|
|
@@ -538,6 +546,9 @@ class JSGLogger {
|
|
|
538
546
|
*/
|
|
539
547
|
getLoggerExports() {
|
|
540
548
|
return {
|
|
549
|
+
// Back-reference for cross-bundle singleton recovery
|
|
550
|
+
_jsgLoggerInstance: this,
|
|
551
|
+
|
|
541
552
|
// All component loggers
|
|
542
553
|
...this.loggers,
|
|
543
554
|
|
|
@@ -713,11 +724,16 @@ class JSGLogger {
|
|
|
713
724
|
devtoolsLogger.info('Waiting for pre-loaded DevTools module...');
|
|
714
725
|
// Wait for pre-load to complete
|
|
715
726
|
devtoolsModule = await devtoolsModulePromise;
|
|
716
|
-
} else {
|
|
717
|
-
// Runtime config override: consumer enabled devtools but default was disabled
|
|
718
|
-
// Load on demand via dynamic import
|
|
727
|
+
} else if (process.env.NODE_ENV !== 'production') {
|
|
728
|
+
// Runtime config override: consumer enabled devtools but default was disabled.
|
|
729
|
+
// Load on demand via dynamic import. Guarded by NODE_ENV so production
|
|
730
|
+
// bundlers (Next.js/webpack) statically eliminate the devtools subtree
|
|
731
|
+
// instead of pulling its chunks into the client bundle.
|
|
719
732
|
devtoolsLogger.info('Loading DevTools module dynamically (runtime config override)...');
|
|
720
733
|
devtoolsModule = await import('@crimsonsunset/jsg-logger/devtools');
|
|
734
|
+
} else {
|
|
735
|
+
devtoolsLogger.warn('DevTools panel is not available in production builds');
|
|
736
|
+
return null;
|
|
721
737
|
}
|
|
722
738
|
} else {
|
|
723
739
|
devtoolsLogger.info('Using pre-loaded DevTools module');
|
|
@@ -797,18 +813,20 @@ class JSGLogger {
|
|
|
797
813
|
let data;
|
|
798
814
|
|
|
799
815
|
// Handle different argument patterns
|
|
816
|
+
const redactConfig = configManager.getRedactConfig();
|
|
817
|
+
|
|
800
818
|
if (typeof first === 'string') {
|
|
801
819
|
message = first;
|
|
802
820
|
logData.msg = first;
|
|
803
821
|
if (args.length === 1 && typeof args[0] === 'object') {
|
|
804
|
-
data = args[0];
|
|
805
|
-
Object.assign(logData,
|
|
822
|
+
data = redactValue(args[0], redactConfig);
|
|
823
|
+
Object.assign(logData, data);
|
|
806
824
|
} else if (args.length > 0) {
|
|
807
825
|
logData.args = args;
|
|
808
826
|
}
|
|
809
827
|
} else if (typeof first === 'object') {
|
|
810
|
-
data = first;
|
|
811
|
-
Object.assign(logData,
|
|
828
|
+
data = redactValue(first, redactConfig);
|
|
829
|
+
Object.assign(logData, data);
|
|
812
830
|
if (args.length > 0 && typeof args[0] === 'string') {
|
|
813
831
|
message = args[0];
|
|
814
832
|
logData.msg = args[0];
|
|
@@ -835,12 +853,20 @@ class JSGLogger {
|
|
|
835
853
|
}
|
|
836
854
|
|
|
837
855
|
/**
|
|
838
|
-
* Refresh all loggers with updated configuration
|
|
856
|
+
* Refresh all loggers with updated configuration.
|
|
857
|
+
* Uses the original createLogger (not the caching wrapper) so levels and
|
|
858
|
+
* formatters are rebuilt from the current config.
|
|
839
859
|
* @private
|
|
840
860
|
*/
|
|
841
861
|
refreshLoggers() {
|
|
842
|
-
|
|
843
|
-
|
|
862
|
+
const createLogger = this._createLoggerOriginal || this.createLogger.bind(this);
|
|
863
|
+
const components = new Set([
|
|
864
|
+
...configManager.getAvailableComponents(),
|
|
865
|
+
...Object.keys(this.loggers),
|
|
866
|
+
]);
|
|
867
|
+
|
|
868
|
+
components.forEach((componentName) => {
|
|
869
|
+
this.loggers[componentName] = createLogger(componentName);
|
|
844
870
|
});
|
|
845
871
|
}
|
|
846
872
|
|
|
@@ -996,15 +1022,42 @@ class JSGLogger {
|
|
|
996
1022
|
}
|
|
997
1023
|
}
|
|
998
1024
|
|
|
1025
|
+
/**
|
|
1026
|
+
* Restore static singleton refs from window/global enhanced loggers export.
|
|
1027
|
+
* @returns {boolean} Whether a live instance was recovered
|
|
1028
|
+
* @private
|
|
1029
|
+
*/
|
|
1030
|
+
static _recoverFromGlobal() {
|
|
1031
|
+
const enhanced = (isBrowser() && typeof window !== 'undefined' && window.__JSG_Logger_Enhanced__)
|
|
1032
|
+
|| (!isBrowser() && globalThis.__JSG_Logger_Enhanced__)
|
|
1033
|
+
|| null;
|
|
1034
|
+
|
|
1035
|
+
if (!enhanced) {
|
|
1036
|
+
return false;
|
|
1037
|
+
}
|
|
1038
|
+
|
|
1039
|
+
JSGLogger._enhancedLoggers = enhanced;
|
|
1040
|
+
|
|
1041
|
+
if (enhanced._jsgLoggerInstance?.initialized) {
|
|
1042
|
+
JSGLogger._instance = enhanced._jsgLoggerInstance;
|
|
1043
|
+
return true;
|
|
1044
|
+
}
|
|
1045
|
+
|
|
1046
|
+
return false;
|
|
1047
|
+
}
|
|
1048
|
+
|
|
999
1049
|
/**
|
|
1000
1050
|
* Update logger configuration post-initialization without reinitializing.
|
|
1001
1051
|
* Merges partialConfig into the current config without touching registered transports.
|
|
1002
|
-
* Transports can only be registered at init time — this method cannot add or remove them.
|
|
1003
1052
|
* If called before any initialization has occurred, delegates to getInstanceSync(partialConfig).
|
|
1053
|
+
* Emits a "JSG Logger configured" log so the applied project config is visible in the
|
|
1054
|
+
* console even though the one-time init log already fired with defaults at module eval time.
|
|
1004
1055
|
* @param {Object} partialConfig - Partial config to merge into the current config
|
|
1005
1056
|
* @returns {Object} Enhanced logger exports
|
|
1006
1057
|
*/
|
|
1007
1058
|
static configure(partialConfig = {}) {
|
|
1059
|
+
JSGLogger._recoverFromGlobal();
|
|
1060
|
+
|
|
1008
1061
|
if (!JSGLogger._instance?.initialized) {
|
|
1009
1062
|
return JSGLogger.getInstanceSync(partialConfig);
|
|
1010
1063
|
}
|
|
@@ -1016,6 +1069,28 @@ class JSGLogger {
|
|
|
1016
1069
|
JSGLogger._instance.transports = currentTransports;
|
|
1017
1070
|
JSGLogger._instance.refreshLoggers();
|
|
1018
1071
|
|
|
1072
|
+
if (isBrowser() && typeof window !== 'undefined' && JSGLogger._enhancedLoggers?.controls) {
|
|
1073
|
+
window.JSG_Logger = JSGLogger._enhancedLoggers.controls;
|
|
1074
|
+
window.__JSG_Logger_Enhanced__ = JSGLogger._enhancedLoggers;
|
|
1075
|
+
}
|
|
1076
|
+
|
|
1077
|
+
if (!isBrowser()) {
|
|
1078
|
+
globalThis.__JSG_Logger_Enhanced__ = JSGLogger._enhancedLoggers;
|
|
1079
|
+
}
|
|
1080
|
+
|
|
1081
|
+
// Re-log init summary so consumers can see the applied project config.
|
|
1082
|
+
// The module-level auto-init fires before configure() can run, meaning
|
|
1083
|
+
// the one-time init log always shows defaults. This follow-up makes
|
|
1084
|
+
// the final configured state visible in the console.
|
|
1085
|
+
if (JSGLogger._instance.loggers?.core) {
|
|
1086
|
+
const components = configManager.getAvailableComponents();
|
|
1087
|
+
JSGLogger._instance.loggers.core.info('JSG Logger configured', {
|
|
1088
|
+
projectName: configManager.getProjectName(),
|
|
1089
|
+
components: components.length,
|
|
1090
|
+
timestampMode: configManager.getTimestampMode(),
|
|
1091
|
+
});
|
|
1092
|
+
}
|
|
1093
|
+
|
|
1019
1094
|
return JSGLogger._enhancedLoggers;
|
|
1020
1095
|
}
|
|
1021
1096
|
|
|
@@ -1049,6 +1124,8 @@ class JSGLogger {
|
|
|
1049
1124
|
* @returns {Object|null} Controls object or null if singleton not initialized
|
|
1050
1125
|
*/
|
|
1051
1126
|
static getControls() {
|
|
1127
|
+
JSGLogger._recoverFromGlobal();
|
|
1128
|
+
|
|
1052
1129
|
// Check window.JSG_Logger first to ensure singleton works across bundles
|
|
1053
1130
|
// This is critical when devtools bundle loads separately from main app
|
|
1054
1131
|
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.
|
|
3
|
+
"version": "1.8.7",
|
|
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",
|
package/utils/redaction.js
CHANGED
|
@@ -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 +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 +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 +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 +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 +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 +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 +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 +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 +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;"}
|
package/devtools/dist/__vite-browser-external-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW-2Ng8QIWW.js.map
DELETED
|
@@ -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 +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 +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 +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;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"__vite-browser-external-2Ng8QIWW.js","sources":["../__vite-browser-external"],"sourcesContent":["export default {}"],"names":[],"mappings":"AAAA,MAAA,wBAAe,CAAA;"}
|