@bridgeline-digital/hawk-app-bridge 0.1.1-dev.20261026194933 → 0.1.1
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/README.md +29 -2
- package/dist/client/index.d.ts +23 -0
- package/dist/client/index.js +77 -2
- package/dist/client/index.js.map +1 -1
- package/dist/client/pdf.d.ts +5 -0
- package/dist/client/pdf.js +30 -0
- package/dist/client/pdf.js.map +1 -1
- package/dist/client/speed.d.ts +26 -0
- package/dist/client/speed.js +150 -0
- package/dist/client/speed.js.map +1 -0
- package/dist/client/usage.d.ts +3 -0
- package/dist/client/usage.js +4 -0
- package/dist/client/usage.js.map +1 -1
- package/dist/host/app-explain.d.ts +5 -0
- package/dist/host/app-explain.js +11 -4
- package/dist/host/app-explain.js.map +1 -1
- package/dist/host/app-frame.d.ts +68 -0
- package/dist/host/app-frame.js +102 -2
- package/dist/host/app-frame.js.map +1 -1
- package/dist/host/app-pdf.js +2 -4
- package/dist/host/app-pdf.js.map +1 -1
- package/dist/host/app-report.d.ts +12 -0
- package/dist/host/app-report.js +199 -0
- package/dist/host/app-report.js.map +1 -0
- package/dist/host/app-reviews.d.ts +47 -0
- package/dist/host/app-reviews.js +327 -0
- package/dist/host/app-reviews.js.map +1 -0
- package/dist/host/app-views.d.ts +11 -0
- package/dist/host/app-views.js +270 -0
- package/dist/host/app-views.js.map +1 -0
- package/dist/host/bridge-host.d.ts +11 -0
- package/dist/host/bridge-host.js +51 -1
- package/dist/host/bridge-host.js.map +1 -1
- package/dist/host/index.d.ts +4 -0
- package/dist/host/index.js +3 -0
- package/dist/host/index.js.map +1 -1
- package/dist/host/modal-overlay.d.ts +2 -0
- package/dist/host/modal-overlay.js +4 -0
- package/dist/host/modal-overlay.js.map +1 -1
- package/dist/protocol.d.ts +30 -0
- package/dist/protocol.js +2 -0
- package/dist/protocol.js.map +1 -1
- package/dist/shared/requests.d.ts +3 -1
- package/dist/shared/requests.js +14 -2
- package/dist/shared/requests.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1226,7 +1226,7 @@ They're kept until deleted, and each new one is emailed to whoever you set.
|
|
|
1226
1226
|
```
|
|
1227
1227
|
|
|
1228
1228
|
```tsx
|
|
1229
|
-
// The UI kit: a
|
|
1229
|
+
// The UI kit: a comment icon with a "!" when there are comments (one count request for all the page's icons); a click opens the thread.
|
|
1230
1230
|
<HawkComments target={`keyword:${row.keyword}`} label={row.keyword} />
|
|
1231
1231
|
<HawkComments target="page:summary" label="This month's summary" />
|
|
1232
1232
|
```
|
|
@@ -1452,6 +1452,25 @@ Failed data calls throw `HawkApiError` with `status` and `code`; failed host req
|
|
|
1452
1452
|
|
|
1453
1453
|
A `403` without one of these codes means the app lacks the scope for that call.
|
|
1454
1454
|
|
|
1455
|
+
## Saved views
|
|
1456
|
+
|
|
1457
|
+
Users save the page's state under a name and open it again later or share it with their company, from the host's
|
|
1458
|
+
Views menu (a bookmark icon) or a link. Say what makes the page's state, and restore it:
|
|
1459
|
+
|
|
1460
|
+
```ts
|
|
1461
|
+
app.state.set({ range, target, sort }); // as it changes; null while there's nothing to save
|
|
1462
|
+
const stop = app.state.onApply((state, view) => { // a saved view (or its link) was opened
|
|
1463
|
+
setRange(state.range);
|
|
1464
|
+
setTarget(state.target);
|
|
1465
|
+
setSort(state.sort);
|
|
1466
|
+
});
|
|
1467
|
+
```
|
|
1468
|
+
|
|
1469
|
+
One small JSON object (at most 16 KB), never the page's data. The menu shows only while the app has set a state; a view
|
|
1470
|
+
opened by a link reaches `onApply` even if the app registers it later. The UI kit's `useSavedState(initial)` does both
|
|
1471
|
+
(`const [filters, setFilters] = useSavedState({ range: 'l13', target: null })`). Errors: `invalid_request` (not a JSON
|
|
1472
|
+
object, too large). See the platform's docs/saved-views.md.
|
|
1473
|
+
|
|
1455
1474
|
## Errors and usage
|
|
1456
1475
|
|
|
1457
1476
|
`createApp` reports, on its own, one open per page load (the full app or the view showing), the screens and actions
|
|
@@ -1482,7 +1501,12 @@ app.usage.action('Bulk fix'); // an action that isn't a click on one element
|
|
|
1482
1501
|
Names are letters, digits and simple punctuation, up to 80 characters: name the thing (`Export CSV`), not the data
|
|
1483
1502
|
(never a keyword or a client). `hawk-app usage --screens` lists the most and least used, per version.
|
|
1484
1503
|
|
|
1485
|
-
|
|
1504
|
+
**How fast it is.** The bridge also times each screen: how long the page took to load, how long a screen took to get
|
|
1505
|
+
its data (until its platform calls are done), slow clicks (40 ms or more to the next paint) and each platform call by
|
|
1506
|
+
route. Only times and names. `hawk-app usage --speed` shows each screen's median and 90th percentile, the version
|
|
1507
|
+
beside the one before it, and the slowest calls.
|
|
1508
|
+
|
|
1509
|
+
`createApp({ reportErrors: false, reportOpens: false, reportUsage: false, reportSpeed: false })` turns any of them off.
|
|
1486
1510
|
|
|
1487
1511
|
## Talk to the host
|
|
1488
1512
|
|
|
@@ -1580,6 +1604,9 @@ useEffect(() => void app.assistant.setContext({ page: 'Recommendation Dashboard'
|
|
|
1580
1604
|
await app.assistant.ask('Which widgets are taking up space?');
|
|
1581
1605
|
```
|
|
1582
1606
|
|
|
1607
|
+
Asking from a dialog or drawer is fine: the host's assistant is part of the page the dialog covers, so the host closes
|
|
1608
|
+
the dialog first (as a click on its backdrop would) and the answer is in view.
|
|
1609
|
+
|
|
1583
1610
|
A message is at most 2,000 characters. Errors (`HawkBridgeError`): `unsupported` (no assistant on the page), `scope_missing`,
|
|
1584
1611
|
`invalid_request`; `setContext` needs no scope (without it, only "Explain this page" gets the context). Hosts: `<hawk-app-frame>` fires a cancelable `hawk-assistant` event (`detail.message`; `hawk-assistant-context` with `detail.context` for the context); a host that
|
|
1585
1612
|
answers it itself calls `preventDefault()` and sets the element's `assistant` attribute. Otherwise the element sends the
|
package/dist/client/index.d.ts
CHANGED
|
@@ -44,6 +44,23 @@ export interface CreateAppOptions {
|
|
|
44
44
|
* those names, never what users type or see. Default true.
|
|
45
45
|
*/
|
|
46
46
|
reportUsage?: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Measure how fast each screen is (the page's load, each screen's data, slow clicks, each platform call by route) for
|
|
49
|
+
* `hawk-app usage --speed`. Only times and names. Default true.
|
|
50
|
+
*/
|
|
51
|
+
reportSpeed?: boolean;
|
|
52
|
+
}
|
|
53
|
+
/** Saved views (`app.state`). */
|
|
54
|
+
export interface StateApi {
|
|
55
|
+
/** The page's state now (null: nothing to save, e.g. while loading). Sent shortly after the last change. */
|
|
56
|
+
set(state: object | null): void;
|
|
57
|
+
/**
|
|
58
|
+
* Restores a saved view: called with its state (and name) when the user opens one, also one opened by a link before
|
|
59
|
+
* the app registered. Returns a function that stops listening.
|
|
60
|
+
*/
|
|
61
|
+
onApply(listener: (state: object, view: {
|
|
62
|
+
name: string | null;
|
|
63
|
+
}) => void): () => void;
|
|
47
64
|
}
|
|
48
65
|
export * from '../shared/api.js';
|
|
49
66
|
export type { CommentsApi, HawkComment } from '../shared/comments.js';
|
|
@@ -206,6 +223,12 @@ export interface HawkApp {
|
|
|
206
223
|
* Does nothing with `reportUsage: false`.
|
|
207
224
|
*/
|
|
208
225
|
usage: UsageApi;
|
|
226
|
+
/**
|
|
227
|
+
* Saved views: say what state the page is in (`set({ range, tab, sort })`, a small JSON object, as it changes) and
|
|
228
|
+
* restore one (`onApply(state => …)`) when the user opens a saved view or its link from the host's Views menu. The
|
|
229
|
+
* menu shows only while the app has set a state. The UI kit's `useSavedState` does both.
|
|
230
|
+
*/
|
|
231
|
+
state: StateApi;
|
|
209
232
|
/**
|
|
210
233
|
* Comments on the app's data (`comments` scope): a thread per target the app chooses, for the current client, seen
|
|
211
234
|
* by everyone at the client who uses the app; each new comment is emailed to the app's `commentEmails` config. The
|
package/dist/client/index.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { HawkBridgeError, HOST_ORIGIN_PARAM, MESSAGE_SOURCE, PROTOCOL_VERSION, RESPONSE_TYPE, SDK_VERSION, createId, isBridgeMessage, messageName, messageType, normalizeOrigin, } from '../protocol.js';
|
|
1
|
+
import { APP_STATE_MAX_BYTES, HawkBridgeError, HOST_ORIGIN_PARAM, MESSAGE_SOURCE, PROTOCOL_VERSION, RESPONSE_TYPE, SDK_VERSION, createId, isBridgeMessage, messageName, messageType, normalizeOrigin, } from '../protocol.js';
|
|
2
2
|
import { createAiApi } from '../shared/ai.js';
|
|
3
3
|
import { createCommentsApi } from '../shared/comments.js';
|
|
4
4
|
import { apiRequest as sendRequest, callFunction, createAnalyticsApi, createApiFetch, createDashboardApi, createFunctionJobsApi, createHawkSearchFeaturesApi, createHawkAiApi, createHawkSearchIndexApi, createHawkSearchPinningApi, createHawkSearchPreviewApi, createHawkSearchSearchApi, hawkSearchRecommendations, createLambdasApi, createStorageApi, createClientSecretsApi, createConfigApi, createSchedulesApi, getSystemParameter, listSystemParameters, runDataQuery, sendEmail, setSystemParameter, } from '../shared/requests.js';
|
|
5
5
|
import { watchModals } from './modals.js';
|
|
6
6
|
import { startErrorReporting, toReport } from './telemetry.js';
|
|
7
|
+
import { startSpeed } from './speed.js';
|
|
7
8
|
import { startUsage } from './usage.js';
|
|
8
9
|
export * from '../protocol.js';
|
|
9
10
|
export * from '../shared/api.js';
|
|
@@ -30,6 +31,7 @@ export async function createApp(options = {}) {
|
|
|
30
31
|
let lastHeight = -1;
|
|
31
32
|
let modals = null;
|
|
32
33
|
let telemetry = null;
|
|
34
|
+
let speed = null;
|
|
33
35
|
const onMessage = (event) => {
|
|
34
36
|
if (event.source !== hostWindow || event.origin !== hostOrigin || !isBridgeMessage(event.data)) {
|
|
35
37
|
return;
|
|
@@ -62,7 +64,43 @@ export async function createApp(options = {}) {
|
|
|
62
64
|
if (messageName(message.type) === 'exportPdf') {
|
|
63
65
|
void exportPdf(message.payload?.id);
|
|
64
66
|
}
|
|
67
|
+
if (messageName(message.type) === 'capturePage') {
|
|
68
|
+
void capturePage(message.payload?.id);
|
|
69
|
+
}
|
|
70
|
+
if (messageName(message.type) === 'applyState') {
|
|
71
|
+
const { state, name } = (message.payload ?? {});
|
|
72
|
+
if (state && typeof state === 'object' && !Array.isArray(state)) {
|
|
73
|
+
const view = { name: typeof name === 'string' ? name : null };
|
|
74
|
+
// The state it restores is the page's state now: not sent back as a change.
|
|
75
|
+
lastStateJson = JSON.stringify(state);
|
|
76
|
+
if (stateListeners.size)
|
|
77
|
+
stateListeners.forEach((listener) => listener(state, view));
|
|
78
|
+
else
|
|
79
|
+
pendingApply = { state: state, name: view.name };
|
|
80
|
+
}
|
|
81
|
+
}
|
|
65
82
|
};
|
|
83
|
+
// Saved views (app.state).
|
|
84
|
+
const STATE_DEBOUNCE_MS = 300;
|
|
85
|
+
const stateListeners = new Set();
|
|
86
|
+
let pendingApply = null;
|
|
87
|
+
let lastStateJson = null;
|
|
88
|
+
let stateTimer = null;
|
|
89
|
+
/** "Report a problem" in the host: a picture of the page (any app, no setup). */
|
|
90
|
+
async function capturePage(id) {
|
|
91
|
+
if (typeof id !== 'string')
|
|
92
|
+
return;
|
|
93
|
+
let image = null;
|
|
94
|
+
let error = null;
|
|
95
|
+
try {
|
|
96
|
+
const { capturePageJpeg } = await import('./pdf.js');
|
|
97
|
+
image = await capturePageJpeg();
|
|
98
|
+
}
|
|
99
|
+
catch (e) {
|
|
100
|
+
error = { code: 'capture_failed', message: e instanceof Error ? e.message : String(e) };
|
|
101
|
+
}
|
|
102
|
+
await request('pageCaptured', { id, image, error }).catch(() => undefined);
|
|
103
|
+
}
|
|
66
104
|
/** The page's PDF options while it can be exported (app.setPdfExport). */
|
|
67
105
|
let pdf = null;
|
|
68
106
|
async function exportPdf(id) {
|
|
@@ -146,6 +184,7 @@ export async function createApp(options = {}) {
|
|
|
146
184
|
fetchImpl,
|
|
147
185
|
refreshOn401: true,
|
|
148
186
|
headers: () => (context?.view?.name ? { 'X-Hawk-View': context.view.name } : undefined),
|
|
187
|
+
observe: (method, path) => speed?.call(method, path),
|
|
149
188
|
};
|
|
150
189
|
const apiFetch = createApiFetch(apiOptions);
|
|
151
190
|
const apiRequest = (method, path, body, requestOptions) => sendRequest(apiFetch, method, path, body, requestOptions);
|
|
@@ -203,7 +242,12 @@ export async function createApp(options = {}) {
|
|
|
203
242
|
if (options.reportErrors !== false && typeof window !== 'undefined') {
|
|
204
243
|
telemetry = startErrorReporting(report, () => context?.view?.name);
|
|
205
244
|
}
|
|
206
|
-
const usage = options.reportUsage !== false && typeof window !== 'undefined'
|
|
245
|
+
const usage = options.reportUsage !== false && typeof window !== 'undefined'
|
|
246
|
+
? startUsage(report, { slug: context.app.slug, view: () => context?.view?.name, onScreen: (name) => speed?.screenChanged(name) })
|
|
247
|
+
: null;
|
|
248
|
+
if (options.reportSpeed !== false && typeof window !== 'undefined') {
|
|
249
|
+
speed = startSpeed(report, { screen: () => usage?.current || (context?.view?.name ? `view:${context.view.name}` : '/') });
|
|
250
|
+
}
|
|
207
251
|
const dashboard = createDashboardApi(apiFetch);
|
|
208
252
|
return {
|
|
209
253
|
get context() {
|
|
@@ -273,6 +317,35 @@ export async function createApp(options = {}) {
|
|
|
273
317
|
screen: (name) => usage?.screen(name),
|
|
274
318
|
action: (name) => usage?.action(name),
|
|
275
319
|
},
|
|
320
|
+
state: {
|
|
321
|
+
set(state) {
|
|
322
|
+
if (state !== null && (typeof state !== 'object' || Array.isArray(state)))
|
|
323
|
+
throw new HawkBridgeError('invalid_request', 'The state is a JSON object, or null.');
|
|
324
|
+
const json = state === null ? null : JSON.stringify(state);
|
|
325
|
+
if (json !== null && json.length > APP_STATE_MAX_BYTES)
|
|
326
|
+
throw new HawkBridgeError('invalid_request', `The state is at most ${APP_STATE_MAX_BYTES} bytes of JSON.`);
|
|
327
|
+
if (json === lastStateJson)
|
|
328
|
+
return;
|
|
329
|
+
lastStateJson = json;
|
|
330
|
+
if (stateTimer)
|
|
331
|
+
clearTimeout(stateTimer);
|
|
332
|
+
// The last change of a burst (typing in a filter) is sent.
|
|
333
|
+
stateTimer = setTimeout(() => {
|
|
334
|
+
stateTimer = null;
|
|
335
|
+
request('appState', { state: json === null ? null : JSON.parse(json) }).catch(() => undefined);
|
|
336
|
+
}, STATE_DEBOUNCE_MS);
|
|
337
|
+
},
|
|
338
|
+
onApply(listener) {
|
|
339
|
+
stateListeners.add(listener);
|
|
340
|
+
// A view opened (a link) before the app was listening.
|
|
341
|
+
if (pendingApply) {
|
|
342
|
+
const { state, name } = pendingApply;
|
|
343
|
+
pendingApply = null;
|
|
344
|
+
listener(state, { name });
|
|
345
|
+
}
|
|
346
|
+
return () => stateListeners.delete(listener);
|
|
347
|
+
},
|
|
348
|
+
},
|
|
276
349
|
action: {
|
|
277
350
|
async done(result) {
|
|
278
351
|
if (!context.view?.action)
|
|
@@ -305,6 +378,8 @@ export async function createApp(options = {}) {
|
|
|
305
378
|
modals?.destroy();
|
|
306
379
|
telemetry?.destroy();
|
|
307
380
|
usage?.destroy();
|
|
381
|
+
speed?.destroy();
|
|
382
|
+
speed = null;
|
|
308
383
|
pending.forEach((entry) => {
|
|
309
384
|
clearTimeout(entry.timer);
|
|
310
385
|
entry.reject(new HawkBridgeError('destroyed', 'The app bridge has been destroyed.'));
|
package/dist/client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
|
package/dist/client/pdf.d.ts
CHANGED
|
@@ -27,3 +27,8 @@ export declare function exportPagePdf(options: {
|
|
|
27
27
|
fileName: string;
|
|
28
28
|
title?: string;
|
|
29
29
|
}): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* A picture of the page for "Report a problem": the whole page (cut at CAPTURE_HEIGHT), at most CAPTURE_WIDTH wide, as
|
|
32
|
+
* a JPEG data URL. Elements with `data-hawk-pdf-ignore` are left out, as in the PDF.
|
|
33
|
+
*/
|
|
34
|
+
export declare function capturePageJpeg(): Promise<string>;
|
package/dist/client/pdf.js
CHANGED
|
@@ -115,6 +115,36 @@ export async function exportPagePdf(options) {
|
|
|
115
115
|
const pdf = jpegPdf(pages, { pageSize, margin: MARGIN, title: options.title });
|
|
116
116
|
download(new Blob([pdf], { type: 'application/pdf' }), options.fileName);
|
|
117
117
|
}
|
|
118
|
+
/** The largest picture of the page for a problem report (CSS pixels wide; taller pages are cut), and its size as text. */
|
|
119
|
+
const CAPTURE_WIDTH = 1280;
|
|
120
|
+
const CAPTURE_HEIGHT = 6000;
|
|
121
|
+
const CAPTURE_MAX_CHARS = 2500000;
|
|
122
|
+
/**
|
|
123
|
+
* A picture of the page for "Report a problem": the whole page (cut at CAPTURE_HEIGHT), at most CAPTURE_WIDTH wide, as
|
|
124
|
+
* a JPEG data URL. Elements with `data-hawk-pdf-ignore` are left out, as in the PDF.
|
|
125
|
+
*/
|
|
126
|
+
export async function capturePageJpeg() {
|
|
127
|
+
const { toCanvas } = await import('html-to-image');
|
|
128
|
+
const root = document.documentElement;
|
|
129
|
+
const body = document.body;
|
|
130
|
+
const width = Math.ceil(Math.max(root.scrollWidth, body.scrollWidth, root.clientWidth));
|
|
131
|
+
const height = Math.min(CAPTURE_HEIGHT, Math.ceil(Math.max(root.scrollHeight, body.scrollHeight, root.clientHeight)));
|
|
132
|
+
const canvas = await toCanvas(body, {
|
|
133
|
+
width,
|
|
134
|
+
height,
|
|
135
|
+
pixelRatio: Math.min(1, CAPTURE_WIDTH / width),
|
|
136
|
+
backgroundColor: background(body, root),
|
|
137
|
+
imagePlaceholder: 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
|
|
138
|
+
filter: (node) => !(node instanceof Element && node.hasAttribute('data-hawk-pdf-ignore')),
|
|
139
|
+
style: { margin: '0' },
|
|
140
|
+
});
|
|
141
|
+
for (const quality of [0.7, 0.5, 0.3]) {
|
|
142
|
+
const url = canvas.toDataURL('image/jpeg', quality);
|
|
143
|
+
if (url.length <= CAPTURE_MAX_CHARS)
|
|
144
|
+
return url;
|
|
145
|
+
}
|
|
146
|
+
throw new Error('The page is too large to picture.');
|
|
147
|
+
}
|
|
118
148
|
function background(body, root) {
|
|
119
149
|
for (const element of [body, root]) {
|
|
120
150
|
const color = getComputedStyle(element).backgroundColor;
|
package/dist/client/pdf.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../src/client/pdf.ts"],"names":[],"mappings":"AAAA,qHAAqH;AACrH,qHAAqH;AACrH,iHAAiH;AAEjH,gDAAgD;AAChD,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC7C,MAAM,MAAM,GAAG,EAAE,CAAC;AAClB,6FAA6F;AAC7F,MAAM,cAAc,GAAG,GAAG,CAAC;AAC3B,wEAAwE;AACxE,MAAM,UAAU,GAAG,KAAM,CAAC;AAC1B,MAAM,YAAY,GAAG,IAAI,CAAC;AAU1B;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,KAAqB,EAAE,OAAwF;IACnI,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,KAAK,GAAG,CAAC,IAAyB,EAAE,EAAE;QACxC,MAAM,KAAK,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACrE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC,CAAC;IACF,6EAA6E;IAC7E,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,IAAgB,EAAE,EAAE;QAC3C,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;QACpB,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACtB,IAAI,EAAE,CAAC;QACP,KAAK,CAAC,YAAY,CAAC,CAAC;IACxB,CAAC,CAAC;IACF,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClE,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;IAElE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC3B,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;IAC5D,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,0BAA0B,KAAK,CAAC,MAAM,WAAW,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACrI,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,2BAA2B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IACjH,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACvB,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,KAAK,GAAG,CAAC,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;QAC7D,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QACtC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QACxC,MAAM,CAAC,GAAG,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC;QACnD,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,CACX,KAAK,CAAC,+CAA+C,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,oCAAoC,CAAC,GAAG,CAAC,wBAAwB,CAAC,GAAG,CAAC,SAAS,CAAC,CACzK,CAAC;QACF,MAAM,OAAO,GAAG,KAAK,GAAG,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC;QAC3G,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,cAAc,OAAO,CAAC,MAAM,gBAAgB,OAAO,aAAa,CAAC,CAAC,CAAC;QAC7F,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE;YACf,KAAK,CAAC,4CAA4C,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,MAAM,0EAA0E,KAAK,CAAC,IAAI,CAAC,MAAM,eAAe,CAAC,CAAC;YACjM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,KAAK,CAAC,aAAa,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,MAAM,CAAC;IACpB,KAAK,CAAC,WAAW,KAAK,yBAAyB,CAAC,CAAC;IACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;QAAE,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;IAC5F,KAAK,CAAC,qBAAqB,KAAK,2CAA2C,IAAI,WAAW,CAAC,CAAC;IAE5F,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACnB,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC;IACvB,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,yFAAyF;AACzF,SAAS,OAAO,CAAC,IAAY;IACzB,IAAI,GAAG,GAAG,MAAM,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5G,OAAO,IAAI,GAAG,GAAG,CAAC;AACtB,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,WAAW,CAAC,QAA4B,EAAE,IAAY,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE;IACpF,MAAM,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,IAAI,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC9F,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC;IAChH,OAAO,GAAG,IAAI,MAAM,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAA6C;IAC7E,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC;IACtC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACxF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5F,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,gBAAgB,IAAI,CAAC,EAAE,UAAU,GAAG,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC;IAChH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;QAChC,KAAK;QACL,MAAM;QACN,UAAU,EAAE,KAAK;QACjB,eAAe,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC;QACvC,2GAA2G;QAC3G,gBAAgB,EAAE,gFAAgF;QAClG,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,YAAY,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC;QACzF,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE;KACzB,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACtF,oFAAoF;IACpF,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAClH,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,aAAa,EAAE,CAAC;QAC1D,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC/C,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC;QACpC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5F,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/E,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,UAAU,CAAC,IAAiB,EAAE,IAAiB;IACpD,KAAK,MAAM,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC;QACxD,IAAI,KAAK,IAAI,KAAK,KAAK,aAAa,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1F,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,KAAK,UAAU,IAAI,CAAC,MAAyB;IACzC,MAAM,IAAI,GAAG,MAAM,IAAI,OAAO,CAAc,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;IAC7G,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACrE,OAAO,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,QAAQ,CAAC,IAAU,EAAE,QAAgB;IAC1C,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACzB,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK,EAAE,CAAC;IACb,IAAI,CAAC,MAAM,EAAE,CAAC;IACd,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,KAAM,CAAC,CAAC;AACvD,CAAC"}
|
|
1
|
+
{"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../src/client/pdf.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How fast the app's screens are, measured in the page by the bridge (see CreateAppOptions.reportSpeed), for
|
|
3
|
+
* `hawk-app usage --speed`: per screen (the names usage counts), `load` (the page starting to load until the app is
|
|
4
|
+
* connected, once), `data` (a screen showing until its platform calls are done: none in flight for SETTLE_MS),
|
|
5
|
+
* `interaction` (a click or key press whose next paint took 40 ms or more) and `call` (each platform call, by route,
|
|
6
|
+
* ids as `:id`, no query). Only times and these names are sent, in buckets, every FLUSH_MS and when the page is hidden.
|
|
7
|
+
* Failures to send are ignored.
|
|
8
|
+
*/
|
|
9
|
+
/** The buckets' upper bounds in ms (the platform's AppTelemetryRules.SpeedBuckets); one more bucket above the last. */
|
|
10
|
+
export declare const SPEED_BUCKETS: number[];
|
|
11
|
+
type Send = (path: string, body: unknown) => Promise<unknown>;
|
|
12
|
+
export declare function bucketOf(ms: number): number;
|
|
13
|
+
/** `GET data/queries/top-searches`: the method and the path without its query, ids (numbers, uuids, long hex) as `:id`. */
|
|
14
|
+
export declare function routeOf(method: string, path: string): string;
|
|
15
|
+
export interface Speed {
|
|
16
|
+
/** Another screen shows (a route, a tab): its data time starts now. */
|
|
17
|
+
screenChanged(name: string): void;
|
|
18
|
+
/** A platform call starts; the function it returns ends it. */
|
|
19
|
+
call(method: string, path: string): (status: number) => void;
|
|
20
|
+
destroy(): void;
|
|
21
|
+
}
|
|
22
|
+
export declare function startSpeed(send: Send, options: {
|
|
23
|
+
screen: () => string;
|
|
24
|
+
now?: () => number;
|
|
25
|
+
}): Speed;
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How fast the app's screens are, measured in the page by the bridge (see CreateAppOptions.reportSpeed), for
|
|
3
|
+
* `hawk-app usage --speed`: per screen (the names usage counts), `load` (the page starting to load until the app is
|
|
4
|
+
* connected, once), `data` (a screen showing until its platform calls are done: none in flight for SETTLE_MS),
|
|
5
|
+
* `interaction` (a click or key press whose next paint took 40 ms or more) and `call` (each platform call, by route,
|
|
6
|
+
* ids as `:id`, no query). Only times and these names are sent, in buckets, every FLUSH_MS and when the page is hidden.
|
|
7
|
+
* Failures to send are ignored.
|
|
8
|
+
*/
|
|
9
|
+
import { usageName } from './usage.js';
|
|
10
|
+
/** The buckets' upper bounds in ms (the platform's AppTelemetryRules.SpeedBuckets); one more bucket above the last. */
|
|
11
|
+
export const SPEED_BUCKETS = [100, 200, 300, 500, 750, 1000, 1500, 2000, 3000, 5000, 8000, 13000];
|
|
12
|
+
const FLUSH_MS = 15000;
|
|
13
|
+
const SETTLE_MS = 300;
|
|
14
|
+
const MAX_PER_SEND = 50;
|
|
15
|
+
const MAX_ROUTE = 120;
|
|
16
|
+
const INTERACTION_MS = 40;
|
|
17
|
+
export function bucketOf(ms) {
|
|
18
|
+
const i = SPEED_BUCKETS.findIndex((bound) => ms <= bound);
|
|
19
|
+
return i === -1 ? SPEED_BUCKETS.length : i;
|
|
20
|
+
}
|
|
21
|
+
/** `GET data/queries/top-searches`: the method and the path without its query, ids (numbers, uuids, long hex) as `:id`. */
|
|
22
|
+
export function routeOf(method, path) {
|
|
23
|
+
const segments = path
|
|
24
|
+
.split('?')[0]
|
|
25
|
+
.split('/')
|
|
26
|
+
.filter(Boolean)
|
|
27
|
+
.map((s) => (/^\d+$/.test(s) || /^[0-9a-f]{8,}$/i.test(s) || /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(s) ? ':id' : s))
|
|
28
|
+
.map((s) => s.replace(/[^A-Za-z0-9_:.()&+-]/g, '-'));
|
|
29
|
+
return `${method} ${segments.join('/')}`.slice(0, MAX_ROUTE);
|
|
30
|
+
}
|
|
31
|
+
export function startSpeed(send, options) {
|
|
32
|
+
const now = options.now ?? (() => (typeof performance !== 'undefined' ? performance.now() : Date.now()));
|
|
33
|
+
const counts = new Map();
|
|
34
|
+
let timer = null;
|
|
35
|
+
let settle = null;
|
|
36
|
+
// The first screen's data time starts with the page (navigation start is 0 on the performance clock).
|
|
37
|
+
let screen = usageName(options.screen()) || '/';
|
|
38
|
+
let screenStart = 0;
|
|
39
|
+
let inFlight = 0;
|
|
40
|
+
let sawCall = false;
|
|
41
|
+
let dataDone = false;
|
|
42
|
+
let lastEnd = 0;
|
|
43
|
+
const flush = () => {
|
|
44
|
+
if (timer)
|
|
45
|
+
clearTimeout(timer);
|
|
46
|
+
timer = null;
|
|
47
|
+
if (!counts.size)
|
|
48
|
+
return;
|
|
49
|
+
const events = [...counts.entries()].slice(0, MAX_PER_SEND);
|
|
50
|
+
events.forEach(([key]) => counts.delete(key));
|
|
51
|
+
send('telemetry/speed', { events: events.map(([, e]) => e) }).catch(() => undefined);
|
|
52
|
+
if (counts.size)
|
|
53
|
+
timer = setTimeout(flush, FLUSH_MS);
|
|
54
|
+
};
|
|
55
|
+
const add = (metric, name, route, ms) => {
|
|
56
|
+
if (!Number.isFinite(ms) || ms < 0)
|
|
57
|
+
return;
|
|
58
|
+
const key = `${metric}|${name}|${route}`;
|
|
59
|
+
const entry = counts.get(key) ?? { screen: name, metric, route, buckets: new Array(SPEED_BUCKETS.length + 1).fill(0), sumMs: 0 };
|
|
60
|
+
const b = bucketOf(ms);
|
|
61
|
+
if (entry.buckets[b] >= 1000)
|
|
62
|
+
return;
|
|
63
|
+
entry.buckets[b]++;
|
|
64
|
+
entry.sumMs += Math.round(ms);
|
|
65
|
+
counts.set(key, entry);
|
|
66
|
+
if (!timer)
|
|
67
|
+
timer = setTimeout(flush, FLUSH_MS);
|
|
68
|
+
};
|
|
69
|
+
const checkSettled = () => {
|
|
70
|
+
settle = null;
|
|
71
|
+
if (dataDone || !sawCall || inFlight > 0)
|
|
72
|
+
return;
|
|
73
|
+
if (now() - lastEnd < SETTLE_MS) {
|
|
74
|
+
settle = setTimeout(checkSettled, SETTLE_MS);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
dataDone = true;
|
|
78
|
+
add('data', screen, '', lastEnd - screenStart);
|
|
79
|
+
};
|
|
80
|
+
// Loaded and connected: the bridge starts this right after the handshake.
|
|
81
|
+
add('load', screen, '', now());
|
|
82
|
+
let observer = null;
|
|
83
|
+
if (typeof PerformanceObserver !== 'undefined' && PerformanceObserver.supportedEntryTypes?.includes('event')) {
|
|
84
|
+
observer = new PerformanceObserver((list) => {
|
|
85
|
+
for (const entry of list.getEntries()) {
|
|
86
|
+
if (entry.interactionId && entry.duration >= INTERACTION_MS)
|
|
87
|
+
add('interaction', screen, '', entry.duration);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
try {
|
|
91
|
+
observer.observe({ type: 'event', durationThreshold: INTERACTION_MS });
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
observer = null;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const onHidden = () => {
|
|
98
|
+
if (typeof document !== 'undefined' && document.visibilityState === 'hidden')
|
|
99
|
+
flush();
|
|
100
|
+
};
|
|
101
|
+
if (typeof document !== 'undefined')
|
|
102
|
+
document.addEventListener('visibilitychange', onHidden);
|
|
103
|
+
if (typeof window !== 'undefined')
|
|
104
|
+
window.addEventListener('pagehide', flush);
|
|
105
|
+
return {
|
|
106
|
+
screenChanged(name) {
|
|
107
|
+
const next = usageName(name);
|
|
108
|
+
if (!next || next === screen)
|
|
109
|
+
return;
|
|
110
|
+
screen = next;
|
|
111
|
+
screenStart = now();
|
|
112
|
+
sawCall = inFlight > 0;
|
|
113
|
+
dataDone = false;
|
|
114
|
+
},
|
|
115
|
+
call(method, path) {
|
|
116
|
+
// The bridge's own reports aren't the app's calls.
|
|
117
|
+
if (path.startsWith('telemetry/'))
|
|
118
|
+
return () => undefined;
|
|
119
|
+
const started = now();
|
|
120
|
+
const at = screen;
|
|
121
|
+
inFlight++;
|
|
122
|
+
sawCall = true;
|
|
123
|
+
if (settle)
|
|
124
|
+
clearTimeout(settle);
|
|
125
|
+
settle = null;
|
|
126
|
+
let ended = false;
|
|
127
|
+
return () => {
|
|
128
|
+
if (ended)
|
|
129
|
+
return;
|
|
130
|
+
ended = true;
|
|
131
|
+
lastEnd = now();
|
|
132
|
+
inFlight = Math.max(0, inFlight - 1);
|
|
133
|
+
add('call', at, routeOf(method, path), lastEnd - started);
|
|
134
|
+
if (inFlight === 0 && !settle)
|
|
135
|
+
settle = setTimeout(checkSettled, SETTLE_MS);
|
|
136
|
+
};
|
|
137
|
+
},
|
|
138
|
+
destroy() {
|
|
139
|
+
observer?.disconnect();
|
|
140
|
+
if (settle)
|
|
141
|
+
clearTimeout(settle);
|
|
142
|
+
if (typeof document !== 'undefined')
|
|
143
|
+
document.removeEventListener('visibilitychange', onHidden);
|
|
144
|
+
if (typeof window !== 'undefined')
|
|
145
|
+
window.removeEventListener('pagehide', flush);
|
|
146
|
+
flush();
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=speed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"speed.js","sourceRoot":"","sources":["../../src/client/speed.ts"],"names":[],"mappings":"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"}
|
package/dist/client/usage.d.ts
CHANGED
|
@@ -22,6 +22,8 @@ export declare function usageName(name: unknown): string;
|
|
|
22
22
|
*/
|
|
23
23
|
export declare function screenOfPath(pathname: string, slug: string): string;
|
|
24
24
|
export interface Usage extends UsageApi {
|
|
25
|
+
/** The screen showing ('' before the first). */
|
|
26
|
+
readonly current: string;
|
|
25
27
|
destroy(): void;
|
|
26
28
|
}
|
|
27
29
|
/**
|
|
@@ -31,5 +33,6 @@ export interface Usage extends UsageApi {
|
|
|
31
33
|
export declare function startUsage(send: Send, options: {
|
|
32
34
|
slug: string;
|
|
33
35
|
view: () => string | undefined;
|
|
36
|
+
onScreen?: (name: string) => void;
|
|
34
37
|
}): Usage;
|
|
35
38
|
export {};
|
package/dist/client/usage.js
CHANGED
|
@@ -74,6 +74,7 @@ export function startUsage(send, options) {
|
|
|
74
74
|
return;
|
|
75
75
|
lastScreen = name;
|
|
76
76
|
count('screen', name);
|
|
77
|
+
options.onScreen?.(name);
|
|
77
78
|
};
|
|
78
79
|
// A view is one screen; the full app's screens are its routes.
|
|
79
80
|
const view = options.view();
|
|
@@ -112,6 +113,9 @@ export function startUsage(send, options) {
|
|
|
112
113
|
document.addEventListener('visibilitychange', onHidden);
|
|
113
114
|
window.addEventListener('pagehide', flush);
|
|
114
115
|
return {
|
|
116
|
+
get current() {
|
|
117
|
+
return lastScreen;
|
|
118
|
+
},
|
|
115
119
|
screen: (name) => {
|
|
116
120
|
const named = usageName(name);
|
|
117
121
|
if (named)
|