@cucumber/query 14.7.0 → 15.0.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.
@@ -1,8 +1,10 @@
1
- import { Examples, Feature, GherkinDocument, Pickle, Rule, Scenario, TableRow } from '@cucumber/messages';
1
+ import { Background, Examples, Feature, GherkinDocument, Pickle, Rule, Scenario, TableRow } from '@cucumber/messages';
2
2
  export interface Lineage {
3
3
  gherkinDocument?: GherkinDocument;
4
4
  feature?: Feature;
5
+ background?: Background;
5
6
  rule?: Rule;
7
+ ruleBackground?: Background;
6
8
  scenario?: Scenario;
7
9
  examples?: Examples;
8
10
  examplesIndex?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"Lineage.d.ts","sourceRoot":"","sources":["../../src/Lineage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,OAAO,EACP,eAAe,EACf,MAAM,EACN,IAAI,EACJ,QAAQ,EACR,QAAQ,EACT,MAAM,oBAAoB,CAAA;AAE3B,MAAM,WAAW,OAAO;IACtB,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,QAAQ,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC,CAAA;CAChD;AAED,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAA;AAEnD,oBAAY,oBAAoB;IAC9B,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAED,oBAAY,yBAAyB;IACnC,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,oBAAY,yBAAyB;IACnC,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,kCAAkC,uCAAuC;CAC1E;AA8DD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,oBAAoB,EAC5B,WAAW,GAAE,yBAA6D,EAC1E,WAAW,GAAE,yBAAwF,GACpG,cAAc,CAEhB"}
1
+ {"version":3,"file":"Lineage.d.ts","sourceRoot":"","sources":["../../src/Lineage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,QAAQ,EACR,OAAO,EACP,eAAe,EACf,MAAM,EACN,IAAI,EACJ,QAAQ,EACR,QAAQ,EACT,MAAM,oBAAoB,CAAA;AAE3B,MAAM,WAAW,OAAO;IACtB,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,cAAc,CAAC,EAAE,UAAU,CAAA;IAC3B,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,QAAQ,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC,CAAA;CAChD;AAED,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAA;AAEnD,oBAAY,oBAAoB;IAC9B,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAED,oBAAY,yBAAyB;IACnC,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,oBAAY,yBAAyB;IACnC,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,kCAAkC,uCAAuC;CAC1E;AA8DD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,oBAAoB,EAC5B,WAAW,GAAE,yBAA6D,EAC1E,WAAW,GAAE,yBAAwF,GACpG,cAAc,CAEhB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Lineage.js","sourceRoot":"","sources":["../../src/Lineage.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Examples,\n Feature,\n GherkinDocument,\n Pickle,\n Rule,\n Scenario,\n TableRow,\n} from '@cucumber/messages'\n\nexport interface Lineage {\n gherkinDocument?: GherkinDocument\n feature?: Feature\n rule?: Rule\n scenario?: Scenario\n examples?: Examples\n examplesIndex?: number\n example?: TableRow\n exampleIndex?: number\n}\n\nexport interface LineageReducer<T> {\n reduce: (lineage: Lineage, pickle: Pickle) => T\n}\n\nexport type NamingStrategy = LineageReducer<string>\n\nexport enum NamingStrategyLength {\n LONG = 'LONG',\n SHORT = 'SHORT',\n}\n\nexport enum NamingStrategyFeatureName {\n INCLUDE = 'INCLUDE',\n EXCLUDE = 'EXCLUDE',\n}\n\nexport enum NamingStrategyExampleName {\n NUMBER = 'NUMBER',\n PICKLE = 'PICKLE',\n NUMBER_AND_PICKLE_IF_PARAMETERIZED = 'NUMBER_AND_PICKLE_IF_PARAMETERIZED',\n}\n\nclass BuiltinNamingStrategy implements NamingStrategy {\n constructor(\n private readonly length: NamingStrategyLength,\n private readonly featureName: NamingStrategyFeatureName,\n private readonly exampleName: NamingStrategyExampleName\n ) {}\n\n reduce(lineage: Lineage, pickle: Pickle): string {\n const parts: string[] = []\n\n if (lineage.feature?.name && this.featureName === NamingStrategyFeatureName.INCLUDE) {\n parts.push(lineage.feature.name)\n }\n\n if (lineage.rule?.name) {\n parts.push(lineage.rule.name)\n }\n\n if (lineage.scenario?.name) {\n parts.push(lineage.scenario.name)\n } else {\n parts.push(pickle.name)\n }\n\n if (lineage.examples?.name) {\n parts.push(lineage.examples.name)\n }\n\n if (lineage.example) {\n const exampleNumber = [\n '#',\n (lineage.examplesIndex ?? 0) + 1,\n '.',\n (lineage.exampleIndex ?? 0) + 1,\n ].join('')\n\n switch (this.exampleName) {\n case NamingStrategyExampleName.NUMBER:\n parts.push(exampleNumber)\n break\n case NamingStrategyExampleName.NUMBER_AND_PICKLE_IF_PARAMETERIZED:\n if (lineage.scenario?.name !== pickle.name) {\n parts.push(exampleNumber + ': ' + pickle.name)\n } else {\n parts.push(exampleNumber)\n }\n break\n case NamingStrategyExampleName.PICKLE:\n parts.push(pickle.name)\n break\n }\n }\n\n if (this.length === NamingStrategyLength.SHORT) {\n return parts.at(-1) as string\n }\n return parts.filter((part) => !!part).join(' - ')\n }\n}\n\nexport function namingStrategy(\n length: NamingStrategyLength,\n featureName: NamingStrategyFeatureName = NamingStrategyFeatureName.INCLUDE,\n exampleName: NamingStrategyExampleName = NamingStrategyExampleName.NUMBER_AND_PICKLE_IF_PARAMETERIZED\n): NamingStrategy {\n return new BuiltinNamingStrategy(length, featureName, exampleName)\n}\n"]}
1
+ {"version":3,"file":"Lineage.js","sourceRoot":"","sources":["../../src/Lineage.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Background,\n Examples,\n Feature,\n GherkinDocument,\n Pickle,\n Rule,\n Scenario,\n TableRow,\n} from '@cucumber/messages'\n\nexport interface Lineage {\n gherkinDocument?: GherkinDocument\n feature?: Feature\n background?: Background\n rule?: Rule\n ruleBackground?: Background\n scenario?: Scenario\n examples?: Examples\n examplesIndex?: number\n example?: TableRow\n exampleIndex?: number\n}\n\nexport interface LineageReducer<T> {\n reduce: (lineage: Lineage, pickle: Pickle) => T\n}\n\nexport type NamingStrategy = LineageReducer<string>\n\nexport enum NamingStrategyLength {\n LONG = 'LONG',\n SHORT = 'SHORT',\n}\n\nexport enum NamingStrategyFeatureName {\n INCLUDE = 'INCLUDE',\n EXCLUDE = 'EXCLUDE',\n}\n\nexport enum NamingStrategyExampleName {\n NUMBER = 'NUMBER',\n PICKLE = 'PICKLE',\n NUMBER_AND_PICKLE_IF_PARAMETERIZED = 'NUMBER_AND_PICKLE_IF_PARAMETERIZED',\n}\n\nclass BuiltinNamingStrategy implements NamingStrategy {\n constructor(\n private readonly length: NamingStrategyLength,\n private readonly featureName: NamingStrategyFeatureName,\n private readonly exampleName: NamingStrategyExampleName\n ) {}\n\n reduce(lineage: Lineage, pickle: Pickle): string {\n const parts: string[] = []\n\n if (lineage.feature?.name && this.featureName === NamingStrategyFeatureName.INCLUDE) {\n parts.push(lineage.feature.name)\n }\n\n if (lineage.rule?.name) {\n parts.push(lineage.rule.name)\n }\n\n if (lineage.scenario?.name) {\n parts.push(lineage.scenario.name)\n } else {\n parts.push(pickle.name)\n }\n\n if (lineage.examples?.name) {\n parts.push(lineage.examples.name)\n }\n\n if (lineage.example) {\n const exampleNumber = [\n '#',\n (lineage.examplesIndex ?? 0) + 1,\n '.',\n (lineage.exampleIndex ?? 0) + 1,\n ].join('')\n\n switch (this.exampleName) {\n case NamingStrategyExampleName.NUMBER:\n parts.push(exampleNumber)\n break\n case NamingStrategyExampleName.NUMBER_AND_PICKLE_IF_PARAMETERIZED:\n if (lineage.scenario?.name !== pickle.name) {\n parts.push(exampleNumber + ': ' + pickle.name)\n } else {\n parts.push(exampleNumber)\n }\n break\n case NamingStrategyExampleName.PICKLE:\n parts.push(pickle.name)\n break\n }\n }\n\n if (this.length === NamingStrategyLength.SHORT) {\n return parts.at(-1) as string\n }\n return parts.filter((part) => !!part).join(' - ')\n }\n}\n\nexport function namingStrategy(\n length: NamingStrategyLength,\n featureName: NamingStrategyFeatureName = NamingStrategyFeatureName.INCLUDE,\n exampleName: NamingStrategyExampleName = NamingStrategyExampleName.NUMBER_AND_PICKLE_IF_PARAMETERIZED\n): NamingStrategy {\n return new BuiltinNamingStrategy(length, featureName, exampleName)\n}\n"]}
@@ -2,16 +2,6 @@ import * as messages from '@cucumber/messages';
2
2
  import { Attachment, Duration, Hook, Location, Meta, Pickle, PickleStep, Step, StepDefinition, Suggestion, TestCase, TestCaseFinished, TestCaseStarted, TestRunFinished, TestRunHookFinished, TestRunHookStarted, TestRunStarted, TestStep, TestStepFinished, TestStepResult, TestStepResultStatus, TestStepStarted, UndefinedParameterType } from '@cucumber/messages';
3
3
  import { Lineage } from './Lineage';
4
4
  export default class Query {
5
- private readonly testStepResultByPickleId;
6
- private readonly testStepResultsByPickleStepId;
7
- private readonly testCaseByPickleId;
8
- private readonly pickleIdByTestStepId;
9
- private readonly pickleStepIdByTestStepId;
10
- private readonly testStepResultsbyTestStepId;
11
- private readonly testStepIdsByPickleStepId;
12
- private readonly hooksById;
13
- private readonly attachmentsByTestStepId;
14
- private readonly stepMatchArgumentsListsByPickleStepId;
15
5
  private meta;
16
6
  private testRunStarted;
17
7
  private testRunFinished;
@@ -20,6 +10,7 @@ export default class Query {
20
10
  private readonly stepById;
21
11
  private readonly pickleById;
22
12
  private readonly pickleStepById;
13
+ private readonly hookById;
23
14
  private readonly stepDefinitionById;
24
15
  private readonly testCaseById;
25
16
  private readonly testStepById;
@@ -49,33 +40,6 @@ export default class Query {
49
40
  private updateTestCaseFinished;
50
41
  private updateSuggestion;
51
42
  private updateUndefinedParameterType;
52
- /**
53
- * Gets all the results for multiple pickle steps
54
- * @param pickleStepIds
55
- */
56
- getPickleStepTestStepResults(pickleStepIds: readonly string[]): readonly messages.TestStepResult[];
57
- /**
58
- * Gets all the results for multiple pickles
59
- * @param pickleIds
60
- */
61
- getPickleTestStepResults(pickleIds: readonly string[]): readonly messages.TestStepResult[];
62
- /**
63
- * Gets all the attachments for multiple pickle steps
64
- * @param pickleStepIds
65
- */
66
- getPickleStepAttachments(pickleStepIds: readonly string[]): readonly messages.Attachment[];
67
- getTestStepsAttachments(testStepIds: readonly string[]): readonly messages.Attachment[];
68
- /**
69
- * Get StepMatchArguments for a pickle step
70
- * @param pickleStepId
71
- */
72
- getStepMatchArgumentsLists(pickleStepId: string): readonly messages.StepMatchArgumentsList[] | undefined;
73
- getHook(hookId: string): messages.Hook;
74
- getBeforeHookSteps(pickleId: string): readonly messages.TestStep[];
75
- getAfterHookSteps(pickleId: string): readonly messages.TestStep[];
76
- private identifyHookSteps;
77
- getTestStepResults(testStepId: string): messages.TestStepResult[];
78
- getStatusCounts(pickleIds: readonly string[]): Partial<Record<messages.TestStepResultStatus, number>>;
79
43
  countMostSevereTestStepResultStatus(): Record<TestStepResultStatus, number>;
80
44
  countTestCasesStarted(): number;
81
45
  findAllPickles(): ReadonlyArray<Pickle>;
@@ -83,6 +47,8 @@ export default class Query {
83
47
  findAllStepDefinitions(): ReadonlyArray<StepDefinition>;
84
48
  findAllTestCaseStarted(): ReadonlyArray<TestCaseStarted>;
85
49
  findAllTestCaseFinished(): ReadonlyArray<TestCaseFinished>;
50
+ findAllTestCaseStartedOrderBy<T>(findOrderBy: (query: Query, testCaseStarted: TestCaseStarted) => T | undefined, order: (a: T, b: T) => number): ReadonlyArray<TestCaseStarted>;
51
+ findAllTestCaseFinishedOrderBy<T>(findOrderBy: (query: Query, testCaseFinished: TestCaseFinished) => T | undefined, order: (a: T, b: T) => number): ReadonlyArray<TestCaseFinished>;
86
52
  findAllTestSteps(): ReadonlyArray<TestStep>;
87
53
  findAllTestStepStarted(): ReadonlyArray<TestStepStarted>;
88
54
  findAllTestStepFinished(): ReadonlyArray<TestStepFinished>;
@@ -1 +1 @@
1
- {"version":3,"file":"Query.d.ts","sourceRoot":"","sources":["../../src/Query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EACL,UAAU,EACV,QAAQ,EAIR,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,UAAU,EAGV,IAAI,EACJ,cAAc,EACd,UAAU,EACV,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,QAAQ,EACR,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,eAAe,EAEf,sBAAsB,EACvB,MAAM,oBAAoB,CAAA;AAK3B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,CAAC,OAAO,OAAO,KAAK;IACxB,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAuD;IAChG,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAG3C;IACH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAuC;IAC1E,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA4B;IACjE,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAA4B;IACrE,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAGzC;IACH,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAsC;IAChF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmC;IAC7D,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAmD;IAC3F,OAAO,CAAC,QAAQ,CAAC,qCAAqC,CAGnD;IAEH,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA0C;IAC9E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkC;IAC9D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA+B;IACxD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiC;IAC5D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqC;IACpE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAyC;IAC5E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmC;IAChE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmC;IAChE,OAAO,CAAC,QAAQ,CAAC,mCAAmC,CAA2C;IAC/F,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA6C;IACpF,OAAO,CAAC,QAAQ,CAAC,yCAAyC,CAC/C;IACX,OAAO,CAAC,QAAQ,CAAC,kCAAkC,CAC9B;IACrB,OAAO,CAAC,QAAQ,CAAC,mCAAmC,CAC/B;IACrB,OAAO,CAAC,QAAQ,CAAC,8BAA8B,CAC1B;IACrB,OAAO,CAAC,QAAQ,CAAC,iCAAiC,CAC7B;IACrB,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CACrB;IACrB,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA+B;IAEhE,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;IAsDzC,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,cAAc;IA0BtB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,yBAAyB;IAOjC,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,qBAAqB;IAmB7B,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,4BAA4B;IAIpC;;;OAGG;IACI,4BAA4B,CACjC,aAAa,EAAE,SAAS,MAAM,EAAE,GAC/B,SAAS,QAAQ,CAAC,cAAc,EAAE;IAcrC;;;OAGG;IACI,wBAAwB,CAC7B,SAAS,EAAE,SAAS,MAAM,EAAE,GAC3B,SAAS,QAAQ,CAAC,cAAc,EAAE;IAcrC;;;OAGG;IACI,wBAAwB,CAC7B,aAAa,EAAE,SAAS,MAAM,EAAE,GAC/B,SAAS,QAAQ,CAAC,UAAU,EAAE;IAQ1B,uBAAuB,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,QAAQ,CAAC,UAAU,EAAE;IAM9F;;;OAGG;IACI,0BAA0B,CAC/B,YAAY,EAAE,MAAM,GACnB,SAAS,QAAQ,CAAC,sBAAsB,EAAE,GAAG,SAAS;IAIlD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,IAAI;IAItC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,QAAQ,CAAC,QAAQ,EAAE;IAWlE,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,QAAQ,CAAC,QAAQ,EAAE;IAWxE,OAAO,CAAC,iBAAiB;IA0BlB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC,cAAc,EAAE;IAIjE,eAAe,CACpB,SAAS,EAAE,SAAS,MAAM,EAAE,GAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IAYlD,mCAAmC,IAAI,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC;IAwB3E,qBAAqB,IAAI,MAAM;IAI/B,cAAc,IAAI,aAAa,CAAC,MAAM,CAAC;IAIvC,kBAAkB,IAAI,aAAa,CAAC,UAAU,CAAC;IAI/C,sBAAsB,IAAI,aAAa,CAAC,cAAc,CAAC;IAIvD,sBAAsB,IAAI,aAAa,CAAC,eAAe,CAAC;IAexD,uBAAuB,IAAI,aAAa,CAAC,gBAAgB,CAAC;IAc1D,gBAAgB,IAAI,aAAa,CAAC,QAAQ,CAAC;IAI3C,sBAAsB,IAAI,aAAa,CAAC,eAAe,CAAC;IAIxD,uBAAuB,IAAI,aAAa,CAAC,gBAAgB,CAAC;IAI1D,yBAAyB,IAAI,aAAa,CAAC,kBAAkB,CAAC;IAI9D,0BAA0B,IAAI,aAAa,CAAC,mBAAmB,CAAC;IAIhE,8BAA8B,IAAI,aAAa,CAAC,sBAAsB,CAAC;IAIvE,iBAAiB,CACtB,OAAO,EAAE,gBAAgB,GAAG,mBAAmB,GAC9C,aAAa,CAAC,UAAU,CAAC;IAUrB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,IAAI,GAAG,SAAS;IAYvF,QAAQ,IAAI,IAAI,GAAG,SAAS;IAI5B,8BAA8B,CACnC,OAAO,EAAE,eAAe,GAAG,gBAAgB,GAC1C,cAAc,GAAG,SAAS;IAWtB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAQpD,YAAY,CACjB,OAAO,EAAE,eAAe,GAAG,gBAAgB,GAAG,eAAe,GAC5D,MAAM,GAAG,SAAS;IAMd,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS;IAO5D,UAAU,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS;IAMpD,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,GAAG,aAAa,CAAC,cAAc,CAAC;IAI/E,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC;IAOnE,+BAA+B,CAAC,QAAQ,EAAE,QAAQ,GAAG,cAAc,GAAG,SAAS;IAO/E,cAAc,CACnB,OAAO,EAAE,eAAe,GAAG,gBAAgB,GAAG,eAAe,GAAG,gBAAgB,GAC/E,QAAQ,GAAG,SAAS;IAOhB,sBAAsB,CAAC,OAAO,EAAE,eAAe,GAAG,gBAAgB,GAAG,QAAQ,GAAG,SAAS;IAmBzF,qBAAqB,CAC1B,OAAO,EAAE,gBAAgB,GAAG,eAAe,GAAG,gBAAgB,GAC7D,eAAe,GAAG,SAAS;IAIvB,sBAAsB,CAAC,eAAe,EAAE,eAAe,GAAG,gBAAgB,GAAG,SAAS;IAItF,wBAAwB,CAC7B,mBAAmB,EAAE,mBAAmB,GACvC,kBAAkB,GAAG,SAAS;IAI1B,yBAAyB,CAC9B,kBAAkB,EAAE,kBAAkB,GACrC,mBAAmB,GAAG,SAAS;IAI3B,mBAAmB,IAAI,QAAQ,GAAG,SAAS;IAU3C,mBAAmB,IAAI,eAAe,GAAG,SAAS;IAIlD,kBAAkB,IAAI,cAAc,GAAG,SAAS;IAIhD,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,gBAAgB,GAAG,QAAQ,GAAG,SAAS;IAIjF,sBAAsB,CAC3B,OAAO,EAAE,eAAe,GAAG,gBAAgB,GAC1C,aAAa,CAAC,eAAe,CAAC;IAO1B,uBAAuB,CAC5B,OAAO,EAAE,eAAe,GAAG,gBAAgB,GAC1C,aAAa,CAAC,gBAAgB,CAAC;IAO3B,iCAAiC,CACtC,eAAe,EAAE,eAAe,GAC/B,aAAa,CAAC,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IAUvC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,GAAG,gBAAgB,GAAG,OAAO,GAAG,SAAS;CAMhG"}
1
+ {"version":3,"file":"Query.d.ts","sourceRoot":"","sources":["../../src/Query.ts"],"names":[],"mappings":"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"}
package/dist/src/Query.js CHANGED
@@ -1,63 +1,20 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
36
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
4
  };
38
5
  Object.defineProperty(exports, "__esModule", { value: true });
39
- const messages = __importStar(require("@cucumber/messages"));
40
6
  const messages_1 = require("@cucumber/messages");
41
7
  const multimaps_1 = require("@teppeis/multimaps");
42
8
  const lodash_sortby_1 = __importDefault(require("lodash.sortby"));
43
9
  const helpers_1 = require("./helpers");
44
10
  class Query {
45
11
  constructor() {
46
- this.testStepResultByPickleId = new multimaps_1.ArrayMultimap();
47
- this.testStepResultsByPickleStepId = new multimaps_1.ArrayMultimap();
48
- this.testCaseByPickleId = new Map();
49
- this.pickleIdByTestStepId = new Map();
50
- this.pickleStepIdByTestStepId = new Map();
51
- this.testStepResultsbyTestStepId = new multimaps_1.ArrayMultimap();
52
- this.testStepIdsByPickleStepId = new multimaps_1.ArrayMultimap();
53
- this.hooksById = new Map();
54
- this.attachmentsByTestStepId = new multimaps_1.ArrayMultimap();
55
- this.stepMatchArgumentsListsByPickleStepId = new Map();
56
12
  this.testCaseStartedById = new Map();
57
13
  this.lineageById = new Map();
58
14
  this.stepById = new Map();
59
15
  this.pickleById = new Map();
60
16
  this.pickleStepById = new Map();
17
+ this.hookById = new Map();
61
18
  this.stepDefinitionById = new Map();
62
19
  this.testCaseById = new Map();
63
20
  this.testStepById = new Map();
@@ -82,7 +39,7 @@ class Query {
82
39
  this.updatePickle(envelope.pickle);
83
40
  }
84
41
  if (envelope.hook) {
85
- this.hooksById.set(envelope.hook.id, envelope.hook);
42
+ this.hookById.set(envelope.hook.id, envelope.hook);
86
43
  }
87
44
  if (envelope.stepDefinition) {
88
45
  this.stepDefinitionById.set(envelope.stepDefinition.id, envelope.stepDefinition);
@@ -134,6 +91,7 @@ class Query {
134
91
  updateFeature(feature, lineage) {
135
92
  feature.children.forEach((featureChild) => {
136
93
  if (featureChild.background) {
94
+ lineage.background = featureChild.background;
137
95
  this.updateSteps(featureChild.background.steps);
138
96
  }
139
97
  if (featureChild.scenario) {
@@ -147,6 +105,7 @@ class Query {
147
105
  updateRule(rule, lineage) {
148
106
  rule.children.forEach((ruleChild) => {
149
107
  if (ruleChild.background) {
108
+ lineage.ruleBackground = ruleChild.background;
150
109
  this.updateSteps(ruleChild.background.steps);
151
110
  }
152
111
  if (ruleChild.scenario) {
@@ -185,39 +144,17 @@ class Query {
185
144
  }
186
145
  updateTestCase(testCase) {
187
146
  this.testCaseById.set(testCase.id, testCase);
188
- this.testCaseByPickleId.set(testCase.pickleId, testCase);
189
147
  testCase.testSteps.forEach((testStep) => {
190
148
  this.testStepById.set(testStep.id, testStep);
191
- this.pickleIdByTestStepId.set(testStep.id, testCase.pickleId);
192
- this.pickleStepIdByTestStepId.set(testStep.id, testStep.pickleStepId);
193
- this.testStepIdsByPickleStepId.put(testStep.pickleStepId, testStep.id);
194
- this.stepMatchArgumentsListsByPickleStepId.set(testStep.pickleStepId, testStep.stepMatchArgumentsLists);
195
149
  });
196
150
  }
197
151
  updateTestCaseStarted(testCaseStarted) {
198
152
  this.testCaseStartedById.set(testCaseStarted.id, testCaseStarted);
199
- /*
200
- when a test case attempt starts besides the first one, clear all existing results
201
- and attachments for that test case, so we always report on the latest attempt
202
- (applies to legacy pickle-oriented query methods only)
203
- */
204
- const testCase = this.testCaseById.get(testCaseStarted.testCaseId);
205
- if (testCase) {
206
- this.testStepResultByPickleId.delete(testCase.pickleId);
207
- for (const testStep of testCase.testSteps) {
208
- this.testStepResultsByPickleStepId.delete(testStep.pickleStepId);
209
- this.testStepResultsbyTestStepId.delete(testStep.id);
210
- this.attachmentsByTestStepId.delete(testStep.id);
211
- }
212
- }
213
153
  }
214
154
  updateTestStepStarted(testStepStarted) {
215
155
  this.testStepStartedByTestCaseStartedId.put(testStepStarted.testCaseStartedId, testStepStarted);
216
156
  }
217
157
  updateAttachment(attachment) {
218
- if (attachment.testStepId) {
219
- this.attachmentsByTestStepId.put(attachment.testStepId, attachment);
220
- }
221
158
  if (attachment.testCaseStartedId) {
222
159
  this.attachmentsByTestCaseStartedId.put(attachment.testCaseStartedId, attachment);
223
160
  }
@@ -227,11 +164,6 @@ class Query {
227
164
  }
228
165
  updateTestStepFinished(testStepFinished) {
229
166
  this.testStepFinishedByTestCaseStartedId.put(testStepFinished.testCaseStartedId, testStepFinished);
230
- const pickleId = this.pickleIdByTestStepId.get(testStepFinished.testStepId);
231
- this.testStepResultByPickleId.put(pickleId, testStepFinished.testStepResult);
232
- const testStep = this.testStepById.get(testStepFinished.testStepId);
233
- this.testStepResultsByPickleStepId.put(testStep.pickleStepId, testStepFinished.testStepResult);
234
- this.testStepResultsbyTestStepId.put(testStep.id, testStepFinished.testStepResult);
235
167
  }
236
168
  updateTestCaseFinished(testCaseFinished) {
237
169
  this.testCaseFinishedByTestCaseStartedId.set(testCaseFinished.testCaseStartedId, testCaseFinished);
@@ -242,107 +174,6 @@ class Query {
242
174
  updateUndefinedParameterType(undefinedParameterType) {
243
175
  this.undefinedParameterTypes.push(undefinedParameterType);
244
176
  }
245
- /**
246
- * Gets all the results for multiple pickle steps
247
- * @param pickleStepIds
248
- */
249
- getPickleStepTestStepResults(pickleStepIds) {
250
- if (pickleStepIds.length === 0) {
251
- return [
252
- {
253
- status: messages.TestStepResultStatus.UNKNOWN,
254
- duration: messages.TimeConversion.millisecondsToDuration(0),
255
- },
256
- ];
257
- }
258
- return pickleStepIds.reduce((testStepResults, pickleId) => {
259
- return testStepResults.concat(this.testStepResultsByPickleStepId.get(pickleId));
260
- }, []);
261
- }
262
- /**
263
- * Gets all the results for multiple pickles
264
- * @param pickleIds
265
- */
266
- getPickleTestStepResults(pickleIds) {
267
- if (pickleIds.length === 0) {
268
- return [
269
- {
270
- status: messages.TestStepResultStatus.UNKNOWN,
271
- duration: messages.TimeConversion.millisecondsToDuration(0),
272
- },
273
- ];
274
- }
275
- return pickleIds.reduce((testStepResults, pickleId) => {
276
- return testStepResults.concat(this.testStepResultByPickleId.get(pickleId));
277
- }, []);
278
- }
279
- /**
280
- * Gets all the attachments for multiple pickle steps
281
- * @param pickleStepIds
282
- */
283
- getPickleStepAttachments(pickleStepIds) {
284
- return this.getTestStepsAttachments(pickleStepIds.reduce((testStepIds, pickleStepId) => {
285
- return testStepIds.concat(this.testStepIdsByPickleStepId.get(pickleStepId));
286
- }, []));
287
- }
288
- getTestStepsAttachments(testStepIds) {
289
- return testStepIds.reduce((attachments, testStepId) => {
290
- return attachments.concat(this.attachmentsByTestStepId.get(testStepId));
291
- }, []);
292
- }
293
- /**
294
- * Get StepMatchArguments for a pickle step
295
- * @param pickleStepId
296
- */
297
- getStepMatchArgumentsLists(pickleStepId) {
298
- return this.stepMatchArgumentsListsByPickleStepId.get(pickleStepId);
299
- }
300
- getHook(hookId) {
301
- return this.hooksById.get(hookId);
302
- }
303
- getBeforeHookSteps(pickleId) {
304
- const hookSteps = [];
305
- this.identifyHookSteps(pickleId, (hook) => hookSteps.push(hook), () => null);
306
- return hookSteps;
307
- }
308
- getAfterHookSteps(pickleId) {
309
- const hookSteps = [];
310
- this.identifyHookSteps(pickleId, () => null, (hook) => hookSteps.push(hook));
311
- return hookSteps;
312
- }
313
- identifyHookSteps(pickleId, onBeforeHookFound, onAfterHookFound) {
314
- const testCase = this.testCaseByPickleId.get(pickleId);
315
- if (!testCase) {
316
- return;
317
- }
318
- let pickleStepFound = false;
319
- for (const step of testCase.testSteps) {
320
- if (step.hookId) {
321
- if (pickleStepFound) {
322
- onAfterHookFound(step);
323
- }
324
- else {
325
- onBeforeHookFound(step);
326
- }
327
- }
328
- else {
329
- pickleStepFound = true;
330
- }
331
- }
332
- }
333
- getTestStepResults(testStepId) {
334
- return this.testStepResultsbyTestStepId.get(testStepId);
335
- }
336
- getStatusCounts(pickleIds) {
337
- const result = {};
338
- for (const pickleId of pickleIds) {
339
- const testStepResult = (0, messages_1.getWorstTestStepResult)(this.getPickleTestStepResults([pickleId]));
340
- const count = result[testStepResult.status] || 0;
341
- result[testStepResult.status] = count + 1;
342
- }
343
- return result;
344
- }
345
- /* new common interface with Java starts here */
346
177
  countMostSevereTestStepResultStatus() {
347
178
  const result = {
348
179
  [messages_1.TestStepResultStatus.AMBIGUOUS]: 0,
@@ -392,6 +223,38 @@ class Query {
392
223
  'id',
393
224
  ]);
394
225
  }
226
+ findAllTestCaseStartedOrderBy(findOrderBy, order) {
227
+ const withOrderBy = this.findAllTestCaseStarted().map((testCaseStarted) => ({
228
+ testCaseStarted,
229
+ orderBy: findOrderBy(this, testCaseStarted),
230
+ }));
231
+ const sorted = withOrderBy.sort((a, b) => {
232
+ if (a.orderBy === undefined && b.orderBy === undefined)
233
+ return 0;
234
+ if (a.orderBy === undefined)
235
+ return 1;
236
+ if (b.orderBy === undefined)
237
+ return -1;
238
+ return order(a.orderBy, b.orderBy);
239
+ });
240
+ return sorted.map((item) => item.testCaseStarted);
241
+ }
242
+ findAllTestCaseFinishedOrderBy(findOrderBy, order) {
243
+ const withOrderBy = this.findAllTestCaseFinished().map((testCaseFinished) => ({
244
+ testCaseFinished,
245
+ orderBy: findOrderBy(this, testCaseFinished),
246
+ }));
247
+ const sorted = withOrderBy.sort((a, b) => {
248
+ if (a.orderBy === undefined && b.orderBy === undefined)
249
+ return 0;
250
+ if (a.orderBy === undefined)
251
+ return 1;
252
+ if (b.orderBy === undefined)
253
+ return -1;
254
+ return order(a.orderBy, b.orderBy);
255
+ });
256
+ return sorted.map((item) => item.testCaseFinished);
257
+ }
395
258
  findAllTestSteps() {
396
259
  return [...this.testStepById.values()];
397
260
  }
@@ -429,7 +292,7 @@ class Query {
429
292
  if (!item.hookId) {
430
293
  return undefined;
431
294
  }
432
- return this.hooksById.get(item.hookId);
295
+ return this.hookById.get(item.hookId);
433
296
  }
434
297
  findMeta() {
435
298
  return this.meta;
@@ -1 +1 @@
1
- {"version":3,"file":"Query.js","sourceRoot":"","sources":["../../src/Query.ts"],"names":[],"mappings":"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","sourcesContent":["import * as messages from '@cucumber/messages'\nimport {\n Attachment,\n Duration,\n Feature,\n getWorstTestStepResult,\n GherkinDocument,\n Hook,\n Location,\n Meta,\n Pickle,\n PickleStep,\n Rule,\n Scenario,\n Step,\n StepDefinition,\n Suggestion,\n TestCase,\n TestCaseFinished,\n TestCaseStarted,\n TestRunFinished,\n TestRunHookFinished,\n TestRunHookStarted,\n TestRunStarted,\n TestStep,\n TestStepFinished,\n TestStepResult,\n TestStepResultStatus,\n TestStepStarted,\n TimeConversion,\n UndefinedParameterType,\n} from '@cucumber/messages'\nimport { ArrayMultimap } from '@teppeis/multimaps'\nimport sortBy from 'lodash.sortby'\n\nimport { assert, statusOrdinal } from './helpers'\nimport { Lineage } from './Lineage'\n\nexport default class Query {\n private readonly testStepResultByPickleId = new ArrayMultimap<string, messages.TestStepResult>()\n private readonly testStepResultsByPickleStepId = new ArrayMultimap<\n string,\n messages.TestStepResult\n >()\n private readonly testCaseByPickleId = new Map<string, messages.TestCase>()\n private readonly pickleIdByTestStepId = new Map<string, string>()\n private readonly pickleStepIdByTestStepId = new Map<string, string>()\n private readonly testStepResultsbyTestStepId = new ArrayMultimap<\n string,\n messages.TestStepResult\n >()\n private readonly testStepIdsByPickleStepId = new ArrayMultimap<string, string>()\n private readonly hooksById = new Map<string, messages.Hook>()\n private readonly attachmentsByTestStepId = new ArrayMultimap<string, messages.Attachment>()\n private readonly stepMatchArgumentsListsByPickleStepId = new Map<\n string,\n readonly messages.StepMatchArgumentsList[]\n >()\n\n private meta: Meta\n private testRunStarted: TestRunStarted\n private testRunFinished: TestRunFinished\n private readonly testCaseStartedById: Map<string, TestCaseStarted> = new Map()\n private readonly lineageById: Map<string, Lineage> = new Map()\n private readonly stepById: Map<string, Step> = new Map()\n private readonly pickleById: Map<string, Pickle> = new Map()\n private readonly pickleStepById: Map<string, PickleStep> = new Map()\n private readonly stepDefinitionById: Map<string, StepDefinition> = new Map()\n private readonly testCaseById: Map<string, TestCase> = new Map()\n private readonly testStepById: Map<string, TestStep> = new Map()\n private readonly testCaseFinishedByTestCaseStartedId: Map<string, TestCaseFinished> = new Map()\n private readonly testRunHookStartedById: Map<string, TestRunHookStarted> = new Map()\n private readonly testRunHookFinishedByTestRunHookStartedId: Map<string, TestRunHookFinished> =\n new Map()\n private readonly testStepStartedByTestCaseStartedId: ArrayMultimap<string, TestStepStarted> =\n new ArrayMultimap()\n private readonly testStepFinishedByTestCaseStartedId: ArrayMultimap<string, TestStepFinished> =\n new ArrayMultimap()\n private readonly attachmentsByTestCaseStartedId: ArrayMultimap<string, Attachment> =\n new ArrayMultimap()\n private readonly attachmentsByTestRunHookStartedId: ArrayMultimap<string, Attachment> =\n new ArrayMultimap()\n private readonly suggestionsByPickleStepId: ArrayMultimap<string, Suggestion> =\n new ArrayMultimap()\n private readonly undefinedParameterTypes: UndefinedParameterType[] = []\n\n public update(envelope: messages.Envelope) {\n if (envelope.meta) {\n this.meta = envelope.meta\n }\n if (envelope.gherkinDocument) {\n this.updateGherkinDocument(envelope.gherkinDocument)\n }\n if (envelope.pickle) {\n this.updatePickle(envelope.pickle)\n }\n if (envelope.hook) {\n this.hooksById.set(envelope.hook.id, envelope.hook)\n }\n if (envelope.stepDefinition) {\n this.stepDefinitionById.set(envelope.stepDefinition.id, envelope.stepDefinition)\n }\n if (envelope.testRunStarted) {\n this.testRunStarted = envelope.testRunStarted\n }\n if (envelope.testRunHookStarted) {\n this.updateTestRunHookStarted(envelope.testRunHookStarted)\n }\n if (envelope.testRunHookFinished) {\n this.updateTestRunHookFinished(envelope.testRunHookFinished)\n }\n if (envelope.testCase) {\n this.updateTestCase(envelope.testCase)\n }\n if (envelope.testCaseStarted) {\n this.updateTestCaseStarted(envelope.testCaseStarted)\n }\n if (envelope.testStepStarted) {\n this.updateTestStepStarted(envelope.testStepStarted)\n }\n if (envelope.attachment) {\n this.updateAttachment(envelope.attachment)\n }\n if (envelope.testStepFinished) {\n this.updateTestStepFinished(envelope.testStepFinished)\n }\n if (envelope.testCaseFinished) {\n this.updateTestCaseFinished(envelope.testCaseFinished)\n }\n if (envelope.testRunFinished) {\n this.testRunFinished = envelope.testRunFinished\n }\n if (envelope.suggestion) {\n this.updateSuggestion(envelope.suggestion)\n }\n if (envelope.undefinedParameterType) {\n this.updateUndefinedParameterType(envelope.undefinedParameterType)\n }\n }\n\n private updateGherkinDocument(gherkinDocument: GherkinDocument) {\n if (gherkinDocument.feature) {\n this.updateFeature(gherkinDocument.feature, {\n gherkinDocument,\n })\n }\n }\n\n private updateFeature(feature: Feature, lineage: Lineage) {\n feature.children.forEach((featureChild) => {\n if (featureChild.background) {\n this.updateSteps(featureChild.background.steps)\n }\n if (featureChild.scenario) {\n this.updateScenario(featureChild.scenario, {\n ...lineage,\n feature,\n })\n }\n if (featureChild.rule) {\n this.updateRule(featureChild.rule, {\n ...lineage,\n feature,\n })\n }\n })\n }\n\n private updateRule(rule: Rule, lineage: Lineage) {\n rule.children.forEach((ruleChild) => {\n if (ruleChild.background) {\n this.updateSteps(ruleChild.background.steps)\n }\n if (ruleChild.scenario) {\n this.updateScenario(ruleChild.scenario, {\n ...lineage,\n rule,\n })\n }\n })\n }\n\n private updateScenario(scenario: Scenario, lineage: Lineage) {\n this.lineageById.set(scenario.id, {\n ...lineage,\n scenario,\n })\n scenario.examples.forEach((examples, examplesIndex) => {\n this.lineageById.set(examples.id, {\n ...lineage,\n scenario,\n examples,\n examplesIndex,\n })\n examples.tableBody.forEach((example, exampleIndex) => {\n this.lineageById.set(example.id, {\n ...lineage,\n scenario,\n examples,\n examplesIndex,\n example,\n exampleIndex,\n })\n })\n })\n this.updateSteps(scenario.steps)\n }\n\n private updateSteps(steps: ReadonlyArray<Step>) {\n steps.forEach((step) => this.stepById.set(step.id, step))\n }\n\n private updatePickle(pickle: Pickle) {\n this.pickleById.set(pickle.id, pickle)\n pickle.steps.forEach((pickleStep) => this.pickleStepById.set(pickleStep.id, pickleStep))\n }\n\n private updateTestRunHookStarted(testRunHookStarted: TestRunHookStarted) {\n this.testRunHookStartedById.set(testRunHookStarted.id, testRunHookStarted)\n }\n\n private updateTestRunHookFinished(testRunHookFinished: TestRunHookFinished) {\n this.testRunHookFinishedByTestRunHookStartedId.set(\n testRunHookFinished.testRunHookStartedId,\n testRunHookFinished\n )\n }\n\n private updateTestCase(testCase: TestCase) {\n this.testCaseById.set(testCase.id, testCase)\n\n this.testCaseByPickleId.set(testCase.pickleId, testCase)\n testCase.testSteps.forEach((testStep) => {\n this.testStepById.set(testStep.id, testStep)\n this.pickleIdByTestStepId.set(testStep.id, testCase.pickleId)\n this.pickleStepIdByTestStepId.set(testStep.id, testStep.pickleStepId)\n this.testStepIdsByPickleStepId.put(testStep.pickleStepId, testStep.id)\n this.stepMatchArgumentsListsByPickleStepId.set(\n testStep.pickleStepId,\n testStep.stepMatchArgumentsLists\n )\n })\n }\n\n private updateTestCaseStarted(testCaseStarted: TestCaseStarted) {\n this.testCaseStartedById.set(testCaseStarted.id, testCaseStarted)\n\n /*\n when a test case attempt starts besides the first one, clear all existing results\n and attachments for that test case, so we always report on the latest attempt\n (applies to legacy pickle-oriented query methods only)\n */\n const testCase = this.testCaseById.get(testCaseStarted.testCaseId)\n if (testCase) {\n this.testStepResultByPickleId.delete(testCase.pickleId)\n for (const testStep of testCase.testSteps) {\n this.testStepResultsByPickleStepId.delete(testStep.pickleStepId)\n this.testStepResultsbyTestStepId.delete(testStep.id)\n this.attachmentsByTestStepId.delete(testStep.id)\n }\n }\n }\n\n private updateTestStepStarted(testStepStarted: TestStepStarted) {\n this.testStepStartedByTestCaseStartedId.put(testStepStarted.testCaseStartedId, testStepStarted)\n }\n\n private updateAttachment(attachment: Attachment) {\n if (attachment.testStepId) {\n this.attachmentsByTestStepId.put(attachment.testStepId, attachment)\n }\n if (attachment.testCaseStartedId) {\n this.attachmentsByTestCaseStartedId.put(attachment.testCaseStartedId, attachment)\n }\n if (attachment.testRunHookStartedId) {\n this.attachmentsByTestRunHookStartedId.put(attachment.testRunHookStartedId, attachment)\n }\n }\n\n private updateTestStepFinished(testStepFinished: TestStepFinished) {\n this.testStepFinishedByTestCaseStartedId.put(\n testStepFinished.testCaseStartedId,\n testStepFinished\n )\n\n const pickleId = this.pickleIdByTestStepId.get(testStepFinished.testStepId)\n this.testStepResultByPickleId.put(pickleId, testStepFinished.testStepResult)\n const testStep = this.testStepById.get(testStepFinished.testStepId)\n this.testStepResultsByPickleStepId.put(testStep.pickleStepId, testStepFinished.testStepResult)\n this.testStepResultsbyTestStepId.put(testStep.id, testStepFinished.testStepResult)\n }\n\n private updateTestCaseFinished(testCaseFinished: TestCaseFinished) {\n this.testCaseFinishedByTestCaseStartedId.set(\n testCaseFinished.testCaseStartedId,\n testCaseFinished\n )\n }\n\n private updateSuggestion(suggestion: Suggestion) {\n this.suggestionsByPickleStepId.put(suggestion.pickleStepId, suggestion)\n }\n\n private updateUndefinedParameterType(undefinedParameterType: UndefinedParameterType) {\n this.undefinedParameterTypes.push(undefinedParameterType)\n }\n\n /**\n * Gets all the results for multiple pickle steps\n * @param pickleStepIds\n */\n public getPickleStepTestStepResults(\n pickleStepIds: readonly string[]\n ): readonly messages.TestStepResult[] {\n if (pickleStepIds.length === 0) {\n return [\n {\n status: messages.TestStepResultStatus.UNKNOWN,\n duration: messages.TimeConversion.millisecondsToDuration(0),\n },\n ]\n }\n return pickleStepIds.reduce((testStepResults: messages.TestStepResult[], pickleId) => {\n return testStepResults.concat(this.testStepResultsByPickleStepId.get(pickleId))\n }, [])\n }\n\n /**\n * Gets all the results for multiple pickles\n * @param pickleIds\n */\n public getPickleTestStepResults(\n pickleIds: readonly string[]\n ): readonly messages.TestStepResult[] {\n if (pickleIds.length === 0) {\n return [\n {\n status: messages.TestStepResultStatus.UNKNOWN,\n duration: messages.TimeConversion.millisecondsToDuration(0),\n },\n ]\n }\n return pickleIds.reduce((testStepResults: messages.TestStepResult[], pickleId) => {\n return testStepResults.concat(this.testStepResultByPickleId.get(pickleId))\n }, [])\n }\n\n /**\n * Gets all the attachments for multiple pickle steps\n * @param pickleStepIds\n */\n public getPickleStepAttachments(\n pickleStepIds: readonly string[]\n ): readonly messages.Attachment[] {\n return this.getTestStepsAttachments(\n pickleStepIds.reduce((testStepIds: string[], pickleStepId: string) => {\n return testStepIds.concat(this.testStepIdsByPickleStepId.get(pickleStepId))\n }, [])\n )\n }\n\n public getTestStepsAttachments(testStepIds: readonly string[]): readonly messages.Attachment[] {\n return testStepIds.reduce((attachments: messages.Attachment[], testStepId) => {\n return attachments.concat(this.attachmentsByTestStepId.get(testStepId))\n }, [])\n }\n\n /**\n * Get StepMatchArguments for a pickle step\n * @param pickleStepId\n */\n public getStepMatchArgumentsLists(\n pickleStepId: string\n ): readonly messages.StepMatchArgumentsList[] | undefined {\n return this.stepMatchArgumentsListsByPickleStepId.get(pickleStepId)\n }\n\n public getHook(hookId: string): messages.Hook {\n return this.hooksById.get(hookId)\n }\n\n public getBeforeHookSteps(pickleId: string): readonly messages.TestStep[] {\n const hookSteps: messages.TestStep[] = []\n\n this.identifyHookSteps(\n pickleId,\n (hook) => hookSteps.push(hook),\n () => null\n )\n return hookSteps\n }\n\n public getAfterHookSteps(pickleId: string): readonly messages.TestStep[] {\n const hookSteps: messages.TestStep[] = []\n\n this.identifyHookSteps(\n pickleId,\n () => null,\n (hook) => hookSteps.push(hook)\n )\n return hookSteps\n }\n\n private identifyHookSteps(\n pickleId: string,\n onBeforeHookFound: (hook: messages.TestStep) => void,\n onAfterHookFound: (hook: messages.TestStep) => void\n ): void {\n const testCase = this.testCaseByPickleId.get(pickleId)\n\n if (!testCase) {\n return\n }\n\n let pickleStepFound = false\n\n for (const step of testCase.testSteps) {\n if (step.hookId) {\n if (pickleStepFound) {\n onAfterHookFound(step)\n } else {\n onBeforeHookFound(step)\n }\n } else {\n pickleStepFound = true\n }\n }\n }\n\n public getTestStepResults(testStepId: string): messages.TestStepResult[] {\n return this.testStepResultsbyTestStepId.get(testStepId)\n }\n\n public getStatusCounts(\n pickleIds: readonly string[]\n ): Partial<Record<messages.TestStepResultStatus, number>> {\n const result: Partial<Record<messages.TestStepResultStatus, number>> = {}\n for (const pickleId of pickleIds) {\n const testStepResult = getWorstTestStepResult(this.getPickleTestStepResults([pickleId]))\n const count = result[testStepResult.status] || 0\n result[testStepResult.status] = count + 1\n }\n return result\n }\n\n /* new common interface with Java starts here */\n\n public countMostSevereTestStepResultStatus(): Record<TestStepResultStatus, number> {\n const result: Record<TestStepResultStatus, number> = {\n [TestStepResultStatus.AMBIGUOUS]: 0,\n [TestStepResultStatus.FAILED]: 0,\n [TestStepResultStatus.PASSED]: 0,\n [TestStepResultStatus.PENDING]: 0,\n [TestStepResultStatus.SKIPPED]: 0,\n [TestStepResultStatus.UNDEFINED]: 0,\n [TestStepResultStatus.UNKNOWN]: 0,\n }\n for (const testCaseStarted of this.findAllTestCaseStarted()) {\n const mostSevereResult = sortBy(\n this.findTestStepFinishedAndTestStepBy(testCaseStarted).map(\n ([testStepFinished]) => testStepFinished.testStepResult\n ),\n [(testStepResult) => statusOrdinal(testStepResult.status)]\n ).at(-1)\n if (mostSevereResult) {\n result[mostSevereResult.status]++\n }\n }\n return result\n }\n\n public countTestCasesStarted(): number {\n return this.findAllTestCaseStarted().length\n }\n\n public findAllPickles(): ReadonlyArray<Pickle> {\n return [...this.pickleById.values()]\n }\n\n public findAllPickleSteps(): ReadonlyArray<PickleStep> {\n return [...this.pickleStepById.values()]\n }\n\n public findAllStepDefinitions(): ReadonlyArray<StepDefinition> {\n return [...this.stepDefinitionById.values()]\n }\n\n public findAllTestCaseStarted(): ReadonlyArray<TestCaseStarted> {\n return sortBy(\n [...this.testCaseStartedById.values()].filter((testCaseStarted) => {\n const testCaseFinished = this.testCaseFinishedByTestCaseStartedId.get(testCaseStarted.id)\n // only include if not yet finished OR won't be retried\n return !testCaseFinished?.willBeRetried\n }),\n [\n (testCaseStarted) =>\n TimeConversion.timestampToMillisecondsSinceEpoch(testCaseStarted.timestamp),\n 'id',\n ]\n )\n }\n\n public findAllTestCaseFinished(): ReadonlyArray<TestCaseFinished> {\n return sortBy(\n [...this.testCaseFinishedByTestCaseStartedId.values()].filter((testCaseFinished) => {\n // only include if not yet finished OR won't be retried\n return !testCaseFinished?.willBeRetried\n }),\n [\n (testCaseFinished) =>\n TimeConversion.timestampToMillisecondsSinceEpoch(testCaseFinished.timestamp),\n 'id',\n ]\n )\n }\n\n public findAllTestSteps(): ReadonlyArray<TestStep> {\n return [...this.testStepById.values()]\n }\n\n public findAllTestStepStarted(): ReadonlyArray<TestStepStarted> {\n return [...this.testStepStartedByTestCaseStartedId.values()]\n }\n\n public findAllTestStepFinished(): ReadonlyArray<TestStepFinished> {\n return [...this.testStepFinishedByTestCaseStartedId.values()]\n }\n\n public findAllTestRunHookStarted(): ReadonlyArray<TestRunHookStarted> {\n return [...this.testRunHookStartedById.values()]\n }\n\n public findAllTestRunHookFinished(): ReadonlyArray<TestRunHookFinished> {\n return [...this.testRunHookFinishedByTestRunHookStartedId.values()]\n }\n\n public findAllUndefinedParameterTypes(): ReadonlyArray<UndefinedParameterType> {\n return [...this.undefinedParameterTypes]\n }\n\n public findAttachmentsBy(\n element: TestStepFinished | TestRunHookFinished\n ): ReadonlyArray<Attachment> {\n if ('testStepId' in element) {\n return this.attachmentsByTestCaseStartedId\n .get(element.testCaseStartedId)\n .filter((attachment) => attachment.testStepId === element.testStepId)\n } else {\n return this.attachmentsByTestRunHookStartedId.get(element.testRunHookStartedId)\n }\n }\n\n public findHookBy(item: TestStep | TestRunHookStarted | TestRunHookFinished): Hook | undefined {\n if ('testRunHookStartedId' in item) {\n const testRunHookStarted = this.findTestRunHookStartedBy(item)\n assert.ok(testRunHookStarted, 'Expected to find TestRunHookStarted from TestRunHookFinished')\n return this.findHookBy(testRunHookStarted)\n }\n if (!item.hookId) {\n return undefined\n }\n return this.hooksById.get(item.hookId)\n }\n\n public findMeta(): Meta | undefined {\n return this.meta\n }\n\n public findMostSevereTestStepResultBy(\n element: TestCaseStarted | TestCaseFinished\n ): TestStepResult | undefined {\n const testCaseStarted =\n 'testCaseStartedId' in element ? this.findTestCaseStartedBy(element) : element\n return sortBy(\n this.findTestStepFinishedAndTestStepBy(testCaseStarted).map(\n ([testStepFinished]) => testStepFinished.testStepResult\n ),\n [(testStepResult) => statusOrdinal(testStepResult.status)]\n ).at(-1)\n }\n\n public findLocationOf(pickle: Pickle): Location | undefined {\n const lineage = this.findLineageBy(pickle)\n if (lineage?.example) {\n return lineage.example.location\n }\n return lineage?.scenario?.location\n }\n\n public findPickleBy(\n element: TestCaseStarted | TestCaseFinished | TestStepStarted\n ): Pickle | undefined {\n const testCase = this.findTestCaseBy(element)\n assert.ok(testCase, 'Expected to find TestCase from TestCaseStarted')\n return this.pickleById.get(testCase.pickleId)\n }\n\n public findPickleStepBy(testStep: TestStep): PickleStep | undefined {\n if (!testStep.pickleStepId) {\n return undefined\n }\n return this.pickleStepById.get(testStep.pickleStepId)\n }\n\n public findStepBy(pickleStep: PickleStep): Step | undefined {\n const [astNodeId] = pickleStep.astNodeIds\n assert.ok(astNodeId, 'Expected PickleStep to have an astNodeId')\n return this.stepById.get(astNodeId)\n }\n\n public findStepDefinitionsBy(testStep: TestStep): ReadonlyArray<StepDefinition> {\n return (testStep.stepDefinitionIds ?? []).map((id) => this.stepDefinitionById.get(id))\n }\n\n findSuggestionsBy(element: PickleStep | Pickle): ReadonlyArray<Suggestion> {\n if ('steps' in element) {\n return element.steps.flatMap((value) => this.findSuggestionsBy(value))\n }\n return this.suggestionsByPickleStepId.get(element.id)\n }\n\n public findUnambiguousStepDefinitionBy(testStep: TestStep): StepDefinition | undefined {\n if (testStep.stepDefinitionIds?.length === 1) {\n return this.stepDefinitionById.get(testStep.stepDefinitionIds[0])\n }\n return undefined\n }\n\n public findTestCaseBy(\n element: TestCaseStarted | TestCaseFinished | TestStepStarted | TestStepFinished\n ): TestCase | undefined {\n const testCaseStarted =\n 'testCaseStartedId' in element ? this.findTestCaseStartedBy(element) : element\n assert.ok(testCaseStarted, 'Expected to find TestCaseStarted by TestStepStarted')\n return this.testCaseById.get(testCaseStarted.testCaseId)\n }\n\n public findTestCaseDurationBy(element: TestCaseStarted | TestCaseFinished): Duration | undefined {\n let testCaseStarted: TestCaseStarted\n let testCaseFinished: TestCaseFinished\n if ('testCaseStartedId' in element) {\n testCaseStarted = this.findTestCaseStartedBy(element)\n testCaseFinished = element\n } else {\n testCaseStarted = element\n testCaseFinished = this.findTestCaseFinishedBy(element)\n }\n if (!testCaseFinished) {\n return undefined\n }\n return TimeConversion.millisecondsToDuration(\n TimeConversion.timestampToMillisecondsSinceEpoch(testCaseFinished.timestamp) -\n TimeConversion.timestampToMillisecondsSinceEpoch(testCaseStarted.timestamp)\n )\n }\n\n public findTestCaseStartedBy(\n element: TestCaseFinished | TestStepStarted | TestStepFinished\n ): TestCaseStarted | undefined {\n return this.testCaseStartedById.get(element.testCaseStartedId)\n }\n\n public findTestCaseFinishedBy(testCaseStarted: TestCaseStarted): TestCaseFinished | undefined {\n return this.testCaseFinishedByTestCaseStartedId.get(testCaseStarted.id)\n }\n\n public findTestRunHookStartedBy(\n testRunHookFinished: TestRunHookFinished\n ): TestRunHookStarted | undefined {\n return this.testRunHookStartedById.get(testRunHookFinished.testRunHookStartedId)\n }\n\n public findTestRunHookFinishedBy(\n testRunHookStarted: TestRunHookStarted\n ): TestRunHookFinished | undefined {\n return this.testRunHookFinishedByTestRunHookStartedId.get(testRunHookStarted.id)\n }\n\n public findTestRunDuration(): Duration | undefined {\n if (!this.testRunStarted || !this.testRunFinished) {\n return undefined\n }\n return TimeConversion.millisecondsToDuration(\n TimeConversion.timestampToMillisecondsSinceEpoch(this.testRunFinished.timestamp) -\n TimeConversion.timestampToMillisecondsSinceEpoch(this.testRunStarted.timestamp)\n )\n }\n\n public findTestRunFinished(): TestRunFinished | undefined {\n return this.testRunFinished\n }\n\n public findTestRunStarted(): TestRunStarted | undefined {\n return this.testRunStarted\n }\n\n public findTestStepBy(element: TestStepStarted | TestStepFinished): TestStep | undefined {\n return this.testStepById.get(element.testStepId)\n }\n\n public findTestStepsStartedBy(\n element: TestCaseStarted | TestCaseFinished\n ): ReadonlyArray<TestStepStarted> {\n const testCaseStartedId =\n 'testCaseStartedId' in element ? element.testCaseStartedId : element.id\n // multimaps `get` implements `getOrDefault([])` behaviour internally\n return [...this.testStepStartedByTestCaseStartedId.get(testCaseStartedId)]\n }\n\n public findTestStepsFinishedBy(\n element: TestCaseStarted | TestCaseFinished\n ): ReadonlyArray<TestStepFinished> {\n const testCaseStarted =\n 'testCaseStartedId' in element ? this.findTestCaseStartedBy(element) : element\n // multimaps `get` implements `getOrDefault([])` behaviour internally\n return [...this.testStepFinishedByTestCaseStartedId.get(testCaseStarted.id)]\n }\n\n public findTestStepFinishedAndTestStepBy(\n testCaseStarted: TestCaseStarted\n ): ReadonlyArray<[TestStepFinished, TestStep]> {\n return this.testStepFinishedByTestCaseStartedId\n .get(testCaseStarted.id)\n .map((testStepFinished) => {\n const testStep = this.findTestStepBy(testStepFinished)\n assert.ok(testStep, 'Expected to find TestStep by TestStepFinished')\n return [testStepFinished, testStep]\n })\n }\n\n public findLineageBy(element: Pickle | TestCaseStarted | TestCaseFinished): Lineage | undefined {\n const pickle = 'astNodeIds' in element ? element : this.findPickleBy(element)\n const deepestAstNodeId = pickle.astNodeIds.at(-1)\n assert.ok(deepestAstNodeId, 'Expected Pickle to have at least one astNodeId')\n return this.lineageById.get(deepestAstNodeId)\n }\n}\n"]}
1
+ {"version":3,"file":"Query.js","sourceRoot":"","sources":["../../src/Query.ts"],"names":[],"mappings":";;;;;AACA,iDA6B2B;AAC3B,kDAAkD;AAClD,kEAAkC;AAElC,uCAAiD;AAGjD,MAAqB,KAAK;IAA1B;QAImB,wBAAmB,GAAiC,IAAI,GAAG,EAAE,CAAA;QAC7D,gBAAW,GAAyB,IAAI,GAAG,EAAE,CAAA;QAC7C,aAAQ,GAAsB,IAAI,GAAG,EAAE,CAAA;QACvC,eAAU,GAAwB,IAAI,GAAG,EAAE,CAAA;QAC3C,mBAAc,GAA4B,IAAI,GAAG,EAAE,CAAA;QACnD,aAAQ,GAAsB,IAAI,GAAG,EAAE,CAAA;QACvC,uBAAkB,GAAgC,IAAI,GAAG,EAAE,CAAA;QAC3D,iBAAY,GAA0B,IAAI,GAAG,EAAE,CAAA;QAC/C,iBAAY,GAA0B,IAAI,GAAG,EAAE,CAAA;QAC/C,wCAAmC,GAAkC,IAAI,GAAG,EAAE,CAAA;QAC9E,2BAAsB,GAAoC,IAAI,GAAG,EAAE,CAAA;QACnE,8CAAyC,GACxD,IAAI,GAAG,EAAE,CAAA;QACM,uCAAkC,GACjD,IAAI,yBAAa,EAAE,CAAA;QACJ,wCAAmC,GAClD,IAAI,yBAAa,EAAE,CAAA;QACJ,mCAA8B,GAC7C,IAAI,yBAAa,EAAE,CAAA;QACJ,sCAAiC,GAChD,IAAI,yBAAa,EAAE,CAAA;QACJ,8BAAyB,GACxC,IAAI,yBAAa,EAAE,CAAA;QACJ,4BAAuB,GAA6B,EAAE,CAAA;IAugBzE,CAAC;IArgBQ,MAAM,CAAC,QAA2B;QACvC,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAA;QAC3B,CAAC;QACD,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;YAC7B,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAA;QACtD,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACpC,CAAC;QACD,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;QACpD,CAAC;QACD,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC5B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAA;QAClF,CAAC;QACD,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC5B,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAA;QAC/C,CAAC;QACD,IAAI,QAAQ,CAAC,kBAAkB,EAAE,CAAC;YAChC,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;QAC5D,CAAC;QACD,IAAI,QAAQ,CAAC,mBAAmB,EAAE,CAAC;YACjC,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAA;QAC9D,CAAC;QACD,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QACxC,CAAC;QACD,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;YAC7B,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAA;QACtD,CAAC;QACD,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;YAC7B,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAA;QACtD,CAAC;QACD,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YACxB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;QAC5C,CAAC;QACD,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;YAC9B,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAA;QACxD,CAAC;QACD,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;YAC9B,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAA;QACxD,CAAC;QACD,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;YAC7B,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAA;QACjD,CAAC;QACD,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YACxB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;QAC5C,CAAC;QACD,IAAI,QAAQ,CAAC,sBAAsB,EAAE,CAAC;YACpC,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAA;QACpE,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,eAAgC;QAC5D,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,OAAO,EAAE;gBAC1C,eAAe;aAChB,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,OAAgB,EAAE,OAAgB;QACtD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;YACxC,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;gBAC5B,OAAO,CAAC,UAAU,GAAG,YAAY,CAAC,UAAU,CAAA;gBAC5C,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;YACjD,CAAC;YACD,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;gBAC1B,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,kCACpC,OAAO,KACV,OAAO,IACP,CAAA;YACJ,CAAC;YACD,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC;gBACtB,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,kCAC5B,OAAO,KACV,OAAO,IACP,CAAA;YACJ,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,UAAU,CAAC,IAAU,EAAE,OAAgB;QAC7C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YAClC,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;gBACzB,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,UAAU,CAAA;gBAC7C,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;YAC9C,CAAC;YACD,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;gBACvB,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,kCACjC,OAAO,KACV,IAAI,IACJ,CAAA;YACJ,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,cAAc,CAAC,QAAkB,EAAE,OAAgB;QACzD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,kCAC3B,OAAO,KACV,QAAQ,IACR,CAAA;QACF,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE;YACpD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,kCAC3B,OAAO,KACV,QAAQ;gBACR,QAAQ;gBACR,aAAa,IACb,CAAA;YACF,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE;gBACnD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,kCAC1B,OAAO,KACV,QAAQ;oBACR,QAAQ;oBACR,aAAa;oBACb,OAAO;oBACP,YAAY,IACZ,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAClC,CAAC;IAEO,WAAW,CAAC,KAA0B;QAC5C,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAA;IAC3D,CAAC;IAEO,YAAY,CAAC,MAAc;QACjC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QACtC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAA;IAC1F,CAAC;IAEO,wBAAwB,CAAC,kBAAsC;QACrE,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAA;IAC5E,CAAC;IAEO,yBAAyB,CAAC,mBAAwC;QACxE,IAAI,CAAC,yCAAyC,CAAC,GAAG,CAChD,mBAAmB,CAAC,oBAAoB,EACxC,mBAAmB,CACpB,CAAA;IACH,CAAC;IAEO,cAAc,CAAC,QAAkB;QACvC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;QAC5C,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YACtC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;QAC9C,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,qBAAqB,CAAC,eAAgC;QAC5D,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,EAAE,eAAe,CAAC,CAAA;IACnE,CAAC;IAEO,qBAAqB,CAAC,eAAgC;QAC5D,IAAI,CAAC,kCAAkC,CAAC,GAAG,CAAC,eAAe,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAA;IACjG,CAAC;IAEO,gBAAgB,CAAC,UAAsB;QAC7C,IAAI,UAAU,CAAC,iBAAiB,EAAE,CAAC;YACjC,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,UAAU,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAA;QACnF,CAAC;QACD,IAAI,UAAU,CAAC,oBAAoB,EAAE,CAAC;YACpC,IAAI,CAAC,iCAAiC,CAAC,GAAG,CAAC,UAAU,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAA;QACzF,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,gBAAkC;QAC/D,IAAI,CAAC,mCAAmC,CAAC,GAAG,CAC1C,gBAAgB,CAAC,iBAAiB,EAClC,gBAAgB,CACjB,CAAA;IACH,CAAC;IAEO,sBAAsB,CAAC,gBAAkC;QAC/D,IAAI,CAAC,mCAAmC,CAAC,GAAG,CAC1C,gBAAgB,CAAC,iBAAiB,EAClC,gBAAgB,CACjB,CAAA;IACH,CAAC;IAEO,gBAAgB,CAAC,UAAsB;QAC7C,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;IACzE,CAAC;IAEO,4BAA4B,CAAC,sBAA8C;QACjF,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;IAC3D,CAAC;IAEM,mCAAmC;QACxC,MAAM,MAAM,GAAyC;YACnD,CAAC,+BAAoB,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,CAAC,+BAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,CAAC,+BAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,CAAC,+BAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,CAAC,+BAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,CAAC,+BAAoB,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,CAAC,+BAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;SAClC,CAAA;QACD,KAAK,MAAM,eAAe,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAE,CAAC;YAC5D,MAAM,gBAAgB,GAAG,IAAA,uBAAM,EAC7B,IAAI,CAAC,iCAAiC,CAAC,eAAe,CAAC,CAAC,GAAG,CACzD,CAAC,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,cAAc,CACxD,EACD,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,IAAA,uBAAa,EAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAC3D,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;YACR,IAAI,gBAAgB,EAAE,CAAC;gBACrB,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAA;YACnC,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAEM,qBAAqB;QAC1B,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC,MAAM,CAAA;IAC7C,CAAC;IAEM,cAAc;QACnB,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAA;IACtC,CAAC;IAEM,kBAAkB;QACvB,OAAO,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAA;IAC1C,CAAC;IAEM,sBAAsB;QAC3B,OAAO,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAA;IAC9C,CAAC;IAEM,sBAAsB;QAC3B,OAAO,IAAA,uBAAM,EACX,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,EAAE,EAAE;YAChE,MAAM,gBAAgB,GAAG,IAAI,CAAC,mCAAmC,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;YACzF,uDAAuD;YACvD,OAAO,CAAC,CAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,aAAa,CAAA,CAAA;QACzC,CAAC,CAAC,EACF;YACE,CAAC,eAAe,EAAE,EAAE,CAClB,yBAAc,CAAC,iCAAiC,CAAC,eAAe,CAAC,SAAS,CAAC;YAC7E,IAAI;SACL,CACF,CAAA;IACH,CAAC;IAEM,uBAAuB;QAC5B,OAAO,IAAA,uBAAM,EACX,CAAC,GAAG,IAAI,CAAC,mCAAmC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,EAAE;YACjF,uDAAuD;YACvD,OAAO,CAAC,CAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,aAAa,CAAA,CAAA;QACzC,CAAC,CAAC,EACF;YACE,CAAC,gBAAgB,EAAE,EAAE,CACnB,yBAAc,CAAC,iCAAiC,CAAC,gBAAgB,CAAC,SAAS,CAAC;YAC9E,IAAI;SACL,CACF,CAAA;IACH,CAAC;IAEM,6BAA6B,CAClC,WAA8E,EAC9E,KAA6B;QAE7B,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;YAC1E,eAAe;YACf,OAAO,EAAE,WAAW,CAAC,IAAI,EAAE,eAAe,CAAC;SAC5C,CAAC,CAAC,CAAA;QAEH,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACvC,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS;gBAAE,OAAO,CAAC,CAAA;YAChE,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS;gBAAE,OAAO,CAAC,CAAA;YACrC,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS;gBAAE,OAAO,CAAC,CAAC,CAAA;YACtC,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;QACpC,CAAC,CAAC,CAAA;QAEF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IACnD,CAAC;IAEM,8BAA8B,CACnC,WAAgF,EAChF,KAA6B;QAE7B,MAAM,WAAW,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC,GAAG,CAAC,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;YAC5E,gBAAgB;YAChB,OAAO,EAAE,WAAW,CAAC,IAAI,EAAE,gBAAgB,CAAC;SAC7C,CAAC,CAAC,CAAA;QAEH,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACvC,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS;gBAAE,OAAO,CAAC,CAAA;YAChE,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS;gBAAE,OAAO,CAAC,CAAA;YACrC,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS;gBAAE,OAAO,CAAC,CAAC,CAAA;YACtC,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;QACpC,CAAC,CAAC,CAAA;QAEF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;IACpD,CAAC;IAEM,gBAAgB;QACrB,OAAO,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAA;IACxC,CAAC;IAEM,sBAAsB;QAC3B,OAAO,CAAC,GAAG,IAAI,CAAC,kCAAkC,CAAC,MAAM,EAAE,CAAC,CAAA;IAC9D,CAAC;IAEM,uBAAuB;QAC5B,OAAO,CAAC,GAAG,IAAI,CAAC,mCAAmC,CAAC,MAAM,EAAE,CAAC,CAAA;IAC/D,CAAC;IAEM,yBAAyB;QAC9B,OAAO,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC,CAAA;IAClD,CAAC;IAEM,0BAA0B;QAC/B,OAAO,CAAC,GAAG,IAAI,CAAC,yCAAyC,CAAC,MAAM,EAAE,CAAC,CAAA;IACrE,CAAC;IAEM,8BAA8B;QACnC,OAAO,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAA;IAC1C,CAAC;IAEM,iBAAiB,CACtB,OAA+C;QAE/C,IAAI,YAAY,IAAI,OAAO,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,8BAA8B;iBACvC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC;iBAC9B,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;QACzE,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,iCAAiC,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAA;QACjF,CAAC;IACH,CAAC;IAEM,UAAU,CAAC,IAAyD;QACzE,IAAI,sBAAsB,IAAI,IAAI,EAAE,CAAC;YACnC,MAAM,kBAAkB,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAA;YAC9D,gBAAM,CAAC,EAAE,CAAC,kBAAkB,EAAE,8DAA8D,CAAC,CAAA;YAC7F,OAAO,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA;QAC5C,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACvC,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAEM,8BAA8B,CACnC,OAA2C;QAE3C,MAAM,eAAe,GACnB,mBAAmB,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;QAChF,OAAO,IAAA,uBAAM,EACX,IAAI,CAAC,iCAAiC,CAAC,eAAe,CAAC,CAAC,GAAG,CACzD,CAAC,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,cAAc,CACxD,EACD,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,IAAA,uBAAa,EAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAC3D,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IACV,CAAC;IAEM,cAAc,CAAC,MAAc;;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAC1C,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,EAAE,CAAC;YACrB,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAA;QACjC,CAAC;QACD,OAAO,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,0CAAE,QAAQ,CAAA;IACpC,CAAC;IAEM,YAAY,CACjB,OAA6D;QAE7D,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAC7C,gBAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,gDAAgD,CAAC,CAAA;QACrE,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAC/C,CAAC;IAEM,gBAAgB,CAAC,QAAkB;QACxC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;IACvD,CAAC;IAEM,UAAU,CAAC,UAAsB;QACtC,MAAM,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,UAAU,CAAA;QACzC,gBAAM,CAAC,EAAE,CAAC,SAAS,EAAE,0CAA0C,CAAC,CAAA;QAChE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IACrC,CAAC;IAEM,qBAAqB,CAAC,QAAkB;;QAC7C,OAAO,CAAC,MAAA,QAAQ,CAAC,iBAAiB,mCAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IACxF,CAAC;IAED,iBAAiB,CAAC,OAA4B;QAC5C,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;YACvB,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAA;QACxE,CAAC;QACD,OAAO,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACvD,CAAC;IAEM,+BAA+B,CAAC,QAAkB;;QACvD,IAAI,CAAA,MAAA,QAAQ,CAAC,iBAAiB,0CAAE,MAAM,MAAK,CAAC,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAA;QACnE,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IAEM,cAAc,CACnB,OAAgF;QAEhF,MAAM,eAAe,GACnB,mBAAmB,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;QAChF,gBAAM,CAAC,EAAE,CAAC,eAAe,EAAE,qDAAqD,CAAC,CAAA;QACjF,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;IAC1D,CAAC;IAEM,sBAAsB,CAAC,OAA2C;QACvE,IAAI,eAAgC,CAAA;QACpC,IAAI,gBAAkC,CAAA;QACtC,IAAI,mBAAmB,IAAI,OAAO,EAAE,CAAC;YACnC,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAA;YACrD,gBAAgB,GAAG,OAAO,CAAA;QAC5B,CAAC;aAAM,CAAC;YACN,eAAe,GAAG,OAAO,CAAA;YACzB,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAA;QACzD,CAAC;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,yBAAc,CAAC,sBAAsB,CAC1C,yBAAc,CAAC,iCAAiC,CAAC,gBAAgB,CAAC,SAAS,CAAC;YAC1E,yBAAc,CAAC,iCAAiC,CAAC,eAAe,CAAC,SAAS,CAAC,CAC9E,CAAA;IACH,CAAC;IAEM,qBAAqB,CAC1B,OAA8D;QAE9D,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAChE,CAAC;IAEM,sBAAsB,CAAC,eAAgC;QAC5D,OAAO,IAAI,CAAC,mCAAmC,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;IACzE,CAAC;IAEM,wBAAwB,CAC7B,mBAAwC;QAExC,OAAO,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,CAAA;IAClF,CAAC;IAEM,yBAAyB,CAC9B,kBAAsC;QAEtC,OAAO,IAAI,CAAC,yCAAyC,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAA;IAClF,CAAC;IAEM,mBAAmB;QACxB,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAClD,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,yBAAc,CAAC,sBAAsB,CAC1C,yBAAc,CAAC,iCAAiC,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;YAC9E,yBAAc,CAAC,iCAAiC,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAClF,CAAA;IACH,CAAC;IAEM,mBAAmB;QACxB,OAAO,IAAI,CAAC,eAAe,CAAA;IAC7B,CAAC;IAEM,kBAAkB;QACvB,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;IAEM,cAAc,CAAC,OAA2C;QAC/D,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAClD,CAAC;IAEM,sBAAsB,CAC3B,OAA2C;QAE3C,MAAM,iBAAiB,GACrB,mBAAmB,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAA;QACzE,qEAAqE;QACrE,OAAO,CAAC,GAAG,IAAI,CAAC,kCAAkC,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAA;IAC5E,CAAC;IAEM,uBAAuB,CAC5B,OAA2C;QAE3C,MAAM,eAAe,GACnB,mBAAmB,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;QAChF,qEAAqE;QACrE,OAAO,CAAC,GAAG,IAAI,CAAC,mCAAmC,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAA;IAC9E,CAAC;IAEM,iCAAiC,CACtC,eAAgC;QAEhC,OAAO,IAAI,CAAC,mCAAmC;aAC5C,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;aACvB,GAAG,CAAC,CAAC,gBAAgB,EAAE,EAAE;YACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAA;YACtD,gBAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,+CAA+C,CAAC,CAAA;YACpE,OAAO,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAA;QACrC,CAAC,CAAC,CAAA;IACN,CAAC;IAEM,aAAa,CAAC,OAAoD;QACvE,MAAM,MAAM,GAAG,YAAY,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QAC7E,MAAM,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QACjD,gBAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,gDAAgD,CAAC,CAAA;QAC7E,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC/C,CAAC;CACF;AAliBD,wBAkiBC","sourcesContent":["import * as messages from '@cucumber/messages'\nimport {\n Attachment,\n Duration,\n Feature,\n GherkinDocument,\n Hook,\n Location,\n Meta,\n Pickle,\n PickleStep,\n Rule,\n Scenario,\n Step,\n StepDefinition,\n Suggestion,\n TestCase,\n TestCaseFinished,\n TestCaseStarted,\n TestRunFinished,\n TestRunHookFinished,\n TestRunHookStarted,\n TestRunStarted,\n TestStep,\n TestStepFinished,\n TestStepResult,\n TestStepResultStatus,\n TestStepStarted,\n TimeConversion,\n UndefinedParameterType,\n} from '@cucumber/messages'\nimport { ArrayMultimap } from '@teppeis/multimaps'\nimport sortBy from 'lodash.sortby'\n\nimport { assert, statusOrdinal } from './helpers'\nimport { Lineage } from './Lineage'\n\nexport default class Query {\n private meta: Meta\n private testRunStarted: TestRunStarted\n private testRunFinished: TestRunFinished\n private readonly testCaseStartedById: Map<string, TestCaseStarted> = new Map()\n private readonly lineageById: Map<string, Lineage> = new Map()\n private readonly stepById: Map<string, Step> = new Map()\n private readonly pickleById: Map<string, Pickle> = new Map()\n private readonly pickleStepById: Map<string, PickleStep> = new Map()\n private readonly hookById: Map<string, Hook> = new Map()\n private readonly stepDefinitionById: Map<string, StepDefinition> = new Map()\n private readonly testCaseById: Map<string, TestCase> = new Map()\n private readonly testStepById: Map<string, TestStep> = new Map()\n private readonly testCaseFinishedByTestCaseStartedId: Map<string, TestCaseFinished> = new Map()\n private readonly testRunHookStartedById: Map<string, TestRunHookStarted> = new Map()\n private readonly testRunHookFinishedByTestRunHookStartedId: Map<string, TestRunHookFinished> =\n new Map()\n private readonly testStepStartedByTestCaseStartedId: ArrayMultimap<string, TestStepStarted> =\n new ArrayMultimap()\n private readonly testStepFinishedByTestCaseStartedId: ArrayMultimap<string, TestStepFinished> =\n new ArrayMultimap()\n private readonly attachmentsByTestCaseStartedId: ArrayMultimap<string, Attachment> =\n new ArrayMultimap()\n private readonly attachmentsByTestRunHookStartedId: ArrayMultimap<string, Attachment> =\n new ArrayMultimap()\n private readonly suggestionsByPickleStepId: ArrayMultimap<string, Suggestion> =\n new ArrayMultimap()\n private readonly undefinedParameterTypes: UndefinedParameterType[] = []\n\n public update(envelope: messages.Envelope) {\n if (envelope.meta) {\n this.meta = envelope.meta\n }\n if (envelope.gherkinDocument) {\n this.updateGherkinDocument(envelope.gherkinDocument)\n }\n if (envelope.pickle) {\n this.updatePickle(envelope.pickle)\n }\n if (envelope.hook) {\n this.hookById.set(envelope.hook.id, envelope.hook)\n }\n if (envelope.stepDefinition) {\n this.stepDefinitionById.set(envelope.stepDefinition.id, envelope.stepDefinition)\n }\n if (envelope.testRunStarted) {\n this.testRunStarted = envelope.testRunStarted\n }\n if (envelope.testRunHookStarted) {\n this.updateTestRunHookStarted(envelope.testRunHookStarted)\n }\n if (envelope.testRunHookFinished) {\n this.updateTestRunHookFinished(envelope.testRunHookFinished)\n }\n if (envelope.testCase) {\n this.updateTestCase(envelope.testCase)\n }\n if (envelope.testCaseStarted) {\n this.updateTestCaseStarted(envelope.testCaseStarted)\n }\n if (envelope.testStepStarted) {\n this.updateTestStepStarted(envelope.testStepStarted)\n }\n if (envelope.attachment) {\n this.updateAttachment(envelope.attachment)\n }\n if (envelope.testStepFinished) {\n this.updateTestStepFinished(envelope.testStepFinished)\n }\n if (envelope.testCaseFinished) {\n this.updateTestCaseFinished(envelope.testCaseFinished)\n }\n if (envelope.testRunFinished) {\n this.testRunFinished = envelope.testRunFinished\n }\n if (envelope.suggestion) {\n this.updateSuggestion(envelope.suggestion)\n }\n if (envelope.undefinedParameterType) {\n this.updateUndefinedParameterType(envelope.undefinedParameterType)\n }\n }\n\n private updateGherkinDocument(gherkinDocument: GherkinDocument) {\n if (gherkinDocument.feature) {\n this.updateFeature(gherkinDocument.feature, {\n gherkinDocument,\n })\n }\n }\n\n private updateFeature(feature: Feature, lineage: Lineage) {\n feature.children.forEach((featureChild) => {\n if (featureChild.background) {\n lineage.background = featureChild.background\n this.updateSteps(featureChild.background.steps)\n }\n if (featureChild.scenario) {\n this.updateScenario(featureChild.scenario, {\n ...lineage,\n feature,\n })\n }\n if (featureChild.rule) {\n this.updateRule(featureChild.rule, {\n ...lineage,\n feature,\n })\n }\n })\n }\n\n private updateRule(rule: Rule, lineage: Lineage) {\n rule.children.forEach((ruleChild) => {\n if (ruleChild.background) {\n lineage.ruleBackground = ruleChild.background\n this.updateSteps(ruleChild.background.steps)\n }\n if (ruleChild.scenario) {\n this.updateScenario(ruleChild.scenario, {\n ...lineage,\n rule,\n })\n }\n })\n }\n\n private updateScenario(scenario: Scenario, lineage: Lineage) {\n this.lineageById.set(scenario.id, {\n ...lineage,\n scenario,\n })\n scenario.examples.forEach((examples, examplesIndex) => {\n this.lineageById.set(examples.id, {\n ...lineage,\n scenario,\n examples,\n examplesIndex,\n })\n examples.tableBody.forEach((example, exampleIndex) => {\n this.lineageById.set(example.id, {\n ...lineage,\n scenario,\n examples,\n examplesIndex,\n example,\n exampleIndex,\n })\n })\n })\n this.updateSteps(scenario.steps)\n }\n\n private updateSteps(steps: ReadonlyArray<Step>) {\n steps.forEach((step) => this.stepById.set(step.id, step))\n }\n\n private updatePickle(pickle: Pickle) {\n this.pickleById.set(pickle.id, pickle)\n pickle.steps.forEach((pickleStep) => this.pickleStepById.set(pickleStep.id, pickleStep))\n }\n\n private updateTestRunHookStarted(testRunHookStarted: TestRunHookStarted) {\n this.testRunHookStartedById.set(testRunHookStarted.id, testRunHookStarted)\n }\n\n private updateTestRunHookFinished(testRunHookFinished: TestRunHookFinished) {\n this.testRunHookFinishedByTestRunHookStartedId.set(\n testRunHookFinished.testRunHookStartedId,\n testRunHookFinished\n )\n }\n\n private updateTestCase(testCase: TestCase) {\n this.testCaseById.set(testCase.id, testCase)\n testCase.testSteps.forEach((testStep) => {\n this.testStepById.set(testStep.id, testStep)\n })\n }\n\n private updateTestCaseStarted(testCaseStarted: TestCaseStarted) {\n this.testCaseStartedById.set(testCaseStarted.id, testCaseStarted)\n }\n\n private updateTestStepStarted(testStepStarted: TestStepStarted) {\n this.testStepStartedByTestCaseStartedId.put(testStepStarted.testCaseStartedId, testStepStarted)\n }\n\n private updateAttachment(attachment: Attachment) {\n if (attachment.testCaseStartedId) {\n this.attachmentsByTestCaseStartedId.put(attachment.testCaseStartedId, attachment)\n }\n if (attachment.testRunHookStartedId) {\n this.attachmentsByTestRunHookStartedId.put(attachment.testRunHookStartedId, attachment)\n }\n }\n\n private updateTestStepFinished(testStepFinished: TestStepFinished) {\n this.testStepFinishedByTestCaseStartedId.put(\n testStepFinished.testCaseStartedId,\n testStepFinished\n )\n }\n\n private updateTestCaseFinished(testCaseFinished: TestCaseFinished) {\n this.testCaseFinishedByTestCaseStartedId.set(\n testCaseFinished.testCaseStartedId,\n testCaseFinished\n )\n }\n\n private updateSuggestion(suggestion: Suggestion) {\n this.suggestionsByPickleStepId.put(suggestion.pickleStepId, suggestion)\n }\n\n private updateUndefinedParameterType(undefinedParameterType: UndefinedParameterType) {\n this.undefinedParameterTypes.push(undefinedParameterType)\n }\n\n public countMostSevereTestStepResultStatus(): Record<TestStepResultStatus, number> {\n const result: Record<TestStepResultStatus, number> = {\n [TestStepResultStatus.AMBIGUOUS]: 0,\n [TestStepResultStatus.FAILED]: 0,\n [TestStepResultStatus.PASSED]: 0,\n [TestStepResultStatus.PENDING]: 0,\n [TestStepResultStatus.SKIPPED]: 0,\n [TestStepResultStatus.UNDEFINED]: 0,\n [TestStepResultStatus.UNKNOWN]: 0,\n }\n for (const testCaseStarted of this.findAllTestCaseStarted()) {\n const mostSevereResult = sortBy(\n this.findTestStepFinishedAndTestStepBy(testCaseStarted).map(\n ([testStepFinished]) => testStepFinished.testStepResult\n ),\n [(testStepResult) => statusOrdinal(testStepResult.status)]\n ).at(-1)\n if (mostSevereResult) {\n result[mostSevereResult.status]++\n }\n }\n return result\n }\n\n public countTestCasesStarted(): number {\n return this.findAllTestCaseStarted().length\n }\n\n public findAllPickles(): ReadonlyArray<Pickle> {\n return [...this.pickleById.values()]\n }\n\n public findAllPickleSteps(): ReadonlyArray<PickleStep> {\n return [...this.pickleStepById.values()]\n }\n\n public findAllStepDefinitions(): ReadonlyArray<StepDefinition> {\n return [...this.stepDefinitionById.values()]\n }\n\n public findAllTestCaseStarted(): ReadonlyArray<TestCaseStarted> {\n return sortBy(\n [...this.testCaseStartedById.values()].filter((testCaseStarted) => {\n const testCaseFinished = this.testCaseFinishedByTestCaseStartedId.get(testCaseStarted.id)\n // only include if not yet finished OR won't be retried\n return !testCaseFinished?.willBeRetried\n }),\n [\n (testCaseStarted) =>\n TimeConversion.timestampToMillisecondsSinceEpoch(testCaseStarted.timestamp),\n 'id',\n ]\n )\n }\n\n public findAllTestCaseFinished(): ReadonlyArray<TestCaseFinished> {\n return sortBy(\n [...this.testCaseFinishedByTestCaseStartedId.values()].filter((testCaseFinished) => {\n // only include if not yet finished OR won't be retried\n return !testCaseFinished?.willBeRetried\n }),\n [\n (testCaseFinished) =>\n TimeConversion.timestampToMillisecondsSinceEpoch(testCaseFinished.timestamp),\n 'id',\n ]\n )\n }\n\n public findAllTestCaseStartedOrderBy<T>(\n findOrderBy: (query: Query, testCaseStarted: TestCaseStarted) => T | undefined,\n order: (a: T, b: T) => number\n ): ReadonlyArray<TestCaseStarted> {\n const withOrderBy = this.findAllTestCaseStarted().map((testCaseStarted) => ({\n testCaseStarted,\n orderBy: findOrderBy(this, testCaseStarted),\n }))\n\n const sorted = withOrderBy.sort((a, b) => {\n if (a.orderBy === undefined && b.orderBy === undefined) return 0\n if (a.orderBy === undefined) return 1\n if (b.orderBy === undefined) return -1\n return order(a.orderBy, b.orderBy)\n })\n\n return sorted.map((item) => item.testCaseStarted)\n }\n\n public findAllTestCaseFinishedOrderBy<T>(\n findOrderBy: (query: Query, testCaseFinished: TestCaseFinished) => T | undefined,\n order: (a: T, b: T) => number\n ): ReadonlyArray<TestCaseFinished> {\n const withOrderBy = this.findAllTestCaseFinished().map((testCaseFinished) => ({\n testCaseFinished,\n orderBy: findOrderBy(this, testCaseFinished),\n }))\n\n const sorted = withOrderBy.sort((a, b) => {\n if (a.orderBy === undefined && b.orderBy === undefined) return 0\n if (a.orderBy === undefined) return 1\n if (b.orderBy === undefined) return -1\n return order(a.orderBy, b.orderBy)\n })\n\n return sorted.map((item) => item.testCaseFinished)\n }\n\n public findAllTestSteps(): ReadonlyArray<TestStep> {\n return [...this.testStepById.values()]\n }\n\n public findAllTestStepStarted(): ReadonlyArray<TestStepStarted> {\n return [...this.testStepStartedByTestCaseStartedId.values()]\n }\n\n public findAllTestStepFinished(): ReadonlyArray<TestStepFinished> {\n return [...this.testStepFinishedByTestCaseStartedId.values()]\n }\n\n public findAllTestRunHookStarted(): ReadonlyArray<TestRunHookStarted> {\n return [...this.testRunHookStartedById.values()]\n }\n\n public findAllTestRunHookFinished(): ReadonlyArray<TestRunHookFinished> {\n return [...this.testRunHookFinishedByTestRunHookStartedId.values()]\n }\n\n public findAllUndefinedParameterTypes(): ReadonlyArray<UndefinedParameterType> {\n return [...this.undefinedParameterTypes]\n }\n\n public findAttachmentsBy(\n element: TestStepFinished | TestRunHookFinished\n ): ReadonlyArray<Attachment> {\n if ('testStepId' in element) {\n return this.attachmentsByTestCaseStartedId\n .get(element.testCaseStartedId)\n .filter((attachment) => attachment.testStepId === element.testStepId)\n } else {\n return this.attachmentsByTestRunHookStartedId.get(element.testRunHookStartedId)\n }\n }\n\n public findHookBy(item: TestStep | TestRunHookStarted | TestRunHookFinished): Hook | undefined {\n if ('testRunHookStartedId' in item) {\n const testRunHookStarted = this.findTestRunHookStartedBy(item)\n assert.ok(testRunHookStarted, 'Expected to find TestRunHookStarted from TestRunHookFinished')\n return this.findHookBy(testRunHookStarted)\n }\n if (!item.hookId) {\n return undefined\n }\n return this.hookById.get(item.hookId)\n }\n\n public findMeta(): Meta | undefined {\n return this.meta\n }\n\n public findMostSevereTestStepResultBy(\n element: TestCaseStarted | TestCaseFinished\n ): TestStepResult | undefined {\n const testCaseStarted =\n 'testCaseStartedId' in element ? this.findTestCaseStartedBy(element) : element\n return sortBy(\n this.findTestStepFinishedAndTestStepBy(testCaseStarted).map(\n ([testStepFinished]) => testStepFinished.testStepResult\n ),\n [(testStepResult) => statusOrdinal(testStepResult.status)]\n ).at(-1)\n }\n\n public findLocationOf(pickle: Pickle): Location | undefined {\n const lineage = this.findLineageBy(pickle)\n if (lineage?.example) {\n return lineage.example.location\n }\n return lineage?.scenario?.location\n }\n\n public findPickleBy(\n element: TestCaseStarted | TestCaseFinished | TestStepStarted\n ): Pickle | undefined {\n const testCase = this.findTestCaseBy(element)\n assert.ok(testCase, 'Expected to find TestCase from TestCaseStarted')\n return this.pickleById.get(testCase.pickleId)\n }\n\n public findPickleStepBy(testStep: TestStep): PickleStep | undefined {\n if (!testStep.pickleStepId) {\n return undefined\n }\n return this.pickleStepById.get(testStep.pickleStepId)\n }\n\n public findStepBy(pickleStep: PickleStep): Step | undefined {\n const [astNodeId] = pickleStep.astNodeIds\n assert.ok(astNodeId, 'Expected PickleStep to have an astNodeId')\n return this.stepById.get(astNodeId)\n }\n\n public findStepDefinitionsBy(testStep: TestStep): ReadonlyArray<StepDefinition> {\n return (testStep.stepDefinitionIds ?? []).map((id) => this.stepDefinitionById.get(id))\n }\n\n findSuggestionsBy(element: PickleStep | Pickle): ReadonlyArray<Suggestion> {\n if ('steps' in element) {\n return element.steps.flatMap((value) => this.findSuggestionsBy(value))\n }\n return this.suggestionsByPickleStepId.get(element.id)\n }\n\n public findUnambiguousStepDefinitionBy(testStep: TestStep): StepDefinition | undefined {\n if (testStep.stepDefinitionIds?.length === 1) {\n return this.stepDefinitionById.get(testStep.stepDefinitionIds[0])\n }\n return undefined\n }\n\n public findTestCaseBy(\n element: TestCaseStarted | TestCaseFinished | TestStepStarted | TestStepFinished\n ): TestCase | undefined {\n const testCaseStarted =\n 'testCaseStartedId' in element ? this.findTestCaseStartedBy(element) : element\n assert.ok(testCaseStarted, 'Expected to find TestCaseStarted by TestStepStarted')\n return this.testCaseById.get(testCaseStarted.testCaseId)\n }\n\n public findTestCaseDurationBy(element: TestCaseStarted | TestCaseFinished): Duration | undefined {\n let testCaseStarted: TestCaseStarted\n let testCaseFinished: TestCaseFinished\n if ('testCaseStartedId' in element) {\n testCaseStarted = this.findTestCaseStartedBy(element)\n testCaseFinished = element\n } else {\n testCaseStarted = element\n testCaseFinished = this.findTestCaseFinishedBy(element)\n }\n if (!testCaseFinished) {\n return undefined\n }\n return TimeConversion.millisecondsToDuration(\n TimeConversion.timestampToMillisecondsSinceEpoch(testCaseFinished.timestamp) -\n TimeConversion.timestampToMillisecondsSinceEpoch(testCaseStarted.timestamp)\n )\n }\n\n public findTestCaseStartedBy(\n element: TestCaseFinished | TestStepStarted | TestStepFinished\n ): TestCaseStarted | undefined {\n return this.testCaseStartedById.get(element.testCaseStartedId)\n }\n\n public findTestCaseFinishedBy(testCaseStarted: TestCaseStarted): TestCaseFinished | undefined {\n return this.testCaseFinishedByTestCaseStartedId.get(testCaseStarted.id)\n }\n\n public findTestRunHookStartedBy(\n testRunHookFinished: TestRunHookFinished\n ): TestRunHookStarted | undefined {\n return this.testRunHookStartedById.get(testRunHookFinished.testRunHookStartedId)\n }\n\n public findTestRunHookFinishedBy(\n testRunHookStarted: TestRunHookStarted\n ): TestRunHookFinished | undefined {\n return this.testRunHookFinishedByTestRunHookStartedId.get(testRunHookStarted.id)\n }\n\n public findTestRunDuration(): Duration | undefined {\n if (!this.testRunStarted || !this.testRunFinished) {\n return undefined\n }\n return TimeConversion.millisecondsToDuration(\n TimeConversion.timestampToMillisecondsSinceEpoch(this.testRunFinished.timestamp) -\n TimeConversion.timestampToMillisecondsSinceEpoch(this.testRunStarted.timestamp)\n )\n }\n\n public findTestRunFinished(): TestRunFinished | undefined {\n return this.testRunFinished\n }\n\n public findTestRunStarted(): TestRunStarted | undefined {\n return this.testRunStarted\n }\n\n public findTestStepBy(element: TestStepStarted | TestStepFinished): TestStep | undefined {\n return this.testStepById.get(element.testStepId)\n }\n\n public findTestStepsStartedBy(\n element: TestCaseStarted | TestCaseFinished\n ): ReadonlyArray<TestStepStarted> {\n const testCaseStartedId =\n 'testCaseStartedId' in element ? element.testCaseStartedId : element.id\n // multimaps `get` implements `getOrDefault([])` behaviour internally\n return [...this.testStepStartedByTestCaseStartedId.get(testCaseStartedId)]\n }\n\n public findTestStepsFinishedBy(\n element: TestCaseStarted | TestCaseFinished\n ): ReadonlyArray<TestStepFinished> {\n const testCaseStarted =\n 'testCaseStartedId' in element ? this.findTestCaseStartedBy(element) : element\n // multimaps `get` implements `getOrDefault([])` behaviour internally\n return [...this.testStepFinishedByTestCaseStartedId.get(testCaseStarted.id)]\n }\n\n public findTestStepFinishedAndTestStepBy(\n testCaseStarted: TestCaseStarted\n ): ReadonlyArray<[TestStepFinished, TestStep]> {\n return this.testStepFinishedByTestCaseStartedId\n .get(testCaseStarted.id)\n .map((testStepFinished) => {\n const testStep = this.findTestStepBy(testStepFinished)\n assert.ok(testStep, 'Expected to find TestStep by TestStepFinished')\n return [testStepFinished, testStep]\n })\n }\n\n public findLineageBy(element: Pickle | TestCaseStarted | TestCaseFinished): Lineage | undefined {\n const pickle = 'astNodeIds' in element ? element : this.findPickleBy(element)\n const deepestAstNodeId = pickle.astNodeIds.at(-1)\n assert.ok(deepestAstNodeId, 'Expected Pickle to have at least one astNodeId')\n return this.lineageById.get(deepestAstNodeId)\n }\n}\n"]}