@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.
Files changed (46) hide show
  1. package/README.md +29 -2
  2. package/dist/client/index.d.ts +23 -0
  3. package/dist/client/index.js +77 -2
  4. package/dist/client/index.js.map +1 -1
  5. package/dist/client/pdf.d.ts +5 -0
  6. package/dist/client/pdf.js +30 -0
  7. package/dist/client/pdf.js.map +1 -1
  8. package/dist/client/speed.d.ts +26 -0
  9. package/dist/client/speed.js +150 -0
  10. package/dist/client/speed.js.map +1 -0
  11. package/dist/client/usage.d.ts +3 -0
  12. package/dist/client/usage.js +4 -0
  13. package/dist/client/usage.js.map +1 -1
  14. package/dist/host/app-explain.d.ts +5 -0
  15. package/dist/host/app-explain.js +11 -4
  16. package/dist/host/app-explain.js.map +1 -1
  17. package/dist/host/app-frame.d.ts +68 -0
  18. package/dist/host/app-frame.js +102 -2
  19. package/dist/host/app-frame.js.map +1 -1
  20. package/dist/host/app-pdf.js +2 -4
  21. package/dist/host/app-pdf.js.map +1 -1
  22. package/dist/host/app-report.d.ts +12 -0
  23. package/dist/host/app-report.js +199 -0
  24. package/dist/host/app-report.js.map +1 -0
  25. package/dist/host/app-reviews.d.ts +47 -0
  26. package/dist/host/app-reviews.js +327 -0
  27. package/dist/host/app-reviews.js.map +1 -0
  28. package/dist/host/app-views.d.ts +11 -0
  29. package/dist/host/app-views.js +270 -0
  30. package/dist/host/app-views.js.map +1 -0
  31. package/dist/host/bridge-host.d.ts +11 -0
  32. package/dist/host/bridge-host.js +51 -1
  33. package/dist/host/bridge-host.js.map +1 -1
  34. package/dist/host/index.d.ts +4 -0
  35. package/dist/host/index.js +3 -0
  36. package/dist/host/index.js.map +1 -1
  37. package/dist/host/modal-overlay.d.ts +2 -0
  38. package/dist/host/modal-overlay.js +4 -0
  39. package/dist/host/modal-overlay.js.map +1 -1
  40. package/dist/protocol.d.ts +30 -0
  41. package/dist/protocol.js +2 -0
  42. package/dist/protocol.js.map +1 -1
  43. package/dist/shared/requests.d.ts +3 -1
  44. package/dist/shared/requests.js +14 -2
  45. package/dist/shared/requests.js.map +1 -1
  46. 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 badge with the count (one request for all the page's badges); a click opens the thread.
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
- `createApp({ reportErrors: false, reportOpens: false, reportUsage: false })` turns any of them off.
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
@@ -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
@@ -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' ? startUsage(report, { slug: context.app.slug, view: () => context?.view?.name }) : null;
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.'));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,eAAe,EAIf,iBAAiB,EACjB,cAAc,EAEd,gBAAgB,EAGhB,aAAa,EACb,WAAW,EAEX,QAAQ,EACR,eAAe,EACf,WAAW,EACX,WAAW,EACX,eAAe,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAoB,MAAM,uBAAuB,CAAC;AA+B5E,OAAO,EAEH,UAAU,IAAI,WAAW,EACzB,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,2BAA2B,EAC3B,eAAe,EACf,wBAAwB,EACxB,0BAA0B,EAC1B,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACZ,SAAS,EACT,kBAAkB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAqB,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAkB,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAE,UAAU,EAA6B,MAAM,YAAY,CAAC;AAEnE,cAAc,gBAAgB,CAAC;AA6C/B,cAAc,kBAAkB,CAAC;AA0MjC,sEAAsE;AACtE,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,UAA4B,EAAE;IAC1D,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC;IACpD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC;IACvD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;IAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,kBAAkB,IAAI,KAAK,CAAC;IACnD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAEzE,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;QAC7C,MAAM,IAAI,eAAe,CAAC,cAAc,EAAE,6CAA6C,CAAC,CAAC;IAC7F,CAAC;IAED,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAE5D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAqC,CAAC;IAC/D,IAAI,OAAuB,CAAC;IAC5B,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAoC,CAAC;IACtE,IAAI,QAAQ,GAAwB,IAAI,CAAC;IACzC,IAAI,WAAW,GAAkD,IAAI,CAAC;IACtE,IAAI,YAAY,GAA2B,IAAI,CAAC;IAChD,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,cAAc,GAA0B,IAAI,CAAC;IACjD,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;IACpB,IAAI,MAAM,GAAwB,IAAI,CAAC;IACvC,IAAI,SAAS,GAAqB,IAAI,CAAC;IAEvC,MAAM,SAAS,GAAG,CAAC,KAAmB,EAAE,EAAE;QACtC,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7F,OAAO;QACX,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;QAC3B,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,OAAO;YACX,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAChC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,KAAK,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACjF,CAAC;iBAAM,CAAC;gBACJ,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACnC,CAAC;YACD,OAAO;QACX,CAAC;QACD,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,gBAAgB,IAAI,OAAO,EAAE,CAAC;YAC5D,UAAU,CAAC,OAAO,CAAC,OAAyB,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC;YAC3C,WAAW,CAAC,OAAO,CAAC,OAAuB,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,cAAc,EAAE,CAAC;YAC/C,MAAM,EAAE,OAAO,EAAE,CAAC;QACtB,CAAC;QACD,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;YAC5C,KAAK,SAAS,CAAE,OAAO,CAAC,OAA4B,EAAE,EAAE,CAAC,CAAC;QAC9D,CAAC;IACL,CAAC,CAAC;IAEF,0EAA0E;IAC1E,IAAI,GAAG,GAAgC,IAAI,CAAC;IAE5C,KAAK,UAAU,SAAS,CAAC,EAAW;QAChC,IAAI,OAAO,EAAE,KAAK,QAAQ;YAAE,OAAO;QACnC,IAAI,KAAK,GAA6C,IAAI,CAAC;QAC3D,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,KAAK,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC;QACxF,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC;gBACD,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;gBAChE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,CAAC,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAC1F,MAAM,aAAa,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,SAAS,EAAE,CAAC,CAAC;YAC9G,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,KAAK,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvF,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YAC5E,CAAC;QACL,CAAC;QACD,MAAM,OAAO,CAAC,aAAa,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACvE,CAAC;IAED,SAAS,OAAO,CAAwB,IAAO,EAAE,OAAiC;QAC9E,IAAI,SAAS,EAAE,CAAC;YACZ,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,WAAW,EAAE,oCAAoC,CAAC,CAAC,CAAC;QAClG,CAAC;QACD,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;QACtB,MAAM,OAAO,GAAkB,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;QAChG,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC1B,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACnB,MAAM,CAAC,IAAI,eAAe,CAAC,SAAS,EAAE,wBAAwB,IAAI,YAAY,SAAS,KAAK,CAAC,CAAC,CAAC;YACnG,CAAC,EAAE,SAAS,CAAC,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAAmC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YACjF,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACP,CAAC;IAED,SAAS,WAAW,CAAC,IAAkB;QACnC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO;QACrF,QAAQ,GAAG,IAAI,CAAC;QAChB,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;YAClC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;YAClF,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,uBAAuB,EAAE,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QAC5F,CAAC;QACD,iBAAiB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,SAAS,UAAU,CAAC,IAAoB;QACpC,OAAO,GAAG,IAAI,CAAC;QACf,IAAI,OAAO,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;YAC/B,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,UAAU,QAAQ,CAAC,OAAmC,EAAE;QACzD,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,WAAW,IAAI,WAAW,CAAC,WAAW,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACrF,OAAO,WAAW,CAAC,KAAK,CAAC;QAC7B,CAAC;QACD,IAAI,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,OAAO,YAAY,CAAC;QACxB,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAoB,EAAE,EAAE;YACrG,WAAW,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YACjF,OAAO,MAAM,CAAC,KAAK,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,YAAY,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC;YACD,OAAO,MAAM,OAAO,CAAC;QACzB,CAAC;gBAAS,CAAC;YACP,IAAI,YAAY,KAAK,OAAO,EAAE,CAAC;gBAC3B,YAAY,GAAG,IAAI,CAAC;YACxB,CAAC;QACL,CAAC;IACL,CAAC;IAED,oHAAoH;IACpH,MAAM,UAAU,GAAG;QACf,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU;QACjC,QAAQ,EAAE,CAAC,YAAqB,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;QAC/D,SAAS;QACT,YAAY,EAAE,IAAI;QAClB,OAAO,EAAE,GAAuC,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;KAC9H,CAAC;IACF,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,CAAI,MAAiB,EAAE,IAAY,EAAE,IAAa,EAAE,cAAkC,EAAE,EAAE,CAAC,WAAW,CAAI,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IAE3K;;;;OAIG;IACH,SAAS,aAAa;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC,CAAC;IAC9E,CAAC;IAED,SAAS,MAAM,CAAC,MAAe;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC,CAAC;QACnD,UAAU,GAAG,KAAK,CAAC;QACnB,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,YAAY,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAEpD,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACzG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,eAAe,GAAG,gBAAgB,EAAE,CAAC;YACzD,MAAM,IAAI,eAAe,CAAC,mBAAmB,EAAE,mCAAmC,gBAAgB,GAAG,CAAC,CAAC;QAC3G,CAAC;QACD,UAAU,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,YAAY,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACvD,MAAM,KAAK,CAAC;IAChB,CAAC;IAED,yEAAyE;IACzE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,OAAQ,CAAC,IAAI,CAAC;IACzD,IAAI,UAAU,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE,CAAC;QACtD,cAAc,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE;YACrC,8FAA8F;YAC9F,IAAI,MAAM,EAAE,IAAI;gBAAE,OAAO;YACzB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;YAC/B,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;gBACxB,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC1C,CAAC;QACL,CAAC,CAAC,CAAC;QACH,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,KAAK,KAAK,IAAI,OAAO,gBAAgB,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC9H,MAAM,GAAG,WAAW,CAChB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,EAC3E,GAAG,EAAE;YACD,4DAA4D;YAC5D,IAAI,UAAU,IAAI,aAAa,EAAE,KAAK,UAAU;gBAAE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACtF,CAAC,CACJ,CAAC;IACN,CAAC;IAED,sFAAsF;IACtF,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,IAAa,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/E,IAAI,OAAO,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;QAChC,MAAM,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,OAAQ,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,OAAO,CAAC,YAAY,KAAK,KAAK,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClE,SAAS,GAAG,mBAAmB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,KAAK,GAAiB,OAAO,CAAC,WAAW,KAAK,KAAK,IAAI,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAErL,MAAM,SAAS,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAE/C,OAAO;QACH,IAAI,OAAO;YACP,OAAO,OAAO,CAAC;QACnB,CAAC;QACD,KAAK,CAAC,UAAU;YACZ,UAAU,CAAC,MAAM,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;YACnD,OAAO,OAAO,CAAC;QACnB,CAAC;QACD,IAAI,QAAQ;YACR,OAAO,QAAQ,CAAC;QACpB,CAAC;QACD,gBAAgB,CAAC,QAAQ;YACrB,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAChC,OAAO,GAAG,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpD,CAAC;QACD,eAAe,CAAC,QAAQ;YACpB,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;QACD,QAAQ;QACR,WAAW,CAAC,KAAc;YACtB,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAChF,CAAC;QACD,GAAG,EAAE;YACD,GAAG,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC;YACnE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;SACzE;QACD,SAAS;QACT,SAAS,EAAE,kBAAkB,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACpG,IAAI,EAAE;YACF,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC;SAC5F;QACD,SAAS,EAAE;YACP,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;YACjF,GAAG,qBAAqB,CAAC,QAAQ,CAAC;SACrC;QACD,SAAS,EAAE,kBAAkB,CAAC,QAAQ,CAAC;QACvC,KAAK,EAAE;YACH,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC;SACzE;QACD,UAAU,EAAE;YACR,GAAG,yBAAyB,CAAC,QAAQ,CAAC;YACtC,OAAO,EAAE,0BAA0B,CAAC,QAAQ,CAAC;YAC7C,OAAO,EAAE,0BAA0B,CAAC,QAAQ,CAAC;YAC7C,gBAAgB,EAAE;gBACd,IAAI,EAAE,CAAC,OAAO,GAAG,EAAE,EAAE,EAAE,CAAC,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC;gBAC/D,GAAG,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC;gBACxE,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;aACzF;YACD,QAAQ,EAAE,2BAA2B,CAAC,QAAQ,CAAC;YAC/C,KAAK,EAAE,wBAAwB,CAAC,QAAQ,CAAC;YACzC,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE,CAAC,yBAAyB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC;SACpG;QACD,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC;QACjC,EAAE,EAAE,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC;QACrC,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAAC;QACnC,OAAO,EAAE,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC;QAC9C,aAAa,EAAE,sBAAsB,CAAC,QAAQ,CAAC;QAC/C,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC;QACjC,SAAS,EAAE;YACP,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC;YACnD,UAAU,EAAE,CAAC,gBAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,gBAAgB,IAAI,IAAI,EAAE,CAAC;SACvG;QACD,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,CAAC;QACrC,KAAK,EAAE;YACH,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC;YACrC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC;SACxC;QACD,MAAM,EAAE;YACJ,KAAK,CAAC,IAAI,CAAC,MAAM;gBACb,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM;oBAAE,OAAO;gBAClC,IAAI,CAAC;oBACD,MAAM,OAAO,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC,CAAC;gBACvE,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,gDAAgD;oBAChD,IAAI,CAAC,CAAC,KAAK,YAAY,eAAe,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC;wBAAE,MAAM,KAAK,CAAC;gBACzF,CAAC;YACL,CAAC;SACJ;QACD,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC;QACjD,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;QAC5E,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC;QACnD,KAAK,CAAC,YAAY,CAAC,IAAI;YACnB,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACnE,MAAM,OAAO,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,MAAM;QACN,OAAO;YACH,IAAI,SAAS,EAAE,CAAC;gBACZ,OAAO;YACX,CAAC;YACD,SAAS,GAAG,IAAI,CAAC;YACjB,YAAY,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACvD,cAAc,EAAE,UAAU,EAAE,CAAC;YAC7B,MAAM,EAAE,OAAO,EAAE,CAAC;YAClB,SAAS,EAAE,OAAO,EAAE,CAAC;YACrB,KAAK,EAAE,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACtB,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC1B,KAAK,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,WAAW,EAAE,oCAAoC,CAAC,CAAC,CAAC;YACzF,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,SAAS,CAAC,KAAK,EAAE,CAAC;YAClB,WAAW,GAAG,IAAI,CAAC;QACvB,CAAC;KACJ,CAAC;AACN,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAyB,EAAE,YAAoB;IACtE,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC3F,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC;IACpE,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,MAAM,IAAI,eAAe,CAAC,SAAS,EAAE,2DAA2D,iBAAiB,YAAY,CAAC,CAAC;IACnI,CAAC;IACD,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,eAAe,UAAU,kBAAkB,CAAC,CAAC;QAC/F,CAAC;IACL,CAAC;IACD,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,SAAS,gBAAgB,CAAC,OAA+B,EAAE,OAAuB;IAC9E,OAAO;QACH,GAAG,OAAO;QACV,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,EAAE,IAAI;QACvD,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,EAAE,EAAE;KACpD,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,GAAG,wEAAwE,CAAC;AAE5F,SAAS,SAAS,CAAC,IAA4B;IAC3C,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO;IACX,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC;IACtC,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC7B,OAAO;IACX,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;IAClC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,uBAAuB,CAAC,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9C,KAAK,CAAC,YAAY,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QACzC,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC;QAC/B,gFAAgF;QAChF,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;AACL,CAAC;AAED,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;AAE7C,SAAS,UAAU,CAAC,KAAmC;IACnD,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO;IACX,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC;IACtC,kBAAkB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,kBAAkB,CAAC,KAAK,EAAE,CAAC;IAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QAC9B,OAAO;IACX,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;IACpC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACxD,MAAM,IAAI,GAAG,UAAU,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
@@ -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>;
@@ -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;
@@ -1 +1 @@
1
- {"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../src/client/pdf.ts"],"names":[],"mappings":"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"}
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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"}
@@ -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 {};
@@ -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)