aboutsummaryrefslogtreecommitdiffstats
path: root/src/shared/intercept-jquery-ajax.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/intercept-jquery-ajax.ts')
-rw-r--r--src/shared/intercept-jquery-ajax.ts20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/shared/intercept-jquery-ajax.ts b/src/shared/intercept-jquery-ajax.ts
index a77dd44..7e1f54e 100644
--- a/src/shared/intercept-jquery-ajax.ts
+++ b/src/shared/intercept-jquery-ajax.ts
@@ -8,10 +8,15 @@ interface InterceptJqueryEntry {
const postIntercepts: InterceptJqueryEntry[] = [];
const getIntercepts: InterceptJqueryEntry[] = [];
+/**
+ * On DOMContentLoaded, proxies jQuery's `$.post` and `$.get` so that
+ * registered interceptors are called before the real request.
+ */
document.addEventListener("DOMContentLoaded", () => {
const proxiedPost = $.post;
const proxiedGet = $.get;
+ /** Proxied `$.post` that invokes registered interceptors before the real call. */
$.post = function() {
for (const { url, callback } of postIntercepts) {
if (arguments[0].endsWith(url)) {
@@ -21,6 +26,7 @@ document.addEventListener("DOMContentLoaded", () => {
return proxiedPost.apply(this, Array.from(arguments) as any);
};
+ /** Proxied `$.get` that invokes registered interceptors before the real call. */
$.get = function() {
for (const { url, callback } of getIntercepts) {
if (arguments[0].endsWith(url)) {
@@ -32,10 +38,24 @@ document.addEventListener("DOMContentLoaded", () => {
};
});
+/**
+ * Registers a callback that fires whenever a jQuery POST request matches
+ * the given URL suffix.
+ *
+ * @param url - The URL suffix to match (checked via `endsWith`).
+ * @param callback - Receives the original `arguments` from `$.post`.
+ */
export function interceptPost(url: string, callback: InterceptJqueryAjaxCallback) {
postIntercepts.push({ url, callback });
};
+/**
+ * Registers a callback that fires whenever a jQuery GET request matches
+ * the given URL suffix.
+ *
+ * @param url - The URL suffix to match (checked via `endsWith`).
+ * @param callback - Receives the original `arguments` from `$.get`.
+ */
export function interceptGet(url: string, callback: InterceptJqueryAjaxCallback) {
getIntercepts.push({ url, callback });
};