@mks2508/better-logger 0.14.0-alpha.2 → 0.18.2-alpha.2
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/README.md +50 -244
- package/dist/Logger.d.ts +662 -202
- package/dist/Logger.d.ts.map +1 -1
- package/dist/ScopedLogger.d.ts +434 -175
- package/dist/ScopedLogger.d.ts.map +1 -1
- package/dist/chunks/HookBridge-C-AvXmPD.cjs +504 -0
- package/dist/chunks/HookBridge-C-AvXmPD.cjs.map +1 -0
- package/dist/chunks/HookBridge-CI2PH79S.js +487 -0
- package/dist/chunks/HookBridge-CI2PH79S.js.map +1 -0
- package/dist/chunks/LogContext-BaMXleWj.cjs +105 -0
- package/dist/chunks/LogContext-BaMXleWj.cjs.map +1 -0
- package/dist/chunks/LogContext-DjlITOzZ.js +100 -0
- package/dist/chunks/LogContext-DjlITOzZ.js.map +1 -0
- package/dist/chunks/SerializerBridge-Ba43Mk7j.js +393 -0
- package/dist/chunks/SerializerBridge-Ba43Mk7j.js.map +1 -0
- package/dist/chunks/SerializerBridge-C4a9Z37F.cjs +410 -0
- package/dist/chunks/SerializerBridge-C4a9Z37F.cjs.map +1 -0
- package/dist/chunks/StyleManager-DQ6UNRB-.cjs +118 -0
- package/dist/chunks/StyleManager-DQ6UNRB-.cjs.map +1 -0
- package/dist/chunks/StyleManager-DjwAYbxE.js +113 -0
- package/dist/chunks/StyleManager-DjwAYbxE.js.map +1 -0
- package/dist/chunks/core-Blfi2klP.js +31 -0
- package/dist/chunks/core-Blfi2klP.js.map +1 -0
- package/dist/chunks/core-CqS_UBzJ.cjs +36 -0
- package/dist/chunks/core-CqS_UBzJ.cjs.map +1 -0
- package/dist/chunks/environment-detector-7NvnYUfr.js +110 -0
- package/dist/chunks/environment-detector-7NvnYUfr.js.map +1 -0
- package/dist/chunks/environment-detector-D-tHkKWA.cjs +163 -0
- package/dist/chunks/environment-detector-D-tHkKWA.cjs.map +1 -0
- package/dist/chunks/server-fallback-CaCPjWby.cjs +119 -0
- package/dist/chunks/server-fallback-CaCPjWby.cjs.map +1 -0
- package/dist/chunks/server-fallback-jj0T6XaK.js +114 -0
- package/dist/chunks/server-fallback-jj0T6XaK.js.map +1 -0
- package/dist/chunks/spinner-BHyYEXsM.cjs +1029 -0
- package/dist/chunks/spinner-BHyYEXsM.cjs.map +1 -0
- package/dist/chunks/spinner-BtkwpzYv.js +982 -0
- package/dist/chunks/spinner-BtkwpzYv.js.map +1 -0
- package/dist/chunks/styling-CRw3KQW4.js +1592 -0
- package/dist/chunks/styling-CRw3KQW4.js.map +1 -0
- package/dist/chunks/styling-Cel2wPRy.cjs +1645 -0
- package/dist/chunks/styling-Cel2wPRy.cjs.map +1 -0
- package/dist/chunks/transports-BGfwwakw.js +1237 -0
- package/dist/chunks/transports-BGfwwakw.js.map +1 -0
- package/dist/chunks/transports-yK6CL0Ml.cjs +1278 -0
- package/dist/chunks/transports-yK6CL0Ml.cjs.map +1 -0
- package/dist/chunks/utils-W_cxqriN.cjs +705 -0
- package/dist/chunks/utils-W_cxqriN.cjs.map +1 -0
- package/dist/chunks/utils-tKfBAWUM.js +586 -0
- package/dist/chunks/utils-tKfBAWUM.js.map +1 -0
- package/dist/cli/CommandProcessor.d.ts +166 -19
- package/dist/cli/CommandProcessor.d.ts.map +1 -1
- package/dist/cli/commands/ConfigCommand.d.ts +36 -1
- package/dist/cli/commands/ConfigCommand.d.ts.map +1 -1
- package/dist/cli/commands/ExportCommand.d.ts +54 -26
- package/dist/cli/commands/ExportCommand.d.ts.map +1 -1
- package/dist/cli/commands/ThemeCommand.d.ts +62 -3
- package/dist/cli/commands/ThemeCommand.d.ts.map +1 -1
- package/dist/cli/help.d.ts +30 -2
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/index.d.ts +30 -4
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli-module.d.ts +13 -0
- package/dist/cli-module.d.ts.map +1 -0
- package/dist/cli.cjs +11 -0
- package/dist/cli.js +3 -0
- package/dist/constants.d.ts +16 -47
- package/dist/constants.d.ts.map +1 -1
- package/dist/context/LogContext.d.ts +245 -0
- package/dist/context/LogContext.d.ts.map +1 -0
- package/dist/context/index.d.ts +6 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context-module.d.ts +6 -0
- package/dist/context-module.d.ts.map +1 -0
- package/dist/context.cjs +3 -0
- package/dist/context.js +2 -0
- package/dist/core.cjs +304 -2
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.ts +56 -34
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +281 -314
- package/dist/core.js.map +1 -1
- package/dist/hooks/HookBridge.d.ts +32 -0
- package/dist/hooks/HookBridge.d.ts.map +1 -0
- package/dist/hooks/HookManager.d.ts +319 -0
- package/dist/hooks/HookManager.d.ts.map +1 -0
- package/dist/hooks/index.d.ts +7 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks-module.d.ts +7 -0
- package/dist/hooks-module.d.ts.map +1 -0
- package/dist/hooks.cjs +5 -0
- package/dist/hooks.js +2 -0
- package/dist/index.cjs +3402 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +42 -130
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3327 -158
- package/dist/index.js.map +1 -1
- package/dist/node-module.d.ts +10 -0
- package/dist/node-module.d.ts.map +1 -0
- package/dist/node.cjs +13 -0
- package/dist/node.cjs.map +1 -0
- package/dist/node.js +12 -0
- package/dist/node.js.map +1 -0
- package/dist/playground/TerminalBridge.d.ts +53 -0
- package/dist/playground/TerminalBridge.d.ts.map +1 -0
- package/dist/playground/box.d.ts +45 -0
- package/dist/playground/box.d.ts.map +1 -0
- package/dist/playground/cli-table.d.ts +50 -0
- package/dist/playground/cli-table.d.ts.map +1 -0
- package/dist/playground/divider.d.ts +29 -0
- package/dist/playground/divider.d.ts.map +1 -0
- package/dist/playground/header.d.ts +28 -0
- package/dist/playground/header.d.ts.map +1 -0
- package/dist/playground/index.d.ts +11 -0
- package/dist/playground/index.d.ts.map +1 -0
- package/dist/playground/server-fallback.d.ts +114 -0
- package/dist/playground/server-fallback.d.ts.map +1 -0
- package/dist/playground/spinner.d.ts +197 -0
- package/dist/playground/spinner.d.ts.map +1 -0
- package/dist/playground/step.d.ts +33 -0
- package/dist/playground/step.d.ts.map +1 -0
- package/dist/playground-module.d.ts +11 -0
- package/dist/playground-module.d.ts.map +1 -0
- package/dist/playground.cjs +9 -0
- package/dist/playground.js +2 -0
- package/dist/serializers/SerializerBridge.d.ts +28 -0
- package/dist/serializers/SerializerBridge.d.ts.map +1 -0
- package/dist/serializers/SerializerRegistry.d.ts +252 -0
- package/dist/serializers/SerializerRegistry.d.ts.map +1 -0
- package/dist/serializers/index.d.ts +7 -0
- package/dist/serializers/index.d.ts.map +1 -0
- package/dist/serializers-module.d.ts +7 -0
- package/dist/serializers-module.d.ts.map +1 -0
- package/dist/serializers.cjs +5 -0
- package/dist/serializers.js +2 -0
- package/dist/styles/StyleManager.d.ts +190 -0
- package/dist/styles/StyleManager.d.ts.map +1 -0
- package/dist/styles/index.d.ts +7 -0
- package/dist/styles/index.d.ts.map +1 -0
- package/dist/styles-module.d.ts +7 -0
- package/dist/styles-module.d.ts.map +1 -0
- package/dist/styles.cjs +7 -0
- package/dist/styles.js +3 -0
- package/dist/styling/SmartPresets.d.ts +100 -6
- package/dist/styling/SmartPresets.d.ts.map +1 -1
- package/dist/styling/StyleBuilder.d.ts +453 -32
- package/dist/styling/StyleBuilder.d.ts.map +1 -1
- package/dist/styling/banners.d.ts +85 -5
- package/dist/styling/banners.d.ts.map +1 -1
- package/dist/styling/index.d.ts +8 -3
- package/dist/styling/index.d.ts.map +1 -1
- package/dist/styling/themes.d.ts +41 -2
- package/dist/styling/themes.d.ts.map +1 -1
- package/dist/terminal/color-converter.d.ts +73 -0
- package/dist/terminal/color-converter.d.ts.map +1 -0
- package/dist/terminal/formatter.d.ts +23 -0
- package/dist/terminal/formatter.d.ts.map +1 -0
- package/dist/transports/ConsoleTransport.d.ts +104 -0
- package/dist/transports/ConsoleTransport.d.ts.map +1 -0
- package/dist/transports/FileTransport.d.ts +137 -0
- package/dist/transports/FileTransport.d.ts.map +1 -0
- package/dist/transports/HttpTransport.d.ts +180 -0
- package/dist/transports/HttpTransport.d.ts.map +1 -0
- package/dist/transports/OtlpTransport.d.ts +165 -0
- package/dist/transports/OtlpTransport.d.ts.map +1 -0
- package/dist/transports/TransportBridge.d.ts +43 -0
- package/dist/transports/TransportBridge.d.ts.map +1 -0
- package/dist/transports/TransportManager.d.ts +251 -0
- package/dist/transports/TransportManager.d.ts.map +1 -0
- package/dist/transports/index.d.ts +6 -0
- package/dist/transports/index.d.ts.map +1 -0
- package/dist/transports-module.d.ts +10 -0
- package/dist/transports-module.d.ts.map +1 -0
- package/dist/transports.cjs +7 -0
- package/dist/transports.js +2 -0
- package/dist/types/core.d.ts +295 -17
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/handlers.d.ts +0 -67
- package/dist/types/handlers.d.ts.map +1 -1
- package/dist/types/hooks.d.ts +138 -0
- package/dist/types/hooks.d.ts.map +1 -0
- package/dist/types/index.d.ts +7 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/serializers.d.ts +97 -0
- package/dist/types/serializers.d.ts.map +1 -0
- package/dist/types/transports.d.ts +132 -0
- package/dist/types/transports.d.ts.map +1 -0
- package/dist/utils/ansi-colors.d.ts +115 -0
- package/dist/utils/ansi-colors.d.ts.map +1 -0
- package/dist/utils/environment-detector.d.ts +53 -0
- package/dist/utils/environment-detector.d.ts.map +1 -0
- package/dist/utils/formatting.d.ts +9 -8
- package/dist/utils/formatting.d.ts.map +1 -1
- package/dist/utils/index.d.ts +3 -2
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/output.d.ts +14 -17
- package/dist/utils/output.d.ts.map +1 -1
- package/dist/utils/stackTrace.d.ts +2 -2
- package/dist/utils/stackTrace.d.ts.map +1 -1
- package/dist/utils/timestamps.d.ts +0 -12
- package/dist/utils/timestamps.d.ts.map +1 -1
- package/package.json +95 -21
- package/.claude/settings.local.json +0 -39
- package/.github/workflows/ci-quality.yml +0 -357
- package/.github/workflows/docs-demo.yml +0 -119
- package/.github/workflows/releases-core.yml +0 -512
- package/.github/workflows/releases-full.yml +0 -582
- package/.github/workflows-backup/ci.yml +0 -221
- package/.github/workflows-backup/nightly.yml +0 -196
- package/.github/workflows-backup/release-optimized.yml +0 -373
- package/.github/workflows-backup/release.yml +0 -269
- package/.release-notes-0.2.0.md +0 -129
- package/.yamllint +0 -28
- package/CHANGELOG.json +0 -865
- package/CLAUDE.md +0 -204
- package/bun.lock +0 -323
- package/demo.html +0 -847
- package/dist/.tsbuildinfo +0 -1
- package/dist/Logger.js +0 -1124
- package/dist/ScopedLogger.js +0 -426
- package/dist/chunks/Logger-Crw1woqR.js +0 -3464
- package/dist/chunks/Logger-Crw1woqR.js.map +0 -1
- package/dist/chunks/Logger-D_p3xnbq.js +0 -2
- package/dist/chunks/Logger-D_p3xnbq.js.map +0 -1
- package/dist/chunks/RemoteLogHandler-CjWpWZGl.js +0 -33
- package/dist/chunks/RemoteLogHandler-CjWpWZGl.js.map +0 -1
- package/dist/chunks/RemoteLogHandler-ymkQ97xl.js +0 -2
- package/dist/chunks/RemoteLogHandler-ymkQ97xl.js.map +0 -1
- package/dist/chunks/environment-Bxbnw4pd.js +0 -544
- package/dist/chunks/environment-Bxbnw4pd.js.map +0 -1
- package/dist/chunks/environment-Dm66zOML.js +0 -4
- package/dist/chunks/environment-Dm66zOML.js.map +0 -1
- package/dist/chunks/formatting-C0riPC5_.js +0 -95
- package/dist/chunks/formatting-C0riPC5_.js.map +0 -1
- package/dist/chunks/formatting-DNCAV66-.js +0 -2
- package/dist/chunks/formatting-DNCAV66-.js.map +0 -1
- package/dist/cli/CommandProcessor.js +0 -184
- package/dist/cli/commands/ConfigCommand.js +0 -88
- package/dist/cli/commands/ExportCommand.js +0 -243
- package/dist/cli/commands/HistoryCommand.d.ts +0 -50
- package/dist/cli/commands/HistoryCommand.d.ts.map +0 -1
- package/dist/cli/commands/HistoryCommand.js +0 -96
- package/dist/cli/commands/StatusCommand.d.ts +0 -33
- package/dist/cli/commands/StatusCommand.d.ts.map +0 -1
- package/dist/cli/commands/StatusCommand.js +0 -93
- package/dist/cli/commands/ThemeCommand.js +0 -79
- package/dist/cli/help.js +0 -118
- package/dist/cli/index.js +0 -46
- package/dist/constants.js +0 -159
- package/dist/example.d.ts +0 -18
- package/dist/example.d.ts.map +0 -1
- package/dist/example.js +0 -154
- package/dist/exports-module.d.ts +0 -203
- package/dist/exports-module.d.ts.map +0 -1
- package/dist/exports-module.js +0 -260
- package/dist/exports.cjs +0 -2
- package/dist/exports.cjs.map +0 -1
- package/dist/exports.js +0 -238
- package/dist/exports.js.map +0 -1
- package/dist/handlers/AnalyticsLogHandler.d.ts +0 -11
- package/dist/handlers/AnalyticsLogHandler.d.ts.map +0 -1
- package/dist/handlers/AnalyticsLogHandler.js +0 -19
- package/dist/handlers/ExportLogHandler.d.ts +0 -103
- package/dist/handlers/ExportLogHandler.d.ts.map +0 -1
- package/dist/handlers/ExportLogHandler.js +0 -516
- package/dist/handlers/FileLogHandler.d.ts +0 -36
- package/dist/handlers/FileLogHandler.d.ts.map +0 -1
- package/dist/handlers/FileLogHandler.js +0 -156
- package/dist/handlers/RemoteLogHandler.d.ts +0 -14
- package/dist/handlers/RemoteLogHandler.d.ts.map +0 -1
- package/dist/handlers/RemoteLogHandler.js +0 -37
- package/dist/handlers/index.d.ts +0 -8
- package/dist/handlers/index.d.ts.map +0 -1
- package/dist/handlers/index.js +0 -7
- package/dist/main.d.ts +0 -2
- package/dist/main.d.ts.map +0 -1
- package/dist/main.js +0 -139
- package/dist/styling/LogStyleBuilder.d.ts +0 -149
- package/dist/styling/LogStyleBuilder.d.ts.map +0 -1
- package/dist/styling/LogStyleBuilder.js +0 -289
- package/dist/styling/SemanticStyles.d.ts +0 -181
- package/dist/styling/SemanticStyles.d.ts.map +0 -1
- package/dist/styling/SemanticStyles.js +0 -339
- package/dist/styling/SmartPresets.js +0 -276
- package/dist/styling/StyleBuilder.js +0 -280
- package/dist/styling/banners.js +0 -155
- package/dist/styling/index.js +0 -9
- package/dist/styling/themes.js +0 -231
- package/dist/styling-module.d.ts +0 -185
- package/dist/styling-module.d.ts.map +0 -1
- package/dist/styling-module.js +0 -199
- package/dist/styling.cjs +0 -2
- package/dist/styling.cjs.map +0 -1
- package/dist/styling.js +0 -146
- package/dist/styling.js.map +0 -1
- package/dist/types/Logger.d.ts +0 -700
- package/dist/types/Logger.d.ts.map +0 -1
- package/dist/types/ScopedLogger.d.ts +0 -310
- package/dist/types/ScopedLogger.d.ts.map +0 -1
- package/dist/types/cli/CommandProcessor.d.ts +0 -100
- package/dist/types/cli/CommandProcessor.d.ts.map +0 -1
- package/dist/types/cli/commands/ConfigCommand.d.ts +0 -14
- package/dist/types/cli/commands/ConfigCommand.d.ts.map +0 -1
- package/dist/types/cli/commands/ExportCommand.d.ts +0 -48
- package/dist/types/cli/commands/ExportCommand.d.ts.map +0 -1
- package/dist/types/cli/commands/HistoryCommand.d.ts +0 -47
- package/dist/types/cli/commands/HistoryCommand.d.ts.map +0 -1
- package/dist/types/cli/commands/StatusCommand.d.ts +0 -30
- package/dist/types/cli/commands/StatusCommand.d.ts.map +0 -1
- package/dist/types/cli/commands/ThemeCommand.d.ts +0 -30
- package/dist/types/cli/commands/ThemeCommand.d.ts.map +0 -1
- package/dist/types/cli/help.d.ts +0 -12
- package/dist/types/cli/help.d.ts.map +0 -1
- package/dist/types/cli/index.d.ts +0 -15
- package/dist/types/cli/index.d.ts.map +0 -1
- package/dist/types/constants.d.ts +0 -119
- package/dist/types/constants.d.ts.map +0 -1
- package/dist/types/core.js +0 -28
- package/dist/types/example.d.ts +0 -18
- package/dist/types/example.d.ts.map +0 -1
- package/dist/types/exports-module.d.ts +0 -196
- package/dist/types/exports-module.d.ts.map +0 -1
- package/dist/types/handlers/AnalyticsLogHandler.d.ts +0 -8
- package/dist/types/handlers/AnalyticsLogHandler.d.ts.map +0 -1
- package/dist/types/handlers/ExportLogHandler.d.ts +0 -100
- package/dist/types/handlers/ExportLogHandler.d.ts.map +0 -1
- package/dist/types/handlers/FileLogHandler.d.ts +0 -33
- package/dist/types/handlers/FileLogHandler.d.ts.map +0 -1
- package/dist/types/handlers/RemoteLogHandler.d.ts +0 -11
- package/dist/types/handlers/RemoteLogHandler.d.ts.map +0 -1
- package/dist/types/handlers/index.d.ts +0 -8
- package/dist/types/handlers/index.d.ts.map +0 -1
- package/dist/types/handlers.js +0 -4
- package/dist/types/index.js +0 -4
- package/dist/types/main.d.ts +0 -2
- package/dist/types/main.d.ts.map +0 -1
- package/dist/types/styling/LogStyleBuilder.d.ts +0 -146
- package/dist/types/styling/LogStyleBuilder.d.ts.map +0 -1
- package/dist/types/styling/SemanticStyles.d.ts +0 -178
- package/dist/types/styling/SemanticStyles.d.ts.map +0 -1
- package/dist/types/styling/SmartPresets.d.ts +0 -22
- package/dist/types/styling/SmartPresets.d.ts.map +0 -1
- package/dist/types/styling/StyleBuilder.d.ts +0 -140
- package/dist/types/styling/StyleBuilder.d.ts.map +0 -1
- package/dist/types/styling/banners.d.ts +0 -42
- package/dist/types/styling/banners.d.ts.map +0 -1
- package/dist/types/styling/index.d.ts +0 -10
- package/dist/types/styling/index.d.ts.map +0 -1
- package/dist/types/styling/themes.d.ts +0 -7
- package/dist/types/styling/themes.d.ts.map +0 -1
- package/dist/types/styling-module.d.ts +0 -178
- package/dist/types/styling-module.d.ts.map +0 -1
- package/dist/types/types/core.d.ts +0 -221
- package/dist/types/types/core.d.ts.map +0 -1
- package/dist/types/types/handlers.d.ts +0 -85
- package/dist/types/types/handlers.d.ts.map +0 -1
- package/dist/types/types/index.d.ts +0 -7
- package/dist/types/types/index.d.ts.map +0 -1
- package/dist/types/utils/environment.d.ts +0 -47
- package/dist/types/utils/environment.d.ts.map +0 -1
- package/dist/types/utils/formatting.d.ts +0 -37
- package/dist/types/utils/formatting.d.ts.map +0 -1
- package/dist/types/utils/index.d.ts +0 -7
- package/dist/types/utils/index.d.ts.map +0 -1
- package/dist/types/utils/opentui-detection.d.ts +0 -34
- package/dist/types/utils/opentui-detection.d.ts.map +0 -1
- package/dist/types/utils/output.d.ts +0 -41
- package/dist/types/utils/output.d.ts.map +0 -1
- package/dist/types/utils/stackTrace.d.ts +0 -6
- package/dist/types/utils/stackTrace.d.ts.map +0 -1
- package/dist/types/utils/timestamps.d.ts +0 -20
- package/dist/types/utils/timestamps.d.ts.map +0 -1
- package/dist/utils/environment.d.ts +0 -47
- package/dist/utils/environment.d.ts.map +0 -1
- package/dist/utils/environment.js +0 -85
- package/dist/utils/formatting.js +0 -117
- package/dist/utils/index.js +0 -6
- package/dist/utils/opentui-detection.d.ts +0 -34
- package/dist/utils/opentui-detection.d.ts.map +0 -1
- package/dist/utils/opentui-detection.js +0 -116
- package/dist/utils/output.js +0 -150
- package/dist/utils/stackTrace.js +0 -81
- package/dist/utils/timestamps.js +0 -71
- package/dist/vite.svg +0 -1
- package/docs/API.md +0 -691
- package/docs/CORE.md +0 -264
- package/docs/DEVELOPMENT.md +0 -731
- package/docs/EXPORTS.md +0 -467
- package/docs/PACKAGES.md +0 -244
- package/docs/STYLING.md +0 -405
- package/docs/_config.yml +0 -36
- package/docs/index.md +0 -179
- package/examples/README.md +0 -208
- package/examples/basic-logging.js +0 -75
- package/examples/data-export.js +0 -234
- package/examples/package.json +0 -16
- package/examples/performance-timing.js +0 -170
- package/examples/simplified-api.js +0 -124
- package/examples/styling-themes.js +0 -207
- package/index.html +0 -358
- package/packages/core/package.json +0 -57
- package/packages/exports/package.json +0 -41
- package/packages/nodejs-opentui/README.md +0 -232
- package/packages/nodejs-opentui/package.json +0 -72
- package/packages/nodejs-opentui/src/LogRenderer.ts +0 -171
- package/packages/nodejs-opentui/src/OpenTUILogHandler.ts +0 -178
- package/packages/nodejs-opentui/src/components/LogBadge.tsx +0 -131
- package/packages/nodejs-opentui/src/index.ts +0 -133
- package/packages/nodejs-opentui/src/types.ts +0 -158
- package/packages/nodejs-opentui/tsconfig.json +0 -20
- package/packages/styling/package.json +0 -41
- package/project-utils/README.md +0 -172
- package/project-utils/auto-release-gemini.ts +0 -1193
- package/project-utils/auto-release-ui.ts +0 -1329
- package/project-utils/commit-generator.ts +0 -1385
- package/project-utils/commit-ui.ts +0 -264
- package/project-utils/git-utils.ts +0 -199
- package/project-utils/github-release-manager.ts +0 -466
- package/project-utils/project-config.ts +0 -260
- package/project-utils/prompt-templates.js +0 -345
- package/project-utils/prompt-templates.ts +0 -422
- package/project-utils/version-manager.ts +0 -1078
- package/public/vite.svg +0 -1
- package/src/Logger.ts +0 -1276
- package/src/ScopedLogger.ts +0 -454
- package/src/cli/CommandProcessor.ts +0 -248
- package/src/cli/commands/ConfigCommand.ts +0 -93
- package/src/cli/commands/ExportCommand.ts +0 -276
- package/src/cli/commands/HistoryCommand.ts +0 -117
- package/src/cli/commands/StatusCommand.ts +0 -112
- package/src/cli/commands/ThemeCommand.ts +0 -88
- package/src/cli/help.ts +0 -127
- package/src/cli/index.ts +0 -71
- package/src/constants.ts +0 -171
- package/src/core.ts +0 -393
- package/src/example.ts +0 -210
- package/src/exports-module.ts +0 -311
- package/src/handlers/AnalyticsLogHandler.ts +0 -22
- package/src/handlers/ExportLogHandler.ts +0 -609
- package/src/handlers/FileLogHandler.ts +0 -169
- package/src/handlers/RemoteLogHandler.ts +0 -42
- package/src/handlers/index.ts +0 -8
- package/src/index.ts +0 -209
- package/src/main.ts +0 -196
- package/src/style.css +0 -96
- package/src/styling/LogStyleBuilder.ts +0 -355
- package/src/styling/SemanticStyles.ts +0 -380
- package/src/styling/SmartPresets.ts +0 -288
- package/src/styling/StyleBuilder.ts +0 -319
- package/src/styling/banners.ts +0 -168
- package/src/styling/index.ts +0 -27
- package/src/styling/themes.ts +0 -235
- package/src/styling-module.ts +0 -244
- package/src/types/core.ts +0 -236
- package/src/types/handlers.ts +0 -95
- package/src/types/index.ts +0 -35
- package/src/typescript.svg +0 -1
- package/src/utils/environment.ts +0 -94
- package/src/utils/formatting.ts +0 -142
- package/src/utils/index.ts +0 -21
- package/src/utils/opentui-detection.ts +0 -138
- package/src/utils/output.ts +0 -185
- package/src/utils/stackTrace.ts +0 -95
- package/src/utils/timestamps.ts +0 -80
- package/src/vite-env.d.ts +0 -1
- package/test-core-browser.html +0 -237
- package/test-core-node.js +0 -63
- package/tests/test-conflict-resolution.ts +0 -391
- package/tests/validate-workflows.sh +0 -131
- package/tests/yaml-autofix.sh +0 -146
- package/tsconfig.json +0 -50
- package/vite.config.ts +0 -223
package/dist/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sources":["../src/core.ts"],"sourcesContent":["/**\n * @fileoverview Core Logger Module - Minimal logging without advanced features\n * @version 0.0.1\n * \n * This module provides the essential logging functionality without visual enhancements,\n * SVG support, or advanced styling. Perfect for lightweight applications or server-side usage.\n */\n\n// Core types\nimport type {\n LogLevel,\n Verbosity,\n LoggerConfig,\n ILogHandler,\n LogMetadata,\n TimerEntry\n} from './types/index.js';\n\n// Core utilities\nimport {\n parseStackTrace,\n formatTimestamp\n} from './utils/index.js';\n\n// Universal formatting and environment detection\nimport {\n createPlainOutput,\n getConsoleMethod,\n createLogEntry,\n formatTablePlain,\n safeSerialize\n} from './utils/formatting.js';\n\nimport {\n isBrowser,\n isNode,\n getRuntimeEnvironment,\n supportsColors,\n supportsCSSColors\n} from './utils/environment.js';\n\nimport { createStyledOutput } from './utils/output.js';\n\n// Constants\nimport { DEFAULT_CONFIG, LEVEL_STYLES } from './constants.js';\n\n/**\n * Minimal Logger class with core functionality only\n * \n * @example\n * ```typescript\n * import { CoreLogger } from '@mks2508/better-logger/core';\n * \n * const logger = new CoreLogger();\n * logger.info('Hello world');\n * logger.error('Something went wrong', error);\n * ```\n */\nexport class CoreLogger {\n private config: LoggerConfig;\n private scopedPrefix?: string;\n private handlers: ILogHandler[] = [];\n private timers: Map<string, TimerEntry> = new Map();\n private groupDepth: number = 0;\n\n /**\n * Creates a new CoreLogger instance\n * @param config - Optional configuration\n */\n constructor(config: Partial<LoggerConfig> = {}) {\n this.config = {\n ...DEFAULT_CONFIG,\n ...config,\n // Auto-configure based on environment\n enableColors: config.enableColors ?? (isBrowser ? true : false),\n enableTimestamps: config.enableTimestamps ?? true,\n enableStackTrace: config.enableStackTrace ?? false,\n autoDetectTheme: config.autoDetectTheme ?? true\n };\n }\n\n // ===== CONFIGURATION METHODS =====\n\n /**\n * Get current configuration\n */\n getConfig(): LoggerConfig {\n return { ...this.config };\n }\n\n /**\n * Sets the global prefix for all log messages\n */\n setGlobalPrefix(prefix: string): void {\n this.config.globalPrefix = prefix;\n }\n\n /**\n * Sets the verbosity level for filtering log output\n */\n setVerbosity(level: Verbosity): void {\n this.config.verbosity = level;\n }\n\n /**\n * Creates a scoped logger with a specific prefix\n */\n scope(prefix: string): CoreLogger {\n const scopedLogger = new CoreLogger(this.config);\n scopedLogger.scopedPrefix = prefix;\n scopedLogger.handlers = [...this.handlers];\n return scopedLogger;\n }\n\n /**\n * Adds a custom log handler for extensibility\n */\n addHandler(handler: ILogHandler): void {\n this.handlers.push(handler);\n }\n\n // ===== CORE LOGGING METHODS =====\n\n /**\n * Checks if a log level should be output based on current verbosity\n */\n private shouldLog(level: LogLevel): boolean {\n if (this.config.verbosity === 'silent') return false;\n const levels = { debug: 0, info: 1, warn: 2, error: 3, critical: 4 };\n return levels[level] >= levels[this.config.verbosity];\n }\n\n /**\n * Gets the effective prefix (global + scoped)\n */\n private getEffectivePrefix(): string | undefined {\n const parts = [this.config.globalPrefix, this.scopedPrefix].filter(Boolean);\n return parts.length > 0 ? parts.join(':') : undefined;\n }\n\n /**\n * Core logging method with universal formatting\n */\n private log(level: LogLevel, ...args: any[]): void {\n if (!this.shouldLog(level)) return;\n\n const prefix = this.getEffectivePrefix();\n const message = String(args[0] || '');\n const stackInfo = this.config.enableStackTrace ? parseStackTrace() : null;\n const consoleMethod = getConsoleMethod(level);\n \n // Choose formatting based on environment and configuration\n if (isBrowser && this.config.enableColors && supportsCSSColors()) {\n // Browser with CSS styling\n try {\n const [format, ...styles] = createStyledOutput(\n level,\n LEVEL_STYLES,\n prefix,\n message,\n stackInfo,\n this.config.autoDetectTheme\n );\n console[consoleMethod](format, ...styles, ...args.slice(1));\n } catch (error) {\n // Fallback to plain text if CSS fails\n const output = createPlainOutput(level, message, prefix, stackInfo);\n console[consoleMethod](output, ...args.slice(1));\n }\n } else {\n // Node.js or browser without colors - use plain text\n const groupIndent = ' '.repeat(this.groupDepth);\n const output = groupIndent + createPlainOutput(level, message, prefix, stackInfo);\n console[consoleMethod](output, ...args.slice(1));\n }\n\n // Call custom handlers with structured metadata\n const logEntry = createLogEntry(level, message, args, prefix, stackInfo);\n const metadata: LogMetadata = {\n timestamp: logEntry.timestamp,\n level,\n prefix,\n stackInfo: logEntry.location,\n };\n\n this.handlers.forEach(handler => {\n try {\n handler.handle(level, message, args, metadata);\n } catch (error) {\n console.error('Log handler failed:', error);\n }\n });\n }\n\n /**\n * Logs debug information (lowest priority)\n */\n debug(...args: any[]): void {\n this.log('debug', ...args);\n }\n\n /**\n * Logs informational messages\n */\n info(...args: any[]): void {\n this.log('info', ...args);\n }\n\n /**\n * Logs warning messages\n */\n warn(...args: any[]): void {\n this.log('warn', ...args);\n }\n\n /**\n * Logs error messages\n */\n error(...args: any[]): void {\n this.log('error', ...args);\n }\n\n /**\n * Logs critical errors (highest priority)\n */\n critical(...args: any[]): void {\n this.log('critical', ...args);\n }\n\n /**\n * Logs trace information (detailed debugging)\n */\n trace(...args: any[]): void {\n this.log('debug', ...args);\n if (this.shouldLog('debug')) {\n console.trace(...args);\n }\n }\n\n // ===== BASIC ADVANCED FEATURES =====\n\n /**\n * Displays data in a table format\n */\n table(data: any, columns?: string[]): void {\n if (!this.shouldLog('info')) return;\n\n const prefix = this.getEffectivePrefix();\n const tableHeader = `[TABLE]${prefix ? ` [${prefix}]` : ''}:`;\n \n if (isBrowser && typeof console.table === 'function') {\n // Browser has native table support\n console.log(tableHeader);\n if (columns) {\n console.table(data, columns);\n } else {\n console.table(data);\n }\n } else {\n // Node.js or fallback - use plain text formatting\n console.log(tableHeader);\n const tableText = formatTablePlain(data, columns);\n console.log(tableText);\n }\n }\n\n /**\n * Starts a collapsible group in the console\n */\n group(label: string, collapsed: boolean = false): void {\n const prefix = this.getEffectivePrefix();\n const fullLabel = `${prefix ? `[${prefix}] ` : ''}${label}`;\n \n if (isBrowser && console.group && console.groupCollapsed) {\n // Browser supports native grouping\n if (collapsed) {\n console.groupCollapsed(fullLabel);\n } else {\n console.group(fullLabel);\n }\n } else {\n // Node.js fallback - just log the group label\n const groupStart = '┌─ ' + fullLabel;\n console.log(groupStart);\n }\n \n this.groupDepth++;\n }\n\n /**\n * Ends the current console group\n */\n groupEnd(): void {\n if (this.groupDepth > 0) {\n if (isBrowser && console.groupEnd) {\n console.groupEnd();\n } else {\n // Node.js fallback - log group end\n const groupEnd = '└─ (end group)';\n console.log(groupEnd);\n }\n this.groupDepth--;\n }\n }\n\n /**\n * Starts a timer with the given label\n */\n time(label: string): void {\n const startTime = this.getPerformanceNow();\n const timer: TimerEntry = {\n label,\n startTime,\n };\n this.timers.set(label, timer);\n \n const prefix = this.getEffectivePrefix();\n const message = `Timer started: ${label}`;\n const output = createPlainOutput('info', message, prefix);\n console.log(output);\n }\n\n /**\n * Ends a timer and logs the elapsed time\n */\n timeEnd(label: string): void {\n const timer = this.timers.get(label);\n if (!timer) {\n this.warn(`Timer '${label}' does not exist`);\n return;\n }\n\n const elapsed = this.getPerformanceNow() - timer.startTime;\n this.timers.delete(label);\n \n const prefix = this.getEffectivePrefix();\n const message = `Timer ended: ${label} - ${elapsed.toFixed(2)}ms`;\n const output = createPlainOutput('info', message, prefix);\n console.log(output);\n }\n\n /**\n * Gets performance.now() or fallback for older environments\n */\n private getPerformanceNow(): number {\n if (typeof performance !== 'undefined' && performance.now) {\n return performance.now();\n }\n \n if (isNode && process.hrtime) {\n // Node.js high-resolution time\n const [seconds, nanoseconds] = process.hrtime();\n return seconds * 1000 + nanoseconds / 1000000;\n }\n \n // Fallback to Date.now()\n return Date.now();\n }\n}\n\n// Create and export singleton instance for convenience\nconst coreLogger = new CoreLogger();\n\n/**\n * Export individual methods for convenience (with proper binding)\n */\nexport const debug = (...args: any[]) => coreLogger.debug(...args);\nexport const info = (...args: any[]) => coreLogger.info(...args);\nexport const warn = (...args: any[]) => coreLogger.warn(...args);\nexport const error = (...args: any[]) => coreLogger.error(...args);\nexport const critical = (...args: any[]) => coreLogger.critical(...args);\nexport const trace = (...args: any[]) => coreLogger.trace(...args);\nexport const table = (data: any, columns?: string[]) => coreLogger.table(data, columns);\nexport const group = (label: string, collapsed?: boolean) => coreLogger.group(label, collapsed);\nexport const groupEnd = () => coreLogger.groupEnd();\nexport const time = (label: string) => coreLogger.time(label);\nexport const timeEnd = (label: string) => coreLogger.timeEnd(label);\nexport const setGlobalPrefix = (prefix: string) => coreLogger.setGlobalPrefix(prefix);\nexport const scope = (prefix: string) => coreLogger.scope(prefix);\nexport const setVerbosity = (level: Verbosity) => coreLogger.setVerbosity(level);\nexport const addHandler = (handler: ILogHandler) => coreLogger.addHandler(handler);\n\n// Export the singleton as default\nexport default coreLogger;\n\n// Re-export core types\nexport type {\n LogLevel,\n Verbosity,\n LoggerConfig,\n ILogHandler,\n LogMetadata\n} from './types/index.js';"],"names":["error","groupEnd"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core.js","names":[],"sources":["../src/core.ts"],"sourcesContent":["/**\n * @fileoverview Módulo Core Logger — logging minimal sin features avanzadas\n *\n * Provee la funcionalidad esencial de logging sin mejoras visuales,\n * soporte SVG ni styling avanzado. Adecuado para apps ligeras o uso server-side.\n */\n\n// Tipos core\nimport type {\n LogLevel,\n Verbosity,\n LoggerConfig,\n ILogHandler,\n LogMetadata,\n TimerEntry\n} from './types/index.js';\n\n// Utilidades core\nimport {\n parseStackTrace,\n formatTimestamp\n} from './utils/index.js';\n\n// Formato universal y detección de entorno\nimport {\n createPlainOutput,\n getConsoleMethod,\n createLogEntry,\n formatTablePlain,\n safeSerialize,\n type OutputFormat\n} from './utils/formatting.js';\n\nimport {\n isBrowser,\n isNode\n} from './utils/environment-detector.js';\n\nimport { createStyledOutput } from './utils/output.js';\n\n// Constantes\nimport { DEFAULT_CONFIG, LEVEL_STYLES } from './constants.js';\nimport { LOG_LEVELS } from './types/core.js';\n\n/**\n * Logger minimal con solo la funcionalidad core.\n *\n * @example\n * ```typescript\n * import { CoreLogger } from '@mks2508/better-logger/core';\n *\n * const logger = new CoreLogger();\n * logger.info('Hello world');\n * logger.error('Something went wrong', error);\n * ```\n */\nexport class CoreLogger {\n private config: LoggerConfig;\n private scopedPrefix?: string;\n private handlers: ILogHandler[] = [];\n private timers: Map<string, TimerEntry> = new Map();\n private groupDepth: number = 0;\n\n /**\n * Crea una nueva instancia de CoreLogger.\n * @param config - Configuración opcional.\n */\n constructor(config: Partial<LoggerConfig> = {}) {\n this.config = {\n ...DEFAULT_CONFIG,\n ...config,\n // Auto-configurar según entorno\n enableColors: config.enableColors ?? (isBrowser ? true : false),\n enableTimestamps: config.enableTimestamps ?? true,\n enableStackTrace: config.enableStackTrace ?? false,\n autoDetectTheme: config.autoDetectTheme ?? true,\n outputFormat: config.outputFormat ?? 'auto'\n };\n }\n\n // ===== MÉTODOS DE CONFIGURACIÓN =====\n\n /**\n * Obtiene la configuración actual.\n */\n getConfig(): LoggerConfig {\n return { ...this.config };\n }\n\n /**\n * Define el prefijo global para todos los mensajes de log.\n * @param prefix - Prefijo a aplicar a todos los mensajes.\n */\n setGlobalPrefix(prefix: string): void {\n this.config.globalPrefix = prefix;\n }\n\n /**\n * Define el nivel de verbosity para filtrar la salida de log.\n * @param level - Nivel de verbosity.\n */\n setVerbosity(level: Verbosity): void {\n this.config.verbosity = level;\n }\n\n /**\n * Crea un logger con scope y un prefijo específico.\n * @param prefix - Prefijo del scope.\n * @returns Nueva instancia de CoreLogger con el prefijo asignado.\n */\n scope(prefix: string): CoreLogger {\n const scopedLogger = new CoreLogger(this.config);\n scopedLogger.scopedPrefix = prefix;\n scopedLogger.handlers = [...this.handlers];\n return scopedLogger;\n }\n\n /**\n * Añade un handler personalizado para extensibilidad.\n * @param handler - Handler que implementa la interfaz ILogHandler.\n */\n addHandler(handler: ILogHandler): void {\n this.handlers.push(handler);\n }\n\n // ===== MÉTODOS CORE DE LOGGING =====\n\n /**\n * Comprueba si un nivel debe emitirse según el verbosity actual.\n * @param level - Nivel a evaluar.\n * @returns `true` si el nivel debe emitirse.\n */\n private shouldLog(level: LogLevel): boolean {\n if (this.config.verbosity === 'silent') return false;\n const verbosity = this.config.verbosity as LogLevel;\n return LOG_LEVELS[level] >= LOG_LEVELS[verbosity];\n }\n\n /**\n * Obtiene el prefijo efectivo (global + scope).\n * @returns Prefijo combinado o `undefined` si no hay ninguno.\n */\n private getEffectivePrefix(): string | undefined {\n const parts = [this.config.globalPrefix, this.scopedPrefix].filter(Boolean);\n return parts.length > 0 ? parts.join(':') : undefined;\n }\n\n /**\n * Método principal de log con formato universal.\n * @param level - Nivel del mensaje.\n * @param args - Argumentos del mensaje.\n */\n private log(level: LogLevel, ...args: unknown[]): void {\n if (!this.shouldLog(level)) return;\n\n const prefix = this.getEffectivePrefix();\n const message = String(args[0] || '');\n const stackInfo = this.config.enableStackTrace ? parseStackTrace() : null;\n const consoleMethod = getConsoleMethod(level);\n\n // Elegir formato según entorno y configuración\n if (isBrowser && this.config.enableColors) {\n // Browser con styling CSS\n try {\n const [format, ...styles] = createStyledOutput(\n level,\n LEVEL_STYLES,\n prefix,\n message,\n stackInfo,\n this.config.autoDetectTheme\n );\n console[consoleMethod](format, ...styles, ...args.slice(1));\n } catch (error) {\n // Fallback a formato plano si falla el CSS\n const output = createPlainOutput(level, message, prefix, stackInfo);\n console[consoleMethod](output, ...args.slice(1));\n }\n } else {\n // Node.js o browser sin colores: formato plano\n const groupIndent = ' '.repeat(this.groupDepth);\n const output = groupIndent + createPlainOutput(level, message, prefix, stackInfo);\n console[consoleMethod](output, ...args.slice(1));\n }\n\n // Llama a los handlers con metadata estructurada\n const logEntry = createLogEntry(level, message, args, prefix, stackInfo);\n const metadata: LogMetadata = {\n timestamp: logEntry.timestamp,\n level,\n prefix,\n stackInfo: logEntry.location,\n };\n\n this.handlers.forEach(handler => {\n try {\n handler.handle(level, message, args, metadata);\n } catch (error) {\n console.error('Log handler failed:', error);\n }\n });\n }\n\n /**\n * Emite mensajes de debug (prioridad más baja).\n * @param args - Argumentos del mensaje.\n */\n debug(...args: unknown[]): void {\n this.log('debug', ...args);\n }\n\n /**\n * Emite mensajes informativos.\n * @param args - Argumentos del mensaje.\n */\n info(...args: unknown[]): void {\n this.log('info', ...args);\n }\n\n /**\n * Emite mensajes de advertencia.\n * @param args - Argumentos del mensaje.\n */\n warn(...args: unknown[]): void {\n this.log('warn', ...args);\n }\n\n /**\n * Emite mensajes de error.\n * @param args - Argumentos del mensaje.\n */\n error(...args: unknown[]): void {\n this.log('error', ...args);\n }\n\n /**\n * Emite errores críticos (prioridad más alta).\n * @param args - Argumentos del mensaje.\n */\n critical(...args: unknown[]): void {\n this.log('critical', ...args);\n }\n\n /**\n * Emite información de trace (debugging detallado).\n * @param args - Argumentos del mensaje.\n */\n trace(...args: unknown[]): void {\n this.log('debug', ...args);\n if (this.shouldLog('debug')) {\n console.trace(...args);\n }\n }\n\n // ===== FEATURES AVANZADAS BÁSICAS =====\n\n /**\n * Muestra datos en formato tabla.\n * @param data - Datos a mostrar.\n * @param columns - Columnas opcionales a incluir.\n */\n table(data: any, columns?: string[]): void {\n if (!this.shouldLog('info')) return;\n\n const prefix = this.getEffectivePrefix();\n const tableHeader = `[TABLE]${prefix ? ` [${prefix}]` : ''}:`;\n \n if (isBrowser && typeof console.table === 'function') {\n // Browser con soporte nativo de table\n console.log(tableHeader);\n if (columns) {\n console.table(data, columns);\n } else {\n console.table(data);\n }\n } else {\n // Node.js o fallback: formato de texto plano\n console.log(tableHeader);\n const tableText = formatTablePlain(data, columns);\n console.log(tableText);\n }\n }\n\n /**\n * Inicia un grupo colapsable en la console.\n * @param label - Etiqueta del grupo.\n * @param collapsed - Si el grupo inicia colapsado.\n */\n group(label: string, collapsed: boolean = false): void {\n const prefix = this.getEffectivePrefix();\n const fullLabel = `${prefix ? `[${prefix}] ` : ''}${label}`;\n \n if (isBrowser && console.group && console.groupCollapsed) {\n // Browser soporta grouping nativo\n if (collapsed) {\n console.groupCollapsed(fullLabel);\n } else {\n console.group(fullLabel);\n }\n } else {\n // Fallback Node.js: solo emite el label del grupo\n const groupStart = '┌─ ' + fullLabel;\n console.log(groupStart);\n }\n \n this.groupDepth++;\n }\n\n /**\n * Cierra el grupo actual de la console.\n */\n groupEnd(): void {\n if (this.groupDepth > 0) {\n if (isBrowser && console.groupEnd) {\n console.groupEnd();\n } else {\n // Fallback Node.js: emite el cierre del grupo\n const groupEnd = '└─ (end group)';\n console.log(groupEnd);\n }\n this.groupDepth--;\n }\n }\n\n /**\n * Inicia un timer con el label indicado.\n * @param label - Identificador del timer.\n */\n time(label: string): void {\n const startTime = this.getPerformanceNow();\n const timer: TimerEntry = {\n label,\n startTime,\n };\n this.timers.set(label, timer);\n \n const prefix = this.getEffectivePrefix();\n const message = `Timer started: ${label}`;\n const output = createPlainOutput('info', message, prefix);\n console.log(output);\n }\n\n /**\n * Detiene un timer y emite el tiempo transcurrido.\n * @param label - Identificador del timer previamente iniciado.\n */\n timeEnd(label: string): void {\n const timer = this.timers.get(label);\n if (!timer) {\n this.warn(`Timer '${label}' does not exist`);\n return;\n }\n\n const elapsed = this.getPerformanceNow() - timer.startTime;\n this.timers.delete(label);\n \n const prefix = this.getEffectivePrefix();\n const message = `Timer ended: ${label} - ${elapsed.toFixed(2)}ms`;\n const output = createPlainOutput('info', message, prefix);\n console.log(output);\n }\n\n /**\n * Obtiene `performance.now()` o un fallback para entornos antiguos.\n * @returns Timestamp en milisegundos.\n */\n private getPerformanceNow(): number {\n if (typeof performance !== 'undefined' && performance.now) {\n return performance.now();\n }\n \n if (isNode && process.hrtime) {\n // Node.js high-resolution time\n const [seconds, nanoseconds] = process.hrtime();\n return seconds * 1000 + nanoseconds / 1000000;\n }\n \n // Fallback a Date.now()\n return Date.now();\n }\n}\n\n// Crea y exporta una instancia singleton por conveniencia\nconst coreLogger = new CoreLogger();\n\n/**\n * Exporta métodos individuales por conveniencia (con binding correcto).\n */\nexport const debug = (...args: any[]) => coreLogger.debug(...args);\nexport const info = (...args: any[]) => coreLogger.info(...args);\nexport const warn = (...args: any[]) => coreLogger.warn(...args);\nexport const error = (...args: any[]) => coreLogger.error(...args);\nexport const critical = (...args: any[]) => coreLogger.critical(...args);\nexport const trace = (...args: any[]) => coreLogger.trace(...args);\nexport const table = (data: any, columns?: string[]) => coreLogger.table(data, columns);\nexport const group = (label: string, collapsed?: boolean) => coreLogger.group(label, collapsed);\nexport const groupEnd = () => coreLogger.groupEnd();\nexport const time = (label: string) => coreLogger.time(label);\nexport const timeEnd = (label: string) => coreLogger.timeEnd(label);\nexport const setGlobalPrefix = (prefix: string) => coreLogger.setGlobalPrefix(prefix);\nexport const scope = (prefix: string) => coreLogger.scope(prefix);\nexport const setVerbosity = (level: Verbosity) => coreLogger.setVerbosity(level);\nexport const addHandler = (handler: ILogHandler) => coreLogger.addHandler(handler);\n\n// Exporta el singleton como default\nexport default coreLogger;\n\n// Re-exporta tipos core\nexport type {\n LogLevel,\n Verbosity,\n LoggerConfig,\n ILogHandler,\n LogMetadata\n} from './types/index.js';"],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview HookBridge — facade de HookManager.
|
|
3
|
+
* Encapsula registro de hooks, middleware pipeline y emisión de eventos.
|
|
4
|
+
*
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
import type { HookEvent, HookCallback, MiddlewareFn } from '../types/index.js';
|
|
8
|
+
import { HookManager } from './index.js';
|
|
9
|
+
/**
|
|
10
|
+
* Bridge para la gestión de hooks y middleware.
|
|
11
|
+
*
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
export interface HookBridge {
|
|
15
|
+
/** Registra un hook para un evento. Devuelve función de unsubscribe. */
|
|
16
|
+
on(event: HookEvent, callback: HookCallback, priority?: number): () => void;
|
|
17
|
+
/** Registra un hook one-time. Devuelve función de unsubscribe. */
|
|
18
|
+
once(event: HookEvent, callback: HookCallback, priority?: number): () => void;
|
|
19
|
+
/** Elimina un hook registrado. Devuelve `true` si se eliminó. */
|
|
20
|
+
off(event: HookEvent, callback: HookCallback): boolean;
|
|
21
|
+
/** Añade middleware al pipeline. Devuelve función de unsubscribe. */
|
|
22
|
+
use(middleware: MiddlewareFn, priority?: number): () => void;
|
|
23
|
+
/** Devuelve el HookManager subyacente. */
|
|
24
|
+
getHookManager(): HookManager;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Crea una instancia de {@link HookBridge}.
|
|
28
|
+
*
|
|
29
|
+
* @internal
|
|
30
|
+
*/
|
|
31
|
+
export declare function createHookBridge(): HookBridge;
|
|
32
|
+
//# sourceMappingURL=HookBridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HookBridge.d.ts","sourceRoot":"","sources":["../../src/hooks/HookBridge.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACvB,wEAAwE;IACxE,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC;IAC5E,kEAAkE;IAClE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC;IAC9E,iEAAiE;IACjE,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC;IACvD,qEAAqE;IACrE,GAAG,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC;IAC7D,0CAA0C;IAC1C,cAAc,IAAI,WAAW,CAAC;CACjC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,UAAU,CAwB7C"}
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
import type { HookLogEntry, HookEvent, HookCallback, MiddlewareFn, IHookManager } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Implementación por defecto de {@link IHookManager} que orquesta el ciclo de
|
|
4
|
+
* vida de los hooks del logger: `beforeLog`, `afterLog` y `onError`.
|
|
5
|
+
*
|
|
6
|
+
* Permite:
|
|
7
|
+
* - Registrar callbacks por evento con **prioridad** (mayor número = se
|
|
8
|
+
* ejecuta primero; las registraciones se ordenan descendentemente).
|
|
9
|
+
* - Encadenar middlewares sobre el entry previo al dispatch.
|
|
10
|
+
* - Propagar mutaciones: cada hook puede retornar un partial de
|
|
11
|
+
* {@link HookLogEntry} que se mergea al entry actual antes del siguiente hook.
|
|
12
|
+
* - Acotar la recursión de `onError` con un guard de profundidad
|
|
13
|
+
* ({@link MAX_ONERROR_DEPTH}) para que un hook que lanza no loopée para
|
|
14
|
+
* siempre.
|
|
15
|
+
*
|
|
16
|
+
* El flujo típico lo orquesta el logger vía {@link process} (emite `beforeLog`
|
|
17
|
+
* + ejecuta middlewares) y {@link afterProcess} (emite `afterLog`).
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* const hooks = new HookManager();
|
|
22
|
+
*
|
|
23
|
+
* // Mayor prioridad => corre primero
|
|
24
|
+
* hooks.on('beforeLog', (entry) => {
|
|
25
|
+
* return { ...entry, attributes: { ...entry.attributes, traced: true } };
|
|
26
|
+
* }, 90);
|
|
27
|
+
*
|
|
28
|
+
* hooks.on('afterLog', (entry) => {
|
|
29
|
+
* metrics.increment('log_emitted', { level: entry.level });
|
|
30
|
+
* });
|
|
31
|
+
*
|
|
32
|
+
* hooks.on('onError', (entry) => {
|
|
33
|
+
* telemetry.capture(entry.error);
|
|
34
|
+
* });
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* // Middleware que añade timestamp si falta y delega al siguiente
|
|
40
|
+
* hooks.use(async (entry, next) => {
|
|
41
|
+
* if (!entry.time) entry.time = Date.now();
|
|
42
|
+
* await next();
|
|
43
|
+
* });
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* @see {@link IHookManager}
|
|
47
|
+
* @see {@link HookEvent}
|
|
48
|
+
*/
|
|
49
|
+
export declare class HookManager implements IHookManager {
|
|
50
|
+
private hooks;
|
|
51
|
+
private middlewares;
|
|
52
|
+
/**
|
|
53
|
+
* Lleva el conteo de la profundidad de recursión actual por cada evento de
|
|
54
|
+
* hook, para que las cadenas de `onError` que lanzan excepciones no puedan
|
|
55
|
+
* loopéar para siempre. Se resetea cuando el `emit` externo retorna.
|
|
56
|
+
*/
|
|
57
|
+
private _onErrorDepth;
|
|
58
|
+
constructor();
|
|
59
|
+
/**
|
|
60
|
+
* Registra un callback persistente para un evento. Se ejecuta en cada
|
|
61
|
+
* emisión hasta que se cancele con la función devuelta o con {@link off}.
|
|
62
|
+
*
|
|
63
|
+
* Los hooks se ordenan por `priority` **descendente**: mayor número =
|
|
64
|
+
* se ejecuta primero. Misma prioridad respeta el orden de registro.
|
|
65
|
+
*
|
|
66
|
+
* @param event - Uno de `'beforeLog' | 'afterLog' | 'onError'`.
|
|
67
|
+
* @param callback - Función asíncrona que recibe el {@link HookLogEntry}
|
|
68
|
+
* actual y puede retornar un partial para mutar el entry que verán los
|
|
69
|
+
* hooks siguientes.
|
|
70
|
+
* @param priority - Peso de ordenamiento. Default `50`. Mayor = primero.
|
|
71
|
+
* @returns {() => void} Función de cancelación; llamarla desregistra el hook.
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```ts
|
|
75
|
+
* const off = hooks.on('beforeLog', async (entry) => {
|
|
76
|
+
* return { attributes: { ...entry.attributes, requestId: getReqId() } };
|
|
77
|
+
* }, 80);
|
|
78
|
+
*
|
|
79
|
+
* // ...en shutdown:
|
|
80
|
+
* off();
|
|
81
|
+
* ```
|
|
82
|
+
*
|
|
83
|
+
* @see {@link once} para hooks de un solo disparo.
|
|
84
|
+
* @see {@link off} para desregistro por referencia de callback.
|
|
85
|
+
*/
|
|
86
|
+
on(event: HookEvent, callback: HookCallback, priority?: number): () => void;
|
|
87
|
+
/**
|
|
88
|
+
* Igual que {@link on}, pero el hook se auto-desregistra después del primer
|
|
89
|
+
* disparo exitoso. Útil para setup one-shot (warm-up de caché, captura del
|
|
90
|
+
* primer log, ...).
|
|
91
|
+
*
|
|
92
|
+
* Si el callback lanza, el hook NO se elimina (la excepción se deriva a
|
|
93
|
+
* `onError`); la limpieza solo ocurre cuando el callback retorna sin Throw.
|
|
94
|
+
*
|
|
95
|
+
* @param event - Evento a escuchar.
|
|
96
|
+
* @param callback - Handler que se ejecutará una sola vez.
|
|
97
|
+
* @param priority - Peso de ordenamiento (mayor = primero). Default `50`.
|
|
98
|
+
* @returns {() => void} Cancelación manual por si se quiere retirar antes
|
|
99
|
+
* del primer disparo.
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```ts
|
|
103
|
+
* hooks.once('afterLog', async (entry) => {
|
|
104
|
+
* console.log('Primer log emitido:', entry.msg);
|
|
105
|
+
* });
|
|
106
|
+
* ```
|
|
107
|
+
*
|
|
108
|
+
* @see {@link on}
|
|
109
|
+
*/
|
|
110
|
+
once(event: HookEvent, callback: HookCallback, priority?: number): () => void;
|
|
111
|
+
/**
|
|
112
|
+
* Desregistra un hook por referencia de callback. Solo elimina la primera
|
|
113
|
+
* coincidencia encontrada para el evento.
|
|
114
|
+
*
|
|
115
|
+
* Para hooks registrados con {@link on} o {@link once} es preferible usar
|
|
116
|
+
* la función de cancelación devuelta (que usa el id interno y es O(n) más
|
|
117
|
+
* directa). `off` es útil cuando se perdió la referencia al cancelador o
|
|
118
|
+
* cuando se integra con APIs que piden un método `removeListener(cb)`.
|
|
119
|
+
*
|
|
120
|
+
* @param event - Evento del que se quiere desregistrar.
|
|
121
|
+
* @param callback - Misma referencia de función pasada a {@link on}/{@link once}.
|
|
122
|
+
* @returns {boolean} `true` si se eliminó un hook, `false` si no había match.
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```ts
|
|
126
|
+
* const handler = async (entry) => { /* ... *\/ };
|
|
127
|
+
* hooks.on('afterLog', handler);
|
|
128
|
+
* hooks.off('afterLog', handler); // true
|
|
129
|
+
* ```
|
|
130
|
+
*
|
|
131
|
+
* @see {@link on}
|
|
132
|
+
*/
|
|
133
|
+
off(event: HookEvent, callback: HookCallback): boolean;
|
|
134
|
+
private removeHook;
|
|
135
|
+
/**
|
|
136
|
+
* Registra un middleware que se encadena sobre el {@link HookLogEntry}
|
|
137
|
+
* **antes** de que se emita el log al resto del pipeline. Los middlewares
|
|
138
|
+
* corren después del evento `beforeLog` y se ejecutan en cascada vía `next()`.
|
|
139
|
+
*
|
|
140
|
+
* Cada middleware recibe `(entry, next)` y debe llamar a `next()` para
|
|
141
|
+
* ceder el control al siguiente. Si NO llama a `next()`, corta la cadena
|
|
142
|
+
* (patrón short-circuit).
|
|
143
|
+
*
|
|
144
|
+
* Ordenamiento: `priority` descendente (mayor = primero), igual que los
|
|
145
|
+
* hooks. La secuencia respetada es la del sort, no la del orden de
|
|
146
|
+
* llamada a `use`.
|
|
147
|
+
*
|
|
148
|
+
* @param middleware - Función `(entry, next) => Promise<void>`.
|
|
149
|
+
* @param priority - Peso de ordenamiento. Default `50`.
|
|
150
|
+
* @returns {() => void} Función de cancelación para retirar el middleware.
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* ```ts
|
|
154
|
+
* // PII redaction: enmascara passwords antes de loguear
|
|
155
|
+
* hooks.use(async (entry, next) => {
|
|
156
|
+
* if (entry.attributes?.password) {
|
|
157
|
+
* entry.attributes.password = '***';
|
|
158
|
+
* }
|
|
159
|
+
* await next();
|
|
160
|
+
* }, 90);
|
|
161
|
+
*
|
|
162
|
+
* // Short-circuit: si es level=debug y env=prod, no baja
|
|
163
|
+
* const stop = hooks.use(async (entry, next) => {
|
|
164
|
+
* if (entry.level === 'debug' && ENV === 'production') return;
|
|
165
|
+
* await next();
|
|
166
|
+
* }, 100);
|
|
167
|
+
* ```
|
|
168
|
+
*
|
|
169
|
+
* @see {@link process} para el orquestador que ejecuta la cadena.
|
|
170
|
+
*/
|
|
171
|
+
use(middleware: MiddlewareFn, priority?: number): () => void;
|
|
172
|
+
/**
|
|
173
|
+
* Emite un evento a todos sus hooks registrados, en orden de prioridad, y
|
|
174
|
+
* retorna el entry resultante tras aplicar todos los mutations.
|
|
175
|
+
*
|
|
176
|
+
* Cada hook puede retornar un partial de {@link HookLogEntry}; ese partial
|
|
177
|
+
* se mergea sobre el entry actual antes de invocar al siguiente hook, así
|
|
178
|
+
* los hooks se encadenan como una pipeline de transformaciones.
|
|
179
|
+
*
|
|
180
|
+
* Manejo de errores:
|
|
181
|
+
* - Si un hook de `beforeLog`/`afterLog` lanza, la excepción se captura y
|
|
182
|
+
* se re-emite como evento `onError` con el campo `error` poblado.
|
|
183
|
+
* - Si un hook de `onError` lanza, **NO** se re-emite (rompería el ciclo);
|
|
184
|
+
* se loguea a `console.error` y se traga.
|
|
185
|
+
* - Guard de reentrancia: si `onError` se re-entra más de
|
|
186
|
+
* {@link MAX_ONERROR_DEPTH} veces, se corta y se loguea el entry al
|
|
187
|
+
* console. Previene loops infinitos por errores en cascada.
|
|
188
|
+
*
|
|
189
|
+
* Los hooks marcados como `once` se eliminan tras un disparo exitoso.
|
|
190
|
+
*
|
|
191
|
+
* @param event - Evento a emitir.
|
|
192
|
+
* @param entry - Entry inicial; no se muta in-place (se clona por nivel).
|
|
193
|
+
* @returns {Promise<HookLogEntry>} Entry transformado tras todos los hooks.
|
|
194
|
+
*
|
|
195
|
+
* @example
|
|
196
|
+
* ```ts
|
|
197
|
+
* const enriched = await hooks.emit('beforeLog', rawEntry);
|
|
198
|
+
* // enriched.attributes puede traer merges de varios hooks
|
|
199
|
+
* ```
|
|
200
|
+
*
|
|
201
|
+
* @see {@link on}
|
|
202
|
+
* @see {@link once}
|
|
203
|
+
* @see {@link MAX_ONERROR_DEPTH}
|
|
204
|
+
*/
|
|
205
|
+
emit(event: HookEvent, entry: HookLogEntry): Promise<HookLogEntry>;
|
|
206
|
+
/**
|
|
207
|
+
* Orquesta el pipeline pre-emit de un log. Orden de ejecución:
|
|
208
|
+
*
|
|
209
|
+
* 1. Emite `beforeLog` (todos sus hooks corren en orden de prioridad y
|
|
210
|
+
* pueden mutar el entry vía return partial).
|
|
211
|
+
* 2. Si hay middlewares registrados ({@link use}), los ejecuta en cascada
|
|
212
|
+
* sobre el entry ya enriquecido por los hooks de `beforeLog`.
|
|
213
|
+
*
|
|
214
|
+
* Es el punto de entrada que el logger invoca **antes** de despachar el
|
|
215
|
+
* record a los transports. El entry devuelto es el que finalmente se loguea.
|
|
216
|
+
*
|
|
217
|
+
* No emite `afterLog`; para eso usar {@link afterProcess} una vez que el
|
|
218
|
+
* dispatch al transport haya terminado.
|
|
219
|
+
*
|
|
220
|
+
* @param entry - Entry crudo entrante al pipeline.
|
|
221
|
+
* @returns {Promise<HookLogEntry>} Entry final listo para mandar a transports.
|
|
222
|
+
*
|
|
223
|
+
* @example
|
|
224
|
+
* ```ts
|
|
225
|
+
* const processed = await hooks.process(rawEntry);
|
|
226
|
+
* await transport.write(processed);
|
|
227
|
+
* await hooks.afterProcess(processed);
|
|
228
|
+
* ```
|
|
229
|
+
*
|
|
230
|
+
* @see {@link afterProcess}
|
|
231
|
+
* @see {@link use}
|
|
232
|
+
*/
|
|
233
|
+
process(entry: HookLogEntry): Promise<HookLogEntry>;
|
|
234
|
+
/**
|
|
235
|
+
* Emite el evento `afterLog` con el entry ya procesado y dispatcheado a
|
|
236
|
+
* los transports. Pensado para side-effects post-log: métricas, audit
|
|
237
|
+
* trail, flush de buffers externos, etc.
|
|
238
|
+
*
|
|
239
|
+
* Los hooks de `afterLog` pueden retornar un partial pero el entry ya se
|
|
240
|
+
* ha publicado, así que la mutación no tiene efecto sobre el log emitido;
|
|
241
|
+
* solo queda disponible en el return de {@link emit}, que aquí se descarta.
|
|
242
|
+
*
|
|
243
|
+
* @param entry - Entry final (mismo objeto devuelto por {@link process}).
|
|
244
|
+
* @returns {Promise<void>} Resuelve cuando todos los hooks terminaron.
|
|
245
|
+
*
|
|
246
|
+
* @example
|
|
247
|
+
* ```ts
|
|
248
|
+
* hooks.on('afterLog', async (entry) => {
|
|
249
|
+
* metrics.increment('logs_total', { level: entry.level });
|
|
250
|
+
* });
|
|
251
|
+
*
|
|
252
|
+
* const processed = await hooks.process(rawEntry);
|
|
253
|
+
* await transport.write(processed);
|
|
254
|
+
* await hooks.afterProcess(processed); // dispara métricas
|
|
255
|
+
* ```
|
|
256
|
+
*
|
|
257
|
+
* @see {@link process}
|
|
258
|
+
*/
|
|
259
|
+
afterProcess(entry: HookLogEntry): Promise<void>;
|
|
260
|
+
/**
|
|
261
|
+
* Vacía todos los hooks y middlewares registrados. Útil para resetear el
|
|
262
|
+
* estado entre tests o en hot-reload.
|
|
263
|
+
*
|
|
264
|
+
* Afecta a los tres eventos (`beforeLog`, `afterLog`, `onError`) y a la
|
|
265
|
+
* pila de middlewares. Las funciones de cancelación devueltas por
|
|
266
|
+
* {@link on}/{@link once}/{@link use} se vuelven no-ops pero pueden
|
|
267
|
+
* llamarse sin error.
|
|
268
|
+
*
|
|
269
|
+
* @example
|
|
270
|
+
* ```ts
|
|
271
|
+
* afterEach(() => hooks.clear());
|
|
272
|
+
* ```
|
|
273
|
+
*/
|
|
274
|
+
clear(): void;
|
|
275
|
+
/**
|
|
276
|
+
* Snapshot del estado interno para observabilidad y debugging.
|
|
277
|
+
*
|
|
278
|
+
* @returns {Object} stats
|
|
279
|
+
* @returns {Record<HookEvent, number>} stats.hooks - Conteo de hooks
|
|
280
|
+
* registrados por evento (`beforeLog`, `afterLog`, `onError`).
|
|
281
|
+
* @returns {number} stats.middlewares - Total de middlewares activos.
|
|
282
|
+
*
|
|
283
|
+
* @example
|
|
284
|
+
* ```ts
|
|
285
|
+
* const stats = hooks.getStats();
|
|
286
|
+
* // { hooks: { beforeLog: 2, afterLog: 1, onError: 3 }, middlewares: 1 }
|
|
287
|
+
* if (stats.hooks.onError === 0) {
|
|
288
|
+
* console.warn('Sin handlers onError registrados');
|
|
289
|
+
* }
|
|
290
|
+
* ```
|
|
291
|
+
*/
|
|
292
|
+
getStats(): {
|
|
293
|
+
hooks: Record<HookEvent, number>;
|
|
294
|
+
middlewares: number;
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Devuelve la instancia singleton de {@link HookManager} compartida por todo
|
|
299
|
+
* el proceso. La crea perezosamente en la primera llamada.
|
|
300
|
+
*
|
|
301
|
+
* Pensada como hook manager por defecto del logger; los consumidores que
|
|
302
|
+
* necesiten aislamiento (tests, múltiples loggers con pipelines distintos)
|
|
303
|
+
* deben instanciar su propio `new HookManager()` en lugar de usar este shared.
|
|
304
|
+
*
|
|
305
|
+
* @returns {HookManager} La instancia singleton.
|
|
306
|
+
*
|
|
307
|
+
* @example
|
|
308
|
+
* ```ts
|
|
309
|
+
* import { getDefaultHookManager } from '@mks2508/better-logger/hooks';
|
|
310
|
+
*
|
|
311
|
+
* getDefaultHookManager().on('onError', async (entry) => {
|
|
312
|
+
* telemetry.capture(entry.error);
|
|
313
|
+
* });
|
|
314
|
+
* ```
|
|
315
|
+
*
|
|
316
|
+
* @see {@link HookManager}
|
|
317
|
+
*/
|
|
318
|
+
export declare function getDefaultHookManager(): HookManager;
|
|
319
|
+
//# sourceMappingURL=HookManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HookManager.d.ts","sourceRoot":"","sources":["../../src/hooks/HookManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,YAAY,EAGZ,YAAY,EACf,MAAM,mBAAmB,CAAC;AA2B3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,qBAAa,WAAY,YAAW,YAAY;IAC5C,OAAO,CAAC,KAAK,CAAiD;IAC9D,OAAO,CAAC,WAAW,CAAgC;IACnD;;;;OAIG;IACH,OAAO,CAAC,aAAa,CAAqC;;IAQ1D;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,GAAE,MAAW,GAAG,MAAM,IAAI;IAgB/E;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,GAAE,MAAW,GAAG,MAAM,IAAI;IAgBjF;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO;IAYtD,OAAO,CAAC,UAAU;IAUlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,GAAG,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,GAAE,MAAW,GAAG,MAAM,IAAI;IAkBhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACG,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAmDxE;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACG,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAuBzD;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACG,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD;;;;;;;;;;;;;OAaG;IACH,KAAK,IAAI,IAAI;IAKb;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE;CAUxE;AAID;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,qBAAqB,IAAI,WAAW,CAKnD"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Hooks subpath barrel.
|
|
3
|
+
* Exports: HookManager, createHookBridge, HookBridge, on, once, off, use
|
|
4
|
+
*/
|
|
5
|
+
export { HookManager, getDefaultHookManager } from './HookManager.js';
|
|
6
|
+
export { createHookBridge, type HookBridge } from './HookBridge.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Entry point for ./hooks subpath.
|
|
3
|
+
* Hook manager: HookManager, createHookBridge, beforeLog, on, once, off, use.
|
|
4
|
+
*/
|
|
5
|
+
export { HookManager, getDefaultHookManager } from './hooks/index.js';
|
|
6
|
+
export { createHookBridge, type HookBridge } from './hooks/index.js';
|
|
7
|
+
//# sourceMappingURL=hooks-module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks-module.d.ts","sourceRoot":"","sources":["../src/hooks-module.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/hooks.cjs
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_HookBridge = require("./chunks/HookBridge-C-AvXmPD.cjs");
|
|
3
|
+
exports.HookManager = require_HookBridge.HookManager;
|
|
4
|
+
exports.createHookBridge = require_HookBridge.createHookBridge;
|
|
5
|
+
exports.getDefaultHookManager = require_HookBridge.getDefaultHookManager;
|
package/dist/hooks.js
ADDED