Files
kate522andClaude Opus 5 35bb96e82f refactor: rename the theme brand and every identifier from AKSRT to Jio
Full-project rename. `git grep -i aksrt` is now empty apart from the
DBMigrator 3.3.0 changelog note that documents the rename itself.

Code identifiers
- PHP namespace AKSRT\ -> Jio\ (composer PSR-4 + 378 declarations)
- global constants AKSRT_* -> JIO_* (VERSION/DIR/URI, PAY_TYPE_*, CAPTCHA_*)
- procedural functions, hooks, options, meta keys, table names,
  cookies, query vars, ajax actions and nonces: aksrt_ -> jio_
- text domain aksrt -> jio; Theme Name -> Jio
- JS globals: aksrtData/aksrtAdminData/... -> jioData/jioAdminData/...,
  window.AKSRTCaptcha & friends -> window.JioCaptcha, Aksrt* -> Jio*
- Vue components Aks*.vue -> Jio*.vue (15 files renamed + imports)
- CSS classes/data-attrs/custom properties: aksrt- -> jio-
- REST namespace aksrt/v1 -> jio/v1 (incl. payment gateway callbacks)

Storage layer
- DB tables {prefix}aksrt_* -> {prefix}jio_*; SCHEMA_VERSION 3.2.0 -> 3.3.0
  so dbDelta creates the new names on install
- widget id_base aksrt_widget_* -> jio_widget_*
- uninstall.php drop list rebuilt from the actual migrator tables
  (dropped 3 stale entries, added the 17 missing ones)

Removed
- hardcoded https://api.aksrt.com/version.json default update endpoint;
  get_endpoint() now reads the 「更新端点」 setting and do_check() no-ops
  when it is empty

Files renamed: inc/helpers/aksrt-*.php -> jio-*.php (54),
assets/admin/src/components/form/Aks*.vue -> Jio*.vue (15).
Build artifacts regenerated: assets/css/build, assets/js/runtime,
assets/admin/build.

Verified: audit-psr4-paths errors=0, audit-admin-contracts errors=0
(warnings=56, unchanged baseline), 813/813 widget-system tests,
44/44 phpunit, php -l clean across all PHP.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-11-01 20:05:04 +08:00

72 lines
2.7 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* Jio AJAX Debug — 排查 vendor main.min.js / legacy_ajax 产生的失败请求
*
* 启用条件(见 inc/jio-ajax-debug.php):WP_DEBUG 开启,或 URL 带 ?jio_ajax_debug=1
*
* 输出:
* - [jio→ajax] 所有发往 admin-ajax.php 的 jQuery 请求(含 action 与参数)
* - [jio✗ajax] 所有失败的 jQuery 请求(url / data / status / responseText)
* - [jio✗fetch] 所有非 2xx 的 fetch 请求
*/
(function () {
'use strict';
var MAX_BODY = 500;
function clip(str) {
str = String(str == null ? '' : str);
return str.length > MAX_BODY ? str.slice(0, MAX_BODY) + '…(' + str.length + ')' : str;
}
function paramsToObject(data) {
if (!data) return null;
if (typeof data === 'string') {
try { return JSON.parse(data); } catch (e) { /* urlencoded */ }
var out = {};
new URLSearchParams(data).forEach(function (v, k) { out[k] = v; });
return out;
}
return data;
}
console.log('%c[jio] ajax 调试已开启(?jio_ajax_debug=1 或 WP_DEBUG)', 'color:#2abd4e;background:#16171a;padding:2px 6px;');
if (window.jQuery) {
jQuery(document).ajaxSend(function (e, jqXHR, settings) {
if (!settings || !settings.url || settings.url.indexOf('admin-ajax.php') === -1) return;
console.log('[jio→ajax]', settings.type || 'GET', settings.url, paramsToObject(settings.data));
});
jQuery(document).ajaxError(function (e, jqXHR, settings, thrownError) {
console.warn('[jio✗ajax]', (settings && settings.type) || '?', (settings && settings.url) || '?',
'data:', paramsToObject(settings && settings.data),
'status:', jqXHR && jqXHR.status,
'response:', clip(jqXHR && jqXHR.responseText),
'thrown:', thrownError);
// 定位触发元素:记录调用栈帮助回溯 legacy_ajax 调用来源
if (settings && settings.url && settings.url.indexOf('admin-ajax.php') !== -1) {
console.warn('[jio✗ajax] 发出的 action 参数见上方 data —— 在 admin-ajax 无对应处理器时 WP 返回 400 "0"');
}
});
} else {
console.warn('[jio] jQuery 未加载,ajax 调试仅覆盖 fetch');
}
var rawFetch = window.fetch;
if (typeof rawFetch === 'function') {
window.fetch = function () {
var args = arguments;
var url = typeof args[0] === 'string' ? args[0] : (args[0] && args[0].url) || '';
var body = args[1] && args[1].body;
return rawFetch.apply(this, args).then(function (res) {
if (!res.ok) {
res.clone().text().then(function (text) {
console.warn('[jio✗fetch]', res.status, url, 'body:', clip(body), 'response:', clip(text));
}).catch(function () {});
}
return res;
});
};
}
})();