@allurereport/core 3.6.2 → 3.8.0

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.
@@ -78,6 +78,7 @@ const processTestCase = ({ testCases }, raw) => {
78
78
  const testCase = {
79
79
  id,
80
80
  allureId,
81
+ externalId: raw.testId,
81
82
  name: raw.testCaseName ?? raw.name ?? __unknown,
82
83
  fullName: raw.fullName,
83
84
  };
@@ -1,4 +1,4 @@
1
- import { type AllureHistory, type AttachmentLink, type DefaultLabelsConfig, type EnvironmentIdentity, type EnvironmentsConfig, type HistoryDataPoint, type HistoryTestResult, type KnownTestFailure, type ReportVariables, type Statistic, type TestCase, type TestEnvGroup, type TestError, type TestFixtureResult, type TestResult } from "@allurereport/core-api";
1
+ import { type AllureCheckResult, type AllureHistory, type AttachmentLink, type DefaultLabelsConfig, type EnvironmentIdentity, type EnvironmentsConfig, type HistoryDataPoint, type HistoryTestResult, type KnownTestFailure, type ReportVariables, type Statistic, type TestCase, type TestEnvGroup, type TestError, type TestFixtureResult, type TestResult } from "@allurereport/core-api";
2
2
  import { type AllureStore, type AllureStoreDump, type ExitCode, type PluginGlobalAttachment, type PluginGlobalError, type QualityGateValidationResult, type RealtimeEventsDispatcher, type RealtimeSubscriber, type ResultFile, type TestResultFilter } from "@allurereport/plugin-api";
3
3
  import type { RawFixtureResult, RawGlobals, RawMetadata, RawTestResult, ReaderContext, ResultsVisitor } from "@allurereport/reader-api";
4
4
  export declare const mapToObject: <K extends string | number | symbol, T = any>(map: Map<K, T>) => Record<K, T>;
@@ -26,6 +26,8 @@ export declare class DefaultAllureStore implements AllureStore, ResultsVisitor {
26
26
  });
27
27
  readHistory(): Promise<HistoryDataPoint[]>;
28
28
  appendHistory(history: HistoryDataPoint): Promise<void>;
29
+ addCheckResult(result: AllureCheckResult): Promise<void>;
30
+ allCheckResults(): Promise<AllureCheckResult[]>;
29
31
  qualityGateResults(): Promise<QualityGateValidationResult[]>;
30
32
  qualityGateResultsByEnv(): Promise<Record<string, QualityGateValidationResult[]>>;
31
33
  qualityGateResultsByEnvironmentId(): Promise<Record<string, QualityGateValidationResult[]>>;
@@ -34,6 +36,7 @@ export declare class DefaultAllureStore implements AllureStore, ResultsVisitor {
34
36
  allGlobalErrorsByEnv(): Promise<Record<string, PluginGlobalError[]>>;
35
37
  allGlobalAttachments(): Promise<AttachmentLink[]>;
36
38
  allGlobalAttachmentsByEnv(): Promise<Record<string, PluginGlobalAttachment[]>>;
39
+ visitCheckResult(result: AllureCheckResult): Promise<void>;
37
40
  visitTestResult(raw: RawTestResult, context: ReaderContext): Promise<void>;
38
41
  visitTestFixtureResult(result: RawFixtureResult, context: ReaderContext): Promise<void>;
39
42
  visitAttachmentFile(resultFile: ResultFile): Promise<void>;
@@ -59,6 +62,7 @@ export declare class DefaultAllureStore implements AllureStore, ResultsVisitor {
59
62
  testResultById(trId: string): Promise<TestResult | undefined>;
60
63
  attachmentById(attachmentId: string): Promise<AttachmentLink | undefined>;
61
64
  attachmentContentById(attachmentId: string): Promise<ResultFile | undefined>;
65
+ markAttachmentMissed(attachmentId: string): void;
62
66
  metadataByKey<T>(key: string): Promise<T | undefined>;
63
67
  testResultsByTcId(tcId: string): Promise<TestResult[]>;
64
68
  environmentIdByTrId(trId: string): Promise<string | undefined>;
@@ -9,7 +9,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
9
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
- var _DefaultAllureStore_instances, _DefaultAllureStore_testResults, _DefaultAllureStore_environmentDisplayNames, _DefaultAllureStore_environmentNameToId, _DefaultAllureStore_attachments, _DefaultAllureStore_attachmentContents, _DefaultAllureStore_testCases, _DefaultAllureStore_metadata, _DefaultAllureStore_history, _DefaultAllureStore_known, _DefaultAllureStore_fixtures, _DefaultAllureStore_defaultLabels, _DefaultAllureStore_environment, _DefaultAllureStore_environmentsConfig, _DefaultAllureStore_reportVariables, _DefaultAllureStore_realtimeDispatcher, _DefaultAllureStore_realtimeSubscriber, _DefaultAllureStore_allowedEnvironmentIds, _DefaultAllureStore_globalAttachmentIds, _DefaultAllureStore_globalAttachmentIdsByEnv, _DefaultAllureStore_globalErrors, _DefaultAllureStore_globalErrorsByEnv, _DefaultAllureStore_globalExitCode, _DefaultAllureStore_qualityGateResults, _DefaultAllureStore_historyPoints, _DefaultAllureStore_environments, _DefaultAllureStore_mergeEnvironmentIdentity, _DefaultAllureStore_environmentIdForLookup, _DefaultAllureStore_addEnvironments, _DefaultAllureStore_environmentIdByName, _DefaultAllureStore_setTestResultEnvironmentId, _DefaultAllureStore_assertAllowedEnvironmentId, _DefaultAllureStore_assertAllowedStoredEnvironment, _DefaultAllureStore_environmentIdByTestResult, _DefaultAllureStore_resolveGlobalEnvironmentIdentity, _DefaultAllureStore_globalAttachmentId, _DefaultAllureStore_indexGlobalError, _DefaultAllureStore_addGlobalError, _DefaultAllureStore_indexGlobalAttachment, _DefaultAllureStore_addGlobalAttachment;
12
+ var _DefaultAllureStore_instances, _DefaultAllureStore_testResults, _DefaultAllureStore_environmentDisplayNames, _DefaultAllureStore_environmentNameToId, _DefaultAllureStore_attachments, _DefaultAllureStore_attachmentContents, _DefaultAllureStore_testCases, _DefaultAllureStore_metadata, _DefaultAllureStore_history, _DefaultAllureStore_known, _DefaultAllureStore_fixtures, _DefaultAllureStore_defaultLabels, _DefaultAllureStore_environment, _DefaultAllureStore_environmentsConfig, _DefaultAllureStore_reportVariables, _DefaultAllureStore_realtimeDispatcher, _DefaultAllureStore_realtimeSubscriber, _DefaultAllureStore_allowedEnvironmentIds, _DefaultAllureStore_globalAttachmentIds, _DefaultAllureStore_globalAttachmentIdsByEnv, _DefaultAllureStore_globalErrors, _DefaultAllureStore_globalErrorsByEnv, _DefaultAllureStore_globalExitCode, _DefaultAllureStore_checkResults, _DefaultAllureStore_qualityGateResults, _DefaultAllureStore_historyPoints, _DefaultAllureStore_environments, _DefaultAllureStore_mergeEnvironmentIdentity, _DefaultAllureStore_environmentIdForLookup, _DefaultAllureStore_addEnvironments, _DefaultAllureStore_environmentIdByName, _DefaultAllureStore_setTestResultEnvironmentId, _DefaultAllureStore_assertAllowedEnvironmentId, _DefaultAllureStore_assertAllowedStoredEnvironment, _DefaultAllureStore_environmentIdByTestResult, _DefaultAllureStore_resolveGlobalEnvironmentIdentity, _DefaultAllureStore_globalAttachmentId, _DefaultAllureStore_indexGlobalError, _DefaultAllureStore_addGlobalError, _DefaultAllureStore_indexGlobalAttachment, _DefaultAllureStore_addGlobalAttachment, _DefaultAllureStore_restoreAttachmentContent, _DefaultAllureStore_relinkRestoredAttachmentSteps;
13
13
  import { extname } from "node:path";
14
14
  import { DEFAULT_ENVIRONMENT, DEFAULT_ENVIRONMENT_IDENTITY, compareBy, createDictionary, getHistoryIdCandidates, getWorstStatus, nullsLast, ordinal, reverse, selectHistoryTestResults, validateEnvironmentId, validateEnvironmentName, } from "@allurereport/core-api";
15
15
  import { md5, } from "@allurereport/plugin-api";
@@ -64,6 +64,18 @@ export const updateMapWithRecord = (map, record) => {
64
64
  });
65
65
  return map;
66
66
  };
67
+ const relinkAttachmentSteps = (steps = [], attachments) => {
68
+ steps.forEach((step) => {
69
+ if (step.type === "attachment") {
70
+ const restoredLink = attachments.get(step.link.id);
71
+ if (restoredLink && restoredLink.used) {
72
+ step.link = restoredLink;
73
+ }
74
+ return;
75
+ }
76
+ relinkAttachmentSteps(step.steps, attachments);
77
+ });
78
+ };
67
79
  export class DefaultAllureStore {
68
80
  constructor(params) {
69
81
  _DefaultAllureStore_instances.add(this);
@@ -97,6 +109,7 @@ export class DefaultAllureStore {
97
109
  _DefaultAllureStore_globalErrors.set(this, []);
98
110
  _DefaultAllureStore_globalErrorsByEnv.set(this, new Map());
99
111
  _DefaultAllureStore_globalExitCode.set(this, void 0);
112
+ _DefaultAllureStore_checkResults.set(this, []);
100
113
  _DefaultAllureStore_qualityGateResults.set(this, []);
101
114
  _DefaultAllureStore_historyPoints.set(this, []);
102
115
  _DefaultAllureStore_environments.set(this, []);
@@ -135,7 +148,7 @@ export class DefaultAllureStore {
135
148
  __classPrivateFieldSet(this, _DefaultAllureStore_reportVariables, reportVariables, "f");
136
149
  __classPrivateFieldSet(this, _DefaultAllureStore_allowedEnvironmentIds, new Set(allowedEnvironments ?? []), "f");
137
150
  __classPrivateFieldGet(this, _DefaultAllureStore_instances, "m", _DefaultAllureStore_addEnvironments).call(this, environments);
138
- __classPrivateFieldGet(this, _DefaultAllureStore_realtimeSubscriber, "f")?.onQualityGateResults(async (results) => {
151
+ __classPrivateFieldGet(this, _DefaultAllureStore_realtimeSubscriber, "f")?.onQualityGateResults((results) => {
139
152
  __classPrivateFieldGet(this, _DefaultAllureStore_qualityGateResults, "f").push(...results);
140
153
  __classPrivateFieldGet(this, _DefaultAllureStore_instances, "m", _DefaultAllureStore_addEnvironments).call(this, results
141
154
  .map((result) => {
@@ -156,13 +169,13 @@ export class DefaultAllureStore {
156
169
  })
157
170
  .filter(Boolean));
158
171
  });
159
- __classPrivateFieldGet(this, _DefaultAllureStore_realtimeSubscriber, "f")?.onGlobalExitCode(async (exitCode) => {
172
+ __classPrivateFieldGet(this, _DefaultAllureStore_realtimeSubscriber, "f")?.onGlobalExitCode((exitCode) => {
160
173
  __classPrivateFieldSet(this, _DefaultAllureStore_globalExitCode, exitCode, "f");
161
174
  });
162
- __classPrivateFieldGet(this, _DefaultAllureStore_realtimeSubscriber, "f")?.onGlobalError(async (error) => {
175
+ __classPrivateFieldGet(this, _DefaultAllureStore_realtimeSubscriber, "f")?.onGlobalError((error) => {
163
176
  __classPrivateFieldGet(this, _DefaultAllureStore_instances, "m", _DefaultAllureStore_addGlobalError).call(this, error);
164
177
  });
165
- __classPrivateFieldGet(this, _DefaultAllureStore_realtimeSubscriber, "f")?.onGlobalAttachment(async ({ attachment, fileName, environment }) => {
178
+ __classPrivateFieldGet(this, _DefaultAllureStore_realtimeSubscriber, "f")?.onGlobalAttachment(({ attachment, fileName, environment }) => {
166
179
  const originalFileName = attachment.getOriginalFileName();
167
180
  const resolvedEnvironment = __classPrivateFieldGet(this, _DefaultAllureStore_instances, "m", _DefaultAllureStore_resolveGlobalEnvironmentIdentity).call(this, environment);
168
181
  const attachmentLink = {
@@ -194,6 +207,24 @@ export class DefaultAllureStore {
194
207
  __classPrivateFieldGet(this, _DefaultAllureStore_historyPoints, "f").push(history);
195
208
  await __classPrivateFieldGet(this, _DefaultAllureStore_history, "f").appendHistory(history);
196
209
  }
210
+ async addCheckResult(result) {
211
+ __classPrivateFieldGet(this, _DefaultAllureStore_checkResults, "f").push({
212
+ name: result.name,
213
+ status: result.status,
214
+ ...(result.tags?.length ? { tags: [...result.tags] } : {}),
215
+ details: {
216
+ command: result.details.command,
217
+ ...(result.details.message ? { message: result.details.message } : {}),
218
+ ...(result.details.error ? { error: result.details.error } : {}),
219
+ },
220
+ });
221
+ }
222
+ async allCheckResults() {
223
+ return __classPrivateFieldGet(this, _DefaultAllureStore_checkResults, "f").map((result) => ({
224
+ ...result,
225
+ ...(result.tags ? { tags: [...result.tags] } : {}),
226
+ }));
227
+ }
197
228
  async qualityGateResults() {
198
229
  return [...__classPrivateFieldGet(this, _DefaultAllureStore_qualityGateResults, "f")];
199
230
  }
@@ -264,6 +295,9 @@ export class DefaultAllureStore {
264
295
  });
265
296
  return result;
266
297
  }
298
+ async visitCheckResult(result) {
299
+ await this.addCheckResult(result);
300
+ }
267
301
  async visitTestResult(raw, context) {
268
302
  const attachmentLinks = [];
269
303
  const testResult = testResultRawToState({
@@ -520,6 +554,17 @@ export class DefaultAllureStore {
520
554
  async attachmentContentById(attachmentId) {
521
555
  return __classPrivateFieldGet(this, _DefaultAllureStore_attachmentContents, "f").get(attachmentId);
522
556
  }
557
+ markAttachmentMissed(attachmentId) {
558
+ const attachment = __classPrivateFieldGet(this, _DefaultAllureStore_attachments, "f").get(attachmentId);
559
+ if (!attachment) {
560
+ return;
561
+ }
562
+ const missedAttachment = attachment;
563
+ missedAttachment.missed = true;
564
+ delete missedAttachment.contentLength;
565
+ __classPrivateFieldGet(this, _DefaultAllureStore_attachmentContents, "f").delete(attachmentId);
566
+ __classPrivateFieldGet(this, _DefaultAllureStore_instances, "m", _DefaultAllureStore_relinkRestoredAttachmentSteps).call(this);
567
+ }
523
568
  async metadataByKey(key) {
524
569
  return __classPrivateFieldGet(this, _DefaultAllureStore_metadata, "f").get(key);
525
570
  }
@@ -749,6 +794,10 @@ export class DefaultAllureStore {
749
794
  reportVariables: __classPrivateFieldGet(this, _DefaultAllureStore_reportVariables, "f"),
750
795
  globalAttachmentIds: __classPrivateFieldGet(this, _DefaultAllureStore_globalAttachmentIds, "f"),
751
796
  globalErrors: __classPrivateFieldGet(this, _DefaultAllureStore_globalErrors, "f"),
797
+ checkResults: __classPrivateFieldGet(this, _DefaultAllureStore_checkResults, "f").map((result) => ({
798
+ ...result,
799
+ ...(result.tags ? { tags: [...result.tags] } : {}),
800
+ })),
752
801
  indexLatestEnvTestResultByHistoryId: {},
753
802
  indexAttachmentByTestResult: {},
754
803
  indexTestResultByHistoryId: {},
@@ -787,7 +836,7 @@ export class DefaultAllureStore {
787
836
  return storeDump;
788
837
  }
789
838
  async restoreState(stateDump, attachmentsContents = {}) {
790
- const { testResults, attachments, testCases, fixtures, reportVariables, environments, globalAttachmentIds = [], globalErrors = [], indexAttachmentByTestResult = {}, indexTestResultByHistoryId = {}, indexTestResultByTestCase = {}, indexLatestEnvTestResultByHistoryId = {}, indexAttachmentByFixture = {}, indexFixturesByTestResult = {}, indexKnownByHistoryId = {}, qualityGateResults = [], } = stateDump;
839
+ const { testResults, attachments, testCases, fixtures, reportVariables, environments, globalAttachmentIds = [], globalErrors = [], checkResults = [], indexAttachmentByTestResult = {}, indexTestResultByHistoryId = {}, indexTestResultByTestCase = {}, indexLatestEnvTestResultByHistoryId = {}, indexAttachmentByFixture = {}, indexFixturesByTestResult = {}, indexKnownByHistoryId = {}, qualityGateResults = [], } = stateDump;
791
840
  const storedEnvironmentAliases = environments.flatMap((environmentValue) => {
792
841
  if (typeof environmentValue === "string") {
793
842
  return [{ id: environmentValue, name: environmentValue }];
@@ -846,7 +895,10 @@ export class DefaultAllureStore {
846
895
  updateMapWithRecord(__classPrivateFieldGet(this, _DefaultAllureStore_attachments, "f"), attachments);
847
896
  updateMapWithRecord(__classPrivateFieldGet(this, _DefaultAllureStore_testCases, "f"), testCases);
848
897
  updateMapWithRecord(__classPrivateFieldGet(this, _DefaultAllureStore_fixtures, "f"), fixtures);
849
- updateMapWithRecord(__classPrivateFieldGet(this, _DefaultAllureStore_attachmentContents, "f"), attachmentsContents);
898
+ Object.entries(attachmentsContents).forEach(([id, content]) => {
899
+ __classPrivateFieldGet(this, _DefaultAllureStore_instances, "m", _DefaultAllureStore_restoreAttachmentContent).call(this, id, content);
900
+ });
901
+ __classPrivateFieldGet(this, _DefaultAllureStore_instances, "m", _DefaultAllureStore_relinkRestoredAttachmentSteps).call(this);
850
902
  globalAttachmentIds.forEach((id) => {
851
903
  const attachment = __classPrivateFieldGet(this, _DefaultAllureStore_attachments, "f").get(id);
852
904
  if (!attachment) {
@@ -870,6 +922,18 @@ export class DefaultAllureStore {
870
922
  });
871
923
  __classPrivateFieldGet(this, _DefaultAllureStore_globalErrors, "f").push(__classPrivateFieldGet(this, _DefaultAllureStore_instances, "m", _DefaultAllureStore_indexGlobalError).call(this, error));
872
924
  });
925
+ checkResults.forEach((result) => {
926
+ __classPrivateFieldGet(this, _DefaultAllureStore_checkResults, "f").push({
927
+ name: result.name,
928
+ status: result.status,
929
+ ...(result.tags?.length ? { tags: [...result.tags] } : {}),
930
+ details: {
931
+ command: result.details?.command ?? "",
932
+ ...(result.details?.message ? { message: result.details.message } : {}),
933
+ ...(result.details?.error ? { error: result.details.error } : {}),
934
+ },
935
+ });
936
+ });
873
937
  Object.assign(__classPrivateFieldGet(this, _DefaultAllureStore_reportVariables, "f"), reportVariables);
874
938
  Object.entries(indexAttachmentByTestResult).forEach(([trId, links]) => {
875
939
  const attachmentsLinks = links.map((id) => __classPrivateFieldGet(this, _DefaultAllureStore_attachments, "f").get(id)).filter(Boolean);
@@ -1000,7 +1064,7 @@ export class DefaultAllureStore {
1000
1064
  });
1001
1065
  }
1002
1066
  }
1003
- _DefaultAllureStore_testResults = new WeakMap(), _DefaultAllureStore_environmentDisplayNames = new WeakMap(), _DefaultAllureStore_environmentNameToId = new WeakMap(), _DefaultAllureStore_attachments = new WeakMap(), _DefaultAllureStore_attachmentContents = new WeakMap(), _DefaultAllureStore_testCases = new WeakMap(), _DefaultAllureStore_metadata = new WeakMap(), _DefaultAllureStore_history = new WeakMap(), _DefaultAllureStore_known = new WeakMap(), _DefaultAllureStore_fixtures = new WeakMap(), _DefaultAllureStore_defaultLabels = new WeakMap(), _DefaultAllureStore_environment = new WeakMap(), _DefaultAllureStore_environmentsConfig = new WeakMap(), _DefaultAllureStore_reportVariables = new WeakMap(), _DefaultAllureStore_realtimeDispatcher = new WeakMap(), _DefaultAllureStore_realtimeSubscriber = new WeakMap(), _DefaultAllureStore_allowedEnvironmentIds = new WeakMap(), _DefaultAllureStore_globalAttachmentIds = new WeakMap(), _DefaultAllureStore_globalAttachmentIdsByEnv = new WeakMap(), _DefaultAllureStore_globalErrors = new WeakMap(), _DefaultAllureStore_globalErrorsByEnv = new WeakMap(), _DefaultAllureStore_globalExitCode = new WeakMap(), _DefaultAllureStore_qualityGateResults = new WeakMap(), _DefaultAllureStore_historyPoints = new WeakMap(), _DefaultAllureStore_environments = new WeakMap(), _DefaultAllureStore_instances = new WeakSet(), _DefaultAllureStore_mergeEnvironmentIdentity = function _DefaultAllureStore_mergeEnvironmentIdentity(existingEnvironment, incomingEnvironment) {
1067
+ _DefaultAllureStore_testResults = new WeakMap(), _DefaultAllureStore_environmentDisplayNames = new WeakMap(), _DefaultAllureStore_environmentNameToId = new WeakMap(), _DefaultAllureStore_attachments = new WeakMap(), _DefaultAllureStore_attachmentContents = new WeakMap(), _DefaultAllureStore_testCases = new WeakMap(), _DefaultAllureStore_metadata = new WeakMap(), _DefaultAllureStore_history = new WeakMap(), _DefaultAllureStore_known = new WeakMap(), _DefaultAllureStore_fixtures = new WeakMap(), _DefaultAllureStore_defaultLabels = new WeakMap(), _DefaultAllureStore_environment = new WeakMap(), _DefaultAllureStore_environmentsConfig = new WeakMap(), _DefaultAllureStore_reportVariables = new WeakMap(), _DefaultAllureStore_realtimeDispatcher = new WeakMap(), _DefaultAllureStore_realtimeSubscriber = new WeakMap(), _DefaultAllureStore_allowedEnvironmentIds = new WeakMap(), _DefaultAllureStore_globalAttachmentIds = new WeakMap(), _DefaultAllureStore_globalAttachmentIdsByEnv = new WeakMap(), _DefaultAllureStore_globalErrors = new WeakMap(), _DefaultAllureStore_globalErrorsByEnv = new WeakMap(), _DefaultAllureStore_globalExitCode = new WeakMap(), _DefaultAllureStore_checkResults = new WeakMap(), _DefaultAllureStore_qualityGateResults = new WeakMap(), _DefaultAllureStore_historyPoints = new WeakMap(), _DefaultAllureStore_environments = new WeakMap(), _DefaultAllureStore_instances = new WeakSet(), _DefaultAllureStore_mergeEnvironmentIdentity = function _DefaultAllureStore_mergeEnvironmentIdentity(existingEnvironment, incomingEnvironment) {
1004
1068
  const configuredEnvironment = environmentIdentityById(__classPrivateFieldGet(this, _DefaultAllureStore_environmentsConfig, "f"), incomingEnvironment.id);
1005
1069
  if (configuredEnvironment) {
1006
1070
  return configuredEnvironment;
@@ -1142,4 +1206,23 @@ _DefaultAllureStore_testResults = new WeakMap(), _DefaultAllureStore_environment
1142
1206
  __classPrivateFieldGet(this, _DefaultAllureStore_attachmentContents, "f").set(indexedAttachment.id, attachment);
1143
1207
  }
1144
1208
  __classPrivateFieldGet(this, _DefaultAllureStore_globalAttachmentIds, "f").push(indexedAttachment.id);
1209
+ }, _DefaultAllureStore_restoreAttachmentContent = function _DefaultAllureStore_restoreAttachmentContent(id, content) {
1210
+ const attachment = __classPrivateFieldGet(this, _DefaultAllureStore_attachments, "f").get(id);
1211
+ __classPrivateFieldGet(this, _DefaultAllureStore_attachmentContents, "f").set(id, content);
1212
+ if (!attachment) {
1213
+ return;
1214
+ }
1215
+ const linkedAttachment = attachment;
1216
+ linkedAttachment.missed = false;
1217
+ linkedAttachment.contentType = linkedAttachment.contentType ?? content.getContentType();
1218
+ linkedAttachment.contentLength = content.getContentLength();
1219
+ linkedAttachment.ext =
1220
+ linkedAttachment.ext === undefined || linkedAttachment.ext === "" ? content.getExtension() : linkedAttachment.ext;
1221
+ }, _DefaultAllureStore_relinkRestoredAttachmentSteps = function _DefaultAllureStore_relinkRestoredAttachmentSteps() {
1222
+ __classPrivateFieldGet(this, _DefaultAllureStore_testResults, "f").forEach(({ steps }) => {
1223
+ relinkAttachmentSteps(steps, __classPrivateFieldGet(this, _DefaultAllureStore_attachments, "f"));
1224
+ });
1225
+ __classPrivateFieldGet(this, _DefaultAllureStore_fixtures, "f").forEach(({ steps }) => {
1226
+ relinkAttachmentSteps(steps, __classPrivateFieldGet(this, _DefaultAllureStore_attachments, "f"));
1227
+ });
1145
1228
  };
@@ -1,5 +1,5 @@
1
- import type { EventEmitter } from "node:events";
2
- import type { BatchOptions, ExitCode, PluginGlobalError, QualityGateValidationResult, RealtimeEventsDispatcher as RealtimeEventsDispatcherType, RealtimeSubscriber as RealtimeSubscriberType, ResultFile } from "@allurereport/plugin-api";
1
+ import { EventEmitter } from "node:events";
2
+ import type { BatchOptions, ExitCode, PluginGlobalError, QualityGateValidationResult, RealtimeEventsDispatcher as RealtimeEventsDispatcherType, RealtimeListenerResult, RealtimeSubscriber as RealtimeSubscriberType, ResultFile } from "@allurereport/plugin-api";
3
3
  export declare enum RealtimeEvents {
4
4
  TestResult = "testResult",
5
5
  TestFixtureResult = "testFixtureResult",
@@ -40,13 +40,12 @@ export declare class RealtimeSubscriber implements RealtimeSubscriberType {
40
40
  attachment: ResultFile;
41
41
  fileName?: string;
42
42
  environment?: string;
43
- }) => Promise<void>): () => void;
44
- onGlobalExitCode(listener: (payload: ExitCode) => Promise<void>): () => void;
45
- onGlobalError(listener: (error: PluginGlobalError) => Promise<void>): () => void;
46
- onQualityGateResults(listener: (payload: QualityGateValidationResult[]) => Promise<void>): () => void;
47
- onTestResults(listener: (trIds: string[]) => Promise<void>, options?: BatchOptions): () => void;
48
- onTestFixtureResults(listener: (tfrIds: string[]) => Promise<void>, options?: BatchOptions): () => void;
49
- onAttachmentFiles(listener: (afIds: string[]) => Promise<void>, options?: BatchOptions): () => void;
50
- onAll(listener: () => Promise<void>, options?: BatchOptions): () => void;
43
+ }) => RealtimeListenerResult): () => void;
44
+ onGlobalExitCode(listener: (payload: ExitCode) => RealtimeListenerResult): () => void;
45
+ onGlobalError(listener: (error: PluginGlobalError) => RealtimeListenerResult): () => void;
46
+ onQualityGateResults(listener: (payload: QualityGateValidationResult[]) => RealtimeListenerResult): () => void;
47
+ onTestResults(listener: (trIds: string[]) => RealtimeListenerResult, options?: BatchOptions): () => void;
48
+ onTestFixtureResults(listener: (tfrIds: string[]) => RealtimeListenerResult, options?: BatchOptions): () => void;
49
+ onAttachmentFiles(listener: (afIds: string[]) => RealtimeListenerResult, options?: BatchOptions): () => void;
51
50
  offAll(): void;
52
51
  }
@@ -9,7 +9,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
9
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
- var _RealtimeEventsDispatcher_emitter, _RealtimeSubscriber_instances, _RealtimeSubscriber_emitter, _RealtimeSubscriber_handlers, _RealtimeSubscriber_createBatchHandler;
12
+ var _RealtimeEventsDispatcher_emitter, _RealtimeSubscriber_instances, _RealtimeSubscriber_emitter, _RealtimeSubscriber_handlers, _RealtimeSubscriber_onEvent, _RealtimeSubscriber_onBatchedEvent, _RealtimeSubscriber_createBatchHandler, _RealtimeSubscriber_runBatchHandler, _RealtimeSubscriber_disposeBatchHandler;
13
13
  import console from "node:console";
14
14
  import { setTimeout } from "node:timers/promises";
15
15
  export var RealtimeEvents;
@@ -22,6 +22,20 @@ export var RealtimeEvents;
22
22
  RealtimeEvents["GlobalError"] = "globalError";
23
23
  RealtimeEvents["GlobalExitCode"] = "globalExitCode";
24
24
  })(RealtimeEvents || (RealtimeEvents = {}));
25
+ const runListener = (listener, ...args) => {
26
+ try {
27
+ return Promise.resolve(listener(...args)).catch((err) => {
28
+ console.error("can't execute listener", err);
29
+ });
30
+ }
31
+ catch (err) {
32
+ console.error("can't execute listener", err);
33
+ return Promise.resolve();
34
+ }
35
+ };
36
+ const createListenerHandler = (listener) => (...args) => {
37
+ void runListener(listener, ...args);
38
+ };
25
39
  export class RealtimeEventsDispatcher {
26
40
  constructor(emitter) {
27
41
  _RealtimeEventsDispatcher_emitter.set(this, void 0);
@@ -58,97 +72,95 @@ export class RealtimeSubscriber {
58
72
  __classPrivateFieldSet(this, _RealtimeSubscriber_emitter, emitter, "f");
59
73
  }
60
74
  onGlobalAttachment(listener) {
61
- __classPrivateFieldGet(this, _RealtimeSubscriber_emitter, "f").on(RealtimeEvents.GlobalAttachment, listener);
62
- return () => {
63
- __classPrivateFieldGet(this, _RealtimeSubscriber_emitter, "f").off(RealtimeEvents.GlobalAttachment, listener);
64
- };
75
+ return __classPrivateFieldGet(this, _RealtimeSubscriber_instances, "m", _RealtimeSubscriber_onEvent).call(this, RealtimeEvents.GlobalAttachment, listener);
65
76
  }
66
77
  onGlobalExitCode(listener) {
67
- __classPrivateFieldGet(this, _RealtimeSubscriber_emitter, "f").on(RealtimeEvents.GlobalExitCode, listener);
68
- return () => {
69
- __classPrivateFieldGet(this, _RealtimeSubscriber_emitter, "f").off(RealtimeEvents.GlobalExitCode, listener);
70
- };
78
+ return __classPrivateFieldGet(this, _RealtimeSubscriber_instances, "m", _RealtimeSubscriber_onEvent).call(this, RealtimeEvents.GlobalExitCode, listener);
71
79
  }
72
80
  onGlobalError(listener) {
73
- __classPrivateFieldGet(this, _RealtimeSubscriber_emitter, "f").on(RealtimeEvents.GlobalError, listener);
74
- return () => {
75
- __classPrivateFieldGet(this, _RealtimeSubscriber_emitter, "f").off(RealtimeEvents.GlobalError, listener);
76
- };
81
+ return __classPrivateFieldGet(this, _RealtimeSubscriber_instances, "m", _RealtimeSubscriber_onEvent).call(this, RealtimeEvents.GlobalError, listener);
77
82
  }
78
83
  onQualityGateResults(listener) {
79
- __classPrivateFieldGet(this, _RealtimeSubscriber_emitter, "f").on(RealtimeEvents.QualityGateResults, listener);
80
- return () => {
81
- __classPrivateFieldGet(this, _RealtimeSubscriber_emitter, "f").off(RealtimeEvents.QualityGateResults, listener);
82
- };
84
+ return __classPrivateFieldGet(this, _RealtimeSubscriber_instances, "m", _RealtimeSubscriber_onEvent).call(this, RealtimeEvents.QualityGateResults, listener);
83
85
  }
84
86
  onTestResults(listener, options = {}) {
85
- const { maxTimeout = 100 } = options;
86
- const handler = __classPrivateFieldGet(this, _RealtimeSubscriber_instances, "m", _RealtimeSubscriber_createBatchHandler).call(this, maxTimeout, listener);
87
- __classPrivateFieldGet(this, _RealtimeSubscriber_emitter, "f").on(RealtimeEvents.TestResult, handler);
88
- return () => {
89
- __classPrivateFieldGet(this, _RealtimeSubscriber_emitter, "f").off(RealtimeEvents.TestResult, handler);
90
- };
87
+ return __classPrivateFieldGet(this, _RealtimeSubscriber_instances, "m", _RealtimeSubscriber_onBatchedEvent).call(this, RealtimeEvents.TestResult, listener, options);
91
88
  }
92
89
  onTestFixtureResults(listener, options = {}) {
93
- const { maxTimeout = 100 } = options;
94
- const handler = __classPrivateFieldGet(this, _RealtimeSubscriber_instances, "m", _RealtimeSubscriber_createBatchHandler).call(this, maxTimeout, listener);
95
- __classPrivateFieldGet(this, _RealtimeSubscriber_emitter, "f").on(RealtimeEvents.TestFixtureResult, handler);
96
- return () => {
97
- __classPrivateFieldGet(this, _RealtimeSubscriber_emitter, "f").off(RealtimeEvents.TestFixtureResult, handler);
98
- };
90
+ return __classPrivateFieldGet(this, _RealtimeSubscriber_instances, "m", _RealtimeSubscriber_onBatchedEvent).call(this, RealtimeEvents.TestFixtureResult, listener, options);
99
91
  }
100
92
  onAttachmentFiles(listener, options = {}) {
101
- const { maxTimeout = 100 } = options;
102
- const handler = __classPrivateFieldGet(this, _RealtimeSubscriber_instances, "m", _RealtimeSubscriber_createBatchHandler).call(this, maxTimeout, listener);
103
- __classPrivateFieldGet(this, _RealtimeSubscriber_emitter, "f").on(RealtimeEvents.AttachmentFile, handler);
104
- return () => {
105
- __classPrivateFieldGet(this, _RealtimeSubscriber_emitter, "f").off(RealtimeEvents.AttachmentFile, handler);
106
- };
107
- }
108
- onAll(listener, options = {}) {
109
- const { maxTimeout = 100 } = options;
110
- const handler = __classPrivateFieldGet(this, _RealtimeSubscriber_instances, "m", _RealtimeSubscriber_createBatchHandler).call(this, maxTimeout, listener);
111
- __classPrivateFieldGet(this, _RealtimeSubscriber_emitter, "f").on(RealtimeEvents.TestResult, handler);
112
- __classPrivateFieldGet(this, _RealtimeSubscriber_emitter, "f").on(RealtimeEvents.TestFixtureResult, handler);
113
- __classPrivateFieldGet(this, _RealtimeSubscriber_emitter, "f").on(RealtimeEvents.AttachmentFile, handler);
114
- return () => {
115
- __classPrivateFieldGet(this, _RealtimeSubscriber_emitter, "f").off(RealtimeEvents.TestResult, handler);
116
- __classPrivateFieldGet(this, _RealtimeSubscriber_emitter, "f").off(RealtimeEvents.TestFixtureResult, handler);
117
- __classPrivateFieldGet(this, _RealtimeSubscriber_emitter, "f").off(RealtimeEvents.AttachmentFile, handler);
118
- };
93
+ return __classPrivateFieldGet(this, _RealtimeSubscriber_instances, "m", _RealtimeSubscriber_onBatchedEvent).call(this, RealtimeEvents.AttachmentFile, listener, options);
119
94
  }
120
95
  offAll() {
121
96
  __classPrivateFieldGet(this, _RealtimeSubscriber_emitter, "f").removeAllListeners();
122
97
  for (const handler of __classPrivateFieldGet(this, _RealtimeSubscriber_handlers, "f")) {
123
- handler.ac?.abort();
98
+ __classPrivateFieldGet(this, _RealtimeSubscriber_instances, "m", _RealtimeSubscriber_disposeBatchHandler).call(this, handler);
124
99
  }
125
100
  __classPrivateFieldSet(this, _RealtimeSubscriber_handlers, [], "f");
126
101
  }
127
102
  }
128
- _RealtimeSubscriber_emitter = new WeakMap(), _RealtimeSubscriber_handlers = new WeakMap(), _RealtimeSubscriber_instances = new WeakSet(), _RealtimeSubscriber_createBatchHandler = function _RealtimeSubscriber_createBatchHandler(maxTimeout, listener) {
103
+ _RealtimeSubscriber_emitter = new WeakMap(), _RealtimeSubscriber_handlers = new WeakMap(), _RealtimeSubscriber_instances = new WeakSet(), _RealtimeSubscriber_onEvent = function _RealtimeSubscriber_onEvent(event, listener) {
104
+ const handler = createListenerHandler(listener);
105
+ __classPrivateFieldGet(this, _RealtimeSubscriber_emitter, "f").on(event, handler);
106
+ return () => {
107
+ __classPrivateFieldGet(this, _RealtimeSubscriber_emitter, "f").off(event, handler);
108
+ };
109
+ }, _RealtimeSubscriber_onBatchedEvent = function _RealtimeSubscriber_onBatchedEvent(event, listener, options) {
110
+ const { maxTimeout = 100 } = options;
111
+ const { dispose, eventHandler } = __classPrivateFieldGet(this, _RealtimeSubscriber_instances, "m", _RealtimeSubscriber_createBatchHandler).call(this, maxTimeout, listener);
112
+ __classPrivateFieldGet(this, _RealtimeSubscriber_emitter, "f").on(event, eventHandler);
113
+ return () => {
114
+ __classPrivateFieldGet(this, _RealtimeSubscriber_emitter, "f").off(event, eventHandler);
115
+ dispose();
116
+ };
117
+ }, _RealtimeSubscriber_createBatchHandler = function _RealtimeSubscriber_createBatchHandler(maxTimeout, listener) {
129
118
  const handler = {
130
119
  buffer: [],
120
+ closed: false,
131
121
  };
132
122
  __classPrivateFieldGet(this, _RealtimeSubscriber_handlers, "f").push(handler);
133
- return (trId) => {
123
+ const eventHandler = (trId) => {
124
+ if (handler.closed) {
125
+ return;
126
+ }
134
127
  handler.buffer.push(trId);
135
- if (handler.timeout) {
128
+ if (handler.cycle) {
136
129
  return;
137
130
  }
138
- handler.ac = new AbortController();
139
- handler.timeout = setTimeout(maxTimeout, undefined, { signal: handler.ac.signal })
140
- .then(() => {
141
- handler.timeout = undefined;
131
+ handler.cycle = __classPrivateFieldGet(this, _RealtimeSubscriber_instances, "m", _RealtimeSubscriber_runBatchHandler).call(this, handler, maxTimeout, listener);
132
+ };
133
+ return {
134
+ dispose: () => __classPrivateFieldGet(this, _RealtimeSubscriber_instances, "m", _RealtimeSubscriber_disposeBatchHandler).call(this, handler),
135
+ eventHandler,
136
+ };
137
+ }, _RealtimeSubscriber_runBatchHandler = async function _RealtimeSubscriber_runBatchHandler(handler, maxTimeout, listener) {
138
+ try {
139
+ while (!handler.closed && handler.buffer.length > 0) {
140
+ handler.abortController = new AbortController();
141
+ await setTimeout(maxTimeout, undefined, { signal: handler.abortController.signal });
142
+ handler.abortController = undefined;
142
143
  const bufferCopy = [...handler.buffer];
143
144
  handler.buffer = [];
144
- handler.ac = undefined;
145
- return listener(bufferCopy);
146
- })
147
- .catch((err) => {
148
- if (err.name === "AbortError") {
149
- return;
150
- }
151
- console.error("can't execute listener", err);
152
- });
153
- };
145
+ await runListener(listener, bufferCopy);
146
+ }
147
+ }
148
+ catch (err) {
149
+ if (err.name === "AbortError") {
150
+ return;
151
+ }
152
+ handler.buffer = [];
153
+ console.error("can't execute listener", err);
154
+ }
155
+ finally {
156
+ handler.abortController = undefined;
157
+ handler.cycle = undefined;
158
+ }
159
+ }, _RealtimeSubscriber_disposeBatchHandler = function _RealtimeSubscriber_disposeBatchHandler(handler) {
160
+ handler.closed = true;
161
+ handler.abortController?.abort();
162
+ handler.abortController = undefined;
163
+ handler.buffer = [];
164
+ handler.cycle = undefined;
165
+ __classPrivateFieldSet(this, _RealtimeSubscriber_handlers, __classPrivateFieldGet(this, _RealtimeSubscriber_handlers, "f").filter((registeredHandler) => registeredHandler !== handler), "f");
154
166
  };
@@ -0,0 +1,8 @@
1
+ import { RealtimeEventsDispatcher, RealtimeSubscriber } from "./event.js";
2
+ export declare class RealtimeChannel {
3
+ #private;
4
+ readonly dispatcher: RealtimeEventsDispatcher;
5
+ readonly subscriber: RealtimeSubscriber;
6
+ onResultLikeChanged(listener: () => void): () => void;
7
+ close(): void;
8
+ }
@@ -0,0 +1,29 @@
1
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
+ };
6
+ var _RealtimeChannel_emitter;
7
+ import { EventEmitter } from "node:events";
8
+ import { RealtimeEvents, RealtimeEventsDispatcher, RealtimeSubscriber } from "./event.js";
9
+ export class RealtimeChannel {
10
+ constructor() {
11
+ _RealtimeChannel_emitter.set(this, new EventEmitter());
12
+ this.dispatcher = new RealtimeEventsDispatcher(__classPrivateFieldGet(this, _RealtimeChannel_emitter, "f"));
13
+ this.subscriber = new RealtimeSubscriber(__classPrivateFieldGet(this, _RealtimeChannel_emitter, "f"));
14
+ }
15
+ onResultLikeChanged(listener) {
16
+ __classPrivateFieldGet(this, _RealtimeChannel_emitter, "f").on(RealtimeEvents.TestResult, listener);
17
+ __classPrivateFieldGet(this, _RealtimeChannel_emitter, "f").on(RealtimeEvents.TestFixtureResult, listener);
18
+ __classPrivateFieldGet(this, _RealtimeChannel_emitter, "f").on(RealtimeEvents.AttachmentFile, listener);
19
+ return () => {
20
+ __classPrivateFieldGet(this, _RealtimeChannel_emitter, "f").off(RealtimeEvents.TestResult, listener);
21
+ __classPrivateFieldGet(this, _RealtimeChannel_emitter, "f").off(RealtimeEvents.TestFixtureResult, listener);
22
+ __classPrivateFieldGet(this, _RealtimeChannel_emitter, "f").off(RealtimeEvents.AttachmentFile, listener);
23
+ };
24
+ }
25
+ close() {
26
+ this.subscriber.offAll();
27
+ }
28
+ }
29
+ _RealtimeChannel_emitter = new WeakMap();
@@ -0,0 +1,10 @@
1
+ export interface RealtimeUpdateSchedulerOptions {
2
+ cooldownMs?: number;
3
+ }
4
+ export declare class RealtimeUpdateScheduler {
5
+ #private;
6
+ constructor(worker: () => Promise<void>, options?: RealtimeUpdateSchedulerOptions);
7
+ request(): void;
8
+ flush(): Promise<void>;
9
+ close(): Promise<void>;
10
+ }
@@ -0,0 +1,81 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _RealtimeUpdateScheduler_instances, _RealtimeUpdateScheduler_worker, _RealtimeUpdateScheduler_cooldownMs, _RealtimeUpdateScheduler_closed, _RealtimeUpdateScheduler_dirty, _RealtimeUpdateScheduler_phase, _RealtimeUpdateScheduler_cycle, _RealtimeUpdateScheduler_failed, _RealtimeUpdateScheduler_failure, _RealtimeUpdateScheduler_startCycle, _RealtimeUpdateScheduler_runCycle;
13
+ import { setTimeout } from "node:timers/promises";
14
+ export class RealtimeUpdateScheduler {
15
+ constructor(worker, options = {}) {
16
+ _RealtimeUpdateScheduler_instances.add(this);
17
+ _RealtimeUpdateScheduler_worker.set(this, void 0);
18
+ _RealtimeUpdateScheduler_cooldownMs.set(this, void 0);
19
+ _RealtimeUpdateScheduler_closed.set(this, false);
20
+ _RealtimeUpdateScheduler_dirty.set(this, false);
21
+ _RealtimeUpdateScheduler_phase.set(this, "idle");
22
+ _RealtimeUpdateScheduler_cycle.set(this, void 0);
23
+ _RealtimeUpdateScheduler_failed.set(this, false);
24
+ _RealtimeUpdateScheduler_failure.set(this, void 0);
25
+ _RealtimeUpdateScheduler_runCycle.set(this, async () => {
26
+ do {
27
+ __classPrivateFieldSet(this, _RealtimeUpdateScheduler_phase, "scheduled", "f");
28
+ await setTimeout(__classPrivateFieldGet(this, _RealtimeUpdateScheduler_cooldownMs, "f"));
29
+ __classPrivateFieldSet(this, _RealtimeUpdateScheduler_phase, "running", "f");
30
+ __classPrivateFieldSet(this, _RealtimeUpdateScheduler_dirty, false, "f");
31
+ await __classPrivateFieldGet(this, _RealtimeUpdateScheduler_worker, "f").call(this);
32
+ } while (__classPrivateFieldGet(this, _RealtimeUpdateScheduler_dirty, "f"));
33
+ });
34
+ __classPrivateFieldSet(this, _RealtimeUpdateScheduler_worker, worker, "f");
35
+ __classPrivateFieldSet(this, _RealtimeUpdateScheduler_cooldownMs, options.cooldownMs ?? 100, "f");
36
+ }
37
+ request() {
38
+ if (__classPrivateFieldGet(this, _RealtimeUpdateScheduler_closed, "f")) {
39
+ return;
40
+ }
41
+ if (__classPrivateFieldGet(this, _RealtimeUpdateScheduler_phase, "f") === "running") {
42
+ __classPrivateFieldSet(this, _RealtimeUpdateScheduler_dirty, true, "f");
43
+ return;
44
+ }
45
+ if (__classPrivateFieldGet(this, _RealtimeUpdateScheduler_phase, "f") === "idle") {
46
+ __classPrivateFieldGet(this, _RealtimeUpdateScheduler_instances, "m", _RealtimeUpdateScheduler_startCycle).call(this);
47
+ }
48
+ }
49
+ async flush() {
50
+ await __classPrivateFieldGet(this, _RealtimeUpdateScheduler_cycle, "f");
51
+ if (__classPrivateFieldGet(this, _RealtimeUpdateScheduler_failed, "f")) {
52
+ throw __classPrivateFieldGet(this, _RealtimeUpdateScheduler_failure, "f");
53
+ }
54
+ }
55
+ async close() {
56
+ __classPrivateFieldSet(this, _RealtimeUpdateScheduler_closed, true, "f");
57
+ await this.flush();
58
+ }
59
+ }
60
+ _RealtimeUpdateScheduler_worker = new WeakMap(), _RealtimeUpdateScheduler_cooldownMs = new WeakMap(), _RealtimeUpdateScheduler_closed = new WeakMap(), _RealtimeUpdateScheduler_dirty = new WeakMap(), _RealtimeUpdateScheduler_phase = new WeakMap(), _RealtimeUpdateScheduler_cycle = new WeakMap(), _RealtimeUpdateScheduler_failed = new WeakMap(), _RealtimeUpdateScheduler_failure = new WeakMap(), _RealtimeUpdateScheduler_runCycle = new WeakMap(), _RealtimeUpdateScheduler_instances = new WeakSet(), _RealtimeUpdateScheduler_startCycle = function _RealtimeUpdateScheduler_startCycle() {
61
+ if (__classPrivateFieldGet(this, _RealtimeUpdateScheduler_phase, "f") !== "idle") {
62
+ return;
63
+ }
64
+ __classPrivateFieldSet(this, _RealtimeUpdateScheduler_failed, false, "f");
65
+ __classPrivateFieldSet(this, _RealtimeUpdateScheduler_failure, undefined, "f");
66
+ __classPrivateFieldSet(this, _RealtimeUpdateScheduler_dirty, false, "f");
67
+ const cycle = __classPrivateFieldGet(this, _RealtimeUpdateScheduler_runCycle, "f").call(this)
68
+ .catch((err) => {
69
+ __classPrivateFieldSet(this, _RealtimeUpdateScheduler_failed, true, "f");
70
+ __classPrivateFieldSet(this, _RealtimeUpdateScheduler_failure, err, "f");
71
+ throw err;
72
+ })
73
+ .finally(() => {
74
+ if (__classPrivateFieldGet(this, _RealtimeUpdateScheduler_cycle, "f") === cycle) {
75
+ __classPrivateFieldSet(this, _RealtimeUpdateScheduler_cycle, undefined, "f");
76
+ __classPrivateFieldSet(this, _RealtimeUpdateScheduler_phase, "idle", "f");
77
+ }
78
+ });
79
+ cycle.catch(() => { });
80
+ __classPrivateFieldSet(this, _RealtimeUpdateScheduler_cycle, cycle, "f");
81
+ };