Comparing version 0.0.12 to 0.0.13
@@ -7,6 +7,6 @@ import { BaseStateReport } from './types'; | ||
event: 'start'; | ||
info: BaseStateReport; | ||
report: BaseStateReport; | ||
}; | ||
export declare function isStartEvent(event: any): event is StartEvent; | ||
export declare function createStartEvent(info: BaseStateReport): StartEvent; | ||
export declare function createStartEvent(report: BaseStateReport): StartEvent; | ||
/** | ||
@@ -25,6 +25,6 @@ * Sent from WebWorker to the main thread to force an update | ||
event: 'update'; | ||
info: BaseStateReport; | ||
report: BaseStateReport; | ||
}; | ||
export declare function isUpdateEvent(event: any): event is UpdateEvent; | ||
export declare function createUpdateEvent(info: BaseStateReport): UpdateEvent; | ||
export declare function createUpdateEvent(report: BaseStateReport): UpdateEvent; | ||
/** | ||
@@ -35,6 +35,6 @@ * Send from main thread to WebWorker when browser tab is closed correctly | ||
event: 'close'; | ||
info: BaseStateReport; | ||
id: IDBValidKey; | ||
}; | ||
export declare function isCloseEvent(event: any): event is CloseEvent; | ||
export declare function createCloseEvent(info: BaseStateReport): CloseEvent; | ||
export declare function createCloseEvent(id: IDBValidKey): CloseEvent; | ||
/** | ||
@@ -45,7 +45,7 @@ * Sent from detector SharedWorker to main thread to indicate a crash was detected | ||
event: 'crash-detected'; | ||
tab: BaseStateReport; | ||
reporter: BaseStateReport; | ||
report: BaseStateReport; | ||
senderId: IDBValidKey; | ||
}; | ||
export declare function isCrashDetectedEvent(event: any): event is CrashDetectedEvent; | ||
export declare function createCrashDetectedEvent(tab: BaseStateReport, reporter: BaseStateReport): CrashDetectedEvent; | ||
export declare function createCrashDetectedEvent(report: BaseStateReport, senderId: IDBValidKey): CrashDetectedEvent; | ||
/** | ||
@@ -56,7 +56,7 @@ * Sent from detector SharedWorker to main thread to indicate a stale tab was detected | ||
event: 'stale-tab-detected'; | ||
tab: BaseStateReport; | ||
reporter: BaseStateReport; | ||
report: BaseStateReport; | ||
senderId: IDBValidKey; | ||
}; | ||
export declare function isStaleTabDetectedEvent(event: any): event is StaleTabDetectedEvent; | ||
export declare function createStaleTabDetectedEvent(tab: BaseStateReport, reporter: BaseStateReport): StaleTabDetectedEvent; | ||
export declare function createStaleTabDetectedEvent(report: BaseStateReport, senderId: IDBValidKey): StaleTabDetectedEvent; | ||
/** | ||
@@ -73,5 +73,5 @@ * Sent from the main thread to detector SharedWorker to indicate the crash was successfully reported | ||
event: 'stale-tab-reported'; | ||
tab: BaseStateReport; | ||
report: BaseStateReport; | ||
}; | ||
export declare function isStaleTabReportedEvent(event: any): event is StaleTabReportedEvent; | ||
export declare function createStaleTabReportedEvent(tab: BaseStateReport): StaleTabReportedEvent; | ||
export declare function createStaleTabReportedEvent(report: BaseStateReport): StaleTabReportedEvent; |
@@ -43,6 +43,6 @@ (function webpackUniversalModuleDefinition(root, factory) { | ||
} | ||
function createStartEvent(info) { | ||
function createStartEvent(report) { | ||
return { | ||
event: 'start', | ||
info: info, | ||
report: report, | ||
}; | ||
@@ -59,4 +59,4 @@ } | ||
} | ||
function createUpdateEvent(info) { | ||
return { event: 'update', info: info }; | ||
function createUpdateEvent(report) { | ||
return { event: 'update', report: report }; | ||
} | ||
@@ -66,6 +66,6 @@ function isCloseEvent(event) { | ||
} | ||
function createCloseEvent(info) { | ||
function createCloseEvent(id) { | ||
return { | ||
event: 'close', | ||
info: info, | ||
id: id, | ||
}; | ||
@@ -76,7 +76,7 @@ } | ||
} | ||
function createCrashDetectedEvent(tab, reporter) { | ||
function createCrashDetectedEvent(report, senderId) { | ||
return { | ||
event: 'crash-detected', | ||
tab: tab, | ||
reporter: reporter, | ||
report: report, | ||
senderId: senderId, | ||
}; | ||
@@ -87,7 +87,7 @@ } | ||
} | ||
function createStaleTabDetectedEvent(tab, reporter) { | ||
function createStaleTabDetectedEvent(report, senderId) { | ||
return { | ||
event: 'stale-tab-detected', | ||
tab: tab, | ||
reporter: reporter, | ||
report: report, | ||
senderId: senderId, | ||
}; | ||
@@ -107,6 +107,6 @@ } | ||
} | ||
function createStaleTabReportedEvent(tab) { | ||
function createStaleTabReportedEvent(report) { | ||
return { | ||
event: 'stale-tab-reported', | ||
tab: tab, | ||
report: report, | ||
}; | ||
@@ -217,3 +217,3 @@ } | ||
tabLastActive = Date.now(); | ||
lastStateReport = structuredClone(message.data.info); | ||
lastStateReport = structuredClone(message.data.report); | ||
// saving cannot happen here because message may not be sent when tab is paused (e.g. while debugging) | ||
@@ -230,3 +230,3 @@ } | ||
store = transaction.objectStore('tabs'); | ||
store.delete(message.data.info.id); | ||
store.delete(message.data.id); | ||
db = undefined; | ||
@@ -328,3 +328,3 @@ } | ||
var store = transaction.objectStore('tabs'); | ||
store.put(__assign(__assign({}, event.data.tab), { staleReported: true })); | ||
store.put(__assign(__assign({}, event.data.report), { staleReported: true })); | ||
} | ||
@@ -363,11 +363,11 @@ } | ||
var reporter = activeTabs.pop(); // must be defined based on the check above | ||
inactiveTabs.forEach(function (tab) { | ||
inactiveTabs.forEach(function (report) { | ||
openPorts.forEach(function (port) { | ||
var event = (0,_events__WEBPACK_IMPORTED_MODULE_1__.createCrashDetectedEvent)(tab, reporter); | ||
var event = (0,_events__WEBPACK_IMPORTED_MODULE_1__.createCrashDetectedEvent)(report, reporter.id); | ||
port.postMessage(event); | ||
}); | ||
}); | ||
staleTabs.forEach(function (tab) { | ||
staleTabs.forEach(function (report) { | ||
openPorts.forEach(function (port) { | ||
var event = (0,_events__WEBPACK_IMPORTED_MODULE_1__.createStaleTabDetectedEvent)(tab, reporter); | ||
var event = (0,_events__WEBPACK_IMPORTED_MODULE_1__.createStaleTabDetectedEvent)(report, reporter.id); | ||
port.postMessage(event); | ||
@@ -473,8 +473,8 @@ }); | ||
return __awaiter(this, void 0, void 0, function () { | ||
var tab, success, crashReportedEvent, tab, success, staleTabReportedEvent; | ||
var tab, success, crashReportedEvent, report, success, staleTabReportedEvent; | ||
return __generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: | ||
if (!((0,_events__WEBPACK_IMPORTED_MODULE_1__.isCrashDetectedEvent)(message.data) && message.data.reporter.id === stateReport.id)) return [3 /*break*/, 2]; | ||
tab = message.data.tab; | ||
if (!((0,_events__WEBPACK_IMPORTED_MODULE_1__.isCrashDetectedEvent)(message.data) && message.data.senderId === stateReport.id)) return [3 /*break*/, 2]; | ||
tab = message.data.report; | ||
return [4 /*yield*/, options.reportCrash(tab)]; | ||
@@ -484,3 +484,3 @@ case 1: | ||
if (success) { | ||
crashReportedEvent = (0,_events__WEBPACK_IMPORTED_MODULE_1__.createCrashReportedEvent)(message.data.tab.id); | ||
crashReportedEvent = (0,_events__WEBPACK_IMPORTED_MODULE_1__.createCrashReportedEvent)(message.data.report.id); | ||
detector.port.postMessage(crashReportedEvent); | ||
@@ -490,11 +490,9 @@ } | ||
case 2: | ||
if (!(options.reportStaleTab && | ||
(0,_events__WEBPACK_IMPORTED_MODULE_1__.isStaleTabDetectedEvent)(message.data) && | ||
message.data.reporter.id === stateReport.id)) return [3 /*break*/, 4]; | ||
tab = message.data.tab; | ||
return [4 /*yield*/, options.reportStaleTab(tab)]; | ||
if (!(options.reportStaleTab && (0,_events__WEBPACK_IMPORTED_MODULE_1__.isStaleTabDetectedEvent)(message.data) && message.data.senderId === stateReport.id)) return [3 /*break*/, 4]; | ||
report = message.data.report; | ||
return [4 /*yield*/, options.reportStaleTab(report)]; | ||
case 3: | ||
success = _a.sent(); | ||
if (success) { | ||
staleTabReportedEvent = (0,_events__WEBPACK_IMPORTED_MODULE_1__.createStaleTabReportedEvent)(message.data.tab); | ||
staleTabReportedEvent = (0,_events__WEBPACK_IMPORTED_MODULE_1__.createStaleTabReportedEvent)(message.data.report); | ||
detector.port.postMessage(staleTabReportedEvent); | ||
@@ -553,3 +551,3 @@ } | ||
store.delete(stateReport.id); | ||
var closeEvent = (0,_events__WEBPACK_IMPORTED_MODULE_1__.createCloseEvent)(stateReport); | ||
var closeEvent = (0,_events__WEBPACK_IMPORTED_MODULE_1__.createCloseEvent)(stateReport.id); | ||
worker.postMessage(closeEvent); | ||
@@ -556,0 +554,0 @@ unregisterWorkers(); |
{ | ||
"name": "crashme", | ||
"version": "0.0.12", | ||
"version": "0.0.13", | ||
"main": "dist/lib.js", | ||
@@ -5,0 +5,0 @@ "types": "dist/index.d.ts", |
@@ -1,2 +0,2 @@ | ||
# Detecting Browser/Tab crashes POC | ||
# Detecting Browser/Tab crashes | ||
@@ -9,4 +9,4 @@ This POC shows how browser crashes could potentially be detected. | ||
2. Run `npm run server` | ||
3Open http://localhost:1234 | ||
3. You can open multiple tabs (each tab will get a unique name) | ||
3. Open http://localhost:1234 | ||
You can open multiple tabs (each tab will get a unique name) | ||
4. Logs are sent to the terminal via server.js | ||
@@ -13,0 +13,0 @@ 5. Try various actions that can simulate a crash |
Sorry, the diff of this file is not supported yet
78766
864