@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,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,155 @@
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) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
13
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
+ const makeSha256 = input => {
15
+ return (0, _nodeCrypto.createHash)('sha256').update(JSON.stringify(input)).digest('hex');
16
+ };
17
+ exports.makeSha256 = makeSha256;
18
+ const TestResult = {
19
+ make: args => {
20
+ const {
21
+ label,
22
+ input,
23
+ result,
24
+ expected
25
+ } = args;
26
+ // Without `ordering`, in case the user decides to re-order test cases,
27
+ // which shouldn't change the identity of the test result.
28
+ // Without `tags`, as those are just for filtering.
29
+ const id = makeSha256({
30
+ label,
31
+ input,
32
+ result,
33
+ expected
34
+ });
35
+ const hashTestCase = makeSha256({
36
+ input,
37
+ expected
38
+ });
39
+ return {
40
+ ...args,
41
+ id,
42
+ hashTestCase
43
+ };
44
+ }
45
+ };
46
+ const TestResultSchema = exports.TestResultSchema = /*#__PURE__*/P.Schema.Struct({
47
+ id: P.Schema.String,
48
+ hashTestCase: P.Schema.String,
49
+ ordering: P.Schema.Int,
50
+ input: P.Schema.Unknown,
51
+ result: P.Schema.Unknown,
52
+ expected: P.Schema.Unknown,
53
+ label: _Classify.LabelSchema,
54
+ tags: /*#__PURE__*/P.Schema.Array(P.Schema.String),
55
+ timeMillis: P.Schema.Number
56
+ });
57
+ const TestRunResults = {
58
+ emptyFromTestRun: args => ({
59
+ ...args,
60
+ testResultsByTestCaseHash: {},
61
+ testCaseHashes: [],
62
+ stats: _Classify.Stats.empty()
63
+ })
64
+ };
65
+ const test = ({
66
+ testCase: {
67
+ input,
68
+ expected,
69
+ tags
70
+ },
71
+ program,
72
+ classify,
73
+ ordering
74
+ }) => {
75
+ const t0 = _nodePerf_hooks.performance.now();
76
+ return program(input).pipe(P.Effect.map(result => {
77
+ const t1 = _nodePerf_hooks.performance.now();
78
+ return TestResult.make({
79
+ ordering,
80
+ input,
81
+ result,
82
+ expected,
83
+ tags: tags ?? [],
84
+ label: classify(result, expected),
85
+ timeMillis: t1 - t0
86
+ });
87
+ }));
88
+ };
89
+ exports.test = test;
90
+ const all = ({
91
+ testCases,
92
+ program,
93
+ classify = (0, _Classify.makeClassify)(_Classify.defaultIsEqual, _Classify.defaultIsNil, _Classify.defaultIsNil),
94
+ name
95
+ }, {
96
+ concurrency
97
+ } = {
98
+ concurrency: 1
99
+ }) => P.Effect.gen(function* () {
100
+ const repository = yield* _TestRepositorySqlite.TestRepository;
101
+ const currentTestRun = yield* repository.getOrCreateCurrentTestRun(name);
102
+ yield* repository.clearTestRun(currentTestRun);
103
+ let ordering = 0;
104
+ return P.Stream.fromIterable(testCases).pipe(P.Stream.mapEffect(testCase => test({
105
+ ordering: ordering++,
106
+ testCase,
107
+ program,
108
+ classify
109
+ }), {
110
+ concurrency,
111
+ unordered: false
112
+ }), P.Stream.tap(testResult => repository.insertTestResult(testResult, name)));
113
+ });
114
+ exports.all = all;
115
+ const runCollectRecord = testRun => testResults$ => testResults$.pipe(P.Stream.runFoldEffect(TestRunResults.emptyFromTestRun(testRun), (run, result) => P.Effect.gen(function* () {
116
+ if (run.testResultsByTestCaseHash[result.hashTestCase] !== undefined) {
117
+ yield* P.Effect.logWarning(`Skipped duplicate test case. hashTestCase=${result.hashTestCase}`);
118
+ return run;
119
+ } else {
120
+ run.testResultsByTestCaseHash[result.hashTestCase] = result;
121
+ run.testCaseHashes.push(result.hashTestCase);
122
+ run.stats[result.label]++;
123
+ }
124
+ return run;
125
+ })), P.Effect.map(run => {
126
+ run.stats.precision = (0, _Classify.precision)(run.stats);
127
+ run.stats.recall = (0, _Classify.recall)(run.stats);
128
+ const times = run.testCaseHashes.map(hash => run.testResultsByTestCaseHash[hash].timeMillis);
129
+ run.stats.timeMean = P.Option.some(times.reduce((mean, n) => mean + n, 0) / times.length);
130
+ run.stats.timeMax = P.Option.some(times.reduce((max, n) => Math.max(max, n), 0));
131
+ run.stats.timeMin = P.Option.some(times.reduce((min, n) => Math.min(min, n), Infinity));
132
+ run.stats.timeMedian = (0, _Classify.median)(times);
133
+ return run;
134
+ }));
135
+ exports.runCollectRecord = runCollectRecord;
136
+ const diff = ({
137
+ testRun: {
138
+ stats
139
+ },
140
+ previousTestRun
141
+ }) => previousTestRun.pipe(P.Option.match({
142
+ onNone: () => stats,
143
+ onSome: ({
144
+ stats: previousStats
145
+ }) => ({
146
+ TP: stats.TP - previousStats.TP,
147
+ TN: stats.TN - previousStats.TN,
148
+ FP: stats.FP - previousStats.FP,
149
+ FN: stats.FN - previousStats.FN,
150
+ precision: stats.precision - previousStats.precision,
151
+ recall: stats.recall - previousStats.recall
152
+ })
153
+ }));
154
+ exports.diff = diff;
155
+ //# 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,207 @@
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) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
13
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
+ const tables = {
15
+ testResults: 'test-results',
16
+ testRuns: 'test-runs',
17
+ testRunResults: 'test-run-results'
18
+ };
19
+ const TestResultWriteSchema = /*#__PURE__*/P.Schema.Struct({
20
+ id: P.Schema.String,
21
+ hashTestCase: P.Schema.String,
22
+ ordering: P.Schema.Int,
23
+ input: /*#__PURE__*/P.Schema.parseJson(P.Schema.Unknown),
24
+ result: /*#__PURE__*/P.Schema.parseJson(P.Schema.Unknown),
25
+ expected: /*#__PURE__*/P.Schema.parseJson(P.Schema.Unknown),
26
+ label: _Classify.LabelSchema,
27
+ tags: /*#__PURE__*/(0, _Schema.split)(','),
28
+ timeMillis: P.Schema.Number
29
+ });
30
+ const TestResultsSchema = /*#__PURE__*/TestResultWriteSchema.pipe(P.Schema.Array);
31
+ const TestRunReadSchema = /*#__PURE__*/P.Schema.Struct({
32
+ id: P.Schema.Int,
33
+ name: P.Schema.String,
34
+ hash: /*#__PURE__*/P.Schema.String.pipe(P.Schema.NullOr)
35
+ });
36
+ const HasResultsSchema = /*#__PURE__*/P.Schema.Struct({
37
+ count: P.Schema.Int
38
+ }).pipe(P.Schema.Array);
39
+ const TestRunsReadSchema = /*#__PURE__*/TestRunReadSchema.pipe(P.Schema.Array);
40
+ const TestRepository = exports.TestRepository = /*#__PURE__*/P.Context.GenericTag('TestRunRepository');
41
+ const makeTestRepository = /*#__PURE__*/P.Effect.gen(function* () {
42
+ const sql = yield* Sql.client.Client;
43
+ yield* sql`
44
+ CREATE TABLE IF NOT EXISTS ${sql(tables.testRuns)}(
45
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
46
+ name TEXT NOT NULL,
47
+ hash TEXT,
48
+ UNIQUE (id, name, hash)
49
+ );
50
+ `;
51
+ yield* sql`CREATE INDEX IF NOT EXISTS idx_name_hash ON ${sql(tables.testRuns)}(name, hash)`;
52
+ yield* sql`
53
+ CREATE TABLE IF NOT EXISTS ${sql(tables.testResults)}(
54
+ id TEXT PRIMARY KEY,
55
+ hashTestCase TEXT NOT NULL,
56
+ ordering INTEGER NOT NULL,
57
+ input TEXT,
58
+ result TEXT,
59
+ expected TEXT,
60
+ label TEXT NOT NULL,
61
+ tags TEXT NOT NULL,
62
+ timeMillis INTEGER NOT NULL
63
+ );
64
+ `;
65
+ yield* sql`
66
+ CREATE TABLE IF NOT EXISTS ${sql(tables.testRunResults)}(
67
+ testRun INTEGER NOT NULL,
68
+ testResult TEXT NOT NULL,
69
+ FOREIGN KEY (testRun) REFERENCES ${sql(tables.testRuns)}(id),
70
+ FOREIGN KEY (testResult) REFERENCES ${sql(tables.testResults)}(id),
71
+ UNIQUE (testRun, testResult)
72
+ );
73
+ `;
74
+ const insertTestResult = (testResult, name) => P.Effect.gen(function* () {
75
+ const encoded = yield* P.Schema.encode(TestResultWriteSchema)(testResult);
76
+ yield* sql`
77
+ INSERT INTO ${sql(tables.testResults)}
78
+ ${sql.insert(encoded)}
79
+ ON CONFLICT(id) DO NOTHING;
80
+ `;
81
+ yield* sql`
82
+ INSERT INTO ${sql(tables.testRunResults)}
83
+ VALUES (
84
+ (
85
+ SELECT id FROM ${sql(tables.testRuns)}
86
+ WHERE hash IS NULL AND name = ${name}
87
+ ),
88
+ ${encoded.id}
89
+ )
90
+ ON CONFLICT(testRun, testResult) DO NOTHING;
91
+ `;
92
+ });
93
+ const getTestResultsStream = testRun => P.Effect.gen(function* () {
94
+ const raw = yield* sql`
95
+ SELECT res.* FROM ${sql(tables.testResults)} res
96
+ JOIN ${sql(tables.testRunResults)} runres ON res.id = runres.testResult
97
+ JOIN ${sql(tables.testRuns)} runs ON runs.id = runres.testRun
98
+ WHERE runs.id = ${testRun.id}
99
+ ORDER BY ordering ASC;
100
+ `;
101
+ return yield* P.Schema.decode(TestResultsSchema)(raw);
102
+ }).pipe(P.Stream.fromIterableEffect);
103
+ const hasResults = testRun => P.Effect.gen(function* () {
104
+ const b = yield* sql`
105
+ SELECT COUNT(*) count FROM ${sql(tables.testRunResults)}
106
+ WHERE testRun = ${testRun.id};
107
+ `;
108
+ const r = yield* P.Schema.decode(HasResultsSchema)(b);
109
+ return r[0].count > 0;
110
+ });
111
+ const getPreviousTestRun = name => P.Effect.gen(function* () {
112
+ const r = yield* sql`
113
+ SELECT * FROM ${sql(tables.testRuns)}
114
+ WHERE hash IS NOT NULL AND name = ${name}
115
+ ORDER BY id DESC
116
+ LIMIT 1;
117
+ `;
118
+ const p = yield* P.Schema.decode(TestRunsReadSchema)(r);
119
+ return P.Array.head(p);
120
+ });
121
+ // const getPreviousTestResultsStream = (name: string) =>
122
+ // sql<TestResultRead>`
123
+ // SELECT res.* FROM ${sql(tables.testResults)} res
124
+ // JOIN ${sql(tables.testRunResults)} runres ON res.hash = runres.testResult
125
+ // JOIN ${sql(tables.testRuns)} runs ON runs.id = runres.testRun
126
+ // WHERE runs.hash IS NULL AND runs.name = ${name};
127
+ // `.stream.pipe(
128
+ // P.Stream.mapEffect(P.Schema.decode(TestResultSchema)),
129
+ // );
130
+ const getAllTestRuns = P.Effect.gen(function* () {
131
+ const results = yield* sql`
132
+ SELECT * from ${sql(tables.testRuns)};
133
+ `;
134
+ return yield* P.Schema.decode(TestRunsReadSchema)(results);
135
+ });
136
+ const getAllTestResults = P.Effect.gen(function* () {
137
+ const results = yield* sql`
138
+ SELECT * from ${sql(tables.testResults)};
139
+ `;
140
+ return yield* P.Schema.decode(TestResultsSchema)(results);
141
+ });
142
+ const getOrCreateCurrentTestRun = name => P.Effect.gen(function* () {
143
+ const current = yield* sql`
144
+ SELECT *
145
+ FROM ${sql(tables.testRuns)}
146
+ WHERE hash IS NULL AND name = ${name};
147
+ `;
148
+ if (current.length === 0) {
149
+ return yield* sql`
150
+ INSERT INTO ${sql(tables.testRuns)}
151
+ ${sql.insert({
152
+ name
153
+ })}
154
+ RETURNING *;
155
+ `;
156
+ }
157
+ return current;
158
+ }).pipe(P.Effect.map(P.Array.unsafeGet(0)));
159
+ const clearTestRun = testRun => P.Effect.gen(function* () {
160
+ yield* sql`
161
+ DELETE FROM ${sql(tables.testRunResults)}
162
+ WHERE testRun = ${testRun.id};
163
+ `;
164
+ });
165
+ const commitCurrentTestRun = ({
166
+ name,
167
+ hash
168
+ }) => P.Effect.gen(function* () {
169
+ // Transaction?
170
+ yield* sql`
171
+ UPDATE ${sql(tables.testRuns)}
172
+ SET hash = ${hash}
173
+ WHERE id = (
174
+ SELECT id
175
+ FROM ${sql(tables.testRuns)}
176
+ WHERE hash IS NULL AND name = ${name}
177
+ );
178
+ `;
179
+ yield* sql`
180
+ INSERT INTO ${sql(tables.testRuns)}
181
+ ${sql.insert({
182
+ name
183
+ })};
184
+ `;
185
+ });
186
+ const service = {
187
+ clearTestRun,
188
+ commitCurrentTestRun,
189
+ getAllTestResults,
190
+ getAllTestRuns,
191
+ getOrCreateCurrentTestRun,
192
+ getPreviousTestRun,
193
+ getTestResultsStream,
194
+ hasResults,
195
+ insertTestResult
196
+ };
197
+ return service;
198
+ });
199
+ const LiveLayer = exports.LiveLayer = /*#__PURE__*/P.Layer.effect(TestRepository, makeTestRepository);
200
+ const makeSqliteLiveLayer = dbPath => Sqlite.client.layer(P.Config.all({
201
+ filename: P.Config.string('PREDICTION_TESTING_SQLITE_FILENAME').pipe(P.Config.withDefault(dbPath))
202
+ }));
203
+ exports.makeSqliteLiveLayer = makeSqliteLiveLayer;
204
+ const SqliteTestLayer = exports.SqliteTestLayer = /*#__PURE__*/Sqlite.client.layer( /*#__PURE__*/P.Config.all({
205
+ filename: /*#__PURE__*/P.Config.string('PREDICTION_TESTING_SQLITE_FILENAME').pipe( /*#__PURE__*/P.Config.withDefault('test.db'))
206
+ }));
207
+ //# 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":[]}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ var t = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/vitest"));
4
+ var P = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("../prelude.js"));
5
+ var T = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./Test.js"));
6
+ var TR = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./Test.repository.sqlite.js"));
7
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
8
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
9
+ const add = input => P.Effect.succeed(input + 1);
10
+ const subtract = input => P.Effect.succeed(input - 1);
11
+ const testCases = [{
12
+ input: 1,
13
+ expected: 2
14
+ }, {
15
+ input: 2,
16
+ expected: 3
17
+ }, {
18
+ input: 3,
19
+ expected: 4
20
+ }];
21
+ t.describe('Test.repository.sqlite', () => {
22
+ t.effect('getOrCreateCurrentTestRun', () => P.Effect.gen(function* () {
23
+ const name = 'getOrCreateCurrentTestRun';
24
+ const repository = yield* TR.TestRepository;
25
+ const a = yield* repository.getOrCreateCurrentTestRun(name);
26
+ yield* repository.commitCurrentTestRun({
27
+ name,
28
+ hash: `${name}-1`
29
+ });
30
+ const b = yield* repository.getOrCreateCurrentTestRun(name);
31
+ t.assert.notStrictEqual(a, b);
32
+ }).pipe(P.Effect.tapError(e => P.Console.error(e)), P.Effect.provide(TR.LiveLayer), P.Effect.provide(TR.SqliteTestLayer)));
33
+ t.effect('clearTestRun', () => P.Effect.gen(function* () {
34
+ const name = 'clearTestRun';
35
+ const repository = yield* TR.TestRepository;
36
+ const currentTestRun = yield* repository.getOrCreateCurrentTestRun(name);
37
+ const results = yield* T.all({
38
+ testCases,
39
+ program: add,
40
+ name
41
+ }).pipe(P.Effect.flatMap(P.Stream.runCollect));
42
+ t.assert.strictEqual(results.length, 3);
43
+ yield* repository.clearTestRun(currentTestRun);
44
+ const postClear = yield* repository.getTestResultsStream(currentTestRun).pipe(P.Stream.runCollect);
45
+ t.assert.strictEqual(postClear.length, 0);
46
+ }).pipe(P.Effect.tapError(e => P.Console.error(e)), P.Effect.provide(TR.LiveLayer), P.Effect.provide(TR.SqliteTestLayer)));
47
+ t.effect('insertTestResult', () => P.Effect.gen(function* () {
48
+ const name = 'insertTestResult';
49
+ const repository = yield* TR.TestRepository;
50
+ yield* repository.getOrCreateCurrentTestRun(name);
51
+ const r1 = yield* T.all({
52
+ testCases,
53
+ program: add,
54
+ name
55
+ }).pipe(P.Stream.runCollect);
56
+ // yield* repository.commitCurrentTestRun({
57
+ // name,
58
+ // hash: `${name}-1`,
59
+ // });
60
+ // const r2 = yield* T.all({
61
+ // testCases: [
62
+ // {input: 4, expected: 2},
63
+ // {input: 5, expected: 3},
64
+ // {input: 6, expected: 4},
65
+ // ],
66
+ // program: add,
67
+ // name,
68
+ // }).pipe(P.Stream.runCollect);
69
+ //
70
+ // t.assert.equal(r1.length, r2.length);
71
+ }).pipe(P.Effect.tapError(e => P.Console.error(e)), P.Effect.provide(TR.LiveLayer), P.Effect.provide(TR.SqliteTestLayer)));
72
+ });
73
+ //# sourceMappingURL=Test.repository.sqlite.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Test.repository.sqlite.spec.js","names":["t","_interopRequireWildcard","require","P","T","TR","_getRequireWildcardCache","e","WeakMap","r","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","add","input","Effect","succeed","subtract","testCases","expected","describe","effect","gen","name","repository","TestRepository","getOrCreateCurrentTestRun","commitCurrentTestRun","hash","b","assert","notStrictEqual","pipe","tapError","Console","error","provide","LiveLayer","SqliteTestLayer","currentTestRun","results","all","program","flatMap","Stream","runCollect","strictEqual","length","clearTestRun","postClear","getTestResultsStream","r1"],"sources":["../../../src/internal/Test.repository.sqlite.spec.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.showTitle = exports.showRow = exports.showHeader = exports.showBorder = exports.colorPositive = exports.colorNegative = void 0;
7
+ var _ansiColors = /*#__PURE__*/_interopRequireDefault( /*#__PURE__*/require("ansi-colors"));
8
+ var _Number = /*#__PURE__*/require("effect/Number");
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ const showBorder = (cfg, columnWidths, position) => {
11
+ const l = {
12
+ 'top-title': cfg.cornerTopLeft,
13
+ top: cfg.cornerTopLeft,
14
+ middle: cfg.cornerLeft,
15
+ 'bottom-title': cfg.cornerLeft,
16
+ bottom: cfg.cornerBottomLeft
17
+ };
18
+ const r = {
19
+ 'top-title': cfg.cornerTopRight,
20
+ top: cfg.cornerTopRight,
21
+ middle: cfg.cornerRight,
22
+ 'bottom-title': cfg.cornerRight,
23
+ bottom: cfg.cornerBottomRight
24
+ };
25
+ const m = {
26
+ 'top-title': cfg.horizontal,
27
+ top: cfg.cornerTop,
28
+ middle: cfg.corner,
29
+ 'bottom-title': cfg.cornerTop,
30
+ bottom: cfg.cornerBottom
31
+ };
32
+ return l[position] + columnWidths.reduce((s, w, i, xs) => s + (i < xs.length - 1 ? cfg.horizontal.repeat(w + cfg.columnPadding) + m[position] : cfg.horizontal.repeat(w + cfg.columnPadding)), '') + r[position] + '\n';
33
+ };
34
+ exports.showBorder = showBorder;
35
+ const showHeader = (cfg, columnWidths, columns) => {
36
+ return columns.map(({
37
+ label
38
+ }, i) => cfg.vertical + ' ' + label.padEnd(columnWidths[i]) + ' ').join('') + cfg.vertical + '\n';
39
+ };
40
+ exports.showHeader = showHeader;
41
+ const showTitle = (cfg, columnWidths, title) => {
42
+ const diff = title.length - _ansiColors.default.stripColor(title).length;
43
+ return showBorder(cfg, columnWidths, 'top-title') + cfg.vertical + title.padStart(title.length + 1).padEnd(diff + columnWidths.reduce(_Number.sum) + columnWidths.length * 3 - 1) + cfg.vertical + '\n' + showBorder(cfg, columnWidths, 'bottom-title');
44
+ };
45
+ exports.showTitle = showTitle;
46
+ const showRow = (cfg, row, columnWidths, height) => {
47
+ let s = '';
48
+ for (let j = 0; j < height; j++) {
49
+ for (let columnIndex = 0; columnIndex < row.length; columnIndex++) {
50
+ const [key, values] = row[columnIndex];
51
+ const x = values[j];
52
+ const u = _ansiColors.default.stripColor(x);
53
+ const w = columnWidths[columnIndex];
54
+ const n = w + x.length - u.length;
55
+ s += cfg.vertical + ' ' + x.padEnd(n) + ' ';
56
+ }
57
+ s += cfg.vertical + '\n';
58
+ }
59
+ return s;
60
+ };
61
+ exports.showRow = showRow;
62
+ const colorPositive = n => n < 0 ? _ansiColors.default.red : n > 0 ? _ansiColors.default.green : _ansiColors.default.white;
63
+ exports.colorPositive = colorPositive;
64
+ const colorNegative = n => n > 0 ? _ansiColors.default.red : n < 0 ? _ansiColors.default.green : _ansiColors.default.white;
65
+ exports.colorNegative = colorNegative;
66
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","names":["_ansiColors","_interopRequireDefault","require","_Number","obj","__esModule","default","showBorder","cfg","columnWidths","position","l","cornerTopLeft","top","middle","cornerLeft","bottom","cornerBottomLeft","r","cornerTopRight","cornerRight","cornerBottomRight","m","horizontal","cornerTop","corner","cornerBottom","reduce","s","w","i","xs","length","repeat","columnPadding","exports","showHeader","columns","map","label","vertical","padEnd","join","showTitle","title","diff","colors","stripColor","padStart","sum","showRow","row","height","j","columnIndex","key","values","x","u","n","colorPositive","red","green","white","colorNegative"],"sources":["../../../src/internal/common.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}