plugin API (#598)
* temp: plugin API * fix a bug in the replay handler and rename some type names. * update integration test * improve plugin types and handle legacy log data * use different naming in record and replay bundles * delete unreferenced types Co-authored-by: Lucky Feng <294889365@qq.com>
This commit is contained in:
@@ -16,7 +16,6 @@ import {
|
||||
recordOptions,
|
||||
IncrementalSource,
|
||||
listenerHandler,
|
||||
LogRecordOptions,
|
||||
mutationCallbackParam,
|
||||
scrollCallback,
|
||||
} from '../types';
|
||||
@@ -59,7 +58,7 @@ function record<T = eventWithTime>(
|
||||
mousemoveWait,
|
||||
recordCanvas = false,
|
||||
collectFonts = false,
|
||||
recordLog = false,
|
||||
plugins,
|
||||
} = options;
|
||||
// runtime checks for user options
|
||||
if (!emit) {
|
||||
@@ -113,37 +112,6 @@ function record<T = eventWithTime>(
|
||||
: _slimDOMOptions
|
||||
? _slimDOMOptions
|
||||
: {};
|
||||
const defaultLogOptions: LogRecordOptions = {
|
||||
level: [
|
||||
'assert',
|
||||
'clear',
|
||||
'count',
|
||||
'countReset',
|
||||
'debug',
|
||||
'dir',
|
||||
'dirxml',
|
||||
'error',
|
||||
'group',
|
||||
'groupCollapsed',
|
||||
'groupEnd',
|
||||
'info',
|
||||
'log',
|
||||
'table',
|
||||
'time',
|
||||
'timeEnd',
|
||||
'timeLog',
|
||||
'trace',
|
||||
'warn',
|
||||
],
|
||||
lengthThreshold: 1000,
|
||||
logger: console,
|
||||
};
|
||||
|
||||
const logOptions: LogRecordOptions = recordLog
|
||||
? recordLog === true
|
||||
? defaultLogOptions
|
||||
: Object.assign({}, defaultLogOptions, recordLog)
|
||||
: {};
|
||||
|
||||
polyfill();
|
||||
|
||||
@@ -400,16 +368,6 @@ function record<T = eventWithTime>(
|
||||
},
|
||||
}),
|
||||
),
|
||||
logCb: (p) =>
|
||||
wrappedEmit(
|
||||
wrapEvent({
|
||||
type: EventType.IncrementalSnapshot,
|
||||
data: {
|
||||
source: IncrementalSource.Log,
|
||||
...p,
|
||||
},
|
||||
}),
|
||||
),
|
||||
blockClass,
|
||||
ignoreClass,
|
||||
maskTextClass,
|
||||
@@ -422,12 +380,26 @@ function record<T = eventWithTime>(
|
||||
doc,
|
||||
maskInputFn,
|
||||
maskTextFn,
|
||||
logOptions,
|
||||
blockSelector,
|
||||
slimDOMOptions,
|
||||
mirror,
|
||||
iframeManager,
|
||||
shadowDomManager,
|
||||
plugins:
|
||||
plugins?.map((p) => ({
|
||||
observer: p.observer,
|
||||
options: p.options,
|
||||
callback: (payload: object) =>
|
||||
wrappedEmit(
|
||||
wrapEvent({
|
||||
type: EventType.Plugin,
|
||||
data: {
|
||||
plugin: p.name,
|
||||
payload,
|
||||
},
|
||||
}),
|
||||
),
|
||||
})) || [],
|
||||
},
|
||||
hooks,
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user