@ohtaman/washi 0.1.1 → 0.2.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 (97) hide show
  1. package/README.ja.md +124 -22
  2. package/README.md +124 -22
  3. package/README.zh-CN.md +124 -22
  4. package/dist/browser/browser-runtime-D13gHOT5.js +4189 -0
  5. package/dist/browser/highs-worker.js +21 -0
  6. package/dist/{lib/demo → browser}/highs.wasm +0 -0
  7. package/dist/browser/highs.wasm.LICENSE +22 -0
  8. package/dist/browser/loader-CVt4CloI.js +58 -0
  9. package/dist/browser/solvers/glpk.js +1057 -0
  10. package/dist/browser/solvers/glpk.min.js +1 -0
  11. package/dist/browser/solvers/z3-built.js +8245 -0
  12. package/dist/browser/solvers/z3-built.wasm +4 -0
  13. package/dist/browser/solvers/z3.js +7528 -0
  14. package/dist/browser/solvers/z3.min.js +5 -0
  15. package/dist/browser/washi.js +1213 -0
  16. package/dist/browser/washi.min.js +5 -0
  17. package/dist/lib/async-mutex-Duo4jwzn.js +195 -0
  18. package/dist/lib/constraint-XWdn0ID9.js +93 -0
  19. package/dist/lib/highs-assets.js +1 -0
  20. package/dist/lib/highs-browser-runtime.js +4189 -0
  21. package/dist/lib/highs-node-runtime.js +1 -0
  22. package/dist/lib/highs-worker-factory.js +1 -0
  23. package/dist/lib/highs-worker.js +21 -0
  24. package/dist/lib/highs.wasm +0 -0
  25. package/dist/lib/loader-Dti0v9yC.js +50 -0
  26. package/dist/lib/registry-DksqCSjI.js +32 -0
  27. package/dist/lib/solvers/glpk.js +153 -2
  28. package/dist/lib/solvers/z3-assets.js +1 -0
  29. package/dist/lib/solvers/z3-built.js +8245 -0
  30. package/dist/lib/solvers/z3-built.wasm +4 -0
  31. package/dist/lib/solvers/z3.js +451 -2
  32. package/dist/lib/washi.js +388 -78
  33. package/dist/types/index.d.ts +2 -3
  34. package/dist/types/index.d.ts.map +1 -1
  35. package/dist/types/modeler/index.d.ts +1 -1
  36. package/dist/types/modeler/index.d.ts.map +1 -1
  37. package/dist/types/modeler/model.d.ts +1 -1
  38. package/dist/types/modeler/model.d.ts.map +1 -1
  39. package/dist/types/modeler/solvers/glpk/index.d.ts +3 -0
  40. package/dist/types/modeler/solvers/glpk/index.d.ts.map +1 -0
  41. package/dist/types/modeler/solvers/glpk/loader.d.ts +16 -0
  42. package/dist/types/modeler/solvers/glpk/loader.d.ts.map +1 -0
  43. package/dist/types/modeler/solvers/glpk/solver.d.ts +26 -0
  44. package/dist/types/modeler/solvers/glpk/solver.d.ts.map +1 -0
  45. package/dist/types/modeler/solvers/glpk.d.ts +1 -21
  46. package/dist/types/modeler/solvers/glpk.d.ts.map +1 -1
  47. package/dist/types/modeler/solvers/highs/assets.d.ts +3 -0
  48. package/dist/types/modeler/solvers/highs/assets.d.ts.map +1 -0
  49. package/dist/types/modeler/solvers/highs/browser-runtime.d.ts +2 -0
  50. package/dist/types/modeler/solvers/highs/browser-runtime.d.ts.map +1 -0
  51. package/dist/types/modeler/solvers/highs/index.d.ts +6 -0
  52. package/dist/types/modeler/solvers/highs/index.d.ts.map +1 -0
  53. package/dist/types/{highs-loader.d.ts → modeler/solvers/highs/loader.d.ts} +3 -3
  54. package/dist/types/modeler/solvers/highs/loader.d.ts.map +1 -0
  55. package/dist/types/modeler/solvers/highs/node-runtime.d.ts +2 -0
  56. package/dist/types/modeler/solvers/highs/node-runtime.d.ts.map +1 -0
  57. package/dist/types/modeler/solvers/highs/solver.d.ts +33 -0
  58. package/dist/types/modeler/solvers/highs/solver.d.ts.map +1 -0
  59. package/dist/types/modeler/solvers/highs/worker-client.d.ts +13 -0
  60. package/dist/types/modeler/solvers/highs/worker-client.d.ts.map +1 -0
  61. package/dist/types/modeler/solvers/highs/worker-factory.d.ts +3 -0
  62. package/dist/types/modeler/solvers/highs/worker-factory.d.ts.map +1 -0
  63. package/dist/types/modeler/solvers/highs/worker.d.ts +2 -0
  64. package/dist/types/modeler/solvers/highs/worker.d.ts.map +1 -0
  65. package/dist/types/modeler/solvers/highs.d.ts +1 -25
  66. package/dist/types/modeler/solvers/highs.d.ts.map +1 -1
  67. package/dist/types/modeler/solvers/index.d.ts +0 -2
  68. package/dist/types/modeler/solvers/index.d.ts.map +1 -1
  69. package/dist/types/modeler/solvers/mock.d.ts +1 -0
  70. package/dist/types/modeler/solvers/mock.d.ts.map +1 -1
  71. package/dist/types/modeler/solvers/registry.d.ts +1 -2
  72. package/dist/types/modeler/solvers/registry.d.ts.map +1 -1
  73. package/dist/types/modeler/solvers/types.d.ts +1 -1
  74. package/dist/types/modeler/solvers/types.d.ts.map +1 -1
  75. package/dist/types/modeler/solvers/z3/assets.d.ts +11 -0
  76. package/dist/types/modeler/solvers/z3/assets.d.ts.map +1 -0
  77. package/dist/types/modeler/solvers/z3/index.d.ts +3 -0
  78. package/dist/types/modeler/solvers/z3/index.d.ts.map +1 -0
  79. package/dist/types/modeler/solvers/z3/loader.d.ts +44 -0
  80. package/dist/types/modeler/solvers/z3/loader.d.ts.map +1 -0
  81. package/dist/types/modeler/solvers/z3/solver.d.ts +34 -0
  82. package/dist/types/modeler/solvers/z3/solver.d.ts.map +1 -0
  83. package/dist/types/modeler/solvers/z3.d.ts +1 -36
  84. package/dist/types/modeler/solvers/z3.d.ts.map +1 -1
  85. package/package.json +35 -9
  86. package/dist/lib/assets/highs-worker-DeDWU6KI.js +0 -3
  87. package/dist/lib/glpk-BC32ZaPG.js +0 -126
  88. package/dist/lib/washi-logo.png +0 -0
  89. package/dist/lib/washi-logo.svg +0 -70
  90. package/dist/lib/z3-C8g-PtmP.js +0 -582
  91. package/dist/types/glpk-loader.d.ts +0 -8
  92. package/dist/types/glpk-loader.d.ts.map +0 -1
  93. package/dist/types/highs-loader.d.ts.map +0 -1
  94. package/dist/types/highs-worker-client.d.ts +0 -12
  95. package/dist/types/highs-worker-client.d.ts.map +0 -1
  96. package/dist/types/highs-worker.d.ts +0 -2
  97. package/dist/types/highs-worker.d.ts.map +0 -1
package/dist/lib/washi.js CHANGED
@@ -1,11 +1,29 @@
1
- import { C as e, E as t, S as n, T as r, _ as i, a, b as o, c as s, d as c, f as l, g as u, h as d, i as f, l as p, m, n as h, o as g, p as _, r as v, s as ee, t as y, u as b, v as x, w as S, x as C, y as w } from "./z3-C8g-PtmP.js";
2
- import { n as T, t as E } from "./glpk-BC32ZaPG.js";
1
+ import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c } from "./constraint-XWdn0ID9.js";
2
+ import { i as l, n as u, r as d, t as f } from "./registry-DksqCSjI.js";
3
+ import { a as p, c as m, i as h, n as g, o as _, r as v, s as y, t as b } from "./loader-Dti0v9yC.js";
4
+ import { createHighsWorker as ee } from "./highs-worker-factory.js";
5
+ //#region \0rolldown/runtime.js
6
+ var x = Object.defineProperty, te = Object.getOwnPropertyDescriptor, ne = Object.getOwnPropertyNames, re = Object.prototype.hasOwnProperty, S = (e, t) => {
7
+ let n = {};
8
+ for (var r in e) x(n, r, {
9
+ get: e[r],
10
+ enumerable: !0
11
+ });
12
+ return t || x(n, Symbol.toStringTag, { value: "Module" }), n;
13
+ }, C = (e, t, n, r) => {
14
+ if (t && typeof t == "object" || typeof t == "function") for (var i = ne(t), a = 0, o = i.length, s; a < o; a++) s = i[a], !re.call(e, s) && s !== n && x(e, s, {
15
+ get: ((e) => t[e]).bind(null, s),
16
+ enumerable: !(r = te(t, s)) || r.enumerable
17
+ });
18
+ return e;
19
+ }, w = (e, t, n) => (C(e, t, "default"), n && C(n, t, "default"));
20
+ //#endregion
3
21
  //#region src/modeler/quad-expr.ts
4
- function D(e, t) {
22
+ function T(e, t) {
5
23
  let n = e.id, r = t.id;
6
24
  return n <= r ? `${n}:${r}` : `${r}:${n}`;
7
25
  }
8
- var O = class e {
26
+ var E = class e {
9
27
  linearTerms;
10
28
  quadTerms;
11
29
  constant;
@@ -18,7 +36,7 @@ var O = class e {
18
36
  return new e(this.linearTerms, this.quadTerms, this.constant);
19
37
  }
20
38
  getQuadCoeff(e, t) {
21
- let n = D(e, t), r = this.quadTerms.get(n);
39
+ let n = T(e, t), r = this.quadTerms.get(n);
22
40
  return r ? r.coeff : 0;
23
41
  }
24
42
  add(t) {
@@ -91,14 +109,14 @@ var O = class e {
91
109
  return this.value;
92
110
  }
93
111
  static fromProduct(t, n, r = 1) {
94
- let i = new e(), a = D(t, n);
112
+ let i = new e(), a = T(t, n);
95
113
  return i.quadTerms.set(a, {
96
114
  var1: t.id <= n.id ? t : n,
97
115
  var2: t.id <= n.id ? n : t,
98
116
  coeff: r
99
117
  }), i;
100
118
  }
101
- }, k = class e {
119
+ }, D = class e {
102
120
  terms;
103
121
  constant;
104
122
  constructor(e = /* @__PURE__ */ new Map(), t = 0) {
@@ -108,7 +126,7 @@ var O = class e {
108
126
  return new e(this.terms, this.constant);
109
127
  }
110
128
  add(e) {
111
- if (e instanceof O) return e.add(this);
129
+ if (e instanceof E) return e.add(this);
112
130
  let t = this.clone();
113
131
  if (typeof e == "number") t.constant += e;
114
132
  else if ("terms" in e) {
@@ -124,7 +142,7 @@ var O = class e {
124
142
  return t;
125
143
  }
126
144
  sub(e) {
127
- return e instanceof O ? e.neg().add(this) : typeof e == "number" ? this.add(-e) : ("terms" in e, this.add(e.mul(-1)));
145
+ return e instanceof E ? e.neg().add(this) : typeof e == "number" ? this.add(-e) : ("terms" in e, this.add(e.mul(-1)));
128
146
  }
129
147
  mul(t) {
130
148
  if (typeof t == "number") {
@@ -135,9 +153,9 @@ var O = class e {
135
153
  }
136
154
  return n;
137
155
  }
138
- let n = new O();
156
+ let n = new E();
139
157
  Math.abs(this.constant) >= 1e-12 && n.linearTerms.set(t, this.constant);
140
- for (let [e, r] of this.terms) n = n.add(O.fromProduct(e, t, r));
158
+ for (let [e, r] of this.terms) n = n.add(E.fromProduct(e, t, r));
141
159
  return n;
142
160
  }
143
161
  div(e) {
@@ -180,7 +198,7 @@ var O = class e {
180
198
  let i = this.clone(), a = 0;
181
199
  typeof n == "number" ? a = n : "terms" in n ? (i = i.sub(new e(n.terms, 0)), a = n.constant) : i = i.sub(n);
182
200
  let o = a - i.constant;
183
- return i.constant = 0, new x(i, t, o, r);
201
+ return i.constant = 0, new c(i, t, o, r);
184
202
  }
185
203
  toString() {
186
204
  let e = [], t = !0;
@@ -195,7 +213,7 @@ var O = class e {
195
213
  return e.join(" ") || "0";
196
214
  }
197
215
  };
198
- function A(e, t) {
216
+ function O(e, t) {
199
217
  let n = /* @__PURE__ */ new Map(), r = 0, i = 0;
200
218
  for (let a of e) {
201
219
  let e = t ? t(a, i++) : a;
@@ -213,9 +231,9 @@ function A(e, t) {
213
231
  }
214
232
  }
215
233
  for (let [e, t] of n) Math.abs(t) < 1e-12 && n.delete(e);
216
- return new k(n, r);
234
+ return new D(n, r);
217
235
  }
218
- var j = A, M = A, N = 0, P = class e {
236
+ var k = O, A = O, ie = 0, j = class e {
219
237
  id;
220
238
  name;
221
239
  type;
@@ -224,7 +242,7 @@ var j = A, M = A, N = 0, P = class e {
224
242
  value = null;
225
243
  reducedCost = null;
226
244
  constructor(e = {}) {
227
- this.id = ++N, this.name = e.name || `x_${this.id}`, this.type = e.type || "Continuous", this.type === "Binary" ? (this.lb = 0, this.ub = 1) : (this.lb = e.lb === void 0 ? 0 : e.lb, this.ub = e.ub === void 0 ? Infinity : e.ub);
245
+ this.id = ++ie, this.name = e.name || `x_${this.id}`, this.type = e.type || "Continuous", this.type === "Binary" ? (this.lb = 0, this.ub = 1) : (this.lb = e.lb === void 0 ? 0 : e.lb, this.ub = e.ub === void 0 ? Infinity : e.ub);
228
246
  }
229
247
  get x() {
230
248
  return this.value;
@@ -233,39 +251,39 @@ var j = A, M = A, N = 0, P = class e {
233
251
  return this.value;
234
252
  }
235
253
  mul(t) {
236
- if (typeof t == "number") return new k(/* @__PURE__ */ new Map([[this, t]]), 0);
237
- if (t instanceof e) return O.fromProduct(this, t, 1);
238
- let n = new O();
254
+ if (typeof t == "number") return new D(/* @__PURE__ */ new Map([[this, t]]), 0);
255
+ if (t instanceof e) return E.fromProduct(this, t, 1);
256
+ let n = new E();
239
257
  Math.abs(t.constant) >= 1e-12 && n.linearTerms.set(this, t.constant);
240
258
  for (let [e, r] of t.terms) {
241
- let t = O.fromProduct(this, e, r);
259
+ let t = E.fromProduct(this, e, r);
242
260
  n = n.add(t);
243
261
  }
244
262
  return n;
245
263
  }
246
264
  add(e) {
247
- return e instanceof O ? e.add(this) : new k(/* @__PURE__ */ new Map([[this, 1]]), 0).add(e);
265
+ return e instanceof E ? e.add(this) : new D(/* @__PURE__ */ new Map([[this, 1]]), 0).add(e);
248
266
  }
249
267
  sub(e) {
250
- return e instanceof O ? e.neg().add(this) : new k(/* @__PURE__ */ new Map([[this, 1]]), 0).sub(e);
268
+ return e instanceof E ? e.neg().add(this) : new D(/* @__PURE__ */ new Map([[this, 1]]), 0).sub(e);
251
269
  }
252
270
  neg() {
253
271
  return this.mul(-1);
254
272
  }
255
273
  le(e, t) {
256
- return new k(/* @__PURE__ */ new Map([[this, 1]]), 0).le(e, t);
274
+ return new D(/* @__PURE__ */ new Map([[this, 1]]), 0).le(e, t);
257
275
  }
258
276
  lessThanOrEqual(e, t) {
259
277
  return this.le(e, t);
260
278
  }
261
279
  ge(e, t) {
262
- return new k(/* @__PURE__ */ new Map([[this, 1]]), 0).ge(e, t);
280
+ return new D(/* @__PURE__ */ new Map([[this, 1]]), 0).ge(e, t);
263
281
  }
264
282
  greaterThanOrEqual(e, t) {
265
283
  return this.ge(e, t);
266
284
  }
267
285
  eq(e, t) {
268
- return new k(/* @__PURE__ */ new Map([[this, 1]]), 0).eq(e, t);
286
+ return new D(/* @__PURE__ */ new Map([[this, 1]]), 0).eq(e, t);
269
287
  }
270
288
  equalTo(e, t) {
271
289
  return this.eq(e, t);
@@ -276,7 +294,7 @@ var j = A, M = A, N = 0, P = class e {
276
294
  };
277
295
  //#endregion
278
296
  //#region src/modeler/parser.ts
279
- function F(e) {
297
+ function ae(e) {
280
298
  let t = [], n = 0, r = e.length;
281
299
  for (; n < r;) {
282
300
  let i = e[n];
@@ -332,7 +350,7 @@ function F(e) {
332
350
  }
333
351
  return t;
334
352
  }
335
- var te = class {
353
+ var oe = class {
336
354
  tokens;
337
355
  pos = 0;
338
356
  resolver;
@@ -394,12 +412,12 @@ var te = class {
394
412
  let e = this.consume();
395
413
  return this.resolveVariable(e.value).mul(t);
396
414
  }
397
- return new k(/* @__PURE__ */ new Map(), t);
415
+ return new D(/* @__PURE__ */ new Map(), t);
398
416
  }
399
417
  if (e.type === "IDENT") {
400
418
  this.consume();
401
419
  let t = this.resolveVariable(e.value);
402
- return new k(/* @__PURE__ */ new Map([[t, 1]]), 0);
420
+ return new D(/* @__PURE__ */ new Map([[t, 1]]), 0);
403
421
  }
404
422
  if (e.type === "LPAREN") {
405
423
  this.consume("LPAREN");
@@ -414,10 +432,10 @@ var te = class {
414
432
  return t;
415
433
  }
416
434
  };
417
- function I(e, t) {
418
- return new te(F(e), t).parseExpression();
435
+ function M(e, t) {
436
+ return new oe(ae(e), t).parseExpression();
419
437
  }
420
- function L(e, t, n) {
438
+ function N(e, t, n) {
421
439
  let r = e.match(/(<=|>=|==|=<|=>|=)/);
422
440
  if (!r) throw Error(`Constraint must contain a comparison operator (<=, >=, ==, =): "${e}"`);
423
441
  let i = r[0], a = r.index, o = e.substring(0, a).trim(), s = e.substring(a + i.length).trim(), c;
@@ -425,18 +443,18 @@ function L(e, t, n) {
425
443
  else if (i === ">=" || i === "=>") c = ">=";
426
444
  else if (i === "==" || i === "=") c = "==";
427
445
  else throw Error(`Unsupported operator "${i}"`);
428
- let l = I(o, t), u = I(s, t);
446
+ let l = M(o, t), u = M(s, t);
429
447
  return c === "<=" ? l.le(u, n) : c === ">=" ? l.ge(u, n) : l.eq(u, n);
430
448
  }
431
- function R(e, t) {
449
+ function P(e, t) {
432
450
  let n = /* @__PURE__ */ new Map(), r = "";
433
451
  for (let i = 0; i < e.length; i++) if (r += e[i], i < t.length) {
434
452
  let e = t[i];
435
453
  if (typeof e == "number") r += `(${e})`;
436
- else if (e instanceof P) {
454
+ else if (e instanceof j) {
437
455
  let t = `__v_${i}__`;
438
456
  n.set(t, e), r += t;
439
- } else if (e instanceof k) {
457
+ } else if (e instanceof D) {
440
458
  `${i}`, r += `(${e.toString()})`;
441
459
  for (let [t] of e.terms) n.set(t.name, t);
442
460
  }
@@ -446,42 +464,42 @@ function R(e, t) {
446
464
  resolver: (e) => n.get(e)
447
465
  };
448
466
  }
449
- function z(e, ...t) {
450
- let { fullText: n, resolver: r } = R(e, t);
451
- return L(n, r);
467
+ function se(e, ...t) {
468
+ let { fullText: n, resolver: r } = P(e, t);
469
+ return N(n, r);
452
470
  }
453
- function B(e, ...t) {
454
- let { fullText: n, resolver: r } = R(e, t);
455
- return /(<=|>=|==|=<|=>|=)/.test(n) ? L(n, r) : I(n, r);
471
+ function ce(e, ...t) {
472
+ let { fullText: n, resolver: r } = P(e, t);
473
+ return /(<=|>=|==|=<|=>|=)/.test(n) ? N(n, r) : M(n, r);
456
474
  }
457
475
  //#endregion
458
476
  //#region src/modeler/lp-writer.ts
459
- function V(e, t, n) {
477
+ function le(e, t, n) {
460
478
  let r = e.replace(/[^a-zA-Z0-9_]/g, "_");
461
479
  return /^[0-9]/.test(r) && (r = `${t}_${r}`), (!r || r.length === 0) && (r = `${t}_${n}`), r;
462
480
  }
463
- function H(e) {
481
+ function F(e) {
464
482
  let { sense: t, objective: n, constraints: r, variables: i } = e, a = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), s = /* @__PURE__ */ new Map(), c = /* @__PURE__ */ new Set();
465
483
  for (let e of i) {
466
- let t = V(e.name, "x", e.id), n = t, r = 1;
484
+ let t = le(e.name, "x", e.id), n = t, r = 1;
467
485
  for (; c.has(n);) n = `${t}_${r++}`;
468
486
  c.add(n), o.set(e, n), a.set(n, e);
469
487
  }
470
488
  let l = /* @__PURE__ */ new Set(), u = /* @__PURE__ */ new Map();
471
489
  for (let e of r) {
472
- let t = V(e.name, "c", e.id), n = t, r = 1;
490
+ let t = le(e.name, "c", e.id), n = t, r = 1;
473
491
  for (; l.has(n);) n = `${t}_${r++}`;
474
492
  l.add(n), u.set(e, n), s.set(n, e);
475
493
  }
476
494
  let d = [];
477
495
  d.push(t === "Maximize" ? "Maximize" : "Minimize");
478
- let f = [], p = !0, m = n instanceof O ? n.linearTerms : n.terms;
496
+ let f = [], p = !0, m = n instanceof E ? n.linearTerms : n.terms;
479
497
  if (m) for (let [e, t] of m) {
480
498
  if (Math.abs(t) < 1e-12) continue;
481
499
  let n = o.get(e), r = t >= 0 ? p ? "" : "+ " : "- ", i = Math.abs(t), a = i === 1 ? "" : `${i} `;
482
500
  f.push(`${r}${a}${n}`), p = !1;
483
501
  }
484
- if (n instanceof O && n.quadTerms.size > 0) {
502
+ if (n instanceof E && n.quadTerms.size > 0) {
485
503
  let e = [], t = !0;
486
504
  for (let r of n.quadTerms.values()) {
487
505
  if (Math.abs(r.coeff) < 1e-12) continue;
@@ -532,8 +550,237 @@ function H(e) {
532
550
  };
533
551
  }
534
552
  //#endregion
553
+ //#region src/modeler/solvers/highs/worker-client.ts
554
+ var I = null, ue = 0, L = /* @__PURE__ */ new Map();
555
+ function de() {
556
+ if (typeof window > "u" || typeof Worker > "u") return null;
557
+ if (!I) try {
558
+ I = ee();
559
+ let e = I;
560
+ I.onmessage = (e) => {
561
+ let { type: t, id: n, result: r, runTime: i, error: a } = e.data, o = L.get(n);
562
+ o && (L.delete(n), t === "SOLVE_SUCCESS" ? o.resolve({
563
+ result: r,
564
+ runTime: i
565
+ }) : o.reject(Error(a || "Worker solve failed")));
566
+ };
567
+ let t = (t) => {
568
+ if (I === e) {
569
+ I = null, e.terminate();
570
+ for (let e of L.values()) e.reject(t);
571
+ L.clear();
572
+ }
573
+ };
574
+ I.onerror = (e) => t(/* @__PURE__ */ Error(`[WaSHI] HiGHS Worker failed to load or execute. Check Worker assets, CORS and CSP. ${e?.message || ""}`)), I.onmessageerror = () => t(/* @__PURE__ */ Error("[WaSHI] Could not deserialize the HiGHS Worker response."));
575
+ } catch {
576
+ I = null;
577
+ }
578
+ return I;
579
+ }
580
+ async function R(e, t = {}) {
581
+ let n = await _(t.wasmUrl), r = t.useWorker ?? typeof window < "u" ? de() : null;
582
+ if (!r) return m(e, t);
583
+ let i = {
584
+ ...t,
585
+ wasmUrl: n
586
+ }, a = `req_${++ue}`;
587
+ return new Promise((t, n) => {
588
+ L.set(a, {
589
+ resolve: t,
590
+ reject: n
591
+ });
592
+ try {
593
+ r.postMessage({
594
+ type: "SOLVE",
595
+ id: a,
596
+ lpString: e,
597
+ options: i
598
+ });
599
+ } catch (e) {
600
+ L.delete(a), n(e);
601
+ }
602
+ });
603
+ }
604
+ //#endregion
605
+ //#region src/modeler/solvers/highs/solver.ts
606
+ function z(e) {
607
+ if (typeof e != "string") return "Unknown";
608
+ let t = e.trim();
609
+ if (!t) return "Unknown";
610
+ switch (t) {
611
+ case "Optimal": return "Optimal";
612
+ case "Infeasible": return "Infeasible";
613
+ case "Unbounded": return "Unbounded";
614
+ case "Primal infeasible or unbounded": return "Unknown";
615
+ case "Time limit reached":
616
+ case "TimeLimit": return "TimeLimit";
617
+ case "Iteration limit reached":
618
+ case "IterationLimit": return "IterationLimit";
619
+ case "Bound on objective reached":
620
+ case "Target for objective reached":
621
+ case "Feasible": return "Feasible";
622
+ case "Not Set": return "NotSolved";
623
+ case "Load error":
624
+ case "Model error":
625
+ case "Presolve error":
626
+ case "Solve error":
627
+ case "Postsolve error":
628
+ case "Error": return "Error";
629
+ case "Empty":
630
+ case "Unknown": return "Unknown";
631
+ }
632
+ let n = t.toLowerCase();
633
+ return n.includes("infeasible") && n.includes("unbounded") ? "Unknown" : n.includes("infeasible") ? "Infeasible" : n.includes("unbounded") ? "Unbounded" : n.includes("time limit") || n.includes("timelimit") ? "TimeLimit" : n.includes("iteration limit") || n.includes("iterationlimit") ? "IterationLimit" : n.includes("error") ? "Error" : n === "optimal" ? "Optimal" : "Unknown";
634
+ }
635
+ var B = class e {
636
+ static capabilities = {
637
+ supportsMIP: !0,
638
+ supportsQP: !0
639
+ };
640
+ name = "HiGHS";
641
+ version = "1.15.3";
642
+ capabilities = e.capabilities;
643
+ options;
644
+ constructor(e = {}) {
645
+ this.options = e;
646
+ }
647
+ async solve(e, t, n = {}) {
648
+ let r = {
649
+ ...this.options,
650
+ ...n
651
+ }, { lpString: i, nameToVar: a, nameToConstraint: o } = t, { result: s, runTime: c } = await R(i, r), l = z(s?.Status), u = s.ObjectiveValue, d = typeof u == "number" ? u + e.objective.constant : null, f = {}, p = {}, m = {}, h = {};
652
+ if (s.Columns) for (let [e, t] of Object.entries(s.Columns)) {
653
+ let n = a.get(e);
654
+ if (n) {
655
+ let e = Math.abs(t.Primal) < 1e-9 ? 0 : t.Primal;
656
+ f[n.name] = e, t.Dual !== void 0 && (m[n.name] = Math.abs(t.Dual) < 1e-9 ? 0 : t.Dual);
657
+ }
658
+ }
659
+ if (s.Rows) {
660
+ let e = Array.isArray(s.Rows) ? s.Rows : Object.values(s.Rows);
661
+ for (let t of e) {
662
+ let e = t.Name, n = o.get(e);
663
+ if (n && (t.Dual !== void 0 && (p[n.name] = Math.abs(t.Dual) < 1e-9 ? 0 : t.Dual), t.Primal !== void 0)) {
664
+ let e = n.rhs - t.Primal;
665
+ h[n.name] = Math.abs(e) < 1e-9 ? 0 : e;
666
+ }
667
+ }
668
+ }
669
+ return {
670
+ status: l,
671
+ objectiveValue: d,
672
+ values: f,
673
+ reducedCosts: m,
674
+ duals: p,
675
+ slacks: h,
676
+ runTime: c,
677
+ raw: s
678
+ };
679
+ }
680
+ }, V = B;
681
+ function H() {
682
+ d("highs", (e) => new B(e)), l((e) => new B(e));
683
+ }
684
+ H();
685
+ //#endregion
686
+ //#region src/modeler/solvers/highs/index.ts
687
+ var U = /* @__PURE__ */ S({
688
+ HiGHS: () => V,
689
+ HighsSolver: () => B,
690
+ OFFICIAL_HIGHS_CDN_WASM_URL: () => b,
691
+ getHighs: () => g,
692
+ getHighsWasmUrl: () => v,
693
+ isValidWasmHeader: () => h,
694
+ mapHighsStatus: () => z,
695
+ probeWasmUrl: () => p,
696
+ registerHighsSolver: () => H,
697
+ resolveBrowserWasmUrl: () => _,
698
+ setHighsWasmUrl: () => y,
699
+ solveLp: () => R,
700
+ solveLpWithHighs: () => m
701
+ });
702
+ import * as fe from "./highs-worker-factory.js";
703
+ w(U, fe);
704
+ import * as pe from "./highs-assets.js";
705
+ w(U, pe);
706
+ //#endregion
707
+ //#region src/modeler/solvers/highs.ts
708
+ var W = /* @__PURE__ */ S({
709
+ HiGHS: () => V,
710
+ HighsSolver: () => B,
711
+ OFFICIAL_HIGHS_CDN_WASM_URL: () => b,
712
+ getHighs: () => g,
713
+ getHighsWasmUrl: () => v,
714
+ isValidWasmHeader: () => h,
715
+ mapHighsStatus: () => z,
716
+ probeWasmUrl: () => p,
717
+ registerHighsSolver: () => H,
718
+ resolveBrowserWasmUrl: () => _,
719
+ setHighsWasmUrl: () => y,
720
+ solveLp: () => R,
721
+ solveLpWithHighs: () => m
722
+ });
723
+ w(W, U);
724
+ //#endregion
725
+ //#region src/modeler/solvers/mock.ts
726
+ var G = class {
727
+ name;
728
+ capabilities;
729
+ options;
730
+ constructor(e = {}) {
731
+ this.name = e.name || "MockSolver", this.capabilities = e.capabilities || {
732
+ supportsMIP: !0,
733
+ supportsQP: !0
734
+ }, this.options = e;
735
+ }
736
+ async solve(e, t, n = {}) {
737
+ let r = {
738
+ ...this.options,
739
+ ...n
740
+ };
741
+ return r.delayMs && r.delayMs > 0 && await new Promise((e) => setTimeout(e, r.delayMs)), {
742
+ status: r.status || "Optimal",
743
+ objectiveValue: r.objectiveValue ?? 0,
744
+ values: r.values || {},
745
+ reducedCosts: r.reducedCosts,
746
+ duals: r.duals,
747
+ slacks: r.slacks,
748
+ runTime: .001,
749
+ raw: { mock: !0 }
750
+ };
751
+ }
752
+ };
753
+ function K() {
754
+ d("mock", (e) => new G(e));
755
+ }
756
+ K();
757
+ //#endregion
758
+ //#region src/modeler/solvers/index.ts
759
+ var q = /* @__PURE__ */ S({
760
+ HiGHS: () => V,
761
+ HighsSolver: () => B,
762
+ MockSolver: () => G,
763
+ OFFICIAL_HIGHS_CDN_WASM_URL: () => b,
764
+ getHighs: () => g,
765
+ getHighsWasmUrl: () => v,
766
+ getSolver: () => f,
767
+ isValidWasmHeader: () => h,
768
+ listAvailableSolvers: () => u,
769
+ mapHighsStatus: () => z,
770
+ probeWasmUrl: () => p,
771
+ registerHighsSolver: () => H,
772
+ registerMockSolver: () => K,
773
+ registerSolver: () => d,
774
+ resolveBrowserWasmUrl: () => _,
775
+ setDefaultSolver: () => l,
776
+ setHighsWasmUrl: () => y,
777
+ solveLp: () => R,
778
+ solveLpWithHighs: () => m
779
+ });
780
+ w(q, W);
781
+ //#endregion
535
782
  //#region src/modeler/model.ts
536
- var U = class {
783
+ var J = class {
537
784
  name;
538
785
  sense;
539
786
  objective;
@@ -550,8 +797,12 @@ var U = class {
550
797
  runTime = 0;
551
798
  solution = null;
552
799
  solver = null;
553
- constructor(e = {}) {
554
- this.name = e.name || "OptimizationModel", this.sense = e.sense || "Minimize", this.objective = new k(), e.solver && (this.solver = v(e.solver));
800
+ constructor(e = {}, t) {
801
+ let n;
802
+ n = typeof e == "string" ? {
803
+ ...t,
804
+ name: e
805
+ } : e, this.name = n.name || "OptimizationModel", this.sense = n.sense || "Minimize", this.objective = new D(), n.solver && (this.solver = f(n.solver));
555
806
  }
556
807
  get vars() {
557
808
  return this.variables;
@@ -573,7 +824,7 @@ var U = class {
573
824
  lb: n,
574
825
  ub: r
575
826
  } : e || {};
576
- let a = new P(i);
827
+ let a = new j(i);
577
828
  if (this.varMapByName.has(a.name)) throw Error(`Variable with name '${a.name}' already exists in model`);
578
829
  return this.variables.push(a), this.varMapByName.set(a.name, a), a;
579
830
  }
@@ -628,7 +879,7 @@ var U = class {
628
879
  return this.constrMapByName.get(e);
629
880
  }
630
881
  setObjective(e, t) {
631
- t && (this.sense = t), this.objective = typeof e == "string" ? I(e, (e) => this.getVarByName(e)) : typeof e == "number" ? new k(/* @__PURE__ */ new Map(), e) : e instanceof O || "terms" in e ? e.clone() : new k(/* @__PURE__ */ new Map([[e, 1]]), 0);
882
+ t && (this.sense = t), this.objective = typeof e == "string" ? M(e, (e) => this.getVarByName(e)) : typeof e == "number" ? new D(/* @__PURE__ */ new Map(), e) : e instanceof E || "terms" in e ? e.clone() : new D(/* @__PURE__ */ new Map([[e, 1]]), 0);
632
883
  }
633
884
  maximize(e) {
634
885
  this.setObjective(e, "Maximize");
@@ -637,11 +888,11 @@ var U = class {
637
888
  this.setObjective(e, "Minimize");
638
889
  }
639
890
  addBoolVar(e) {
640
- let t = new C(e);
891
+ let t = new n(e);
641
892
  return this.boolVars.push(t), t;
642
893
  }
643
894
  addConstraint(e, t) {
644
- if (e instanceof w) {
895
+ if (e instanceof i) {
645
896
  let n = t || `lc_${this.logicalConstraints.length + 1}`;
646
897
  return this.logicalConstraints.push({
647
898
  name: n,
@@ -649,7 +900,7 @@ var U = class {
649
900
  }), e;
650
901
  }
651
902
  let n;
652
- if (typeof e == "string" ? n = L(e, (e) => this.getVarByName(e), t) : (n = e, t && (n.name = t)), this.constrMapByName.has(n.name)) throw Error(`Constraint with name '${n.name}' already exists in model`);
903
+ if (typeof e == "string" ? n = N(e, (e) => this.getVarByName(e), t) : (n = e, t && (n.name = t)), this.constrMapByName.has(n.name)) throw Error(`Constraint with name '${n.name}' already exists in model`);
653
904
  return this.constraints.push(n), this.constrMapByName.set(n.name, n), n;
654
905
  }
655
906
  addConstr(e, t) {
@@ -663,7 +914,7 @@ var U = class {
663
914
  for (let t of e) this.add(t);
664
915
  return this;
665
916
  }
666
- return e instanceof P ? (this.varMapByName.has(e.name) || (this.variables.push(e), this.varMapByName.set(e.name, e)), this) : (this.addConstraint(e, t), this);
917
+ return e instanceof j ? (this.varMapByName.has(e.name) || (this.variables.push(e), this.varMapByName.set(e.name, e)), this) : (this.addConstraint(e, t), this);
667
918
  }
668
919
  addIndicator(e, t, n = {}) {
669
920
  let r = n.activeValue === void 0 ? 1 : n.activeValue, i = n.M === void 0 ? 1e5 : n.M, a = n.name || `ind_${e.name}_${t.name}`, o = [], { lhs: s, sense: c, rhs: l } = t;
@@ -689,7 +940,7 @@ var U = class {
689
940
  return o;
690
941
  }
691
942
  toLpString() {
692
- let { lpString: e } = H({
943
+ let { lpString: e } = F({
693
944
  name: this.name,
694
945
  sense: this.sense,
695
946
  objective: this.objective,
@@ -700,7 +951,7 @@ var U = class {
700
951
  }
701
952
  async optimize(e, t) {
702
953
  let n, r;
703
- if (e && typeof e == "object" && "solve" in e && typeof e.solve == "function" ? (n = e, r = t || {}) : typeof e == "function" ? (n = new e(t), r = t || {}) : typeof e == "string" ? (n = v(e, t), r = t || {}) : (r = { ...e }, r.solver ? (n = v(r.solver, r), delete r.solver) : n = this.solver || v()), this.objective instanceof O && this.objective.quadTerms.size > 0 && n.capabilities?.supportsQP === !1) throw Error(`Solver "${n.name}" does not support quadratic objectives (QP). Please use a QP-capable solver such as HiGHS or Clarabel.`);
954
+ if (e && typeof e == "object" && "solve" in e && typeof e.solve == "function" ? (n = e, r = t || {}) : typeof e == "function" ? (n = new e(t), r = t || {}) : typeof e == "string" ? (n = f(e, t), r = t || {}) : (r = { ...e }, r.solver ? (n = f(r.solver, r), delete r.solver) : n = this.solver || f()), this.objective instanceof E && this.objective.quadTerms.size > 0 && n.capabilities?.supportsQP === !1) throw Error(`Solver "${n.name}" does not support quadratic objectives (QP). Please use a QP-capable solver such as HiGHS or Clarabel.`);
704
955
  let i = {
705
956
  name: this.name,
706
957
  sense: this.sense,
@@ -709,7 +960,7 @@ var U = class {
709
960
  variables: this.variables,
710
961
  logicalConstraints: this.logicalConstraints,
711
962
  boolVars: this.boolVars
712
- }, a = H(i), o = await n.solve(i, a, r);
963
+ }, a = F(i), o = await n.solve(i, a, r);
713
964
  this.runTime = o.runTime ?? 0, this.status = o.status, this.objectiveValue = o.objectiveValue ?? null;
714
965
  let s = {}, c = {}, l = {}, u = {};
715
966
  if (this.values.clear(), o.values) for (let [e, t] of Object.entries(o.values)) {
@@ -745,7 +996,7 @@ var U = class {
745
996
  }
746
997
  async check(e, t) {
747
998
  let n, r;
748
- if (e && typeof e == "object" && "solve" in e && typeof e.solve == "function" ? (n = e, r = t || {}) : typeof e == "function" ? (n = new e(t), r = t || {}) : typeof e == "string" ? (n = v(e, t), r = t || {}) : (r = { ...e }, r.solver ? (n = v(r.solver, r), delete r.solver) : n = this.solver || v()), this.logicalConstraints.length > 0 && n.capabilities?.supportsSMT !== !0) throw Error(`Solver "${n.name}" does not support SMT / logical constraints (or, implies, not, xor). Please use an SMT-capable solver such as Z3.`);
999
+ if (e && typeof e == "object" && "solve" in e && typeof e.solve == "function" ? (n = e, r = t || {}) : typeof e == "function" ? (n = new e(t), r = t || {}) : typeof e == "string" ? (n = f(e, t), r = t || {}) : (r = { ...e }, r.solver ? (n = f(r.solver, r), delete r.solver) : n = this.solver || f()), this.logicalConstraints.length > 0 && n.capabilities?.supportsSMT !== !0) throw Error(`Solver "${n.name}" does not support SMT / logical constraints (or, implies, not, xor). Please use an SMT-capable solver such as Z3.`);
749
1000
  if (typeof n.check == "function") {
750
1001
  let e = await n.check({
751
1002
  name: this.name,
@@ -766,7 +1017,7 @@ var U = class {
766
1017
  }
767
1018
  let i = this.objective, a = this.sense;
768
1019
  try {
769
- this.objective = new k(), this.sense = "Minimize";
1020
+ this.objective = new D(), this.sense = "Minimize";
770
1021
  let e = await this.optimize(n, r), t = e === "Optimal" || e === "Feasible", i = e === "Infeasible", a = {};
771
1022
  for (let e of this.variables) a[e.name] = e.value ?? 0;
772
1023
  return {
@@ -778,7 +1029,7 @@ var U = class {
778
1029
  this.objective = i, this.sense = a;
779
1030
  }
780
1031
  }
781
- }, W = "Minimize", G = "Maximize", K = "Continuous", q = "Integer", J = "Binary", Y = {
1032
+ }, Y = "Minimize", me = "Maximize", he = "Continuous", ge = "Integer", _e = "Binary", ve = {
782
1033
  Optimal: "Optimal",
783
1034
  Feasible: "Feasible",
784
1035
  Infeasible: "Infeasible",
@@ -790,7 +1041,7 @@ var U = class {
790
1041
  Sat: "Sat",
791
1042
  Unsat: "Unsat",
792
1043
  Unknown: "Unknown"
793
- }, X = class e extends P {
1044
+ }, ye = class e extends j {
794
1045
  constructor(e, t, n, r = "Continuous") {
795
1046
  super({
796
1047
  name: e,
@@ -808,13 +1059,13 @@ var U = class {
808
1059
  return o;
809
1060
  }
810
1061
  };
811
- function Z(e) {
1062
+ function be(e) {
812
1063
  return e == null ? null : typeof e == "number" ? e : e.value;
813
1064
  }
814
- var ne = class {
1065
+ var xe = class {
815
1066
  model;
816
- constructor(e = "NoName", t = W) {
817
- this.model = new U({
1067
+ constructor(e = "NoName", t = Y) {
1068
+ this.model = new J({
818
1069
  name: e,
819
1070
  sense: t
820
1071
  });
@@ -849,7 +1100,7 @@ var ne = class {
849
1100
  setObjective(e) {
850
1101
  if (typeof e == "object" && e) {
851
1102
  if ("terms" in e) for (let [t] of e.terms) this.addVariable(t);
852
- else e instanceof P && this.addVariable(e);
1103
+ else e instanceof j && this.addVariable(e);
853
1104
  }
854
1105
  this.model.setObjective(e);
855
1106
  }
@@ -858,7 +1109,7 @@ var ne = class {
858
1109
  return this.model.addConstraint(e, t);
859
1110
  }
860
1111
  add(e, t) {
861
- typeof e == "string" ? /(<=|>=|==|=<|=>|=)/.test(e) ? this.addConstraint(e, t) : this.setObjective(e) : e instanceof x ? this.addConstraint(e, t) : this.setObjective(e);
1112
+ typeof e == "string" ? /(<=|>=|==|=<|=>|=)/.test(e) ? this.addConstraint(e, t) : this.setObjective(e) : e instanceof c ? this.addConstraint(e, t) : this.setObjective(e);
862
1113
  }
863
1114
  async solve(e, t) {
864
1115
  return this.model.optimize(e, t);
@@ -866,21 +1117,21 @@ var ne = class {
866
1117
  toLpString() {
867
1118
  return this.model.toLpString();
868
1119
  }
869
- }, Q = "Minimize", $ = "Maximize", re = "Binary", ie = "Integer", ae = "Continuous";
870
- function oe(e) {
1120
+ }, X = "Minimize", Z = "Maximize", Q = "Binary", Se = "Integer", Ce = "Continuous";
1121
+ function we(e) {
871
1122
  return {
872
1123
  expr: e,
873
- sense: $
1124
+ sense: Z
874
1125
  };
875
1126
  }
876
- function se(e) {
1127
+ function Te(e) {
877
1128
  return {
878
1129
  expr: e,
879
- sense: Q
1130
+ sense: X
880
1131
  };
881
1132
  }
882
- var ce = class extends U {
883
- constructor(e = "MipModel", t = Q) {
1133
+ var $ = class extends J {
1134
+ constructor(e = "MipModel", t = X) {
884
1135
  super({
885
1136
  name: e,
886
1137
  sense: t
@@ -904,5 +1155,64 @@ var ce = class extends U {
904
1155
  return this.addConstraint(e, t);
905
1156
  }
906
1157
  };
1158
+ w(/* @__PURE__ */ S({
1159
+ BINARY: () => Q,
1160
+ BoolExpr: () => i,
1161
+ BoolOp: () => o,
1162
+ BoolVar: () => n,
1163
+ CONTINUOUS: () => Ce,
1164
+ Constraint: () => c,
1165
+ HiGHS: () => V,
1166
+ HighsSolver: () => B,
1167
+ INTEGER: () => Se,
1168
+ LinExpr: () => D,
1169
+ LpBinary: () => _e,
1170
+ LpContinuous: () => he,
1171
+ LpInteger: () => ge,
1172
+ LpMaximize: () => me,
1173
+ LpMinimize: () => Y,
1174
+ LpProblem: () => xe,
1175
+ LpStatus: () => ve,
1176
+ LpVariable: () => ye,
1177
+ MAXIMIZE: () => Z,
1178
+ MINIMIZE: () => X,
1179
+ MipModel: () => $,
1180
+ MockSolver: () => G,
1181
+ Model: () => J,
1182
+ OFFICIAL_HIGHS_CDN_WASM_URL: () => b,
1183
+ QuadExpr: () => E,
1184
+ Var: () => j,
1185
+ and: () => e,
1186
+ c: () => se,
1187
+ expr: () => ce,
1188
+ generateLpString: () => F,
1189
+ getHighs: () => g,
1190
+ getHighsWasmUrl: () => v,
1191
+ getSolver: () => f,
1192
+ implies: () => a,
1193
+ isValidWasmHeader: () => h,
1194
+ listAvailableSolvers: () => u,
1195
+ lpSum: () => A,
1196
+ mapHighsStatus: () => z,
1197
+ maximize: () => we,
1198
+ minimize: () => Te,
1199
+ not: () => s,
1200
+ or: () => t,
1201
+ parseConstraint: () => N,
1202
+ parseExpr: () => M,
1203
+ probeWasmUrl: () => p,
1204
+ registerHighsSolver: () => H,
1205
+ registerMockSolver: () => K,
1206
+ registerSolver: () => d,
1207
+ resolveBrowserWasmUrl: () => _,
1208
+ setDefaultSolver: () => l,
1209
+ setHighsWasmUrl: () => y,
1210
+ solveLp: () => R,
1211
+ solveLpWithHighs: () => m,
1212
+ sum: () => O,
1213
+ value: () => be,
1214
+ xor: () => r,
1215
+ xsum: () => k
1216
+ }), q);
907
1217
  //#endregion
908
- export { re as BINARY, w as BoolExpr, o as BoolOp, C as BoolVar, ae as CONTINUOUS, x as Constraint, E as GLPKSolver, s as HiGHS, p as HighsSolver, ie as INTEGER, k as LinExpr, J as LpBinary, K as LpContinuous, q as LpInteger, G as LpMaximize, W as LpMinimize, ne as LpProblem, Y as LpStatus, X as LpVariable, $ as MAXIMIZE, Q as MINIMIZE, ce as MipModel, ee as MockSolver, U as Model, b as OFFICIAL_HIGHS_CDN_WASM_URL, O as QuadExpr, P as Var, y as Z3Solver, n as and, z as c, B as expr, H as generateLpString, T as getGlpk, c as getHighs, l as getHighsWasmUrl, v as getSolver, e as implies, _ as isValidWasmHeader, f as listAvailableSolvers, M as lpSum, oe as maximize, se as minimize, S as not, r as or, L as parseConstraint, I as parseExpr, m as probeWasmUrl, a as registerSolver, h as registerZ3Solver, d as resolveBrowserWasmUrl, g as setDefaultSolver, u as setHighsWasmUrl, i as solveLpWithHighs, A as sum, Z as value, t as xor, j as xsum };
1218
+ export { Q as BINARY, i as BoolExpr, o as BoolOp, n as BoolVar, Ce as CONTINUOUS, c as Constraint, V as HiGHS, B as HighsSolver, Se as INTEGER, D as LinExpr, _e as LpBinary, he as LpContinuous, ge as LpInteger, me as LpMaximize, Y as LpMinimize, xe as LpProblem, ve as LpStatus, ye as LpVariable, Z as MAXIMIZE, X as MINIMIZE, $ as MipModel, G as MockSolver, J as Model, b as OFFICIAL_HIGHS_CDN_WASM_URL, E as QuadExpr, j as Var, e as and, se as c, ce as expr, F as generateLpString, g as getHighs, v as getHighsWasmUrl, f as getSolver, a as implies, h as isValidWasmHeader, u as listAvailableSolvers, A as lpSum, we as maximize, Te as minimize, s as not, t as or, N as parseConstraint, M as parseExpr, p as probeWasmUrl, d as registerSolver, _ as resolveBrowserWasmUrl, l as setDefaultSolver, y as setHighsWasmUrl, m as solveLpWithHighs, O as sum, be as value, r as xor, k as xsum };