@causalfoundry/js-sdk
Version:
Causal Foundry WEB SDK (JS/TS)
42 lines (32 loc) • 1.13 kB
text/typescript
import DeferredRunner from "../deferredRunner";
import { v4 as uuidv4 } from 'uuid'
import {LegacySearchProperties} from "../../modules/Navigation/legacyLoggerFunctions";
const moduleName = "Navigation";
let deferredRunner: DeferredRunner;
let searchId
const wrappedMethodNames = [
"logIngestEvent",
"logCatalogEvent",
"setCurrentBlock",
"setTitle",
];
// expose each method as a wrapper that just calls the deferredRunner
const wrappedMethods = wrappedMethodNames.reduce((obj, current) => {
obj[current] = (...args) => deferredRunner.execute(moduleName, current, args);
return obj;
}, {});
function logSearchEvent(properties: LegacySearchProperties, isNewSearch: boolean, sendNow = false) {
if (isNewSearch || properties.page === 1) {
searchId = `${uuidv4()}${Date.now()}`
}
deferredRunner.execute(moduleName, 'logSearchEvent', [properties, searchId || Date.now().toString(), sendNow]);
return searchId || Date.now().toString()
}
const init = (injectedDeferredRunner) => {
deferredRunner = injectedDeferredRunner;
};
export default {
init,
logSearchEvent,
...wrappedMethods,
};