Comparing version 1.1.1 to 1.2.0
@@ -0,3 +1,3 @@ | ||
import { LoggerType, type ExtendedLogger } from "./internal.js"; | ||
import { type ExtendedDebugger } from '@-xun/debug'; | ||
import { LoggerType, type ExtendedLogger } from "./internal.js"; | ||
export { LoggerType, type ExtendedDebugger, type ExtendedLogger }; | ||
@@ -4,0 +4,0 @@ /** |
@@ -26,5 +26,5 @@ "use strict"; | ||
require("core-js/modules/esnext.iterator.for-each.js"); | ||
var _debug = require("@-xun/debug"); | ||
var _internal = require("./internal.js"); | ||
exports.LoggerType = _internal.LoggerType; | ||
var _debug = require("@-xun/debug"); | ||
const consoleLog = (...args) => { | ||
@@ -47,5 +47,7 @@ console.log(...args); | ||
}) { | ||
const debug = (0, _internal.withMetadataTracking)(_internal.LoggerType.DebugOnly, (0, _internal.withPatchedExtend)((0, _debug.debugFactory)(namespace))); | ||
debug.log = consoleError; | ||
return debug; | ||
const debug = (0, _internal.withPatchedExtend)((0, _debug.debugFactory)(namespace)); | ||
for (const instanceProperty of (0, _internal.get$instancesKeys)(debug)) { | ||
debug[_debug.$instances][instanceProperty].log = consoleError; | ||
} | ||
return (0, _internal.withMetadataTracking)(_internal.LoggerType.DebugOnly, debug); | ||
} | ||
@@ -52,0 +54,0 @@ function getLoggersByType({ |
@@ -1,2 +0,3 @@ | ||
import { type DebuggerExtension, type ExtendedDebugger, type InternalDebugger, type UnextendableInternalDebugger } from '@-xun/debug'; | ||
import { $instances, type DebuggerExtension, type ExtendedDebugger, type InternalDebugger, type UnextendableInternalDebugger } from '@-xun/debug'; | ||
export { $instances }; | ||
/** | ||
@@ -28,2 +29,6 @@ * Decorate a function `T` with an initial potentially-optional `tags` | ||
/** | ||
* These color codes are tough to see on my personal terminals. | ||
*/ | ||
export declare const ansiBannedColorCodes: number[]; | ||
/** | ||
* Keeps track of our various "logger" (i.e. debug) instances and their | ||
@@ -67,3 +72,8 @@ * associated metadata. Also keeps track of those tags for which we disable | ||
/** | ||
* Make rejoinder's internals aware of a new logger instance. | ||
* Make rejoinder's internals aware of a new logger instance and its | ||
* pre-extended sub-instances. | ||
* | ||
* **This function MUST be invoked, and ONLY AFTER `::log` and | ||
* {@link $instances} have been configured on `logger`!** This allows all of | ||
* rejoinder's global enable/disable functions to work. | ||
*/ | ||
@@ -74,2 +84,14 @@ export declare function withMetadataTracking(type: LoggerType.GenericOutput, logger: ExtendedLogger): ExtendedLogger; | ||
/** | ||
* Make rejoinder's internals forget a logger instance and its pre-extended | ||
* sub-instances. | ||
* | ||
* **This function MUST be invoked for descendant loggers, and ONLY AFTER | ||
* creating a new generic/debug `logger` that will be extended with additional | ||
* functionality but BEFORE passing that finalized `logger` to | ||
* {@link withMetadataTracking}!** This prevents memory leaks. | ||
*/ | ||
export declare function withoutMetadataTracking(type: LoggerType.GenericOutput, logger: ExtendedLogger): ExtendedLogger; | ||
export declare function withoutMetadataTracking(type: LoggerType.DebugOnly, logger: ExtendedDebugger): ExtendedDebugger; | ||
export declare function withoutMetadataTracking(type: Exclude<LoggerType, LoggerType.All>, logger: ExtendedDebugger | ExtendedLogger): ExtendedDebugger | ExtendedLogger; | ||
/** | ||
* Recursively patches {@link ExtendedDebugger.extend} so that all debugger | ||
@@ -80,2 +102,7 @@ * instances are properly tracked. | ||
/** | ||
* Returns all keys in an object's {@link $instances} property with proper | ||
* types. | ||
*/ | ||
export declare function get$instancesKeys<T extends Pick<ExtendedDebugger, typeof $instances>>(logger: T): (keyof (typeof logger)[typeof $instances])[]; | ||
/** | ||
* An enum representing the types of loggers classified by output target. | ||
@@ -137,5 +164,4 @@ */ | ||
*/ | ||
extend(...args: Parameters<ExtendedDebugger['extend']>): ExtendedLogger; | ||
extend: (...args: Parameters<ExtendedDebugger['extend']>) => ExtendedLogger; | ||
} | ||
type _ExtendedLogger<T> = Omit<ExtendedDebugger, keyof DebuggerExtension | 'newline' | 'extend'> & DebuggerExtension<UnextendableInternalLogger, T>; | ||
export {}; | ||
type _ExtendedLogger<T> = Omit<ExtendedDebugger, keyof DebuggerExtension | 'newline' | 'extend'> & DebuggerExtension<UnextendableInternalLogger, T>; |
@@ -6,4 +6,5 @@ "use strict"; | ||
}); | ||
exports.ansiYellowColorCodes = exports.ansiRedColorCodes = exports.LoggerType = void 0; | ||
exports.ansiYellowColorCodes = exports.ansiRedColorCodes = exports.ansiBannedColorCodes = exports.LoggerType = void 0; | ||
exports.decorateWithTagSupport = decorateWithTagSupport; | ||
exports.get$instancesKeys = get$instancesKeys; | ||
exports.makeExtendedLogger = makeExtendedLogger; | ||
@@ -14,2 +15,3 @@ exports.metadata = void 0; | ||
exports.withPatchedExtend = withPatchedExtend; | ||
exports.withoutMetadataTracking = withoutMetadataTracking; | ||
require("core-js/modules/es.array.push.js"); | ||
@@ -25,3 +27,2 @@ require("core-js/modules/es.set.difference.v2.js"); | ||
require("core-js/modules/esnext.iterator.filter.js"); | ||
require("core-js/modules/esnext.iterator.map.js"); | ||
require("core-js/modules/esnext.iterator.some.js"); | ||
@@ -31,6 +32,8 @@ var _nodeAssert = _interopRequireDefault(require("node:assert")); | ||
var _debug = require("@-xun/debug"); | ||
exports.$instances = _debug.$instances; | ||
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } | ||
const extendedLoggerFnPropsWeakMap = new WeakMap(); | ||
const ansiRedColorCodes = exports.ansiRedColorCodes = [1, 9, 52, 88, 124, 160, 196]; | ||
const ansiRedColorCodes = exports.ansiRedColorCodes = [1, 9, 88, 124, 160, 196]; | ||
const ansiYellowColorCodes = exports.ansiYellowColorCodes = [3, 11, 94, 136, 178, 214, 220]; | ||
const ansiBannedColorCodes = exports.ansiBannedColorCodes = [16, 17, 18, 19, 20, 21, 52, 53, 54, 55, 56, 57, 233, 234, 235, 236, 237, 238]; | ||
const metadata = exports.metadata = { | ||
@@ -42,4 +45,4 @@ logger: [], | ||
function resetInternalState() { | ||
metadata.debugger.length = 0; | ||
metadata.logger.length = 0; | ||
metadata.debugger = []; | ||
metadata.logger = []; | ||
metadata.denylist.clear(); | ||
@@ -54,2 +57,3 @@ } | ||
}, 1); | ||
const redefinedProperties = new Set(); | ||
const extendedLogger = new Proxy(extendedDebugger, { | ||
@@ -60,12 +64,15 @@ apply(_target, _this, args) { | ||
get(target, property, proxy) { | ||
if (property === 'extend') { | ||
return function (...args) { | ||
return withMetadataTracking(type, makeExtendedLogger(extendedDebugger.extend(...args), type, underlyingDefaultLogFn, underlyingAlternateLogFn)); | ||
}; | ||
if (!redefinedProperties.has(property)) { | ||
if (property === 'extend') { | ||
const realExtend = extendedDebugger.extend; | ||
return function (...args) { | ||
return withMetadataTracking(type, makeExtendedLogger(realExtend(...args), type, underlyingDefaultLogFn, underlyingAlternateLogFn)); | ||
}; | ||
} | ||
if (property === 'newline') { | ||
return function (...args) { | ||
baseNewlineFn(...args); | ||
}; | ||
} | ||
} | ||
if (property === 'newline') { | ||
return function (...args) { | ||
baseNewlineFn(...args); | ||
}; | ||
} | ||
const value = target[property]; | ||
@@ -87,2 +94,8 @@ if (typeof value === 'function') { | ||
} | ||
}, | ||
set(target, property_, updatedValue) { | ||
const property = property_; | ||
redefinedProperties.add(property); | ||
target[property] = updatedValue; | ||
return true; | ||
} | ||
@@ -99,3 +112,2 @@ }); | ||
instance.log = underlyingAlternateLogFn; | ||
instance.enabled = true; | ||
extendedLogger[_debug.$instances][key] = decorateWithTagSupport(instance, 2); | ||
@@ -113,3 +125,5 @@ } | ||
const oldAvailableColors = hiddenInternals.colors; | ||
hiddenInternals.colors = oldAvailableColors.filter(c => !ansiRedColorCodes.includes(c) && !ansiYellowColorCodes.includes(c)); | ||
hiddenInternals.colors = oldAvailableColors.filter(c => { | ||
return !ansiRedColorCodes.includes(c) && !ansiYellowColorCodes.includes(c) && !ansiBannedColorCodes.includes(c); | ||
}); | ||
try { | ||
@@ -139,8 +153,13 @@ const selectedColor = hiddenInternals.selectColor(extendedDebugger.namespace); | ||
function withMetadataTracking(type, logger) { | ||
metadata[type].push(logger, ..._debug.extendedDebuggerSubInstanceProperties.map(property => logger[property])); | ||
metadata[type].push(...Object.values(logger[_debug.$instances])); | ||
return logger; | ||
} | ||
function withoutMetadataTracking(type, logger) { | ||
const instancesToExclude = Object.values(logger[_debug.$instances]); | ||
metadata[type] = metadata[type].filter(instance => !instancesToExclude.includes(instance)); | ||
return logger; | ||
} | ||
function withPatchedExtend(instance) { | ||
const oldExtend = instance.extend.bind(instance); | ||
instance.extend = function (...args) { | ||
const oldExtend = instance.extend; | ||
instance.extend = (...args) => { | ||
return withMetadataTracking(LoggerType.DebugOnly, withPatchedExtend(oldExtend(...args))); | ||
@@ -150,2 +169,5 @@ }; | ||
} | ||
function get$instancesKeys(logger) { | ||
return Object.keys(logger[_debug.$instances]); | ||
} | ||
let LoggerType = exports.LoggerType = function (LoggerType) { | ||
@@ -152,0 +174,0 @@ LoggerType["All"] = "all"; |
{ | ||
"name": "rejoinder", | ||
"version": "1.1.1", | ||
"version": "1.2.0", | ||
"description": "A tiny library for creating gorgeous terminal output", | ||
@@ -76,4 +76,4 @@ "keywords": [ | ||
"list-tasks": "symbiote list-tasks --env NODE_NO_WARNINGS=1 --scope this-package", | ||
"prepare": "node pre-npm-install.mjs && symbiote project prepare --env NODE_NO_WARNINGS=1", | ||
"release": "symbiote release --env NODE_NO_WARNINGS=1 --no-parallel --skip-task 5", | ||
"prepare": "node cycle-breaker.mjs && symbiote project prepare --env NODE_NO_WARNINGS=1", | ||
"release": "symbiote release --env NODE_NO_WARNINGS=1 --no-parallel", | ||
"renovate": "symbiote project renovate --env NODE_NO_WARNINGS=1 --hush --github-reconfigure-repo --regenerate-assets --assets-preset 'lib'", | ||
@@ -86,7 +86,6 @@ "start": "symbiote start --env NODE_NO_WARNINGS=1 --", | ||
"test:package:unit": "symbiote test --env NODE_NO_WARNINGS=1 --tests unit", | ||
"test:packages:all": "symbiote test --env NODE_NO_WARNINGS=1 --scope unlimited --coverage", | ||
"turbo:init": "symbiote project init-turbo --env NODE_NO_WARNINGS=1 --not-multiversal" | ||
"test:packages:all": "symbiote test --env NODE_NO_WARNINGS=1 --scope unlimited --coverage" | ||
}, | ||
"dependencies": { | ||
"@-xun/debug": "^1.0.4", | ||
"@-xun/debug": "^1.1.0", | ||
"chalk": "^5.4.1", | ||
@@ -97,3 +96,5 @@ "core-js": "^3.40.0" | ||
"@-xun/debug~dev": "npm:@-xun/debug", | ||
"@-xun/symbiote": "^2.11.5", | ||
"@-xun/symbiote": "^2.11.9", | ||
"@semantic-release/exec": "^6.0.3", | ||
"rejoinder~dev": "npm:rejoinder", | ||
"type-fest": "^4.32.0" | ||
@@ -100,0 +101,0 @@ }, |
37767
574
5
Updated@-xun/debug@^1.1.0