@creative-introvert/tons-of-tests 0.4.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 (266) hide show
  1. package/README.md +273 -0
  2. package/dist/cjs/Classify.js +36 -0
  3. package/dist/cjs/Classify.js.map +1 -0
  4. package/dist/cjs/DisplayConfig.js +34 -0
  5. package/dist/cjs/DisplayConfig.js.map +1 -0
  6. package/dist/cjs/Error.js +35 -0
  7. package/dist/cjs/Error.js.map +1 -0
  8. package/dist/cjs/Show.js +27 -0
  9. package/dist/cjs/Show.js.map +1 -0
  10. package/dist/cjs/Test.js +36 -0
  11. package/dist/cjs/Test.js.map +1 -0
  12. package/dist/cjs/Test.repository.js +37 -0
  13. package/dist/cjs/Test.repository.js.map +1 -0
  14. package/dist/cjs/index.js +51 -0
  15. package/dist/cjs/index.js.map +1 -0
  16. package/dist/cjs/internal/Classify.js +123 -0
  17. package/dist/cjs/internal/Classify.js.map +1 -0
  18. package/dist/cjs/internal/DisplayConfig.js +23 -0
  19. package/dist/cjs/internal/DisplayConfig.js.map +1 -0
  20. package/dist/cjs/internal/Test.js +178 -0
  21. package/dist/cjs/internal/Test.js.map +1 -0
  22. package/dist/cjs/internal/Test.repository.sqlite.js +230 -0
  23. package/dist/cjs/internal/Test.repository.sqlite.js.map +1 -0
  24. package/dist/cjs/internal/Test.repository.sqlite.spec.js +96 -0
  25. package/dist/cjs/internal/Test.repository.sqlite.spec.js.map +1 -0
  26. package/dist/cjs/internal/common.js +70 -0
  27. package/dist/cjs/internal/common.js.map +1 -0
  28. package/dist/cjs/internal/diff.js +86 -0
  29. package/dist/cjs/internal/diff.js.map +1 -0
  30. package/dist/cjs/internal/format-diff.js +162 -0
  31. package/dist/cjs/internal/format-diff.js.map +1 -0
  32. package/dist/cjs/internal/format-diff.spec.js +102 -0
  33. package/dist/cjs/internal/format-diff.spec.js.map +1 -0
  34. package/dist/cjs/internal/lib/Schema.js +39 -0
  35. package/dist/cjs/internal/lib/Schema.js.map +1 -0
  36. package/dist/cjs/internal/lib/jsondiffpatch/clone.js +35 -0
  37. package/dist/cjs/internal/lib/jsondiffpatch/clone.js.map +1 -0
  38. package/dist/cjs/internal/lib/jsondiffpatch/contexts/context.js +47 -0
  39. package/dist/cjs/internal/lib/jsondiffpatch/contexts/context.js.map +1 -0
  40. package/dist/cjs/internal/lib/jsondiffpatch/contexts/diff.js +42 -0
  41. package/dist/cjs/internal/lib/jsondiffpatch/contexts/diff.js.map +1 -0
  42. package/dist/cjs/internal/lib/jsondiffpatch/contexts/patch.js +26 -0
  43. package/dist/cjs/internal/lib/jsondiffpatch/contexts/patch.js.map +1 -0
  44. package/dist/cjs/internal/lib/jsondiffpatch/contexts/reverse.js +25 -0
  45. package/dist/cjs/internal/lib/jsondiffpatch/contexts/reverse.js.map +1 -0
  46. package/dist/cjs/internal/lib/jsondiffpatch/date-reviver.js +18 -0
  47. package/dist/cjs/internal/lib/jsondiffpatch/date-reviver.js.map +1 -0
  48. package/dist/cjs/internal/lib/jsondiffpatch/diffpatcher.js +76 -0
  49. package/dist/cjs/internal/lib/jsondiffpatch/diffpatcher.js.map +1 -0
  50. package/dist/cjs/internal/lib/jsondiffpatch/filters/arrays.js +388 -0
  51. package/dist/cjs/internal/lib/jsondiffpatch/filters/arrays.js.map +1 -0
  52. package/dist/cjs/internal/lib/jsondiffpatch/filters/dates.js +24 -0
  53. package/dist/cjs/internal/lib/jsondiffpatch/filters/dates.js.map +1 -0
  54. package/dist/cjs/internal/lib/jsondiffpatch/filters/lcs.js +78 -0
  55. package/dist/cjs/internal/lib/jsondiffpatch/filters/lcs.js.map +1 -0
  56. package/dist/cjs/internal/lib/jsondiffpatch/filters/nested.js +157 -0
  57. package/dist/cjs/internal/lib/jsondiffpatch/filters/nested.js.map +1 -0
  58. package/dist/cjs/internal/lib/jsondiffpatch/filters/texts.js +123 -0
  59. package/dist/cjs/internal/lib/jsondiffpatch/filters/texts.js.map +1 -0
  60. package/dist/cjs/internal/lib/jsondiffpatch/filters/trivial.js +108 -0
  61. package/dist/cjs/internal/lib/jsondiffpatch/filters/trivial.js.map +1 -0
  62. package/dist/cjs/internal/lib/jsondiffpatch/formatters/annotated.js +169 -0
  63. package/dist/cjs/internal/lib/jsondiffpatch/formatters/annotated.js.map +1 -0
  64. package/dist/cjs/internal/lib/jsondiffpatch/formatters/base.js +198 -0
  65. package/dist/cjs/internal/lib/jsondiffpatch/formatters/base.js.map +1 -0
  66. package/dist/cjs/internal/lib/jsondiffpatch/formatters/html.js +243 -0
  67. package/dist/cjs/internal/lib/jsondiffpatch/formatters/html.js.map +1 -0
  68. package/dist/cjs/internal/lib/jsondiffpatch/formatters/jsonpatch.js +178 -0
  69. package/dist/cjs/internal/lib/jsondiffpatch/formatters/jsonpatch.js.map +1 -0
  70. package/dist/cjs/internal/lib/jsondiffpatch/index.js +65 -0
  71. package/dist/cjs/internal/lib/jsondiffpatch/index.js.map +1 -0
  72. package/dist/cjs/internal/lib/jsondiffpatch/pipe.js +110 -0
  73. package/dist/cjs/internal/lib/jsondiffpatch/pipe.js.map +1 -0
  74. package/dist/cjs/internal/lib/jsondiffpatch/processor.js +71 -0
  75. package/dist/cjs/internal/lib/jsondiffpatch/processor.js.map +1 -0
  76. package/dist/cjs/internal/lib/jsondiffpatch/types.js +6 -0
  77. package/dist/cjs/internal/lib/jsondiffpatch/types.js.map +1 -0
  78. package/dist/cjs/internal/lib/jsondiffpatch/with-text-diffs.js +92 -0
  79. package/dist/cjs/internal/lib/jsondiffpatch/with-text-diffs.js.map +1 -0
  80. package/dist/cjs/internal/pack.js +81 -0
  81. package/dist/cjs/internal/pack.js.map +1 -0
  82. package/dist/cjs/internal/stats.js +144 -0
  83. package/dist/cjs/internal/stats.js.map +1 -0
  84. package/dist/cjs/internal/summarize.js +173 -0
  85. package/dist/cjs/internal/summarize.js.map +1 -0
  86. package/dist/cjs/pack.js +33 -0
  87. package/dist/cjs/pack.js.map +1 -0
  88. package/dist/cjs/prelude.js +95 -0
  89. package/dist/cjs/prelude.js.map +1 -0
  90. package/dist/dts/Classify.d.ts +20 -0
  91. package/dist/dts/Classify.d.ts.map +1 -0
  92. package/dist/dts/DisplayConfig.d.ts +19 -0
  93. package/dist/dts/DisplayConfig.d.ts.map +1 -0
  94. package/dist/dts/Error.d.ts +10 -0
  95. package/dist/dts/Error.d.ts.map +1 -0
  96. package/dist/dts/Show.d.ts +37 -0
  97. package/dist/dts/Show.d.ts.map +1 -0
  98. package/dist/dts/Test.d.ts +48 -0
  99. package/dist/dts/Test.d.ts.map +1 -0
  100. package/dist/dts/Test.repository.d.ts +40 -0
  101. package/dist/dts/Test.repository.d.ts.map +1 -0
  102. package/dist/dts/index.d.ts +8 -0
  103. package/dist/dts/index.d.ts.map +1 -0
  104. package/dist/dts/internal/Classify.d.ts +34 -0
  105. package/dist/dts/internal/Classify.d.ts.map +1 -0
  106. package/dist/dts/internal/DisplayConfig.d.ts +3 -0
  107. package/dist/dts/internal/DisplayConfig.d.ts.map +1 -0
  108. package/dist/dts/internal/Test.d.ts +39 -0
  109. package/dist/dts/internal/Test.d.ts.map +1 -0
  110. package/dist/dts/internal/Test.repository.sqlite.d.ts +10 -0
  111. package/dist/dts/internal/Test.repository.sqlite.d.ts.map +1 -0
  112. package/dist/dts/internal/Test.repository.sqlite.spec.d.ts +2 -0
  113. package/dist/dts/internal/Test.repository.sqlite.spec.d.ts.map +1 -0
  114. package/dist/dts/internal/common.d.ts +11 -0
  115. package/dist/dts/internal/common.d.ts.map +1 -0
  116. package/dist/dts/internal/diff.d.ts +9 -0
  117. package/dist/dts/internal/diff.d.ts.map +1 -0
  118. package/dist/dts/internal/format-diff.d.ts +3 -0
  119. package/dist/dts/internal/format-diff.d.ts.map +1 -0
  120. package/dist/dts/internal/format-diff.spec.d.ts +2 -0
  121. package/dist/dts/internal/format-diff.spec.d.ts.map +1 -0
  122. package/dist/dts/internal/lib/Schema.d.ts +4 -0
  123. package/dist/dts/internal/lib/Schema.d.ts.map +1 -0
  124. package/dist/dts/internal/lib/jsondiffpatch/clone.d.ts +2 -0
  125. package/dist/dts/internal/lib/jsondiffpatch/clone.d.ts.map +1 -0
  126. package/dist/dts/internal/lib/jsondiffpatch/contexts/context.d.ts +18 -0
  127. package/dist/dts/internal/lib/jsondiffpatch/contexts/context.d.ts.map +1 -0
  128. package/dist/dts/internal/lib/jsondiffpatch/contexts/diff.d.ts +15 -0
  129. package/dist/dts/internal/lib/jsondiffpatch/contexts/diff.d.ts.map +1 -0
  130. package/dist/dts/internal/lib/jsondiffpatch/contexts/patch.d.ts +11 -0
  131. package/dist/dts/internal/lib/jsondiffpatch/contexts/patch.d.ts.map +1 -0
  132. package/dist/dts/internal/lib/jsondiffpatch/contexts/reverse.d.ts +11 -0
  133. package/dist/dts/internal/lib/jsondiffpatch/contexts/reverse.d.ts.map +1 -0
  134. package/dist/dts/internal/lib/jsondiffpatch/date-reviver.d.ts +2 -0
  135. package/dist/dts/internal/lib/jsondiffpatch/date-reviver.d.ts.map +1 -0
  136. package/dist/dts/internal/lib/jsondiffpatch/diffpatcher.d.ts +14 -0
  137. package/dist/dts/internal/lib/jsondiffpatch/diffpatcher.d.ts.map +1 -0
  138. package/dist/dts/internal/lib/jsondiffpatch/filters/arrays.d.ts +16 -0
  139. package/dist/dts/internal/lib/jsondiffpatch/filters/arrays.d.ts.map +1 -0
  140. package/dist/dts/internal/lib/jsondiffpatch/filters/dates.d.ts +4 -0
  141. package/dist/dts/internal/lib/jsondiffpatch/filters/dates.d.ts.map +1 -0
  142. package/dist/dts/internal/lib/jsondiffpatch/filters/lcs.d.ts +11 -0
  143. package/dist/dts/internal/lib/jsondiffpatch/filters/lcs.d.ts.map +1 -0
  144. package/dist/dts/internal/lib/jsondiffpatch/filters/nested.d.ts +11 -0
  145. package/dist/dts/internal/lib/jsondiffpatch/filters/nested.d.ts.map +1 -0
  146. package/dist/dts/internal/lib/jsondiffpatch/filters/texts.d.ts +8 -0
  147. package/dist/dts/internal/lib/jsondiffpatch/filters/texts.d.ts.map +1 -0
  148. package/dist/dts/internal/lib/jsondiffpatch/filters/trivial.d.ts +8 -0
  149. package/dist/dts/internal/lib/jsondiffpatch/filters/trivial.d.ts.map +1 -0
  150. package/dist/dts/internal/lib/jsondiffpatch/formatters/annotated.d.ts +30 -0
  151. package/dist/dts/internal/lib/jsondiffpatch/formatters/annotated.d.ts.map +1 -0
  152. package/dist/dts/internal/lib/jsondiffpatch/formatters/base.d.ts +60 -0
  153. package/dist/dts/internal/lib/jsondiffpatch/formatters/base.d.ts.map +1 -0
  154. package/dist/dts/internal/lib/jsondiffpatch/formatters/html.d.ts +28 -0
  155. package/dist/dts/internal/lib/jsondiffpatch/formatters/html.d.ts.map +1 -0
  156. package/dist/dts/internal/lib/jsondiffpatch/formatters/jsonpatch.d.ts +62 -0
  157. package/dist/dts/internal/lib/jsondiffpatch/formatters/jsonpatch.d.ts.map +1 -0
  158. package/dist/dts/internal/lib/jsondiffpatch/index.d.ts +17 -0
  159. package/dist/dts/internal/lib/jsondiffpatch/index.d.ts.map +1 -0
  160. package/dist/dts/internal/lib/jsondiffpatch/pipe.d.ts +25 -0
  161. package/dist/dts/internal/lib/jsondiffpatch/pipe.d.ts.map +1 -0
  162. package/dist/dts/internal/lib/jsondiffpatch/processor.d.ts +20 -0
  163. package/dist/dts/internal/lib/jsondiffpatch/processor.d.ts.map +1 -0
  164. package/dist/dts/internal/lib/jsondiffpatch/types.d.ts +36 -0
  165. package/dist/dts/internal/lib/jsondiffpatch/types.d.ts.map +1 -0
  166. package/dist/dts/internal/lib/jsondiffpatch/with-text-diffs.d.ts +19 -0
  167. package/dist/dts/internal/lib/jsondiffpatch/with-text-diffs.d.ts.map +1 -0
  168. package/dist/dts/internal/pack.d.ts +2 -0
  169. package/dist/dts/internal/pack.d.ts.map +1 -0
  170. package/dist/dts/internal/stats.d.ts +9 -0
  171. package/dist/dts/internal/stats.d.ts.map +1 -0
  172. package/dist/dts/internal/summarize.d.ts +11 -0
  173. package/dist/dts/internal/summarize.d.ts.map +1 -0
  174. package/dist/dts/pack.d.ts +2 -0
  175. package/dist/dts/pack.d.ts.map +1 -0
  176. package/dist/dts/prelude.d.ts +24 -0
  177. package/dist/dts/prelude.d.ts.map +1 -0
  178. package/dist/esm/Classify.js +13 -0
  179. package/dist/esm/Classify.js.map +1 -0
  180. package/dist/esm/DisplayConfig.js +11 -0
  181. package/dist/esm/DisplayConfig.js.map +1 -0
  182. package/dist/esm/Error.js +12 -0
  183. package/dist/esm/Error.js.map +1 -0
  184. package/dist/esm/Show.js +27 -0
  185. package/dist/esm/Show.js.map +1 -0
  186. package/dist/esm/Test.js +13 -0
  187. package/dist/esm/Test.js.map +1 -0
  188. package/dist/esm/Test.repository.js +14 -0
  189. package/dist/esm/Test.repository.js.map +1 -0
  190. package/dist/esm/index.js +28 -0
  191. package/dist/esm/index.js.map +1 -0
  192. package/dist/esm/internal/Classify.js +100 -0
  193. package/dist/esm/internal/Classify.js.map +1 -0
  194. package/dist/esm/internal/DisplayConfig.js +23 -0
  195. package/dist/esm/internal/DisplayConfig.js.map +1 -0
  196. package/dist/esm/internal/Test.js +155 -0
  197. package/dist/esm/internal/Test.js.map +1 -0
  198. package/dist/esm/internal/Test.repository.sqlite.js +207 -0
  199. package/dist/esm/internal/Test.repository.sqlite.js.map +1 -0
  200. package/dist/esm/internal/Test.repository.sqlite.spec.js +73 -0
  201. package/dist/esm/internal/Test.repository.sqlite.spec.js.map +1 -0
  202. package/dist/esm/internal/common.js +66 -0
  203. package/dist/esm/internal/common.js.map +1 -0
  204. package/dist/esm/internal/diff.js +82 -0
  205. package/dist/esm/internal/diff.js.map +1 -0
  206. package/dist/esm/internal/format-diff.js +158 -0
  207. package/dist/esm/internal/format-diff.js.map +1 -0
  208. package/dist/esm/internal/format-diff.spec.js +79 -0
  209. package/dist/esm/internal/format-diff.spec.js.map +1 -0
  210. package/dist/esm/internal/lib/Schema.js +16 -0
  211. package/dist/esm/internal/lib/Schema.js.map +1 -0
  212. package/dist/esm/internal/lib/jsondiffpatch/clone.js +35 -0
  213. package/dist/esm/internal/lib/jsondiffpatch/clone.js.map +1 -0
  214. package/dist/esm/internal/lib/jsondiffpatch/contexts/context.js +47 -0
  215. package/dist/esm/internal/lib/jsondiffpatch/contexts/context.js.map +1 -0
  216. package/dist/esm/internal/lib/jsondiffpatch/contexts/diff.js +38 -0
  217. package/dist/esm/internal/lib/jsondiffpatch/contexts/diff.js.map +1 -0
  218. package/dist/esm/internal/lib/jsondiffpatch/contexts/patch.js +22 -0
  219. package/dist/esm/internal/lib/jsondiffpatch/contexts/patch.js.map +1 -0
  220. package/dist/esm/internal/lib/jsondiffpatch/contexts/reverse.js +21 -0
  221. package/dist/esm/internal/lib/jsondiffpatch/contexts/reverse.js.map +1 -0
  222. package/dist/esm/internal/lib/jsondiffpatch/date-reviver.js +18 -0
  223. package/dist/esm/internal/lib/jsondiffpatch/date-reviver.js.map +1 -0
  224. package/dist/esm/internal/lib/jsondiffpatch/diffpatcher.js +49 -0
  225. package/dist/esm/internal/lib/jsondiffpatch/diffpatcher.js.map +1 -0
  226. package/dist/esm/internal/lib/jsondiffpatch/filters/arrays.js +384 -0
  227. package/dist/esm/internal/lib/jsondiffpatch/filters/arrays.js.map +1 -0
  228. package/dist/esm/internal/lib/jsondiffpatch/filters/dates.js +24 -0
  229. package/dist/esm/internal/lib/jsondiffpatch/filters/dates.js.map +1 -0
  230. package/dist/esm/internal/lib/jsondiffpatch/filters/lcs.js +78 -0
  231. package/dist/esm/internal/lib/jsondiffpatch/filters/lcs.js.map +1 -0
  232. package/dist/esm/internal/lib/jsondiffpatch/filters/nested.js +153 -0
  233. package/dist/esm/internal/lib/jsondiffpatch/filters/nested.js.map +1 -0
  234. package/dist/esm/internal/lib/jsondiffpatch/filters/texts.js +123 -0
  235. package/dist/esm/internal/lib/jsondiffpatch/filters/texts.js.map +1 -0
  236. package/dist/esm/internal/lib/jsondiffpatch/filters/trivial.js +108 -0
  237. package/dist/esm/internal/lib/jsondiffpatch/filters/trivial.js.map +1 -0
  238. package/dist/esm/internal/lib/jsondiffpatch/formatters/annotated.js +165 -0
  239. package/dist/esm/internal/lib/jsondiffpatch/formatters/annotated.js.map +1 -0
  240. package/dist/esm/internal/lib/jsondiffpatch/formatters/base.js +198 -0
  241. package/dist/esm/internal/lib/jsondiffpatch/formatters/base.js.map +1 -0
  242. package/dist/esm/internal/lib/jsondiffpatch/formatters/html.js +239 -0
  243. package/dist/esm/internal/lib/jsondiffpatch/formatters/html.js.map +1 -0
  244. package/dist/esm/internal/lib/jsondiffpatch/formatters/jsonpatch.js +174 -0
  245. package/dist/esm/internal/lib/jsondiffpatch/formatters/jsonpatch.js.map +1 -0
  246. package/dist/esm/internal/lib/jsondiffpatch/index.js +61 -0
  247. package/dist/esm/internal/lib/jsondiffpatch/index.js.map +1 -0
  248. package/dist/esm/internal/lib/jsondiffpatch/pipe.js +110 -0
  249. package/dist/esm/internal/lib/jsondiffpatch/pipe.js.map +1 -0
  250. package/dist/esm/internal/lib/jsondiffpatch/processor.js +71 -0
  251. package/dist/esm/internal/lib/jsondiffpatch/processor.js.map +1 -0
  252. package/dist/esm/internal/lib/jsondiffpatch/types.js +6 -0
  253. package/dist/esm/internal/lib/jsondiffpatch/types.js.map +1 -0
  254. package/dist/esm/internal/lib/jsondiffpatch/with-text-diffs.js +88 -0
  255. package/dist/esm/internal/lib/jsondiffpatch/with-text-diffs.js.map +1 -0
  256. package/dist/esm/internal/pack.js +58 -0
  257. package/dist/esm/internal/pack.js.map +1 -0
  258. package/dist/esm/internal/stats.js +117 -0
  259. package/dist/esm/internal/stats.js.map +1 -0
  260. package/dist/esm/internal/summarize.js +146 -0
  261. package/dist/esm/internal/summarize.js.map +1 -0
  262. package/dist/esm/pack.js +10 -0
  263. package/dist/esm/pack.js.map +1 -0
  264. package/dist/esm/prelude.js +72 -0
  265. package/dist/esm/prelude.js.map +1 -0
  266. package/package.json +45 -0
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.values = exports.recall = exports.precision = exports.min = exports.median = exports.mean = exports.max = exports.makeClassify = exports.defaultIsNil = exports.defaultIsEqual = exports.StatsSchema = exports.Stats = exports.LabelSchema = void 0;
7
+ var _nodeUtil = /*#__PURE__*/require("node:util");
8
+ var P = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("../prelude.js"));
9
+ function _getRequireWildcardCache(e) {
10
+ if ("function" != typeof WeakMap) return null;
11
+ var r = new WeakMap(),
12
+ t = new WeakMap();
13
+ return (_getRequireWildcardCache = function (e) {
14
+ return e ? t : r;
15
+ })(e);
16
+ }
17
+ function _interopRequireWildcard(e, r) {
18
+ if (!r && e && e.__esModule) return e;
19
+ if (null === e || "object" != typeof e && "function" != typeof e) return {
20
+ default: e
21
+ };
22
+ var t = _getRequireWildcardCache(r);
23
+ if (t && t.has(e)) return t.get(e);
24
+ var n = {
25
+ __proto__: null
26
+ },
27
+ a = Object.defineProperty && Object.getOwnPropertyDescriptor;
28
+ for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
29
+ var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
30
+ i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
31
+ }
32
+ return n.default = e, t && t.set(e, n), n;
33
+ }
34
+ const values = exports.values = {
35
+ TN: 'TN',
36
+ TP: 'TP',
37
+ FP: 'FP',
38
+ FN: 'FN'
39
+ };
40
+ const LabelSchema = exports.LabelSchema = /*#__PURE__*/P.Schema.Literal('TP', 'TN', 'FP', 'FN');
41
+ const defaultIsEqual = (a, b) =>
42
+ // FIXME: Expensive, but don't know how else to cheaply remove
43
+ // `undefined`, which is a common source of false results.
44
+ // Parsing the output w/ a schema would be better, or
45
+ // forbidding `undefined`.
46
+ (0, _nodeUtil.isDeepStrictEqual)(JSON.parse(JSON.stringify(a)), JSON.parse(JSON.stringify(b)));
47
+ exports.defaultIsEqual = defaultIsEqual;
48
+ const defaultIsNil = x => x === null || x === undefined;
49
+ exports.defaultIsNil = defaultIsNil;
50
+ const makeClassify = (isEqual, isOutputNil = defaultIsNil, isExpectedNil = defaultIsNil) => (output, expected) => {
51
+ const eq = isEqual(output, expected);
52
+ const oNil = isOutputNil(output);
53
+ const eNil = isExpectedNil(expected);
54
+ if (oNil && eNil) {
55
+ return values.TN;
56
+ }
57
+ if (!oNil && !eNil && eq) {
58
+ return values.TP;
59
+ }
60
+ if (!oNil && eNil || !oNil && !eNil && !eq) {
61
+ return values.FP;
62
+ }
63
+ return values.FN;
64
+ };
65
+ exports.makeClassify = makeClassify;
66
+ const StatsSchema = exports.StatsSchema = /*#__PURE__*/P.Schema.Struct({
67
+ TP: P.Schema.Number,
68
+ TN: P.Schema.Number,
69
+ FP: P.Schema.Number,
70
+ FN: P.Schema.Number,
71
+ precision: P.Schema.Number,
72
+ recall: P.Schema.Number,
73
+ timeMean: /*#__PURE__*/P.Schema.Number.pipe(P.Schema.Option),
74
+ timeMedian: /*#__PURE__*/P.Schema.Number.pipe(P.Schema.Option),
75
+ timeMin: /*#__PURE__*/P.Schema.Number.pipe(P.Schema.Option),
76
+ timeMax: /*#__PURE__*/P.Schema.Number.pipe(P.Schema.Option)
77
+ });
78
+ const Stats = exports.Stats = {
79
+ empty: () => ({
80
+ TP: 0,
81
+ TN: 0,
82
+ FP: 0,
83
+ FN: 0,
84
+ precision: 0,
85
+ recall: 0,
86
+ timeMean: P.Option.none(),
87
+ timeMedian: P.Option.none(),
88
+ timeMin: P.Option.none(),
89
+ timeMax: P.Option.none()
90
+ })
91
+ };
92
+ const precision = m => {
93
+ const r = m.TP / (m.TP + m.FP);
94
+ return isNaN(r) ? 0 : r;
95
+ };
96
+ exports.precision = precision;
97
+ const recall = m => {
98
+ const r = m.TP / (m.TP + m.FN);
99
+ return isNaN(r) ? 0 : r;
100
+ };
101
+ exports.recall = recall;
102
+ const min = xs => xs.reduce((min, x) => x < min ? x : min, Infinity);
103
+ exports.min = min;
104
+ const max = xs => xs.reduce((max, x) => x > max ? x : max, -Infinity);
105
+ exports.max = max;
106
+ const mean = xs => {
107
+ if (xs.length === 0) {
108
+ return undefined;
109
+ }
110
+ return xs.reduce((a, b) => a + b, 0) / xs.length;
111
+ };
112
+ exports.mean = mean;
113
+ const median = xs => {
114
+ if (xs.length === 0) {
115
+ return P.Option.none();
116
+ }
117
+ const sorted = xs.slice().sort((a, b) => a - b);
118
+ const index = Math.floor(sorted.length / 2);
119
+ const r = sorted.length % 2 === 0 ? (sorted[index - 1] + sorted[index]) / 2 : sorted[index];
120
+ return P.Option.fromNullable(r);
121
+ };
122
+ exports.median = median;
123
+ //# sourceMappingURL=Classify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Classify.js","names":["_nodeUtil","require","P","_interopRequireWildcard","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","values","exports","TN","TP","FP","FN","LabelSchema","Schema","Literal","defaultIsEqual","b","isDeepStrictEqual","JSON","parse","stringify","defaultIsNil","x","undefined","makeClassify","isEqual","isOutputNil","isExpectedNil","output","expected","eq","oNil","eNil","StatsSchema","Struct","Number","precision","recall","timeMean","pipe","Option","timeMedian","timeMin","timeMax","Stats","empty","none","m","isNaN","min","xs","reduce","Infinity","max","mean","length","median","sorted","slice","sort","index","Math","floor","fromNullable"],"sources":["../../../src/internal/Classify.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.makeDefault = void 0;
7
+ const makeDefault = () => ({
8
+ colorize: true,
9
+ columnPadding: 2,
10
+ corner: '┼',
11
+ cornerLeft: '├',
12
+ cornerRight: '┤',
13
+ cornerTop: '┬',
14
+ cornerTopLeft: '┌',
15
+ cornerTopRight: '┐',
16
+ cornerBottomLeft: '└',
17
+ cornerBottomRight: '┘',
18
+ cornerBottom: '┴',
19
+ horizontal: '─',
20
+ vertical: '│'
21
+ });
22
+ exports.makeDefault = makeDefault;
23
+ //# sourceMappingURL=DisplayConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DisplayConfig.js","names":["makeDefault","colorize","columnPadding","corner","cornerLeft","cornerRight","cornerTop","cornerTopLeft","cornerTopRight","cornerBottomLeft","cornerBottomRight","cornerBottom","horizontal","vertical","exports"],"sources":["../../../src/internal/DisplayConfig.ts"],"sourcesContent":[null],"mappings":";;;;;;AAEO,MAAMA,WAAW,GAAGA,CAAA,MAAsB;EAC7CC,QAAQ,EAAE,IAAI;EACdC,aAAa,EAAE,CAAC;EAChBC,MAAM,EAAE,GAAG;EACXC,UAAU,EAAE,GAAG;EACfC,WAAW,EAAE,GAAG;EAChBC,SAAS,EAAE,GAAG;EACdC,aAAa,EAAE,GAAG;EAClBC,cAAc,EAAE,GAAG;EACnBC,gBAAgB,EAAE,GAAG;EACrBC,iBAAiB,EAAE,GAAG;EACtBC,YAAY,EAAE,GAAG;EACjBC,UAAU,EAAE,GAAG;EACfC,QAAQ,EAAE;CACb,CAAC;AAACC,OAAA,CAAAd,WAAA,GAAAA,WAAA","ignoreList":[]}
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.test = exports.runCollectRecord = exports.makeSha256 = exports.diff = exports.all = exports.TestResultSchema = void 0;
7
+ var _nodeCrypto = /*#__PURE__*/require("node:crypto");
8
+ var _nodePerf_hooks = /*#__PURE__*/require("node:perf_hooks");
9
+ var P = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("../prelude.js"));
10
+ var _Classify = /*#__PURE__*/require("./Classify.js");
11
+ var _TestRepositorySqlite = /*#__PURE__*/require("./Test.repository.sqlite.js");
12
+ function _getRequireWildcardCache(e) {
13
+ if ("function" != typeof WeakMap) return null;
14
+ var r = new WeakMap(),
15
+ t = new WeakMap();
16
+ return (_getRequireWildcardCache = function (e) {
17
+ return e ? t : r;
18
+ })(e);
19
+ }
20
+ function _interopRequireWildcard(e, r) {
21
+ if (!r && e && e.__esModule) return e;
22
+ if (null === e || "object" != typeof e && "function" != typeof e) return {
23
+ default: e
24
+ };
25
+ var t = _getRequireWildcardCache(r);
26
+ if (t && t.has(e)) return t.get(e);
27
+ var n = {
28
+ __proto__: null
29
+ },
30
+ a = Object.defineProperty && Object.getOwnPropertyDescriptor;
31
+ for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
32
+ var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
33
+ i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
34
+ }
35
+ return n.default = e, t && t.set(e, n), n;
36
+ }
37
+ const makeSha256 = input => {
38
+ return (0, _nodeCrypto.createHash)('sha256').update(JSON.stringify(input)).digest('hex');
39
+ };
40
+ exports.makeSha256 = makeSha256;
41
+ const TestResult = {
42
+ make: args => {
43
+ const {
44
+ label,
45
+ input,
46
+ result,
47
+ expected
48
+ } = args;
49
+ // Without `ordering`, in case the user decides to re-order test cases,
50
+ // which shouldn't change the identity of the test result.
51
+ // Without `tags`, as those are just for filtering.
52
+ const id = makeSha256({
53
+ label,
54
+ input,
55
+ result,
56
+ expected
57
+ });
58
+ const hashTestCase = makeSha256({
59
+ input,
60
+ expected
61
+ });
62
+ return {
63
+ ...args,
64
+ id,
65
+ hashTestCase
66
+ };
67
+ }
68
+ };
69
+ const TestResultSchema = exports.TestResultSchema = /*#__PURE__*/P.Schema.Struct({
70
+ id: P.Schema.String,
71
+ hashTestCase: P.Schema.String,
72
+ ordering: P.Schema.Int,
73
+ input: P.Schema.Unknown,
74
+ result: P.Schema.Unknown,
75
+ expected: P.Schema.Unknown,
76
+ label: _Classify.LabelSchema,
77
+ tags: /*#__PURE__*/P.Schema.Array(P.Schema.String),
78
+ timeMillis: P.Schema.Number
79
+ });
80
+ const TestRunResults = {
81
+ emptyFromTestRun: args => ({
82
+ ...args,
83
+ testResultsByTestCaseHash: {},
84
+ testCaseHashes: [],
85
+ stats: _Classify.Stats.empty()
86
+ })
87
+ };
88
+ const test = ({
89
+ testCase: {
90
+ input,
91
+ expected,
92
+ tags
93
+ },
94
+ program,
95
+ classify,
96
+ ordering
97
+ }) => {
98
+ const t0 = _nodePerf_hooks.performance.now();
99
+ return program(input).pipe(P.Effect.map(result => {
100
+ const t1 = _nodePerf_hooks.performance.now();
101
+ return TestResult.make({
102
+ ordering,
103
+ input,
104
+ result,
105
+ expected,
106
+ tags: tags ?? [],
107
+ label: classify(result, expected),
108
+ timeMillis: t1 - t0
109
+ });
110
+ }));
111
+ };
112
+ exports.test = test;
113
+ const all = ({
114
+ testCases,
115
+ program,
116
+ classify = (0, _Classify.makeClassify)(_Classify.defaultIsEqual, _Classify.defaultIsNil, _Classify.defaultIsNil),
117
+ name
118
+ }, {
119
+ concurrency
120
+ } = {
121
+ concurrency: 1
122
+ }) => P.Effect.gen(function* () {
123
+ const repository = yield* _TestRepositorySqlite.TestRepository;
124
+ const currentTestRun = yield* repository.getOrCreateCurrentTestRun(name);
125
+ yield* repository.clearTestRun(currentTestRun);
126
+ let ordering = 0;
127
+ return P.Stream.fromIterable(testCases).pipe(P.Stream.mapEffect(testCase => test({
128
+ ordering: ordering++,
129
+ testCase,
130
+ program,
131
+ classify
132
+ }), {
133
+ concurrency,
134
+ unordered: false
135
+ }), P.Stream.tap(testResult => repository.insertTestResult(testResult, name)));
136
+ });
137
+ exports.all = all;
138
+ const runCollectRecord = testRun => testResults$ => testResults$.pipe(P.Stream.runFoldEffect(TestRunResults.emptyFromTestRun(testRun), (run, result) => P.Effect.gen(function* () {
139
+ if (run.testResultsByTestCaseHash[result.hashTestCase] !== undefined) {
140
+ yield* P.Effect.logWarning(`Skipped duplicate test case. hashTestCase=${result.hashTestCase}`);
141
+ return run;
142
+ } else {
143
+ run.testResultsByTestCaseHash[result.hashTestCase] = result;
144
+ run.testCaseHashes.push(result.hashTestCase);
145
+ run.stats[result.label]++;
146
+ }
147
+ return run;
148
+ })), P.Effect.map(run => {
149
+ run.stats.precision = (0, _Classify.precision)(run.stats);
150
+ run.stats.recall = (0, _Classify.recall)(run.stats);
151
+ const times = run.testCaseHashes.map(hash => run.testResultsByTestCaseHash[hash].timeMillis);
152
+ run.stats.timeMean = P.Option.some(times.reduce((mean, n) => mean + n, 0) / times.length);
153
+ run.stats.timeMax = P.Option.some(times.reduce((max, n) => Math.max(max, n), 0));
154
+ run.stats.timeMin = P.Option.some(times.reduce((min, n) => Math.min(min, n), Infinity));
155
+ run.stats.timeMedian = (0, _Classify.median)(times);
156
+ return run;
157
+ }));
158
+ exports.runCollectRecord = runCollectRecord;
159
+ const diff = ({
160
+ testRun: {
161
+ stats
162
+ },
163
+ previousTestRun
164
+ }) => previousTestRun.pipe(P.Option.match({
165
+ onNone: () => stats,
166
+ onSome: ({
167
+ stats: previousStats
168
+ }) => ({
169
+ TP: stats.TP - previousStats.TP,
170
+ TN: stats.TN - previousStats.TN,
171
+ FP: stats.FP - previousStats.FP,
172
+ FN: stats.FN - previousStats.FN,
173
+ precision: stats.precision - previousStats.precision,
174
+ recall: stats.recall - previousStats.recall
175
+ })
176
+ }));
177
+ exports.diff = diff;
178
+ //# sourceMappingURL=Test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Test.js","names":["_nodeCrypto","require","_nodePerf_hooks","P","_interopRequireWildcard","_Classify","_TestRepositorySqlite","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","makeSha256","input","createHash","update","JSON","stringify","digest","exports","TestResult","make","args","label","result","expected","id","hashTestCase","TestResultSchema","Schema","Struct","String","ordering","Int","Unknown","LabelSchema","tags","Array","timeMillis","Number","TestRunResults","emptyFromTestRun","testResultsByTestCaseHash","testCaseHashes","stats","Stats","empty","test","testCase","program","classify","t0","performance","now","pipe","Effect","map","t1","all","testCases","makeClassify","defaultIsEqual","defaultIsNil","name","concurrency","gen","repository","TestRepository","currentTestRun","getOrCreateCurrentTestRun","clearTestRun","Stream","fromIterable","mapEffect","unordered","tap","testResult","insertTestResult","runCollectRecord","testRun","testResults$","runFoldEffect","run","undefined","logWarning","push","precision","recall","times","hash","timeMean","Option","some","reduce","mean","length","timeMax","max","Math","timeMin","min","Infinity","timeMedian","median","diff","previousTestRun","match","onNone","onSome","previousStats","TP","TN","FP","FN"],"sources":["../../../src/internal/Test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,230 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ 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"));
9
+ var P = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("../prelude.js"));
10
+ var _Classify = /*#__PURE__*/require("./Classify.js");
11
+ var _Schema = /*#__PURE__*/require("./lib/Schema.js");
12
+ function _getRequireWildcardCache(e) {
13
+ if ("function" != typeof WeakMap) return null;
14
+ var r = new WeakMap(),
15
+ t = new WeakMap();
16
+ return (_getRequireWildcardCache = function (e) {
17
+ return e ? t : r;
18
+ })(e);
19
+ }
20
+ function _interopRequireWildcard(e, r) {
21
+ if (!r && e && e.__esModule) return e;
22
+ if (null === e || "object" != typeof e && "function" != typeof e) return {
23
+ default: e
24
+ };
25
+ var t = _getRequireWildcardCache(r);
26
+ if (t && t.has(e)) return t.get(e);
27
+ var n = {
28
+ __proto__: null
29
+ },
30
+ a = Object.defineProperty && Object.getOwnPropertyDescriptor;
31
+ for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
32
+ var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
33
+ i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
34
+ }
35
+ return n.default = e, t && t.set(e, n), n;
36
+ }
37
+ const tables = {
38
+ testResults: 'test-results',
39
+ testRuns: 'test-runs',
40
+ testRunResults: 'test-run-results'
41
+ };
42
+ const TestResultWriteSchema = /*#__PURE__*/P.Schema.Struct({
43
+ id: P.Schema.String,
44
+ hashTestCase: P.Schema.String,
45
+ ordering: P.Schema.Int,
46
+ input: /*#__PURE__*/P.Schema.parseJson(P.Schema.Unknown),
47
+ result: /*#__PURE__*/P.Schema.parseJson(P.Schema.Unknown),
48
+ expected: /*#__PURE__*/P.Schema.parseJson(P.Schema.Unknown),
49
+ label: _Classify.LabelSchema,
50
+ tags: /*#__PURE__*/(0, _Schema.split)(','),
51
+ timeMillis: P.Schema.Number
52
+ });
53
+ const TestResultsSchema = /*#__PURE__*/TestResultWriteSchema.pipe(P.Schema.Array);
54
+ const TestRunReadSchema = /*#__PURE__*/P.Schema.Struct({
55
+ id: P.Schema.Int,
56
+ name: P.Schema.String,
57
+ hash: /*#__PURE__*/P.Schema.String.pipe(P.Schema.NullOr)
58
+ });
59
+ const HasResultsSchema = /*#__PURE__*/P.Schema.Struct({
60
+ count: P.Schema.Int
61
+ }).pipe(P.Schema.Array);
62
+ const TestRunsReadSchema = /*#__PURE__*/TestRunReadSchema.pipe(P.Schema.Array);
63
+ const TestRepository = exports.TestRepository = /*#__PURE__*/P.Context.GenericTag('TestRunRepository');
64
+ const makeTestRepository = /*#__PURE__*/P.Effect.gen(function* () {
65
+ const sql = yield* Sql.client.Client;
66
+ yield* sql`
67
+ CREATE TABLE IF NOT EXISTS ${sql(tables.testRuns)}(
68
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
69
+ name TEXT NOT NULL,
70
+ hash TEXT,
71
+ UNIQUE (id, name, hash)
72
+ );
73
+ `;
74
+ yield* sql`CREATE INDEX IF NOT EXISTS idx_name_hash ON ${sql(tables.testRuns)}(name, hash)`;
75
+ yield* sql`
76
+ CREATE TABLE IF NOT EXISTS ${sql(tables.testResults)}(
77
+ id TEXT PRIMARY KEY,
78
+ hashTestCase TEXT NOT NULL,
79
+ ordering INTEGER NOT NULL,
80
+ input TEXT,
81
+ result TEXT,
82
+ expected TEXT,
83
+ label TEXT NOT NULL,
84
+ tags TEXT NOT NULL,
85
+ timeMillis INTEGER NOT NULL
86
+ );
87
+ `;
88
+ yield* sql`
89
+ CREATE TABLE IF NOT EXISTS ${sql(tables.testRunResults)}(
90
+ testRun INTEGER NOT NULL,
91
+ testResult TEXT NOT NULL,
92
+ FOREIGN KEY (testRun) REFERENCES ${sql(tables.testRuns)}(id),
93
+ FOREIGN KEY (testResult) REFERENCES ${sql(tables.testResults)}(id),
94
+ UNIQUE (testRun, testResult)
95
+ );
96
+ `;
97
+ const insertTestResult = (testResult, name) => P.Effect.gen(function* () {
98
+ const encoded = yield* P.Schema.encode(TestResultWriteSchema)(testResult);
99
+ yield* sql`
100
+ INSERT INTO ${sql(tables.testResults)}
101
+ ${sql.insert(encoded)}
102
+ ON CONFLICT(id) DO NOTHING;
103
+ `;
104
+ yield* sql`
105
+ INSERT INTO ${sql(tables.testRunResults)}
106
+ VALUES (
107
+ (
108
+ SELECT id FROM ${sql(tables.testRuns)}
109
+ WHERE hash IS NULL AND name = ${name}
110
+ ),
111
+ ${encoded.id}
112
+ )
113
+ ON CONFLICT(testRun, testResult) DO NOTHING;
114
+ `;
115
+ });
116
+ const getTestResultsStream = testRun => P.Effect.gen(function* () {
117
+ const raw = yield* sql`
118
+ SELECT res.* FROM ${sql(tables.testResults)} res
119
+ JOIN ${sql(tables.testRunResults)} runres ON res.id = runres.testResult
120
+ JOIN ${sql(tables.testRuns)} runs ON runs.id = runres.testRun
121
+ WHERE runs.id = ${testRun.id}
122
+ ORDER BY ordering ASC;
123
+ `;
124
+ return yield* P.Schema.decode(TestResultsSchema)(raw);
125
+ }).pipe(P.Stream.fromIterableEffect);
126
+ const hasResults = testRun => P.Effect.gen(function* () {
127
+ const b = yield* sql`
128
+ SELECT COUNT(*) count FROM ${sql(tables.testRunResults)}
129
+ WHERE testRun = ${testRun.id};
130
+ `;
131
+ const r = yield* P.Schema.decode(HasResultsSchema)(b);
132
+ return r[0].count > 0;
133
+ });
134
+ const getPreviousTestRun = name => P.Effect.gen(function* () {
135
+ const r = yield* sql`
136
+ SELECT * FROM ${sql(tables.testRuns)}
137
+ WHERE hash IS NOT NULL AND name = ${name}
138
+ ORDER BY id DESC
139
+ LIMIT 1;
140
+ `;
141
+ const p = yield* P.Schema.decode(TestRunsReadSchema)(r);
142
+ return P.Array.head(p);
143
+ });
144
+ // const getPreviousTestResultsStream = (name: string) =>
145
+ // sql<TestResultRead>`
146
+ // SELECT res.* FROM ${sql(tables.testResults)} res
147
+ // JOIN ${sql(tables.testRunResults)} runres ON res.hash = runres.testResult
148
+ // JOIN ${sql(tables.testRuns)} runs ON runs.id = runres.testRun
149
+ // WHERE runs.hash IS NULL AND runs.name = ${name};
150
+ // `.stream.pipe(
151
+ // P.Stream.mapEffect(P.Schema.decode(TestResultSchema)),
152
+ // );
153
+ const getAllTestRuns = P.Effect.gen(function* () {
154
+ const results = yield* sql`
155
+ SELECT * from ${sql(tables.testRuns)};
156
+ `;
157
+ return yield* P.Schema.decode(TestRunsReadSchema)(results);
158
+ });
159
+ const getAllTestResults = P.Effect.gen(function* () {
160
+ const results = yield* sql`
161
+ SELECT * from ${sql(tables.testResults)};
162
+ `;
163
+ return yield* P.Schema.decode(TestResultsSchema)(results);
164
+ });
165
+ const getOrCreateCurrentTestRun = name => P.Effect.gen(function* () {
166
+ const current = yield* sql`
167
+ SELECT *
168
+ FROM ${sql(tables.testRuns)}
169
+ WHERE hash IS NULL AND name = ${name};
170
+ `;
171
+ if (current.length === 0) {
172
+ return yield* sql`
173
+ INSERT INTO ${sql(tables.testRuns)}
174
+ ${sql.insert({
175
+ name
176
+ })}
177
+ RETURNING *;
178
+ `;
179
+ }
180
+ return current;
181
+ }).pipe(P.Effect.map(P.Array.unsafeGet(0)));
182
+ const clearTestRun = testRun => P.Effect.gen(function* () {
183
+ yield* sql`
184
+ DELETE FROM ${sql(tables.testRunResults)}
185
+ WHERE testRun = ${testRun.id};
186
+ `;
187
+ });
188
+ const commitCurrentTestRun = ({
189
+ name,
190
+ hash
191
+ }) => P.Effect.gen(function* () {
192
+ // Transaction?
193
+ yield* sql`
194
+ UPDATE ${sql(tables.testRuns)}
195
+ SET hash = ${hash}
196
+ WHERE id = (
197
+ SELECT id
198
+ FROM ${sql(tables.testRuns)}
199
+ WHERE hash IS NULL AND name = ${name}
200
+ );
201
+ `;
202
+ yield* sql`
203
+ INSERT INTO ${sql(tables.testRuns)}
204
+ ${sql.insert({
205
+ name
206
+ })};
207
+ `;
208
+ });
209
+ const service = {
210
+ clearTestRun,
211
+ commitCurrentTestRun,
212
+ getAllTestResults,
213
+ getAllTestRuns,
214
+ getOrCreateCurrentTestRun,
215
+ getPreviousTestRun,
216
+ getTestResultsStream,
217
+ hasResults,
218
+ insertTestResult
219
+ };
220
+ return service;
221
+ });
222
+ const LiveLayer = exports.LiveLayer = /*#__PURE__*/P.Layer.effect(TestRepository, makeTestRepository);
223
+ const makeSqliteLiveLayer = dbPath => Sqlite.client.layer(P.Config.all({
224
+ filename: P.Config.string('PREDICTION_TESTING_SQLITE_FILENAME').pipe(P.Config.withDefault(dbPath))
225
+ }));
226
+ exports.makeSqliteLiveLayer = makeSqliteLiveLayer;
227
+ const SqliteTestLayer = exports.SqliteTestLayer = /*#__PURE__*/Sqlite.client.layer( /*#__PURE__*/P.Config.all({
228
+ filename: /*#__PURE__*/P.Config.string('PREDICTION_TESTING_SQLITE_FILENAME').pipe( /*#__PURE__*/P.Config.withDefault('test.db'))
229
+ }));
230
+ //# sourceMappingURL=Test.repository.sqlite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Test.repository.sqlite.js","names":["Sql","_interopRequireWildcard","require","Sqlite","P","_Classify","_Schema","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","tables","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","HasResultsSchema","count","TestRunsReadSchema","TestRepository","exports","Context","GenericTag","makeTestRepository","Effect","gen","sql","client","Client","insertTestResult","testResult","encoded","encode","insert","getTestResultsStream","testRun","raw","decode","Stream","fromIterableEffect","hasResults","b","getPreviousTestRun","p","head","getAllTestRuns","results","getAllTestResults","getOrCreateCurrentTestRun","current","length","map","unsafeGet","clearTestRun","commitCurrentTestRun","service","LiveLayer","Layer","effect","makeSqliteLiveLayer","dbPath","layer","Config","all","filename","string","withDefault","SqliteTestLayer"],"sources":["../../../src/internal/Test.repository.sqlite.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}