@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.
- package/README.md +273 -0
- package/dist/cjs/Classify.js +36 -0
- package/dist/cjs/Classify.js.map +1 -0
- package/dist/cjs/DisplayConfig.js +34 -0
- package/dist/cjs/DisplayConfig.js.map +1 -0
- package/dist/cjs/Error.js +35 -0
- package/dist/cjs/Error.js.map +1 -0
- package/dist/cjs/Show.js +27 -0
- package/dist/cjs/Show.js.map +1 -0
- package/dist/cjs/Test.js +36 -0
- package/dist/cjs/Test.js.map +1 -0
- package/dist/cjs/Test.repository.js +37 -0
- package/dist/cjs/Test.repository.js.map +1 -0
- package/dist/cjs/index.js +51 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/internal/Classify.js +123 -0
- package/dist/cjs/internal/Classify.js.map +1 -0
- package/dist/cjs/internal/DisplayConfig.js +23 -0
- package/dist/cjs/internal/DisplayConfig.js.map +1 -0
- package/dist/cjs/internal/Test.js +178 -0
- package/dist/cjs/internal/Test.js.map +1 -0
- package/dist/cjs/internal/Test.repository.sqlite.js +230 -0
- package/dist/cjs/internal/Test.repository.sqlite.js.map +1 -0
- package/dist/cjs/internal/Test.repository.sqlite.spec.js +96 -0
- package/dist/cjs/internal/Test.repository.sqlite.spec.js.map +1 -0
- package/dist/cjs/internal/common.js +70 -0
- package/dist/cjs/internal/common.js.map +1 -0
- package/dist/cjs/internal/diff.js +86 -0
- package/dist/cjs/internal/diff.js.map +1 -0
- package/dist/cjs/internal/format-diff.js +162 -0
- package/dist/cjs/internal/format-diff.js.map +1 -0
- package/dist/cjs/internal/format-diff.spec.js +102 -0
- package/dist/cjs/internal/format-diff.spec.js.map +1 -0
- package/dist/cjs/internal/lib/Schema.js +39 -0
- package/dist/cjs/internal/lib/Schema.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/clone.js +35 -0
- package/dist/cjs/internal/lib/jsondiffpatch/clone.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/contexts/context.js +47 -0
- package/dist/cjs/internal/lib/jsondiffpatch/contexts/context.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/contexts/diff.js +42 -0
- package/dist/cjs/internal/lib/jsondiffpatch/contexts/diff.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/contexts/patch.js +26 -0
- package/dist/cjs/internal/lib/jsondiffpatch/contexts/patch.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/contexts/reverse.js +25 -0
- package/dist/cjs/internal/lib/jsondiffpatch/contexts/reverse.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/date-reviver.js +18 -0
- package/dist/cjs/internal/lib/jsondiffpatch/date-reviver.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/diffpatcher.js +76 -0
- package/dist/cjs/internal/lib/jsondiffpatch/diffpatcher.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/filters/arrays.js +388 -0
- package/dist/cjs/internal/lib/jsondiffpatch/filters/arrays.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/filters/dates.js +24 -0
- package/dist/cjs/internal/lib/jsondiffpatch/filters/dates.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/filters/lcs.js +78 -0
- package/dist/cjs/internal/lib/jsondiffpatch/filters/lcs.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/filters/nested.js +157 -0
- package/dist/cjs/internal/lib/jsondiffpatch/filters/nested.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/filters/texts.js +123 -0
- package/dist/cjs/internal/lib/jsondiffpatch/filters/texts.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/filters/trivial.js +108 -0
- package/dist/cjs/internal/lib/jsondiffpatch/filters/trivial.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/formatters/annotated.js +169 -0
- package/dist/cjs/internal/lib/jsondiffpatch/formatters/annotated.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/formatters/base.js +198 -0
- package/dist/cjs/internal/lib/jsondiffpatch/formatters/base.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/formatters/html.js +243 -0
- package/dist/cjs/internal/lib/jsondiffpatch/formatters/html.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/formatters/jsonpatch.js +178 -0
- package/dist/cjs/internal/lib/jsondiffpatch/formatters/jsonpatch.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/index.js +65 -0
- package/dist/cjs/internal/lib/jsondiffpatch/index.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/pipe.js +110 -0
- package/dist/cjs/internal/lib/jsondiffpatch/pipe.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/processor.js +71 -0
- package/dist/cjs/internal/lib/jsondiffpatch/processor.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/types.js +6 -0
- package/dist/cjs/internal/lib/jsondiffpatch/types.js.map +1 -0
- package/dist/cjs/internal/lib/jsondiffpatch/with-text-diffs.js +92 -0
- package/dist/cjs/internal/lib/jsondiffpatch/with-text-diffs.js.map +1 -0
- package/dist/cjs/internal/pack.js +81 -0
- package/dist/cjs/internal/pack.js.map +1 -0
- package/dist/cjs/internal/stats.js +144 -0
- package/dist/cjs/internal/stats.js.map +1 -0
- package/dist/cjs/internal/summarize.js +173 -0
- package/dist/cjs/internal/summarize.js.map +1 -0
- package/dist/cjs/pack.js +33 -0
- package/dist/cjs/pack.js.map +1 -0
- package/dist/cjs/prelude.js +95 -0
- package/dist/cjs/prelude.js.map +1 -0
- package/dist/dts/Classify.d.ts +20 -0
- package/dist/dts/Classify.d.ts.map +1 -0
- package/dist/dts/DisplayConfig.d.ts +19 -0
- package/dist/dts/DisplayConfig.d.ts.map +1 -0
- package/dist/dts/Error.d.ts +10 -0
- package/dist/dts/Error.d.ts.map +1 -0
- package/dist/dts/Show.d.ts +37 -0
- package/dist/dts/Show.d.ts.map +1 -0
- package/dist/dts/Test.d.ts +48 -0
- package/dist/dts/Test.d.ts.map +1 -0
- package/dist/dts/Test.repository.d.ts +40 -0
- package/dist/dts/Test.repository.d.ts.map +1 -0
- package/dist/dts/index.d.ts +8 -0
- package/dist/dts/index.d.ts.map +1 -0
- package/dist/dts/internal/Classify.d.ts +34 -0
- package/dist/dts/internal/Classify.d.ts.map +1 -0
- package/dist/dts/internal/DisplayConfig.d.ts +3 -0
- package/dist/dts/internal/DisplayConfig.d.ts.map +1 -0
- package/dist/dts/internal/Test.d.ts +39 -0
- package/dist/dts/internal/Test.d.ts.map +1 -0
- package/dist/dts/internal/Test.repository.sqlite.d.ts +10 -0
- package/dist/dts/internal/Test.repository.sqlite.d.ts.map +1 -0
- package/dist/dts/internal/Test.repository.sqlite.spec.d.ts +2 -0
- package/dist/dts/internal/Test.repository.sqlite.spec.d.ts.map +1 -0
- package/dist/dts/internal/common.d.ts +11 -0
- package/dist/dts/internal/common.d.ts.map +1 -0
- package/dist/dts/internal/diff.d.ts +9 -0
- package/dist/dts/internal/diff.d.ts.map +1 -0
- package/dist/dts/internal/format-diff.d.ts +3 -0
- package/dist/dts/internal/format-diff.d.ts.map +1 -0
- package/dist/dts/internal/format-diff.spec.d.ts +2 -0
- package/dist/dts/internal/format-diff.spec.d.ts.map +1 -0
- package/dist/dts/internal/lib/Schema.d.ts +4 -0
- package/dist/dts/internal/lib/Schema.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/clone.d.ts +2 -0
- package/dist/dts/internal/lib/jsondiffpatch/clone.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/contexts/context.d.ts +18 -0
- package/dist/dts/internal/lib/jsondiffpatch/contexts/context.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/contexts/diff.d.ts +15 -0
- package/dist/dts/internal/lib/jsondiffpatch/contexts/diff.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/contexts/patch.d.ts +11 -0
- package/dist/dts/internal/lib/jsondiffpatch/contexts/patch.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/contexts/reverse.d.ts +11 -0
- package/dist/dts/internal/lib/jsondiffpatch/contexts/reverse.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/date-reviver.d.ts +2 -0
- package/dist/dts/internal/lib/jsondiffpatch/date-reviver.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/diffpatcher.d.ts +14 -0
- package/dist/dts/internal/lib/jsondiffpatch/diffpatcher.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/filters/arrays.d.ts +16 -0
- package/dist/dts/internal/lib/jsondiffpatch/filters/arrays.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/filters/dates.d.ts +4 -0
- package/dist/dts/internal/lib/jsondiffpatch/filters/dates.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/filters/lcs.d.ts +11 -0
- package/dist/dts/internal/lib/jsondiffpatch/filters/lcs.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/filters/nested.d.ts +11 -0
- package/dist/dts/internal/lib/jsondiffpatch/filters/nested.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/filters/texts.d.ts +8 -0
- package/dist/dts/internal/lib/jsondiffpatch/filters/texts.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/filters/trivial.d.ts +8 -0
- package/dist/dts/internal/lib/jsondiffpatch/filters/trivial.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/formatters/annotated.d.ts +30 -0
- package/dist/dts/internal/lib/jsondiffpatch/formatters/annotated.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/formatters/base.d.ts +60 -0
- package/dist/dts/internal/lib/jsondiffpatch/formatters/base.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/formatters/html.d.ts +28 -0
- package/dist/dts/internal/lib/jsondiffpatch/formatters/html.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/formatters/jsonpatch.d.ts +62 -0
- package/dist/dts/internal/lib/jsondiffpatch/formatters/jsonpatch.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/index.d.ts +17 -0
- package/dist/dts/internal/lib/jsondiffpatch/index.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/pipe.d.ts +25 -0
- package/dist/dts/internal/lib/jsondiffpatch/pipe.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/processor.d.ts +20 -0
- package/dist/dts/internal/lib/jsondiffpatch/processor.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/types.d.ts +36 -0
- package/dist/dts/internal/lib/jsondiffpatch/types.d.ts.map +1 -0
- package/dist/dts/internal/lib/jsondiffpatch/with-text-diffs.d.ts +19 -0
- package/dist/dts/internal/lib/jsondiffpatch/with-text-diffs.d.ts.map +1 -0
- package/dist/dts/internal/pack.d.ts +2 -0
- package/dist/dts/internal/pack.d.ts.map +1 -0
- package/dist/dts/internal/stats.d.ts +9 -0
- package/dist/dts/internal/stats.d.ts.map +1 -0
- package/dist/dts/internal/summarize.d.ts +11 -0
- package/dist/dts/internal/summarize.d.ts.map +1 -0
- package/dist/dts/pack.d.ts +2 -0
- package/dist/dts/pack.d.ts.map +1 -0
- package/dist/dts/prelude.d.ts +24 -0
- package/dist/dts/prelude.d.ts.map +1 -0
- package/dist/esm/Classify.js +13 -0
- package/dist/esm/Classify.js.map +1 -0
- package/dist/esm/DisplayConfig.js +11 -0
- package/dist/esm/DisplayConfig.js.map +1 -0
- package/dist/esm/Error.js +12 -0
- package/dist/esm/Error.js.map +1 -0
- package/dist/esm/Show.js +27 -0
- package/dist/esm/Show.js.map +1 -0
- package/dist/esm/Test.js +13 -0
- package/dist/esm/Test.js.map +1 -0
- package/dist/esm/Test.repository.js +14 -0
- package/dist/esm/Test.repository.js.map +1 -0
- package/dist/esm/index.js +28 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal/Classify.js +100 -0
- package/dist/esm/internal/Classify.js.map +1 -0
- package/dist/esm/internal/DisplayConfig.js +23 -0
- package/dist/esm/internal/DisplayConfig.js.map +1 -0
- package/dist/esm/internal/Test.js +155 -0
- package/dist/esm/internal/Test.js.map +1 -0
- package/dist/esm/internal/Test.repository.sqlite.js +207 -0
- package/dist/esm/internal/Test.repository.sqlite.js.map +1 -0
- package/dist/esm/internal/Test.repository.sqlite.spec.js +73 -0
- package/dist/esm/internal/Test.repository.sqlite.spec.js.map +1 -0
- package/dist/esm/internal/common.js +66 -0
- package/dist/esm/internal/common.js.map +1 -0
- package/dist/esm/internal/diff.js +82 -0
- package/dist/esm/internal/diff.js.map +1 -0
- package/dist/esm/internal/format-diff.js +158 -0
- package/dist/esm/internal/format-diff.js.map +1 -0
- package/dist/esm/internal/format-diff.spec.js +79 -0
- package/dist/esm/internal/format-diff.spec.js.map +1 -0
- package/dist/esm/internal/lib/Schema.js +16 -0
- package/dist/esm/internal/lib/Schema.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/clone.js +35 -0
- package/dist/esm/internal/lib/jsondiffpatch/clone.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/contexts/context.js +47 -0
- package/dist/esm/internal/lib/jsondiffpatch/contexts/context.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/contexts/diff.js +38 -0
- package/dist/esm/internal/lib/jsondiffpatch/contexts/diff.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/contexts/patch.js +22 -0
- package/dist/esm/internal/lib/jsondiffpatch/contexts/patch.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/contexts/reverse.js +21 -0
- package/dist/esm/internal/lib/jsondiffpatch/contexts/reverse.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/date-reviver.js +18 -0
- package/dist/esm/internal/lib/jsondiffpatch/date-reviver.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/diffpatcher.js +49 -0
- package/dist/esm/internal/lib/jsondiffpatch/diffpatcher.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/filters/arrays.js +384 -0
- package/dist/esm/internal/lib/jsondiffpatch/filters/arrays.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/filters/dates.js +24 -0
- package/dist/esm/internal/lib/jsondiffpatch/filters/dates.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/filters/lcs.js +78 -0
- package/dist/esm/internal/lib/jsondiffpatch/filters/lcs.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/filters/nested.js +153 -0
- package/dist/esm/internal/lib/jsondiffpatch/filters/nested.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/filters/texts.js +123 -0
- package/dist/esm/internal/lib/jsondiffpatch/filters/texts.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/filters/trivial.js +108 -0
- package/dist/esm/internal/lib/jsondiffpatch/filters/trivial.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/formatters/annotated.js +165 -0
- package/dist/esm/internal/lib/jsondiffpatch/formatters/annotated.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/formatters/base.js +198 -0
- package/dist/esm/internal/lib/jsondiffpatch/formatters/base.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/formatters/html.js +239 -0
- package/dist/esm/internal/lib/jsondiffpatch/formatters/html.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/formatters/jsonpatch.js +174 -0
- package/dist/esm/internal/lib/jsondiffpatch/formatters/jsonpatch.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/index.js +61 -0
- package/dist/esm/internal/lib/jsondiffpatch/index.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/pipe.js +110 -0
- package/dist/esm/internal/lib/jsondiffpatch/pipe.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/processor.js +71 -0
- package/dist/esm/internal/lib/jsondiffpatch/processor.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/types.js +6 -0
- package/dist/esm/internal/lib/jsondiffpatch/types.js.map +1 -0
- package/dist/esm/internal/lib/jsondiffpatch/with-text-diffs.js +88 -0
- package/dist/esm/internal/lib/jsondiffpatch/with-text-diffs.js.map +1 -0
- package/dist/esm/internal/pack.js +58 -0
- package/dist/esm/internal/pack.js.map +1 -0
- package/dist/esm/internal/stats.js +117 -0
- package/dist/esm/internal/stats.js.map +1 -0
- package/dist/esm/internal/summarize.js +146 -0
- package/dist/esm/internal/summarize.js.map +1 -0
- package/dist/esm/pack.js +10 -0
- package/dist/esm/pack.js.map +1 -0
- package/dist/esm/prelude.js +72 -0
- package/dist/esm/prelude.js.map +1 -0
- 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":";;;;;;AAAA,IAAAA,SAAA,gBAAAC,OAAA;AAEA,IAAAC,CAAA,gBAAAC,uBAAA,eAAAF,OAAA;AAAmC,SAAAG,yBAAAC,CAAA;EAAA,yBAAAC,OAAA;EAAA,IAAAC,CAAA,OAAAD,OAAA;IAAAE,CAAA,OAAAF,OAAA;EAAA,QAAAF,wBAAA,YAAAA,CAAAC,CAAA;IAAA,OAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA;EAAA,GAAAF,CAAA;AAAA;AAAA,SAAAF,wBAAAE,CAAA,EAAAE,CAAA;EAAA,KAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA;EAAA,aAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA;IAAAK,OAAA,EAAAL;EAAA;EAAA,IAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA;EAAA,IAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA;EAAA,IAAAQ,CAAA;MAAAC,SAAA;IAAA;IAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA;EAAA,SAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA;IAAA,IAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA;IAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA;EAAA;EAAA,OAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA;AAO5B,MAAMW,MAAM,GAAAC,OAAA,CAAAD,MAAA,GAAG;EAClBE,EAAE,EAAE,IAAI;EACRC,EAAE,EAAE,IAAI;EACRC,EAAE,EAAE,IAAI;EACRC,EAAE,EAAE;CACE;AAEH,MAAMC,WAAW,GAAAL,OAAA,CAAAK,WAAA,gBAA4B5B,CAAC,CAAC6B,MAAM,CAACC,OAAO,CAChE,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,CACP;AAEM,MAAMC,cAAc,GAAGA,CAAOlB,CAAI,EAAEmB,CAAI;AAC3C;AACA;AACA;AACA;AACA,IAAAlC,SAAA,CAAAmC,iBAAiB,EACbC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,SAAS,CAACvB,CAAC,CAAC,CAAC,EAC7BqB,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,SAAS,CAACJ,CAAC,CAAC,CAAC,CAChC;AAACT,OAAA,CAAAQ,cAAA,GAAAA,cAAA;AAEC,MAAMM,YAAY,GAAOC,CAAI,IAAcA,CAAC,KAAK,IAAI,IAAIA,CAAC,KAAKC,SAAS;AAAChB,OAAA,CAAAc,YAAA,GAAAA,YAAA;AAEzE,MAAMG,YAAY,GACrBA,CACIC,OAA4C,EAC5CC,WAAA,GAAsCL,YAAY,EAClDM,aAAA,GAA0CN,YAAY,KAE1D,CAACO,MAAM,EAAEC,QAAQ,KAAI;EACjB,MAAMC,EAAE,GAAGL,OAAO,CAACG,MAAM,EAAEC,QAAQ,CAAC;EACpC,MAAME,IAAI,GAAGL,WAAW,CAACE,MAAM,CAAC;EAChC,MAAMI,IAAI,GAAGL,aAAa,CAACE,QAAQ,CAAC;EAEpC,IAAIE,IAAI,IAAIC,IAAI,EAAE;IACd,OAAO1B,MAAM,CAACE,EAAE;EACpB;EAEA,IAAI,CAACuB,IAAI,IAAI,CAACC,IAAI,IAAIF,EAAE,EAAE;IACtB,OAAOxB,MAAM,CAACG,EAAE;EACpB;EAEA,IAAK,CAACsB,IAAI,IAAIC,IAAI,IAAM,CAACD,IAAI,IAAI,CAACC,IAAI,IAAI,CAACF,EAAG,EAAE;IAC5C,OAAOxB,MAAM,CAACI,EAAE;EACpB;EAEA,OAAOJ,MAAM,CAACK,EAAE;AACpB,CAAC;AAACJ,OAAA,CAAAiB,YAAA,GAAAA,YAAA;AAEC,MAAMS,WAAW,GAAA1B,OAAA,CAAA0B,WAAA,gBAAGjD,CAAC,CAAC6B,MAAM,CAACqB,MAAM,CAAC;EACvCzB,EAAE,EAAEzB,CAAC,CAAC6B,MAAM,CAACsB,MAAM;EACnB3B,EAAE,EAAExB,CAAC,CAAC6B,MAAM,CAACsB,MAAM;EACnBzB,EAAE,EAAE1B,CAAC,CAAC6B,MAAM,CAACsB,MAAM;EACnBxB,EAAE,EAAE3B,CAAC,CAAC6B,MAAM,CAACsB,MAAM;EACnBC,SAAS,EAAEpD,CAAC,CAAC6B,MAAM,CAACsB,MAAM;EAC1BE,MAAM,EAAErD,CAAC,CAAC6B,MAAM,CAACsB,MAAM;EACvBG,QAAQ,eAAEtD,CAAC,CAAC6B,MAAM,CAACsB,MAAM,CAACI,IAAI,CAACvD,CAAC,CAAC6B,MAAM,CAAC2B,MAAM,CAAC;EAC/CC,UAAU,eAAEzD,CAAC,CAAC6B,MAAM,CAACsB,MAAM,CAACI,IAAI,CAACvD,CAAC,CAAC6B,MAAM,CAAC2B,MAAM,CAAC;EACjDE,OAAO,eAAE1D,CAAC,CAAC6B,MAAM,CAACsB,MAAM,CAACI,IAAI,CAACvD,CAAC,CAAC6B,MAAM,CAAC2B,MAAM,CAAC;EAC9CG,OAAO,eAAE3D,CAAC,CAAC6B,MAAM,CAACsB,MAAM,CAACI,IAAI,CAACvD,CAAC,CAAC6B,MAAM,CAAC2B,MAAM;CAChD,CAAC;AAEK,MAAMI,KAAK,GAAArC,OAAA,CAAAqC,KAAA,GAAG;EACjBC,KAAK,EAAEA,CAAA,MAAe;IAClBpC,EAAE,EAAE,CAAC;IACLD,EAAE,EAAE,CAAC;IACLE,EAAE,EAAE,CAAC;IACLC,EAAE,EAAE,CAAC;IACLyB,SAAS,EAAE,CAAC;IACZC,MAAM,EAAE,CAAC;IACTC,QAAQ,EAAEtD,CAAC,CAACwD,MAAM,CAACM,IAAI,EAAE;IACzBL,UAAU,EAAEzD,CAAC,CAACwD,MAAM,CAACM,IAAI,EAAE;IAC3BJ,OAAO,EAAE1D,CAAC,CAACwD,MAAM,CAACM,IAAI,EAAE;IACxBH,OAAO,EAAE3D,CAAC,CAACwD,MAAM,CAACM,IAAI;GACzB;CACJ;AAEM,MAAMV,SAAS,GAAIW,CAAS,IAAY;EAC3C,MAAM1D,CAAC,GAAG0D,CAAC,CAACtC,EAAE,IAAIsC,CAAC,CAACtC,EAAE,GAAGsC,CAAC,CAACrC,EAAE,CAAC;EAC9B,OAAOsC,KAAK,CAAC3D,CAAC,CAAC,GAAG,CAAC,GAAGA,CAAC;AAC3B,CAAC;AAACkB,OAAA,CAAA6B,SAAA,GAAAA,SAAA;AAEK,MAAMC,MAAM,GAAIU,CAAS,IAAY;EACxC,MAAM1D,CAAC,GAAG0D,CAAC,CAACtC,EAAE,IAAIsC,CAAC,CAACtC,EAAE,GAAGsC,CAAC,CAACpC,EAAE,CAAC;EAC9B,OAAOqC,KAAK,CAAC3D,CAAC,CAAC,GAAG,CAAC,GAAGA,CAAC;AAC3B,CAAC;AAACkB,OAAA,CAAA8B,MAAA,GAAAA,MAAA;AAEK,MAAMY,GAAG,GAAIC,EAAY,IAC5BA,EAAE,CAACC,MAAM,CAAC,CAACF,GAAG,EAAE3B,CAAC,KAAMA,CAAC,GAAG2B,GAAG,GAAG3B,CAAC,GAAG2B,GAAI,EAAEG,QAAQ,CAAC;AAAC7C,OAAA,CAAA0C,GAAA,GAAAA,GAAA;AAElD,MAAMI,GAAG,GAAIH,EAAY,IAC5BA,EAAE,CAACC,MAAM,CAAC,CAACE,GAAG,EAAE/B,CAAC,KAAMA,CAAC,GAAG+B,GAAG,GAAG/B,CAAC,GAAG+B,GAAI,EAAE,CAACD,QAAQ,CAAC;AAAC7C,OAAA,CAAA8C,GAAA,GAAAA,GAAA;AAEnD,MAAMC,IAAI,GAAIJ,EAAY,IAAwB;EACrD,IAAIA,EAAE,CAACK,MAAM,KAAK,CAAC,EAAE;IACjB,OAAOhC,SAAS;EACpB;EAEA,OAAO2B,EAAE,CAACC,MAAM,CAAC,CAACtD,CAAC,EAAEmB,CAAC,KAAKnB,CAAC,GAAGmB,CAAC,EAAE,CAAC,CAAC,GAAGkC,EAAE,CAACK,MAAM;AACpD,CAAC;AAAChD,OAAA,CAAA+C,IAAA,GAAAA,IAAA;AAEK,MAAME,MAAM,GAAIN,EAAY,IAA6B;EAC5D,IAAIA,EAAE,CAACK,MAAM,KAAK,CAAC,EAAE;IACjB,OAAOvE,CAAC,CAACwD,MAAM,CAACM,IAAI,EAAE;EAC1B;EAEA,MAAMW,MAAM,GAAGP,EAAE,CAACQ,KAAK,EAAE,CAACC,IAAI,CAAC,CAAC9D,CAAC,EAAEmB,CAAC,KAAKnB,CAAC,GAAGmB,CAAC,CAAC;EAC/C,MAAM4C,KAAK,GAAGC,IAAI,CAACC,KAAK,CAACL,MAAM,CAACF,MAAM,GAAG,CAAC,CAAC;EAE3C,MAAMlE,CAAC,GACHoE,MAAM,CAACF,MAAM,GAAG,CAAC,KAAK,CAAC,GACjB,CAACE,MAAM,CAACG,KAAK,GAAG,CAAC,CAAC,GAAGH,MAAM,CAACG,KAAK,CAAC,IAAI,CAAC,GACvCH,MAAM,CAACG,KAAK,CAAC;EAEvB,OAAO5E,CAAC,CAACwD,MAAM,CAACuB,YAAY,CAAC1E,CAAC,CAAC;AACnC,CAAC;AAACkB,OAAA,CAAAiD,MAAA,GAAAA,MAAA","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":[]}
|