Add test-options.js script for reporting global variables and content types
This commit is contained in:
46
config-sub-converter/scripts/test-options.js
Normal file
46
config-sub-converter/scripts/test-options.js
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
function safeStringify(obj) {
|
||||||
|
const seen = new WeakSet();
|
||||||
|
return JSON.stringify(
|
||||||
|
obj,
|
||||||
|
(k, v) => {
|
||||||
|
if (typeof v === "object" && v !== null) {
|
||||||
|
if (seen.has(v)) return "[Circular]";
|
||||||
|
seen.add(v);
|
||||||
|
}
|
||||||
|
if (typeof v === "function") return `[Function: ${v.name || "anonymous"}]`;
|
||||||
|
if (typeof v === "bigint") return v.toString();
|
||||||
|
return v;
|
||||||
|
},
|
||||||
|
2
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function globalKeysSample(limit = 200) {
|
||||||
|
try {
|
||||||
|
const keys = Object.getOwnPropertyNames(globalThis).sort();
|
||||||
|
return keys.slice(0, limit);
|
||||||
|
} catch {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const report = {
|
||||||
|
types: {
|
||||||
|
$content: typeof $content,
|
||||||
|
$files: typeof $files,
|
||||||
|
$options: typeof $options,
|
||||||
|
ProxyUtils: typeof ProxyUtils,
|
||||||
|
produceArtifact: typeof produceArtifact,
|
||||||
|
},
|
||||||
|
values: {
|
||||||
|
$contentPreview: (typeof $content === "string" ? $content.slice(0, 300) : $content),
|
||||||
|
$contentLength: (typeof $content === "string" ? $content.length : null),
|
||||||
|
$files: $files ?? null,
|
||||||
|
$options: $options ?? null,
|
||||||
|
},
|
||||||
|
globals: {
|
||||||
|
globalThisKeysSample: globalKeysSample(),
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
$content = safeStringify(report);
|
||||||
Reference in New Issue
Block a user