@creative-introvert/tons-of-tests 0.9.1 → 1.1.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 (142) hide show
  1. package/README.md +113 -13
  2. package/dist/cjs/Classify.js +33 -2
  3. package/dist/cjs/Classify.js.map +1 -1
  4. package/dist/cjs/RepositoryError.js +45 -0
  5. package/dist/cjs/RepositoryError.js.map +1 -0
  6. package/dist/cjs/Test.js +2 -1
  7. package/dist/cjs/Test.js.map +1 -1
  8. package/dist/cjs/Test.repository.js +32 -6
  9. package/dist/cjs/Test.repository.js.map +1 -1
  10. package/dist/cjs/Test.repository.types.js +14 -0
  11. package/dist/cjs/Test.repository.types.js.map +1 -0
  12. package/dist/cjs/index.js +1 -1
  13. package/dist/cjs/internal/Classify.js +4 -32
  14. package/dist/cjs/internal/Classify.js.map +1 -1
  15. package/dist/cjs/internal/Classify.spec.js +223 -0
  16. package/dist/cjs/internal/Classify.spec.js.map +1 -0
  17. package/dist/cjs/internal/Test.js +61 -29
  18. package/dist/cjs/internal/Test.js.map +1 -1
  19. package/dist/cjs/internal/Test.repository.sqlite.js +172 -121
  20. package/dist/cjs/internal/Test.repository.sqlite.js.map +1 -1
  21. package/dist/cjs/internal/Test.repository.sqlite.spec.js +263 -170
  22. package/dist/cjs/internal/Test.repository.sqlite.spec.js.map +1 -1
  23. package/dist/cjs/internal/Test.spec.js +205 -0
  24. package/dist/cjs/internal/Test.spec.js.map +1 -0
  25. package/dist/cjs/internal/format-diff.spec.js +22 -16
  26. package/dist/cjs/internal/format-diff.spec.js.map +1 -1
  27. package/dist/cjs/internal/summarize.js.map +1 -1
  28. package/dist/cjs/pack.js.map +1 -1
  29. package/dist/dts/Classify.d.ts +58 -24
  30. package/dist/dts/Classify.d.ts.map +1 -1
  31. package/dist/dts/Error.d.ts +1 -1
  32. package/dist/dts/RepositoryError.d.ts +40 -0
  33. package/dist/dts/RepositoryError.d.ts.map +1 -0
  34. package/dist/dts/Test.d.ts +13 -6
  35. package/dist/dts/Test.d.ts.map +1 -1
  36. package/dist/dts/Test.repository.d.ts +11 -55
  37. package/dist/dts/Test.repository.d.ts.map +1 -1
  38. package/dist/dts/Test.repository.types.d.ts +66 -0
  39. package/dist/dts/Test.repository.types.d.ts.map +1 -0
  40. package/dist/dts/index.d.ts +1 -1
  41. package/dist/dts/index.d.ts.map +1 -1
  42. package/dist/dts/internal/Classify.d.ts +14 -23
  43. package/dist/dts/internal/Classify.d.ts.map +1 -1
  44. package/dist/dts/internal/Classify.spec.d.ts +2 -0
  45. package/dist/dts/internal/Classify.spec.d.ts.map +1 -0
  46. package/dist/dts/internal/Test.d.ts +8 -8
  47. package/dist/dts/internal/Test.d.ts.map +1 -1
  48. package/dist/dts/internal/Test.repository.sqlite.d.ts +9 -12
  49. package/dist/dts/internal/Test.repository.sqlite.d.ts.map +1 -1
  50. package/dist/dts/internal/Test.spec.d.ts +2 -0
  51. package/dist/dts/internal/Test.spec.d.ts.map +1 -0
  52. package/dist/dts/internal/common.d.ts +1 -1
  53. package/dist/dts/internal/common.d.ts.map +1 -1
  54. package/dist/dts/internal/diff.d.ts.map +1 -1
  55. package/dist/dts/internal/format-diff.d.ts.map +1 -1
  56. package/dist/dts/internal/lib/Schema.d.ts.map +1 -1
  57. package/dist/dts/internal/lib/jsondiffpatch/contexts/context.d.ts.map +1 -1
  58. package/dist/dts/internal/lib/jsondiffpatch/contexts/diff.d.ts.map +1 -1
  59. package/dist/dts/internal/lib/jsondiffpatch/contexts/patch.d.ts.map +1 -1
  60. package/dist/dts/internal/lib/jsondiffpatch/contexts/reverse.d.ts.map +1 -1
  61. package/dist/dts/internal/lib/jsondiffpatch/diffpatcher.d.ts.map +1 -1
  62. package/dist/dts/internal/lib/jsondiffpatch/filters/lcs.d.ts.map +1 -1
  63. package/dist/dts/internal/lib/jsondiffpatch/formatters/annotated.d.ts.map +1 -1
  64. package/dist/dts/internal/lib/jsondiffpatch/formatters/base.d.ts +1 -1
  65. package/dist/dts/internal/lib/jsondiffpatch/formatters/base.d.ts.map +1 -1
  66. package/dist/dts/internal/lib/jsondiffpatch/formatters/html.d.ts.map +1 -1
  67. package/dist/dts/internal/lib/jsondiffpatch/formatters/jsonpatch.d.ts.map +1 -1
  68. package/dist/dts/internal/lib/jsondiffpatch/pipe.d.ts.map +1 -1
  69. package/dist/dts/internal/lib/jsondiffpatch/processor.d.ts +1 -1
  70. package/dist/dts/internal/lib/jsondiffpatch/processor.d.ts.map +1 -1
  71. package/dist/dts/internal/pack.d.ts.map +1 -1
  72. package/dist/dts/internal/stats.d.ts +1 -1
  73. package/dist/dts/internal/stats.d.ts.map +1 -1
  74. package/dist/dts/internal/summarize.d.ts +2 -2
  75. package/dist/dts/internal/summarize.d.ts.map +1 -1
  76. package/dist/esm/Classify.js +53 -3
  77. package/dist/esm/Classify.js.map +1 -1
  78. package/dist/esm/DisplayConfig.js +20 -1
  79. package/dist/esm/DisplayConfig.js.map +1 -1
  80. package/dist/esm/Error.js.map +1 -1
  81. package/dist/esm/RepositoryError.js +45 -0
  82. package/dist/esm/RepositoryError.js.map +1 -0
  83. package/dist/esm/Test.js +2 -1
  84. package/dist/esm/Test.js.map +1 -1
  85. package/dist/esm/Test.repository.js +52 -7
  86. package/dist/esm/Test.repository.js.map +1 -1
  87. package/dist/esm/Test.repository.types.js +14 -0
  88. package/dist/esm/Test.repository.types.js.map +1 -0
  89. package/dist/esm/index.js +21 -2
  90. package/dist/esm/index.js.map +1 -1
  91. package/dist/esm/internal/Classify.js +4 -32
  92. package/dist/esm/internal/Classify.js.map +1 -1
  93. package/dist/esm/internal/Classify.spec.js +223 -0
  94. package/dist/esm/internal/Classify.spec.js.map +1 -0
  95. package/dist/esm/internal/Test.js +61 -29
  96. package/dist/esm/internal/Test.js.map +1 -1
  97. package/dist/esm/internal/Test.repository.sqlite.js +192 -122
  98. package/dist/esm/internal/Test.repository.sqlite.js.map +1 -1
  99. package/dist/esm/internal/Test.repository.sqlite.spec.js +283 -171
  100. package/dist/esm/internal/Test.repository.sqlite.spec.js.map +1 -1
  101. package/dist/esm/internal/Test.spec.js +205 -0
  102. package/dist/esm/internal/Test.spec.js.map +1 -0
  103. package/dist/esm/internal/common.js +5 -1
  104. package/dist/esm/internal/common.js.map +1 -1
  105. package/dist/esm/internal/diff.js +5 -1
  106. package/dist/esm/internal/diff.js.map +1 -1
  107. package/dist/esm/internal/format-diff.js +5 -1
  108. package/dist/esm/internal/format-diff.js.map +1 -1
  109. package/dist/esm/internal/format-diff.spec.js +42 -17
  110. package/dist/esm/internal/format-diff.spec.js.map +1 -1
  111. package/dist/esm/internal/lib/Schema.js.map +1 -1
  112. package/dist/esm/internal/lib/jsondiffpatch/contexts/diff.js +5 -1
  113. package/dist/esm/internal/lib/jsondiffpatch/contexts/diff.js.map +1 -1
  114. package/dist/esm/internal/lib/jsondiffpatch/contexts/patch.js +5 -1
  115. package/dist/esm/internal/lib/jsondiffpatch/contexts/patch.js.map +1 -1
  116. package/dist/esm/internal/lib/jsondiffpatch/contexts/reverse.js +5 -1
  117. package/dist/esm/internal/lib/jsondiffpatch/contexts/reverse.js.map +1 -1
  118. package/dist/esm/internal/lib/jsondiffpatch/diffpatcher.js +25 -2
  119. package/dist/esm/internal/lib/jsondiffpatch/diffpatcher.js.map +1 -1
  120. package/dist/esm/internal/lib/jsondiffpatch/filters/arrays.js +5 -1
  121. package/dist/esm/internal/lib/jsondiffpatch/filters/arrays.js.map +1 -1
  122. package/dist/esm/internal/lib/jsondiffpatch/filters/nested.js +5 -1
  123. package/dist/esm/internal/lib/jsondiffpatch/filters/nested.js.map +1 -1
  124. package/dist/esm/internal/lib/jsondiffpatch/formatters/annotated.js +5 -1
  125. package/dist/esm/internal/lib/jsondiffpatch/formatters/annotated.js.map +1 -1
  126. package/dist/esm/internal/lib/jsondiffpatch/formatters/html.js +5 -1
  127. package/dist/esm/internal/lib/jsondiffpatch/formatters/html.js.map +1 -1
  128. package/dist/esm/internal/lib/jsondiffpatch/formatters/jsonpatch.js +5 -1
  129. package/dist/esm/internal/lib/jsondiffpatch/formatters/jsonpatch.js.map +1 -1
  130. package/dist/esm/internal/lib/jsondiffpatch/index.js +5 -1
  131. package/dist/esm/internal/lib/jsondiffpatch/index.js.map +1 -1
  132. package/dist/esm/internal/lib/jsondiffpatch/with-text-diffs.js +5 -1
  133. package/dist/esm/internal/lib/jsondiffpatch/with-text-diffs.js.map +1 -1
  134. package/dist/esm/internal/pack.js +20 -1
  135. package/dist/esm/internal/pack.js.map +1 -1
  136. package/dist/esm/internal/stats.js +5 -1
  137. package/dist/esm/internal/stats.js.map +1 -1
  138. package/dist/esm/internal/summarize.js +5 -1
  139. package/dist/esm/internal/summarize.js.map +1 -1
  140. package/dist/esm/pack.js +20 -1
  141. package/dist/esm/pack.js.map +1 -1
  142. package/package.json +6 -6
@@ -3,13 +3,40 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.tables = exports.makeSqliteLiveLayer = exports.TestRepository = exports.SqliteTestLayer = exports.LiveLayer = void 0;
7
- var Sql = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@effect/sql"));
8
- var Sqlite = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@effect/sql-sqlite-node"));
6
+ Object.defineProperty(exports, "TestRepository", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _TestRepository.TestRepository;
10
+ }
11
+ });
12
+ exports.tables = exports.makeTestRepository = void 0;
13
+ var SqlClient = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@effect/sql/SqlClient"));
9
14
  var _effect = /*#__PURE__*/require("effect");
15
+ var _TestRepository = /*#__PURE__*/require("../Test.repository.js");
16
+ var _TestRepositoryTypes = /*#__PURE__*/require("../Test.repository.types.js");
17
+ var _RepositoryError = /*#__PURE__*/require("../RepositoryError.js");
10
18
  var _Classify = /*#__PURE__*/require("./Classify.js");
11
19
  var _Schema = /*#__PURE__*/require("./lib/Schema.js");
12
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
20
+ function _interopRequireWildcard(e, t) {
21
+ if ("function" == typeof WeakMap) var r = new WeakMap(),
22
+ n = new WeakMap();
23
+ return (_interopRequireWildcard = function (e, t) {
24
+ if (!t && e && e.__esModule) return e;
25
+ var o,
26
+ i,
27
+ f = {
28
+ __proto__: null,
29
+ default: e
30
+ };
31
+ if (null === e || "object" != typeof e && "function" != typeof e) return f;
32
+ if (o = t ? n : r) {
33
+ if (o.has(e)) return o.get(e);
34
+ o.set(e, f);
35
+ }
36
+ for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]);
37
+ return f;
38
+ })(e, t);
39
+ }
13
40
  const tables = exports.tables = {
14
41
  testResults: 'test-results',
15
42
  testRuns: 'test-runs',
@@ -26,13 +53,7 @@ const TestResultWriteSchema = /*#__PURE__*/_effect.Schema.Struct({
26
53
  tags: /*#__PURE__*/(0, _Schema.split)(','),
27
54
  timeMillis: _effect.Schema.Number
28
55
  });
29
- const TestResultsSchema = /*#__PURE__*/TestResultWriteSchema.pipe(_effect.Schema.Array);
30
- const TestRunReadSchema = /*#__PURE__*/_effect.Schema.Struct({
31
- id: _effect.Schema.Int,
32
- name: _effect.Schema.String,
33
- // TODO: Is this a hash, or uuid?
34
- hash: /*#__PURE__*/_effect.Schema.String.pipe(_effect.Schema.NullOr)
35
- });
56
+ const TestResultsSchema = /*#__PURE__*/_effect.Schema.Array(TestResultWriteSchema);
36
57
  const CountSchema = /*#__PURE__*/_effect.Schema.Tuple(_effect.Schema.Struct({
37
58
  count: _effect.Schema.Int
38
59
  })).pipe(/*#__PURE__*/_effect.Schema.transform(_effect.Schema.Int, {
@@ -43,29 +64,29 @@ const CountSchema = /*#__PURE__*/_effect.Schema.Tuple(_effect.Schema.Struct({
43
64
  count
44
65
  }]
45
66
  }));
46
- const TestRunsReadSchema = /*#__PURE__*/TestRunReadSchema.pipe(_effect.Schema.Array);
47
- const CurrentTestRunSchema = /*#__PURE__*/_effect.Schema.Tuple(TestRunReadSchema).pipe(/*#__PURE__*/_effect.Schema.transform(TestRunReadSchema, {
48
- encode: _ => [_],
49
- decode: ([_]) => _
50
- }));
51
- const TestRunResultsSchema = /*#__PURE__*/_effect.Schema.Struct({
67
+ const TestRunsReadSchema = /*#__PURE__*/_effect.Schema.Array(_TestRepositoryTypes.TestRun);
68
+ const TestRunResultsSchema = /*#__PURE__*/_effect.Schema.Array(/*#__PURE__*/_effect.Schema.Struct({
52
69
  testRun: _effect.Schema.Int,
53
70
  testResult: _effect.Schema.String
54
- }).pipe(_effect.Schema.Array);
55
- // FIXME: Effect.tag
56
- const TestRepository = exports.TestRepository = /*#__PURE__*/_effect.Context.GenericTag('TestRunRepository');
57
- const makeTestRepository = /*#__PURE__*/_effect.Effect.gen(function* () {
58
- const sql = yield* Sql.SqlClient.SqlClient;
71
+ }));
72
+ const makeTestRepository = exports.makeTestRepository = /*#__PURE__*/_effect.Effect.gen(function* () {
73
+ const sql = yield* SqlClient.SqlClient;
59
74
  yield* sql`PRAGMA auto_vacuum = FULL;`;
60
75
  yield* sql`
61
76
  CREATE TABLE IF NOT EXISTS ${sql(tables.testRuns)}(
62
77
  id INTEGER PRIMARY KEY AUTOINCREMENT,
63
78
  name TEXT NOT NULL,
64
- hash TEXT,
65
- UNIQUE (id, name, hash)
79
+ hash TEXT
66
80
  );
67
81
  `;
68
82
  yield* sql`CREATE INDEX IF NOT EXISTS idx_name_hash ON ${sql(tables.testRuns)}(name, hash)`;
83
+ // At most one "current" (hash IS NULL) row per suite name. Partial index
84
+ // so committed rows are unaffected.
85
+ yield* sql`
86
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_current_per_name
87
+ ON ${sql(tables.testRuns)}(name)
88
+ WHERE hash IS NULL;
89
+ `;
69
90
  yield* sql`
70
91
  CREATE TABLE IF NOT EXISTS ${sql(tables.testResults)}(
71
92
  id TEXT PRIMARY KEY,
@@ -88,42 +109,82 @@ const makeTestRepository = /*#__PURE__*/_effect.Effect.gen(function* () {
88
109
  UNIQUE (testRun, testResult)
89
110
  );
90
111
  `;
91
- /** Assumes that a `TestRun` with hash=null exists. */
92
- const insertTestResult = (testResult, name) => sql.withTransaction(_effect.Effect.gen(function* () {
93
- const encoded = yield* _effect.Schema.encode(TestResultWriteSchema)(testResult);
94
- yield* sql`
95
- INSERT INTO ${sql(tables.testResults)}
96
- ${sql.insert(encoded)}
97
- ON CONFLICT(id) DO NOTHING;
98
- `;
99
- yield* sql`
100
- INSERT INTO ${sql(tables.testRunResults)}
101
- VALUES (
102
- (
103
- SELECT id FROM ${sql(tables.testRuns)}
104
- WHERE hash IS NULL AND name = ${name}
105
- ),
106
- ${encoded.id}
107
- )
108
- ON CONFLICT(testRun, testResult) DO NOTHING;
109
- `;
110
- }));
111
- const getTestResultsStream = testRun => _effect.Effect.gen(function* () {
112
- const raw = yield* sql`
113
- SELECT res.* FROM ${sql(tables.testResults)} res
114
- JOIN ${sql(tables.testRunResults)} runres ON res.id = runres.testResult
115
- JOIN ${sql(tables.testRuns)} runs ON runs.id = runres.testRun
116
- WHERE runs.id = ${testRun.id}
117
- ORDER BY ordering ASC;
118
- `;
119
- return yield* _effect.Schema.decode(TestResultsSchema)(raw);
120
- }).pipe(_effect.Stream.fromIterableEffect);
112
+ // Lookup by the junction's `testResult` column: the existing
113
+ // UNIQUE(testRun, testResult) index is keyed on testRun first, so orphan
114
+ // cleanup (`... NOT IN (SELECT testResult ...)`) and stream joins
115
+ // (`res.id = runres.testResult`) would otherwise full-scan the junction.
116
+ yield* sql`CREATE INDEX IF NOT EXISTS idx_trr_testresult ON ${sql(tables.testRunResults)}(testResult)`;
117
+ yield* sql`CREATE INDEX IF NOT EXISTS idx_tr_hashtestcase ON ${sql(tables.testResults)}(hashTestCase)`;
118
+ // SQLite's default SQLITE_MAX_VARIABLE_NUMBER is 999; testResults has 9
119
+ // columns and junction rows 2, so 50 rows stays well under the limit.
120
+ const INSERT_BATCH_SIZE = 50;
121
+ const insertTestResults = (testResults, testRun) => sql.withTransaction(_effect.Effect.gen(function* () {
122
+ if (testResults.length === 0) return;
123
+ const encoded = yield* _effect.Effect.forEach(testResults, _ => _effect.Schema.encode(TestResultWriteSchema)(_).pipe(_effect.Effect.mapError(_RepositoryError.RepositoryDecodeError.from('insertTestResults'))));
124
+ for (let i = 0; i < encoded.length; i += INSERT_BATCH_SIZE) {
125
+ const chunk = encoded.slice(i, i + INSERT_BATCH_SIZE);
126
+ yield* sql`
127
+ INSERT INTO ${sql(tables.testResults)}
128
+ ${sql.insert(chunk)}
129
+ ON CONFLICT(id) DO NOTHING;
130
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryWriteError.from('insertTestResults')));
131
+ }
132
+ // Junction rows reference the resolved testRun.id directly,
133
+ // so no correlated subquery.
134
+ const junction = encoded.map(_ => ({
135
+ testRun: testRun.id,
136
+ testResult: _.id
137
+ }));
138
+ for (let i = 0; i < junction.length; i += INSERT_BATCH_SIZE) {
139
+ const chunk = junction.slice(i, i + INSERT_BATCH_SIZE);
140
+ yield* sql`
141
+ INSERT INTO ${sql(tables.testRunResults)}
142
+ ${sql.insert(chunk)}
143
+ ON CONFLICT(testRun, testResult) DO NOTHING;
144
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryWriteError.from('insertTestResults')));
145
+ }
146
+ })).pipe(_effect.Effect.catchTag('SqlError', e => _effect.Effect.fail(_RepositoryError.RepositoryWriteError.from('insertTestResults')(e))));
147
+ const insertTestResult = (testResult, testRun) => insertTestResults([testResult], testRun);
148
+ const makeTestResultSchema = schemas => {
149
+ const input = schemas?.input ?? _effect.Schema.Unknown;
150
+ const result = schemas?.result ?? _effect.Schema.Unknown;
151
+ const expected = schemas?.expected ?? _effect.Schema.Unknown;
152
+ return _effect.Schema.Struct({
153
+ id: _effect.Schema.String,
154
+ hashTestCase: _effect.Schema.String,
155
+ ordering: _effect.Schema.Int,
156
+ input: _effect.Schema.parseJson(input),
157
+ result: _effect.Schema.parseJson(result),
158
+ expected: _effect.Schema.parseJson(expected),
159
+ label: _Classify.LabelSchema,
160
+ tags: (0, _Schema.split)(','),
161
+ timeMillis: _effect.Schema.Number
162
+ });
163
+ };
164
+ const getTestResultsStream = (testRun, schemas) => {
165
+ const RowSchema = makeTestResultSchema(schemas);
166
+ const RowsSchema = _effect.Schema.Array(RowSchema);
167
+ // better-sqlite3 is synchronous and doesn't expose a cursor, so the
168
+ // full result set is materialised before emission. Decoding once in
169
+ // bulk avoids fiber-per-row overhead from `Stream.mapEffect`.
170
+ return _effect.Stream.unwrap(_effect.Effect.gen(function* () {
171
+ const rows = yield* sql`
172
+ SELECT res.* FROM ${sql(tables.testResults)} res
173
+ JOIN ${sql(tables.testRunResults)} runres ON res.id = runres.testResult
174
+ JOIN ${sql(tables.testRuns)} runs ON runs.id = runres.testRun
175
+ WHERE runs.id = ${testRun.id}
176
+ ORDER BY ordering ASC;
177
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryQueryError.fromSql('getTestResultsStream')));
178
+ const decoded = yield* _effect.Schema.decodeUnknown(RowsSchema)(rows).pipe(_effect.Effect.mapError(_RepositoryError.RepositoryDecodeError.from('getTestResultsStream')));
179
+ return _effect.Stream.fromIterable(decoded);
180
+ }));
181
+ };
121
182
  const hasResults = testRun => _effect.Effect.gen(function* () {
122
183
  const b = yield* sql`
123
184
  SELECT COUNT(*) count FROM ${sql(tables.testRunResults)}
124
185
  WHERE testRun = ${testRun.id};
125
- `;
126
- const r = yield* _effect.Schema.decodeUnknown(CountSchema)(b);
186
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryQueryError.fromSql('hasResults')));
187
+ const r = yield* _effect.Schema.decodeUnknown(CountSchema)(b).pipe(_effect.Effect.mapError(_RepositoryError.RepositoryDecodeError.from('hasResults')));
127
188
  return r > 0;
128
189
  });
129
190
  const getPreviousTestRun = name => _effect.Effect.gen(function* () {
@@ -132,66 +193,75 @@ const makeTestRepository = /*#__PURE__*/_effect.Effect.gen(function* () {
132
193
  WHERE hash IS NOT NULL AND name = ${name}
133
194
  ORDER BY id DESC
134
195
  LIMIT 1;
135
- `;
136
- const p = yield* _effect.Schema.decode(TestRunsReadSchema)(r);
196
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryQueryError.fromSql('getPreviousTestRun')));
197
+ const p = yield* _effect.Schema.decodeUnknown(TestRunsReadSchema)(r).pipe(_effect.Effect.mapError(_RepositoryError.RepositoryDecodeError.from('getPreviousTestRun')));
137
198
  return _effect.Array.head(p);
138
199
  });
139
200
  const getAllTestRuns = _effect.Effect.gen(function* () {
140
201
  const results = yield* sql`
141
- SELECT * from ${sql(tables.testRuns)};
142
- `;
143
- return yield* _effect.Schema.decode(TestRunsReadSchema)(results);
202
+ SELECT * from ${sql(tables.testRuns)};
203
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryQueryError.fromSql('getAllTestRuns')));
204
+ return yield* _effect.Schema.decodeUnknown(TestRunsReadSchema)(results).pipe(_effect.Effect.mapError(_RepositoryError.RepositoryDecodeError.from('getAllTestRuns')));
144
205
  });
145
206
  const getAllTestRunResults = _effect.Effect.gen(function* () {
146
207
  const results = yield* sql`
147
- SELECT * from ${sql(tables.testRunResults)};
148
- `;
149
- return yield* _effect.Schema.decode(TestRunResultsSchema)(results);
208
+ SELECT * from ${sql(tables.testRunResults)};
209
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryQueryError.fromSql('getAllTestRunResults')));
210
+ return yield* _effect.Schema.decodeUnknown(TestRunResultsSchema)(results).pipe(_effect.Effect.mapError(_RepositoryError.RepositoryDecodeError.from('getAllTestRunResults')));
150
211
  });
151
212
  const getAllTestResults = _effect.Effect.gen(function* () {
152
213
  const results = yield* sql`
153
- SELECT * from ${sql(tables.testResults)};
154
- `;
155
- return yield* _effect.Schema.decode(TestResultsSchema)(results);
214
+ SELECT * from ${sql(tables.testResults)};
215
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryQueryError.fromSql('getAllTestResults')));
216
+ return yield* _effect.Schema.decodeUnknown(TestResultsSchema)(results).pipe(_effect.Effect.mapError(_RepositoryError.RepositoryDecodeError.from('getAllTestResults')));
156
217
  });
157
- const getLastTestRunHash = name => _effect.Effect.gen(function* () {
158
- const current = yield* sql`
159
- SELECT *
160
- FROM ${sql(tables.testRuns)}
161
- WHERE hash IS NOT NULL AND name = ${name}
162
- ORDER BY id DESC
163
- LIMIT 1;
164
- `;
165
- return current;
166
- }).pipe(_effect.Effect.map((0, _effect.flow)(_effect.Array.get(0), _effect.Option.flatMap(_ => _effect.Option.fromNullable(_.hash)))));
167
- const getOrCreateCurrentTestRun = name => _effect.Effect.gen(function* () {
168
- const current = yield* sql`
169
- SELECT *
170
- FROM ${sql(tables.testRuns)}
171
- WHERE hash IS NULL AND name = ${name};
172
- `;
173
- if (current.length === 0) {
174
- return yield* sql`
218
+ const getLastTestRunHash = name => sql`
219
+ SELECT *
220
+ FROM ${sql(tables.testRuns)}
221
+ WHERE hash IS NOT NULL AND name = ${name}
222
+ ORDER BY id DESC
223
+ LIMIT 1;
224
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryQueryError.fromSql('getLastTestRunHash')), _effect.Effect.map((0, _effect.flow)(_effect.Array.get(0), _effect.Option.flatMap(_ => _effect.Option.fromNullable(_.hash)))));
225
+ const getOrCreateCurrentTestRun = name => sql.withTransaction(_effect.Effect.gen(function* () {
226
+ const currentRaw = yield* sql`
227
+ SELECT *
228
+ FROM ${sql(tables.testRuns)}
229
+ WHERE hash IS NULL AND name = ${name}
230
+ ORDER BY id DESC
231
+ LIMIT 1;
232
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryQueryError.fromSql('getOrCreateCurrentTestRun')));
233
+ const current = yield* _effect.Schema.decodeUnknown(TestRunsReadSchema)(currentRaw).pipe(_effect.Effect.mapError(_RepositoryError.RepositoryDecodeError.from('getOrCreateCurrentTestRun')));
234
+ const existing = _effect.Array.head(current);
235
+ if (_effect.Option.isSome(existing)) {
236
+ return existing.value;
237
+ }
238
+ const insertedRaw = yield* sql`
175
239
  INSERT INTO ${sql(tables.testRuns)}
176
240
  ${sql.insert({
177
- name
178
- })}
241
+ name
242
+ })}
179
243
  RETURNING *;
180
- `;
181
- }
182
- return current;
183
- }).pipe(_effect.Effect.map((0, _effect.flow)(_effect.Array.head, _effect.Option.getOrThrow)));
244
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryWriteError.from('getOrCreateCurrentTestRun')));
245
+ const inserted = yield* _effect.Schema.decodeUnknown(TestRunsReadSchema)(insertedRaw).pipe(_effect.Effect.mapError(_RepositoryError.RepositoryDecodeError.from('getOrCreateCurrentTestRun')));
246
+ return yield* _effect.Array.head(inserted).pipe(_effect.Option.match({
247
+ onNone: () => _effect.Effect.fail(new _RepositoryError.TestRunNotCreated({
248
+ name
249
+ })),
250
+ onSome: _effect.Effect.succeed
251
+ }));
252
+ })).pipe(_effect.Effect.catchTag('SqlError', e => _effect.Effect.fail(_RepositoryError.RepositoryQueryError.fromSql('getOrCreateCurrentTestRun')(e))));
184
253
  const clearStale = ({
185
254
  name,
186
255
  keep = 1
187
256
  }) => sql.withTransaction(_effect.Effect.gen(function* () {
188
- const staleTestRuns = yield* _effect.Schema.decode(TestRunsReadSchema)(yield* sql`
189
- SELECT *
190
- FROM ${sql(tables.testRuns)}
191
- WHERE hash IS NOT NULL AND name = ${name}
192
- ORDER BY id DESC
193
- LIMIT -1 OFFSET ${keep};
194
- `);
257
+ const raw = yield* sql`
258
+ SELECT *
259
+ FROM ${sql(tables.testRuns)}
260
+ WHERE hash IS NOT NULL AND name = ${name}
261
+ ORDER BY id DESC
262
+ LIMIT -1 OFFSET ${keep};
263
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryQueryError.fromSql('clearStale')));
264
+ const staleTestRuns = yield* _effect.Schema.decodeUnknown(TestRunsReadSchema)(raw).pipe(_effect.Effect.mapError(_RepositoryError.RepositoryDecodeError.from('clearStale')));
195
265
  if (staleTestRuns.length === 0) {
196
266
  return;
197
267
  }
@@ -199,38 +269,45 @@ const makeTestRepository = /*#__PURE__*/_effect.Effect.gen(function* () {
199
269
  yield* sql`
200
270
  DELETE FROM ${sql(tables.testRunResults)}
201
271
  WHERE testRun IN ${sql.in(ids)};
202
- `;
272
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryWriteError.from('clearStale')));
203
273
  yield* sql`
204
274
  DELETE FROM ${sql(tables.testRuns)}
205
275
  WHERE id IN ${sql.in(ids)};
206
- `;
276
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryWriteError.from('clearStale')));
207
277
  yield* sql`
208
278
  DELETE FROM ${sql(tables.testResults)}
209
279
  WHERE id NOT IN (
210
280
  SELECT DISTINCT testResult FROM ${sql(tables.testRunResults)}
211
281
  );
212
- `;
282
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryWriteError.from('clearStale')));
213
283
  yield* _effect.Console.log('Cleared stale test runs.');
214
- }));
284
+ })).pipe(_effect.Effect.catchTag('SqlError', e => _effect.Effect.fail(_RepositoryError.RepositoryWriteError.from('clearStale')(e))));
215
285
  const clearUncommitedTestResults = ({
216
286
  name
217
287
  }) => sql.withTransaction(_effect.Effect.gen(function* () {
218
- const currentTestRun = yield* _effect.Schema.decodeUnknown(CurrentTestRunSchema)(yield* sql`
219
- SELECT *
220
- FROM ${sql(tables.testRuns)}
221
- WHERE hash IS NULL AND name = ${name};
222
- `);
288
+ const currentRaw = yield* sql`
289
+ SELECT *
290
+ FROM ${sql(tables.testRuns)}
291
+ WHERE hash IS NULL AND name = ${name}
292
+ ORDER BY id DESC
293
+ LIMIT 1;
294
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryQueryError.fromSql('clearUncommitedTestResults')));
295
+ const current = yield* _effect.Schema.decodeUnknown(TestRunsReadSchema)(currentRaw).pipe(_effect.Effect.mapError(_RepositoryError.RepositoryDecodeError.from('clearUncommitedTestResults')));
296
+ const currentTestRun = _effect.Array.head(current);
297
+ if (_effect.Option.isNone(currentTestRun)) {
298
+ return;
299
+ }
223
300
  yield* sql`
224
301
  DELETE FROM ${sql(tables.testRunResults)}
225
- WHERE testRun = ${currentTestRun.id};
226
- `;
302
+ WHERE testRun = ${currentTestRun.value.id};
303
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryWriteError.from('clearUncommitedTestResults')));
227
304
  yield* sql`
228
305
  DELETE FROM ${sql(tables.testResults)}
229
306
  WHERE id NOT IN (
230
307
  SELECT DISTINCT testResult FROM ${sql(tables.testRunResults)}
231
308
  );
232
- `;
233
- }));
309
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryWriteError.from('clearUncommitedTestResults')));
310
+ })).pipe(_effect.Effect.catchTag('SqlError', e => _effect.Effect.fail(_RepositoryError.RepositoryWriteError.from('clearUncommitedTestResults')(e))));
234
311
  const commitCurrentTestRun = ({
235
312
  name,
236
313
  hash
@@ -242,7 +319,7 @@ const makeTestRepository = /*#__PURE__*/_effect.Effect.gen(function* () {
242
319
  FROM ${sql(tables.testRuns)}
243
320
  WHERE hash IS NULL AND name = ${name}
244
321
  );
245
- `);
322
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryQueryError.fromSql('commitCurrentTestRun')))).pipe(_effect.Effect.mapError(_RepositoryError.RepositoryDecodeError.from('commitCurrentTestRun')));
246
323
  if (currentTestRunResults === 0) {
247
324
  yield* _effect.Console.log('Current run has no test results, not commiting.');
248
325
  return;
@@ -255,13 +332,13 @@ const makeTestRepository = /*#__PURE__*/_effect.Effect.gen(function* () {
255
332
  FROM ${sql(tables.testRuns)}
256
333
  WHERE hash IS NULL AND name = ${name}
257
334
  );
258
- `;
335
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryWriteError.from('commitCurrentTestRun')));
259
336
  yield* sql`
260
337
  INSERT INTO ${sql(tables.testRuns)}
261
338
  ${sql.insert({
262
339
  name
263
340
  })};
264
- `;
341
+ `.pipe(_effect.Effect.mapError(_RepositoryError.RepositoryWriteError.from('commitCurrentTestRun')));
265
342
  yield* _effect.Console.log('Commited test run.');
266
343
  });
267
344
  const service = {
@@ -276,16 +353,9 @@ const makeTestRepository = /*#__PURE__*/_effect.Effect.gen(function* () {
276
353
  getTestResultsStream,
277
354
  hasResults,
278
355
  insertTestResult,
356
+ insertTestResults,
279
357
  getAllTestRunResults
280
358
  };
281
359
  return service;
282
360
  });
283
- const LiveLayer = exports.LiveLayer = /*#__PURE__*/_effect.Layer.effect(TestRepository, makeTestRepository);
284
- const makeSqliteLiveLayer = dbPath => Sqlite.SqliteClient.layer({
285
- filename: dbPath
286
- });
287
- exports.makeSqliteLiveLayer = makeSqliteLiveLayer;
288
- const SqliteTestLayer = exports.SqliteTestLayer = /*#__PURE__*/Sqlite.SqliteClient.layer({
289
- filename: ':memory:'
290
- });
291
361
  //# sourceMappingURL=Test.repository.sqlite.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Test.repository.sqlite.js","names":["Sql","_interopRequireWildcard","require","Sqlite","_effect","_Classify","_Schema","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","tables","exports","testResults","testRuns","testRunResults","TestResultWriteSchema","Schema","Struct","id","String","hashTestCase","ordering","Int","input","parseJson","Unknown","result","expected","label","LabelSchema","tags","split","timeMillis","Number","TestResultsSchema","pipe","Array","TestRunReadSchema","name","hash","NullOr","CountSchema","Tuple","count","transform","decode","encode","TestRunsReadSchema","CurrentTestRunSchema","_","TestRunResultsSchema","testRun","testResult","TestRepository","Context","GenericTag","makeTestRepository","Effect","gen","sql","SqlClient","insertTestResult","withTransaction","encoded","insert","getTestResultsStream","raw","Stream","fromIterableEffect","hasResults","b","decodeUnknown","getPreviousTestRun","p","A","head","getAllTestRuns","results","getAllTestRunResults","getAllTestResults","getLastTestRunHash","current","map","flow","Option","flatMap","fromNullable","getOrCreateCurrentTestRun","length","getOrThrow","clearStale","keep","staleTestRuns","ids","in","Console","log","clearUncommitedTestResults","currentTestRun","commitCurrentTestRun","currentTestRunResults","service","LiveLayer","Layer","effect","makeSqliteLiveLayer","dbPath","SqliteClient","layer","filename","SqliteTestLayer"],"sources":["../../../src/internal/Test.repository.sqlite.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Test.repository.sqlite.js","names":["SqlClient","_interopRequireWildcard","require","_effect","_TestRepository","_TestRepositoryTypes","_RepositoryError","_Classify","_Schema","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","tables","exports","testResults","testRuns","testRunResults","TestResultWriteSchema","Schema","Struct","id","String","hashTestCase","ordering","Int","input","parseJson","Unknown","result","expected","label","LabelSchema","tags","split","timeMillis","Number","TestResultsSchema","Array","CountSchema","Tuple","count","pipe","transform","decode","encode","TestRunsReadSchema","TestRun","TestRunResultsSchema","testRun","testResult","makeTestRepository","Effect","gen","sql","INSERT_BATCH_SIZE","insertTestResults","withTransaction","length","encoded","forEach","_","mapError","RepositoryDecodeError","from","chunk","slice","insert","RepositoryWriteError","junction","map","catchTag","fail","insertTestResult","makeTestResultSchema","schemas","getTestResultsStream","RowSchema","RowsSchema","Stream","unwrap","rows","RepositoryQueryError","fromSql","decoded","decodeUnknown","fromIterable","hasResults","b","getPreviousTestRun","name","p","head","getAllTestRuns","results","getAllTestRunResults","getAllTestResults","getLastTestRunHash","flow","Option","flatMap","fromNullable","hash","getOrCreateCurrentTestRun","currentRaw","current","existing","isSome","value","insertedRaw","inserted","match","onNone","TestRunNotCreated","onSome","succeed","clearStale","keep","raw","staleTestRuns","ids","in","Console","log","clearUncommitedTestResults","currentTestRun","isNone","commitCurrentTestRun","currentTestRunResults","service"],"sources":["../../../src/internal/Test.repository.sqlite.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}