This commit is contained in:
42
node_modules/search-insights/lib/_processQueue.ts
generated
vendored
Normal file
42
node_modules/search-insights/lib/_processQueue.ts
generated
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
/**
|
||||
* 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));
|
||||
};
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user