kawaijs 0.1.5 → 0.1.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,YAAY,CAAC,UAAU,SAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAqgBlF"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,YAAY,CAAC,UAAU,SAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CA8sBlF"}
@@ -254,6 +254,34 @@ export function buildProject(projectDir = '.', options = {}) {
254
254
  const ok = evaluateCondition(inst.condition, this.state.variables);
255
255
  this.state.currentLabel = ok ? inst.thenLabel : (inst.elseLabel || inst.thenLabel);
256
256
  this.state.instructionPointer = 0;
257
+ } else if (inst.type === 'play_audio') {
258
+ for (const cb of this.audioListeners) {
259
+ cb({
260
+ action: 'play',
261
+ channel: inst.channel,
262
+ track: inst.track,
263
+ fade: inst.fade,
264
+ loop: inst.loop
265
+ });
266
+ }
267
+ if (inst.channel === 'music') {
268
+ this.state.audio.music = inst.track;
269
+ } else if (inst.channel === 'voice') {
270
+ this.state.audio.voice = inst.track;
271
+ }
272
+ } else if (inst.type === 'stop_audio') {
273
+ for (const cb of this.audioListeners) {
274
+ cb({
275
+ action: 'stop',
276
+ channel: inst.channel,
277
+ fade: inst.fade
278
+ });
279
+ }
280
+ if (inst.channel === 'music') {
281
+ this.state.audio.music = null;
282
+ } else if (inst.channel === 'voice') {
283
+ this.state.audio.voice = null;
284
+ }
257
285
  } else if (inst.type === 'return') {
258
286
  this.state.isFinished = true;
259
287
  }
@@ -268,10 +296,163 @@ export function buildProject(projectDir = '.', options = {}) {
268
296
  }
269
297
  notify() { for (const l of this.listeners) l(this.state); }
270
298
  }
299
+ class AudioManager {
300
+ constructor() {
301
+ this.masterVolume = 1.0;
302
+ this.musicVolume = 0.8;
303
+ this.soundVolume = 1.0;
304
+ this.voiceVolume = 1.0;
305
+ this.isMuted = false;
306
+ this.currentMusicAudio = null;
307
+ this.currentMusicTrack = null;
308
+ this.currentVoiceAudio = null;
309
+ this.soundPool = [];
310
+ this.isUnlocked = false;
311
+ this.pendingMusic = null;
312
+
313
+ const unlock = () => {
314
+ this.isUnlocked = true;
315
+ if (this.pendingMusic) {
316
+ const { src, options } = this.pendingMusic;
317
+ this.pendingMusic = null;
318
+ this.playMusic(src, options);
319
+ }
320
+ window.removeEventListener('click', unlock);
321
+ window.removeEventListener('keydown', unlock);
322
+ window.removeEventListener('touchstart', unlock);
323
+ };
324
+ window.addEventListener('click', unlock, { passive: true });
325
+ window.addEventListener('keydown', unlock, { passive: true });
326
+ window.addEventListener('touchstart', unlock, { passive: true });
327
+ }
328
+ toggleMute() {
329
+ this.isMuted = !this.isMuted;
330
+ if (this.currentMusicAudio) {
331
+ this.currentMusicAudio.volume = this.isMuted ? 0 : this.masterVolume * this.musicVolume;
332
+ }
333
+ return this.isMuted;
334
+ }
335
+ playMusic(src, options = {}) {
336
+ if (this.currentMusicTrack === src && this.currentMusicAudio && !this.currentMusicAudio.paused) {
337
+ return;
338
+ }
339
+ if (!this.isUnlocked) {
340
+ this.pendingMusic = { src, options };
341
+ }
342
+ const fadein = options.fadein ?? 0;
343
+ const loop = options.loop ?? true;
344
+ const targetVolume = this.isMuted ? 0 : (options.volume ?? 1) * this.masterVolume * this.musicVolume;
345
+
346
+ if (this.currentMusicAudio) {
347
+ this.stopMusic({ fadeout: fadein > 0 ? fadein : 0.3 });
348
+ }
349
+
350
+ const audio = new Audio(src);
351
+ audio.loop = loop;
352
+ this.currentMusicAudio = audio;
353
+ this.currentMusicTrack = src;
354
+
355
+ if (fadein > 0) {
356
+ audio.volume = 0;
357
+ audio.play().catch(() => {});
358
+ this.fadeVolume(audio, 0, targetVolume, fadein * 1000);
359
+ } else {
360
+ audio.volume = targetVolume;
361
+ audio.play().catch(() => {});
362
+ }
363
+ }
364
+ stopMusic(options = {}) {
365
+ const fadeout = options.fadeout ?? 0;
366
+ const audio = this.currentMusicAudio;
367
+ if (!audio) return;
368
+ this.currentMusicAudio = null;
369
+ this.currentMusicTrack = null;
370
+ this.pendingMusic = null;
371
+
372
+ if (fadeout > 0) {
373
+ this.fadeVolume(audio, audio.volume, 0, fadeout * 1000, () => {
374
+ audio.pause();
375
+ audio.src = '';
376
+ });
377
+ } else {
378
+ audio.pause();
379
+ audio.src = '';
380
+ }
381
+ }
382
+ playSound(src, volume = 1) {
383
+ if (this.isMuted) return;
384
+ const audio = new Audio(src);
385
+ audio.volume = volume * this.masterVolume * this.soundVolume;
386
+ audio.play().catch(() => {});
387
+ this.soundPool.push(audio);
388
+ audio.addEventListener('ended', () => {
389
+ const idx = this.soundPool.indexOf(audio);
390
+ if (idx !== -1) this.soundPool.splice(idx, 1);
391
+ });
392
+ }
393
+ playVoice(src, volume = 1) {
394
+ if (this.currentVoiceAudio) {
395
+ this.currentVoiceAudio.pause();
396
+ this.currentVoiceAudio.src = '';
397
+ }
398
+ if (this.isMuted) return;
399
+ const audio = new Audio(src);
400
+ audio.volume = volume * this.masterVolume * this.voiceVolume;
401
+ audio.play().catch(() => {});
402
+ this.currentVoiceAudio = audio;
403
+ }
404
+ stopVoice() {
405
+ if (this.currentVoiceAudio) {
406
+ this.currentVoiceAudio.pause();
407
+ this.currentVoiceAudio.src = '';
408
+ this.currentVoiceAudio = null;
409
+ }
410
+ }
411
+ fadeVolume(audio, from, to, durationMs, onComplete) {
412
+ const steps = 20;
413
+ const stepTime = durationMs / steps;
414
+ const volumeStep = (to - from) / steps;
415
+ let currentStep = 0;
416
+ const interval = setInterval(() => {
417
+ currentStep++;
418
+ if (this.isMuted) {
419
+ audio.volume = 0;
420
+ } else {
421
+ audio.volume = Math.max(0, Math.min(1, from + volumeStep * currentStep));
422
+ }
423
+ if (currentStep >= steps) {
424
+ clearInterval(interval);
425
+ if (!this.isMuted) audio.volume = to;
426
+ if (onComplete) onComplete();
427
+ }
428
+ }, stepTime);
429
+ }
430
+ attachToVM(vm, assetResolver) {
431
+ return vm.onAudioEvent((event) => {
432
+ if (event.action === 'play' && event.track) {
433
+ const url = assetResolver(event.track, event.channel);
434
+ if (event.channel === 'music') {
435
+ this.playMusic(url, { fadein: event.fade, loop: event.loop });
436
+ } else if (event.channel === 'sound') {
437
+ this.playSound(url);
438
+ } else if (event.channel === 'voice') {
439
+ this.playVoice(url);
440
+ }
441
+ } else if (event.action === 'stop') {
442
+ if (event.channel === 'music') {
443
+ this.stopMusic({ fadeout: event.fade });
444
+ } else if (event.channel === 'voice') {
445
+ this.stopVoice();
446
+ }
447
+ }
448
+ });
449
+ }
450
+ }
271
451
  class DOMRenderer {
272
- constructor(vm, container) {
452
+ constructor(vm, container, audioManager) {
273
453
  this.vm = vm;
274
454
  this.container = container;
455
+ this.audioManager = audioManager;
275
456
  this.isChoicePending = false;
276
457
  this.build();
277
458
  vm.onStateChange(s => this.render(s));
@@ -295,6 +476,7 @@ export function buildProject(projectDir = '.', options = {}) {
295
476
  <button class="kawa-btn kawa-hist">History</button>
296
477
  <button class="kawa-btn kawa-save">Save</button>
297
478
  <button class="kawa-btn kawa-load">Load</button>
479
+ <button class="kawa-btn kawa-mute" title="Toggle Mute">🔊</button>
298
480
  </nav>
299
481
  </div>
300
482
  </div>
@@ -310,12 +492,20 @@ export function buildProject(projectDir = '.', options = {}) {
310
492
  this.histBtn = this.container.querySelector('.kawa-hist');
311
493
  this.saveBtn = this.container.querySelector('.kawa-save');
312
494
  this.loadBtn = this.container.querySelector('.kawa-load');
495
+ this.muteBtn = this.container.querySelector('.kawa-mute');
313
496
 
314
497
  this.boxEl.addEventListener('click', () => this.vm.next());
315
498
  this.backBtn.addEventListener('click', (e) => { e.stopPropagation(); this.vm.rollback(); });
316
499
  this.histBtn.addEventListener('click', (e) => { e.stopPropagation(); this.showHistory(); });
317
500
  this.saveBtn.addEventListener('click', (e) => { e.stopPropagation(); this.showSaveLoad('save'); });
318
501
  this.loadBtn.addEventListener('click', (e) => { e.stopPropagation(); this.showSaveLoad('load'); });
502
+ if (this.muteBtn && this.audioManager) {
503
+ this.muteBtn.addEventListener('click', (e) => {
504
+ e.stopPropagation();
505
+ const isMuted = this.audioManager.toggleMute();
506
+ this.muteBtn.textContent = isMuted ? '🔇' : '🔊';
507
+ });
508
+ }
319
509
  window.addEventListener('keydown', (e) => {
320
510
  const modal = this.rootEl.querySelector('.kawa-modal-overlay');
321
511
  if (modal) {
@@ -327,6 +517,12 @@ export function buildProject(projectDir = '.', options = {}) {
327
517
  if (e.key === 's' || e.key === 'S') this.showSaveLoad('save');
328
518
  if (e.key === 'l' || e.key === 'L') this.showSaveLoad('load');
329
519
  if (e.key === 'h' || e.key === 'H') this.showHistory();
520
+ if (e.key === 'm' || e.key === 'M') {
521
+ if (this.audioManager && this.muteBtn) {
522
+ const isMuted = this.audioManager.toggleMute();
523
+ this.muteBtn.textContent = isMuted ? '🔇' : '🔊';
524
+ }
525
+ }
330
526
  });
331
527
  }
332
528
  render(state) {
@@ -503,7 +699,12 @@ export function buildProject(projectDir = '.', options = {}) {
503
699
  }
504
700
 
505
701
  const vm = new StoryVM(story);
506
- new DOMRenderer(vm, document.getElementById('app'));
702
+ const audio = new AudioManager();
703
+ const audioResolver = (track, channel) => {
704
+ return track.includes('.') ? './assets/audio/' + track : './assets/audio/' + track + '.mp3';
705
+ };
706
+ audio.attachToVM(vm, audioResolver);
707
+ new DOMRenderer(vm, document.getElementById('app'), audio);
507
708
  vm.start();
508
709
  </script>
509
710
  </body>
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
@@ -372,6 +372,34 @@ function getInlineRuntimeScript() {
372
372
  const ok = evaluateCondition(inst.condition, this.state.variables);
373
373
  this.state.currentLabel = ok ? inst.thenLabel : (inst.elseLabel || inst.thenLabel);
374
374
  this.state.instructionPointer = 0;
375
+ } else if (inst.type === 'play_audio') {
376
+ for (const cb of this.audioListeners) {
377
+ cb({
378
+ action: 'play',
379
+ channel: inst.channel,
380
+ track: inst.track,
381
+ fade: inst.fade,
382
+ loop: inst.loop
383
+ });
384
+ }
385
+ if (inst.channel === 'music') {
386
+ this.state.audio.music = inst.track;
387
+ } else if (inst.channel === 'voice') {
388
+ this.state.audio.voice = inst.track;
389
+ }
390
+ } else if (inst.type === 'stop_audio') {
391
+ for (const cb of this.audioListeners) {
392
+ cb({
393
+ action: 'stop',
394
+ channel: inst.channel,
395
+ fade: inst.fade
396
+ });
397
+ }
398
+ if (inst.channel === 'music') {
399
+ this.state.audio.music = null;
400
+ } else if (inst.channel === 'voice') {
401
+ this.state.audio.voice = null;
402
+ }
375
403
  } else if (inst.type === 'return') {
376
404
  this.state.isFinished = true;
377
405
  }
@@ -386,10 +414,164 @@ function getInlineRuntimeScript() {
386
414
  }
387
415
  notify() { for (const l of this.listeners) l(this.state); }
388
416
  }
417
+ class AudioManager {
418
+ constructor() {
419
+ this.masterVolume = 1.0;
420
+ this.musicVolume = 0.8;
421
+ this.soundVolume = 1.0;
422
+ this.voiceVolume = 1.0;
423
+ this.isMuted = false;
424
+ this.currentMusicAudio = null;
425
+ this.currentMusicTrack = null;
426
+ this.currentVoiceAudio = null;
427
+ this.soundPool = [];
428
+ this.isUnlocked = false;
429
+ this.pendingMusic = null;
430
+
431
+ // Auto-unlock audio context on first user interaction
432
+ const unlock = () => {
433
+ this.isUnlocked = true;
434
+ if (this.pendingMusic) {
435
+ const { src, options } = this.pendingMusic;
436
+ this.pendingMusic = null;
437
+ this.playMusic(src, options);
438
+ }
439
+ window.removeEventListener('click', unlock);
440
+ window.removeEventListener('keydown', unlock);
441
+ window.removeEventListener('touchstart', unlock);
442
+ };
443
+ window.addEventListener('click', unlock, { passive: true });
444
+ window.addEventListener('keydown', unlock, { passive: true });
445
+ window.addEventListener('touchstart', unlock, { passive: true });
446
+ }
447
+ toggleMute() {
448
+ this.isMuted = !this.isMuted;
449
+ if (this.currentMusicAudio) {
450
+ this.currentMusicAudio.volume = this.isMuted ? 0 : this.masterVolume * this.musicVolume;
451
+ }
452
+ return this.isMuted;
453
+ }
454
+ playMusic(src, options = {}) {
455
+ if (this.currentMusicTrack === src && this.currentMusicAudio && !this.currentMusicAudio.paused) {
456
+ return;
457
+ }
458
+ if (!this.isUnlocked) {
459
+ this.pendingMusic = { src, options };
460
+ }
461
+ const fadein = options.fadein ?? 0;
462
+ const loop = options.loop ?? true;
463
+ const targetVolume = this.isMuted ? 0 : (options.volume ?? 1) * this.masterVolume * this.musicVolume;
464
+
465
+ if (this.currentMusicAudio) {
466
+ this.stopMusic({ fadeout: fadein > 0 ? fadein : 0.3 });
467
+ }
468
+
469
+ const audio = new Audio(src);
470
+ audio.loop = loop;
471
+ this.currentMusicAudio = audio;
472
+ this.currentMusicTrack = src;
473
+
474
+ if (fadein > 0) {
475
+ audio.volume = 0;
476
+ audio.play().catch(() => {});
477
+ this.fadeVolume(audio, 0, targetVolume, fadein * 1000);
478
+ } else {
479
+ audio.volume = targetVolume;
480
+ audio.play().catch(() => {});
481
+ }
482
+ }
483
+ stopMusic(options = {}) {
484
+ const fadeout = options.fadeout ?? 0;
485
+ const audio = this.currentMusicAudio;
486
+ if (!audio) return;
487
+ this.currentMusicAudio = null;
488
+ this.currentMusicTrack = null;
489
+ this.pendingMusic = null;
490
+
491
+ if (fadeout > 0) {
492
+ this.fadeVolume(audio, audio.volume, 0, fadeout * 1000, () => {
493
+ audio.pause();
494
+ audio.src = '';
495
+ });
496
+ } else {
497
+ audio.pause();
498
+ audio.src = '';
499
+ }
500
+ }
501
+ playSound(src, volume = 1) {
502
+ if (this.isMuted) return;
503
+ const audio = new Audio(src);
504
+ audio.volume = volume * this.masterVolume * this.soundVolume;
505
+ audio.play().catch(() => {});
506
+ this.soundPool.push(audio);
507
+ audio.addEventListener('ended', () => {
508
+ const idx = this.soundPool.indexOf(audio);
509
+ if (idx !== -1) this.soundPool.splice(idx, 1);
510
+ });
511
+ }
512
+ playVoice(src, volume = 1) {
513
+ if (this.currentVoiceAudio) {
514
+ this.currentVoiceAudio.pause();
515
+ this.currentVoiceAudio.src = '';
516
+ }
517
+ if (this.isMuted) return;
518
+ const audio = new Audio(src);
519
+ audio.volume = volume * this.masterVolume * this.voiceVolume;
520
+ audio.play().catch(() => {});
521
+ this.currentVoiceAudio = audio;
522
+ }
523
+ stopVoice() {
524
+ if (this.currentVoiceAudio) {
525
+ this.currentVoiceAudio.pause();
526
+ this.currentVoiceAudio.src = '';
527
+ this.currentVoiceAudio = null;
528
+ }
529
+ }
530
+ fadeVolume(audio, from, to, durationMs, onComplete) {
531
+ const steps = 20;
532
+ const stepTime = durationMs / steps;
533
+ const volumeStep = (to - from) / steps;
534
+ let currentStep = 0;
535
+ const interval = setInterval(() => {
536
+ currentStep++;
537
+ if (this.isMuted) {
538
+ audio.volume = 0;
539
+ } else {
540
+ audio.volume = Math.max(0, Math.min(1, from + volumeStep * currentStep));
541
+ }
542
+ if (currentStep >= steps) {
543
+ clearInterval(interval);
544
+ if (!this.isMuted) audio.volume = to;
545
+ if (onComplete) onComplete();
546
+ }
547
+ }, stepTime);
548
+ }
549
+ attachToVM(vm, assetResolver) {
550
+ return vm.onAudioEvent((event) => {
551
+ if (event.action === 'play' && event.track) {
552
+ const url = assetResolver(event.track, event.channel);
553
+ if (event.channel === 'music') {
554
+ this.playMusic(url, { fadein: event.fade, loop: event.loop });
555
+ } else if (event.channel === 'sound') {
556
+ this.playSound(url);
557
+ } else if (event.channel === 'voice') {
558
+ this.playVoice(url);
559
+ }
560
+ } else if (event.action === 'stop') {
561
+ if (event.channel === 'music') {
562
+ this.stopMusic({ fadeout: event.fade });
563
+ } else if (event.channel === 'voice') {
564
+ this.stopVoice();
565
+ }
566
+ }
567
+ });
568
+ }
569
+ }
389
570
  class DOMRenderer {
390
- constructor(vm, container) {
571
+ constructor(vm, container, audioManager) {
391
572
  this.vm = vm;
392
573
  this.container = container;
574
+ this.audioManager = audioManager;
393
575
  this.isChoicePending = false;
394
576
  this.build();
395
577
  vm.onStateChange(s => this.render(s));
@@ -413,6 +595,7 @@ function getInlineRuntimeScript() {
413
595
  <button class="kawa-btn kawa-hist">History</button>
414
596
  <button class="kawa-btn kawa-save">Save</button>
415
597
  <button class="kawa-btn kawa-load">Load</button>
598
+ <button class="kawa-btn kawa-mute" title="Toggle Mute">🔊</button>
416
599
  </nav>
417
600
  </div>
418
601
  </div>
@@ -428,12 +611,20 @@ function getInlineRuntimeScript() {
428
611
  this.histBtn = this.container.querySelector('.kawa-hist');
429
612
  this.saveBtn = this.container.querySelector('.kawa-save');
430
613
  this.loadBtn = this.container.querySelector('.kawa-load');
614
+ this.muteBtn = this.container.querySelector('.kawa-mute');
431
615
 
432
616
  this.boxEl.addEventListener('click', () => this.vm.next());
433
617
  this.backBtn.addEventListener('click', (e) => { e.stopPropagation(); this.vm.rollback(); });
434
618
  this.histBtn.addEventListener('click', (e) => { e.stopPropagation(); this.showHistory(); });
435
619
  this.saveBtn.addEventListener('click', (e) => { e.stopPropagation(); this.showSaveLoad('save'); });
436
620
  this.loadBtn.addEventListener('click', (e) => { e.stopPropagation(); this.showSaveLoad('load'); });
621
+ if (this.muteBtn && this.audioManager) {
622
+ this.muteBtn.addEventListener('click', (e) => {
623
+ e.stopPropagation();
624
+ const isMuted = this.audioManager.toggleMute();
625
+ this.muteBtn.textContent = isMuted ? '🔇' : '🔊';
626
+ });
627
+ }
437
628
  window.addEventListener('keydown', (e) => {
438
629
  const modal = this.rootEl.querySelector('.kawa-modal-overlay');
439
630
  if (modal) {
@@ -445,6 +636,12 @@ function getInlineRuntimeScript() {
445
636
  if (e.key === 's' || e.key === 'S') this.showSaveLoad('save');
446
637
  if (e.key === 'l' || e.key === 'L') this.showSaveLoad('load');
447
638
  if (e.key === 'h' || e.key === 'H') this.showHistory();
639
+ if (e.key === 'm' || e.key === 'M') {
640
+ if (this.audioManager && this.muteBtn) {
641
+ const isMuted = this.audioManager.toggleMute();
642
+ this.muteBtn.textContent = isMuted ? '🔇' : '🔊';
643
+ }
644
+ }
448
645
  });
449
646
  }
450
647
  render(state) {
@@ -621,9 +818,14 @@ function getInlineRuntimeScript() {
621
818
  }
622
819
  function mountKawaApp(story, container) {
623
820
  const vm = new StoryVM(story);
624
- const renderer = new DOMRenderer(vm, container);
821
+ const audio = new AudioManager();
822
+ const audioResolver = (track, channel) => {
823
+ return track.includes('.') ? '/assets/audio/' + track : '/assets/audio/' + track + '.mp3';
824
+ };
825
+ audio.attachToVM(vm, audioResolver);
826
+ const renderer = new DOMRenderer(vm, container, audio);
625
827
  vm.start();
626
- return { vm, renderer };
828
+ return { vm, renderer, audio };
627
829
  }
628
830
  `;
629
831
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kawaijs",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "description": "Web-native visual novel engine and toolchain inspired by Ren'Py",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -31,12 +31,12 @@
31
31
  "typecheck": "tsc --noEmit"
32
32
  },
33
33
  "dependencies": {
34
- "@kawaijs/ast": "^0.1.5",
35
- "@kawaijs/parser": "^0.1.5",
36
- "@kawaijs/runtime": "^0.1.5",
37
- "@kawaijs/renderer-dom": "^0.1.5",
38
- "@kawaijs/audio": "^0.1.5",
39
- "@kawaijs/vite-plugin": "^0.1.5"
34
+ "@kawaijs/ast": "^0.1.6",
35
+ "@kawaijs/parser": "^0.1.6",
36
+ "@kawaijs/runtime": "^0.1.6",
37
+ "@kawaijs/renderer-dom": "^0.1.6",
38
+ "@kawaijs/audio": "^0.1.6",
39
+ "@kawaijs/vite-plugin": "^0.1.6"
40
40
  },
41
41
  "keywords": [
42
42
  "kawaijs",