MCPcopy Index your code
hub / github.com/zxlie/FeHelper / format

Function format

apps/json-format/format-lib.js:1642–1746  ·  view source on GitHub ↗
(jsonStr, skin, escapeJsonString)

Source from the content-addressed store, hash-verified

1640 * 支持异步worker
1641 */
1642 let format = async function (jsonStr, skin, escapeJsonString) {
1643 _initElements();
1644
1645 // 设置转义功能标志
1646 if (escapeJsonString !== undefined) {
1647 escapeJsonStringEnabled = escapeJsonString;
1648 }
1649
1650 try {
1651 // 先验证JSON是否有效(使用与worker一致的BigInt安全解析)
1652 let parsedJson = _parseWithBigInt(jsonStr);
1653 // 使用replacer保证bigint与大数字不丢精度
1654 cachedJsonString = _safeStringify(parsedJson, 4);
1655 jfPre.html(htmlspecialchars(cachedJsonString));
1656 } catch (e) {
1657 console.error('JSON解析失败:', e);
1658 jfContent.html(`<div class="error">JSON解析失败: ${e.message}</div>`);
1659 return;
1660 }
1661
1662 try {
1663 // 获取Worker实例(异步)
1664 let worker = await _getWorkerInstance();
1665 if (worker) {
1666 // 设置错误处理,如果Worker因为CSP等原因失败,回退到同步模式
1667 let workerErrorHandler = function(e) {
1668 // 静默处理,不输出日志
1669 cspRestricted = true; // 标记为CSP受限,避免重复尝试
1670 workerInstance = null;
1671 formatSync(jsonStr, skin, escapeJsonString);
1672 };
1673 worker.onerror = workerErrorHandler;
1674
1675 // 设置超时,如果Worker长时间无响应,回退到同步模式
1676 let workerTimeout = setTimeout(() => {
1677 // 静默处理,不输出日志
1678 if (workerInstance) {
1679 try {
1680 workerInstance.terminate();
1681 } catch (e) {}
1682 workerInstance = null;
1683 }
1684 formatSync(jsonStr, skin, escapeJsonString);
1685 }, 5000);
1686
1687 // 设置消息处理程序
1688 worker.onmessage = function (evt) {
1689 clearTimeout(workerTimeout);
1690 let msg = evt.data;
1691 switch (msg[0]) {
1692 case 'FORMATTING':
1693 if (!_canRenderFormattedResult()) {
1694 _clearOptionBar();
1695 return;
1696 }
1697 formattingMsg.show();
1698 break;
1699 case 'FORMATTED':

Callers

nothing calls this directly

Calls 15

_initElementsFunction · 0.85
_parseWithBigIntFunction · 0.85
_safeStringifyFunction · 0.85
_getWorkerInstanceFunction · 0.85
setTimeoutFunction · 0.85
formatSyncFunction · 0.85
_clearOptionBarFunction · 0.85
_buildOptionBarFunction · 0.85
_addEventsFunction · 0.85
_downloadSupportFunction · 0.85
_clearJsonSearchFunction · 0.85

Tested by

no test coverage detected