@yqg/multiple-click
Version:
Monitor user's multiple click behavior and report
69 lines (57 loc) • 1.8 kB
text/typescript
import {IExposeMultipleClickTrackingConfig, ENV_TYPE} from '../type';
export const baseConfig: IExposeMultipleClickTrackingConfig = {
appId: 'test',
appVersion: '1.0.0',
env: ENV_TYPE.TEST,
interval: 1000,
continuousCount: 3,
range: 500,
customTrackingInfo: (_, extra) => extra,
filter: () => false,
excludeRules: [
{
selector: '#app',
shallow: true,
page: ['/test/abc']
}
]
};
export const mockFetchConfig = (data: any) => {
global.fetch = jest.fn((url: string) => {
if (url.includes('/api-web/hostCond')) {
return Promise.resolve({
json: () => Promise.resolve({body: data})
});
}
return Promise.resolve({});
}) as jest.Mock;
};
export const mockUploadTrackingInfo = (cb?: (req: RequestInit) => void) => {
global.fetch = jest.fn((url: string, req: RequestInit) => {
if (url.includes('/logMetrics')) {
// eslint-disable-next-line callback-return
cb?.(req);
return Promise.resolve({
json: () => Promise.resolve({})
});
}
return Promise.resolve({});
}) as jest.Mock;
};
/** 获取arr数组所有长度为subLen的子集 */
export const getSubsets = <T>(arr: T[], subLen: number) => {
const subsets: T[][] = [];
const backtrack = (start: number, currentSubset: T[]) => {
if (currentSubset.length === subLen) {
subsets.push([...currentSubset]);
return;
}
for (let i = start; i < arr.length; i++) {
currentSubset.push(arr[i]);
backtrack(i + 1, currentSubset);
currentSubset.pop();
}
};
backtrack(0, []);
return subsets;
};