@scanly/benchmark 2.0.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 +3 -0
- package/dist/csv.d.ts +4 -0
- package/dist/csv.d.ts.map +1 -0
- package/dist/csv.js +14 -0
- package/dist/csv.js.map +1 -0
- package/dist/fixture-contract.d.ts +14 -0
- package/dist/fixture-contract.d.ts.map +1 -0
- package/dist/fixture-contract.js +65 -0
- package/dist/fixture-contract.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/measurement.d.ts +11 -0
- package/dist/measurement.d.ts.map +1 -0
- package/dist/measurement.js +43 -0
- package/dist/measurement.js.map +1 -0
- package/dist/quality-gates.d.ts +26 -0
- package/dist/quality-gates.d.ts.map +1 -0
- package/dist/quality-gates.js +71 -0
- package/dist/quality-gates.js.map +1 -0
- package/dist/types.d.ts +376 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +23 -0
package/README.md
ADDED
package/dist/csv.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** RFC4180-style CSV field escaping. */
|
|
2
|
+
export declare function escapeCsvField(value: string | number | boolean | null | undefined): string;
|
|
3
|
+
export declare function toCsvRow(fields: Array<string | number | boolean | null | undefined>): string;
|
|
4
|
+
//# sourceMappingURL=csv.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csv.d.ts","sourceRoot":"","sources":["../src/csv.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAO1F;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,MAAM,CAE5F"}
|
package/dist/csv.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** RFC4180-style CSV field escaping. */
|
|
2
|
+
export function escapeCsvField(value) {
|
|
3
|
+
if (value === null || value === undefined)
|
|
4
|
+
return "";
|
|
5
|
+
const s = String(value);
|
|
6
|
+
if (/[",\r\n]/.test(s)) {
|
|
7
|
+
return `"${s.replace(/"/g, '""')}"`;
|
|
8
|
+
}
|
|
9
|
+
return s;
|
|
10
|
+
}
|
|
11
|
+
export function toCsvRow(fields) {
|
|
12
|
+
return fields.map(escapeCsvField).join(",");
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=csv.js.map
|
package/dist/csv.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csv.js","sourceRoot":"","sources":["../src/csv.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,MAAM,UAAU,cAAc,CAAC,KAAmD;IAChF,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACrD,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;IACtC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,MAA2D;IAClF,OAAO,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { BenchmarkFixture } from "./types.js";
|
|
2
|
+
export interface FixtureEvaluation {
|
|
3
|
+
pass: boolean;
|
|
4
|
+
missingPayloads: string[];
|
|
5
|
+
unexpectedPayloads: string[];
|
|
6
|
+
}
|
|
7
|
+
export declare function expectedPayloads(fixture: BenchmarkFixture): string[];
|
|
8
|
+
export declare function requiredPayloads(fixture: BenchmarkFixture): string[];
|
|
9
|
+
export declare function requiredPayloadsForProfile(fixture: BenchmarkFixture, profile: "fast" | "balanced" | "robust"): string[];
|
|
10
|
+
export declare function evaluateFixture(fixture: BenchmarkFixture, payloads: string[], actual: boolean | {
|
|
11
|
+
ok: boolean;
|
|
12
|
+
errorCode?: string;
|
|
13
|
+
}): FixtureEvaluation;
|
|
14
|
+
//# sourceMappingURL=fixture-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixture-contract.d.ts","sourceRoot":"","sources":["../src/fixture-contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAIpE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAMpE;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,EAAE,CAQvH;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,MAAM,EAAE,EAClB,MAAM,EAAE,OAAO,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACpD,iBAAiB,CAyCnB"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export function expectedPayloads(fixture) {
|
|
2
|
+
return (Array.isArray(fixture.expectedPayload)
|
|
3
|
+
? fixture.expectedPayload
|
|
4
|
+
: [fixture.expectedPayload]).filter((payload) => payload.length > 0);
|
|
5
|
+
}
|
|
6
|
+
export function requiredPayloads(fixture) {
|
|
7
|
+
if (fixture.requiredInstances?.length)
|
|
8
|
+
return fixture.requiredInstances.flatMap((entry) => Array.from({ length: entry.count }, () => entry.payload));
|
|
9
|
+
if (fixture.requiredResults?.length)
|
|
10
|
+
return fixture.requiredResults.map((entry) => entry.payload);
|
|
11
|
+
return fixture.requiredPayloads?.length
|
|
12
|
+
? fixture.requiredPayloads
|
|
13
|
+
: expectedPayloads(fixture);
|
|
14
|
+
}
|
|
15
|
+
export function requiredPayloadsForProfile(fixture, profile) {
|
|
16
|
+
const required = requiredPayloads(fixture);
|
|
17
|
+
const count = fixture.profileExpectedResultCount?.[profile];
|
|
18
|
+
if (count === undefined)
|
|
19
|
+
return required;
|
|
20
|
+
if (!Number.isInteger(count) || count < 1 || count > required.length) {
|
|
21
|
+
throw new RangeError(`Fixture '${fixture.id}' has invalid ${profile} profileExpectedResultCount ${String(count)} for ${required.length} required payload(s).`);
|
|
22
|
+
}
|
|
23
|
+
return required.slice(0, count);
|
|
24
|
+
}
|
|
25
|
+
export function evaluateFixture(fixture, payloads, actual) {
|
|
26
|
+
const decoded = typeof actual === "boolean" ? actual : actual.ok;
|
|
27
|
+
const errorCode = typeof actual === "boolean" ? undefined : actual.errorCode;
|
|
28
|
+
if (fixture.expectedOutcome !== "decode") {
|
|
29
|
+
const allowed = fixture.allowedFailureCodes?.length
|
|
30
|
+
? fixture.allowedFailureCodes
|
|
31
|
+
: fixture.expectedOutcome === "no-symbol" ? ["no_symbol_found"] : ["invalid_image"];
|
|
32
|
+
return { pass: !decoded && payloads.length === 0 && errorCode !== undefined && allowed.includes(errorCode), missingPayloads: [], unexpectedPayloads: [] };
|
|
33
|
+
}
|
|
34
|
+
const required = requiredPayloads(fixture);
|
|
35
|
+
if (!decoded || payloads.length === 0) {
|
|
36
|
+
return { pass: false, missingPayloads: required, unexpectedPayloads: [] };
|
|
37
|
+
}
|
|
38
|
+
if (fixture.requiredPayloads?.length || fixture.requiredInstances?.length) {
|
|
39
|
+
const remaining = [...payloads];
|
|
40
|
+
const missing = required.filter((payload) => {
|
|
41
|
+
const index = remaining.indexOf(payload);
|
|
42
|
+
if (index < 0)
|
|
43
|
+
return true;
|
|
44
|
+
remaining.splice(index, 1);
|
|
45
|
+
return false;
|
|
46
|
+
});
|
|
47
|
+
const allowed = new Set([...required, ...expectedPayloads(fixture)]);
|
|
48
|
+
const unexpected = fixture.allowExtraPayloads === false
|
|
49
|
+
? payloads.filter((payload) => !allowed.has(payload))
|
|
50
|
+
: [];
|
|
51
|
+
return {
|
|
52
|
+
pass: missing.length === 0 && unexpected.length === 0,
|
|
53
|
+
missingPayloads: missing,
|
|
54
|
+
unexpectedPayloads: unexpected,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
const expected = expectedPayloads(fixture);
|
|
58
|
+
const exact = payloads.length === 1 && expected.includes(payloads[0]);
|
|
59
|
+
return {
|
|
60
|
+
pass: exact,
|
|
61
|
+
missingPayloads: exact ? [] : expected.filter((payload) => !payloads.includes(payload)),
|
|
62
|
+
unexpectedPayloads: payloads.filter((payload) => !expected.includes(payload)),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=fixture-contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixture-contract.js","sourceRoot":"","sources":["../src/fixture-contract.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB,EAAG,KAAc,CAAC;AACvD,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAc,CAAC;AACvD,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { BenchmarkFixtureResult, BenchmarkVariance } from "./types.js";
|
|
2
|
+
export declare function standardDeviation(values: number[]): number;
|
|
3
|
+
export declare function summarizeBenchmarkVariance(results: Array<Pick<BenchmarkFixtureResult, "elapsedMs" | "runTimingsMs">>): BenchmarkVariance;
|
|
4
|
+
export declare function summarizeIterationCorrectness(results: Array<Pick<BenchmarkFixtureResult, "pass" | "allPayloads" | "elapsedMs">>): {
|
|
5
|
+
pass: boolean;
|
|
6
|
+
iterationPassCount: number;
|
|
7
|
+
iterationFailureCount: number;
|
|
8
|
+
unstablePayload: boolean;
|
|
9
|
+
runTimingsMs: number[];
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=measurement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"measurement.d.ts","sourceRoot":"","sources":["../src/measurement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAyB,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AASnG,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAI1D;AAWD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,sBAAsB,EAAE,WAAW,GAAG,cAAc,CAAC,CAAC,GAAG,iBAAiB,CAWxI;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,sBAAsB,EAAE,MAAM,GAAG,aAAa,GAAG,WAAW,CAAC,CAAC;;;;;;EAQ/H"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
function median(values) {
|
|
2
|
+
if (!values.length)
|
|
3
|
+
return 0;
|
|
4
|
+
const sorted = [...values].sort((left, right) => left - right);
|
|
5
|
+
const middle = Math.floor(sorted.length / 2);
|
|
6
|
+
return sorted.length % 2 ? sorted[middle] : (sorted[middle - 1] + sorted[middle]) / 2;
|
|
7
|
+
}
|
|
8
|
+
export function standardDeviation(values) {
|
|
9
|
+
if (values.length < 2)
|
|
10
|
+
return 0;
|
|
11
|
+
const average = values.reduce((sum, value) => sum + value, 0) / values.length;
|
|
12
|
+
return Math.sqrt(values.reduce((sum, value) => sum + (value - average) ** 2, 0) / values.length);
|
|
13
|
+
}
|
|
14
|
+
function distribution(values) {
|
|
15
|
+
const sorted = [...values].sort((left, right) => left - right);
|
|
16
|
+
return {
|
|
17
|
+
average: values.reduce((sum, value) => sum + value, 0) / Math.max(1, values.length),
|
|
18
|
+
median: median(values),
|
|
19
|
+
p95: sorted[Math.max(0, Math.ceil(sorted.length * 0.95) - 1)] ?? 0,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export function summarizeBenchmarkVariance(results) {
|
|
23
|
+
const fixtureLatencies = results.map((result) => result.elapsedMs);
|
|
24
|
+
const center = median(fixtureLatencies);
|
|
25
|
+
return {
|
|
26
|
+
perFixtureRunStdDevMs: distribution(results.map((result) => standardDeviation(result.runTimingsMs ?? []))),
|
|
27
|
+
fixtureLatencySpreadMs: {
|
|
28
|
+
standardDeviation: standardDeviation(fixtureLatencies),
|
|
29
|
+
medianAbsoluteDeviation: median(fixtureLatencies.map((value) => Math.abs(value - center))),
|
|
30
|
+
},
|
|
31
|
+
suiteDurationMs: results.reduce((sum, result) => sum + (result.runTimingsMs ?? [result.elapsedMs]).reduce((subtotal, value) => subtotal + value, 0), 0),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export function summarizeIterationCorrectness(results) {
|
|
35
|
+
return {
|
|
36
|
+
pass: results.length > 0 && results.every((result) => result.pass),
|
|
37
|
+
iterationPassCount: results.filter((result) => result.pass).length,
|
|
38
|
+
iterationFailureCount: results.filter((result) => !result.pass).length,
|
|
39
|
+
unstablePayload: new Set(results.map((result) => JSON.stringify(result.allPayloads))).size > 1,
|
|
40
|
+
runTimingsMs: results.map((result) => result.elapsedMs),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=measurement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"measurement.js","sourceRoot":"","sources":["../src/measurement.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { BenchmarkRunSummary } from "./types.js";
|
|
2
|
+
export interface BenchmarkBaseline {
|
|
3
|
+
total: number;
|
|
4
|
+
passed: number;
|
|
5
|
+
successRate?: number;
|
|
6
|
+
averageMs: number;
|
|
7
|
+
medianMs: number;
|
|
8
|
+
p95Ms: number;
|
|
9
|
+
averageAttempts: number;
|
|
10
|
+
p95Attempts: number;
|
|
11
|
+
decodeRecall: number;
|
|
12
|
+
exactPayloadAccuracy: number;
|
|
13
|
+
falsePositiveCount: number;
|
|
14
|
+
falsePositiveRate: number;
|
|
15
|
+
timeoutCount: number;
|
|
16
|
+
multipleCompleteness: {
|
|
17
|
+
total: number;
|
|
18
|
+
complete: number;
|
|
19
|
+
};
|
|
20
|
+
runtime?: BenchmarkRunSummary["runtime"];
|
|
21
|
+
environment?: BenchmarkRunSummary["environment"];
|
|
22
|
+
}
|
|
23
|
+
export declare function evaluateBenchmarkGates(summary: BenchmarkRunSummary, baseline: BenchmarkBaseline, options: {
|
|
24
|
+
fullSuite: boolean;
|
|
25
|
+
}): string[];
|
|
26
|
+
//# sourceMappingURL=quality-gates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quality-gates.d.ts","sourceRoot":"","sources":["../src/quality-gates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,OAAO,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACzC,WAAW,CAAC,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC;CAClD;AAaD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAE;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,EAAE,CAwC3I"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
const HARD_ATTEMPT_LIMITS = {
|
|
2
|
+
fast: { "14-damaged": 18, "16-multiple-codes": 18, "50-multiple-three": 18 },
|
|
3
|
+
balanced: { "14-damaged": 110, "16-multiple-codes": 30, "50-multiple-three": 70 },
|
|
4
|
+
robust: { "14-damaged": 160, "16-multiple-codes": 40, "50-multiple-three": 90 },
|
|
5
|
+
};
|
|
6
|
+
const PROFILE_LIMITS = {
|
|
7
|
+
fast: { p95Attempts: 24, timingRelative: 1.75, averageMs: 250, medianMs: 180, p95Ms: 600 },
|
|
8
|
+
balanced: { p95Attempts: 100, timingRelative: 1.6, averageMs: 1_500, medianMs: 1_000, p95Ms: 4_000 },
|
|
9
|
+
robust: { p95Attempts: 160, timingRelative: 1.75, averageMs: 2_000, medianMs: 1_200, p95Ms: 7_000 },
|
|
10
|
+
};
|
|
11
|
+
export function evaluateBenchmarkGates(summary, baseline, options) {
|
|
12
|
+
const failures = [];
|
|
13
|
+
if (summary.regressionCount > 0)
|
|
14
|
+
failures.push(`${summary.regressionCount} previously-passing fixture(s) regressed`);
|
|
15
|
+
if (summary.environment.scenario !== "fast" && summary.multipleCompleteness.complete !== summary.multipleCompleteness.total)
|
|
16
|
+
failures.push(`multiple completeness is ${summary.multipleCompleteness.complete}/${summary.multipleCompleteness.total}`);
|
|
17
|
+
if (summary.falsePositiveCount > 0)
|
|
18
|
+
failures.push(`${summary.falsePositiveCount} false positive(s) detected`);
|
|
19
|
+
if (summary.timeoutCount > 0)
|
|
20
|
+
failures.push(`${summary.timeoutCount} benchmark timeout(s) detected`);
|
|
21
|
+
if (summary.engineInitializationFailures > 0)
|
|
22
|
+
failures.push(`${summary.engineInitializationFailures} engine initialization failure(s)`);
|
|
23
|
+
if (summary.engineExecutionFailures > 0)
|
|
24
|
+
failures.push(`${summary.engineExecutionFailures} engine execution failure(s)`);
|
|
25
|
+
if (summary.cancellationCorrectness.passed !== summary.cancellationCorrectness.total)
|
|
26
|
+
failures.push(`cancellation correctness is ${summary.cancellationCorrectness.passed}/${summary.cancellationCorrectness.total}`);
|
|
27
|
+
if (summary.phaseTimingAvailability.passed !== summary.phaseTimingAvailability.total)
|
|
28
|
+
failures.push(`phase timing availability is ${summary.phaseTimingAvailability.passed}/${summary.phaseTimingAvailability.total}`);
|
|
29
|
+
if (options.fullSuite) {
|
|
30
|
+
if (!baseline.environment || !baseline.runtime)
|
|
31
|
+
failures.push("baseline lacks required environment metadata");
|
|
32
|
+
else {
|
|
33
|
+
const compatible = baseline.environment.scenario === summary.environment.scenario
|
|
34
|
+
&& baseline.environment.datasetManifestHash === summary.environment.datasetManifestHash
|
|
35
|
+
&& baseline.runtime.kind === summary.runtime.kind
|
|
36
|
+
&& baseline.runtime.platform === summary.runtime.platform
|
|
37
|
+
&& baseline.runtime.arch === summary.runtime.arch
|
|
38
|
+
&& baseline.runtime.nodeVersion?.split(".")[0] === summary.runtime.nodeVersion?.split(".")[0];
|
|
39
|
+
if (!compatible)
|
|
40
|
+
failures.push("benchmark environment is incompatible with the selected immutable baseline");
|
|
41
|
+
}
|
|
42
|
+
if (summary.passed < baseline.passed)
|
|
43
|
+
failures.push(`passed ${summary.passed}; baseline is ${baseline.passed}`);
|
|
44
|
+
if (summary.decodeRecall + Number.EPSILON < baseline.decodeRecall)
|
|
45
|
+
failures.push(`decode recall ${(summary.decodeRecall * 100).toFixed(2)}% is below baseline ${(baseline.decodeRecall * 100).toFixed(2)}%`);
|
|
46
|
+
if (summary.exactPayloadAccuracy + Number.EPSILON < baseline.exactPayloadAccuracy)
|
|
47
|
+
failures.push(`exact payload accuracy ${(summary.exactPayloadAccuracy * 100).toFixed(2)}% is below baseline`);
|
|
48
|
+
if (summary.falsePositiveRate > baseline.falsePositiveRate || summary.falsePositiveCount > baseline.falsePositiveCount)
|
|
49
|
+
failures.push("false-positive rate/count exceed baseline");
|
|
50
|
+
if (summary.multipleCompleteness.complete < baseline.multipleCompleteness.complete)
|
|
51
|
+
failures.push("multiple-code completeness is below baseline");
|
|
52
|
+
if (summary.averageAttempts > baseline.averageAttempts * 1.15)
|
|
53
|
+
failures.push(`average attempts ${summary.averageAttempts.toFixed(1)} exceed baseline tolerance`);
|
|
54
|
+
const limits = PROFILE_LIMITS[summary.environment.scenario];
|
|
55
|
+
if (summary.p95Attempts > Math.min(limits.p95Attempts, Math.ceil(baseline.p95Attempts * 1.15)))
|
|
56
|
+
failures.push(`P95 attempts ${summary.p95Attempts.toFixed(1)} exceed profile limit`);
|
|
57
|
+
if (summary.averageMs > baseline.averageMs * limits.timingRelative || summary.averageMs > limits.averageMs)
|
|
58
|
+
failures.push(`average latency exceeds ${limits.timingRelative}x baseline or ${limits.averageMs}ms absolute limit`);
|
|
59
|
+
if (summary.medianMs > baseline.medianMs * limits.timingRelative || summary.medianMs > limits.medianMs)
|
|
60
|
+
failures.push(`median latency exceeds ${limits.timingRelative}x baseline or ${limits.medianMs}ms absolute limit`);
|
|
61
|
+
if (summary.p95Ms > baseline.p95Ms * limits.timingRelative || summary.p95Ms > limits.p95Ms)
|
|
62
|
+
failures.push(`P95 latency exceeds ${limits.timingRelative}x baseline or ${limits.p95Ms}ms absolute limit`);
|
|
63
|
+
}
|
|
64
|
+
for (const result of summary.results) {
|
|
65
|
+
const limit = HARD_ATTEMPT_LIMITS[summary.environment.scenario][result.id];
|
|
66
|
+
if (limit !== undefined && result.attemptCount > limit)
|
|
67
|
+
failures.push(`${result.id} used ${result.attemptCount} attempts; limit is ${limit}`);
|
|
68
|
+
}
|
|
69
|
+
return failures;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=quality-gates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quality-gates.js","sourceRoot":"","sources":["../src/quality-gates.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
export type BenchmarkCategory = "clear" | "text" | "url" | "wifi" | "low_contrast" | "underexposed" | "overexposed" | "blur" | "motion_blur" | "noise" | "glare" | "inverted" | "rotation" | "perspective" | "small_in_large" | "near_edge" | "complex_background" | "multiple" | "occlusion" | "damaged" | "high_resolution" | "screen_capture" | "unusual_aspect" | "colored_background" | "phone_photo" | "negative" | "adversarial";
|
|
2
|
+
export type BenchmarkExpectedOutcome = "decode" | "no-symbol" | "invalid-input";
|
|
3
|
+
export type BenchmarkFailureCode = "no_symbol_found" | "invalid_image" | "timeout" | "cancelled" | "engine_execution_failure" | "engine_initialization_failure" | "worker_initialization_failure" | "resource_limit_exceeded" | "internal_invariant_failure" | "concurrent_call_rejected" | "session_disposed";
|
|
4
|
+
export type BenchmarkSourceType = "generated" | "project-photo" | "external-open-license";
|
|
5
|
+
export interface BenchmarkFixture {
|
|
6
|
+
id: string;
|
|
7
|
+
file: string;
|
|
8
|
+
category: BenchmarkCategory;
|
|
9
|
+
expectedPayload: string | string[];
|
|
10
|
+
format?: BarcodeFormat;
|
|
11
|
+
formatClass?: BarcodeFormatClass;
|
|
12
|
+
expectedRawBytes?: number[];
|
|
13
|
+
orientation?: number;
|
|
14
|
+
expectedOutcome: BenchmarkExpectedOutcome;
|
|
15
|
+
allowedFailureCodes?: BenchmarkFailureCode[];
|
|
16
|
+
sourceType: BenchmarkSourceType;
|
|
17
|
+
license: string;
|
|
18
|
+
/** Fixed generator seed for reproducible generated fixtures. */
|
|
19
|
+
generatedSeed?: number;
|
|
20
|
+
/** Generator/provenance note describing where transforms are defined. */
|
|
21
|
+
transformMetadata?: string;
|
|
22
|
+
/** Optional: primary payload when multiple codes (stable contract). */
|
|
23
|
+
primaryPayload?: string;
|
|
24
|
+
/** All payloads that must appear for a full pass (multiple fixtures). */
|
|
25
|
+
requiredPayloads?: string[];
|
|
26
|
+
requiredResults?: Array<{
|
|
27
|
+
format: BarcodeFormat;
|
|
28
|
+
payload: string;
|
|
29
|
+
}>;
|
|
30
|
+
/** Required physical instances, including repeated payloads. */
|
|
31
|
+
requiredInstances?: Array<{
|
|
32
|
+
payload: string;
|
|
33
|
+
count: number;
|
|
34
|
+
}>;
|
|
35
|
+
/** Expected unique decode count (benchmark stop hint). */
|
|
36
|
+
expectedResultCount?: number;
|
|
37
|
+
/** Explicit profile-specific completeness contract; omitted profiles require the full fixture truth. */
|
|
38
|
+
profileExpectedResultCount?: Partial<Record<"fast" | "balanced" | "robust", number>>;
|
|
39
|
+
/** Allow extra payloads beyond required set. */
|
|
40
|
+
allowExtraPayloads?: boolean;
|
|
41
|
+
primaryResultRule?: "top-to-bottom-left-to-right";
|
|
42
|
+
geometryMetadata?: Array<{
|
|
43
|
+
payload: string;
|
|
44
|
+
x: number;
|
|
45
|
+
y: number;
|
|
46
|
+
width: number;
|
|
47
|
+
height: number;
|
|
48
|
+
}>;
|
|
49
|
+
notes?: string;
|
|
50
|
+
}
|
|
51
|
+
export interface BenchmarkFixtureResult {
|
|
52
|
+
id: string;
|
|
53
|
+
category: BenchmarkCategory;
|
|
54
|
+
expectedPayload: string | string[];
|
|
55
|
+
actualPayload: string | null;
|
|
56
|
+
allPayloads: string[];
|
|
57
|
+
pass: boolean;
|
|
58
|
+
elapsedMs: number;
|
|
59
|
+
successfulDecoder: string | null;
|
|
60
|
+
preprocessingPath: string | null;
|
|
61
|
+
candidateIndex: number | null;
|
|
62
|
+
attemptCount: number;
|
|
63
|
+
failureReason: string | null;
|
|
64
|
+
expectedOutcome: BenchmarkExpectedOutcome;
|
|
65
|
+
missingPayloads?: string[];
|
|
66
|
+
unexpectedPayloads?: string[];
|
|
67
|
+
requiredPayloadCount?: number;
|
|
68
|
+
decodedPayloadCount?: number;
|
|
69
|
+
timeToFirstResultMs?: number;
|
|
70
|
+
heuristicMetrics?: {
|
|
71
|
+
entropyScore: number;
|
|
72
|
+
highFrequencyRatio: number;
|
|
73
|
+
candidateCountBeforeCap: number;
|
|
74
|
+
pathologicalPathActivated: boolean;
|
|
75
|
+
fallbackAttemptsUsed: number;
|
|
76
|
+
finalResult: "success" | "not-found" | "failure";
|
|
77
|
+
};
|
|
78
|
+
controlledMemoryPeakBytes?: number;
|
|
79
|
+
finalControlledMemoryBytes?: number;
|
|
80
|
+
iterationPassCount?: number;
|
|
81
|
+
iterationFailureCount?: number;
|
|
82
|
+
unstablePayload?: boolean;
|
|
83
|
+
runTimingsMs?: number[];
|
|
84
|
+
phaseTiming?: {
|
|
85
|
+
frameNormalizationMs?: number;
|
|
86
|
+
roiMs?: number;
|
|
87
|
+
localizationMs?: number;
|
|
88
|
+
candidateGenerationMs: number;
|
|
89
|
+
candidateDeduplicationMs?: number;
|
|
90
|
+
preprocessMs: number;
|
|
91
|
+
rotationMs: number;
|
|
92
|
+
engineMs: Record<string, number>;
|
|
93
|
+
validationMs?: number;
|
|
94
|
+
semanticParsingMs?: number;
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
export interface BenchmarkDistribution {
|
|
98
|
+
average: number;
|
|
99
|
+
median: number;
|
|
100
|
+
p95: number;
|
|
101
|
+
}
|
|
102
|
+
export interface BenchmarkSourceIdentity {
|
|
103
|
+
commitSha: string;
|
|
104
|
+
treeSha: string;
|
|
105
|
+
repositoryDirty: boolean;
|
|
106
|
+
packageLockHash: string;
|
|
107
|
+
scenarioHash: string;
|
|
108
|
+
datasetHash: string;
|
|
109
|
+
engineCompositionHash: string;
|
|
110
|
+
wasmBuildHash: string;
|
|
111
|
+
nativeAdapterHash: string;
|
|
112
|
+
loaderHash: string;
|
|
113
|
+
benchmarkRunnerHash: string;
|
|
114
|
+
}
|
|
115
|
+
export type BenchmarkEvidenceType = "development" | "ci-artifact" | "canonical-candidate" | "canonical-committed" | "baseline-candidate" | "active-baseline";
|
|
116
|
+
export type BenchmarkExecutionMode = "development" | "canonical" | "baseline-freeze" | "ci-artifact" | "canonical-candidate";
|
|
117
|
+
export interface BenchmarkExecutionPolicy {
|
|
118
|
+
mode: BenchmarkExecutionMode;
|
|
119
|
+
evidenceType?: BenchmarkEvidenceType;
|
|
120
|
+
canonical: boolean;
|
|
121
|
+
warmupIterations: number;
|
|
122
|
+
measuredIterations: number;
|
|
123
|
+
dirtyDevelopmentAllowed: boolean;
|
|
124
|
+
updatesDocumentation: boolean;
|
|
125
|
+
}
|
|
126
|
+
export interface BenchmarkVariance {
|
|
127
|
+
perFixtureRunStdDevMs: BenchmarkDistribution;
|
|
128
|
+
fixtureLatencySpreadMs: {
|
|
129
|
+
standardDeviation: number;
|
|
130
|
+
medianAbsoluteDeviation: number;
|
|
131
|
+
};
|
|
132
|
+
suiteDurationMs: number;
|
|
133
|
+
}
|
|
134
|
+
export interface BenchmarkRunSummary {
|
|
135
|
+
schemaVersion: "2.0";
|
|
136
|
+
runtime: {
|
|
137
|
+
kind: "node" | "browser-device";
|
|
138
|
+
nodeVersion?: string;
|
|
139
|
+
platform: string;
|
|
140
|
+
arch: string;
|
|
141
|
+
};
|
|
142
|
+
sourceIdentity: BenchmarkSourceIdentity;
|
|
143
|
+
executionPolicy: BenchmarkExecutionPolicy;
|
|
144
|
+
environment: {
|
|
145
|
+
gitCommit: string;
|
|
146
|
+
sdkVersion: string;
|
|
147
|
+
scenario: "fast" | "balanced" | "robust";
|
|
148
|
+
datasetManifestHash: string;
|
|
149
|
+
fixtureCount: number;
|
|
150
|
+
date: string;
|
|
151
|
+
warmupPolicy: string;
|
|
152
|
+
iterationCount: number;
|
|
153
|
+
coldInitializationMs?: number;
|
|
154
|
+
warmInitializationMs?: number;
|
|
155
|
+
selectedWasmVariant?: "standard" | "simd";
|
|
156
|
+
wasmLinearMemoryPeakBytes?: number;
|
|
157
|
+
};
|
|
158
|
+
generatedAt: string;
|
|
159
|
+
total: number;
|
|
160
|
+
passed: number;
|
|
161
|
+
failed: number;
|
|
162
|
+
successRate: number;
|
|
163
|
+
averageMs: number;
|
|
164
|
+
medianMs: number;
|
|
165
|
+
p95Ms: number;
|
|
166
|
+
p99Ms: number | null;
|
|
167
|
+
variance: BenchmarkVariance;
|
|
168
|
+
positiveCases: number;
|
|
169
|
+
decodeRecall: number;
|
|
170
|
+
exactPayloadAccuracy: number;
|
|
171
|
+
negativeCases: number;
|
|
172
|
+
falsePositiveCount: number;
|
|
173
|
+
falsePositiveRate: number;
|
|
174
|
+
timeoutCount: number;
|
|
175
|
+
cancellationCorrectness: {
|
|
176
|
+
passed: number;
|
|
177
|
+
total: number;
|
|
178
|
+
};
|
|
179
|
+
engineInitializationFailures: number;
|
|
180
|
+
engineExecutionFailures: number;
|
|
181
|
+
phaseTimingAvailability: {
|
|
182
|
+
passed: number;
|
|
183
|
+
total: number;
|
|
184
|
+
};
|
|
185
|
+
timeToFirstResult: BenchmarkDistribution;
|
|
186
|
+
averageAttempts: number;
|
|
187
|
+
medianAttempts: number;
|
|
188
|
+
p95Attempts: number;
|
|
189
|
+
decoderDistribution: Record<string, number>;
|
|
190
|
+
preprocessingDistribution: Record<string, number>;
|
|
191
|
+
candidateDistribution: Record<string, number>;
|
|
192
|
+
perFormatRecall: Record<string, {
|
|
193
|
+
total: number;
|
|
194
|
+
decoded: number;
|
|
195
|
+
recall: number;
|
|
196
|
+
}>;
|
|
197
|
+
perFormatExactAccuracy?: Record<string, {
|
|
198
|
+
total: number;
|
|
199
|
+
exact: number;
|
|
200
|
+
accuracy: number;
|
|
201
|
+
}>;
|
|
202
|
+
perFormatFalsePositives?: Record<string, number>;
|
|
203
|
+
formatConfusionMatrix?: Record<string, Record<string, number>>;
|
|
204
|
+
formatSelectionAccuracy?: number;
|
|
205
|
+
checksumRejectionCount?: number;
|
|
206
|
+
gs1RecognitionAccuracy?: number;
|
|
207
|
+
mixedFormatCompleteness?: {
|
|
208
|
+
total: number;
|
|
209
|
+
complete: number;
|
|
210
|
+
rate: number;
|
|
211
|
+
};
|
|
212
|
+
memoryObservations: string[];
|
|
213
|
+
controlledMemoryPeakBytes: number;
|
|
214
|
+
finalControlledMemoryBytes: number;
|
|
215
|
+
phaseTiming: Record<string, BenchmarkDistribution>;
|
|
216
|
+
perCategory: Record<string, {
|
|
217
|
+
total: number;
|
|
218
|
+
passed: number;
|
|
219
|
+
successRate: number;
|
|
220
|
+
averageMs: number;
|
|
221
|
+
}>;
|
|
222
|
+
multipleCompleteness: {
|
|
223
|
+
total: number;
|
|
224
|
+
complete: number;
|
|
225
|
+
incomplete: string[];
|
|
226
|
+
};
|
|
227
|
+
worstFixtures: Array<{
|
|
228
|
+
id: string;
|
|
229
|
+
elapsedMs: number;
|
|
230
|
+
attemptCount: number;
|
|
231
|
+
pass: boolean;
|
|
232
|
+
}>;
|
|
233
|
+
regressionCount: number;
|
|
234
|
+
remainingFailures: string[];
|
|
235
|
+
results: BenchmarkFixtureResult[];
|
|
236
|
+
}
|
|
237
|
+
export interface StrategySummary {
|
|
238
|
+
strategyId: string;
|
|
239
|
+
engineIds: Array<{
|
|
240
|
+
id: string;
|
|
241
|
+
version: string;
|
|
242
|
+
}>;
|
|
243
|
+
scenario?: {
|
|
244
|
+
id: string;
|
|
245
|
+
revision: number;
|
|
246
|
+
};
|
|
247
|
+
fixtureCount: number;
|
|
248
|
+
positiveRecall: number;
|
|
249
|
+
exactPayloadAccuracy: number;
|
|
250
|
+
falsePositiveCount: number;
|
|
251
|
+
multiCodeCompleteness: {
|
|
252
|
+
complete: number;
|
|
253
|
+
total: number;
|
|
254
|
+
};
|
|
255
|
+
averageMs: number;
|
|
256
|
+
medianMs: number;
|
|
257
|
+
p95Ms: number;
|
|
258
|
+
averageAttempts: number;
|
|
259
|
+
p95Attempts: number;
|
|
260
|
+
timeoutCount: number;
|
|
261
|
+
unsupportedCases: number;
|
|
262
|
+
initializationFailures: number;
|
|
263
|
+
executionFailures: number;
|
|
264
|
+
uniqueWins: string[];
|
|
265
|
+
installedPackageFootprintBytes: number;
|
|
266
|
+
initializationMs: number;
|
|
267
|
+
warmInitializationMs?: number;
|
|
268
|
+
wasmVariant?: "standard" | "simd";
|
|
269
|
+
wasmLinearMemoryPeakBytes?: number;
|
|
270
|
+
averageControlledMemoryPeakBytes: number;
|
|
271
|
+
}
|
|
272
|
+
export interface StrategyFixtureResult {
|
|
273
|
+
fixtureId: string;
|
|
274
|
+
strategyId: string;
|
|
275
|
+
expectedOutcome: BenchmarkExpectedOutcome;
|
|
276
|
+
payloads: string[];
|
|
277
|
+
pass: boolean;
|
|
278
|
+
exactPayload: boolean;
|
|
279
|
+
falsePositive: boolean;
|
|
280
|
+
multipleComplete: boolean;
|
|
281
|
+
elapsedMs: number;
|
|
282
|
+
attemptCount: number;
|
|
283
|
+
failureReason: string | null;
|
|
284
|
+
controlledMemoryPeakBytes?: number;
|
|
285
|
+
finalControlledMemoryBytes?: number;
|
|
286
|
+
iterationPassCount?: number;
|
|
287
|
+
iterationFailureCount?: number;
|
|
288
|
+
unstablePayload?: boolean;
|
|
289
|
+
runTimingsMs?: number[];
|
|
290
|
+
engineDiagnostics?: Array<{
|
|
291
|
+
engineId: string;
|
|
292
|
+
status: string;
|
|
293
|
+
elapsedMs: number;
|
|
294
|
+
attemptCount: number;
|
|
295
|
+
resultCount: number;
|
|
296
|
+
}>;
|
|
297
|
+
}
|
|
298
|
+
export interface ComparisonReport {
|
|
299
|
+
schemaVersion: "2.0";
|
|
300
|
+
generatedAt: string;
|
|
301
|
+
sdkVersion: string;
|
|
302
|
+
sourceIdentity: BenchmarkSourceIdentity;
|
|
303
|
+
executionPolicy: BenchmarkExecutionPolicy;
|
|
304
|
+
finalControlledMemoryBytes: number;
|
|
305
|
+
parallelExecution: {
|
|
306
|
+
status: "supported" | "experimental";
|
|
307
|
+
builtInScenarioUsage: boolean;
|
|
308
|
+
recallTolerance: number;
|
|
309
|
+
exactAccuracyTolerance: number;
|
|
310
|
+
reason?: string;
|
|
311
|
+
};
|
|
312
|
+
fixtureCount: number;
|
|
313
|
+
positiveCases: number;
|
|
314
|
+
negativeCases: number;
|
|
315
|
+
methodology: string;
|
|
316
|
+
strategies: StrategySummary[];
|
|
317
|
+
perFixture: StrategyFixtureResult[];
|
|
318
|
+
}
|
|
319
|
+
export interface BrowserBenchmarkMetadata {
|
|
320
|
+
browserName: string;
|
|
321
|
+
browserVersion: string;
|
|
322
|
+
operatingSystem: string;
|
|
323
|
+
architecture: string;
|
|
324
|
+
workerAvailable: boolean;
|
|
325
|
+
offscreenCanvasAvailable: boolean;
|
|
326
|
+
imageBitmapAvailable: boolean;
|
|
327
|
+
videoFrameAvailable: boolean;
|
|
328
|
+
userAgent: string;
|
|
329
|
+
testProjectName: string;
|
|
330
|
+
actualDecodePath: "worker" | "main-thread" | "mixed" | "unknown";
|
|
331
|
+
workerCreatedCount: number;
|
|
332
|
+
workerTerminationCount: number;
|
|
333
|
+
workerDecodeCount: number;
|
|
334
|
+
mainThreadDecodeCount: number;
|
|
335
|
+
observedEngineIds: string[];
|
|
336
|
+
observedWasmVariants: string[];
|
|
337
|
+
}
|
|
338
|
+
export interface BrowserBenchmarkSourceIdentity {
|
|
339
|
+
commitSha: string;
|
|
340
|
+
treeSha: string;
|
|
341
|
+
sdkVersion: string;
|
|
342
|
+
datasetHash: string;
|
|
343
|
+
scenarioHash: string;
|
|
344
|
+
engineVersions: Record<string, string>;
|
|
345
|
+
wasmBuildHash: string;
|
|
346
|
+
fixtureIds: string[];
|
|
347
|
+
}
|
|
348
|
+
export interface DeviceBenchmarkMetadata {
|
|
349
|
+
deviceModel: string;
|
|
350
|
+
operatingSystem: string;
|
|
351
|
+
browserOrRuntime: string;
|
|
352
|
+
cameraResolution?: string;
|
|
353
|
+
thermalState?: string;
|
|
354
|
+
powerMode?: string;
|
|
355
|
+
}
|
|
356
|
+
export interface BrowserBenchmarkReport {
|
|
357
|
+
schemaVersion: "2.0";
|
|
358
|
+
benchmarkKind: "smoke" | "full";
|
|
359
|
+
generatedAt: string;
|
|
360
|
+
sourceIdentity: BrowserBenchmarkSourceIdentity;
|
|
361
|
+
metadata: BrowserBenchmarkMetadata;
|
|
362
|
+
fixtureCount: number;
|
|
363
|
+
positiveRecall: number;
|
|
364
|
+
falsePositiveCount: number;
|
|
365
|
+
averageMs: number;
|
|
366
|
+
p95Ms: number;
|
|
367
|
+
memoryObservation: string;
|
|
368
|
+
results: Array<{
|
|
369
|
+
fixtureId: string;
|
|
370
|
+
pass: boolean;
|
|
371
|
+
elapsedMs: number;
|
|
372
|
+
payloads: string[];
|
|
373
|
+
}>;
|
|
374
|
+
}
|
|
375
|
+
import type { BarcodeFormat, BarcodeFormatClass } from "@scanly/scenario-schema";
|
|
376
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GACzB,OAAO,GACP,MAAM,GACN,KAAK,GACL,MAAM,GACN,cAAc,GACd,cAAc,GACd,aAAa,GACb,MAAM,GACN,aAAa,GACb,OAAO,GACP,OAAO,GACP,UAAU,GACV,UAAU,GACV,aAAa,GACb,gBAAgB,GAChB,WAAW,GACX,oBAAoB,GACpB,UAAU,GACV,WAAW,GACX,SAAS,GACT,iBAAiB,GACjB,gBAAgB,GAChB,gBAAgB,GAChB,oBAAoB,GACpB,aAAa,GACb,UAAU,GACV,aAAa,CAAC;AAElB,MAAM,MAAM,wBAAwB,GAAG,QAAQ,GAAG,WAAW,GAAG,eAAe,CAAC;AAChF,MAAM,MAAM,oBAAoB,GAC5B,iBAAiB,GAAG,eAAe,GAAG,SAAS,GAAG,WAAW,GAC7D,0BAA0B,GAAG,+BAA+B,GAC5D,+BAA+B,GAAG,yBAAyB,GAC3D,4BAA4B,GAAG,0BAA0B,GAAG,kBAAkB,CAAC;AAEnF,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,eAAe,GAAG,uBAAuB,CAAC;AAE1F,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACnC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,wBAAwB,CAAC;IAC1C,mBAAmB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC7C,UAAU,EAAE,mBAAmB,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yEAAyE;IACzE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,eAAe,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,aAAa,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpE,gEAAgE;IAChE,iBAAiB,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D,0DAA0D;IAC1D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,wGAAwG;IACxG,0BAA0B,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IACrF,gDAAgD;IAChD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iBAAiB,CAAC,EAAE,6BAA6B,CAAC;IAClD,gBAAgB,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnG,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACnC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,wBAAwB,CAAC;IAC1C,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAC;QAAC,uBAAuB,EAAE,MAAM,CAAC;QAAC,yBAAyB,EAAE,OAAO,CAAC;QAAC,oBAAoB,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,CAAA;KAAE,CAAC;IAC7N,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE;QACZ,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,qBAAqB,EAAE,MAAM,CAAC;QAC9B,wBAAwB,CAAC,EAAE,MAAM,CAAC;QAClC,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,qBAAqB,GAC7B,aAAa,GACb,aAAa,GACb,qBAAqB,GACrB,qBAAqB,GACrB,oBAAoB,GACpB,iBAAiB,CAAC;AAEtB,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG,WAAW,GAAG,iBAAiB,GAAG,aAAa,GAAG,qBAAqB,CAAC;AAE7H,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,YAAY,CAAC,EAAE,qBAAqB,CAAC;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uBAAuB,EAAE,OAAO,CAAC;IACjC,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,sBAAsB,EAAE;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,uBAAuB,EAAE,MAAM,CAAC;KACjC,CAAC;IACF,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,KAAK,CAAC;IACrB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACnG,cAAc,EAAE,uBAAuB,CAAC;IACxC,eAAe,EAAE,wBAAwB,CAAC;IAC1C,WAAW,EAAE;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;QACzC,mBAAmB,EAAE,MAAM,CAAC;QAC5B,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,mBAAmB,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;QAC1C,yBAAyB,CAAC,EAAE,MAAM,CAAC;KACpC,CAAC;IACF,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,uBAAuB,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,4BAA4B,EAAE,MAAM,CAAC;IACrC,uBAAuB,EAAE,MAAM,CAAC;IAChC,uBAAuB,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,iBAAiB,EAAE,qBAAqB,CAAC;IACzC,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClD,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpF,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5F,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/D,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,uBAAuB,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5E,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,yBAAyB,EAAE,MAAM,CAAC;IAClC,0BAA0B,EAAE,MAAM,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACnD,WAAW,EAAE,MAAM,CACjB,MAAM,EACN;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAC1E,CAAC;IACF,oBAAoB,EAAE;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;IACF,aAAa,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC7F,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,OAAO,EAAE,sBAAsB,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,QAAQ,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,8BAA8B,EAAE,MAAM,CAAC;IACvC,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,WAAW,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAClC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,gCAAgC,EAAE,MAAM,CAAC;CAC1C;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,wBAAwB,CAAC;IAC1C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,iBAAiB,CAAC,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/H;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,KAAK,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,uBAAuB,CAAC;IACxC,eAAe,EAAE,wBAAwB,CAAC;IAC1C,0BAA0B,EAAE,MAAM,CAAC;IACnC,iBAAiB,EAAE;QACjB,MAAM,EAAE,WAAW,GAAG,cAAc,CAAC;QACrC,oBAAoB,EAAE,OAAO,CAAC;QAC9B,eAAe,EAAE,MAAM,CAAC;QACxB,sBAAsB,EAAE,MAAM,CAAC;QAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,UAAU,EAAE,qBAAqB,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,wBAAwB,EAAE,OAAO,CAAC;IAClC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,QAAQ,GAAG,aAAa,GAAG,OAAO,GAAG,SAAS,CAAC;IACjE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC;AAGD,MAAM,WAAW,8BAA8B;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,KAAK,CAAC;IACrB,aAAa,EAAE,OAAO,GAAG,MAAM,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,8BAA8B,CAAC;IAC/C,QAAQ,EAAE,wBAAwB,CAAC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CAC7F;AACD,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@scanly/benchmark",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "Benchmark contracts, conformance evaluation, and regression gates for Scanly",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"sideEffects": false,
|
|
8
|
+
"main": "./dist/index.js",
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"import": "./dist/index.js"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist",
|
|
18
|
+
"README.md"
|
|
19
|
+
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"build": "tsc -p tsconfig.build.json"
|
|
22
|
+
}
|
|
23
|
+
}
|