@libraz/coverwise 1.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.
Files changed (110) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +119 -0
  3. package/README.npm.md +119 -0
  4. package/dist/coverwise.js +2 -0
  5. package/dist/coverwise.wasm +0 -0
  6. package/dist/js/constraint.d.ts +78 -0
  7. package/dist/js/constraint.d.ts.map +1 -0
  8. package/dist/js/constraint.js +213 -0
  9. package/dist/js/constraint.js.map +1 -0
  10. package/dist/js/index.d.ts +94 -0
  11. package/dist/js/index.d.ts.map +1 -0
  12. package/dist/js/index.js +164 -0
  13. package/dist/js/index.js.map +1 -0
  14. package/dist/js/pure/adapter.d.ts +40 -0
  15. package/dist/js/pure/adapter.d.ts.map +1 -0
  16. package/dist/js/pure/adapter.js +207 -0
  17. package/dist/js/pure/adapter.js.map +1 -0
  18. package/dist/js/pure/index.d.ts +83 -0
  19. package/dist/js/pure/index.d.ts.map +1 -0
  20. package/dist/js/pure/index.js +132 -0
  21. package/dist/js/pure/index.js.map +1 -0
  22. package/dist/js/types.d.ts +132 -0
  23. package/dist/js/types.d.ts.map +1 -0
  24. package/dist/js/types.js +3 -0
  25. package/dist/js/types.js.map +1 -0
  26. package/dist/src/ts/algo/greedy.d.ts +9 -0
  27. package/dist/src/ts/algo/greedy.d.ts.map +1 -0
  28. package/dist/src/ts/algo/greedy.js +137 -0
  29. package/dist/src/ts/algo/greedy.js.map +1 -0
  30. package/dist/src/ts/algo/index.d.ts +2 -0
  31. package/dist/src/ts/algo/index.d.ts.map +1 -0
  32. package/dist/src/ts/algo/index.js +2 -0
  33. package/dist/src/ts/algo/index.js.map +1 -0
  34. package/dist/src/ts/core/coverage-engine.d.ts +40 -0
  35. package/dist/src/ts/core/coverage-engine.d.ts.map +1 -0
  36. package/dist/src/ts/core/coverage-engine.js +366 -0
  37. package/dist/src/ts/core/coverage-engine.js.map +1 -0
  38. package/dist/src/ts/core/generator.d.ts +6 -0
  39. package/dist/src/ts/core/generator.d.ts.map +1 -0
  40. package/dist/src/ts/core/generator.js +394 -0
  41. package/dist/src/ts/core/generator.js.map +1 -0
  42. package/dist/src/ts/core/index.d.ts +3 -0
  43. package/dist/src/ts/core/index.d.ts.map +1 -0
  44. package/dist/src/ts/core/index.js +3 -0
  45. package/dist/src/ts/core/index.js.map +1 -0
  46. package/dist/src/ts/model/boundary.d.ts +29 -0
  47. package/dist/src/ts/model/boundary.d.ts.map +1 -0
  48. package/dist/src/ts/model/boundary.js +102 -0
  49. package/dist/src/ts/model/boundary.js.map +1 -0
  50. package/dist/src/ts/model/constraint-ast.d.ts +152 -0
  51. package/dist/src/ts/model/constraint-ast.d.ts.map +1 -0
  52. package/dist/src/ts/model/constraint-ast.js +384 -0
  53. package/dist/src/ts/model/constraint-ast.js.map +1 -0
  54. package/dist/src/ts/model/constraint-parser.d.ts +49 -0
  55. package/dist/src/ts/model/constraint-parser.d.ts.map +1 -0
  56. package/dist/src/ts/model/constraint-parser.js +831 -0
  57. package/dist/src/ts/model/constraint-parser.js.map +1 -0
  58. package/dist/src/ts/model/error.d.ts +19 -0
  59. package/dist/src/ts/model/error.d.ts.map +1 -0
  60. package/dist/src/ts/model/error.js +19 -0
  61. package/dist/src/ts/model/error.js.map +1 -0
  62. package/dist/src/ts/model/generate-options.d.ts +82 -0
  63. package/dist/src/ts/model/generate-options.d.ts.map +1 -0
  64. package/dist/src/ts/model/generate-options.js +52 -0
  65. package/dist/src/ts/model/generate-options.js.map +1 -0
  66. package/dist/src/ts/model/index.d.ts +6 -0
  67. package/dist/src/ts/model/index.d.ts.map +1 -0
  68. package/dist/src/ts/model/index.js +6 -0
  69. package/dist/src/ts/model/index.js.map +1 -0
  70. package/dist/src/ts/model/parameter.d.ts +65 -0
  71. package/dist/src/ts/model/parameter.d.ts.map +1 -0
  72. package/dist/src/ts/model/parameter.js +157 -0
  73. package/dist/src/ts/model/parameter.js.map +1 -0
  74. package/dist/src/ts/model/test-case.d.ts +67 -0
  75. package/dist/src/ts/model/test-case.d.ts.map +1 -0
  76. package/dist/src/ts/model/test-case.js +28 -0
  77. package/dist/src/ts/model/test-case.js.map +1 -0
  78. package/dist/src/ts/util/bitset.d.ts +14 -0
  79. package/dist/src/ts/util/bitset.d.ts.map +1 -0
  80. package/dist/src/ts/util/bitset.js +66 -0
  81. package/dist/src/ts/util/bitset.js.map +1 -0
  82. package/dist/src/ts/util/combinatorics.d.ts +4 -0
  83. package/dist/src/ts/util/combinatorics.d.ts.map +1 -0
  84. package/dist/src/ts/util/combinatorics.js +60 -0
  85. package/dist/src/ts/util/combinatorics.js.map +1 -0
  86. package/dist/src/ts/util/index.d.ts +5 -0
  87. package/dist/src/ts/util/index.d.ts.map +1 -0
  88. package/dist/src/ts/util/index.js +7 -0
  89. package/dist/src/ts/util/index.js.map +1 -0
  90. package/dist/src/ts/util/rng.d.ts +13 -0
  91. package/dist/src/ts/util/rng.d.ts.map +1 -0
  92. package/dist/src/ts/util/rng.js +112 -0
  93. package/dist/src/ts/util/rng.js.map +1 -0
  94. package/dist/src/ts/util/string_util.d.ts +3 -0
  95. package/dist/src/ts/util/string_util.d.ts.map +1 -0
  96. package/dist/src/ts/util/string_util.js +25 -0
  97. package/dist/src/ts/util/string_util.js.map +1 -0
  98. package/dist/src/ts/validator/constraint-validator.d.ts +34 -0
  99. package/dist/src/ts/validator/constraint-validator.d.ts.map +1 -0
  100. package/dist/src/ts/validator/constraint-validator.js +51 -0
  101. package/dist/src/ts/validator/constraint-validator.js.map +1 -0
  102. package/dist/src/ts/validator/coverage-validator.d.ts +42 -0
  103. package/dist/src/ts/validator/coverage-validator.d.ts.map +1 -0
  104. package/dist/src/ts/validator/coverage-validator.js +230 -0
  105. package/dist/src/ts/validator/coverage-validator.js.map +1 -0
  106. package/dist/src/ts/validator/index.d.ts +3 -0
  107. package/dist/src/ts/validator/index.d.ts.map +1 -0
  108. package/dist/src/ts/validator/index.js +3 -0
  109. package/dist/src/ts/validator/index.js.map +1 -0
  110. package/package.json +82 -0
@@ -0,0 +1,213 @@
1
+ /**
2
+ * Fluent constraint builder for coverwise.
3
+ *
4
+ * Generates constraint strings compatible with the C++ constraint parser.
5
+ *
6
+ * @example
7
+ * import { when, not, allOf, anyOf } from '@libraz/coverwise/constraint';
8
+ *
9
+ * // IF os = Windows THEN browser != Safari
10
+ * when('os').eq('Windows').then(when('browser').ne('Safari'))
11
+ *
12
+ * // NOT (os = win AND browser = safari)
13
+ * not(allOf(when('os').eq('win'), when('browser').eq('safari')))
14
+ */
15
+ // --- Value formatting ---
16
+ const NEEDS_QUOTE_RE = /[\s=!<>(),{}]/;
17
+ const KEYWORDS = new Set(['IF', 'THEN', 'ELSE', 'IMPLIES', 'AND', 'OR', 'NOT', 'IN', 'LIKE']);
18
+ function formatValue(value) {
19
+ if (typeof value === 'boolean') {
20
+ return String(value);
21
+ }
22
+ if (typeof value === 'number') {
23
+ return String(value);
24
+ }
25
+ if (NEEDS_QUOTE_RE.test(value) || KEYWORDS.has(value.toUpperCase())) {
26
+ return `"${value}"`;
27
+ }
28
+ return value;
29
+ }
30
+ function formatNumericOrParam(value) {
31
+ if (typeof value === 'number') {
32
+ return String(value);
33
+ }
34
+ // String = param name, output bare
35
+ return value;
36
+ }
37
+ function formatSetValue(value) {
38
+ if (typeof value === 'boolean') {
39
+ return String(value);
40
+ }
41
+ if (typeof value === 'number') {
42
+ return String(value);
43
+ }
44
+ if (NEEDS_QUOTE_RE.test(value) || KEYWORDS.has(value.toUpperCase())) {
45
+ return `"${value}"`;
46
+ }
47
+ return value;
48
+ }
49
+ // --- Internal classes ---
50
+ class ConditionImpl {
51
+ constructor(expr) {
52
+ this.expr = expr;
53
+ }
54
+ and(other) {
55
+ return new ConditionImpl(`${this.wrap()} AND ${wrapCondition(other)}`);
56
+ }
57
+ or(other) {
58
+ return new ConditionImpl(`${this.wrap()} OR ${wrapCondition(other)}`);
59
+ }
60
+ // biome-ignore lint/suspicious/noThenProperty: fluent API requires .then() for IF...THEN syntax
61
+ then(consequence) {
62
+ return new ConstraintImpl(`IF ${this.expr} THEN ${consequence.toString()}`);
63
+ }
64
+ implies(consequence) {
65
+ return new ConstraintImpl(`${this.expr} IMPLIES ${consequence.toString()}`);
66
+ }
67
+ toString() {
68
+ return this.expr;
69
+ }
70
+ wrap() {
71
+ // Wrap in parens if the expression contains OR (for correct AND precedence)
72
+ if (needsParensForAnd(this.expr)) {
73
+ return `(${this.expr})`;
74
+ }
75
+ return this.expr;
76
+ }
77
+ }
78
+ class ConstraintImpl {
79
+ constructor(expr) {
80
+ this.expr = expr;
81
+ }
82
+ else(alternative) {
83
+ return new ConstraintImpl(`${this.expr} ELSE ${alternative.toString()}`);
84
+ }
85
+ toString() {
86
+ return this.expr;
87
+ }
88
+ }
89
+ class ConditionStartImpl {
90
+ constructor(param) {
91
+ this.param = param;
92
+ }
93
+ eq(value) {
94
+ return new ConditionImpl(`${this.param} = ${formatValue(value)}`);
95
+ }
96
+ ne(value) {
97
+ return new ConditionImpl(`${this.param} != ${formatValue(value)}`);
98
+ }
99
+ gt(value) {
100
+ return new ConditionImpl(`${this.param} > ${formatNumericOrParam(value)}`);
101
+ }
102
+ gte(value) {
103
+ return new ConditionImpl(`${this.param} >= ${formatNumericOrParam(value)}`);
104
+ }
105
+ lt(value) {
106
+ return new ConditionImpl(`${this.param} < ${formatNumericOrParam(value)}`);
107
+ }
108
+ lte(value) {
109
+ return new ConditionImpl(`${this.param} <= ${formatNumericOrParam(value)}`);
110
+ }
111
+ in(...values) {
112
+ const formatted = values.map(formatSetValue).join(', ');
113
+ return new ConditionImpl(`${this.param} IN {${formatted}}`);
114
+ }
115
+ like(pattern) {
116
+ return new ConditionImpl(`${this.param} LIKE ${pattern}`);
117
+ }
118
+ }
119
+ // --- Helpers ---
120
+ /** Check if an expression string contains a bare OR (not inside parens). */
121
+ function needsParensForAnd(expr) {
122
+ let depth = 0;
123
+ const upper = expr.toUpperCase();
124
+ for (let i = 0; i < upper.length; i++) {
125
+ if (upper[i] === '(') {
126
+ depth++;
127
+ }
128
+ else if (upper[i] === ')') {
129
+ depth--;
130
+ }
131
+ else if (depth === 0 && upper[i] === ' ' && upper.substring(i, i + 4) === ' OR ') {
132
+ return true;
133
+ }
134
+ }
135
+ return false;
136
+ }
137
+ /** Wrap a condition for use as an operand, adding parens if it contains AND or OR at top level. */
138
+ function wrapCondition(cond) {
139
+ const s = cond.toString();
140
+ if (needsParensForAnd(s)) {
141
+ return `(${s})`;
142
+ }
143
+ return s;
144
+ }
145
+ // --- Public API ---
146
+ /**
147
+ * Start building a condition on a parameter.
148
+ *
149
+ * @param param - The parameter name.
150
+ * @returns A builder for specifying the comparison operator and value.
151
+ *
152
+ * @example
153
+ * when('os').eq('Windows') // os = Windows
154
+ * when('version').gt(3) // version > 3
155
+ * when('start_date').lt('end_date') // start_date < end_date
156
+ */
157
+ export function when(param) {
158
+ return new ConditionStartImpl(param);
159
+ }
160
+ /**
161
+ * Negate a condition.
162
+ *
163
+ * @example
164
+ * not(when('os').eq('win'))
165
+ * // NOT (os = win)
166
+ *
167
+ * not(allOf(when('os').eq('win'), when('browser').eq('safari')))
168
+ * // NOT (os = win AND browser = safari)
169
+ */
170
+ export function not(condition) {
171
+ return new ConditionImpl(`NOT (${condition.toString()})`);
172
+ }
173
+ /**
174
+ * Combine conditions with AND.
175
+ *
176
+ * @example
177
+ * allOf(when('os').eq('win'), when('browser').eq('chrome'))
178
+ * // os = win AND browser = chrome
179
+ */
180
+ export function allOf(...conditions) {
181
+ if (conditions.length === 0) {
182
+ throw new Error('allOf requires at least one condition');
183
+ }
184
+ if (conditions.length === 1) {
185
+ return conditions[0];
186
+ }
187
+ const parts = conditions.map((c) => {
188
+ const s = c.toString();
189
+ if (needsParensForAnd(s)) {
190
+ return `(${s})`;
191
+ }
192
+ return s;
193
+ });
194
+ return new ConditionImpl(parts.join(' AND '));
195
+ }
196
+ /**
197
+ * Combine conditions with OR.
198
+ *
199
+ * @example
200
+ * anyOf(when('os').eq('win'), when('os').eq('linux'))
201
+ * // os = win OR os = linux
202
+ */
203
+ export function anyOf(...conditions) {
204
+ if (conditions.length === 0) {
205
+ throw new Error('anyOf requires at least one condition');
206
+ }
207
+ if (conditions.length === 1) {
208
+ return conditions[0];
209
+ }
210
+ const parts = conditions.map((c) => c.toString());
211
+ return new ConditionImpl(parts.join(' OR '));
212
+ }
213
+ //# sourceMappingURL=constraint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constraint.js","sourceRoot":"","sources":["../../js/constraint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,2BAA2B;AAE3B,MAAM,cAAc,GAAG,eAAe,CAAC;AACvC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AAE9F,SAAS,WAAW,CAAC,KAAgC;IACnD,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QACpE,OAAO,IAAI,KAAK,GAAG,CAAC;IACtB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAsB;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,mCAAmC;IACnC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,KAAgC;IACtD,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QACpE,OAAO,IAAI,KAAK,GAAG,CAAC;IACtB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AA+BD,2BAA2B;AAE3B,MAAM,aAAa;IAGjB,YAAY,IAAY;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,GAAG,CAAC,KAAgB;QAClB,OAAO,IAAI,aAAa,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,EAAE,CAAC,KAAgB;QACjB,OAAO,IAAI,aAAa,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,gGAAgG;IAChG,IAAI,CAAC,WAAsB;QACzB,OAAO,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,IAAI,SAAS,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,CAAC,WAAsB;QAC5B,OAAO,IAAI,cAAc,CAAC,GAAG,IAAI,CAAC,IAAI,YAAY,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAEO,IAAI;QACV,4EAA4E;QAC5E,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,OAAO,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF;AAED,MAAM,cAAc;IAGlB,YAAY,IAAY;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,WAAsB;QACzB,OAAO,IAAI,cAAc,CAAC,GAAG,IAAI,CAAC,IAAI,SAAS,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF;AAED,MAAM,kBAAkB;IAGtB,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,EAAE,CAAC,KAAgC;QACjC,OAAO,IAAI,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK,MAAM,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,EAAE,CAAC,KAAgC;QACjC,OAAO,IAAI,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK,OAAO,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,EAAE,CAAC,KAAsB;QACvB,OAAO,IAAI,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK,MAAM,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,GAAG,CAAC,KAAsB;QACxB,OAAO,IAAI,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK,OAAO,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,EAAE,CAAC,KAAsB;QACvB,OAAO,IAAI,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK,MAAM,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,GAAG,CAAC,KAAsB;QACxB,OAAO,IAAI,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK,OAAO,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,EAAE,CAAC,GAAG,MAAqC;QACzC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,OAAO,IAAI,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK,QAAQ,SAAS,GAAG,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,CAAC,OAAe;QAClB,OAAO,IAAI,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK,SAAS,OAAO,EAAE,CAAC,CAAC;IAC5D,CAAC;CACF;AAED,kBAAkB;AAElB,4EAA4E;AAC5E,SAAS,iBAAiB,CAAC,IAAY;IACrC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACrB,KAAK,EAAE,CAAC;QACV,CAAC;aAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC5B,KAAK,EAAE,CAAC;QACV,CAAC;aAAM,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;YACnF,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,mGAAmG;AACnG,SAAS,aAAa,CAAC,IAAe;IACpC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC1B,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,qBAAqB;AAErB;;;;;;;;;;GAUG;AACH,MAAM,UAAU,IAAI,CAAC,KAAa;IAChC,OAAO,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,GAAG,CAAC,SAAoB;IACtC,OAAO,IAAI,aAAa,CAAC,QAAQ,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,KAAK,CAAC,GAAG,UAAuB;IAC9C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACjC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;QACvB,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,GAAG,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAChD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,KAAK,CAAC,GAAG,UAAuB;IAC9C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClD,OAAO,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * coverwise — Combinatorial test design API.
3
+ *
4
+ * Not just a generation tool — a test design engine.
5
+ * JSON-complete, stateless, decomposable.
6
+ */
7
+ export type { Condition, ConditionStart, Constraint } from './constraint.js';
8
+ export { allOf, anyOf, not, when } from './constraint.js';
9
+ export type { ClassCoverage, CoverageReport, CoverwiseError, ExtendInput, GenerateInput, GenerateResult, GenerateStats, ModelStats, Parameter, ParameterValue, ParamStats, SubModel, Suggestion, TestCase, UncoveredTuple, WeightConfig, } from './types.js';
10
+ import type { CoverageReport, ExtendInput, GenerateInput, GenerateResult, ModelStats, Parameter, TestCase } from './types.js';
11
+ /**
12
+ * Initialize the WASM module. Must be called before using any API function.
13
+ * Safe to call multiple times — only loads once.
14
+ *
15
+ * @example
16
+ * await init();
17
+ * const result = generate({ parameters: [...] });
18
+ */
19
+ export declare function init(): Promise<void>;
20
+ /**
21
+ * Generate a covering array. One function, sensible defaults.
22
+ *
23
+ * @example
24
+ * const result = generate({
25
+ * parameters: [
26
+ * { name: "os", values: ["win", "mac", "linux"] },
27
+ * { name: "browser", values: ["chrome", "firefox", "safari"] },
28
+ * ],
29
+ * });
30
+ * // result.tests: [{ os: "win", browser: "chrome" }, ...]
31
+ * // result.coverage: 1.0
32
+ */
33
+ export declare function generate(input: GenerateInput): GenerateResult;
34
+ /**
35
+ * Analyze t-wise coverage of an existing test suite.
36
+ * Use this to check coverage of manually written tests.
37
+ *
38
+ * @example
39
+ * const report = analyzeCoverage(
40
+ * [{ name: "os", values: ["win", "mac"] }, ...],
41
+ * [{ os: "win", browser: "chrome" }, ...],
42
+ * );
43
+ * // report.uncovered: [{ tuple: ["os=mac", "browser=chrome"], ... }]
44
+ */
45
+ export declare function analyzeCoverage(parameters: Parameter[], tests: TestCase[], strength?: number): CoverageReport;
46
+ /**
47
+ * Extend an existing test suite with additional tests to improve coverage.
48
+ *
49
+ * mode: "strict" (default) keeps existing tests as-is.
50
+ * Only "strict" mode is supported (existing tests are kept as-is).
51
+ */
52
+ export declare function extendTests(existing: TestCase[], input: ExtendInput): GenerateResult;
53
+ /**
54
+ * Get model statistics without running generation.
55
+ */
56
+ export declare function estimateModel(input: GenerateInput): ModelStats;
57
+ /**
58
+ * Class-based wrapper around the coverwise API.
59
+ * Provides the same functionality as the free functions in an object-oriented style.
60
+ *
61
+ * @example
62
+ * const cw = await Coverwise.create();
63
+ * const result = cw.generate({ parameters: [...] });
64
+ */
65
+ export declare class Coverwise {
66
+ private module;
67
+ private constructor();
68
+ /**
69
+ * Create a Coverwise instance.
70
+ * Reuses the shared WASM singleton — safe to call multiple times.
71
+ *
72
+ * @example
73
+ * const cw = await Coverwise.create();
74
+ * const result = cw.generate({ parameters: [...] });
75
+ */
76
+ static create(): Promise<Coverwise>;
77
+ /**
78
+ * Generate a covering array. One function, sensible defaults.
79
+ */
80
+ generate(input: GenerateInput): GenerateResult;
81
+ /**
82
+ * Analyze t-wise coverage of an existing test suite.
83
+ */
84
+ analyzeCoverage(parameters: Parameter[], tests: TestCase[], strength?: number): CoverageReport;
85
+ /**
86
+ * Extend an existing test suite with additional tests to improve coverage.
87
+ */
88
+ extendTests(existing: TestCase[], input: ExtendInput): GenerateResult;
89
+ /**
90
+ * Get model statistics without running generation.
91
+ */
92
+ estimateModel(input: GenerateInput): ModelStats;
93
+ }
94
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../js/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAI1D,YAAY,EACV,aAAa,EACb,cAAc,EACd,cAAc,EACd,WAAW,EACX,aAAa,EACb,cAAc,EACd,aAAa,EACb,UAAU,EACV,SAAS,EACT,cAAc,EACd,UAAU,EACV,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,cAAc,EACd,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EACV,cAAc,EAEd,WAAW,EACX,aAAa,EACb,cAAc,EACd,UAAU,EACV,SAAS,EACT,QAAQ,EACT,MAAM,YAAY,CAAC;AAcpB;;;;;;;GAOG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAe1C;AAyBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CAI7D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,SAAS,EAAE,EACvB,KAAK,EAAE,QAAQ,EAAE,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB,cAAc,CAQhB;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,cAAc,CAIpF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,UAAU,CAI9D;AAID;;;;;;;GAOG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAa;IAE3B,OAAO;IAIP;;;;;;;OAOG;WACU,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC;IAKzC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc;IAI9C;;OAEG;IACH,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,cAAc;IAU9F;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,cAAc;IAIrE;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,UAAU;CAGhD"}
@@ -0,0 +1,164 @@
1
+ /**
2
+ * coverwise — Combinatorial test design API.
3
+ *
4
+ * Not just a generation tool — a test design engine.
5
+ * JSON-complete, stateless, decomposable.
6
+ */
7
+ export { allOf, anyOf, not, when } from './constraint.js';
8
+ let wasmModule = null;
9
+ let initPromise = null;
10
+ /**
11
+ * Initialize the WASM module. Must be called before using any API function.
12
+ * Safe to call multiple times — only loads once.
13
+ *
14
+ * @example
15
+ * await init();
16
+ * const result = generate({ parameters: [...] });
17
+ */
18
+ export async function init() {
19
+ if (wasmModule) {
20
+ return;
21
+ }
22
+ if (!initPromise) {
23
+ initPromise = (async () => {
24
+ // @ts-expect-error — WASM module is generated by `make wasm`, not present at type-check time.
25
+ // Resolves to dist/coverwise.js at runtime (dist/js/../coverwise.js).
26
+ // In vitest, aliased via vitest.config.ts resolve.alias.
27
+ const createModule = await import('../coverwise.js');
28
+ const mod = await createModule.default();
29
+ return mod;
30
+ })();
31
+ }
32
+ wasmModule = await initPromise;
33
+ }
34
+ function getModule() {
35
+ if (!wasmModule) {
36
+ throw new Error('coverwise WASM module not initialized. Call await init() first.');
37
+ }
38
+ return wasmModule;
39
+ }
40
+ // --- Result Checking ---
41
+ function checkResult(result) {
42
+ const r = result;
43
+ if (r && r.error === true) {
44
+ const err = {
45
+ code: r.code ?? 'INVALID_INPUT',
46
+ message: r.message ?? 'Unknown error',
47
+ };
48
+ throw err;
49
+ }
50
+ return result;
51
+ }
52
+ // --- Core API ---
53
+ /**
54
+ * Generate a covering array. One function, sensible defaults.
55
+ *
56
+ * @example
57
+ * const result = generate({
58
+ * parameters: [
59
+ * { name: "os", values: ["win", "mac", "linux"] },
60
+ * { name: "browser", values: ["chrome", "firefox", "safari"] },
61
+ * ],
62
+ * });
63
+ * // result.tests: [{ os: "win", browser: "chrome" }, ...]
64
+ * // result.coverage: 1.0
65
+ */
66
+ export function generate(input) {
67
+ const mod = getModule();
68
+ const result = checkResult(mod.generate(input));
69
+ return result;
70
+ }
71
+ /**
72
+ * Analyze t-wise coverage of an existing test suite.
73
+ * Use this to check coverage of manually written tests.
74
+ *
75
+ * @example
76
+ * const report = analyzeCoverage(
77
+ * [{ name: "os", values: ["win", "mac"] }, ...],
78
+ * [{ os: "win", browser: "chrome" }, ...],
79
+ * );
80
+ * // report.uncovered: [{ tuple: ["os=mac", "browser=chrome"], ... }]
81
+ */
82
+ export function analyzeCoverage(parameters, tests, strength) {
83
+ const mod = getModule();
84
+ const result = checkResult(mod.analyzeCoverage(parameters, tests, strength ?? 2));
85
+ // When there are no tuples (e.g. fewer parameters than strength), coverage is vacuously 1.0.
86
+ if (result.totalTuples === 0) {
87
+ result.coverageRatio = 1.0;
88
+ }
89
+ return result;
90
+ }
91
+ /**
92
+ * Extend an existing test suite with additional tests to improve coverage.
93
+ *
94
+ * mode: "strict" (default) keeps existing tests as-is.
95
+ * Only "strict" mode is supported (existing tests are kept as-is).
96
+ */
97
+ export function extendTests(existing, input) {
98
+ const mod = getModule();
99
+ const result = checkResult(mod.extendTests(existing, input));
100
+ return result;
101
+ }
102
+ /**
103
+ * Get model statistics without running generation.
104
+ */
105
+ export function estimateModel(input) {
106
+ const mod = getModule();
107
+ const result = checkResult(mod.estimateModel(input));
108
+ return result;
109
+ }
110
+ // --- Class-based API ---
111
+ /**
112
+ * Class-based wrapper around the coverwise API.
113
+ * Provides the same functionality as the free functions in an object-oriented style.
114
+ *
115
+ * @example
116
+ * const cw = await Coverwise.create();
117
+ * const result = cw.generate({ parameters: [...] });
118
+ */
119
+ export class Coverwise {
120
+ constructor(module) {
121
+ this.module = module;
122
+ }
123
+ /**
124
+ * Create a Coverwise instance.
125
+ * Reuses the shared WASM singleton — safe to call multiple times.
126
+ *
127
+ * @example
128
+ * const cw = await Coverwise.create();
129
+ * const result = cw.generate({ parameters: [...] });
130
+ */
131
+ static async create() {
132
+ await init();
133
+ return new Coverwise(wasmModule);
134
+ }
135
+ /**
136
+ * Generate a covering array. One function, sensible defaults.
137
+ */
138
+ generate(input) {
139
+ return checkResult(this.module.generate(input));
140
+ }
141
+ /**
142
+ * Analyze t-wise coverage of an existing test suite.
143
+ */
144
+ analyzeCoverage(parameters, tests, strength) {
145
+ const result = checkResult(this.module.analyzeCoverage(parameters, tests, strength ?? 2));
146
+ if (result.totalTuples === 0) {
147
+ result.coverageRatio = 1.0;
148
+ }
149
+ return result;
150
+ }
151
+ /**
152
+ * Extend an existing test suite with additional tests to improve coverage.
153
+ */
154
+ extendTests(existing, input) {
155
+ return checkResult(this.module.extendTests(existing, input));
156
+ }
157
+ /**
158
+ * Get model statistics without running generation.
159
+ */
160
+ estimateModel(input) {
161
+ return checkResult(this.module.estimateModel(input));
162
+ }
163
+ }
164
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../js/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AA2C1D,IAAI,UAAU,GAAsB,IAAI,CAAC;AACzC,IAAI,WAAW,GAA+B,IAAI,CAAC;AAEnD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,IAAI,UAAU,EAAE,CAAC;QACf,OAAO;IACT,CAAC;IACD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,WAAW,GAAG,CAAC,KAAK,IAAI,EAAE;YACxB,8FAA8F;YAC9F,sEAAsE;YACtE,yDAAyD;YACzD,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YACrD,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;YACzC,OAAO,GAAiB,CAAC;QAC3B,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IACD,UAAU,GAAG,MAAM,WAAW,CAAC;AACjC,CAAC;AAED,SAAS,SAAS;IAChB,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,0BAA0B;AAE1B,SAAS,WAAW,CAAI,MAAe;IACrC,MAAM,CAAC,GAAG,MAAiC,CAAC;IAC5C,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAmB;YAC1B,IAAI,EAAG,CAAC,CAAC,IAA+B,IAAI,eAAe;YAC3D,OAAO,EAAG,CAAC,CAAC,OAAkB,IAAI,eAAe;SAClD,CAAC;QACF,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,OAAO,MAAW,CAAC;AACrB,CAAC;AAED,mBAAmB;AAEnB;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,MAAM,MAAM,GAAG,WAAW,CAAiB,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAChE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAC7B,UAAuB,EACvB,KAAiB,EACjB,QAAiB;IAEjB,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,MAAM,MAAM,GAAG,WAAW,CAAiB,GAAG,CAAC,eAAe,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC;IAClG,6FAA6F;IAC7F,IAAI,MAAM,CAAC,WAAW,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,aAAa,GAAG,GAAG,CAAC;IAC7B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,QAAoB,EAAE,KAAkB;IAClE,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,MAAM,MAAM,GAAG,WAAW,CAAiB,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7E,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAoB;IAChD,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,MAAM,MAAM,GAAG,WAAW,CAAa,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IACjE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,0BAA0B;AAE1B;;;;;;;GAOG;AACH,MAAM,OAAO,SAAS;IAGpB,YAAoB,MAAkB;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM;QACjB,MAAM,IAAI,EAAE,CAAC;QACb,OAAO,IAAI,SAAS,CAAC,UAAW,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,KAAoB;QAC3B,OAAO,WAAW,CAAiB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,UAAuB,EAAE,KAAiB,EAAE,QAAiB;QAC3E,MAAM,MAAM,GAAG,WAAW,CACxB,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,IAAI,CAAC,CAAC,CAC9D,CAAC;QACF,IAAI,MAAM,CAAC,WAAW,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,aAAa,GAAG,GAAG,CAAC;QAC7B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,QAAoB,EAAE,KAAkB;QAClD,OAAO,WAAW,CAAiB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,KAAoB;QAChC,OAAO,WAAW,CAAa,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IACnE,CAAC;CACF"}
@@ -0,0 +1,40 @@
1
+ import type { ModelStats as InternalModelStats } from '../../src/ts/model/generate-options.js';
2
+ import { type GenerateOptions as InternalGenerateOptions } from '../../src/ts/model/generate-options.js';
3
+ import { Parameter as InternalParameter } from '../../src/ts/model/parameter.js';
4
+ import type { GenerateResult as InternalGenerateResult, TestCase as InternalTestCase } from '../../src/ts/model/test-case.js';
5
+ import type { CoverageReport as InternalCoverageReport } from '../../src/ts/validator/coverage-validator.js';
6
+ import type { GenerateInput, CoverageReport as PublicCoverageReport, GenerateResult as PublicGenerateResult, ModelStats as PublicModelStats, Parameter as PublicParameter, TestCase as PublicTestCase } from '../types.js';
7
+ /**
8
+ * Convert public Parameter[] to internal Parameter[].
9
+ *
10
+ * Normalizes all values to strings, extracts invalid flags and aliases
11
+ * from ParameterValue objects.
12
+ */
13
+ export declare function toInternalParams(params: PublicParameter[]): InternalParameter[];
14
+ /**
15
+ * Convert a public TestCase (key-value map) to an internal TestCase (index array).
16
+ */
17
+ export declare function toInternalTestCase(tc: PublicTestCase, params: InternalParameter[]): InternalTestCase;
18
+ /**
19
+ * Convert a full GenerateInput to internal GenerateOptions.
20
+ */
21
+ export declare function toInternalOptions(input: GenerateInput, params: InternalParameter[]): InternalGenerateOptions;
22
+ /**
23
+ * Convert an internal TestCase (index array) to a public TestCase (key-value map).
24
+ *
25
+ * Uses displayName for alias rotation, matching the WASM TestCaseToJS behavior.
26
+ */
27
+ export declare function toPublicTestCase(tc: InternalTestCase, params: InternalParameter[], rotation: number): PublicTestCase;
28
+ /**
29
+ * Convert an internal GenerateResult to a public GenerateResult.
30
+ */
31
+ export declare function toPublicResult(result: InternalGenerateResult, params: InternalParameter[], strength: number): PublicGenerateResult;
32
+ /**
33
+ * Convert an internal CoverageReport to a public CoverageReport.
34
+ */
35
+ export declare function toPublicCoverageReport(report: InternalCoverageReport): PublicCoverageReport;
36
+ /**
37
+ * Convert an internal ModelStats to a public ModelStats.
38
+ */
39
+ export declare function toPublicModelStats(stats: InternalModelStats): PublicModelStats;
40
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../js/pure/adapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC/F,OAAO,EAGL,KAAK,eAAe,IAAI,uBAAuB,EAChD,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,SAAS,IAAI,iBAAiB,EAAc,MAAM,iCAAiC,CAAC;AAC7F,OAAO,KAAK,EACV,cAAc,IAAI,sBAAsB,EACxC,QAAQ,IAAI,gBAAgB,EAE7B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,EAAE,cAAc,IAAI,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AAC7G,OAAO,KAAK,EACV,aAAa,EAEb,cAAc,IAAI,oBAAoB,EACtC,cAAc,IAAI,oBAAoB,EACtC,UAAU,IAAI,gBAAgB,EAC9B,SAAS,IAAI,eAAe,EAC5B,QAAQ,IAAI,cAAc,EAE3B,MAAM,aAAa,CAAC;AAwBrB;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,iBAAiB,EAAE,CA4C/E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,iBAAiB,EAAE,GAC1B,gBAAgB,CAUlB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,iBAAiB,EAAE,GAC1B,uBAAuB,CA6BzB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,gBAAgB,EACpB,MAAM,EAAE,iBAAiB,EAAE,EAC3B,QAAQ,EAAE,MAAM,GACf,cAAc,CAQhB;AAcD;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,sBAAsB,EAC9B,MAAM,EAAE,iBAAiB,EAAE,EAC3B,QAAQ,EAAE,MAAM,GACf,oBAAoB,CAkCtB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,sBAAsB,GAAG,oBAAoB,CAO3F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,GAAG,gBAAgB,CAe9E"}