🎉 init: 小龙的工作空间
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
/**
|
||||
* PR-C Deprecation Warning Utility
|
||||
* Provides `warnOnce(key, message)` — same key won't print twice.
|
||||
* Used by deprecation checks across all modules.
|
||||
*/
|
||||
|
||||
const _warned = new Set();
|
||||
|
||||
/**
|
||||
* Emit a deprecation warning once per process lifetime.
|
||||
* @param {string} key - unique key for this warning (e.g. "active-memory.blocking")
|
||||
* @param {string} message - human-readable message
|
||||
* @param {object} [opts]
|
||||
* @param {boolean} [opts.force] - if true, emit even if already warned
|
||||
* @returns {boolean} true if warning was emitted, false if skipped (duplicate)
|
||||
*/
|
||||
export function warnOnce(key, message, opts = {}) {
|
||||
if (!opts.force && _warned.has(key)) {
|
||||
return false;
|
||||
}
|
||||
_warned.add(key);
|
||||
console.warn(`[DEPRECATED][OpenClaw v2] ${key}: ${message}`);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset all warned keys (for testing).
|
||||
*/
|
||||
export function resetWarnings() {
|
||||
_warned.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get count of unique warnings emitted so far.
|
||||
*/
|
||||
export function getWarningCount() {
|
||||
return _warned.size;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all warned keys.
|
||||
*/
|
||||
export function getWarnedKeys() {
|
||||
return [..._warned];
|
||||
}
|
||||
|
||||
/**
|
||||
* Emit multiple deprecation warnings with deduplication.
|
||||
* @param {Array<{key: string, message: string}>} warnings
|
||||
*/
|
||||
export function warnMany(warnings) {
|
||||
const emitted = [];
|
||||
for (const w of warnings) {
|
||||
if (warnOnce(w.key, w.message)) {
|
||||
emitted.push(w);
|
||||
}
|
||||
}
|
||||
return emitted;
|
||||
}
|
||||
|
||||
/**
|
||||
* Run a deprecation check function and collect warnings.
|
||||
* @param {string} checkName - name of the check
|
||||
* @param {() => Array<{key:string, message:string}>} fn - check function
|
||||
* @returns {{ name: string, warnings: Array<{key:string, message:string}> }}
|
||||
*/
|
||||
export function runDeprecationCheck(checkName, fn) {
|
||||
try {
|
||||
const warnings = fn();
|
||||
return { name: checkName, warnings };
|
||||
} catch (e) {
|
||||
return { name: checkName, warnings: [{ key: checkName, message: `Check failed: ${e.message}` }] };
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user