mirror of
https://github.com/imezx/Warp.git
synced 2025-04-24 15:10:03 +00:00
43 lines
1.7 KiB
TypeScript
43 lines
1.7 KiB
TypeScript
|
/**
|
||
|
* Processes queue that might have been set before
|
||
|
* the script was actually loaded and reassigns
|
||
|
* class over globalObject variable to execute commands
|
||
|
* instead of putting them to the queue.
|
||
|
*/
|
||
|
import { getFunctionalInterface } from "./_getFunctionalInterface";
|
||
|
import type AlgoliaAnalytics from "./insights";
|
||
|
|
||
|
export function processQueue(this: AlgoliaAnalytics, globalObject: any): void {
|
||
|
// Set pointer which allows renaming of the script
|
||
|
const pointer = globalObject.AlgoliaAnalyticsObject as string;
|
||
|
|
||
|
if (pointer) {
|
||
|
const _aa = getFunctionalInterface(this);
|
||
|
|
||
|
// `aa` is the user facing function, which is defined in the install snippet.
|
||
|
// - before library is initialized `aa` fills a queue
|
||
|
// - after library is initialized `aa` calls `_aa`
|
||
|
const aa = globalObject[pointer];
|
||
|
aa.queue = aa.queue || [];
|
||
|
|
||
|
const queue: IArguments[] = aa.queue;
|
||
|
|
||
|
// Loop queue and execute functions in the queue
|
||
|
queue.forEach((args: IArguments) => {
|
||
|
const [functionName, ...functionArguments] = [].slice.call(args);
|
||
|
_aa(functionName as any, ...(functionArguments as any));
|
||
|
});
|
||
|
|
||
|
/* eslint-disable no-warning-comments */
|
||
|
// FIXME: Reassigning the pointer is a bad idea (cf: https://github.com/algolia/search-insights.js/issues/127)
|
||
|
// to remove this without any breaking change, we redefine the Array.prototype.push method on the queue array.
|
||
|
// for next major version, use a custom method instead of push.
|
||
|
/* eslint-enable */
|
||
|
// @ts-expect-error (otherwise typescript won't let you change the signature)
|
||
|
queue.push = (args: IArguments): number => {
|
||
|
const [functionName, ...functionArguments] = [].slice.call(args);
|
||
|
_aa(functionName as any, ...(functionArguments as any));
|
||
|
};
|
||
|
}
|
||
|
}
|