@creative-introvert/tons-of-tests 2.1.0 → 3.0.0-rc.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.
Files changed (120) hide show
  1. package/README.md +143 -37
  2. package/dist/cjs/Classify.js +1 -2
  3. package/dist/cjs/Classify.js.map +1 -1
  4. package/dist/cjs/RepositoryError.js +24 -33
  5. package/dist/cjs/RepositoryError.js.map +1 -1
  6. package/dist/cjs/Show.js +18 -0
  7. package/dist/cjs/Show.js.map +1 -1
  8. package/dist/cjs/Test.js +37 -2
  9. package/dist/cjs/Test.js.map +1 -1
  10. package/dist/cjs/Test.repository.js +8 -17
  11. package/dist/cjs/Test.repository.js.map +1 -1
  12. package/dist/cjs/TestRun.js +20 -0
  13. package/dist/cjs/TestRun.js.map +1 -0
  14. package/dist/cjs/TestValueError.js +23 -0
  15. package/dist/cjs/TestValueError.js.map +1 -0
  16. package/dist/cjs/index.js +0 -7
  17. package/dist/cjs/index.js.map +1 -1
  18. package/dist/cjs/internal/Classify.js +1 -9
  19. package/dist/cjs/internal/Classify.js.map +1 -1
  20. package/dist/cjs/internal/Test.js +236 -93
  21. package/dist/cjs/internal/Test.js.map +1 -1
  22. package/dist/cjs/internal/Test.repository.sqlite.js +262 -357
  23. package/dist/cjs/internal/Test.repository.sqlite.js.map +1 -1
  24. package/dist/cjs/internal/Test.serialization.js +128 -0
  25. package/dist/cjs/internal/Test.serialization.js.map +1 -0
  26. package/dist/cjs/internal/common.js.map +1 -1
  27. package/dist/cjs/internal/stats.js +29 -1
  28. package/dist/cjs/internal/stats.js.map +1 -1
  29. package/dist/cjs/internal/summarize.js +143 -29
  30. package/dist/cjs/internal/summarize.js.map +1 -1
  31. package/dist/cjs/internal/test-repository-fixtures.js +31 -0
  32. package/dist/cjs/internal/test-repository-fixtures.js.map +1 -0
  33. package/dist/cjs/internal/test-repository-migrations.js +68 -0
  34. package/dist/cjs/internal/test-repository-migrations.js.map +1 -0
  35. package/dist/cjs/internal/test-result-stats.js +89 -0
  36. package/dist/cjs/internal/test-result-stats.js.map +1 -0
  37. package/dist/dts/Classify.d.ts +0 -1
  38. package/dist/dts/Classify.d.ts.map +1 -1
  39. package/dist/dts/RepositoryError.d.ts +19 -20
  40. package/dist/dts/RepositoryError.d.ts.map +1 -1
  41. package/dist/dts/Show.d.ts +5 -5
  42. package/dist/dts/Show.d.ts.map +1 -1
  43. package/dist/dts/Test.d.ts +120 -14
  44. package/dist/dts/Test.d.ts.map +1 -1
  45. package/dist/dts/Test.repository.d.ts +94 -8
  46. package/dist/dts/Test.repository.d.ts.map +1 -1
  47. package/dist/dts/TestRun.d.ts +18 -0
  48. package/dist/dts/TestRun.d.ts.map +1 -0
  49. package/dist/dts/TestValueError.d.ts +17 -0
  50. package/dist/dts/TestValueError.d.ts.map +1 -0
  51. package/dist/dts/index.d.ts +0 -1
  52. package/dist/dts/index.d.ts.map +1 -1
  53. package/dist/dts/internal/Classify.d.ts +0 -1
  54. package/dist/dts/internal/Classify.d.ts.map +1 -1
  55. package/dist/dts/internal/Test.d.ts +52 -30
  56. package/dist/dts/internal/Test.d.ts.map +1 -1
  57. package/dist/dts/internal/Test.repository.sqlite.d.ts +66 -12
  58. package/dist/dts/internal/Test.repository.sqlite.d.ts.map +1 -1
  59. package/dist/dts/internal/Test.serialization.d.ts +34 -0
  60. package/dist/dts/internal/Test.serialization.d.ts.map +1 -0
  61. package/dist/dts/internal/common.d.ts +1 -1
  62. package/dist/dts/internal/common.d.ts.map +1 -1
  63. package/dist/dts/internal/stats.d.ts +15 -1
  64. package/dist/dts/internal/stats.d.ts.map +1 -1
  65. package/dist/dts/internal/summarize.d.ts +39 -7
  66. package/dist/dts/internal/summarize.d.ts.map +1 -1
  67. package/dist/dts/internal/test-repository-fixtures.d.ts +22 -0
  68. package/dist/dts/internal/test-repository-fixtures.d.ts.map +1 -0
  69. package/dist/dts/internal/test-repository-migrations.d.ts +11 -0
  70. package/dist/dts/internal/test-repository-migrations.d.ts.map +1 -0
  71. package/dist/dts/internal/test-result-stats.d.ts +7 -0
  72. package/dist/dts/internal/test-result-stats.d.ts.map +1 -0
  73. package/dist/esm/Classify.js +0 -1
  74. package/dist/esm/Classify.js.map +1 -1
  75. package/dist/esm/RepositoryError.js +14 -29
  76. package/dist/esm/RepositoryError.js.map +1 -1
  77. package/dist/esm/Show.js +2 -2
  78. package/dist/esm/Show.js.map +1 -1
  79. package/dist/esm/Test.js +34 -1
  80. package/dist/esm/Test.js.map +1 -1
  81. package/dist/esm/Test.repository.js +7 -16
  82. package/dist/esm/Test.repository.js.map +1 -1
  83. package/dist/esm/TestRun.js +13 -0
  84. package/dist/esm/TestRun.js.map +1 -0
  85. package/dist/esm/TestValueError.js +16 -0
  86. package/dist/esm/TestValueError.js.map +1 -0
  87. package/dist/esm/index.js +0 -1
  88. package/dist/esm/index.js.map +1 -1
  89. package/dist/esm/internal/Classify.js +0 -7
  90. package/dist/esm/internal/Classify.js.map +1 -1
  91. package/dist/esm/internal/Test.js +232 -92
  92. package/dist/esm/internal/Test.js.map +1 -1
  93. package/dist/esm/internal/Test.repository.sqlite.js +261 -354
  94. package/dist/esm/internal/Test.repository.sqlite.js.map +1 -1
  95. package/dist/esm/internal/Test.serialization.js +119 -0
  96. package/dist/esm/internal/Test.serialization.js.map +1 -0
  97. package/dist/esm/internal/common.js.map +1 -1
  98. package/dist/esm/internal/stats.js +27 -0
  99. package/dist/esm/internal/stats.js.map +1 -1
  100. package/dist/esm/internal/summarize.js +143 -28
  101. package/dist/esm/internal/summarize.js.map +1 -1
  102. package/dist/esm/internal/test-repository-fixtures.js +25 -0
  103. package/dist/esm/internal/test-repository-fixtures.js.map +1 -0
  104. package/dist/esm/internal/test-repository-migrations.js +62 -0
  105. package/dist/esm/internal/test-repository-migrations.js.map +1 -0
  106. package/dist/esm/internal/test-result-stats.js +83 -0
  107. package/dist/esm/internal/test-result-stats.js.map +1 -0
  108. package/package.json +1 -1
  109. package/dist/cjs/Test.repository.types.js +0 -14
  110. package/dist/cjs/Test.repository.types.js.map +0 -1
  111. package/dist/cjs/internal/lib/Schema.js +0 -14
  112. package/dist/cjs/internal/lib/Schema.js.map +0 -1
  113. package/dist/dts/Test.repository.types.d.ts +0 -62
  114. package/dist/dts/Test.repository.types.d.ts.map +0 -1
  115. package/dist/dts/internal/lib/Schema.d.ts +0 -4
  116. package/dist/dts/internal/lib/Schema.d.ts.map +0 -1
  117. package/dist/esm/Test.repository.types.js +0 -7
  118. package/dist/esm/Test.repository.types.js.map +0 -1
  119. package/dist/esm/internal/lib/Schema.js +0 -7
  120. package/dist/esm/internal/lib/Schema.js.map +0 -1
@@ -0,0 +1,18 @@
1
+ import { Schema } from 'effect';
2
+ declare const TestRun_base: Schema.Class<TestRun, Schema.Struct<{
3
+ readonly id: Schema.Int;
4
+ readonly name: Schema.String;
5
+ readonly variant: Schema.String;
6
+ readonly state: Schema.Literals<readonly ["Running", "Complete", "Failed"]>;
7
+ }>, {
8
+ readonly brand: unique symbol;
9
+ }>;
10
+ /**
11
+ * One saved execution of a suite variant. Results remain available after its
12
+ * program changes or is removed. `Complete` and `Failed` runs cannot be changed.
13
+ * Committing a complete run changes only its variant's baseline pointer.
14
+ */
15
+ export declare class TestRun extends TestRun_base {
16
+ }
17
+ export {};
18
+ //# sourceMappingURL=TestRun.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestRun.d.ts","sourceRoot":"","sources":["../../src/TestRun.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;;;;;;;oBAST,OAAO,MAAM;;AAPlC;;;;GAIG;AACH,qBAAa,OAAQ,SAAQ,YAQ3B;CAAG"}
@@ -0,0 +1,17 @@
1
+ import { Schema } from 'effect';
2
+ declare const TestValueError_base: Schema.Class<TestValueError, Schema.TaggedStruct<"TestValueError", {
3
+ readonly suite: Schema.String;
4
+ readonly caseNumber: Schema.Int;
5
+ readonly key: Schema.optionalKey<Schema.String>;
6
+ readonly field: Schema.Literals<readonly ["testCase.input", "testCase.expected", "evaluation.result", "evaluation.expected"]>;
7
+ readonly operation: Schema.Literals<readonly ["encode", "decode", "roundTrip"]>;
8
+ readonly cause: Schema.instanceOf<Schema.SchemaError, unknown>;
9
+ }>, import("effect/Cause").YieldableError & {
10
+ readonly brand: unique symbol;
11
+ }>;
12
+ /** A suite value could not be converted without losing information. */
13
+ export declare class TestValueError extends TestValueError_base {
14
+ get message(): string;
15
+ }
16
+ export {};
17
+ //# sourceMappingURL=TestValueError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestValueError.d.ts","sourceRoot":"","sources":["../../src/TestValueError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;;;;;;;;;oBAKT,OAAO,MAAM;;AAHlC,uEAAuE;AACvE,qBAAa,cAAe,SAAQ,mBAelC;IACE,IAAa,OAAO,WAGnB;CACJ"}
@@ -1,7 +1,6 @@
1
1
  export * as Classify from './Classify.js';
2
2
  export * as DisplayConfig from './DisplayConfig.js';
3
3
  export * as Error from './RepositoryError.js';
4
- export { pack } from './internal/pack.js';
5
4
  export * as Show from './Show.js';
6
5
  export * as Test from './Test.js';
7
6
  export * as TestRepository from './Test.repository.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,KAAK,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAC,IAAI,EAAC,MAAM,oBAAoB,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,KAAK,MAAM,sBAAsB,CAAC;AAC9C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC"}
@@ -7,7 +7,6 @@ export declare const values: {
7
7
  readonly FN: 'FN';
8
8
  };
9
9
  export declare const LabelSchema: Schema.Literals<readonly ["TP", "TN", "FP", "FN"]>;
10
- export declare const defaultIsEqual: <A, B>(a: A, b: B) => boolean;
11
10
  export declare const defaultIsNil: <I>(x: I) => boolean;
12
11
  export declare const makeClassify: <O, T>({ isEqual, isOutputNil, isExpectedNil, }: {
13
12
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Classify.d.ts","sourceRoot":"","sources":["../../../src/internal/Classify.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,MAAM,EAAE,MAAM,EAAC,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAC,QAAQ,IAAI,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAE1D,eAAO,MAAM,MAAM;aACf,EAAE,EAAE,IAAI;aACR,EAAE,EAAE,IAAI;aACR,EAAE,EAAE,IAAI;aACR,EAAE,EAAE,IAAI;CACF,CAAC;AAEX,eAAO,MAAM,WAAW,oDAA4C,CAAC;AAErE,eAAO,MAAM,cAAc,GAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAG,OAQ7C,CAAC;AAEN,eAAO,MAAM,YAAY,GAAI,CAAC,KAAK,CAAC,KAAG,OAAwC,CAAC;AAEhF,eAAO,MAAM,YAAY,GACpB,CAAC,EAAE,CAAC,4CAIF;IACC;;;;OAIG;IACH,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,OAAO,CAAC;IAC7C,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,CAAC;IACrC,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,OAAO,CAAC;CAC5C,KAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAkBjB,CAAC;AAEN,eAAO,MAAM,SAAS,MAAO;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAC,KAAG,MAGvD,CAAC;AAEF,eAAO,MAAM,MAAM,MAAO;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAC,KAAG,MAGpD,CAAC;AAEF,eAAO,MAAM,GAAG,OAAQ,MAAM,EAAE,KAAG,MACqC,CAAC;AAEzE,eAAO,MAAM,GAAG,OAAQ,MAAM,EAAE,KAAG,MACqC,CAAC;AAEzE,eAAO,MAAM,IAAI,OAAQ,MAAM,EAAE,KAAG,MAAM,GAAG,SAM5C,CAAC;AAEF,eAAO,MAAM,MAAM,OAAQ,MAAM,EAAE,KAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAczD,CAAC"}
1
+ {"version":3,"file":"Classify.d.ts","sourceRoot":"","sources":["../../../src/internal/Classify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,MAAM,EAAC,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAC,QAAQ,IAAI,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAE1D,eAAO,MAAM,MAAM;aACf,EAAE,EAAE,IAAI;aACR,EAAE,EAAE,IAAI;aACR,EAAE,EAAE,IAAI;aACR,EAAE,EAAE,IAAI;CACF,CAAC;AAEX,eAAO,MAAM,WAAW,oDAA4C,CAAC;AAErE,eAAO,MAAM,YAAY,GAAI,CAAC,KAAK,CAAC,KAAG,OAAwC,CAAC;AAEhF,eAAO,MAAM,YAAY,GACpB,CAAC,EAAE,CAAC,4CAIF;IACC;;;;OAIG;IACH,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,OAAO,CAAC;IAC7C,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,CAAC;IACrC,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,OAAO,CAAC;CAC5C,KAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAkBjB,CAAC;AAEN,eAAO,MAAM,SAAS,MAAO;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAC,KAAG,MAGvD,CAAC;AAEF,eAAO,MAAM,MAAM,MAAO;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAC,KAAG,MAGpD,CAAC;AAEF,eAAO,MAAM,GAAG,OAAQ,MAAM,EAAE,KAAG,MACqC,CAAC;AAEzE,eAAO,MAAM,GAAG,OAAQ,MAAM,EAAE,KAAG,MACqC,CAAC;AAEzE,eAAO,MAAM,IAAI,OAAQ,MAAM,EAAE,KAAG,MAAM,GAAG,SAM5C,CAAC;AAEF,eAAO,MAAM,MAAM,OAAQ,MAAM,EAAE,KAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAczD,CAAC"}
@@ -1,51 +1,73 @@
1
1
  import { Effect, Option, Schema, Stream } from 'effect';
2
- import type { Diff, Evaluate, Program, TestCase, TestResult, TestRunResults, TestSuite } from '../Test.js';
3
- import type { TestRun } from '../Test.repository.js';
4
- export declare const makeSha256: <I>(input: I) => string;
5
- declare const TestResult: {
6
- make: <I, O, T>(args: Omit<TestResult<I, O, T>, 'id'>) => {
7
- id: string;
8
- hashTestCase: string;
9
- key: string;
10
- ordering: number;
11
- resultOrdering: number;
12
- label: import("../Classify.js").Label;
13
- input: I;
14
- result: O;
15
- expected: T;
16
- tags: readonly string[];
17
- timeMillis: number;
18
- };
19
- };
2
+ import { Stats } from '../Classify.js';
3
+ import type { Diff, Evaluate, InferTestSuite, Program, SelectedProgram, TestCase, TestResult, TestResultComparison, TestRunResults, TestSuite, TestSuiteError, TestSuitePrograms, TestSuiteServices } from '../Test.js';
4
+ import { TestVariantNotFound, TestVariantRequired } from '../Test.js';
5
+ import { TestRepository, type TestResultSchemas, type TestRun } from '../Test.repository.js';
6
+ import type { TestValueError } from '../TestValueError.js';
7
+ import { makeResultCodec } from './Test.serialization.js';
8
+ /** Hash already encoded JSON. Object key order does not affect identity. */
9
+ export declare const makeSha256: (input: Schema.Json) => string;
20
10
  export declare const resultKey: ({ hashTestCase, key, }: Pick<TestResult, 'hashTestCase' | 'key'>) => string;
21
- export declare const TestResultSchema: Schema.Codec<TestResult>;
22
11
  export declare const test: <I, O, T, E, R, A, B>(args_0: {
23
12
  testCase: TestCase<I, T> & {
24
13
  ordering: number;
25
14
  };
15
+ hashTestCase: string;
26
16
  program: Program<I, O, E, R>;
27
17
  evaluate: Evaluate<O, T, A, B>;
28
- }) => Effect.Effect<{
29
- id: string;
18
+ encodeResult: ReturnType<typeof makeResultCodec<I, A, B>>['encode'];
19
+ }) => Effect.Effect<[{
30
20
  hashTestCase: string;
31
- key: string;
32
21
  ordering: number;
33
22
  resultOrdering: number;
34
- label: import("../Classify.js").Label;
35
23
  input: I;
24
+ tags: string[];
25
+ timeMillis: number;
26
+ id: string;
27
+ key: string;
36
28
  result: A;
37
29
  expected: B;
38
- tags: readonly string[];
30
+ label: import("../Classify.js").Label;
31
+ }, ...{
32
+ hashTestCase: string;
33
+ ordering: number;
34
+ resultOrdering: number;
35
+ input: I;
36
+ tags: string[];
39
37
  timeMillis: number;
40
- }[], E, R>;
41
- export declare const all: <I, O, T, E, R, A = O, B = T>(suite: TestSuite<I, O, T, E, R, A, B>, { concurrency }?: {
38
+ id: string;
39
+ key: string;
40
+ result: A;
41
+ expected: B;
42
+ label: import("../Classify.js").Label;
43
+ }[]], E | TestValueError, R>;
44
+ export declare function selectVariant<S extends {
45
+ name: string;
46
+ } & TestSuitePrograms<never, unknown, unknown, unknown>>(suite: S, variant?: string): Effect.Effect<{
47
+ name: string;
48
+ program: SelectedProgram<S>;
49
+ }, TestVariantRequired | TestVariantNotFound>;
50
+ export declare function all<I, O, T, A = O, B = T, S = never>(suite: TestSuite<I, O, T, unknown, unknown, A, B> & InferTestSuite<S>, options?: {
51
+ variant?: string | undefined;
42
52
  concurrency?: number | undefined;
43
- }) => Stream.Stream<TestResult<I, A, B>, E, R>;
53
+ }): Stream.Stream<TestResult<I, A, B>, TestSuiteError<S> | TestValueError | TestVariantRequired | TestVariantNotFound, TestSuiteServices<S>>;
44
54
  export declare const runCollectRecord: (testRun: TestRun) => <I, O, T, E, R>(testResults$: Stream.Stream<TestResult<I, O, T>, E, R>) => Effect.Effect<TestRunResults<I, O, T>, E, R>;
45
55
  export declare const filterResults: <I, O, T>(testRun: TestRunResults<I, O, T>, predicate: (result: TestResult<I, O, T>) => boolean) => TestRunResults<I, O, T>;
46
56
  export declare const diff: ({ testRun: { stats }, previousTestRun, }: {
47
- testRun: TestRunResults;
48
- previousTestRun: Option.Option<TestRunResults>;
57
+ testRun: Pick<TestRunResults, 'stats'>;
58
+ previousTestRun: Option.Option<Pick<TestRunResults, 'stats'>>;
49
59
  }) => Diff;
50
- export {};
60
+ export declare const compareRuns: <I, A, B>({ from, to, schemas, }: {
61
+ from: TestRun;
62
+ to: TestRun;
63
+ schemas: TestResultSchemas<I, A, B>;
64
+ }) => Stream.Stream<TestResultComparison<I, A, B>, import("../RepositoryError.js").RepositoryError, TestRepository>;
65
+ export declare const summarizeRun: <I, A, B>(args_0: {
66
+ run: TestRun;
67
+ schemas: TestResultSchemas<I, A, B>;
68
+ predicate?: (result: TestResult<I, A, B>) => boolean;
69
+ }) => Effect.Effect<{
70
+ run: TestRun;
71
+ stats: Stats;
72
+ }, import("../RepositoryError.js").RepositoryError, TestRepository>;
51
73
  //# sourceMappingURL=Test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Test.d.ts","sourceRoot":"","sources":["../../../src/internal/Test.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,MAAM,EAAE,MAAM,EAAQ,MAAM,EAAQ,MAAM,EAAC,MAAM,QAAQ,CAAC;AAGzE,OAAO,KAAK,EACR,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,UAAU,EACV,cAAc,EACd,SAAS,EACZ,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,uBAAuB,CAAC;AAUnD,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,CAAC,KAAG,MAGxC,CAAC;AAEF,QAAA,MAAM,UAAU;WACL,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC;;;;;;;;;;;;;CAmBxD,CAAC;AAEF,eAAO,MAAM,SAAS,2BAGnB,IAAI,CAAC,UAAU,EAAE,cAAc,GAAG,KAAK,CAAC,KAAG,MACP,CAAC;AAWxC,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,CAYpD,CAAC;AAEH,eAAO,MAAM,IAAI,GAAgC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;cAKtD,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC;aACpC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;cAClB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;;;;;;;;;;;;;UAkChC,CAAC;AAEH,eAAO,MAAM,GAAG,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SACpC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,oBACtB;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAC,KAClD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAyCzC,CAAC;AAgFF,eAAO,MAAM,gBAAgB,YACf,OAAO,MAChB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,gBACI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KACvD,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAIzC,CAAC;AAEV,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,WACxB,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,aACrB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,KACpD,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAOxB,CAAC;AAEF,eAAO,MAAM,IAAI,6CAGd;IACC,OAAO,EAAE,cAAc,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;CAClD,KAAG,IAaC,CAAC"}
1
+ {"version":3,"file":"Test.d.ts","sourceRoot":"","sources":["../../../src/internal/Test.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,67 @@
1
- import * as SqlClient from 'effect/sql/SqlClient';
2
- import { Effect } from 'effect';
3
- import { TestRepository } from '../Test.repository.js';
4
- import { type TestRepositoryShape } from '../Test.repository.types.js';
5
- export { TestRepository };
6
- import { RepositoryDecodeError } from '../RepositoryError.js';
7
- export declare const tables: {
8
- readonly testResults: 'test-results';
9
- readonly testRuns: 'test-runs';
10
- readonly testRunResults: 'test-run-results';
11
- };
12
- export declare const makeTestRepository: Effect.Effect<TestRepositoryShape, RepositoryDecodeError | import("effect/sql/SqlError").SqlError, SqlClient.SqlClient>;
1
+ import { Effect, Option, Schema, Stream } from 'effect';
2
+ import { SqlClient } from 'effect/sql';
3
+ import type { TestResult } from '../Test.js';
4
+ import type { TestResultSchemas } from '../Test.repository.js';
5
+ import { TestRun } from '../TestRun.js';
6
+ import { TestRunNotCreated, TestRunIncomplete, TestRunNotFound } from '../RepositoryError.js';
7
+ export { tables } from './test-repository-migrations.js';
8
+ export declare const TestResultStorage: Schema.Struct<{
9
+ readonly id: Schema.String;
10
+ readonly hashTestCase: Schema.String;
11
+ readonly key: Schema.String;
12
+ readonly input: Schema.fromJsonString<Schema.Codec<Schema.Json, Schema.Json, never, never>>;
13
+ readonly result: Schema.fromJsonString<Schema.Codec<Schema.Json, Schema.Json, never, never>>;
14
+ readonly expected: Schema.fromJsonString<Schema.Codec<Schema.Json, Schema.Json, never, never>>;
15
+ readonly label: Schema.Literals<readonly ["TP", "TN", "FP", "FN"]>;
16
+ }>;
17
+ export declare const makeTestRepository: Effect.Effect<{
18
+ commitTestRun: (id: number) => Effect.Effect<undefined, Schema.SchemaError | import("effect/sql/SqlError").SqlError | TestRunIncomplete | TestRunNotFound, never>;
19
+ getTestRun: (id: number) => Effect.Effect<Option.Option<TestRun>, Schema.SchemaError | import("effect/sql/SqlError").SqlError, never>;
20
+ getLatestTestRun: (args_0: {
21
+ name: string;
22
+ variant: string;
23
+ }) => Effect.Effect<Option.Option<TestRun>, Schema.SchemaError | import("effect/sql/SqlError").SqlError, never>;
24
+ getBaselineTestRun: (args_0: {
25
+ name: string;
26
+ variant: string;
27
+ }) => Effect.Effect<Option.Option<TestRun>, Schema.SchemaError | import("effect/sql/SqlError").SqlError, never>;
28
+ listTestRuns: (args_0: {
29
+ name: string;
30
+ variant?: string;
31
+ before?: number;
32
+ limit: number;
33
+ }) => Effect.Effect<(TestRun & {
34
+ isBaseline: boolean;
35
+ })[], Schema.SchemaError | import("effect/sql/SqlError").SqlError, never>;
36
+ listVariantBaselines: (name: string) => Effect.Effect<{
37
+ variant: string;
38
+ baseline: Option.Option<TestRun>;
39
+ }[], Schema.SchemaError | import("effect/sql/SqlError").SqlError, never>;
40
+ getTestResultsStream: <I = unknown, O = unknown, T = unknown>(run: TestRun, schemas: TestResultSchemas<I, O, T>, matching?: ReadonlyArray<Pick<TestResult, 'hashTestCase' | 'key'>>) => Stream.Stream<{
41
+ input: I;
42
+ result: O;
43
+ expected: T;
44
+ id: string;
45
+ hashTestCase: string;
46
+ key: string;
47
+ ordering: number;
48
+ resultOrdering: number;
49
+ label: import("../Classify.ts").Label;
50
+ tags: readonly string[];
51
+ timeMillis: number;
52
+ }, Schema.SchemaError | import("effect/sql/SqlError").SqlError | import("../TestValueError.ts").TestValueError, never>;
53
+ withTestRun: <A, E = never, R = never>(input: {
54
+ name: string;
55
+ variant: string;
56
+ }, execute: (run: TestRun) => Effect.Effect<A, E, R>) => Effect.Effect<{
57
+ run: TestRun;
58
+ value: A;
59
+ }, E | Schema.SchemaError | import("effect/sql/SqlError").SqlError | TestRunNotCreated | TestRunNotFound, R>;
60
+ withStats: <A, E, R>(use: (collector: {
61
+ add: (results: ReadonlyArray<Pick<TestResult, 'hashTestCase' | 'label' | 'timeMillis'>>) => Effect.Effect<void, import("../RepositoryError.js").RepositoryError>;
62
+ stats: Effect.Effect<import("../Classify.ts").Stats, import("../RepositoryError.js").RepositoryError>;
63
+ }) => Effect.Effect<A, E, R>) => Effect.Effect<A, E | Schema.SchemaError | import("effect/sql/SqlError").SqlError, Exclude<R, SqlClient.SqlClient>>;
64
+ insertTestResult: <I, O, T>(result: TestResult<I, O, T>, run: TestRun, schemas: TestResultSchemas<I, O, T>) => Effect.Effect<void, Schema.SchemaError | import("effect/sql/SqlError").SqlError | TestRunNotFound | import("../TestValueError.ts").TestValueError, never>;
65
+ insertTestResults: <I, O, T>(results: readonly TestResult<I, O, T>[], run: TestRun, schemas: TestResultSchemas<I, O, T>) => Effect.Effect<void, Schema.SchemaError | import("effect/sql/SqlError").SqlError | TestRunNotFound | import("../TestValueError.ts").TestValueError, never>;
66
+ }, import("effect/sql/Migrator").MigrationError | import("effect/sql/SqlError").SqlError, SqlClient.SqlClient>;
13
67
  //# sourceMappingURL=Test.repository.sqlite.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Test.repository.sqlite.d.ts","sourceRoot":"","sources":["../../../src/internal/Test.repository.sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAGH,MAAM,EAKT,MAAM,QAAQ,CAAC;AAGhB,OAAO,EAAC,cAAc,EAAC,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAEH,KAAK,mBAAmB,EAG3B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAC,cAAc,EAAC,CAAC;AACxB,OAAO,EACH,qBAAqB,EAIxB,MAAM,uBAAuB,CAAC;AAI/B,eAAO,MAAM,MAAM;aACf,WAAW,EAAE,cAAc;aAC3B,QAAQ,EAAE,WAAW;aACrB,cAAc,EAAE,kBAAkB;CAC5B,CAAC;AA+CX,eAAO,MAAM,kBAAkB,yHA0mB7B,CAAC"}
1
+ {"version":3,"file":"Test.repository.sqlite.d.ts","sourceRoot":"","sources":["../../../src/internal/Test.repository.sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAQ,MAAM,EAAE,MAAM,EAAE,MAAM,EAAC,MAAM,QAAQ,CAAC;AACxE,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAC;AAErC,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAER,iBAAiB,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,EACH,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EAClB,MAAM,uBAAuB,CAAC;AAM/B,OAAO,EAAC,MAAM,EAAC,MAAM,iCAAiC,CAAC;AAEvD,eAAO,MAAM,iBAAiB;;;;;;;;EAQ5B,CAAC;AAoCH,eAAO,MAAM,kBAAkB;;;;cAmKjB,MAAM;iBACH,MAAM;;;cAiBT,MAAM;iBACH,MAAM;;;cAoGT,MAAM;kBACF,MAAM;iBACP,MAAM;eACR,MAAM;;;;;;;;2BAxMa,CAAC,YAAY,CAAC,YAAY,CAAC,iBAChD,OAAO,WACH,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,aACxB,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,GAAG,KAAK,CAAC,CAAC;;;;;;;;;;;;;kBA6IjD,CAAC,EAAE,CAAC,UAAU,CAAC,iBACzB;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAC,WAC7B,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;;;;;;;;;wBA1NE,CAAC,EAAE,CAAC,EAAE,CAAC;8GA8UhE,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { Effect, Schema } from 'effect';
2
+ import type { TestResult } from '../Test.js';
3
+ import type { TestResultSchemas } from '../Test.repository.js';
4
+ import { TestValueError } from '../TestValueError.js';
5
+ /** Stable JSON object order, including records; array order remains significant. */
6
+ export declare const stringifyJson: (value: Schema.Json) => string;
7
+ type ValueContext = Pick<TestValueError, 'suite' | 'caseNumber' | 'key' | 'field'>;
8
+ export declare const makeValueCodec: <T>(schema: Schema.Codec<T, unknown>) => {
9
+ encode: (value: T, context: ValueContext) => Effect.Effect<Schema.Json, TestValueError, never>;
10
+ decode: (text: unknown, context: ValueContext) => Effect.Effect<T, TestValueError, never>;
11
+ };
12
+ /** Reuse the same conversions for result IDs, storage, and reports. */
13
+ export declare const makeResultCodec: <I, O, T>(schemas: TestResultSchemas<I, O, T>, suite: string) => {
14
+ encode: <A extends Pick<TestResult<I, O, T>, 'input' | 'result' | 'expected' | 'key' | 'ordering'>>(value: A) => Effect.Effect<Omit<A, "expected" | "input" | "result"> & {
15
+ input: Schema.Json;
16
+ result: Schema.Json;
17
+ expected: Schema.Json;
18
+ }, TestValueError, never>;
19
+ decode: (value: TestResult<string, string, string>) => Effect.Effect<{
20
+ input: I;
21
+ result: O;
22
+ expected: T;
23
+ id: string;
24
+ hashTestCase: string;
25
+ key: string;
26
+ ordering: number;
27
+ resultOrdering: number;
28
+ label: import("../Classify.ts").Label;
29
+ tags: readonly string[];
30
+ timeMillis: number;
31
+ }, TestValueError, never>;
32
+ };
33
+ export {};
34
+ //# sourceMappingURL=Test.serialization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Test.serialization.d.ts","sourceRoot":"","sources":["../../../src/internal/Test.serialization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,MAAM,EAAc,MAAM,QAAQ,CAAC;AAEnD,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAC,cAAc,EAAC,MAAM,sBAAsB,CAAC;AAEpD,oFAAoF;AACpF,eAAO,MAAM,aAAa,UAAW,MAAM,CAAC,IAAI,KAAG,MAYlD,CAAC;AAEF,KAAK,YAAY,GAAG,IAAI,CACpB,cAAc,EACd,OAAO,GAAG,YAAY,GAAG,KAAK,GAAG,OAAO,CAC3C,CAAC;AAMF,eAAO,MAAM,cAAc,GAAI,CAAC,UAAU,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC;;mBA0DxC,OAAO,WAAW,YAAY;CAYvD,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,eAAe,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,WAC1B,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,SAC5B,MAAM;aAMT,CAAC,SAAS,IAAI,CACV,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACnB,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,KAAK,GAAG,UAAU,CACvD;;;;;;;;;;;;;;;;;;CAsDR,CAAC"}
@@ -5,7 +5,7 @@ export declare const showHeader: (cfg: DisplayConfig, columnWidths: number[], co
5
5
  label: string;
6
6
  }[]) => string;
7
7
  export declare const showTitle: (cfg: DisplayConfig, columnWidths: number[], title: string) => string;
8
- export declare const showRow: (cfg: DisplayConfig, row: [string, string[]][], columnWidths: number[], height: number) => string;
8
+ export declare const showRow: (cfg: DisplayConfig, row: ReadonlyArray<readonly [string, ReadonlyArray<string>]>, columnWidths: number[], height: number) => string;
9
9
  export declare const colorPositive: (n: number) => colors.StyleFunction;
10
10
  export declare const colorNegative: (n: number) => colors.StyleFunction;
11
11
  //# sourceMappingURL=common.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/internal/common.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAGjC,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,UAAU,QACd,aAAa,gBACJ,MAAM,EAAE,YACZ,KAAK,GAAG,WAAW,GAAG,QAAQ,GAAG,cAAc,GAAG,QAAQ,KACrE,MAsCF,CAAC;AAEF,eAAO,MAAM,UAAU,QACd,aAAa,gBACJ,MAAM,EAAE,WACb;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,EAAE,KAC3B,MASF,CAAC;AAEF,eAAO,MAAM,SAAS,QACb,aAAa,gBACJ,MAAM,EAAE,SACf,MAAM,KACd,MAYF,CAAC;AAEF,eAAO,MAAM,OAAO,QACX,aAAa,OACb,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,gBACX,MAAM,EAAE,UACd,MAAM,WAejB,CAAC;AAEF,eAAO,MAAM,aAAa,MAAO,MAAM,yBACqB,CAAC;AAE7D,eAAO,MAAM,aAAa,MAAO,MAAM,yBACqB,CAAC"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/internal/common.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAGjC,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,UAAU,QACd,aAAa,gBACJ,MAAM,EAAE,YACZ,KAAK,GAAG,WAAW,GAAG,QAAQ,GAAG,cAAc,GAAG,QAAQ,KACrE,MAsCF,CAAC;AAEF,eAAO,MAAM,UAAU,QACd,aAAa,gBACJ,MAAM,EAAE,WACb;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,EAAE,KAC3B,MASF,CAAC;AAEF,eAAO,MAAM,SAAS,QACb,aAAa,gBACJ,MAAM,EAAE,SACf,MAAM,KACd,MAYF,CAAC;AAEF,eAAO,MAAM,OAAO,QACX,aAAa,OACb,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,gBAC9C,MAAM,EAAE,UACd,MAAM,WAejB,CAAC;AAEF,eAAO,MAAM,aAAa,MAAO,MAAM,yBACqB,CAAC;AAE7D,eAAO,MAAM,aAAa,MAAO,MAAM,yBACqB,CAAC"}
@@ -1,9 +1,23 @@
1
+ import { Option } from 'effect';
2
+ import type { Stats } from '../Classify.js';
1
3
  import type { DisplayConfig } from '../DisplayConfig.js';
2
4
  import type { StatsColumnNames } from '../Show.js';
3
5
  import type { TestRunResults } from '../Test.js';
6
+ import type { TestRun } from '../Test.repository.js';
4
7
  export declare const showStats: <I, O, T>({ testRun, displayConfig, selectColumns, }: {
5
- testRun: Pick<TestRunResults<I, O, T>, 'stats' | 'testCaseHashes'>;
8
+ testRun: Pick<TestRunResults<I, O, T>, 'stats'>;
6
9
  displayConfig?: Partial<DisplayConfig>;
7
10
  selectColumns?: StatsColumnNames[];
8
11
  }) => string;
12
+ /** Missing baselines have no metrics; completed empty runs have zero counts. */
13
+ export declare const showRunSummaries: ({ summaries, displayConfig, }: {
14
+ summaries: ReadonlyArray<{
15
+ name: string;
16
+ variant: string;
17
+ run: Option.Option<TestRun>;
18
+ stats: Option.Option<Stats>;
19
+ retired: boolean;
20
+ }>;
21
+ displayConfig?: Partial<DisplayConfig> | undefined;
22
+ }) => string;
9
23
  //# sourceMappingURL=stats.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../src/internal/stats.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAc,gBAAgB,EAAe,MAAM,YAAY,CAAC;AAC5E,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,YAAY,CAAC;AA8G/C,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,8CAe9B;IACC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAAC,CAAC;IACnE,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACvC,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACtC,KAAG,MAgCH,CAAC"}
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../src/internal/stats.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;AAE9B,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAc,gBAAgB,EAAe,MAAM,YAAY,CAAC;AAC5E,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,uBAAuB,CAAC;AA8GnD,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,8CAe9B;IACC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAChD,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACvC,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACtC,KAAG,MAgCH,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,gBAAgB,kCAG1B;IACC,SAAS,EAAE,aAAa,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,EAAE,OAAO,CAAC;KACpB,CAAC,CAAC;IACH,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;CACtD,KAAG,MA6DH,CAAC"}
@@ -1,11 +1,43 @@
1
- import { Array as A, Option } from 'effect';
1
+ import { Array as A, Effect, FileSystem, Option, Schema, Stream } from 'effect';
2
2
  import type { DisplayConfig } from '../DisplayConfig.js';
3
- import type { SummarizeColumnNames } from '../Show.js';
4
- import type { TestRunResults } from '../Test.js';
5
- export declare const showSummary: ({ testRun, displayConfig, previousTestRun, selectColumns, }: {
6
- testRun: TestRunResults;
7
- previousTestRun?: Option.Option<TestRunResults>;
3
+ import type { SummarizeColumnNames, SummarizeContext } from '../Show.js';
4
+ import type { TestResultComparison, TestRunResults } from '../Test.js';
5
+ import type { TestResultSchemas, TestRun } from '../Test.repository.js';
6
+ /** Format schema-encoded values; conversion failures stay in the error channel. */
7
+ export declare const showSummary: <I, O, T>(args_0: {
8
+ testRun: TestRunResults<I, O, T>;
9
+ schemas: TestResultSchemas<I, O, T>;
10
+ previousTestRun?: Option.Option<TestRunResults<I, O, T>>;
8
11
  displayConfig?: Partial<DisplayConfig> | undefined;
9
12
  selectColumns?: A.NonEmptyArray<SummarizeColumnNames>;
10
- }) => string;
13
+ }) => Effect.Effect<string, import("../TestValueError.ts").TestValueError, never>;
14
+ /**
15
+ * Format rows once into a temporary file, then read them back with final column widths.
16
+ * Use inside Effect.scoped; the returned chunks remain readable until that scope closes.
17
+ * Each chunk ends in a newline. Conversion failures fail report preparation.
18
+ */
19
+ export declare const prepareSummary: <I, O, T, E, R>(results: Stream.Stream<Pick<SummarizeContext<I, O, T>, "previousTestResult" | "testResult">, E, R>, args_1: {
20
+ schemas: TestResultSchemas<I, O, T>;
21
+ suite: string;
22
+ displayConfig?: Partial<DisplayConfig> | undefined;
23
+ hasPrevious?: boolean;
24
+ selectColumns?: A.NonEmptyArray<SummarizeColumnNames>;
25
+ }) => Effect.Effect<{
26
+ count: number;
27
+ chunks: Stream.Stream<string, import("effect/PlatformError").PlatformError | Schema.SchemaError, never>;
28
+ }, E | import("effect/PlatformError").PlatformError | import("../TestValueError.ts").TestValueError, R | FileSystem.FileSystem | import("effect/Scope").Scope>;
29
+ /**
30
+ * Show added and removed results with `-` where the other side is missing.
31
+ * Each side uses its own suite name when reporting a codec failure.
32
+ * Prepare and consume the chunks inside `Effect.scoped` so temporary files stay available.
33
+ */
34
+ export declare const prepareComparison: <I, A, B, E, R>(comparisons: Stream.Stream<TestResultComparison<I, A, B>, E, R>, args_1: {
35
+ from: Option.Option<TestRun>;
36
+ to: TestRun;
37
+ schemas: TestResultSchemas<I, A, B>;
38
+ displayConfig?: Partial<DisplayConfig> | undefined;
39
+ }) => Effect.Effect<{
40
+ chunks: Stream.Stream<string, import("effect/PlatformError").PlatformError | Schema.SchemaError, never>;
41
+ count: number;
42
+ }, E | import("effect/PlatformError").PlatformError | import("../TestValueError.ts").TestValueError, R | FileSystem.FileSystem | import("effect/Scope").Scope>;
11
43
  //# sourceMappingURL=summarize.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"summarize.d.ts","sourceRoot":"","sources":["../../../src/internal/summarize.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,KAAK,IAAI,CAAC,EAAE,MAAM,EAAS,MAAM,QAAQ,CAAC;AAElD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAER,oBAAoB,EAEvB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,YAAY,CAAC;AAyI/C,eAAO,MAAM,WAAW,gEAiBrB;IACC,OAAO,EAAE,cAAc,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAChD,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;IACnD,aAAa,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;CACzD,WAgEA,CAAC"}
1
+ {"version":3,"file":"summarize.d.ts","sourceRoot":"","sources":["../../../src/internal/summarize.ts"],"names":[],"mappings":"AACA,OAAO,EACH,KAAK,IAAI,CAAC,EACV,MAAM,EACN,UAAU,EACV,MAAM,EAEN,MAAM,EACN,MAAM,EACT,MAAM,QAAQ,CAAC;AAEhB,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAER,oBAAoB,EACpB,gBAAgB,EACnB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAC,oBAAoB,EAAE,cAAc,EAAC,MAAM,YAAY,CAAC;AACrE,OAAO,KAAK,EAAC,iBAAiB,EAAE,OAAO,EAAC,MAAM,uBAAuB,CAAC;AAmLtE,mFAAmF;AACnF,eAAO,MAAM,WAAW,GAAgC,CAAC,EAAE,CAAC,EAAE,CAAC;aAOlD,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;aACvB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;sBACjB,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBACxC,OAAO,CAAC,aAAa,CAAC,GAAG,SAAS;oBAClC,CAAC,CAAC,aAAa,CAAC,oBAAoB,CAAC;iFAwDvD,CAAC;AAUH;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAgC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;aAavD,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;WAC5B,MAAM;oBACG,OAAO,CAAC,aAAa,CAAC,GAAG,SAAS;kBACpC,OAAO;oBACL,CAAC,CAAC,aAAa,CAAC,oBAAoB,CAAC;;;;8JAkC3D,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAgC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;UAQ7D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QACxB,OAAO;aACF,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBACnB,OAAO,CAAC,aAAa,CAAC,GAAG,SAAS;;;;8JA2FxD,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { Effect, Schema } from 'effect';
2
+ import { SqlClient } from 'effect/sql';
3
+ import { TestRun } from '../TestRun.js';
4
+ export declare const getAllTestRuns: Effect.Effect<readonly TestRun[], Schema.SchemaError | import("effect/sql/SqlError").SqlError, SqlClient.SqlClient>;
5
+ export declare const getAllTestResults: Effect.Effect<readonly {
6
+ readonly id: string;
7
+ readonly hashTestCase: string;
8
+ readonly key: string;
9
+ readonly input: Schema.Json;
10
+ readonly result: Schema.Json;
11
+ readonly expected: Schema.Json;
12
+ readonly label: "FN" | "FP" | "TN" | "TP";
13
+ }[], Schema.SchemaError | import("effect/sql/SqlError").SqlError, SqlClient.SqlClient>;
14
+ export declare const getAllTestRunResults: Effect.Effect<readonly {
15
+ readonly testRun: number;
16
+ readonly testResult: string;
17
+ readonly ordering: number;
18
+ readonly resultOrdering: number;
19
+ readonly timeMillis: number;
20
+ readonly tags: readonly string[];
21
+ }[], Schema.SchemaError | import("effect/sql/SqlError").SqlError, SqlClient.SqlClient>;
22
+ //# sourceMappingURL=test-repository-fixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-repository-fixtures.d.ts","sourceRoot":"","sources":["../../../src/internal/test-repository-fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,MAAM,EAAC,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAC;AAErC,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAItC,eAAO,MAAM,cAAc,qHAKzB,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;sFAK5B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;sFAc/B,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { SqliteMigrator } from '@effect/sql-sqlite-node';
2
+ import { Effect } from 'effect';
3
+ import { SqlClient } from 'effect/sql';
4
+ export declare const tables: {
5
+ readonly testResults: 'test-results';
6
+ readonly testRuns: 'test-runs';
7
+ readonly testBaselines: 'test-baselines';
8
+ readonly testRunResults: 'test-run-results';
9
+ };
10
+ export declare const migrate: Effect.Effect<readonly (readonly [id: number, name: string])[], SqliteMigrator.MigrationError | import("effect/sql/SqlError").SqlError, SqlClient.SqlClient>;
11
+ //# sourceMappingURL=test-repository-migrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-repository-migrations.d.ts","sourceRoot":"","sources":["../../../src/internal/test-repository-migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAC;AAErC,eAAO,MAAM,MAAM;aACf,WAAW,EAAE,cAAc;aAC3B,QAAQ,EAAE,WAAW;aACrB,aAAa,EAAE,gBAAgB;aAC/B,cAAc,EAAE,kBAAkB;CAC5B,CAAC;AAEX,eAAO,MAAM,OAAO,8JAqDlB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { Effect, Schema } from 'effect';
2
+ import { SqlClient } from 'effect/sql';
3
+ import type { TestRepositoryShape } from '../Test.repository.js';
4
+ type Collector = Parameters<Parameters<TestRepositoryShape['withStats']>[0]>[0];
5
+ export declare const withStats: <A, E, R>(use: (collector: Collector) => Effect.Effect<A, E, R>) => Effect.Effect<A, E | Schema.SchemaError | import("effect/sql/SqlError").SqlError, R | SqlClient.SqlClient>;
6
+ export {};
7
+ //# sourceMappingURL=test-result-stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-result-stats.d.ts","sourceRoot":"","sources":["../../../src/internal/test-result-stats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAe,MAAM,EAAC,MAAM,QAAQ,CAAC;AACnD,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAC;AAGrC,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAmB/D,KAAK,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhF,eAAO,MAAM,SAAS,GAAgC,CAAC,EAAE,CAAC,EAAE,CAAC,mBACxC,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,+GAiFvD,CAAC"}
@@ -2,7 +2,6 @@ import { Option, Schema } from 'effect';
2
2
  import * as internal from './internal/Classify.js';
3
3
  export const LabelSchema = internal.LabelSchema;
4
4
  export const values = internal.values;
5
- export const defaultIsEqual = internal.defaultIsEqual;
6
5
  export const defaultIsNil = internal.defaultIsNil;
7
6
  export const makeClassify = internal.makeClassify;
8
7
  /** Counts selected results; timing statistics count each selected case once. */
@@ -1 +1 @@
1
- {"version":3,"file":"Classify.js","names":["Option","Schema","internal","LabelSchema","values","defaultIsEqual","defaultIsNil","makeClassify","Stats","Class","TP","Finite","TN","FP","FN","total","testCases","Int","precision","recall","timeMin","timeMax","timeMedian","timeMean","empty","none"],"sources":["../../src/Classify.ts"],"sourcesContent":[null],"mappings":"AAAA,SAAQA,MAAM,EAAEC,MAAM,QAAO,QAAQ;AAErC,OAAO,KAAKC,QAAQ,MAAM,wBAAwB;AAElD,OAAO,MAAMC,WAAW,GAAGD,QAAQ,CAACC,WAAW;AAG/C,OAAO,MAAMC,MAAM,GAAGF,QAAQ,CAACE,MAAM;AACrC,OAAO,MAAMC,cAAc,GAAGH,QAAQ,CAACG,cAAc;AACrD,OAAO,MAAMC,YAAY,GAAGJ,QAAQ,CAACI,YAAY;AACjD,OAAO,MAAMC,YAAY,GAAGL,QAAQ,CAACK,YAAY;AAIjD;AACA,OAAM,MAAOC,KAAM,sBAAQP,MAAM,CAACQ,KAAK,CAAQ,OAAO,CAAC,CAAC;EACpDC,EAAE,EAAET,MAAM,CAACU,MAAM;EACjBC,EAAE,EAAEX,MAAM,CAACU,MAAM;EACjBE,EAAE,EAAEZ,MAAM,CAACU,MAAM;EACjBG,EAAE,EAAEb,MAAM,CAACU,MAAM;EACjB;EACAI,KAAK,EAAEd,MAAM,CAACU,MAAM;EACpB;EACAK,SAAS,EAAEf,MAAM,CAACgB,GAAG;EACrBC,SAAS,EAAEjB,MAAM,CAACU,MAAM;EACxBQ,MAAM,EAAElB,MAAM,CAACU,MAAM;EACrBS,OAAO,eAAEnB,MAAM,CAACD,MAAM,CAACC,MAAM,CAACU,MAAM,CAAC;EACrCU,OAAO,eAAEpB,MAAM,CAACD,MAAM,CAACC,MAAM,CAACU,MAAM,CAAC;EACrCW,UAAU,eAAErB,MAAM,CAACD,MAAM,CAACC,MAAM,CAACU,MAAM,CAAC;EACxCY,QAAQ,eAAEtB,MAAM,CAACD,MAAM,CAACC,MAAM,CAACU,MAAM;CACxC,CAAC;EACE,OAAOa,KAAKA,CAAA;IACR,OAAO,IAAIhB,KAAK,CAAC;MACbE,EAAE,EAAE,CAAC;MACLE,EAAE,EAAE,CAAC;MACLC,EAAE,EAAE,CAAC;MACLC,EAAE,EAAE,CAAC;MACLC,KAAK,EAAE,CAAC;MACRC,SAAS,EAAE,CAAC;MACZE,SAAS,EAAE,CAAC;MACZC,MAAM,EAAE,CAAC;MACTC,OAAO,EAAEpB,MAAM,CAACyB,IAAI,EAAE;MACtBJ,OAAO,EAAErB,MAAM,CAACyB,IAAI,EAAE;MACtBH,UAAU,EAAEtB,MAAM,CAACyB,IAAI,EAAE;MACzBF,QAAQ,EAAEvB,MAAM,CAACyB,IAAI;KACxB,CAAC;EACN","ignoreList":[]}
1
+ {"version":3,"file":"Classify.js","names":["Option","Schema","internal","LabelSchema","values","defaultIsNil","makeClassify","Stats","Class","TP","Finite","TN","FP","FN","total","testCases","Int","precision","recall","timeMin","timeMax","timeMedian","timeMean","empty","none"],"sources":["../../src/Classify.ts"],"sourcesContent":[null],"mappings":"AAAA,SAAQA,MAAM,EAAEC,MAAM,QAAO,QAAQ;AAErC,OAAO,KAAKC,QAAQ,MAAM,wBAAwB;AAElD,OAAO,MAAMC,WAAW,GAAGD,QAAQ,CAACC,WAAW;AAG/C,OAAO,MAAMC,MAAM,GAAGF,QAAQ,CAACE,MAAM;AACrC,OAAO,MAAMC,YAAY,GAAGH,QAAQ,CAACG,YAAY;AACjD,OAAO,MAAMC,YAAY,GAAGJ,QAAQ,CAACI,YAAY;AAIjD;AACA,OAAM,MAAOC,KAAM,sBAAQN,MAAM,CAACO,KAAK,CAAQ,OAAO,CAAC,CAAC;EACpDC,EAAE,EAAER,MAAM,CAACS,MAAM;EACjBC,EAAE,EAAEV,MAAM,CAACS,MAAM;EACjBE,EAAE,EAAEX,MAAM,CAACS,MAAM;EACjBG,EAAE,EAAEZ,MAAM,CAACS,MAAM;EACjB;EACAI,KAAK,EAAEb,MAAM,CAACS,MAAM;EACpB;EACAK,SAAS,EAAEd,MAAM,CAACe,GAAG;EACrBC,SAAS,EAAEhB,MAAM,CAACS,MAAM;EACxBQ,MAAM,EAAEjB,MAAM,CAACS,MAAM;EACrBS,OAAO,eAAElB,MAAM,CAACD,MAAM,CAACC,MAAM,CAACS,MAAM,CAAC;EACrCU,OAAO,eAAEnB,MAAM,CAACD,MAAM,CAACC,MAAM,CAACS,MAAM,CAAC;EACrCW,UAAU,eAAEpB,MAAM,CAACD,MAAM,CAACC,MAAM,CAACS,MAAM,CAAC;EACxCY,QAAQ,eAAErB,MAAM,CAACD,MAAM,CAACC,MAAM,CAACS,MAAM;CACxC,CAAC;EACE,OAAOa,KAAKA,CAAA;IACR,OAAO,IAAIhB,KAAK,CAAC;MACbE,EAAE,EAAE,CAAC;MACLE,EAAE,EAAE,CAAC;MACLC,EAAE,EAAE,CAAC;MACLC,EAAE,EAAE,CAAC;MACLC,KAAK,EAAE,CAAC;MACRC,SAAS,EAAE,CAAC;MACZE,SAAS,EAAE,CAAC;MACZC,MAAM,EAAE,CAAC;MACTC,OAAO,EAAEnB,MAAM,CAACwB,IAAI,EAAE;MACtBJ,OAAO,EAAEpB,MAAM,CAACwB,IAAI,EAAE;MACtBH,UAAU,EAAErB,MAAM,CAACwB,IAAI,EAAE;MACzBF,QAAQ,EAAEtB,MAAM,CAACwB,IAAI;KACxB,CAAC;EACN","ignoreList":[]}
@@ -1,34 +1,19 @@
1
- import { ResultLengthMismatch, SqlError } from 'effect/sql/SqlError';
2
1
  import { Schema } from 'effect';
3
- const SqlCause = /*#__PURE__*/Schema.Union([/*#__PURE__*/Schema.instanceOf(SqlError), /*#__PURE__*/Schema.instanceOf(ResultLengthMismatch)]);
4
- export class RepositoryQueryError extends /*#__PURE__*/Schema.TaggedError()('RepositoryQueryError', {
5
- operation: Schema.String,
6
- cause: /*#__PURE__*/Schema.instanceOf(SqlError)
7
- }) {
8
- static fromSql = operation => cause => new RepositoryQueryError({
9
- operation,
10
- cause
11
- });
12
- }
13
- export class RepositoryWriteError extends /*#__PURE__*/Schema.TaggedError()('RepositoryWriteError', {
14
- operation: Schema.String,
15
- cause: SqlCause
16
- }) {
17
- static from = operation => cause => new RepositoryWriteError({
18
- operation,
19
- cause
20
- });
21
- }
22
- export class RepositoryDecodeError extends /*#__PURE__*/Schema.TaggedError()('RepositoryDecodeError', {
23
- operation: Schema.String,
24
- cause: /*#__PURE__*/Schema.instanceOf(Schema.SchemaError)
25
- }) {
26
- static from = operation => cause => new RepositoryDecodeError({
27
- operation,
28
- cause
29
- });
30
- }
2
+ export { TestValueError } from './TestValueError.js';
31
3
  export class TestRunNotCreated extends /*#__PURE__*/Schema.TaggedError()('TestRunNotCreated', {
32
4
  testSuiteName: Schema.String
33
5
  }) {}
6
+ /** A complete saved run is required for this operation. */
7
+ export class TestRunIncomplete extends /*#__PURE__*/Schema.TaggedError()('TestRunIncomplete', {
8
+ testSuiteName: Schema.String,
9
+ testRunId: Schema.Int,
10
+ variant: Schema.String
11
+ }) {}
12
+ export class TestRunNotFound extends /*#__PURE__*/Schema.TaggedError()('TestRunNotFound', {
13
+ testRunId: Schema.Int
14
+ }) {}
15
+ export class TestBaselineNotFound extends /*#__PURE__*/Schema.TaggedError()('TestBaselineNotFound', {
16
+ testSuiteName: Schema.String,
17
+ variant: Schema.String
18
+ }) {}
34
19
  //# sourceMappingURL=RepositoryError.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RepositoryError.js","names":["ResultLengthMismatch","SqlError","Schema","SqlCause","Union","instanceOf","RepositoryQueryError","TaggedError","operation","String","cause","fromSql","RepositoryWriteError","from","RepositoryDecodeError","SchemaError","TestRunNotCreated","testSuiteName"],"sources":["../../src/RepositoryError.ts"],"sourcesContent":[null],"mappings":"AAAA,SAAQA,oBAAoB,EAAEC,QAAQ,QAAO,qBAAqB;AAClE,SAAQC,MAAM,QAAO,QAAQ;AAE7B,MAAMC,QAAQ,gBAAGD,MAAM,CAACE,KAAK,CAAC,cAC1BF,MAAM,CAACG,UAAU,CAACJ,QAAQ,CAAC,eAC3BC,MAAM,CAACG,UAAU,CAACL,oBAAoB,CAAC,CAC1C,CAAC;AAEF,OAAM,MAAOM,oBAAqB,sBAAQJ,MAAM,CAACK,WAAW,EAGzD,CAAC,sBAAsB,EAAE;EACxBC,SAAS,EAAEN,MAAM,CAACO,MAAM;EACxBC,KAAK,eAAER,MAAM,CAACG,UAAU,CAACJ,QAAQ;CACpC,CAAC;EACE,OAAOU,OAAO,GAAIH,SAAiB,IAAME,KAAe,IACpD,IAAIJ,oBAAoB,CAAC;IAACE,SAAS;IAAEE;EAAK,CAAC,CAAC;;AAGpD,OAAM,MAAOE,oBAAqB,sBAAQV,MAAM,CAACK,WAAW,EAGzD,CAAC,sBAAsB,EAAE;EAACC,SAAS,EAAEN,MAAM,CAACO,MAAM;EAAEC,KAAK,EAAEP;AAAQ,CAAC,CAAC;EACpE,OAAOU,IAAI,GACNL,SAAiB,IAAME,KAAsC,IAC1D,IAAIE,oBAAoB,CAAC;IAACJ,SAAS;IAAEE;EAAK,CAAC,CAAC;;AAGxD,OAAM,MAAOI,qBAAsB,sBAAQZ,MAAM,CAACK,WAAW,EAG1D,CAAC,uBAAuB,EAAE;EACzBC,SAAS,EAAEN,MAAM,CAACO,MAAM;EACxBC,KAAK,eAAER,MAAM,CAACG,UAAU,CAACH,MAAM,CAACa,WAAW;CAC9C,CAAC;EACE,OAAOF,IAAI,GAAIL,SAAiB,IAAME,KAAyB,IAC3D,IAAII,qBAAqB,CAAC;IAACN,SAAS;IAAEE;EAAK,CAAC,CAAC;;AAGrD,OAAM,MAAOM,iBAAkB,sBAAQd,MAAM,CAACK,WAAW,EAGtD,CAAC,mBAAmB,EAAE;EAACU,aAAa,EAAEf,MAAM,CAACO;AAAM,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"RepositoryError.js","names":["Schema","TestValueError","TestRunNotCreated","TaggedError","testSuiteName","String","TestRunIncomplete","testRunId","Int","variant","TestRunNotFound","TestBaselineNotFound"],"sources":["../../src/RepositoryError.ts"],"sourcesContent":[null],"mappings":"AACA,SAAQA,MAAM,QAAO,QAAQ;AAG7B,SAAQC,cAAc,QAAO,qBAAqB;AAElD,OAAM,MAAOC,iBAAkB,sBAAQF,MAAM,CAACG,WAAW,EAGtD,CAAC,mBAAmB,EAAE;EAACC,aAAa,EAAEJ,MAAM,CAACK;AAAM,CAAC,CAAC;AAExD;AACA,OAAM,MAAOC,iBAAkB,sBAAQN,MAAM,CAACG,WAAW,EAGtD,CAAC,mBAAmB,EAAE;EACrBC,aAAa,EAAEJ,MAAM,CAACK,MAAM;EAC5BE,SAAS,EAAEP,MAAM,CAACQ,GAAG;EACrBC,OAAO,EAAET,MAAM,CAACK;CACnB,CAAC;AAEF,OAAM,MAAOK,eAAgB,sBAAQV,MAAM,CAACG,WAAW,EAGpD,CAAC,iBAAiB,EAAE;EAACI,SAAS,EAAEP,MAAM,CAACQ;AAAG,CAAC,CAAC;AAE/C,OAAM,MAAOG,oBAAqB,sBAAQX,MAAM,CAACG,WAAW,EAGzD,CAAC,sBAAsB,EAAE;EACxBC,aAAa,EAAEJ,MAAM,CAACK,MAAM;EAC5BI,OAAO,EAAET,MAAM,CAACK;CACnB,CAAC","ignoreList":[]}
package/dist/esm/Show.js CHANGED
@@ -1,4 +1,4 @@
1
1
  export { showDiff as diff } from './internal/diff.js';
2
- export { showStats as stats } from './internal/stats.js';
3
- export { showSummary as summarize } from './internal/summarize.js';
2
+ export { showStats as stats, showRunSummaries as runSummaries } from './internal/stats.js';
3
+ export { showSummary as summarize, prepareSummary, prepareComparison } from './internal/summarize.js';
4
4
  //# sourceMappingURL=Show.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Show.js","names":["showDiff","diff","showStats","stats","showSummary","summarize"],"sources":["../../src/Show.ts"],"sourcesContent":[null],"mappings":"AAKA,SAAQA,QAAQ,IAAIC,IAAI,QAAO,oBAAoB;AACnD,SAAQC,SAAS,IAAIC,KAAK,QAAO,qBAAqB;AACtD,SAAQC,WAAW,IAAIC,SAAS,QAAO,yBAAyB","ignoreList":[]}
1
+ {"version":3,"file":"Show.js","names":["showDiff","diff","showStats","stats","showRunSummaries","runSummaries","showSummary","summarize","prepareSummary","prepareComparison"],"sources":["../../src/Show.ts"],"sourcesContent":[null],"mappings":"AAKA,SAAQA,QAAQ,IAAIC,IAAI,QAAO,oBAAoB;AACnD,SACIC,SAAS,IAAIC,KAAK,EAClBC,gBAAgB,IAAIC,YAAY,QAC7B,qBAAqB;AAC5B,SACIC,WAAW,IAAIC,SAAS,EACxBC,cAAc,EACdC,iBAAiB,QACd,yBAAyB","ignoreList":[]}