feat (tracker): 3.2.0 - click selectors

This commit is contained in:
ShiKhu 2021-07-22 12:53:34 +08:00
parent e6bb61f2ab
commit faac5795da
6 changed files with 38 additions and 50 deletions

View file

@ -24,7 +24,7 @@ export const ID_TP_MAP = {
22: "console_log",
37: "css_insert_rule",
38: "css_delete_rule",
39: "fetch_depricated",
39: "fetch",
40: "profiler",
41: "o_table",
44: "redux",
@ -36,7 +36,6 @@ export const ID_TP_MAP = {
54: "connection_information",
55: "set_page_visibility",
59: "long_task",
68: "fetch",
} as const;
@ -167,8 +166,8 @@ export interface CssDeleteRule {
index: number,
}
export interface FetchDepricated {
tp: "fetch_depricated",
export interface Fetch {
tp: "fetch",
method: string,
url: string,
request: string,
@ -256,20 +255,8 @@ export interface LongTask {
containerName: string,
}
export interface Fetch {
tp: "fetch",
method: string,
url: string,
request: string,
response: string,
status: number,
timestamp: number,
duration: number,
headers: string,
}
export type Message = Timestamp | SetPageLocation | SetViewportSize | SetViewportScroll | CreateDocument | CreateElementNode | CreateTextNode | MoveNode | RemoveNode | SetNodeAttribute | RemoveNodeAttribute | SetNodeData | SetCssData | SetNodeScroll | SetInputValue | SetInputChecked | MouseMove | ConsoleLog | CssInsertRule | CssDeleteRule | FetchDepricated | Profiler | OTable | Redux | Vuex | MobX | NgRx | GraphQl | PerformanceTrack | ConnectionInformation | SetPageVisibility | LongTask | Fetch;
export type Message = Timestamp | SetPageLocation | SetViewportSize | SetViewportScroll | CreateDocument | CreateElementNode | CreateTextNode | MoveNode | RemoveNode | SetNodeAttribute | RemoveNodeAttribute | SetNodeData | SetCssData | SetNodeScroll | SetInputValue | SetInputChecked | MouseMove | ConsoleLog | CssInsertRule | CssDeleteRule | Fetch | Profiler | OTable | Redux | Vuex | MobX | NgRx | GraphQl | PerformanceTrack | ConnectionInformation | SetPageVisibility | LongTask;
export default function (r: PrimitiveReader): Message | null {
switch (r.readUint()) {
@ -522,19 +509,6 @@ export default function (r: PrimitiveReader): Message | null {
containerName: r.readString(),
};
case 68:
return {
tp: ID_TP_MAP[68],
method: r.readString(),
url: r.readString(),
request: r.readString(),
response: r.readString(),
status: r.readUint(),
timestamp: r.readUint(),
duration: r.readUint(),
headers: r.readString(),
};
default:
r.readUint(); // IOS skip timestamp
r.skip(r.readUint());

View file

@ -293,6 +293,11 @@
"to-fast-properties": "^2.0.0"
}
},
"@medv/finder": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@medv/finder/-/finder-2.0.0.tgz",
"integrity": "sha512-gV4jOsGpiWNDGd8Dw7tod1Fc9Gc7StaOT4oZ/6srHRWtsHU+HYWzmkYsa3Qy/z0e9tY1WpJ9wWdBFGskfbzoug=="
},
"@nodelib/fs.scandir": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz",

View file

@ -1,7 +1,7 @@
{
"name": "@openreplay/tracker",
"description": "The OpenReplay tracker main package",
"version": "3.1.0",
"version": "3.2.0",
"keywords": [
"logging",
"replay"
@ -41,6 +41,7 @@
"typescript": "^4.3.4"
},
"dependencies": {
"@medv/finder": "^2.0.0",
"error-stack-parser": "^2.0.6"
},
"engines": {

View file

@ -248,8 +248,8 @@ export default class App {
throw new Error("Stranger things: no worker found after start request");
}
this.worker.postMessage({ token });
this.observer.observe();
this.startCallbacks.forEach((cb) => cb());
this.observer.observe();
this.ticker.start();
log("OpenReplay tracking started.");

View file

@ -1,8 +1,13 @@
import { finder } from '@medv/finder';
import { normSpaces, hasOpenreplayAttribute, getLabelAttribute } from '../utils';
import App from '../app';
import { MouseMove, MouseClick } from '../../messages';
import { getInputLabel } from './input';
const selectorMap: {[id:number]: string} = {};
function getSelector(id: number, target: Element): string {
return selectorMap[id] = selectorMap[id] || finder(target);
}
function getTarget(target: EventTarget | null): Element | null {
if (target instanceof Element) {
@ -128,6 +133,7 @@ export default function (app: App): void {
? Math.round(performance.now() - mouseTargetTime)
: 0,
getTargetLabel(target),
getSelector(id, target),
),
true,
);

View file

@ -317,24 +317,6 @@ export const MouseMove = bindNew(_MouseMove);
classes.set(20, MouseMove);
class _MouseClick implements Message {
readonly _id: number = 21;
constructor(
public id: number,
public hesitationTime: number,
public label: string
) {}
encode(writer: Writer): boolean {
return writer.uint(21) &&
writer.uint(this.id) &&
writer.uint(this.hesitationTime) &&
writer.string(this.label);
}
}
export const MouseClick = bindNew(_MouseClick);
classes.set(21, MouseClick);
class _ConsoleLog implements Message {
readonly _id: number = 22;
constructor(
@ -883,3 +865,23 @@ export const CSSInsertRuleURLBased = bindNew(_CSSInsertRuleURLBased);
classes.set(67, CSSInsertRuleURLBased);
class _MouseClick implements Message {
readonly _id: number = 69;
constructor(
public id: number,
public hesitationTime: number,
public label: string,
public selector: string
) {}
encode(writer: Writer): boolean {
return writer.uint(69) &&
writer.uint(this.id) &&
writer.uint(this.hesitationTime) &&
writer.string(this.label) &&
writer.string(this.selector);
}
}
export const MouseClick = bindNew(_MouseClick);
classes.set(69, MouseClick);