@openfin/remote-adapter 46.100.63 → 46.100.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/remote-adapter.js +62 -26
- package/package.json +2 -2
package/out/remote-adapter.js
CHANGED
|
@@ -2179,6 +2179,26 @@ function isNewConnectConfig(config) {
|
|
|
2179
2179
|
return hasUuid(config) && hasRuntimeVersion(config);
|
|
2180
2180
|
}
|
|
2181
2181
|
|
|
2182
|
+
const V8Error = Error;
|
|
2183
|
+
function isCallSiteArray(stack) {
|
|
2184
|
+
if (!Array.isArray(stack) || stack.length === 0) {
|
|
2185
|
+
return Array.isArray(stack);
|
|
2186
|
+
}
|
|
2187
|
+
const first = stack[0];
|
|
2188
|
+
return typeof first === 'object' && first !== null && typeof first.getFileName === 'function';
|
|
2189
|
+
}
|
|
2190
|
+
function isStackFrameLine(line) {
|
|
2191
|
+
return /^\s*at\s/.test(line) || line.includes('@');
|
|
2192
|
+
}
|
|
2193
|
+
/**
|
|
2194
|
+
* Split a native `error.stack` string into frames and drop the dummy Error header plus `framesToRemove` frames.
|
|
2195
|
+
* Safari/Firefox ignore V8's Error.prepareStackTrace, so `.stack` stays a string and `.slice(n)` would cut characters.
|
|
2196
|
+
*/
|
|
2197
|
+
function stackStringToFrames(stack, framesToRemove) {
|
|
2198
|
+
const lines = stack.split('\n').filter((line) => line.length > 0);
|
|
2199
|
+
const start = lines[0] !== undefined && !isStackFrameLine(lines[0]) ? 1 : 0;
|
|
2200
|
+
return lines.slice(start + framesToRemove);
|
|
2201
|
+
}
|
|
2182
2202
|
class DisconnectedError extends Error {
|
|
2183
2203
|
constructor(readyState) {
|
|
2184
2204
|
super(`Expected websocket state OPEN but found ${readyState}`);
|
|
@@ -2215,17 +2235,17 @@ class DeserializedError extends Error {
|
|
|
2215
2235
|
class RuntimeError extends Error {
|
|
2216
2236
|
static trimEndCallSites(err, takeUntilRegex) {
|
|
2217
2237
|
// save original props
|
|
2218
|
-
const length =
|
|
2238
|
+
const length = V8Error.stackTraceLimit;
|
|
2219
2239
|
// eslint-disable-next-line no-underscore-dangle
|
|
2220
|
-
const _prepareStackTrace =
|
|
2240
|
+
const _prepareStackTrace = V8Error.prepareStackTrace;
|
|
2221
2241
|
// This will be called when we access the `stack` property
|
|
2222
|
-
|
|
2242
|
+
V8Error.prepareStackTrace = (_, stack) => stack;
|
|
2223
2243
|
// in channel errors, the error was already serialized so we need to handle both string and CallSite[]
|
|
2224
2244
|
const isString = typeof err.stack === 'string';
|
|
2225
2245
|
const stack = (isString ? err.stack?.split('\n') : err.stack) ?? [];
|
|
2226
2246
|
// restore original props
|
|
2227
|
-
|
|
2228
|
-
|
|
2247
|
+
V8Error.prepareStackTrace = _prepareStackTrace;
|
|
2248
|
+
V8Error.stackTraceLimit = length;
|
|
2229
2249
|
// stack is optional in non chromium contexts
|
|
2230
2250
|
if (stack.length) {
|
|
2231
2251
|
const newStack = [];
|
|
@@ -2247,31 +2267,47 @@ class RuntimeError extends Error {
|
|
|
2247
2267
|
}
|
|
2248
2268
|
}
|
|
2249
2269
|
static getCallSite(callsToRemove = 0) {
|
|
2250
|
-
const length =
|
|
2270
|
+
const length = V8Error.stackTraceLimit;
|
|
2251
2271
|
const realCallsToRemove = callsToRemove + 1; // remove this call;
|
|
2252
|
-
|
|
2272
|
+
const limit = typeof length === 'number' && Number.isFinite(length) ? length : 10;
|
|
2253
2273
|
// eslint-disable-next-line no-underscore-dangle
|
|
2254
|
-
const _prepareStackTrace =
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
|
|
2258
|
-
|
|
2259
|
-
|
|
2260
|
-
|
|
2261
|
-
|
|
2274
|
+
const _prepareStackTrace = V8Error.prepareStackTrace;
|
|
2275
|
+
try {
|
|
2276
|
+
V8Error.stackTraceLimit = limit + realCallsToRemove;
|
|
2277
|
+
// V8 only: accessing `.stack` invokes this and returns CallSite[]. Safari/Firefox ignore it.
|
|
2278
|
+
V8Error.prepareStackTrace = (_, stack) => stack;
|
|
2279
|
+
const rawStack = new Error().stack;
|
|
2280
|
+
if (Array.isArray(rawStack)) {
|
|
2281
|
+
return rawStack.slice(realCallsToRemove);
|
|
2282
|
+
}
|
|
2283
|
+
if (typeof rawStack === 'string' && rawStack.length > 0) {
|
|
2284
|
+
return stackStringToFrames(rawStack, realCallsToRemove);
|
|
2285
|
+
}
|
|
2286
|
+
return [];
|
|
2287
|
+
}
|
|
2288
|
+
finally {
|
|
2289
|
+
V8Error.prepareStackTrace = _prepareStackTrace;
|
|
2290
|
+
V8Error.stackTraceLimit = length;
|
|
2291
|
+
}
|
|
2262
2292
|
}
|
|
2263
2293
|
static prepareStackTrace(err, callSites) {
|
|
2264
|
-
|
|
2265
|
-
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
|
|
2273
|
-
|
|
2274
|
-
|
|
2294
|
+
const header = `${err.name || 'Error'}: ${err.message || ''}`;
|
|
2295
|
+
const frames = typeof callSites === 'string' ? stackStringToFrames(callSites, 0) : callSites;
|
|
2296
|
+
if (!Array.isArray(frames) || frames.length === 0) {
|
|
2297
|
+
return header;
|
|
2298
|
+
}
|
|
2299
|
+
if (isCallSiteArray(frames)) {
|
|
2300
|
+
const prepare = V8Error.prepareStackTrace;
|
|
2301
|
+
// Only V8 CallSite[] may be passed to a user-supplied Error.prepareStackTrace.
|
|
2302
|
+
if (typeof prepare === 'function') {
|
|
2303
|
+
return prepare(err, frames);
|
|
2304
|
+
}
|
|
2305
|
+
// TODO: this is just a first iteration, we can make this "nicer" at some point
|
|
2306
|
+
// const EXCLUSIONS = ['IpcRenderer', 'Object.onMessage', 'Transport.onmessage', 'MessageReceiver.onmessage'];
|
|
2307
|
+
return `${header}\n${frames.map((line) => ` at ${line}`).join('\n')}`;
|
|
2308
|
+
}
|
|
2309
|
+
// Native Safari/Firefox frames already include their engine's format (`func@file:line:col`).
|
|
2310
|
+
return `${header}\n${frames.join('\n')}`;
|
|
2275
2311
|
}
|
|
2276
2312
|
/*
|
|
2277
2313
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openfin/remote-adapter",
|
|
3
|
-
"version": "46.100.
|
|
3
|
+
"version": "46.100.65",
|
|
4
4
|
"description": "Establish intermachine runtime connections using webRTC.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"private": false,
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"es-toolkit": "^1.39.3",
|
|
18
18
|
"tslib": "2.8.1",
|
|
19
|
-
"@openfin/core": "46.100.
|
|
19
|
+
"@openfin/core": "46.100.65"
|
|
20
20
|
},
|
|
21
21
|
"scripts": {
|
|
22
22
|
"prebuild": "rimraf ./out",
|