@verdant-web/store 5.4.2 → 5.4.3

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.
@@ -24,6 +24,8 @@ export declare abstract class BaseQuery<T> extends Disposable {
24
24
  private _status;
25
25
  private _executionPromise;
26
26
  private _timing;
27
+ private _startedAt;
28
+ private _timingHistory;
27
29
  protected context: Context;
28
30
  readonly collection: string;
29
31
  readonly key: string;
@@ -2,7 +2,7 @@ var _a;
2
2
  import { EventSubscriber } from '@verdant-web/common';
3
3
  import { Entity } from '../entities/Entity.js';
4
4
  import { Disposable } from '../utils/Disposable.js';
5
- import { getDiagnosticResult } from './diagnostics.js';
5
+ import { getDiagnosticResult, } from './diagnostics.js';
6
6
  import { filterResultSet } from './utils.js';
7
7
  export const ON_ALL_UNSUBSCRIBED = Symbol('ON_ALL_UNSUBSCRIBED');
8
8
  export const UPDATE = Symbol('UPDATE');
@@ -22,6 +22,8 @@ export class BaseQuery extends Disposable {
22
22
  hydration: null,
23
23
  total: null,
24
24
  };
25
+ this._startedAt = null;
26
+ this._timingHistory = [];
25
27
  this.setValue = (value) => {
26
28
  this._rawValue = value;
27
29
  this.subscribeToDeleteAndRestore(this._rawValue);
@@ -81,6 +83,7 @@ export class BaseQuery extends Disposable {
81
83
  };
82
84
  this.execute = () => {
83
85
  const startTime = performance.now();
86
+ this._startedAt = Date.now();
84
87
  this.context.log('debug', 'Executing query', this.key);
85
88
  if (this.status === 'initial') {
86
89
  this.status = 'initializing';
@@ -105,8 +108,13 @@ export class BaseQuery extends Disposable {
105
108
  }
106
109
  })
107
110
  .finally(() => {
111
+ var _b;
108
112
  const duration = performance.now() - startTime;
109
113
  this._timing.total = duration;
114
+ this._timingHistory = [
115
+ ...this._timingHistory,
116
+ Object.assign({ startedAt: (_b = this._startedAt) !== null && _b !== void 0 ? _b : Date.now() }, this._timing),
117
+ ].slice(-100);
110
118
  this.context.log('debug', 'Query executed', this.key, `Duration: ${duration}ms`);
111
119
  });
112
120
  return this._executionPromise;
@@ -131,12 +139,14 @@ export class BaseQuery extends Disposable {
131
139
  };
132
140
  this.getDiagnostic = (active) => ({
133
141
  key: this.key,
142
+ startedAt: this._startedAt,
134
143
  collection: this.collection,
135
144
  type: this.type,
136
145
  status: this.status,
137
146
  active,
138
147
  result: getDiagnosticResult(this.current),
139
148
  timing: Object.assign({}, this._timing),
149
+ runs: this._timingHistory.map((run) => (Object.assign({}, run))),
140
150
  });
141
151
  this[_a] = (handler) => {
142
152
  this._allUnsubscribedHandler = handler;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseQuery.js","sourceRoot":"","sources":["../../../src/queries/BaseQuery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseQuery.js","sourceRoot":"","sources":["../../../src/queries/BaseQuery.ts"],"names":[],"mappings":"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"}
@@ -4,14 +4,19 @@ export type QueryTiming = {
4
4
  hydration: number | null;
5
5
  total: number | null;
6
6
  };
7
+ export type QueryRun = QueryTiming & {
8
+ startedAt: number;
9
+ };
7
10
  export type QueryDiagnostic = {
8
11
  key: string;
12
+ startedAt: number | null;
9
13
  collection: string;
10
14
  type: string;
11
15
  status: QueryStatus;
12
16
  active: boolean;
13
17
  result: unknown;
14
18
  timing: QueryTiming;
19
+ runs: QueryRun[];
15
20
  };
16
21
  export type QueryDiagnostics = {
17
22
  queries: QueryDiagnostic[];
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../src/queries/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAuB/C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAc,EAAW,EAAE;IAC9D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC,CAAC"}
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../src/queries/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AA6B/C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAc,EAAW,EAAE;IAC9D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verdant-web/store",
3
- "version": "5.4.2",
3
+ "version": "5.4.3",
4
4
  "access": "public",
5
5
  "type": "module",
6
6
  "main": "dist/esm/index.js",
@@ -2,7 +2,12 @@ import { EventSubscriber } from '@verdant-web/common';
2
2
  import { Context } from '../context/context.js';
3
3
  import { Entity } from '../entities/Entity.js';
4
4
  import { Disposable } from '../utils/Disposable.js';
5
- import { getDiagnosticResult, QueryDiagnostic, QueryTiming } from './diagnostics.js';
5
+ import {
6
+ getDiagnosticResult,
7
+ QueryDiagnostic,
8
+ QueryRun,
9
+ QueryTiming,
10
+ } from './diagnostics.js';
6
11
  import { filterResultSet } from './utils.js';
7
12
 
8
13
  export type BaseQueryEvents = {
@@ -43,6 +48,8 @@ export abstract class BaseQuery<T> extends Disposable {
43
48
  hydration: null,
44
49
  total: null,
45
50
  };
51
+ private _startedAt: number | null = null;
52
+ private _timingHistory: QueryRun[] = [];
46
53
 
47
54
  protected context;
48
55
 
@@ -232,11 +239,8 @@ export abstract class BaseQuery<T> extends Disposable {
232
239
 
233
240
  execute = () => {
234
241
  const startTime = performance.now();
235
- this.context.log(
236
- 'debug',
237
- 'Executing query',
238
- this.key,
239
- );
242
+ this._startedAt = Date.now();
243
+ this.context.log('debug', 'Executing query', this.key);
240
244
 
241
245
  if (this.status === 'initial') {
242
246
  this.status = 'initializing';
@@ -264,6 +268,10 @@ export abstract class BaseQuery<T> extends Disposable {
264
268
  .finally(() => {
265
269
  const duration = performance.now() - startTime;
266
270
  this._timing.total = duration;
271
+ this._timingHistory = [
272
+ ...this._timingHistory,
273
+ { startedAt: this._startedAt ?? Date.now(), ...this._timing },
274
+ ].slice(-100);
267
275
  this.context.log(
268
276
  'debug',
269
277
  'Query executed',
@@ -296,12 +304,14 @@ export abstract class BaseQuery<T> extends Disposable {
296
304
 
297
305
  getDiagnostic = (active: boolean): QueryDiagnostic => ({
298
306
  key: this.key,
307
+ startedAt: this._startedAt,
299
308
  collection: this.collection,
300
309
  type: this.type,
301
310
  status: this.status,
302
311
  active,
303
312
  result: getDiagnosticResult(this.current),
304
313
  timing: { ...this._timing },
314
+ runs: this._timingHistory.map((run) => ({ ...run })),
305
315
  });
306
316
  protected abstract run(): Promise<void>;
307
317
 
@@ -7,14 +7,20 @@ export type QueryTiming = {
7
7
  total: number | null;
8
8
  };
9
9
 
10
+ export type QueryRun = QueryTiming & {
11
+ startedAt: number;
12
+ };
13
+
10
14
  export type QueryDiagnostic = {
11
15
  key: string;
16
+ startedAt: number | null;
12
17
  collection: string;
13
18
  type: string;
14
19
  status: QueryStatus;
15
20
  active: boolean;
16
21
  result: unknown;
17
22
  timing: QueryTiming;
23
+ runs: QueryRun[];
18
24
  };
19
25
 
20
26
  export type QueryDiagnostics = {