@viji-dev/core 0.11.3 → 0.11.4

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.
@@ -1518,7 +1518,7 @@ class YB {
1518
1518
  if (!this.isInitialized)
1519
1519
  return this.initPromise ? this.initPromise : (this.initPromise = (async () => {
1520
1520
  try {
1521
- const A = await import("./essentia.js-core.es-CC_3Ap1i.js"), B = await import("./essentia-wasm.web-D54RUgg3.js").then((g) => g.e), I = A.Essentia || A.default?.Essentia || A.default;
1521
+ const A = await import("./essentia.js-core.es-CC_3Ap1i.js"), B = await import("./essentia-wasm.web-BqvCeDjy.js").then((g) => g.e), I = A.Essentia || A.default?.Essentia || A.default;
1522
1522
  let Q = B.default || B.EssentiaWASM || B.default?.EssentiaWASM;
1523
1523
  if (!Q)
1524
1524
  throw new Error("WASM module not found - check essentia-wasm.web.js export");
@@ -1913,7 +1913,7 @@ class YB {
1913
1913
  }
1914
1914
  }
1915
1915
  }
1916
- const IA = 60, O = 200, UB = 85, SB = 180, NB = 200, pA = 4, DA = 10, bB = ["low", "lowMid", "mid", "highMid", "high"];
1916
+ const IA = 60, O = 200, UB = 85, SB = 180, NB = 200, pA = 4, hA = 10, bB = ["low", "lowMid", "mid", "highMid", "high"];
1917
1917
  class HB {
1918
1918
  // Autocorrelation state
1919
1919
  onsetEnvelope = [];
@@ -2238,18 +2238,18 @@ class HB {
2238
2238
  return { dominantInterval: 500, consistency: 0, sampleCount: 0 };
2239
2239
  const Q = /* @__PURE__ */ new Map();
2240
2240
  for (const s of I) {
2241
- const G = Math.round(s / DA) * DA;
2241
+ const G = Math.round(s / hA) * hA;
2242
2242
  Q.set(G, (Q.get(G) || 0) + 1);
2243
2243
  }
2244
2244
  let g = 500, E = 0;
2245
2245
  for (const [s, G] of Q) {
2246
2246
  let o = G;
2247
- const h = Math.round(s / 2 / DA) * DA;
2247
+ const h = Math.round(s / 2 / hA) * hA;
2248
2248
  o += (Q.get(h) || 0) * 0.5;
2249
2249
  const R = s * 2;
2250
2250
  o += (Q.get(R) || 0) * 0.5, o > E && (E = o, g = s);
2251
2251
  }
2252
- const C = DA * 3;
2252
+ const C = hA * 3;
2253
2253
  let i = 0;
2254
2254
  for (const s of I)
2255
2255
  Math.abs(s - g) < C && i++, Math.abs(s - g / 2) < C && (i += 0.5), Math.abs(s - g * 2) < C && (i += 0.5);
@@ -4383,7 +4383,7 @@ Rejection rate: ${(I / A * 60).toFixed(1)} per minute
4383
4383
  return this.events.length;
4384
4384
  }
4385
4385
  }
4386
- const cA = ["kick", "snare", "hat"], KA = 60, OA = 5e3, OB = 500, fB = 8, FA = 0.18, hA = 3, vB = 3e3, jB = 100, PB = 64, TB = 0.05, _B = 0.15, sA = 1;
4386
+ const FA = ["kick", "snare", "hat"], KA = 60, OA = 5e3, OB = 500, fB = 8, tA = 0.18, sA = 3, vB = 3e3, jB = 100, PB = 64, TB = 0.05, _B = 0.15, RA = 1;
4387
4387
  function HA() {
4388
4388
  return {
4389
4389
  mode: "auto",
@@ -4524,11 +4524,11 @@ class BB {
4524
4524
  * inadvertently overwritten.
4525
4525
  */
4526
4526
  exportSessionState(A) {
4527
- const B = A?.instruments ?? cA, I = {};
4527
+ const B = A?.instruments ?? FA, I = {};
4528
4528
  for (const Q of B)
4529
4529
  I[Q] = this.serializeInstrument(Q);
4530
4530
  return {
4531
- version: sA,
4531
+ version: RA,
4532
4532
  senderTime: performance.now(),
4533
4533
  instruments: I
4534
4534
  };
@@ -4554,9 +4554,9 @@ class BB {
4554
4554
  * via the `version` field.
4555
4555
  */
4556
4556
  importSessionState(A, B) {
4557
- if (A.version !== sA) return;
4557
+ if (A.version !== RA) return;
4558
4558
  const I = performance.now();
4559
- for (const Q of cA) {
4559
+ for (const Q of FA) {
4560
4560
  const g = A.instruments[Q];
4561
4561
  g && this.applyInstrumentPayload(Q, g, B, I);
4562
4562
  }
@@ -4569,11 +4569,11 @@ class BB {
4569
4569
  if (A === null || typeof A != "object")
4570
4570
  return { code: "malformed", details: "payload is not an object" };
4571
4571
  const B = A;
4572
- return B.version !== sA ? {
4572
+ return B.version !== RA ? {
4573
4573
  code: "version-mismatch",
4574
- details: `expected version ${sA}, got ${String(B.version)}`,
4574
+ details: `expected version ${RA}, got ${String(B.version)}`,
4575
4575
  ...typeof B.version == "number" ? { payloadVersion: B.version } : {},
4576
- expectedVersion: sA
4576
+ expectedVersion: RA
4577
4577
  } : typeof B.senderTime != "number" ? { code: "invalid-field", details: "senderTime must be a number", field: "senderTime" } : !B.instruments || typeof B.instruments != "object" ? { code: "invalid-field", details: "instruments must be an object", field: "instruments" } : null;
4578
4578
  }
4579
4579
  /**
@@ -4589,7 +4589,7 @@ class BB {
4589
4589
  */
4590
4590
  processFrame(A, B, I) {
4591
4591
  const Q = { ...A, events: [...A.events] }, g = [];
4592
- for (const i of cA) {
4592
+ for (const i of FA) {
4593
4593
  const a = this.state[i];
4594
4594
  if (a.muted) {
4595
4595
  if (Q.events = Q.events.filter((R) => R.type !== i), a.pendingTapEvents = [], a.mode === "pattern" && a.pattern && a.replayLastEventTime > 0)
@@ -4774,13 +4774,13 @@ class BB {
4774
4774
  findMatchingPosition(A, B) {
4775
4775
  if (!A.pattern) return -1;
4776
4776
  const I = A.refinementIndex % A.pattern.length, Q = A.pattern[I];
4777
- if (Math.abs(B - Q) / Q <= FA)
4777
+ if (Math.abs(B - Q) / Q <= tA)
4778
4778
  return I;
4779
4779
  let g = -1, E = 1 / 0;
4780
4780
  for (let C = 0; C < A.pattern.length; C++) {
4781
4781
  if (C === I) continue;
4782
4782
  const i = Math.abs(B - A.pattern[C]) / A.pattern[C];
4783
- i <= FA && i < E && (E = i, g = C);
4783
+ i <= tA && i < E && (E = i, g = C);
4784
4784
  }
4785
4785
  return g;
4786
4786
  }
@@ -4802,13 +4802,13 @@ class BB {
4802
4802
  */
4803
4803
  tryRecognizePattern(A) {
4804
4804
  const I = this.state[A].tapIOIs;
4805
- if (I.length < hA) return null;
4806
- const Q = Math.min(fB, Math.floor(I.length / hA));
4805
+ if (I.length < sA) return null;
4806
+ const Q = Math.min(fB, Math.floor(I.length / sA));
4807
4807
  for (let g = 1; g <= Q; g++) {
4808
- const E = hA * g;
4808
+ const E = sA * g;
4809
4809
  if (I.length < E) continue;
4810
- const C = g <= 2 ? FA : FA * (2 / g), i = I.slice(-E), a = [];
4811
- for (let o = 0; o < hA; o++)
4810
+ const C = g <= 2 ? tA : tA * (2 / g), i = I.slice(-E), a = [];
4811
+ for (let o = 0; o < sA; o++)
4812
4812
  a.push(i.slice(o * g, (o + 1) * g));
4813
4813
  const s = a[0].map((o, h) => {
4814
4814
  let R = 0;
@@ -4835,7 +4835,7 @@ class BB {
4835
4835
  */
4836
4836
  applyPattern(A, B) {
4837
4837
  const I = this.state[A];
4838
- I.pattern = B, this.setMode(A, "pattern"), I.refinementIndex = 0, I.refinementCounts = new Array(B.length).fill(hA), (I.replayLastEventTime === 0 || I.replayLastEventTime < I.lastTapTime) && (I.replayLastEventTime = I.lastTapTime, I.replayIndex = 0);
4838
+ I.pattern = B, this.setMode(A, "pattern"), I.refinementIndex = 0, I.refinementCounts = new Array(B.length).fill(sA), (I.replayLastEventTime === 0 || I.replayLastEventTime < I.lastTapTime) && (I.replayLastEventTime = I.lastTapTime, I.replayIndex = 0);
4839
4839
  }
4840
4840
  createTapEvent(A, B, I) {
4841
4841
  return {
@@ -4865,7 +4865,7 @@ class BB {
4865
4865
  return g;
4866
4866
  }
4867
4867
  reset() {
4868
- for (const A of cA)
4868
+ for (const A of FA)
4869
4869
  this.clear(A);
4870
4870
  }
4871
4871
  }
@@ -5010,8 +5010,8 @@ j.prototype._transform4 = function() {
5010
5010
  var G = g >>> 2;
5011
5011
  for (E = 0; E < B; E += g)
5012
5012
  for (var o = E + G, h = E, R = 0; h < o; h += 2, R += Q) {
5013
- const w = h, t = w + G, c = t + G, F = c + G, e = A[w], y = A[w + 1], M = A[t], n = A[t + 1], k = A[c], d = A[c + 1], l = A[F], Y = A[F + 1], U = e, Z = y, b = s[R], m = a * s[R + 1], q = M * b - n * m, r = M * m + n * b, p = s[2 * R], P = a * s[2 * R + 1], X = k * p - d * P, x = k * P + d * p, T = s[3 * R], u = a * s[3 * R + 1], _ = l * T - Y * u, K = l * u + Y * T, z = U + X, f = Z + x, N = U - X, L = Z - x, V = q + _, S = r + K, W = a * (q - _), v = a * (r - K), $ = z + V, wA = f + S, MA = z - V, lA = f - S, nA = N + v, dA = L - W, JA = N - v, YA = L + W;
5014
- A[w] = $, A[w + 1] = wA, A[t] = nA, A[t + 1] = dA, A[c] = MA, A[c + 1] = lA, A[F] = JA, A[F + 1] = YA;
5013
+ const w = h, t = w + G, c = t + G, F = c + G, e = A[w], y = A[w + 1], M = A[t], n = A[t + 1], k = A[c], d = A[c + 1], l = A[F], Y = A[F + 1], U = e, Z = y, b = s[R], m = a * s[R + 1], q = M * b - n * m, r = M * m + n * b, p = s[2 * R], P = a * s[2 * R + 1], X = k * p - d * P, x = k * P + d * p, T = s[3 * R], u = a * s[3 * R + 1], _ = l * T - Y * u, K = l * u + Y * T, z = U + X, f = Z + x, N = U - X, L = Z - x, V = q + _, S = r + K, W = a * (q - _), v = a * (r - K), $ = z + V, cA = f + S, MA = z - V, lA = f - S, nA = N + v, dA = L - W, JA = N - v, YA = L + W;
5014
+ A[w] = $, A[w + 1] = cA, A[t] = nA, A[t + 1] = dA, A[c] = MA, A[c + 1] = lA, A[F] = JA, A[F + 1] = YA;
5015
5015
  }
5016
5016
  }
5017
5017
  };
@@ -5041,8 +5041,8 @@ j.prototype._realTransform4 = function() {
5041
5041
  var G = g >>> 1, o = G >>> 1, h = o >>> 1;
5042
5042
  for (E = 0; E < B; E += g)
5043
5043
  for (var R = 0, w = 0; R <= h; R += 2, w += Q) {
5044
- var t = E + R, c = t + o, F = c + o, e = F + o, y = A[t], M = A[t + 1], n = A[c], k = A[c + 1], d = A[F], l = A[F + 1], Y = A[e], U = A[e + 1], Z = y, b = M, m = s[w], q = a * s[w + 1], r = n * m - k * q, p = n * q + k * m, P = s[2 * w], X = a * s[2 * w + 1], x = d * P - l * X, T = d * X + l * P, u = s[3 * w], _ = a * s[3 * w + 1], K = Y * u - U * _, z = Y * _ + U * u, f = Z + x, N = b + T, L = Z - x, V = b - T, S = r + K, W = p + z, v = a * (r - K), $ = a * (p - z), wA = f + S, MA = N + W, lA = L + $, nA = V - v;
5045
- if (A[t] = wA, A[t + 1] = MA, A[c] = lA, A[c + 1] = nA, R === 0) {
5044
+ var t = E + R, c = t + o, F = c + o, e = F + o, y = A[t], M = A[t + 1], n = A[c], k = A[c + 1], d = A[F], l = A[F + 1], Y = A[e], U = A[e + 1], Z = y, b = M, m = s[w], q = a * s[w + 1], r = n * m - k * q, p = n * q + k * m, P = s[2 * w], X = a * s[2 * w + 1], x = d * P - l * X, T = d * X + l * P, u = s[3 * w], _ = a * s[3 * w + 1], K = Y * u - U * _, z = Y * _ + U * u, f = Z + x, N = b + T, L = Z - x, V = b - T, S = r + K, W = p + z, v = a * (r - K), $ = a * (p - z), cA = f + S, MA = N + W, lA = L + $, nA = V - v;
5045
+ if (A[t] = cA, A[t + 1] = MA, A[c] = lA, A[c + 1] = nA, R === 0) {
5046
5046
  var dA = f - S, JA = N - W;
5047
5047
  A[F] = dA, A[F + 1] = JA;
5048
5048
  continue;
@@ -9302,7 +9302,7 @@ class sI {
9302
9302
  this.internalDevice = { motion: null, orientation: null };
9303
9303
  }
9304
9304
  }
9305
- class tA {
9305
+ class oA {
9306
9306
  /**
9307
9307
  * Detects the renderer type from scene code comments
9308
9308
  *
@@ -9475,6 +9475,10 @@ class tA {
9475
9475
  return B === "shader" ? (Q.mouse.position = /\bu_mouse(\b|InCanvas|Delta|Wheel)/.test(I), Q.mouse.left = /\bu_mouse(Left|Pressed|WasPressed|WasReleased)\b/.test(I), Q.mouse.right = /\bu_mouseRight\b/.test(I), Q.mouse.middle = /\bu_mouseMiddle\b/.test(I), Q.pointer.position = /\bu_pointer(\b|Delta|InCanvas)/.test(I), Q.pointer.down = /\bu_pointer(Down|WasPressed|WasReleased)\b/.test(I), Q.touch = /\bu_touch/.test(I)) : (Q.mouse.position = /\bmouse\.(x|y|deltaX|deltaY|wheelDelta|wheelX|wheelY|wasMoved)\b/.test(I), Q.mouse.left = /\bmouse\.(leftButton|isPressed|wasPressed|wasReleased)\b/.test(I), Q.mouse.right = /\bmouse\.rightButton\b/.test(I), Q.mouse.middle = /\bmouse\.middleButton\b/.test(I), Q.pointer.position = /\bpointer\.(x|y|deltaX|deltaY)\b/.test(I), Q.pointer.down = /\bpointer\.(isDown|wasPressed|wasReleased)\b/.test(I), Q.touch = /\btouches\./.test(I)), Q;
9476
9476
  }
9477
9477
  }
9478
+ function SI(D) {
9479
+ const A = oA.detectRendererType(D);
9480
+ return oA.detectCapabilities(D, A);
9481
+ }
9478
9482
  function RI(D) {
9479
9483
  if (typeof D == "string")
9480
9484
  return wI(D);
@@ -9490,7 +9494,7 @@ function RI(D) {
9490
9494
  }
9491
9495
  throw new Error(`Invalid color input: expected string or object, got ${typeof D}`);
9492
9496
  }
9493
- function RA(D, A, B) {
9497
+ function wA(D, A, B) {
9494
9498
  const I = ZA(D, "r"), Q = ZA(A, "g"), g = ZA(B, "b");
9495
9499
  return "#" + LA(I) + LA(Q) + LA(g);
9496
9500
  }
@@ -9505,7 +9509,7 @@ function IB(D, A, B) {
9505
9509
  let a = 0, s = 0, G = 0;
9506
9510
  C < 1 ? (a = E, s = i, G = 0) : C < 2 ? (a = i, s = E, G = 0) : C < 3 ? (a = 0, s = E, G = i) : C < 4 ? (a = 0, s = i, G = E) : C < 5 ? (a = i, s = 0, G = E) : (a = E, s = 0, G = i);
9507
9511
  const o = g - E;
9508
- return RA(
9512
+ return wA(
9509
9513
  Math.round((a + o) * 255),
9510
9514
  Math.round((s + o) * 255),
9511
9515
  Math.round((G + o) * 255)
@@ -9547,7 +9551,7 @@ function FI(D) {
9547
9551
  if (A.length !== 3)
9548
9552
  throw new Error(`rgb() requires 3 arguments, got ${A.length}: rgb(${D})`);
9549
9553
  const B = BA(A[0], "r"), I = BA(A[1], "g"), Q = BA(A[2], "b");
9550
- return RA(B, I, Q);
9554
+ return wA(B, I, Q);
9551
9555
  }
9552
9556
  function tI(D) {
9553
9557
  const A = kA(D);
@@ -9570,18 +9574,18 @@ function yI(D) {
9570
9574
  const B = BA(A[0], "r"), I = BA(A[1], "g"), Q = BA(A[2], "b");
9571
9575
  if (B < 0 || B > 1 || I < 0 || I > 1 || Q < 0 || Q > 1)
9572
9576
  throw new Error(`vec3() components must be in 0..1, got: vec3(${B}, ${I}, ${Q})`);
9573
- return RA(
9577
+ return wA(
9574
9578
  Math.round(B * 255),
9575
9579
  Math.round(I * 255),
9576
9580
  Math.round(Q * 255)
9577
9581
  );
9578
9582
  }
9579
9583
  function kI(D) {
9580
- const A = oA(D.r, "r"), B = oA(D.g, "g"), I = oA(D.b, "b");
9581
- return RA(A, B, I);
9584
+ const A = DA(D.r, "r"), B = DA(D.g, "g"), I = DA(D.b, "b");
9585
+ return wA(A, B, I);
9582
9586
  }
9583
9587
  function MI(D) {
9584
- const A = oA(D.h, "h"), B = oA(D.s, "s"), I = oA(D.b, "b");
9588
+ const A = DA(D.h, "h"), B = DA(D.s, "s"), I = DA(D.b, "b");
9585
9589
  return IB(A, B, I);
9586
9590
  }
9587
9591
  function lI(D, A, B) {
@@ -9593,7 +9597,7 @@ function lI(D, A, B) {
9593
9597
  let a = 0, s = 0, G = 0;
9594
9598
  C < 1 ? (a = E, s = i, G = 0) : C < 2 ? (a = i, s = E, G = 0) : C < 3 ? (a = 0, s = E, G = i) : C < 4 ? (a = 0, s = i, G = E) : C < 5 ? (a = i, s = 0, G = E) : (a = E, s = 0, G = i);
9595
9599
  const o = g - E / 2;
9596
- return RA(
9600
+ return wA(
9597
9601
  Math.round((a + o) * 255),
9598
9602
  Math.round((s + o) * 255),
9599
9603
  Math.round((G + o) * 255)
@@ -9613,7 +9617,7 @@ function _A(D, A) {
9613
9617
  throw new Error(`Field '${A}' must use percent notation (e.g., 50%), got: '${D}'`);
9614
9618
  return BA(D.slice(0, -1), A);
9615
9619
  }
9616
- function oA(D, A) {
9620
+ function DA(D, A) {
9617
9621
  if (typeof D != "number" || !isFinite(D))
9618
9622
  throw new Error(`Invalid color field '${A}': expected finite number, got ${D}`);
9619
9623
  return D;
@@ -9789,7 +9793,7 @@ class mA {
9789
9793
  // Canvas DOM interaction disabled in headless by default
9790
9794
  // InteractionManager (viji.mouse/etc) always exists regardless
9791
9795
  allowUserInteraction: A.allowUserInteraction ?? !this.isHeadless
9792
- }, this.sceneRenderer = tA.detectRendererType(A.sceneCode), this.sceneCapabilities = tA.detectCapabilities(A.sceneCode, this.sceneRenderer), this.sceneRenderer === "p5" && (this.sceneP5CanvasMode = tA.detectP5CanvasMode(A.sceneCode)), this.sceneConsumesAnalysedFrame = tA.detectAnalysedFrameUse(A.sceneCode), A.videoStream && this.engineGroup.setMainVideoStream(A.videoStream);
9796
+ }, this.sceneRenderer = oA.detectRendererType(A.sceneCode), this.sceneCapabilities = oA.detectCapabilities(A.sceneCode, this.sceneRenderer), this.sceneRenderer === "p5" && (this.sceneP5CanvasMode = oA.detectP5CanvasMode(A.sceneCode)), this.sceneConsumesAnalysedFrame = oA.detectAnalysedFrameUse(A.sceneCode), A.videoStream && this.engineGroup.setMainVideoStream(A.videoStream);
9793
9797
  for (const Q of A.videoStreams ?? [])
9794
9798
  this.engineGroup.addAdditionalVideoStream(Q);
9795
9799
  this.currentInteractionEnabled = this.config.allowUserInteraction, A.allowDeviceInteraction && (this.deviceSensorManager = new sI()), this.debugLog(`VijiCore created: ${this.instanceId} (headless: ${this.isHeadless}, sharedEngines: ${!!A.mediaSource})`);
@@ -11558,14 +11562,15 @@ function JI(D) {
11558
11562
  expectedVersion: 1
11559
11563
  } : typeof A.senderTime != "number" ? { code: "invalid-field", details: "senderTime must be a number", field: "senderTime" } : null;
11560
11564
  }
11561
- const SI = "0.11.3";
11565
+ const NI = "0.11.4";
11562
11566
  export {
11563
11567
  yA as A,
11564
11568
  UI as C,
11565
11569
  YI as I,
11566
- SI as V,
11570
+ NI as V,
11567
11571
  mA as a,
11568
- J as b,
11572
+ SI as b,
11573
+ J as c,
11569
11574
  $B as g
11570
11575
  };
11571
- //# sourceMappingURL=index-BzkVQgrq.js.map
11576
+ //# sourceMappingURL=index-LgAeJ6JG.js.map
package/dist/index.d.ts CHANGED
@@ -1,3 +1,37 @@
1
+ /**
2
+ * Analyzes a scene's source code and returns the capabilities it declares,
3
+ * without constructing a core. Composes {@link SceneAnalyzer.detectRendererType}
4
+ * and {@link SceneAnalyzer.detectCapabilities} — the same two steps `VijiCore`
5
+ * performs at construction — so for a given core version the result is
6
+ * identical to a booted core's `getSceneData().capabilities`.
7
+ *
8
+ * Intended for out-of-engine consumers (e.g. server-side persistence of
9
+ * per-scene capabilities). The following properties are an intentional, kept
10
+ * contract:
11
+ * - **Pure and Node-safe** — static analysis only; the scene is never executed
12
+ * and no DOM, canvas, or worker API is touched. Callable in a bare Node
13
+ * process.
14
+ * - **Deterministic** — same code string, same result, within a core version.
15
+ * - **Inclusive-biased** — a capability the scene uses is never hidden; a
16
+ * rare ambiguous case may report an extra one.
17
+ * - **Safe on untrusted input** — linear-time scan and regexes with no throw
18
+ * paths on any string input.
19
+ *
20
+ * Note for consumers filtering on `video`: the flag means the scene reads the
21
+ * video *image* (pixels/texture). Shader scenes that consume only CV result
22
+ * uniforms report `cv.*` without `video`, so a "reacts to the camera" filter
23
+ * should test `video || any cv key`.
24
+ *
25
+ * @param sceneCode - The artist's scene code (native, p5, or shader)
26
+ * @returns The set of capabilities the scene declares it uses
27
+ * @example
28
+ * ```ts
29
+ * const caps = analyzeSceneCapabilities(scene.code);
30
+ * if (caps.audio) tags.push('audio');
31
+ * ```
32
+ */
33
+ export declare function analyzeSceneCapabilities(sceneCode: string): SceneCapabilities;
34
+
1
35
  declare interface AudioAnalysisState {
2
36
  isConnected: boolean;
3
37
  currentBPM: number;
@@ -2798,7 +2832,7 @@ declare type TrackingState = 'TRACKING' | 'LOCKED' | 'BREAKDOWN' | 'LOST';
2798
2832
  /** Returned by `on*` listener registration calls; invoke to unsubscribe. */
2799
2833
  export declare type Unsubscribe = () => void;
2800
2834
 
2801
- export declare const VERSION = "0.11.3";
2835
+ export declare const VERSION = "0.11.4";
2802
2836
 
2803
2837
  /**
2804
2838
  * Real-time video API: drawable frame, dimensions, and the source-side
package/dist/index.js CHANGED
@@ -1,10 +1,11 @@
1
- import { A as s, C as o, I as E, V as i, a as A, b as C } from "./index-BzkVQgrq.js";
1
+ import { A as e, C as i, I as r, V as o, a as C, c as E, b as A } from "./index-LgAeJ6JG.js";
2
2
  export {
3
- s as AudioSystem,
4
- o as CV_FEATURE_KEYS,
5
- E as INPUT_CAPABILITY_KEYS,
6
- i as VERSION,
7
- A as VijiCore,
8
- C as VijiCoreError
3
+ e as AudioSystem,
4
+ i as CV_FEATURE_KEYS,
5
+ r as INPUT_CAPABILITY_KEYS,
6
+ o as VERSION,
7
+ C as VijiCore,
8
+ E as VijiCoreError,
9
+ A as analyzeSceneCapabilities
9
10
  };
10
11
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@viji-dev/core",
3
- "version": "0.11.3",
3
+ "version": "0.11.4",
4
4
  "description": "Universal execution engine for Viji Creative scenes",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",