@creative-introvert/tons-of-tests 2.0.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 +263 -134
  2. package/dist/cjs/Classify.js +6 -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 +41 -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 +305 -109
  21. package/dist/cjs/internal/Test.js.map +1 -1
  22. package/dist/cjs/internal/Test.repository.sqlite.js +266 -304
  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 +37 -3
  28. package/dist/cjs/internal/stats.js.map +1 -1
  29. package/dist/cjs/internal/summarize.js +155 -36
  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 +4 -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 +8 -8
  42. package/dist/dts/Show.d.ts.map +1 -1
  43. package/dist/dts/Test.d.ts +155 -11
  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 +58 -31
  56. package/dist/dts/internal/Test.d.ts.map +1 -1
  57. package/dist/dts/internal/Test.repository.sqlite.d.ts +66 -11
  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 +5 -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 +38 -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 +299 -108
  92. package/dist/esm/internal/Test.js.map +1 -1
  93. package/dist/esm/internal/Test.repository.sqlite.js +265 -301
  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 +35 -2
  99. package/dist/esm/internal/stats.js.map +1 -1
  100. package/dist/esm/internal/summarize.js +155 -35
  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 -56
  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,25 @@
1
+ import { Effect, Schema } from 'effect';
2
+ import { SqlClient } from 'effect/sql';
3
+ import { TestRun } from '../TestRun.js';
4
+ import { TestResultStorage, tables } from './Test.repository.sqlite.js';
5
+ // Tests inspect storage directly; these operations are not part of TestRepository.
6
+ export const getAllTestRuns = /*#__PURE__*/Effect.gen(function* () {
7
+ const sql = yield* SqlClient.SqlClient;
8
+ return yield* Schema.decodeUnknownEffect(Schema.Array(TestRun))(yield* sql`SELECT * FROM ${sql(tables.testRuns)};`);
9
+ });
10
+ export const getAllTestResults = /*#__PURE__*/Effect.gen(function* () {
11
+ const sql = yield* SqlClient.SqlClient;
12
+ return yield* Schema.decodeUnknownEffect(Schema.Array(TestResultStorage))(yield* sql`SELECT * FROM ${sql(tables.testResults)};`);
13
+ });
14
+ export const getAllTestRunResults = /*#__PURE__*/Effect.gen(function* () {
15
+ const sql = yield* SqlClient.SqlClient;
16
+ return yield* Schema.decodeUnknownEffect(Schema.Array(Schema.Struct({
17
+ testRun: Schema.Int,
18
+ testResult: Schema.String,
19
+ ordering: Schema.Int,
20
+ resultOrdering: Schema.Int,
21
+ timeMillis: Schema.Finite,
22
+ tags: Schema.fromJsonString(Schema.Array(Schema.String))
23
+ })))(yield* sql`SELECT * FROM ${sql(tables.testRunResults)};`);
24
+ });
25
+ //# sourceMappingURL=test-repository-fixtures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-repository-fixtures.js","names":["Effect","Schema","SqlClient","TestRun","TestResultStorage","tables","getAllTestRuns","gen","sql","decodeUnknownEffect","Array","testRuns","getAllTestResults","testResults","getAllTestRunResults","Struct","testRun","Int","testResult","String","ordering","resultOrdering","timeMillis","Finite","tags","fromJsonString","testRunResults"],"sources":["../../../src/internal/test-repository-fixtures.ts"],"sourcesContent":[null],"mappings":"AAAA,SAAQA,MAAM,EAAEC,MAAM,QAAO,QAAQ;AACrC,SAAQC,SAAS,QAAO,YAAY;AAEpC,SAAQC,OAAO,QAAO,eAAe;AACrC,SAAQC,iBAAiB,EAAEC,MAAM,QAAO,6BAA6B;AAErE;AACA,OAAO,MAAMC,cAAc,gBAAGN,MAAM,CAACO,GAAG,CAAC,aAAS;EAC9C,MAAMC,GAAG,GAAG,OAAON,SAAS,CAACA,SAAS;EACtC,OAAO,OAAOD,MAAM,CAACQ,mBAAmB,CAACR,MAAM,CAACS,KAAK,CAACP,OAAO,CAAC,CAAC,CAC3D,OAAOK,GAAG,iBAAiBA,GAAG,CAACH,MAAM,CAACM,QAAQ,CAAC,GAAG,CACrD;AACL,CAAC,CAAC;AAEF,OAAO,MAAMC,iBAAiB,gBAAGZ,MAAM,CAACO,GAAG,CAAC,aAAS;EACjD,MAAMC,GAAG,GAAG,OAAON,SAAS,CAACA,SAAS;EACtC,OAAO,OAAOD,MAAM,CAACQ,mBAAmB,CAACR,MAAM,CAACS,KAAK,CAACN,iBAAiB,CAAC,CAAC,CACrE,OAAOI,GAAG,iBAAiBA,GAAG,CAACH,MAAM,CAACQ,WAAW,CAAC,GAAG,CACxD;AACL,CAAC,CAAC;AAEF,OAAO,MAAMC,oBAAoB,gBAAGd,MAAM,CAACO,GAAG,CAAC,aAAS;EACpD,MAAMC,GAAG,GAAG,OAAON,SAAS,CAACA,SAAS;EACtC,OAAO,OAAOD,MAAM,CAACQ,mBAAmB,CACpCR,MAAM,CAACS,KAAK,CACRT,MAAM,CAACc,MAAM,CAAC;IACVC,OAAO,EAAEf,MAAM,CAACgB,GAAG;IACnBC,UAAU,EAAEjB,MAAM,CAACkB,MAAM;IACzBC,QAAQ,EAAEnB,MAAM,CAACgB,GAAG;IACpBI,cAAc,EAAEpB,MAAM,CAACgB,GAAG;IAC1BK,UAAU,EAAErB,MAAM,CAACsB,MAAM;IACzBC,IAAI,EAAEvB,MAAM,CAACwB,cAAc,CAACxB,MAAM,CAACS,KAAK,CAACT,MAAM,CAACkB,MAAM,CAAC;GAC1D,CAAC,CACL,CACJ,CAAC,OAAOX,GAAG,iBAAiBA,GAAG,CAACH,MAAM,CAACqB,cAAc,CAAC,GAAG,CAAC;AAC/D,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,62 @@
1
+ import { SqliteMigrator } from '@effect/sql-sqlite-node';
2
+ import { Effect } from 'effect';
3
+ import { SqlClient } from 'effect/sql';
4
+ export const tables = {
5
+ testResults: 'test-results',
6
+ testRuns: 'test-runs',
7
+ testBaselines: 'test-baselines',
8
+ testRunResults: 'test-run-results'
9
+ };
10
+ export const migrate = /*#__PURE__*/SqliteMigrator.run({
11
+ table: 'tons_of_tests_migrations',
12
+ loader: /*#__PURE__*/SqliteMigrator.fromRecord({
13
+ '001_create_tables': /*#__PURE__*/Effect.gen(function* () {
14
+ const sql = yield* SqlClient.SqlClient;
15
+ yield* sql`
16
+ CREATE TABLE ${sql(tables.testRuns)}(
17
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
18
+ name TEXT NOT NULL,
19
+ variant TEXT NOT NULL,
20
+ state TEXT NOT NULL CHECK (state IN ('Running', 'Complete', 'Failed'))
21
+ );
22
+ `;
23
+ yield* sql`CREATE INDEX idx_run_name_variant_id ON ${sql(tables.testRuns)}(name, variant, id);`;
24
+ yield* sql`
25
+ CREATE TABLE ${sql(tables.testBaselines)}(
26
+ name TEXT NOT NULL,
27
+ variant TEXT NOT NULL,
28
+ testRun INTEGER NOT NULL REFERENCES ${sql(tables.testRuns)}(id),
29
+ PRIMARY KEY (name, variant)
30
+ );
31
+ `;
32
+ yield* sql`
33
+ CREATE TABLE ${sql(tables.testResults)}(
34
+ id TEXT PRIMARY KEY,
35
+ hashTestCase TEXT NOT NULL,
36
+ key TEXT NOT NULL,
37
+ input TEXT,
38
+ result TEXT,
39
+ expected TEXT,
40
+ label TEXT NOT NULL
41
+ );
42
+ `;
43
+ yield* sql`CREATE INDEX idx_tr_case_key ON ${sql(tables.testResults)}(hashTestCase, key);`;
44
+ yield* sql`
45
+ CREATE TABLE ${sql(tables.testRunResults)}(
46
+ testRun INTEGER NOT NULL,
47
+ testResult TEXT NOT NULL,
48
+ ordering INTEGER NOT NULL,
49
+ resultOrdering INTEGER NOT NULL,
50
+ timeMillis REAL NOT NULL,
51
+ tags TEXT NOT NULL,
52
+ FOREIGN KEY (testRun) REFERENCES ${sql(tables.testRuns)}(id),
53
+ FOREIGN KEY (testResult) REFERENCES ${sql(tables.testResults)}(id),
54
+ UNIQUE (testRun, testResult)
55
+ );
56
+ `;
57
+ yield* sql`CREATE INDEX idx_trr_testresult ON ${sql(tables.testRunResults)}(testResult);`;
58
+ yield* sql`CREATE INDEX idx_trr_run_order ON ${sql(tables.testRunResults)}(testRun, ordering, resultOrdering, testResult);`;
59
+ })
60
+ })
61
+ });
62
+ //# sourceMappingURL=test-repository-migrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-repository-migrations.js","names":["SqliteMigrator","Effect","SqlClient","tables","testResults","testRuns","testBaselines","testRunResults","migrate","run","table","loader","fromRecord","gen","sql"],"sources":["../../../src/internal/test-repository-migrations.ts"],"sourcesContent":[null],"mappings":"AAAA,SAAQA,cAAc,QAAO,yBAAyB;AACtD,SAAQC,MAAM,QAAO,QAAQ;AAC7B,SAAQC,SAAS,QAAO,YAAY;AAEpC,OAAO,MAAMC,MAAM,GAAG;EAClBC,WAAW,EAAE,cAAc;EAC3BC,QAAQ,EAAE,WAAW;EACrBC,aAAa,EAAE,gBAAgB;EAC/BC,cAAc,EAAE;CACV;AAEV,OAAO,MAAMC,OAAO,gBAAGR,cAAc,CAACS,GAAG,CAAC;EACtCC,KAAK,EAAE,0BAA0B;EACjCC,MAAM,eAAEX,cAAc,CAACY,UAAU,CAAC;IAC9B,mBAAmB,eAAEX,MAAM,CAACY,GAAG,CAAC,aAAS;MACrC,MAAMC,GAAG,GAAG,OAAOZ,SAAS,CAACA,SAAS;MACtC,OAAOY,GAAG;+BACSA,GAAG,CAACX,MAAM,CAACE,QAAQ,CAAC;;;;;;aAMtC;MACD,OAAOS,GAAG,2CAA2CA,GAAG,CAACX,MAAM,CAACE,QAAQ,CAAC,sBAAsB;MAC/F,OAAOS,GAAG;+BACSA,GAAG,CAACX,MAAM,CAACG,aAAa,CAAC;;;0DAGEQ,GAAG,CAACX,MAAM,CAACE,QAAQ,CAAC;;;aAGjE;MAED,OAAOS,GAAG;+BACSA,GAAG,CAACX,MAAM,CAACC,WAAW,CAAC;;;;;;;;;aASzC;MACD,OAAOU,GAAG,mCAAmCA,GAAG,CAACX,MAAM,CAACC,WAAW,CAAC,sBAAsB;MAE1F,OAAOU,GAAG;+BACSA,GAAG,CAACX,MAAM,CAACI,cAAc,CAAC;;;;;;;uDAOFO,GAAG,CAACX,MAAM,CAACE,QAAQ,CAAC;0DACjBS,GAAG,CAACX,MAAM,CAACC,WAAW,CAAC;;;aAGpE;MACD,OAAOU,GAAG,sCAAsCA,GAAG,CAACX,MAAM,CAACI,cAAc,CAAC,eAAe;MACzF,OAAOO,GAAG,qCAAqCA,GAAG,CAACX,MAAM,CAACI,cAAc,CAAC,kDAAkD;IAC/H,CAAC;GACJ;CACJ,CAAC","ignoreList":[]}
@@ -0,0 +1,83 @@
1
+ import { Effect, Option, Ref, Schema } from 'effect';
2
+ import { SqlClient } from 'effect/sql';
3
+ import { Stats } from '../Classify.js';
4
+ import { precision, recall } from './Classify.js';
5
+ const decodeName = /*#__PURE__*/Schema.decodeUnknownEffect(/*#__PURE__*/Schema.Tuple([/*#__PURE__*/Schema.Struct({
6
+ name: Schema.String
7
+ })]));
8
+ const decodeTimes = /*#__PURE__*/Schema.decodeUnknownEffect(/*#__PURE__*/Schema.Tuple([/*#__PURE__*/Schema.Struct({
9
+ count: Schema.Int,
10
+ mean: /*#__PURE__*/Schema.NullOr(Schema.Finite),
11
+ min: /*#__PURE__*/Schema.NullOr(Schema.Finite),
12
+ max: /*#__PURE__*/Schema.NullOr(Schema.Finite)
13
+ })]));
14
+ const decodeMedian = /*#__PURE__*/Schema.decodeUnknownEffect(/*#__PURE__*/Schema.Array(/*#__PURE__*/Schema.Struct({
15
+ timeMillis: Schema.Finite
16
+ })));
17
+ export const withStats = /*#__PURE__*/Effect.fnUntraced(function* (use) {
18
+ const sql = yield* SqlClient.SqlClient;
19
+ const [{
20
+ name
21
+ }] = yield* decodeName(yield* sql`SELECT 'tots_stats_' || lower(hex(randomblob(16))) AS name;`);
22
+ return yield* Effect.acquireUseRelease(sql`CREATE TEMP TABLE ${sql(name)} (hashTestCase TEXT PRIMARY KEY, timeMillis REAL NOT NULL);`, () => Effect.gen(function* () {
23
+ yield* sql`CREATE INDEX ${sql(`${name}_time`)} ON ${sql(name)} (timeMillis);`;
24
+ const counts = yield* Ref.make({
25
+ TP: 0,
26
+ TN: 0,
27
+ FP: 0,
28
+ FN: 0,
29
+ total: 0
30
+ });
31
+ const add = Effect.fnUntraced(function* (results) {
32
+ for (let offset = 0; offset < results.length; offset += 50) {
33
+ const batch = results.slice(offset, offset + 50);
34
+ yield* sql`
35
+ INSERT INTO ${sql(name)} ${sql.insert(batch.map(({
36
+ hashTestCase,
37
+ timeMillis
38
+ }) => ({
39
+ hashTestCase,
40
+ timeMillis
41
+ })))}
42
+ ON CONFLICT(hashTestCase) DO NOTHING;
43
+ `;
44
+ yield* Ref.update(counts, previous => {
45
+ const next = {
46
+ ...previous
47
+ };
48
+ for (const result of batch) {
49
+ next[result.label]++;
50
+ next.total++;
51
+ }
52
+ return next;
53
+ });
54
+ }
55
+ });
56
+ const stats = Effect.gen(function* () {
57
+ const totals = yield* Ref.get(counts);
58
+ const [times] = yield* decodeTimes(yield* sql`
59
+ SELECT COUNT(*) AS count, AVG(timeMillis) AS mean,
60
+ MIN(timeMillis) AS min, MAX(timeMillis) AS max FROM ${sql(name)};
61
+ `);
62
+ const middle = times.count === 0 ? [] : yield* decodeMedian(yield* sql`
63
+ SELECT timeMillis FROM ${sql(name)} ORDER BY timeMillis
64
+ LIMIT ${2 - times.count % 2} OFFSET ${Math.floor((times.count - 1) / 2)};
65
+ `);
66
+ return new Stats({
67
+ ...totals,
68
+ testCases: times.count,
69
+ precision: precision(totals),
70
+ recall: recall(totals),
71
+ timeMin: Option.fromNullishOr(times.min),
72
+ timeMax: Option.fromNullishOr(times.max),
73
+ timeMean: Option.fromNullishOr(times.mean),
74
+ timeMedian: middle.length === 0 ? Option.none() : Option.some(middle.reduce((sum, row) => sum + row.timeMillis, 0) / middle.length)
75
+ });
76
+ });
77
+ return yield* use({
78
+ add,
79
+ stats
80
+ });
81
+ }), () => sql`DROP TABLE ${sql(name)};`.pipe(Effect.asVoid));
82
+ });
83
+ //# sourceMappingURL=test-result-stats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-result-stats.js","names":["Effect","Option","Ref","Schema","SqlClient","Stats","precision","recall","decodeName","decodeUnknownEffect","Tuple","Struct","name","String","decodeTimes","count","Int","mean","NullOr","Finite","min","max","decodeMedian","Array","timeMillis","withStats","fnUntraced","use","sql","acquireUseRelease","gen","counts","make","TP","TN","FP","FN","total","add","results","offset","length","batch","slice","insert","map","hashTestCase","update","previous","next","result","label","stats","totals","get","times","middle","Math","floor","testCases","timeMin","fromNullishOr","timeMax","timeMean","timeMedian","none","some","reduce","sum","row","pipe","asVoid"],"sources":["../../../src/internal/test-result-stats.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -25,7 +25,7 @@
25
25
  "test-runner",
26
26
  "coverage"
27
27
  ],
28
- "version": "2.0.0",
28
+ "version": "3.0.0-rc.0",
29
29
  "type": "module",
30
30
  "files": [
31
31
  "dist/**/*"
@@ -1,14 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.TestRun = void 0;
7
- var _effect = /*#__PURE__*/require("effect");
8
- class TestRun extends /*#__PURE__*/_effect.Schema.Class('TestRun')({
9
- id: _effect.Schema.Int,
10
- name: _effect.Schema.String,
11
- hash: /*#__PURE__*/_effect.Schema.NullOr(_effect.Schema.String)
12
- }) {}
13
- exports.TestRun = TestRun;
14
- //# sourceMappingURL=Test.repository.types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Test.repository.types.js","names":["_effect","require","TestRun","Schema","Class","id","Int","name","String","hash","NullOr","exports"],"sources":["../../src/Test.repository.types.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,OAAA,gBAAAC,OAAA;AAkBM,MAAOC,OAAQ,sBAAQC,cAAM,CAACC,KAAK,CAAU,SAAS,CAAC,CAAC;EAC1DC,EAAE,EAAEF,cAAM,CAACG,GAAG;EACdC,IAAI,EAAEJ,cAAM,CAACK,MAAM;EACnBC,IAAI,eAAEN,cAAM,CAACO,MAAM,CAACP,cAAM,CAACK,MAAM;CACpC,CAAC;AAAGG,OAAA,CAAAT,OAAA,GAAAA,OAAA","ignoreList":[]}
@@ -1,14 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.split = void 0;
7
- var _effect = /*#__PURE__*/require("effect");
8
- /** An empty tag list is stored as an empty string. */
9
- const split = separator => _effect.Schema.String.pipe(_effect.Schema.decodeTo(_effect.Schema.Array(_effect.Schema.String), _effect.SchemaTransformation.transform({
10
- decode: s => s.length === 0 ? [] : s.split(separator),
11
- encode: xs => xs.join(separator)
12
- })));
13
- exports.split = split;
14
- //# sourceMappingURL=Schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Schema.js","names":["_effect","require","split","separator","Schema","String","pipe","decodeTo","Array","SchemaTransformation","transform","decode","s","length","encode","xs","join","exports"],"sources":["../../../../src/internal/lib/Schema.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,OAAA,gBAAAC,OAAA;AAEA;AACO,MAAMC,KAAK,GACdC,SAAiB,IAEjBC,cAAM,CAACC,MAAM,CAACC,IAAI,CACdF,cAAM,CAACG,QAAQ,CACXH,cAAM,CAACI,KAAK,CAACJ,cAAM,CAACC,MAAM,CAAC,EAC3BI,4BAAoB,CAACC,SAAS,CAAC;EAC3BC,MAAM,EAAGC,CAAC,IACNA,CAAC,CAACC,MAAM,KAAK,CAAC,GAAG,EAAE,GAAGD,CAAC,CAACV,KAAK,CAACC,SAAS,CAAC;EAC5CW,MAAM,EAAEC,EAAE,IAAIA,EAAE,CAACC,IAAI,CAACb,SAAS;CAClC,CAAC,CACL,CACJ;AAACc,OAAA,CAAAf,KAAA,GAAAA,KAAA","ignoreList":[]}
@@ -1,56 +0,0 @@
1
- import { type Effect, type Option, Schema, type Stream } from 'effect';
2
- import type { Label } from './Classify.js';
3
- import type { RepositoryError } from './RepositoryError.js';
4
- import type { TestResult } from './Test.js';
5
- export type TestResultRead = {
6
- id: string;
7
- hashTestCase: string;
8
- ordering: number;
9
- label: Label;
10
- input: string;
11
- result: string;
12
- expected: string;
13
- tags: string;
14
- timeMillis: number;
15
- };
16
- declare const TestRun_base: Schema.Class<TestRun, Schema.Struct<{
17
- readonly id: Schema.Int;
18
- readonly name: Schema.String;
19
- readonly hash: Schema.NullOr<Schema.String>;
20
- }>, {}>;
21
- export declare class TestRun extends TestRun_base {
22
- }
23
- export type TestRunResults = {
24
- testRun: number;
25
- testResult: string;
26
- };
27
- export type TestResultSchemas<I = unknown, O = unknown, T = unknown> = {
28
- input: Schema.Codec<I>;
29
- result: Schema.Codec<O>;
30
- expected: Schema.Codec<T>;
31
- };
32
- export type TestRepositoryShape = {
33
- clearStale: ({ name, keep, }: {
34
- name: string;
35
- keep?: number;
36
- }) => Effect.Effect<void, RepositoryError>;
37
- clearUncommitedTestResults: ({ name, }: {
38
- name: string;
39
- }) => Effect.Effect<void, RepositoryError>;
40
- getTestResultsStream: <I = unknown, O = unknown, T = unknown>(testRun: TestRun, schemas?: TestResultSchemas<I, O, T>) => Stream.Stream<TestResult<I, O, T>, RepositoryError>;
41
- hasResults: (testRun: TestRun) => Effect.Effect<boolean, RepositoryError>;
42
- getAllTestResults: Effect.Effect<readonly TestResult[], RepositoryError>;
43
- getAllTestRuns: Effect.Effect<readonly TestRun[], RepositoryError>;
44
- getAllTestRunResults: Effect.Effect<readonly TestRunResults[], RepositoryError>;
45
- getLastTestRunHash: (name: string) => Effect.Effect<Option.Option<string>, RepositoryError>;
46
- getOrCreateCurrentTestRun: (name: string) => Effect.Effect<TestRun, RepositoryError>;
47
- getPreviousTestRun: (name: string) => Effect.Effect<Option.Option<TestRun>, RepositoryError>;
48
- commitCurrentTestRun: (input: {
49
- name: string;
50
- hash: string;
51
- }) => Effect.Effect<void, RepositoryError>;
52
- insertTestResult: (input: TestResult, testRun: TestRun) => Effect.Effect<void, RepositoryError>;
53
- insertTestResults: (inputs: ReadonlyArray<TestResult>, testRun: TestRun) => Effect.Effect<void, RepositoryError>;
54
- };
55
- export {};
56
- //# sourceMappingURL=Test.repository.types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Test.repository.types.d.ts","sourceRoot":"","sources":["../../src/Test.repository.types.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import { Schema } from 'effect';
2
- /** An empty tag list is stored as an empty string. */
3
- export declare const split: (separator: string) => Schema.Codec<readonly string[], string>;
4
- //# sourceMappingURL=Schema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../../../src/internal/lib/Schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAuB,MAAM,QAAQ,CAAC;AAEpD,sDAAsD;AACtD,eAAO,MAAM,KAAK,cACH,MAAM,KAClB,MAAM,CAAC,KAAK,CAAC,SAAS,MAAM,EAAE,EAAE,MAAM,CAUpC,CAAC"}
@@ -1,7 +0,0 @@
1
- import { Schema } from 'effect';
2
- export class TestRun extends /*#__PURE__*/Schema.Class('TestRun')({
3
- id: Schema.Int,
4
- name: Schema.String,
5
- hash: /*#__PURE__*/Schema.NullOr(Schema.String)
6
- }) {}
7
- //# sourceMappingURL=Test.repository.types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Test.repository.types.js","names":["Schema","TestRun","Class","id","Int","name","String","hash","NullOr"],"sources":["../../src/Test.repository.types.ts"],"sourcesContent":[null],"mappings":"AAAA,SAAkCA,MAAM,QAAoB,QAAQ;AAkBpE,OAAM,MAAOC,OAAQ,sBAAQD,MAAM,CAACE,KAAK,CAAU,SAAS,CAAC,CAAC;EAC1DC,EAAE,EAAEH,MAAM,CAACI,GAAG;EACdC,IAAI,EAAEL,MAAM,CAACM,MAAM;EACnBC,IAAI,eAAEP,MAAM,CAACQ,MAAM,CAACR,MAAM,CAACM,MAAM;CACpC,CAAC","ignoreList":[]}
@@ -1,7 +0,0 @@
1
- import { Schema, SchemaTransformation } from 'effect';
2
- /** An empty tag list is stored as an empty string. */
3
- export const split = separator => Schema.String.pipe(Schema.decodeTo(Schema.Array(Schema.String), SchemaTransformation.transform({
4
- decode: s => s.length === 0 ? [] : s.split(separator),
5
- encode: xs => xs.join(separator)
6
- })));
7
- //# sourceMappingURL=Schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Schema.js","names":["Schema","SchemaTransformation","split","separator","String","pipe","decodeTo","Array","transform","decode","s","length","encode","xs","join"],"sources":["../../../../src/internal/lib/Schema.ts"],"sourcesContent":[null],"mappings":"AAAA,SAAQA,MAAM,EAAEC,oBAAoB,QAAO,QAAQ;AAEnD;AACA,OAAO,MAAMC,KAAK,GACdC,SAAiB,IAEjBH,MAAM,CAACI,MAAM,CAACC,IAAI,CACdL,MAAM,CAACM,QAAQ,CACXN,MAAM,CAACO,KAAK,CAACP,MAAM,CAACI,MAAM,CAAC,EAC3BH,oBAAoB,CAACO,SAAS,CAAC;EAC3BC,MAAM,EAAGC,CAAC,IACNA,CAAC,CAACC,MAAM,KAAK,CAAC,GAAG,EAAE,GAAGD,CAAC,CAACR,KAAK,CAACC,SAAS,CAAC;EAC5CS,MAAM,EAAEC,EAAE,IAAIA,EAAE,CAACC,IAAI,CAACX,SAAS;CAClC,CAAC,CACL,CACJ","ignoreList":[]}