@cratis/arc 22.148.0 → 22.148.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.
@@ -16,6 +16,7 @@ export declare class ObservableQueryDiagnostics implements IObservableQueryDiagn
16
16
  endTracking(cacheKey: string): void;
17
17
  private _buildMultiplexerDiagnostics;
18
18
  private _createSnapshot;
19
+ private _publishSnapshotWhenObserved;
19
20
  private _publishSnapshot;
20
21
  }
21
22
  //# sourceMappingURL=ObservableQueryDiagnostics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ObservableQueryDiagnostics.d.ts","sourceRoot":"","sources":["../../../queries/ObservableQueryDiagnostics.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAW,MAAM,MAAM,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EACH,kCAAkC,EAElC,oBAAoB,EAGvB,MAAM,yCAAyC,CAAC;AAMjD,qBAAa,0BAA2B,YAAW,2BAA2B;IAWtE,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IAZxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqD;IAChF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAQ1D,YACqB,MAAM,EAAE,kBAAkB,EAC1B,eAAe,EAAE,MAAM,0BAA0B,GAAG,SAAS,EAC7D,mBAAmB,EAAE,MAAM,oBAAoB,EAChE;IAKJ,IAAI,UAAU,IAAI,UAAU,CAAC,kCAAkC,CAAC,CAE/D;IAGD,WAAW,IAAI,kCAAkC,CAIhD;IAGD,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAGnD;IAGD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAGlC;IAED,OAAO,CAAC,4BAA4B;IAwBpC,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,gBAAgB;CAG3B"}
1
+ {"version":3,"file":"ObservableQueryDiagnostics.d.ts","sourceRoot":"","sources":["../../../queries/ObservableQueryDiagnostics.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAW,MAAM,MAAM,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EACH,kCAAkC,EAElC,oBAAoB,EAGvB,MAAM,yCAAyC,CAAC;AAMjD,qBAAa,0BAA2B,YAAW,2BAA2B;IAWtE,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IAZxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqD;IAChF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAQ1D,YACqB,MAAM,EAAE,kBAAkB,EAC1B,eAAe,EAAE,MAAM,0BAA0B,GAAG,SAAS,EAC7D,mBAAmB,EAAE,MAAM,oBAAoB,EAChE;IAKJ,IAAI,UAAU,IAAI,UAAU,CAAC,kCAAkC,CAAC,CAE/D;IAGD,WAAW,IAAI,kCAAkC,CAIhD;IAGD,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAGnD;IAGD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAGlC;IAED,OAAO,CAAC,4BAA4B;IAwBpC,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,4BAA4B;IAMpC,OAAO,CAAC,gBAAgB;CAG3B"}
@@ -35,11 +35,11 @@ var rxjs = require('rxjs');
35
35
  }
36
36
  /** @inheritdoc */ beginTracking(cacheKey, owner) {
37
37
  this._ownersByKey.set(cacheKey, owner);
38
- this._publishSnapshot(this._createSnapshot());
38
+ this._publishSnapshotWhenObserved();
39
39
  }
40
40
  /** @inheritdoc */ endTracking(cacheKey) {
41
41
  this._ownersByKey.delete(cacheKey);
42
- this._publishSnapshot(this._createSnapshot());
42
+ this._publishSnapshotWhenObserved();
43
43
  }
44
44
  _buildMultiplexerDiagnostics() {
45
45
  const mux = this._getMultiplexer();
@@ -93,6 +93,11 @@ var rxjs = require('rxjs');
93
93
  timestamp: new Date().toISOString()
94
94
  };
95
95
  }
96
+ _publishSnapshotWhenObserved() {
97
+ if (this._snapshots.observed) {
98
+ this._publishSnapshot(this._createSnapshot());
99
+ }
100
+ }
96
101
  _publishSnapshot(snapshot) {
97
102
  this._snapshots.next(snapshot);
98
103
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ObservableQueryDiagnostics.js","sources":["../../../queries/ObservableQueryDiagnostics.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { Observable, Subject } from 'rxjs';\nimport { QueryInstanceCache } from './QueryInstanceCache.js';\nimport { ObservableQueryMultiplexer } from './ObservableQueryMultiplexer.js';\nimport { IObservableQueryDiagnostics } from './IObservableQueryDiagnostics.js';\nimport {\n ObservableQueryDiagnosticsSnapshot,\n MultiplexerDiagnostics,\n TransportDiagnostics,\n HealthDiagnostics,\n OwnershipDiagnostics,\n} from './ObservableQueryDiagnosticsSnapshot.js';\n\n/**\n * Implements the {@link IObservableQueryDiagnostics} contract by collecting live state from\n * the {@link QueryInstanceCache} and the shared {@link ObservableQueryMultiplexer}.\n */\nexport class ObservableQueryDiagnostics implements IObservableQueryDiagnostics {\n private readonly _snapshots = new Subject<ObservableQueryDiagnosticsSnapshot>();\n private readonly _ownersByKey = new Map<string, string>();\n\n /**\n * Initializes a new instance of {@link ObservableQueryDiagnostics}.\n * @param _cache The {@link QueryInstanceCache} whose state will be reflected.\n * @param _getMultiplexer Factory that returns the current shared multiplexer, or {@code undefined}.\n * @param _getTransportConfig Factory that returns the current transport diagnostics.\n */\n constructor(\n private readonly _cache: QueryInstanceCache,\n private readonly _getMultiplexer: () => ObservableQueryMultiplexer | undefined,\n private readonly _getTransportConfig: () => TransportDiagnostics,\n ) {}\n\n /**\n * Stream of diagnostics snapshots.\n */\n get snapshots$(): Observable<ObservableQueryDiagnosticsSnapshot> {\n return this._snapshots.asObservable();\n }\n\n /** @inheritdoc */\n getSnapshot(): ObservableQueryDiagnosticsSnapshot {\n const snapshot = this._createSnapshot();\n this._publishSnapshot(snapshot);\n return snapshot;\n }\n\n /** @inheritdoc */\n beginTracking(cacheKey: string, owner: string): void {\n this._ownersByKey.set(cacheKey, owner);\n this._publishSnapshot(this._createSnapshot());\n }\n\n /** @inheritdoc */\n endTracking(cacheKey: string): void {\n this._ownersByKey.delete(cacheKey);\n this._publishSnapshot(this._createSnapshot());\n }\n\n private _buildMultiplexerDiagnostics(): MultiplexerDiagnostics {\n const mux = this._getMultiplexer();\n if (!mux) {\n return {\n isConnected: false,\n configuredConnectionCount: 0,\n effectiveConnectionCount: 0,\n activeConnectionCount: 0,\n connections: [],\n };\n }\n\n const connections = mux.getConnectionsSnapshot();\n const activeConnectionCount = connections.filter(c => c.isConnected).length;\n\n return {\n isConnected: activeConnectionCount > 0,\n configuredConnectionCount: connections.length,\n effectiveConnectionCount: connections.length,\n activeConnectionCount,\n connections,\n };\n }\n\n private _createSnapshot(): ObservableQueryDiagnosticsSnapshot {\n const transport = this._getTransportConfig();\n const multiplexer = this._buildMultiplexerDiagnostics();\n const cache = this._cache.getDiagnosticsSnapshot();\n\n const ownersByQueryKey: Record<string, string> = {};\n const queriesByOwner: Record<string, string[]> = {};\n\n for (const [key, owner] of this._ownersByKey) {\n ownersByQueryKey[key] = owner;\n if (!queriesByOwner[owner]) {\n queriesByOwner[owner] = [];\n }\n queriesByOwner[owner].push(key);\n }\n\n const ownership: OwnershipDiagnostics = { ownersByQueryKey, queriesByOwner };\n\n const disconnectedQueryCount = multiplexer.connections.filter(c => !c.isConnected).length;\n const health: HealthDiagnostics = {\n allQueriesConnected: multiplexer.isConnected && cache.healthy,\n disconnectedQueryCount,\n };\n\n return {\n health,\n transport,\n multiplexer,\n cache,\n ownership,\n timestamp: new Date().toISOString(),\n };\n }\n\n private _publishSnapshot(snapshot: ObservableQueryDiagnosticsSnapshot): void {\n this._snapshots.next(snapshot);\n }\n}\n"],"names":["ObservableQueryDiagnostics","_snapshots","Subject","_ownersByKey","Map","_cache","_getMultiplexer","_getTransportConfig","snapshots$","asObservable","getSnapshot","snapshot","_createSnapshot","_publishSnapshot","beginTracking","cacheKey","owner","set","endTracking","delete","_buildMultiplexerDiagnostics","mux","isConnected","configuredConnectionCount","effectiveConnectionCount","activeConnectionCount","connections","getConnectionsSnapshot","filter","c","length","transport","multiplexer","cache","getDiagnosticsSnapshot","ownersByQueryKey","queriesByOwner","key","push","ownership","disconnectedQueryCount","health","allQueriesConnected","healthy","timestamp","Date","toISOString","next"],"mappings":"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"}
1
+ {"version":3,"file":"ObservableQueryDiagnostics.js","sources":["../../../queries/ObservableQueryDiagnostics.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { Observable, Subject } from 'rxjs';\nimport { QueryInstanceCache } from './QueryInstanceCache.js';\nimport { ObservableQueryMultiplexer } from './ObservableQueryMultiplexer.js';\nimport { IObservableQueryDiagnostics } from './IObservableQueryDiagnostics.js';\nimport {\n ObservableQueryDiagnosticsSnapshot,\n MultiplexerDiagnostics,\n TransportDiagnostics,\n HealthDiagnostics,\n OwnershipDiagnostics,\n} from './ObservableQueryDiagnosticsSnapshot.js';\n\n/**\n * Implements the {@link IObservableQueryDiagnostics} contract by collecting live state from\n * the {@link QueryInstanceCache} and the shared {@link ObservableQueryMultiplexer}.\n */\nexport class ObservableQueryDiagnostics implements IObservableQueryDiagnostics {\n private readonly _snapshots = new Subject<ObservableQueryDiagnosticsSnapshot>();\n private readonly _ownersByKey = new Map<string, string>();\n\n /**\n * Initializes a new instance of {@link ObservableQueryDiagnostics}.\n * @param _cache The {@link QueryInstanceCache} whose state will be reflected.\n * @param _getMultiplexer Factory that returns the current shared multiplexer, or {@code undefined}.\n * @param _getTransportConfig Factory that returns the current transport diagnostics.\n */\n constructor(\n private readonly _cache: QueryInstanceCache,\n private readonly _getMultiplexer: () => ObservableQueryMultiplexer | undefined,\n private readonly _getTransportConfig: () => TransportDiagnostics,\n ) {}\n\n /**\n * Stream of diagnostics snapshots.\n */\n get snapshots$(): Observable<ObservableQueryDiagnosticsSnapshot> {\n return this._snapshots.asObservable();\n }\n\n /** @inheritdoc */\n getSnapshot(): ObservableQueryDiagnosticsSnapshot {\n const snapshot = this._createSnapshot();\n this._publishSnapshot(snapshot);\n return snapshot;\n }\n\n /** @inheritdoc */\n beginTracking(cacheKey: string, owner: string): void {\n this._ownersByKey.set(cacheKey, owner);\n this._publishSnapshotWhenObserved();\n }\n\n /** @inheritdoc */\n endTracking(cacheKey: string): void {\n this._ownersByKey.delete(cacheKey);\n this._publishSnapshotWhenObserved();\n }\n\n private _buildMultiplexerDiagnostics(): MultiplexerDiagnostics {\n const mux = this._getMultiplexer();\n if (!mux) {\n return {\n isConnected: false,\n configuredConnectionCount: 0,\n effectiveConnectionCount: 0,\n activeConnectionCount: 0,\n connections: [],\n };\n }\n\n const connections = mux.getConnectionsSnapshot();\n const activeConnectionCount = connections.filter(c => c.isConnected).length;\n\n return {\n isConnected: activeConnectionCount > 0,\n configuredConnectionCount: connections.length,\n effectiveConnectionCount: connections.length,\n activeConnectionCount,\n connections,\n };\n }\n\n private _createSnapshot(): ObservableQueryDiagnosticsSnapshot {\n const transport = this._getTransportConfig();\n const multiplexer = this._buildMultiplexerDiagnostics();\n const cache = this._cache.getDiagnosticsSnapshot();\n\n const ownersByQueryKey: Record<string, string> = {};\n const queriesByOwner: Record<string, string[]> = {};\n\n for (const [key, owner] of this._ownersByKey) {\n ownersByQueryKey[key] = owner;\n if (!queriesByOwner[owner]) {\n queriesByOwner[owner] = [];\n }\n queriesByOwner[owner].push(key);\n }\n\n const ownership: OwnershipDiagnostics = { ownersByQueryKey, queriesByOwner };\n\n const disconnectedQueryCount = multiplexer.connections.filter(c => !c.isConnected).length;\n const health: HealthDiagnostics = {\n allQueriesConnected: multiplexer.isConnected && cache.healthy,\n disconnectedQueryCount,\n };\n\n return {\n health,\n transport,\n multiplexer,\n cache,\n ownership,\n timestamp: new Date().toISOString(),\n };\n }\n\n private _publishSnapshotWhenObserved(): void {\n if (this._snapshots.observed) {\n this._publishSnapshot(this._createSnapshot());\n }\n }\n\n private _publishSnapshot(snapshot: ObservableQueryDiagnosticsSnapshot): void {\n this._snapshots.next(snapshot);\n }\n}\n"],"names":["ObservableQueryDiagnostics","_snapshots","Subject","_ownersByKey","Map","_cache","_getMultiplexer","_getTransportConfig","snapshots$","asObservable","getSnapshot","snapshot","_createSnapshot","_publishSnapshot","beginTracking","cacheKey","owner","set","_publishSnapshotWhenObserved","endTracking","delete","_buildMultiplexerDiagnostics","mux","isConnected","configuredConnectionCount","effectiveConnectionCount","activeConnectionCount","connections","getConnectionsSnapshot","filter","c","length","transport","multiplexer","cache","getDiagnosticsSnapshot","ownersByQueryKey","queriesByOwner","key","push","ownership","disconnectedQueryCount","health","allQueriesConnected","healthy","timestamp","Date","toISOString","observed","next"],"mappings":";;;;AAAA;AACA;AAcA;;;AAGC,IACM,MAAMA,0BAAAA,CAAAA;;;;AACQC,IAAAA,UAAAA,GAAa,IAAIC,YAAAA,EAAAA;AACjBC,IAAAA,YAAAA,GAAe,IAAIC,GAAAA,EAAAA;AAEpC;;;;;QAMA,WAAA,CACI,MAA2C,EAC3C,eAA8E,EAC9E,mBAAgE,CAClE;aAHmBC,MAAAA,GAAAA,MAAAA;aACAC,eAAAA,GAAAA,eAAAA;aACAC,mBAAAA,GAAAA,mBAAAA;AAClB,IAAA;AAEH;;AAEC,QACD,IAAIC,UAAAA,GAA6D;AAC7D,QAAA,OAAO,IAAI,CAACP,UAAU,CAACQ,YAAY,EAAA;AACvC,IAAA;AAEA,uBACAC,WAAAA,GAAkD;QAC9C,MAAMC,QAAAA,GAAW,IAAI,CAACC,eAAe,EAAA;QACrC,IAAI,CAACC,gBAAgB,CAACF,QAAAA,CAAAA;QACtB,OAAOA,QAAAA;AACX,IAAA;AAEA,uBACAG,aAAAA,CAAcC,QAAgB,EAAEC,KAAa,EAAQ;AACjD,QAAA,IAAI,CAACb,YAAY,CAACc,GAAG,CAACF,QAAAA,EAAUC,KAAAA,CAAAA;AAChC,QAAA,IAAI,CAACE,4BAA4B,EAAA;AACrC,IAAA;uBAGAC,WAAAA,CAAYJ,QAAgB,EAAQ;AAChC,QAAA,IAAI,CAACZ,YAAY,CAACiB,MAAM,CAACL,QAAAA,CAAAA;AACzB,QAAA,IAAI,CAACG,4BAA4B,EAAA;AACrC,IAAA;IAEQG,4BAAAA,GAAuD;QAC3D,MAAMC,GAAAA,GAAM,IAAI,CAAChB,eAAe,EAAA;AAChC,QAAA,IAAI,CAACgB,GAAAA,EAAK;YACN,OAAO;gBACHC,WAAAA,EAAa,KAAA;gBACbC,yBAAAA,EAA2B,CAAA;gBAC3BC,wBAAAA,EAA0B,CAAA;gBAC1BC,qBAAAA,EAAuB,CAAA;AACvBC,gBAAAA,WAAAA,EAAa;AACjB,aAAA;AACJ,QAAA;QAEA,MAAMA,WAAAA,GAAcL,IAAIM,sBAAsB,EAAA;QAC9C,MAAMF,qBAAAA,GAAwBC,YAAYE,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAEP,WAAW,CAAA,CAAEQ,MAAM;QAE3E,OAAO;AACHR,YAAAA,WAAAA,EAAaG,qBAAAA,GAAwB,CAAA;AACrCF,YAAAA,yBAAAA,EAA2BG,YAAYI,MAAM;AAC7CN,YAAAA,wBAAAA,EAA0BE,YAAYI,MAAM;AAC5CL,YAAAA,qBAAAA;AACAC,YAAAA;AACJ,SAAA;AACJ,IAAA;IAEQf,eAAAA,GAAsD;QAC1D,MAAMoB,SAAAA,GAAY,IAAI,CAACzB,mBAAmB,EAAA;QAC1C,MAAM0B,WAAAA,GAAc,IAAI,CAACZ,4BAA4B,EAAA;AACrD,QAAA,MAAMa,KAAAA,GAAQ,IAAI,CAAC7B,MAAM,CAAC8B,sBAAsB,EAAA;AAEhD,QAAA,MAAMC,mBAA2C,EAAC;AAClD,QAAA,MAAMC,iBAA2C,EAAC;QAElD,KAAK,MAAM,CAACC,GAAAA,EAAKtB,KAAAA,CAAM,IAAI,IAAI,CAACb,YAAY,CAAE;YAC1CiC,gBAAgB,CAACE,IAAI,GAAGtB,KAAAA;AACxB,YAAA,IAAI,CAACqB,cAAc,CAACrB,KAAAA,CAAM,EAAE;gBACxBqB,cAAc,CAACrB,KAAAA,CAAM,GAAG,EAAE;AAC9B,YAAA;AACAqB,YAAAA,cAAc,CAACrB,KAAAA,CAAM,CAACuB,IAAI,CAACD,GAAAA,CAAAA;AAC/B,QAAA;AAEA,QAAA,MAAME,SAAAA,GAAkC;AAAEJ,YAAAA,gBAAAA;AAAkBC,YAAAA;AAAe,SAAA;AAE3E,QAAA,MAAMI,sBAAAA,GAAyBR,WAAAA,CAAYN,WAAW,CAACE,MAAM,CAACC,CAAAA,CAAAA,GAAK,CAACA,CAAAA,CAAEP,WAAW,CAAA,CAAEQ,MAAM;AACzF,QAAA,MAAMW,MAAAA,GAA4B;AAC9BC,YAAAA,mBAAAA,EAAqBV,WAAAA,CAAYV,WAAW,IAAIW,KAAAA,CAAMU,OAAO;AAC7DH,YAAAA;AACJ,SAAA;QAEA,OAAO;AACHC,YAAAA,MAAAA;AACAV,YAAAA,SAAAA;AACAC,YAAAA,WAAAA;AACAC,YAAAA,KAAAA;AACAM,YAAAA,SAAAA;YACAK,SAAAA,EAAW,IAAIC,OAAOC,WAAW;AACrC,SAAA;AACJ,IAAA;IAEQ7B,4BAAAA,GAAqC;AACzC,QAAA,IAAI,IAAI,CAACjB,UAAU,CAAC+C,QAAQ,EAAE;AAC1B,YAAA,IAAI,CAACnC,gBAAgB,CAAC,IAAI,CAACD,eAAe,EAAA,CAAA;AAC9C,QAAA;AACJ,IAAA;AAEQC,IAAAA,gBAAAA,CAAiBF,QAA4C,EAAQ;AACzE,QAAA,IAAI,CAACV,UAAU,CAACgD,IAAI,CAACtC,QAAAA,CAAAA;AACzB,IAAA;AACJ;;"}
@@ -16,6 +16,7 @@ export declare class ObservableQueryDiagnostics implements IObservableQueryDiagn
16
16
  endTracking(cacheKey: string): void;
17
17
  private _buildMultiplexerDiagnostics;
18
18
  private _createSnapshot;
19
+ private _publishSnapshotWhenObserved;
19
20
  private _publishSnapshot;
20
21
  }
21
22
  //# sourceMappingURL=ObservableQueryDiagnostics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ObservableQueryDiagnostics.d.ts","sourceRoot":"","sources":["../../../queries/ObservableQueryDiagnostics.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAW,MAAM,MAAM,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EACH,kCAAkC,EAElC,oBAAoB,EAGvB,MAAM,yCAAyC,CAAC;AAMjD,qBAAa,0BAA2B,YAAW,2BAA2B;IAWtE,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IAZxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqD;IAChF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAQ1D,YACqB,MAAM,EAAE,kBAAkB,EAC1B,eAAe,EAAE,MAAM,0BAA0B,GAAG,SAAS,EAC7D,mBAAmB,EAAE,MAAM,oBAAoB,EAChE;IAKJ,IAAI,UAAU,IAAI,UAAU,CAAC,kCAAkC,CAAC,CAE/D;IAGD,WAAW,IAAI,kCAAkC,CAIhD;IAGD,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAGnD;IAGD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAGlC;IAED,OAAO,CAAC,4BAA4B;IAwBpC,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,gBAAgB;CAG3B"}
1
+ {"version":3,"file":"ObservableQueryDiagnostics.d.ts","sourceRoot":"","sources":["../../../queries/ObservableQueryDiagnostics.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAW,MAAM,MAAM,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EACH,kCAAkC,EAElC,oBAAoB,EAGvB,MAAM,yCAAyC,CAAC;AAMjD,qBAAa,0BAA2B,YAAW,2BAA2B;IAWtE,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IAZxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqD;IAChF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAQ1D,YACqB,MAAM,EAAE,kBAAkB,EAC1B,eAAe,EAAE,MAAM,0BAA0B,GAAG,SAAS,EAC7D,mBAAmB,EAAE,MAAM,oBAAoB,EAChE;IAKJ,IAAI,UAAU,IAAI,UAAU,CAAC,kCAAkC,CAAC,CAE/D;IAGD,WAAW,IAAI,kCAAkC,CAIhD;IAGD,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAGnD;IAGD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAGlC;IAED,OAAO,CAAC,4BAA4B;IAwBpC,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,4BAA4B;IAMpC,OAAO,CAAC,gBAAgB;CAG3B"}
@@ -33,11 +33,11 @@ import { Subject } from 'rxjs';
33
33
  }
34
34
  /** @inheritdoc */ beginTracking(cacheKey, owner) {
35
35
  this._ownersByKey.set(cacheKey, owner);
36
- this._publishSnapshot(this._createSnapshot());
36
+ this._publishSnapshotWhenObserved();
37
37
  }
38
38
  /** @inheritdoc */ endTracking(cacheKey) {
39
39
  this._ownersByKey.delete(cacheKey);
40
- this._publishSnapshot(this._createSnapshot());
40
+ this._publishSnapshotWhenObserved();
41
41
  }
42
42
  _buildMultiplexerDiagnostics() {
43
43
  const mux = this._getMultiplexer();
@@ -91,6 +91,11 @@ import { Subject } from 'rxjs';
91
91
  timestamp: new Date().toISOString()
92
92
  };
93
93
  }
94
+ _publishSnapshotWhenObserved() {
95
+ if (this._snapshots.observed) {
96
+ this._publishSnapshot(this._createSnapshot());
97
+ }
98
+ }
94
99
  _publishSnapshot(snapshot) {
95
100
  this._snapshots.next(snapshot);
96
101
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ObservableQueryDiagnostics.js","sources":["../../../queries/ObservableQueryDiagnostics.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { Observable, Subject } from 'rxjs';\nimport { QueryInstanceCache } from './QueryInstanceCache.js';\nimport { ObservableQueryMultiplexer } from './ObservableQueryMultiplexer.js';\nimport { IObservableQueryDiagnostics } from './IObservableQueryDiagnostics.js';\nimport {\n ObservableQueryDiagnosticsSnapshot,\n MultiplexerDiagnostics,\n TransportDiagnostics,\n HealthDiagnostics,\n OwnershipDiagnostics,\n} from './ObservableQueryDiagnosticsSnapshot.js';\n\n/**\n * Implements the {@link IObservableQueryDiagnostics} contract by collecting live state from\n * the {@link QueryInstanceCache} and the shared {@link ObservableQueryMultiplexer}.\n */\nexport class ObservableQueryDiagnostics implements IObservableQueryDiagnostics {\n private readonly _snapshots = new Subject<ObservableQueryDiagnosticsSnapshot>();\n private readonly _ownersByKey = new Map<string, string>();\n\n /**\n * Initializes a new instance of {@link ObservableQueryDiagnostics}.\n * @param _cache The {@link QueryInstanceCache} whose state will be reflected.\n * @param _getMultiplexer Factory that returns the current shared multiplexer, or {@code undefined}.\n * @param _getTransportConfig Factory that returns the current transport diagnostics.\n */\n constructor(\n private readonly _cache: QueryInstanceCache,\n private readonly _getMultiplexer: () => ObservableQueryMultiplexer | undefined,\n private readonly _getTransportConfig: () => TransportDiagnostics,\n ) {}\n\n /**\n * Stream of diagnostics snapshots.\n */\n get snapshots$(): Observable<ObservableQueryDiagnosticsSnapshot> {\n return this._snapshots.asObservable();\n }\n\n /** @inheritdoc */\n getSnapshot(): ObservableQueryDiagnosticsSnapshot {\n const snapshot = this._createSnapshot();\n this._publishSnapshot(snapshot);\n return snapshot;\n }\n\n /** @inheritdoc */\n beginTracking(cacheKey: string, owner: string): void {\n this._ownersByKey.set(cacheKey, owner);\n this._publishSnapshot(this._createSnapshot());\n }\n\n /** @inheritdoc */\n endTracking(cacheKey: string): void {\n this._ownersByKey.delete(cacheKey);\n this._publishSnapshot(this._createSnapshot());\n }\n\n private _buildMultiplexerDiagnostics(): MultiplexerDiagnostics {\n const mux = this._getMultiplexer();\n if (!mux) {\n return {\n isConnected: false,\n configuredConnectionCount: 0,\n effectiveConnectionCount: 0,\n activeConnectionCount: 0,\n connections: [],\n };\n }\n\n const connections = mux.getConnectionsSnapshot();\n const activeConnectionCount = connections.filter(c => c.isConnected).length;\n\n return {\n isConnected: activeConnectionCount > 0,\n configuredConnectionCount: connections.length,\n effectiveConnectionCount: connections.length,\n activeConnectionCount,\n connections,\n };\n }\n\n private _createSnapshot(): ObservableQueryDiagnosticsSnapshot {\n const transport = this._getTransportConfig();\n const multiplexer = this._buildMultiplexerDiagnostics();\n const cache = this._cache.getDiagnosticsSnapshot();\n\n const ownersByQueryKey: Record<string, string> = {};\n const queriesByOwner: Record<string, string[]> = {};\n\n for (const [key, owner] of this._ownersByKey) {\n ownersByQueryKey[key] = owner;\n if (!queriesByOwner[owner]) {\n queriesByOwner[owner] = [];\n }\n queriesByOwner[owner].push(key);\n }\n\n const ownership: OwnershipDiagnostics = { ownersByQueryKey, queriesByOwner };\n\n const disconnectedQueryCount = multiplexer.connections.filter(c => !c.isConnected).length;\n const health: HealthDiagnostics = {\n allQueriesConnected: multiplexer.isConnected && cache.healthy,\n disconnectedQueryCount,\n };\n\n return {\n health,\n transport,\n multiplexer,\n cache,\n ownership,\n timestamp: new Date().toISOString(),\n };\n }\n\n private _publishSnapshot(snapshot: ObservableQueryDiagnosticsSnapshot): void {\n this._snapshots.next(snapshot);\n }\n}\n"],"names":["ObservableQueryDiagnostics","_snapshots","Subject","_ownersByKey","Map","_cache","_getMultiplexer","_getTransportConfig","snapshots$","asObservable","getSnapshot","snapshot","_createSnapshot","_publishSnapshot","beginTracking","cacheKey","owner","set","endTracking","delete","_buildMultiplexerDiagnostics","mux","isConnected","configuredConnectionCount","effectiveConnectionCount","activeConnectionCount","connections","getConnectionsSnapshot","filter","c","length","transport","multiplexer","cache","getDiagnosticsSnapshot","ownersByQueryKey","queriesByOwner","key","push","ownership","disconnectedQueryCount","health","allQueriesConnected","healthy","timestamp","Date","toISOString","next"],"mappings":"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"}
1
+ {"version":3,"file":"ObservableQueryDiagnostics.js","sources":["../../../queries/ObservableQueryDiagnostics.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { Observable, Subject } from 'rxjs';\nimport { QueryInstanceCache } from './QueryInstanceCache.js';\nimport { ObservableQueryMultiplexer } from './ObservableQueryMultiplexer.js';\nimport { IObservableQueryDiagnostics } from './IObservableQueryDiagnostics.js';\nimport {\n ObservableQueryDiagnosticsSnapshot,\n MultiplexerDiagnostics,\n TransportDiagnostics,\n HealthDiagnostics,\n OwnershipDiagnostics,\n} from './ObservableQueryDiagnosticsSnapshot.js';\n\n/**\n * Implements the {@link IObservableQueryDiagnostics} contract by collecting live state from\n * the {@link QueryInstanceCache} and the shared {@link ObservableQueryMultiplexer}.\n */\nexport class ObservableQueryDiagnostics implements IObservableQueryDiagnostics {\n private readonly _snapshots = new Subject<ObservableQueryDiagnosticsSnapshot>();\n private readonly _ownersByKey = new Map<string, string>();\n\n /**\n * Initializes a new instance of {@link ObservableQueryDiagnostics}.\n * @param _cache The {@link QueryInstanceCache} whose state will be reflected.\n * @param _getMultiplexer Factory that returns the current shared multiplexer, or {@code undefined}.\n * @param _getTransportConfig Factory that returns the current transport diagnostics.\n */\n constructor(\n private readonly _cache: QueryInstanceCache,\n private readonly _getMultiplexer: () => ObservableQueryMultiplexer | undefined,\n private readonly _getTransportConfig: () => TransportDiagnostics,\n ) {}\n\n /**\n * Stream of diagnostics snapshots.\n */\n get snapshots$(): Observable<ObservableQueryDiagnosticsSnapshot> {\n return this._snapshots.asObservable();\n }\n\n /** @inheritdoc */\n getSnapshot(): ObservableQueryDiagnosticsSnapshot {\n const snapshot = this._createSnapshot();\n this._publishSnapshot(snapshot);\n return snapshot;\n }\n\n /** @inheritdoc */\n beginTracking(cacheKey: string, owner: string): void {\n this._ownersByKey.set(cacheKey, owner);\n this._publishSnapshotWhenObserved();\n }\n\n /** @inheritdoc */\n endTracking(cacheKey: string): void {\n this._ownersByKey.delete(cacheKey);\n this._publishSnapshotWhenObserved();\n }\n\n private _buildMultiplexerDiagnostics(): MultiplexerDiagnostics {\n const mux = this._getMultiplexer();\n if (!mux) {\n return {\n isConnected: false,\n configuredConnectionCount: 0,\n effectiveConnectionCount: 0,\n activeConnectionCount: 0,\n connections: [],\n };\n }\n\n const connections = mux.getConnectionsSnapshot();\n const activeConnectionCount = connections.filter(c => c.isConnected).length;\n\n return {\n isConnected: activeConnectionCount > 0,\n configuredConnectionCount: connections.length,\n effectiveConnectionCount: connections.length,\n activeConnectionCount,\n connections,\n };\n }\n\n private _createSnapshot(): ObservableQueryDiagnosticsSnapshot {\n const transport = this._getTransportConfig();\n const multiplexer = this._buildMultiplexerDiagnostics();\n const cache = this._cache.getDiagnosticsSnapshot();\n\n const ownersByQueryKey: Record<string, string> = {};\n const queriesByOwner: Record<string, string[]> = {};\n\n for (const [key, owner] of this._ownersByKey) {\n ownersByQueryKey[key] = owner;\n if (!queriesByOwner[owner]) {\n queriesByOwner[owner] = [];\n }\n queriesByOwner[owner].push(key);\n }\n\n const ownership: OwnershipDiagnostics = { ownersByQueryKey, queriesByOwner };\n\n const disconnectedQueryCount = multiplexer.connections.filter(c => !c.isConnected).length;\n const health: HealthDiagnostics = {\n allQueriesConnected: multiplexer.isConnected && cache.healthy,\n disconnectedQueryCount,\n };\n\n return {\n health,\n transport,\n multiplexer,\n cache,\n ownership,\n timestamp: new Date().toISOString(),\n };\n }\n\n private _publishSnapshotWhenObserved(): void {\n if (this._snapshots.observed) {\n this._publishSnapshot(this._createSnapshot());\n }\n }\n\n private _publishSnapshot(snapshot: ObservableQueryDiagnosticsSnapshot): void {\n this._snapshots.next(snapshot);\n }\n}\n"],"names":["ObservableQueryDiagnostics","_snapshots","Subject","_ownersByKey","Map","_cache","_getMultiplexer","_getTransportConfig","snapshots$","asObservable","getSnapshot","snapshot","_createSnapshot","_publishSnapshot","beginTracking","cacheKey","owner","set","_publishSnapshotWhenObserved","endTracking","delete","_buildMultiplexerDiagnostics","mux","isConnected","configuredConnectionCount","effectiveConnectionCount","activeConnectionCount","connections","getConnectionsSnapshot","filter","c","length","transport","multiplexer","cache","getDiagnosticsSnapshot","ownersByQueryKey","queriesByOwner","key","push","ownership","disconnectedQueryCount","health","allQueriesConnected","healthy","timestamp","Date","toISOString","observed","next"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=when_tracking_owners_without_observers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when_tracking_owners_without_observers.d.ts","sourceRoot":"","sources":["../../../../queries/for_ObservableQueryDiagnostics/when_tracking_owners_without_observers.ts"],"names":[],"mappings":""}
@@ -0,0 +1,50 @@
1
+ import { describe, it } from 'vitest';
2
+ import { ObservableQueryDiagnostics, QueryInstanceCache } from '../../queries/index.js';
3
+ function createDiagnostics() {
4
+ const cache = new QueryInstanceCache(0);
5
+ let scans = 0;
6
+ const original = cache.getDiagnosticsSnapshot.bind(cache);
7
+ cache.getDiagnosticsSnapshot = () => {
8
+ scans++;
9
+ return original();
10
+ };
11
+ const diagnostics = new ObservableQueryDiagnostics(cache, () => undefined, () => ({ queryTransportMethod: 'ServerSentEvents', queryDirectMode: false }));
12
+ return { diagnostics, scans: () => scans };
13
+ }
14
+ describe('when tracking query owners without observers', () => {
15
+ it('should not scan the cache when beginning and ending tracking', () => {
16
+ const { diagnostics, scans } = createDiagnostics();
17
+ diagnostics.beginTracking('cache-key', 'OrdersPage');
18
+ diagnostics.endTracking('cache-key');
19
+ scans().should.equal(0);
20
+ });
21
+ it('should scan the cache and publish when there is an observer', () => {
22
+ const { diagnostics, scans } = createDiagnostics();
23
+ let published = 0;
24
+ diagnostics.snapshots$.subscribe(() => published++);
25
+ diagnostics.beginTracking('cache-key', 'OrdersPage');
26
+ diagnostics.endTracking('cache-key');
27
+ scans().should.equal(2);
28
+ published.should.equal(2);
29
+ });
30
+ it('should not scan the cache again after the observer unsubscribes', () => {
31
+ const { diagnostics, scans } = createDiagnostics();
32
+ const subscription = diagnostics.snapshots$.subscribe();
33
+ diagnostics.beginTracking('cache-key', 'OrdersPage');
34
+ subscription.unsubscribe();
35
+ const scansBefore = scans();
36
+ diagnostics.endTracking('cache-key');
37
+ diagnostics.beginTracking('other-key', 'OrdersPage');
38
+ scans().should.equal(scansBefore);
39
+ });
40
+ it('should report current ownership from an explicit snapshot after untracked tracking', () => {
41
+ const { diagnostics } = createDiagnostics();
42
+ diagnostics.beginTracking('cache-key', 'OrdersPage');
43
+ diagnostics.beginTracking('other-key', 'OrdersPage');
44
+ diagnostics.endTracking('other-key');
45
+ const ownership = diagnostics.getSnapshot().ownership;
46
+ ownership.ownersByQueryKey.should.deep.equal({ 'cache-key': 'OrdersPage' });
47
+ ownership.queriesByOwner.should.deep.equal({ OrdersPage: ['cache-key'] });
48
+ });
49
+ });
50
+ //# sourceMappingURL=when_tracking_owners_without_observers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when_tracking_owners_without_observers.js","sourceRoot":"","sources":["../../../../queries/for_ObservableQueryDiagnostics/when_tracking_owners_without_observers.ts"],"names":[],"mappings":"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"}